Some Windows fixes to allow builds to succeed.

This commit is contained in:
Paul Smith 2007-10-10 04:32:15 +00:00
parent 19b6504f8a
commit e54dfb4284
4 changed files with 35 additions and 15 deletions

View file

@ -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

View file

@ -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"

31
dir.c
View file

@ -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

2
make.h
View file

@ -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);