On 16 December 2017 at 16:02, Stephane Ducasse <stepharo.s...@gmail.com>
wrote:

> Hi ben
>
> We should think about it. Indeed.
> Now about the names. I'm wondering if they cover well enough the situation.
> In fact I would like to have imageDirectory (it exists but not in
> FileSystem) and workingDirectory (I would prefer startupDirectory or
> something like that).
>

startupDirectory sounds like its where the startup scripts are kept,
and common across many Images.

For me workingDirectory is totally unclear.
>

Its a fairly well defined concept.  Its starts as the shell directory where
you
type the command to run a program.
https://en.wikipedia.org/wiki/Working_directory

We should align with the operating system since file access is ultimately
through
system calls like fopen() where relative paths are ultimately affected by
what the operating
system considers to be the working directory (or do we *always* fully
resolve paths
in-Image and only pass absolute paths to fopen() ?)

Here is a demonstration of working directory on Unix ...


$ mkdir temp && cd temp

$ cat << 'EOF' > testcwd.c
#include <unistd.h>
#include <stdio.h>
char buf[1000];
int main()
{  printf("MYCWD=%s\n", getcwd(buf,1000));
}
EOF

$ gcc testcwd.c -o testcwd

$ ./testcwd
MYCWD=/home/ben/dev/temp

$ cd ..

$ temp/testcwd
MYCWD=/home/ben/dev


i.e. its the directory where the command was typed in to run the program.

Since we build on Windows using Cygwin/Ming, its basically the same
semantic for Windows.
and even Win32 has similar function GetCurrentDirectory()....
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364934(v=vs.85).aspx


Now I guess confusion may arise when in Pharo you want to "change the
working directory".
if we only modify some in-Image instance variable?  Then a difference of
opinion might arise
between Pharo and operating system calls as to what is the
working-directory" when
relative paths are used.

Perhaps we should only refer to the operating system's current working
directory.
(Sorry I'm not in a position to dig into that right now)


cheers -ben


>
> Now this change is super important for making Pharo
> a good platform for script execution. So let me make it even nicer.
>
> Stef
>
>
> On Fri, Dec 15, 2017 at 10:14 PM, Ben Coman <b...@openinworld.com> wrote:
> >
> >
> > On 16 December 2017 at 04:34, Cyril Ferlicot D. <
> cyril.ferli...@gmail.com>
> > wrote:
> >>
> >> Le 15/12/2017 à 21:24, Hilaire a écrit :
> >> > In P3:
> >> >
> >> > FileSystem disk workingDirectory
> >> > =>File @ /home/hilaire/Travaux/Developpement/DrGeoII/Dev-
> pharo3.0/shared
> >> >
> >> > In P7:
> >> >
> >> > FileSystem disk workingDirectory
> >> > =>File @ /home/hilaire
> >> >
> >> > Is it a bug?
> >> >
> >>
> >> Hi!
> >>
> >> In Pharo 3
> >>
> >> workingDirectory = imageDirectory.
> >>
> >> In Pharo 7
> >>
> >> workingDirectory = directory from where Pharo was launched.
> >
> >
> > just double-checking...
> > with equivalent shell commands...
> > $  DIR1 = `pwd`
> > $  $DIR2/pharo  $DIR3/Pharo.image
> >
> > Pharo 3 ==> workingDirectory = $DIR3
> > Pharo 7 ==> workingDirectory = $DIR1
> > ?
> >
> > I wonder for such a semantic API change it might be good to
> > introduce #workDirectory and deprecate #workingDirectory
> > so the need for user-devs to change their code is more explicit.
> > It might make easier to have an auto-conversion rule  #workingDirectory
> ==>
> > #imageDirectory,
> > and make it harder to shoot yourself in the foot producing cross-platform
> > libraries.
> >
> > cheers -ben
> >
> >
> >>
> >>
> >> Maybe you launched Pharo from the terminal with this command like this
> >> one?
> >>
> >> Travaux/Developpement/DrGeoII/Dev-pharo3.0/shared/pharo-ui
> >> Travaux/Developpement/DrGeoII/Dev-pharo3.0/shared Pharo.image
> >>
> >> If you wish to use the old behaviour, you can replace `FileSystem disk
> >> workingDirectory` by `FileLocator imageDirectory asFileReference`.
> >>
> >> This change was done because, not getting the real working directory
> >> make it really hard to script things in Pharo.
> >>
> >> --
> >> Cyril Ferlicot
> >> https://ferlicot.fr
> >>
> >> http://www.synectique.eu
> >> 2 rue Jacques Prévert 01,
> >> 59650 Villeneuve d'ascq France
> >>
> >
>
>

Reply via email to