[Pharo-project] [ VM ]Smalltalk getSystemAttribute:

Igor Stasenko siguctua at gmail.com
Tue Jan 3 10:10:18 EST 2012


On 3 January 2012 14:06, Esteban Lorenzano <estebanlm at gmail.com> wrote:
> Hi Ben,
>
> yes... to answer full file name is easy... my question is because the VM doesn't do that, and it has an explicit transformation to avoid answer that... then I wonder if that would be on purpose, and why.
> One thing that comes to my mind is that, in macs, a program is a directory, for example, vm would be: /path/to/Cog.app/, then the real executable is placed inside this directory following a convention: MyApp.app/Contents/MacOS/MyApp
>
> So, question is: from mac point of view... which one is the "full path"? /path/to/Cog.app or /path/to/Cog.app/Contents/MacOS/Cog?
>

i vote for the full path to executable , i.e.
/path/to/Cog.app/Contents/MacOS/Cog

because you can always strip down unwanted information (just do regexp
like '.app/Contents'),
while it is much harder to reproduce original information if your
source obscures it in that way.


> cheers,
> Esteban
>
> El 03/01/2012, a las 9:54a.m., Ben Coman escribió:
>
>> Esteban Lorenzano wrote:
>>> El 02/01/2012, a las 4:39p.m., David T. Lewis escribió:
>>>
>>>
>>>>> Real problem then is:
>>>>>
>>>>> we don't have a way  to get the executable name
>>>>>
>>>>> or
>>>>>
>>>>> getSystemAttribute: comment is wrong :)
>>>>>
>>>>>
>>>> On a unix VM, it answers the full path to the executable, which is
>>>> in agreement with the comment. For example:
>>>>
>>>> Smalltalk getSystemAttribute: 0 ==> '/usr/local/lib/squeak/4.7.18-2505/squeakvm'
>>>>
>>>> Maybe is is more complicated for Mac, but wasn't there some discussion
>>>> about it on vm-dev a while back?
>>>>
>>>
>>> I don't remember :)
>>> so, how can we solve this? of course, it is not a problem to make getSystemAttribute: 0 answer argv[0], but that's not the expected behavior... we can be making a mistake, because it should answer vm path, no vm fullName.
>>> I can add a 10XX number to answer vm full name, but that will lead to consistency problems inside the image...
>>> I really don't know how to proceed :(
>>>
>>> Esteban
>>>
>>>
>>>
>> Esteban,
>> I am not sure of the semantics within Smalltalk, but within both Windows & Linux "full path" includes the filename.  Examples...
>>
>> Linux `which` command [1]
>>   "...printing the full path when used from a script"
>>   > echo `which q2`
>>   /home/carlo/bin/q2
>>
>> Windows Path.GetFullPath method [2]
>>   "Returns the absolute path for the specified path string."
>>   // GetFullPath('mydir') returns 'C:\temp\Demo\mydir'
>>   // GetFullPath('myfile.ext') returns 'C:\temp\Demo\myfile.ext'
>>
>> From browsing around it does seem harder on OSX to determine the path to the current executable [3,4,5,6] but I'm not qualified to comment.
>>
>> cheers, Ben
>>
>> [1] http://linux.die.net/man/1/which
>> [2] http://msdn.microsoft.com/en-us/library/system.io.path.getfullpath.aspx
>> [3] http://stackoverflow.com/questions/799679/programatically-retrieving-the-absolute-path-of-an-os-x-command-line-app
>> [4] http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe
>> [5] http://stackoverflow.com/questions/933850/how-to-find-the-location-of-the-executable-in-c
>> [6] http://stackoverflow.com/questions/3200651/application-path-location-in-ms-windows
>>
>>
>>
>
>



-- 
Best regards,
Igor Stasenko.




More information about the Pharo-dev mailing list