usr.bin/make Changes to lying const code

Max Okumoto okumoto at ucsd.edu
Mon Dec 13 13:41:24 PST 2004


Can people look over this patch to fix code that was
modifying const strings?
			Max
Index: var_modify.c
===================================================================
RCS file: /cvs/src/usr.bin/make/var_modify.c,v
retrieving revision 1.4
diff -u -r1.4 var_modify.c
--- var_modify.c	10 Dec 2004 20:34:01 -0000	1.4
+++ var_modify.c	13 Dec 2004 21:36:02 -0000
@@ -73,10 +73,7 @@
 	if (addSpace) {
 	    Buf_AddByte(buf, (Byte)' ');
 	}
-	*slash = '\0';
-	Buf_AddBytes(buf, strlen(word), (Byte *)word);
-	*slash = '/';
-	return (TRUE);
+	Buf_AddBytes(buf, slash - word, (Byte *)word);
     } else {
 	/*
 	 * If no directory part, give . (q.v. the POSIX standard)
@@ -108,7 +105,7 @@
 Boolean
 VarTail(const char *word, Boolean addSpace, Buffer buf, void *dummy __unused)
 {
-    char *slash;
+    const char *slash;
 
     if (addSpace) {
 	Buf_AddByte(buf, (Byte)' ');
@@ -116,9 +113,8 @@
 
     slash = strrchr(word, '/');
     if (slash != NULL) {
-	*slash++ = '\0';
+	slash++;
 	Buf_AddBytes(buf, strlen(slash), (Byte *)slash);
-	slash[-1] = '/';
     } else {
 	Buf_AddBytes(buf, strlen(word), (Byte *)word);
     }
@@ -142,16 +138,15 @@
 Boolean
 VarSuffix(const char *word, Boolean addSpace, Buffer buf, void *dummy __unused)
 {
-    char *dot;
+    const char *dot;
 
     dot = strrchr(word, '.');
     if (dot != NULL) {
 	if (addSpace) {
 	    Buf_AddByte(buf, (Byte)' ');
 	}
-	*dot++ = '\0';
+	dot++;
 	Buf_AddBytes(buf, strlen(dot), (Byte *)dot);
-	dot[-1] = '.';
 	addSpace = TRUE;
     }
     return (addSpace);
@@ -183,9 +178,7 @@
 
     dot = strrchr(word, '.');
     if (dot != NULL) {
-	*dot = '\0';
-	Buf_AddBytes(buf, strlen(word), (Byte *)word);
-	*dot = '.';
+	Buf_AddBytes(buf, dot - word, (Byte *)word);
     } else {
 	Buf_AddBytes(buf, strlen(word),(Byte *)word);
     }
@@ -218,7 +211,7 @@
 	    Buf_AddByte(buf, (Byte)' ');
 	}
 	addSpace = TRUE;
-	Buf_AddBytes(buf, strlen(word), (Byte *)word);
+	Buf_AddBytes(buf, strlen(word), word);
     }
     return (addSpace);
 }




More information about the Submit mailing list