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> 2007-08-15 Paul Smith <psmith@gnu.org>
* doc/make.texi (GNU Free Documentation License): The fdl.texi * 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 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/>. 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 if not exist config.h copy config.h.W32 config.h
cd w32\subproc cd w32\subproc
echo "Creating the subproc library" 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. /* The directory is not in the name hash table.
Find its device and inode numbers, and look it up by them. */ 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 #ifdef VMS
r = vmsstat_dir (name, &st); 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 #else
EINTRLOOP (r, stat (name, &st)); EINTRLOOP (r, stat (name, &st));
#endif #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) if (r < 0)
{ {
/* Couldn't stat the directory. Mark this by /* 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)) # define kill(_pid,_sig) w32_kill((_pid),(_sig))
void sync_Path_environment (void); 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); char *end_of_token_w32 (const char *s, char stopchar);
int find_and_set_default_shell (const char *token); int find_and_set_default_shell (const char *token);