summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--build_w32.bat5
-rw-r--r--dir.c31
-rw-r--r--make.h2
4 files changed, 35 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index fa6847d..c9d3eb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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"
diff --git a/dir.c b/dir.c
index 7a3cdba..4f3732a 100644
--- a/dir.c
+++ b/dir.c
@@ -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
diff --git a/make.h b/make.h
index b379ff6..6cdcfb9 100644
--- a/make.h
+++ b/make.h
@@ -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);