int main (int argc, const char * argv[]) { int rc; int optch; static char optstring[] = "vhpc"; while ( (optch = getopt(argc, (char * const *)argv, optstring)) != -1) { switch(optch) { case 'v': PrintVersion(); return EX_OK; break; case 'h': PrintHelp(); return EX_OK; break; case 'p': printFileName = true; break; #if !__LP64__ case 'c': os9comment = true; break; #endif default: // '?' rc = 1; PrintHelp(); return EX_USAGE; } } //all remaining arguments should be files for (; optind < argc; ++optind) { if (os9comment) PrintFileComment((char *)argv[optind]); else PrintOSXComment((char *)argv[optind]); } return EX_OK; }
int main (int argc, const char * argv[]) { OSErr err = noErr; int rc; int optch; char *path; FSRef fileRef; int type; static char optstring[] = "vhxAcmatrRsSdDTCklLoOe"; while ( (optch = getopt(argc, (char * const *)argv, optstring)) != -1) { switch(optch) { case 'v': PrintVersion(); return 0; break; case 'h': PrintHelp(); return 0; break; case 'x': type = kSuffixHidden; break; case 'A': type = kAppForFile; break; case 'c': type = kDateCreated; break; case 'm': type = kDateModified; break; case 'a': type = kDateAccessed; break; case 't': type = kDateAttrMod; break; case 'r': type = kLogicalResourceForkSize; break; case 'R': type = kPhysicalResourceForkSize; break; case 's': type = kLogicalTotalForkSize; break; case 'S': type = kPhysicalTotalForkSize; break; case 'd': type = kLogicalDataForkSize; break; case 'D': type = kPhysicalDataForkSize; break; case 'T': type = kFileTypeCode; break; case 'C': type = kCreatorTypeCode; break; case 'k': type = kFileKind; break; case 'l': type = kLabelNumeric; break; case 'L': type = kLabelName; break; case 'o': type = kMacOSXComment; break; #if !__LP64__ case 'O': type = kMacOS9Comment; break; #endif case 'e': type = kAliasOriginal; break; default: // '?' rc = 1; PrintUsage(); return 0; } } //path to file passed as argument path = (char *)argv[optind]; if (path == NULL) { PrintHelp(); exit(0); } if (access(path, R_OK|F_OK) == -1) { perror(path); exit(1); } // Get file ref to the file or folder pointed to by the path err = FSPathMakeRef((unsigned char *)path, &fileRef, NULL); if (err != noErr) { fprintf(stderr, "FSPathMakeRef(): Error %d returned when getting file reference for %s\n", err, path); exit(1); } switch(type) { case kSuffixHidden: err = PrintIsExtensionHidden(&fileRef); break; case kAppForFile: err = PrintAppWhichOpensFile(&fileRef); break; case kDateCreated: err = PrintDateCreated(&fileRef); break; case kDateModified: err = PrintDateContentModified(&fileRef); break; case kDateAccessed: err = PrintDateLastAccessed(&fileRef); break; case kDateAttrMod: err = PrintDateAttributeModified(&fileRef); break; case kLogicalResourceForkSize: err = PrintResourceForkLogicalSize(&fileRef); break; case kPhysicalResourceForkSize: err = PrintResourceForkPhysicalSize(&fileRef); break; case kLogicalTotalForkSize: err = PrintBothForksLogicalSize(&fileRef); break; case kPhysicalTotalForkSize: err = PrintBothForksPhysicalSize(&fileRef); break; case kLogicalDataForkSize: err = PrintDataForkLogicalSize(&fileRef); break; case kPhysicalDataForkSize: err = PrintDataForkPhysicalSize(&fileRef); break; case kFileTypeCode: err = PrintFileType(&fileRef); break; case kCreatorTypeCode: err = PrintCreatorCode(&fileRef); break; case kFileKind: err = PrintKind(&fileRef); break; case kLabelNumeric: err = PrintLabelNumber(&fileRef); break; case kLabelName: err = PrintLabelName(&fileRef); break; case kMacOSXComment: err = PrintOSXComment(&fileRef); break; #if !__LP64__ case kMacOS9Comment: err = PrintOS9Comment(&fileRef); break; #endif case kAliasOriginal: err = PrintAliasSource(&fileRef); break; } exit(err); return err; }