From 299c72e6ed86a1e7a50ec1f5d1a813c383ed0345 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sat, 10 Aug 2002 01:27:16 +0000 Subject: [PATCH] Update to a new version of automake and gettext. Invent a new macro HAVE_DOS_PATHS and change various instances of: #if defined(WINDOWS) || defined(__MSDOS__) to use the new macro instead. This should help make the OS/2 port cleaner, as well. Invent a cvs-clean maintainer target that tries to get the workspace back to the state it was in after a CVS checkout. New language. --- README.cvs | 7 +++---- config.h.W32.template | 3 +++ configh.dos.template | 3 +++ dir.c | 18 +++++++++--------- function.c | 18 +++++++++--------- implicit.c | 2 +- job.c | 4 ++-- main.c | 8 ++++---- maintMakefile | 21 ++++++++++++--------- po/ChangeLog | 4 ++++ po/LINGUAS | 4 ++-- read.c | 40 ++++++++++++++++++++-------------------- vpath.c | 6 +++--- 13 files changed, 75 insertions(+), 63 deletions(-) diff --git a/README.cvs b/README.cvs index a6f9c9ca..82e6f373 100644 --- a/README.cvs +++ b/README.cvs @@ -24,7 +24,7 @@ Building From CVS ----------------- To build GNU make from CVS, you will need Autoconf 2.53 (or better), -Automake 1.6.1 (or better), and Gettext 0.11.3-pre2 (or better), and any +Automake 1.6.3 (or better), and Gettext 0.11.5 (or better), and any tools that those utilities require (GNU m4, Perl, etc.). You will also need a copy of wget. @@ -125,9 +125,8 @@ foolhardy), here is a canned sequence of commands to build a GNU make distribution package from a virgin CVS source checkout (assuming all the prerequisites are available of course). -This list is eminently suitable for a quick swipe o' the old mouse and a -swift click o' mouse-2 into an xterm. I even grudgingly removed my use -of "advanced shell features" like {}. Go for it! +This list is eminently suitable for a quick swipe o' the mouse and a +swift click o' mouse-2 into an xterm. Go for it! autopoint diff --git a/config.h.W32.template b/config.h.W32.template index 148b2176..4e484679 100644 --- a/config.h.W32.template +++ b/config.h.W32.template @@ -357,6 +357,9 @@ /* Build host information. */ #define MAKE_HOST "Windows32" +/* Grok DOS paths (drive specs and backslash path element separators) */ +#define HAVE_DOS_PATHS + /* * Refer to README.W32 for info on the following settings */ diff --git a/configh.dos.template b/configh.dos.template index 8fe16feb..40ef7705 100644 --- a/configh.dos.template +++ b/configh.dos.template @@ -89,3 +89,6 @@ /* Build host information. */ #define MAKE_HOST "i386-pc-msdosdjgpp" + +/* Grok DOS paths (drive specs and backslash path element separators) */ +#define HAVE_DOS_PATHS diff --git a/dir.c b/dir.c index 088f751c..80605281 100644 --- a/dir.c +++ b/dir.c @@ -744,7 +744,7 @@ file_exists_p (name) return dir_file_exists_p ("[]", name); #else /* !VMS */ dirend = strrchr (name, '/'); -#if defined (WINDOWS32) || defined (__MSDOS__) +#ifdef HAVE_DOS_PATHS /* Forward and backslashes might be mixed. We need the rightmost one. */ { char *bslash = strrchr(name, '\\'); @@ -754,7 +754,7 @@ file_exists_p (name) if (!dirend && name[0] && name[1] == ':') dirend = name + 1; } -#endif /* WINDOWS32 || __MSDOS__ */ +#endif /* HAVE_DOS_PATHS */ if (dirend == 0) #ifndef _AMIGA return dir_file_exists_p (".", name); @@ -768,7 +768,7 @@ file_exists_p (name) dirname = "/"; else { -#if defined (WINDOWS32) || defined (__MSDOS__) +#ifdef HAVE_DOS_PATHS /* d:/ and d: are *very* different... */ if (dirend < name + 3 && name[1] == ':' && (*dirend == '/' || *dirend == '\\' || *dirend == ':')) @@ -803,7 +803,7 @@ file_impossible (filename) dir = find_directory ("[]"); #else dirend = strrchr (p, '/'); -# if defined (WINDOWS32) || defined (__MSDOS__) +# ifdef HAVE_DOS_PATHS /* Forward and backslashes might be mixed. We need the rightmost one. */ { char *bslash = strrchr(p, '\\'); @@ -813,7 +813,7 @@ file_impossible (filename) if (!dirend && p[0] && p[1] == ':') dirend = p + 1; } -# endif /* WINDOWS32 or __MSDOS__ */ +# endif /* HAVE_DOS_PATHS */ if (dirend == 0) # ifdef _AMIGA dir = find_directory (""); @@ -829,7 +829,7 @@ file_impossible (filename) dirname = "/"; else { -#if defined (WINDOWS32) || defined (__MSDOS__) +#ifdef HAVE_DOS_PATHS /* d:/ and d: are *very* different... */ if (dirend < p + 3 && p[1] == ':' && (*dirend == '/' || *dirend == '\\' || *dirend == ':')) @@ -885,7 +885,7 @@ file_impossible_p (filename) dir = find_directory ("[]")->contents; #else dirend = strrchr (filename, '/'); -#if defined (WINDOWS32) || defined (__MSDOS__) +#ifdef HAVE_DOS_PATHS /* Forward and backslashes might be mixed. We need the rightmost one. */ { char *bslash = strrchr(filename, '\\'); @@ -895,7 +895,7 @@ file_impossible_p (filename) if (!dirend && filename[0] && filename[1] == ':') dirend = filename + 1; } -#endif /* WINDOWS32 || __MSDOS__ */ +#endif /* HAVE_DOS_PATHS */ if (dirend == 0) #ifdef _AMIGA dir = find_directory ("")->contents; @@ -911,7 +911,7 @@ file_impossible_p (filename) dirname = "/"; else { -#if defined (WINDOWS32) || defined (__MSDOS__) +#ifdef HAVE_DOS_PATHS /* d:/ and d: are *very* different... */ if (dirend < filename + 3 && filename[1] == ':' && (*dirend == '/' || *dirend == '\\' || *dirend == ':')) diff --git a/function.c b/function.c index c67d8a97..06b23d2f 100644 --- a/function.c +++ b/function.c @@ -499,13 +499,13 @@ func_origin (o, argv, funcname) } #ifdef VMS -#define IS_PATHSEP(c) ((c) == ']') +# define IS_PATHSEP(c) ((c) == ']') #else -#if defined(__MSDOS__) || defined(WINDOWS32) -#define IS_PATHSEP(c) ((c) == '/' || (c) == '\\') -#else -#define IS_PATHSEP(c) ((c) == '/') -#endif +# ifdef HAVE_DOS_PATHS +# define IS_PATHSEP(c) ((c) == '/' || (c) == '\\') +# else +# define IS_PATHSEP(c) ((c) == '/') +# endif #endif @@ -543,7 +543,7 @@ func_notdir_suffix (o, argv, funcname) continue; o = variable_buffer_output (o, p, len - (p - p2)); } -#if defined(WINDOWS32) || defined(__MSDOS__) +#ifdef HAVE_DOS_PATHS /* Handle the case of "d:foo/bar". */ else if (streq (funcname, "notdir") && p2[0] && p2[1] == ':') { @@ -599,7 +599,7 @@ func_basename_dir (o, argv, funcname) o = variable_buffer_output (o, p2, ++p - p2); else if (p >= p2 && (*p == '.')) o = variable_buffer_output (o, p2, p - p2); -#if defined(WINDOWS32) || defined(__MSDOS__) +#ifdef HAVE_DOS_PATHS /* Handle the "d:foobar" case */ else if (p2[0] && p2[1] == ':' && is_dir) o = variable_buffer_output (o, p2, 2); @@ -938,7 +938,7 @@ func_filter_filterout (o, argv, funcname) struct a_pattern *pathead; struct a_pattern **pattail; struct a_pattern *pp; - + struct hash_table a_word_table; int is_filter = streq (funcname, "filter"); char *pat_iterator = argv[0]; diff --git a/implicit.c b/implicit.c index 0a2b8d28..0ce7a493 100644 --- a/implicit.c +++ b/implicit.c @@ -168,7 +168,7 @@ pattern_search (file, archive, depth, recursions) lastslash = strrchr (filename, ':'); #else lastslash = strrchr (filename, '/'); -#if defined(__MSDOS__) || defined(WINDOWS32) +#ifdef HAVE_DOS_PATHS /* Handle backslashes (possibly mixed with forward slashes) and the case of "d:file". */ { diff --git a/job.c b/job.c index 5b8628a3..63456a7a 100644 --- a/job.c +++ b/job.c @@ -2667,7 +2667,7 @@ construct_command_argv_internal (line, restp, shell, ifs, batch_filename_ptr) } else if (p[1] != '\0') { -#if defined(__MSDOS__) || defined(WINDOWS32) +#ifdef HAVE_DOS_PATHS /* Only remove backslashes before characters special to Unixy shells. All other backslashes are copied verbatim, since they are probably DOS-style @@ -2691,8 +2691,8 @@ construct_command_argv_internal (line, restp, shell, ifs, batch_filename_ptr) && (strchr (sh_chars_sh, p[1]) == 0)) /* back up one notch, to copy the backslash */ --p; +#endif /* HAVE_DOS_PATHS */ -#endif /* __MSDOS__ || WINDOWS32 */ /* Copy and skip the following char. */ *ap++ = *++p; } diff --git a/main.c b/main.c index 588c4c6b..a04671db 100644 --- a/main.c +++ b/main.c @@ -1345,15 +1345,15 @@ int main (int argc, char ** argv) + sizeof (DEFAULT_TMPFILE) + 1); strcpy (template, tmpdir); -#if defined __MSDOS__ || defined(WINDOWS32) +#ifdef HAVE_DOS_PATHS if (strchr ("/\\", template[strlen (template) - 1]) == NULL) strcat (template, "/"); #else -#ifndef VMS +# ifndef VMS if (template[strlen (template) - 1] != '/') strcat (template, "/"); -#endif /* !VMS */ -#endif /* __MSDOS__ || WINDOWS32 */ +# endif /* !VMS */ +#endif /* !HAVE_DOS_PATHS */ strcat (template, DEFAULT_TMPFILE); outfile = open_tmpfile (&stdin_nm, template); diff --git a/maintMakefile b/maintMakefile index c919af62..2bc19497 100644 --- a/maintMakefile +++ b/maintMakefile @@ -78,18 +78,21 @@ build.sh.in: build.template Makefile # maintFILES = configure aclocal.m4 config.h.in Makefile.in stamp-h.in -MAINTAINERCLEANFILES += $(maintFILES) $(TEMPLATES) $(MTEMPLATES) NMakefile \ +CVS-CLEAN-FILES += $(maintFILES) $(TEMPLATES) $(MTEMPLATES) NMakefile \ missing build.sh.in .dep_segment -# Put the alpha distribution files up for anonymous FTP. -# -ALPHA := ~ftp/gnu -TARFILE := $(distdir).tar.gz +# This rule tries to clean the tree right down to how it looks when you do a +# virgin CVS checkout. -.PHONY: alpha -alpha: $(ALPHA) $(TARFILE) - @rm -f $(ALPHA)/$(TARFILE) - cp -p $(TARFILE) $(ALPHA) +.PHONY: cvs-clean +cvs-clean: maintainer-clean + -rm -f *~ + -rm -f config/*~ config/Makefile.in config/[a-z]* + -rm -f po/*~ po/Makefile.in.in po/Rules-quot po/[a-z]* + -rm -f doc/*~ doc/Makefile.in doc/fdl.texi doc/make-stds.texi \ + doc/texinfo.tex + -rm -f glob/*~ glob/Makefile.in + -rm -f ABOUT-NLS $(CVS-CLEAN-FILES) # ---------------------------------------------------------------------- diff --git a/po/ChangeLog b/po/ChangeLog index 6c5321a7..a362db7e 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,7 @@ +2002-08-08 Paul D. Smith + + * LINGUAS: Add a new translation for Chinese (simplified) (zh_CN). + 2002-08-02 Paul D. Smith * LINGUAS: Add a new translation for Swedish (sv). diff --git a/po/LINGUAS b/po/LINGUAS index 55618e45..f542ed06 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,5 +1,5 @@ -# Set of available languages: 14 languages +# Set of available languages: 16 languages -da de es fr gl he hr ja ko nl pl pt_BR sv ru tr +da de es fr gl he hr ja ko nl pl pt_BR sv ru tr zh_CN # Can't seem to get en@quot and en@boldquot to build properly? diff --git a/read.c b/read.c index 6d2de07d..7dee3e37 100644 --- a/read.c +++ b/read.c @@ -445,10 +445,6 @@ eval (ebuf, set_default) struct floc *fstart; struct floc fi; -#if defined (WINDOWS32) || defined (__MSDOS__) - int check_again; -#endif - #define record_waiting_files() \ do \ { \ @@ -932,7 +928,7 @@ eval (ebuf, set_default) } colonp = find_char_unquote(p2, ':', 0, 0); -#if defined(__MSDOS__) || defined(WINDOWS32) +#ifdef HAVE_DOS_PATHS /* The drive spec brain-damage strikes again... */ /* Note that the only separators of targets in this context are whitespace and a left paren. If others are possible, @@ -1104,17 +1100,21 @@ eval (ebuf, set_default) || isspace ((unsigned char)p[-1]))) p = 0; #endif -#if defined (WINDOWS32) || defined (__MSDOS__) - do { - check_again = 0; - /* For MSDOS and WINDOWS32, skip a "C:\..." or a "C:/..." */ - if (p != 0 && (p[1] == '\\' || p[1] == '/') && - isalpha ((unsigned char)p[-1]) && - (p == p2 + 1 || strchr (" \t:(", p[-2]) != 0)) { - p = strchr (p + 1, ':'); - check_again = 1; - } - } while (check_again); +#ifdef HAVE_DOS_PATHS + { + int check_again; + + do { + check_again = 0; + /* For DOS paths, skip a "C:\..." or a "C:/..." */ + if (p != 0 && (p[1] == '\\' || p[1] == '/') && + isalpha ((unsigned char)p[-1]) && + (p == p2 + 1 || strchr (" \t:(", p[-2]) != 0)) { + p = strchr (p + 1, ':'); + check_again = 1; + } + } while (check_again); + } #endif if (p != 0) { @@ -2048,7 +2048,7 @@ record_files (filenames, pattern, pattern_percent, deps, cmds_started, not start with a `.', unless it contains a slash. */ if (default_goal_file == 0 && set_default && (*name != '.' || strchr (name, '/') != 0 -#if defined(__MSDOS__) || defined(WINDOWS32) +#ifdef HAVE_DOS_PATHS || strchr (name, '\\') != 0 #endif )) @@ -2227,8 +2227,8 @@ parse_file_seq (stringp, stopchar, size, strip) p = find_char_unquote (p+1, stopchar, VMS_COMMA, 1); } #endif -#if defined(WINDOWS32) || defined(__MSDOS__) - /* For WINDOWS32, skip a "C:\..." or a "C:/..." until we find the +#ifdef HAVE_DOS_PATHS + /* For DOS paths, skip a "C:\..." or a "C:/..." until we find the first colon which isn't followed by a slash or a backslash. Note that tokens separated by spaces should be treated as separate tokens since make doesn't allow path names with spaces */ @@ -2687,7 +2687,7 @@ get_next_mword (buffer, delim, startp, length) goto done_word; case ':': -#if defined(__MSDOS__) || defined(WINDOWS32) +#ifdef HAVE_DOS_PATHS /* A word CAN include a colon in its drive spec. The drive spec is allowed either at the beginning of a word, or as part of the archive member name, like in "libfoo.a(d:/foo/bar.o)". */ diff --git a/vpath.c b/vpath.c index 000db97c..065779be 100644 --- a/vpath.c +++ b/vpath.c @@ -348,7 +348,7 @@ vpath_search (file, mtime_ptr) there is nothing we can do. */ if (**file == '/' -#if defined (WINDOWS32) || defined (__MSDOS__) +#ifdef HAVE_DOS_PATHS || **file == '\\' || (*file)[1] == ':' #endif @@ -404,7 +404,7 @@ selective_vpath_search (path, file, mtime_ptr) pointer to the name-within-directory and FLEN is its length. */ n = strrchr (*file, '/'); -#if defined (WINDOWS32) || defined (__MSDOS__) +#ifdef HAVE_DOS_PATHS /* We need the rightmost slash or backslash. */ { char *bslash = strrchr(*file, '\\'); @@ -445,7 +445,7 @@ selective_vpath_search (path, file, mtime_ptr) n += name_dplen; } -#if defined (WINDOWS32) || defined (__MSDOS__) +#ifdef HAVE_DOS_PATHS /* Cause the next if to treat backslash and slash alike. */ if (n != name && n[-1] == '\\' ) n[-1] = '/';