On Thu, Aug 17, 2006 at 10:23:35AM -0400, Bill Hoffman wrote: >At 11:40 PM 8/16/2006, Christopher Faylor wrote: >>I don't understand why isn't this just using the UNIX-ish settings for >>Cygwin. The settings should, at the very least, be the same as the >>UNIX-sh case. > >Because there was a bug where sh_chars_sh was being directly referenced if >HAVE_DOS_PATHS was on. I have a new patch.
Yes, I got that. I didn't like the duplication of blocks of code, especially since it changed one of the tables from what is currently being used for Cygwin. >diff -p make381orig/make-3.81/config.h.in make-3.81/config.h.in >*** make381orig/make-3.81/config.h.in Sat Apr 1 01:40:00 2006 >--- make-3.81/config.h.in Wed Aug 16 16:31:10 2006 >*************** >*** 75,80 **** >--- 75,84 ---- > > /* Use platform specific coding */ > #undef HAVE_DOS_PATHS >+ #ifdef __CYGWIN__ >+ #define HAVE_DOS_PATHS 1 >+ #endif >+ > > /* Define to 1 if you have the `dup2' function. */ > #undef HAVE_DUP2 > >diff -p make381orig/make-3.81/job.c make-3.81/job.c >*** make381orig/make-3.81/job.c Sun Mar 19 22:03:04 2006 >--- make-3.81/job.c Thu Aug 17 10:06:24 2006 >*************** construct_command_argv_internal (char *l >*** 2521,2527 **** > #endif > if (p[1] != '\\' && p[1] != '\'' > && !isspace ((unsigned char)p[1]) >! && strchr (sh_chars_sh, p[1]) == 0) > /* back up one notch, to copy the backslash */ > --p; > #endif /* HAVE_DOS_PATHS */ >--- 2521,2527 ---- > #endif > if (p[1] != '\\' && p[1] != '\'' > && !isspace ((unsigned char)p[1]) >! && strchr (sh_chars, p[1]) == 0) > /* back up one notch, to copy the backslash */ > --p; I don't think this is right. The comment above this line refers to operations on "Unixy shells". I think that just adding something like: #ifdef HAVE_DOS_PATHS static const char *sh_chars_sh = sh_chars; #endif in the "#else /* must be UNIX-ish */" clause would probably handle this. > #endif /* HAVE_DOS_PATHS */ >diff -p make381orig/make-3.81/make.h make-3.81/make.h >*** make381orig/make-3.81/make.h Wed Feb 15 18:54:43 2006 >--- make-3.81/make.h Thu Aug 17 10:10:39 2006 >*************** extern int strcmpi (const char *,const c >*** 347,353 **** > #define S_(msg1,msg2,num) ngettext (msg1,msg2,num) > > /* Handle other OSs. */ >! #if defined(HAVE_DOS_PATHS) > # define PATH_SEPARATOR_CHAR ';' > #elif defined(VMS) > # define PATH_SEPARATOR_CHAR ',' >--- 347,353 ---- > #define S_(msg1,msg2,num) ngettext (msg1,msg2,num) > > /* Handle other OSs. */ >! #if defined(HAVE_DOS_PATHS) && !defined(__CYGWIN__) > # define PATH_SEPARATOR_CHAR ';' > #elif defined(VMS) > # define PATH_SEPARATOR_CHAR ',' This is probably too big a change for this particular problem (and maybe it's already been discussed to death) but I don't see why this setting couldn't be in configure.in, too. Then MinGW could set PATH_SEPARATOR_CHAR to ';', VMS could set it to ',' (shouldn't that be '.'?), and Cygwin and every other "UNIX system" could just use the default. cgf _______________________________________________ Make-w32 mailing list Make-w32@gnu.org http://lists.gnu.org/mailman/listinfo/make-w32