usr.bin/make fixes for var.c and some doc fixes

Max Okumoto okumoto at ucsd.edu
Thu Nov 18 17:06:09 PST 2004


Stuff contained in patch-4.21
=============================
PatchSet 294
        o Fix proto type
PatchSet 295 Date: 2002/10/29 09:48:49 Author: ru
        o Mention that the left-hand side of the comparison conditional
          must always be a variable expansion.  Do not lie that
          debugging .for loops is a no-op.
PatchSet 297
        o Update tutorial.
PatchSet 298 Date: 2002/11/01 08:40:32 Author: ru
        o Update man page.
PatchSet 305 Date: 2002/12/23 16:04:51 Author: ru
        o Fixed the abuses of .Ql visible on stderr in troff mode.
PatchSet 307 Date: 2002/12/30 21:18:11 Author: schweikh
        o Fix typos, mostly s/ an / a / where appropriate and a few 
s/an/and/
          Add FreeBSD Id tag where missing.



Stuff contained in patch-4.22
==============================
PatchSet 289 Date: 2002/10/23 02:57:33 Author: jmallett
        o De-obfuscate and correct the include path handling for
          SysV style includes.
PatchSet 291 Date: 2002/10/24 05:10:55 Author: jmallett
        o Duplicate the variable name in the v->name field, as
          otherwise it points to data that will be modified.  And
          do the appropriate thing now and free the v->name buffer
          along with other relinquished memory.
          XXX There is duplication here of destroying a Var, which
          is probably bogus, and probably missed in a few places.
PatchSet 292 & 293 Date: 2002/10/24 13:57:42 Author: jmallett
        o When expanding a specific [1-char] variable, only expand
          said specific [1-char] variable.  Don't just automatically
          expand something which starts with that character.
PatchSet 308 & 309 Date: 2003/01/15 22:36:15 Author: marcel
        o Change the handling of non-anchored global substitutions
          of the empty string from a silent implicit non-global
          substitution to a non-silent explicit fatal error. Archored
          substitutions are those containing '^' or '$'.  The problem
          with changing the substitution to prevent an infinite
          number of matches is that it doesn't provide the necessary
          feedback to the user that there's a bug in the/a makefile.
          Reporting the bug without making the condition fatal makes
          the feedback mostly useless due to the way that make fails
          to prefix the error with program name, makefile file name
          and line number information.  Note that global substitutions
          of the empty string anchored with '^' (start of string)
          or '$' (end of string) do not cause an infinite number
          of matches and are therefore not reported and hence are
          non- fatal.
---------------------
PatchSet 289
Date: 2002/10/23 02:57:33
Author: jmallett
Log:
De-obfuscate and correct the include path handling for SysV style includes.

PR:		32759
Submitted by:	Mark Valentine
Reviewed by:	Matthew Emmerton" <matt at xxxxxxxxxxxxx>
MFC after:	15 days

Members: 
	parse.c:1.48->1.49 

Index: parse.c
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/parse.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- parse.c	9 Oct 2002 03:42:10 -0000	1.48
+++ parse.c	23 Oct 2002 01:57:33 -0000	1.49
@@ -1823,7 +1823,6 @@
     char          *fullname;	/* full pathname of file */
     IFile         *oldFile;	/* state associated with current file */
     char          *cp;		/* current position in file spec */
-    char	  *prefEnd;
 
     /*
      * Skip over whitespace
@@ -1855,42 +1854,12 @@
 
     /*
      * Now we know the file's name, we attempt to find the durn thing.
-     * A return of NULL indicates the file don't exist.
-     *
-     * Include files are first searched for relative to the including
-     * file's location. We don't want to cd there, of course, so we
-     * just tack on the old file's leading path components and call
-     * Dir_FindFile to see if we can locate the beast.
-     * XXX - this *does* search in the current directory, right?
+     * Search for it first on the -I search path, then on the .PATH
+     * search path, if not found in a -I directory.
      */
-
-    prefEnd = strrchr (fname, '/');
-    if (prefEnd != (char *)NULL) {
-	char  	*newName;
-
-	*prefEnd = '\0';
-	newName = str_concat (fname, file, STR_ADDSLASH);
-	fullname = Dir_FindFile (newName, parseIncPath);
-	if (fullname == (char *)NULL) {
-	    fullname = Dir_FindFile(newName, dirSearchPath);
-	}
-	free (newName);
-	*prefEnd = '/';
-    } else {
-	fullname = (char *)NULL;
-    }
-
+    fullname = Dir_FindFile (file, parseIncPath);
     if (fullname == (char *)NULL) {
-	/*
-	 * System makefile or makefile wasn't found in same directory as
-	 * included makefile. Search for it first on the -I search path,
-	 * then on the .PATH search path, if not found in a -I directory.
-	 * XXX: Suffix specific?
-	 */
-	fullname = Dir_FindFile (file, parseIncPath);
-	if (fullname == (char *)NULL) {
-	    fullname = Dir_FindFile(file, dirSearchPath);
-	}
+        fullname = Dir_FindFile(file, dirSearchPath);
     }
 
     if (fullname == (char *)NULL) {
---------------------
PatchSet 291
Date: 2002/10/24 05:10:55
Author: jmallett
Log:
Duplicate the variable name in the v->name field, as otherwise it points to
data that will be modified.  And do the appropriate thing now and free the
v->name buffer along with other relinquished memory.

XXX There is duplication here of destroying a Var, which is probably bogus,
and probably missed in a few places.

Members: 
	var.c:1.35->1.36 

Index: var.c
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/var.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- var.c	9 Oct 2002 03:42:10 -0000	1.35
+++ var.c	24 Oct 2002 04:10:55 -0000	1.36
@@ -1631,7 +1631,7 @@
 		 * so kludge up a Var structure for the modifications
 		 */
 		v = (Var *) emalloc(sizeof(Var));
-		v->name = &str[1];
+		v->name = estrdup(str);
 		v->val = Buf_Init(1);
 		v->flags = VAR_JUNK;
 	    }
@@ -2201,6 +2201,7 @@
 	     */
 	    *freePtr = TRUE;
 	}
+	free(v->name);
 	Buf_Destroy(v->val, destroy);
 	free(v);
     } else if (v->flags & VAR_JUNK) {
@@ -2212,6 +2213,7 @@
 	    free(str);
 	}
 	*freePtr = FALSE;
+	free(v->name);
 	Buf_Destroy(v->val, TRUE);
 	free(v);
 	if (dynamic) {
---------------------
PatchSet 292
Date: 2002/10/24 13:57:42
Author: jmallett
Log:
When expanding a specific [1-char] variable, only expand said specific
[1-char] variable.  Don't just automatically expand something which
starts with that character.

Obtained from:	OpenBSD [3 years ago!]

Members: 
	var.c:1.36->1.37 

Index: var.c
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/var.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- var.c	24 Oct 2002 04:10:55 -0000	1.36
+++ var.c	24 Oct 2002 12:57:42 -0000	1.37
@@ -2281,7 +2281,7 @@
 		int expand;
 		for (;;) {
 		    if (str[1] != '(' && str[1] != '{') {
-			if (str[1] != *var) {
+			if (str[1] != *var || val[1] != '\0') {
 			    Buf_AddBytes(buf, 2, (Byte *) str);
 			    str += 2;
 			    expand = FALSE;
---------------------
PatchSet 293
Date: 2002/10/24 21:37:58
Author: jmallett
Log:
Fix problem with my ability to tell the difference between 'r' and 'l'... We
want to check var[1], not val[1].

Submitted by:	Mark Valentine <mark at xxxxxxxxxxxxxxxxxx>
Pointed out by:	sam
Pointy hat to:	jmallett

Members: 
	var.c:1.37->1.38 

Index: var.c
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/var.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- var.c	24 Oct 2002 12:57:42 -0000	1.37
+++ var.c	24 Oct 2002 20:37:58 -0000	1.38
@@ -2281,7 +2281,7 @@
 		int expand;
 		for (;;) {
 		    if (str[1] != '(' && str[1] != '{') {
-			if (str[1] != *var || val[1] != '\0') {
+			if (str[1] != *var || var[1] != '\0') {
 			    Buf_AddBytes(buf, 2, (Byte *) str);
 			    str += 2;
 			    expand = FALSE;
---------------------
PatchSet 308
Date: 2003/01/13 23:53:46
Author: marcel
Log:
Prevent infinite substitution of the empty string by forcing non-
global substitution. In general it's a makefile bug to globally
substitute the empty string, but it's a bug in make(1) if a bug
in the makefile yields an infinite running time of make(1).

Not objected to by: arch@

Members: 
	var.c:1.40->1.41 

Index: var.c
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/var.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- var.c	8 Nov 2002 16:59:11 -0000	1.40
+++ var.c	13 Jan 2003 23:53:46 -0000	1.41
@@ -1349,6 +1349,17 @@
 			cp++;
 		    }
 
+		    /*
+		     * Replacing the empty string for something else when
+		     * done globally causes an infinite loop. The only
+		     * meaningful substitution of the empty string would
+		     * be those anchored by '^' or '$'. Thus, we can
+		     * safely turn the substitution into a non-global one
+		     * if the LHS is the empty string.
+		     */
+		    if (pattern.leftLen == 0)
+			pattern.flags &= ~VAR_SUB_GLOBAL;
+
 		    termc = *cp;
 		    newStr = VarModify(str, VarSubstitute,
 				       (void *)&pattern);
---------------------
PatchSet 309
Date: 2003/01/15 22:36:15
Author: marcel
Log:
Change the handling of non-anchored global substitutions of the empty
string from a silent implicit non-global substitution to a non-silent
explicit fatal error. Archored substitutions are those containing '^'
or '$'.
The problem with changing the substitution to prevent an infinite
number of matches is that it doesn't provide the necessary feedback
to the user that there's a bug in the/a makefile. Reporting the bug
without making the condition fatal makes the feedback mostly useless
due to the way that make fails to prefix the error with program name,
makefile file name and line number information.
Note that global substitutions of the empty string anchored with '^'
(start of string) or '$' (end of string) do not cause an infinite
number of matches and are therefore not reported and hence are non-
fatal.

Suggested by: bde
Tested with: buildworld

Members: 
	var.c:1.41->1.42 

Index: var.c
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/var.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- var.c	13 Jan 2003 23:53:46 -0000	1.41
+++ var.c	15 Jan 2003 22:36:15 -0000	1.42
@@ -1350,15 +1350,16 @@
 		    }
 
 		    /*
-		     * Replacing the empty string for something else when
-		     * done globally causes an infinite loop. The only
-		     * meaningful substitution of the empty string would
-		     * be those anchored by '^' or '$'. Thus, we can
-		     * safely turn the substitution into a non-global one
-		     * if the LHS is the empty string.
+		     * Global substitution of the empty string causes an
+		     * infinite number of matches, unless anchored by '^'
+		     * (start of string) or '$' (end of string). Catch the
+		     * infinite substitution here.
+		     * Note that flags can only contain the 3 bits we're
+		     * interested in so we don't have to mask unrelated
+		     * bits. We can test for equality.
 		     */
-		    if (pattern.leftLen == 0)
-			pattern.flags &= ~VAR_SUB_GLOBAL;
+		    if (!pattern.leftLen && pattern.flags == VAR_SUB_GLOBAL)
+			Fatal("Global substitution of the empty string");
 
 		    termc = *cp;
 		    newStr = VarModify(str, VarSubstitute,
---------------------
PatchSet 294
Date: 2002/10/28 23:33:57
Author: jmallett
Log:
Split var.c into var.c and var_modify.c and move all the modification funcs
to var_modify.c, for readability.  constify some low hanging fruit (string
manipulation functions) and the upper layers appropriately.  No longer use
the private strstr(3) implementation, while changing string code.

Tested by:      lots of successful make buildworld.

Members: 
	Makefile:1.29->1.30 
	job.c:1.46->1.47 
	nonints.h:1.18->1.19 
	var.c:1.38->1.39 
	var.h:INITIAL->1.1 
	var_modify.c:INITIAL->1.1 


diff -ru  dfly-src/make/nonints.h fbsd-src/make/nonints.h
--- dfly-src/make/nonints.h	Wed Nov 17 03:15:19 2004
+++ fbsd-src/make/nonints.h	Wed Nov 17 03:15:17 2004
@@ -94,7 +94,7 @@
 char *str_concat(const char *, const char *, int);
 char **brk_string(char *, int *, Boolean);
 int Str_Match(const char *, const char *);
-const char *Str_SYSVMatch(const char *, const char *, int *len);
+const char *Str_SYSVMatch(const char *, const char *, int *);
 void Str_SYSVSubst(Buffer, const char *, const char *, int);
 
 /* suff.c */
diff -ru  dfly-src/make/var.c fbsd-src/make/var.c
diff -ru  dfly-src/make/var.c fbsd-src/make/var.c
diff -ru  dfly-src/make/var_modify.c fbsd-src/make/var_modify.c
diff -ru  dfly-src/make/var_modify.c fbsd-src/make/var_modify.c
---------------------
PatchSet 295
Date: 2002/10/29 09:48:49
Author: ru
Log:
Mention that the left-hand side of the comparison
conditional must always be a variable expansion.

Obtained from:	PMake

Do not lie that debugging .for loops is a no-op.

Members: 
	make.1:1.59->1.60 

Index: make.1
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/make.1,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -r1.59 -r1.60
--- make.1	27 Sep 2002 09:21:07 -0000	1.59
+++ make.1	29 Oct 2002 09:48:49 -0000	1.60
@@ -116,8 +116,6 @@
 Print debugging information about directory searching and caching.
 .It Ar f
 Print debugging information about the execution of for loops.
-Currently a
-no-op.
 .It Ar "g1"
 Print the input graph before making anything.
 .It Ar "g2"
@@ -902,7 +900,8 @@
 .Pp
 An
 .Ar expression
-may also be an arithmetic or string comparison.
+may also be an arithmetic or string comparison, with the left-hand side
+being a variable expansion.
 Variable expansion is
 performed on both sides of the comparison, after which the integral
 values are compared.
---------------------
PatchSet 297
Date: 2002/10/29 14:56:09
Author: ru
Log:
bsd.doc.mk changes:

Don't gratuitously pipe thru a cat(1) if NODOCCOMPRESS.

Only create _stamp.extra when necessary.

Get rid of SOELIMPP and OBJS.

Use Groff version of soelim(1); we need its -I option
for the following to work.

Don't needlessly chdir to SRCDIR.  Only a few documents
need CD_HACK, and those that need it either use refer(1)
or .PSPIC macro which internally uses the .psbb call.

Members: 
	PSD.doc/tutorial.ms:1.12->1.13 

Index: PSD.doc/tutorial.ms
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/PSD.doc/tutorial.ms,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- PSD.doc/tutorial.ms	16 May 2002 02:19:09 -0000	1.12
+++ PSD.doc/tutorial.ms	29 Oct 2002 14:56:09 -0000	1.13
@@ -37,7 +37,6 @@
 .\"	@(#)tutorial.ms	8.1 (Berkeley) 8/18/93
 .\" $FreeBSD$
 .\"
-.so stubs
 .EH 'PSD:12-%''PMake \*- A Tutorial'
 .OH 'PMake \*- A Tutorial''PSD:12-%'
 .\" xH is a macro to provide numbered headers that are automatically stuffed
---------------------
PatchSet 298
Date: 2002/11/01 08:40:32
Author: ru
Log:
Document the confusing behavior that the .if conditional defaults
to defined(), e.g., ``.if 1'' is equivalent to ``.if defined(1)'',
which is only true when the ${1} variable is defined.

Members: 
	make.1:1.60->1.61 

Index: make.1
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/make.1,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- make.1	29 Oct 2002 09:48:49 -0000	1.60
+++ make.1	1 Nov 2002 08:40:32 -0000	1.61
@@ -928,6 +928,7 @@
 .Dq defined
 expression is applied to it, depending on the form of the conditional.
 If the form is
+.Ql Ic .if ,
 .Ql Ic .ifdef
 or
 .Ql Ic .ifndef ,
---------------------
PatchSet 305
Date: 2002/12/23 16:04:51
Author: ru
Log:
Fixed the abuses of .Ql visible on stderr in troff mode.

PR:		docs/37176

Members: 
	make.1:1.61->1.62 

Index: make.1
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/make.1,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- make.1	1 Nov 2002 08:40:32 -0000	1.61
+++ make.1	23 Dec 2002 16:04:51 -0000	1.62
@@ -62,16 +62,16 @@
 describing dependency relationships between the generation of
 files and programs.
 The first of
-.Ql Pa BSDmakefile ,
-.Ql Pa makefile
+.Pa BSDmakefile ,
+.Pa makefile
 and
-.Ql Pa Makefile
+.Pa Makefile
 that can be found in either the current directory or a special object directory
 (see
-.Ql Va .OBJDIR )
+.Va .OBJDIR )
 will be read for this list of specifications.
 If the file
-.Ql Pa .depend
+.Pa .depend
 can be found, it is also read (see
 .Xr mkdep 1 ) .
 .Pp
@@ -145,13 +145,13 @@
 makefiles for all variables.
 .It Fl f Ar makefile
 Specify a makefile to read instead of the default
-.Ql Pa makefile
+.Pa makefile
 and
-.Ql Pa Makefile .
+.Pa Makefile .
 If
 .Ar makefile
 is
-.Ql \- ,
+.Sq Fl ,
 standard input is read.
 Multiple makefiles may be specified, and are read in the order specified.
 .It Fl I Ar directory
@@ -162,7 +162,7 @@
 .It Fl i
 Ignore non-zero exit of shell commands in the makefile.
 Equivalent to specifying
-.Ql \-
+.Sq Ic \-
 before each command line in the makefile.
 .It Fl j Ar max_jobs
 Specify the maximum number of jobs that
@@ -208,7 +208,7 @@
 .It Fl s
 Do not echo any commands as they are executed.
 Equivalent to specifying
-.Ql Ic @
+.Sq Ic @
 before each command line in the makefile.
 .It Fl t
 Rather than re-building a target as specified in the makefile, create it
@@ -311,19 +311,19 @@
 be preceded by a tab.
 While any target may appear on a dependency line, only one of these
 dependencies may be followed by a creation script, unless the
-.Ql Ic ::
+.Sq Ic ::
 operator is used.
 .Pp
 If the first or first two characters of the command line are
-.Ql Ic @
+.Sq Ic @
 and/or
-.Ql Ic \- ,
+.Sq Ic \- ,
 the command is treated specially.
 A
-.Ql Ic @
+.Sq Ic @
 causes the command not to be echoed before it is executed.
 A
-.Ql Ic \-
+.Sq Ic \-
 causes any non-zero exit status of the command line to be ignored.
 .Sh VARIABLE ASSIGNMENTS
 Variables in
@@ -390,51 +390,51 @@
 .Bl -tag -width ".ARCHIVE"
 .It Va .ALLSRC
 The list of all sources for this target; also known as
-.Ql Va \&> .
+.Sq Va \&> .
 .It Va .ARCHIVE
 The name of the archive file; also known as
-.Ql Va \&! .
+.Sq Va \&! .
 .It Va .IMPSRC
 The name/path of the source from which the target is to be transformed
 (the
 .Dq implied
 source); also known as
-.Ql Va \&< .
+.Sq Va \&< .
 .It Va .MEMBER
 The name of the archive member; also known as
-.Ql Va \&% .
+.Sq Va \&% .
 .It Va .OODATE
 The list of sources for this target that were deemed out-of-date; also
 known as
-.Ql Va \&? .
+.Sq Va \&? .
 .It Va .PREFIX
 The file prefix of the file, containing only the file portion, no suffix
 or preceding directory components; also known as
-.Ql Va * .
+.Sq Va * .
 .It Va .TARGET
 The name of the target; also known as
-.Ql Va @ .
+.Sq Va @ .
 .El
 .Pp
 The shorter forms
-.Ql Va @ ,
-.Ql Va \&! ,
-.Ql Va \&< ,
-.Ql Va \&% ,
-.Ql Va \&? ,
-.Ql Va \&> ,
+.Sq Va @ ,
+.Sq Va \&! ,
+.Sq Va \&< ,
+.Sq Va \&% ,
+.Sq Va \&? ,
+.Sq Va \&> ,
 and
-.Ql Va *
+.Sq Va *
 are permitted for backward
 compatibility and are not recommended.
 The six variables
-.Ql Va "@F" ,
-.Ql Va "@D" ,
-.Ql Va "<F" ,
-.Ql Va "<D" ,
-.Ql Va "*F" ,
+.Sq Va @F ,
+.Sq Va @D ,
+.Sq Va <F ,
+.Sq Va <D ,
+.Sq Va *F ,
 and
-.Ql Va "*D"
+.Sq Va *D
 are
 permitted for compatibility with
 .At V
@@ -443,11 +443,11 @@
 Four of the local variables may be used in sources on dependency lines
 because they expand to the proper value for each target on the line.
 These variables are
-.Ql Va .TARGET ,
-.Ql Va .PREFIX ,
-.Ql Va .ARCHIVE ,
+.Va .TARGET ,
+.Va .PREFIX ,
+.Va .ARCHIVE ,
 and
-.Ql Va .MEMBER .
+.Va .MEMBER .
 .El
 .Pp
 In addition,
@@ -636,7 +636,7 @@
 .Pf ( Ql * ,
 .Ql \&? ,
 and
-.Ql Op )
+.Ql [] )
 may
 be used.
 The wildcard characters may be escaped with a backslash
@@ -802,45 +802,45 @@
 .Op Ar operator expression ...
 .Xc
 A combination of
-.Ql Ic .else
+.Ic .else
 followed by
-.Ql Ic .if .
+.Ic .if .
 .It Xo
 .Ic .elifdef
 .Oo \&! Oc Ns Ar variable
 .Op Ar operator variable ...
 .Xc
 A combination of
-.Ql Ic .else
+.Ic .else
 followed by
-.Ql Ic .ifdef .
+.Ic .ifdef .
 .It Xo
 .Ic .elifndef
 .Oo \&! Oc Ns Ar variable
 .Op Ar operator variable ...
 .Xc
 A combination of
-.Ql Ic .else
+.Ic .else
 followed by
-.Ql Ic .ifndef .
+.Ic .ifndef .
 .It Xo
 .Ic .elifmake
 .Oo \&! Oc Ns Ar target
 .Op Ar operator target ...
 .Xc
 A combination of
-.Ql Ic .else
+.Ic .else
 followed by
-.Ql Ic .ifmake .
+.Ic .ifmake .
 .It Xo
 .Ic .elifnmake
 .Oo \&! Oc Ns Ar target
 .Op Ar operator target ...
 .Xc
 A combination of
-.Ql Ic .else
+.Ic .else
 followed by
-.Ql Ic .ifnmake .
+.Ic .ifnmake .
 .It Ic .endif
 End the body of the conditional.
 .El
@@ -852,11 +852,11 @@
 .It Cm \&|\&|
 logical
 .Tn OR
-.It Cm \&&&
+.It Cm &&
 Logical
 .Tn AND ;
 of higher precedence than
-.Ql Ic || .
+.Sq Ic || .
 .El
 .Pp
 As in C,
@@ -865,11 +865,11 @@
 its value.
 Parentheses may be used to change the order of evaluation.
 The boolean operator
-.Ql Ic !\&
+.Sq Ic !\&
 may be used to logically negate an entire
 conditional.
 It is of higher precedence than
-.Ql Ic \&&& .
+.Sq Ic && .
 .Pp
 The value of
 .Ar expression
@@ -910,9 +910,9 @@
 The standard C relational operators are all supported.
 If after
 variable expansion, either the left or right hand side of a
-.Ql Ic ==
+.Sq Ic ==
 or
-.Ql Ic "!="
+.Sq Ic !=
 operator is not an integral value, then
 string comparison is performed between the expanded
 variables.
@@ -928,17 +928,17 @@
 .Dq defined
 expression is applied to it, depending on the form of the conditional.
 If the form is
-.Ql Ic .if ,
-.Ql Ic .ifdef
+.Ic .if ,
+.Ic .ifdef
 or
-.Ql Ic .ifndef ,
+.Ic .ifndef ,
 the
 .Dq defined
 expression is applied.
 Similarly, if the form is
-.Ql Ic .ifmake
+.Ic .ifmake
 or
-.Ql Ic .ifnmake ,
+.Ic .ifnmake ,
 the
 .Dq make
 expression is applied.
@@ -947,9 +947,9 @@
 as before.
 If it evaluates to false, the following lines are skipped.
 In both cases this continues until a
-.Ql Ic .else
+.Ic .else
 or
-.Ql Ic .endif
+.Ic .endif
 is found.
 .Pp
 For loops are typically used to apply a set of rules to a list of files.
---------------------
PatchSet 307
Date: 2002/12/30 21:18:11
Author: schweikh
Log:
Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/
Add FreeBSD Id tag where missing.

Members: 
	suff.c:1.27->1.28 

Index: suff.c
===================================================================
RCS file: /usr/home/okumoto/Work/make/fbsd-cvs/src/usr.bin/make/suff.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- suff.c	23 Oct 2002 23:16:43 -0000	1.27
+++ suff.c	30 Dec 2002 21:18:11 -0000	1.28
@@ -1031,7 +1031,7 @@
  *	Free all src structures in list that don't have a reference count
  *
  * Results:
- *	Ture if an src was removed
+ *	True if a src was removed
  *
  * Side Effects:
  *	The memory is free'd.




More information about the Submit mailing list