diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | build_w32.bat | 5 | ||||
-rw-r--r-- | dir.c | 31 | ||||
-rw-r--r-- | make.h | 2 |
4 files changed, 35 insertions, 15 deletions
@@ -1,3 +1,15 @@ +2007-10-10 Eli Zaretskii <eliz@gnu.org> + + * dir.c (find_directory) [WINDOWS32]: Remove trailing slashes from + pathnames, with const strings. + * build_w32.bat [WINDOWS32]: If no config.h.W32 exists, create one + from the template (used for building from CVS, not a dist). + +2007-10-10 Paul Smith <psmith@gnu.org> + + * make.h: Add a prototype for w32_kill() (change suggested by + Yongwei Wu <wuyongwei@gmail.com>). + 2007-08-15 Paul Smith <psmith@gnu.org> * doc/make.texi (GNU Free Documentation License): The fdl.texi diff --git a/build_w32.bat b/build_w32.bat index 7d10e61..38c9e80 100644 --- a/build_w32.bat +++ b/build_w32.bat @@ -16,6 +16,11 @@ rem rem You should have received a copy of the GNU General Public License along
rem with this program. If not, see <http://www.gnu.org/licenses/>.
+if exist config.h.W32 GoTo NotCVS
+sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.in > config.h.W32.sed
+echo s,%%PACKAGE%%,make,g >> config.h.W32.sed
+sed -f config.h.W32.sed config.h.W32.template > config.h.W32
+:NotCVS
if not exist config.h copy config.h.W32 config.h
cd w32\subproc
echo "Creating the subproc library"
@@ -454,26 +454,29 @@ find_directory (const char *name) /* The directory is not in the name hash table. Find its device and inode numbers, and look it up by them. */ -#ifdef WINDOWS32 - /* Remove any trailing '\'. Windows32 stat fails even on valid - directories if they end in '\'. */ - if (p[-1] == '\\') - p[-1] = '\0'; -#endif - #ifdef VMS r = vmsstat_dir (name, &st); +#elif defined(WINDOWS32) + { + char tem[MAXPATHLEN], *tstart, *tend; + + /* Remove any trailing slashes. Windows32 stat fails even on + valid directories if they end in a slash. */ + memcpy (tem, name, p - name + 1); + tstart = tem; + if (tstart[1] == ':') + tstart += 2; + for (tend = tem + (p - name - 1); + tend > tstart && (*tend == '/' || *tend == '\\'); + tend--) + *tend = '\0'; + + r = stat (tem, &st); + } #else EINTRLOOP (r, stat (name, &st)); #endif -#ifdef WINDOWS32 - /* Put back the trailing '\'. If we don't, we're permanently - truncating the value! */ - if (p[-1] == '\0') - p[-1] = '\\'; -#endif - if (r < 0) { /* Couldn't stat the directory. Mark this by @@ -329,7 +329,7 @@ char *strsignal (int signum); # define kill(_pid,_sig) w32_kill((_pid),(_sig)) void sync_Path_environment (void); -int kill (int pid, int sig); +int w32_kill (int pid, int sig); char *end_of_token_w32 (const char *s, char stopchar); int find_and_set_default_shell (const char *token); |