/[svn]/libgig/trunk/src/gigextract.cpp
ViewVC logotype

Diff of /libgig/trunk/src/gigextract.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1063 by schoenebeck, Sat Mar 3 21:45:25 2007 UTC revision 1869 by persson, Sun Mar 22 11:13:25 2009 UTC
# Line 46  Line 46 
46  #include <stdlib.h>  #include <stdlib.h>
47  #include <sys/types.h>  #include <sys/types.h>
48  #include <sys/stat.h>  #include <sys/stat.h>
 #include <dirent.h>  
49  #include <errno.h>  #include <errno.h>
50    
51  #include "gig.h"  #include "gig.h"
52    
53    #ifdef _MSC_VER
54    #define S_ISDIR(x) (S_IFDIR & (x))
55    #define S_IWUSR S_IWRITE
56    #define S_IXUSR S_IEXEC
57    #endif
58    
59  #if POSIX  #if POSIX
60  # include <dlfcn.h>  # include <dlfcn.h>
61  #endif  #endif
# Line 128  int main(int argc, char *argv[]) { Line 133  int main(int argc, char *argv[]) {
133          return EXIT_FAILURE;          return EXIT_FAILURE;
134      }      }
135      fclose(hFile);      fclose(hFile);
136      DIR* dir = opendir(argv[2]);      struct stat buf;
137      if (!dir) {      if (stat(argv[2], &buf) == -1) {
138          cout << "Unable to open DESTDIR: ";          cout << "Unable to open DESTDIR: ";
139          switch (errno) {          switch (errno) {
140              case EACCES:  cout << "Permission denied." << endl;              case EACCES:  cout << "Permission denied." << endl;
141                            break;                            break;
             case EMFILE:  cout << "Too many file descriptors in use by process." << endl;  
                           break;  
             case ENFILE:  cout << "Too many files are currently open in the system." << endl;  
                           break;  
142              case ENOENT:  cout << "Directory does not exist, or name is an empty string." << endl;              case ENOENT:  cout << "Directory does not exist, or name is an empty string." << endl;
143                            break;                            break;
144              case ENOMEM:  cout << "Insufficient memory to complete the operation." << endl;              case ENOMEM:  cout << "Insufficient memory to complete the operation." << endl;
# Line 147  int main(int argc, char *argv[]) { Line 148  int main(int argc, char *argv[]) {
148              default:      cout << "Unknown error" << endl;              default:      cout << "Unknown error" << endl;
149          }          }
150          return EXIT_FAILURE;          return EXIT_FAILURE;
151        } else if (!S_ISDIR(buf.st_mode)) {
152            cout << "Unable to open DESTDIR: Is not a directory." << endl;
153            return EXIT_FAILURE;
154        } else if (!(S_IWUSR & buf.st_mode) || !(S_IXUSR & buf.st_mode)) {
155            cout << "Unable to open DESTDIR: Permission denied." << endl;
156            return EXIT_FAILURE;
157      }      }
     if (dir) closedir(dir);  
158      try {      try {
159          RIFF::File* riff = new RIFF::File(argv[1]);          RIFF::File* riff = new RIFF::File(argv[1]);
160          gig::File*  gig  = new gig::File(riff);          gig::File*  gig  = new gig::File(riff);
# Line 182  void ExtractSamples(gig::File* gig, char Line 188  void ExtractSamples(gig::File* gig, char
188      int samples     = 0;      int samples     = 0;
189      gig::buffer_t decompressionBuffer;      gig::buffer_t decompressionBuffer;
190      decompressionBuffer.Size = 0;      decompressionBuffer.Size = 0;
     unsigned long decompressionBufferSize = 0;  
191      cout << "Seeking for available samples..." << flush;      cout << "Seeking for available samples..." << flush;
192      gig::Sample* pSample = gig->GetFirstSample();      gig::Sample* pSample = gig->GetFirstSample();
193      cout << "OK" << endl << flush;      cout << "OK" << endl << flush;
# Line 384  void closeAFlib() { Line 389  void closeAFlib() {
389  #endif // !HAVE_SNDFILE  #endif // !HAVE_SNDFILE
390    
391  string Revision() {  string Revision() {
392      string s = "$Revision: 1.10 $";      string s = "$Revision: 1.11 $";
393      return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword      return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword
394  }  }
395    

Legend:
Removed from v.1063  
changed lines
  Added in v.1869

  ViewVC Help
Powered by ViewVC