コード例 #1
0
ファイル: main.c プロジェクト: specious/osxutils
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;
}
コード例 #2
0
ファイル: main.c プロジェクト: Airr/osxutils
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;
}