Glynn Clements wrote:
Windows has native versions of mkdir and echo. The native mkdir won't
like being passed Unix filenames, as it treats / as indicating
options:
C:\>mkdir /foo
The syntax of the command is incorrect.
Fortunately, this bug shoud be quite simple to fix: use the mkdir()
function rather than using system() to run the mkdir command. Could
someone try the attached patch?
Unfortunately, GRASS has a lot of this sort of stuff - using system()
to run commands rather than using functions; probably because the
author knew about the command but didn't know about the function. I've
even seen system("rm ...") used to delete files.
Finding (and fixing) all of the Unix-specific system() calls will be a
large part of getting a native Windows version of GRASS to work.
here are some more:
lib/vask/V_init.c: system("clear"); /* this is a kludge - xterm has problems
lib/fonts/for_grass/try.c: system ("cd fonts; ls *.hmp | sed 's/.hmp//' | fmt");
lib/fonts/for_grass/fontmap.c: system ("cd ../fonts; ls *.hmp | sed 's/.hmp//' | fmt");
raster/r.out.mpeg/main.c: sprintf(cmd, "cd %s; \\ls %s >> %s 2> /dev/null",
visualization/xganim/main.c: sprintf(cmd, "cd %s; \\ls %s >> %s 2> /dev/null", path, wildarg, tfile);
general/g.mapsets/main_cmd.c: sprintf (command, "ls -C %s/%s 1>&2", G_gisdbase(), G_location());
general/g.mapsets/main_cmd.c: sprintf (command, "ls -C %s/%s 1>&2", G_gisdbase(), G_location());
imagery/i.ortho.photo/photo.target/ask_target.c: sprintf (buf, "ls -C %s\n", G_gisdbase());
imagery/i.ortho.photo/photo.target/ask_target.c: sprintf (buf, "ls %s/%s", G_gisdbase(), G_location());
lib/init/set_data.c: sprintf(buf, "ls -C '%s'", gisdbase) ;
lib/init/set_data.c: sprintf (buf, "ls '%s'", location);
Hamish
------- from previous post ----------
grass63$ grep -rI mkdir * | grep sprintf
gem/reg_entries.c: sprintf ( str, "mkdir --verbose %s/etc/dm/gem-entries ; cp -vf ../entries-gisman %s/etc/dm/gem-entries/%s ; \
gem/reg_entries.c: sprintf ( str, "mkdir %s/etc/dm/gem-entries &> %s ; cp -f ../entries-gisman %s/etc/dm/gem-entries/%s &> %s ; \
gem/reg_entries.c: sprintf ( str, "mkdir --verbose -p %s/etc/gm/Xtns ; cp -fv ../entries-gisman2 %s/etc/gm/Xtns/%s.gem ; ",
gem/reg_entries.c: sprintf ( str, "mkdir -p %s/etc/gm/Xtns ; cp -f ../entries-gisman2 %s/etc/gm/Xtns/%s.gem ; ",
lib/init/mke_loc.c: sprintf (buf, "mkdir '%s'/'%s'", gisdbase, location_name);
lib/init/mke_loc.c: sprintf (buf, "mkdir '%s'/'%s'/'%s'", gisdbase, location_name, mapset);
lib/init/mke_mapset.c: sprintf(buffer,"mkdir '%s'/'%s'",location, mapset) ;
$ grep -rI mkdir * | grep system
raster/r.le/r.le.setup/main.c: G_system("mkdir r.le.para");
raster/r.le/r.le.patch/main.c: G_system("mkdir r.le.out");
raster/r.le/r.le.pixel/main.c: G_system("mkdir r.le.out");