Re: Any better way to determine if file is executable?
Re: Any better way to determine if file is executable?
- Subject: Re: Any better way to determine if file is executable?
- From: Charles Steinman <email@hidden>
- Date: Tue, 30 Oct 2007 14:33:25 -0700 (PDT)
Since Objective-C is a true superset of C, any valid C code is also valid Objective-C. So the code you found will work exactly the same.
Cheers,
Chuck
----- Original Message ----
From: Devon Ferns <email@hidden>
To: Douglas Davidson <email@hidden>
Cc: Cocoa-Dev Mail <email@hidden>
Sent: Tuesday, October 30, 2007 12:32:32 PM
Subject: Re: Any better way to determine if file is executable?
Thanks Doug and Shawn. I had considered reading the file but was
hoping for some framework function might already do something like
what I need.
For this assignment I suppose it's "easy" enough to use file because
it's not really a big deal and I have many many other things to do at
the moment.
For the assignment it doesn't matter the language or how I accomplish
the end goal so for now, I think I might stick with /usr/bin/file.
Although it doesn't seem like too much work to read 4 bytes from a
file, I'll probably look at it anyways. It doesn't matter to me the
endianness at the moment because I'm running this on my MBP and I just
have to demonstrate that it works.
Now that I know what to look for(FAT_MAGIC, FAT_CIGAM, etc.) I came
across this example from Apple. I'll post if for the sake of any
people in the future searching the list archives. Really, it's almost
exactly what I was looking to do.
http://developer.apple.com/samplecode/CheckExecutableArchitecture/listing1.html
Although, it's C, not Objective-C, I'm sure it's fairly easy to do
something like that in Objective-C.
Devon.
On 30-Oct-07, at 3:10 PM, Douglas Davidson wrote:
>
> On Oct 30, 2007, at 5:04 AM, Devon Ferns wrote:
>
>> I've searched the list archives and no one seems to have a good way
>> to do this.
>> As discussed before, NSFileManager's isExecutableAtPath: returns
>> YES for directories and any other file with the execute bit set.
>> This isn't what I want so I've had to fudge together a solution.
>>
>> Basically, I'm using NSTask and executing /usr/bin/file on all
>> suspected executable files and parsing the output for Mach-O.
>> BTW, can anyone tell me what the program "file" will output for CFM
>> binaries? I don't know of any that I can test it on to see.
>
> /usr/bin/file may not be the best match for your needs. It's
> designed to be highly flexible, to handle files of many different
> types, and to produce detailed human-readable output; it's not
> really intended to be highly efficient or to produce output that can
> be readily parsed. As it happens, executable files generally can be
> identified (for sniffing purposes) simply by reading their first
> four bytes. For Mach-o files, the possibilities are FAT_MAGIC,
> FAT_CIGAM, MH_MAGIC, MH_CIGAM, MH_MAGIC_64, and MH_CIGAM_64. Of
> course, this doesn't rule out the possibility of encountering a file
> that starts with one of these bytes but isn't actually formatted as
> a Mach-o executable, but then neither does using /usr/bin/file.
>
> You might want to think about what you consider to be an
> executable. Does an executable shell script count? How about a
> Java jar-file? Do you care about executables from other platforms?
> (By the way, file reports PowerPC PEF/CFM executables as "header for
> PowerPC PEF executable", and their first four bytes are 'Joy!', but
> be sure to take endianness into account.)
>
> Douglas Davidson
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden