usr.bin/make fix code were we lie about const.

Max Okumoto okumoto at ucsd.edu
Wed Dec 1 16:11:52 PST 2004


Instead of modifying a const string parameter, we just calculate
the length of the string instead of null terminating and using strlen().
				Max
--- var_modify.c.orig	Sat Nov 27 06:08:10 2004
+++ var_modify.c	Sat Nov 27 06:11:39 2004
@@ -70,9 +70,7 @@
 	if (addSpace) {
 	    Buf_AddByte (buf, (Byte)' ');
 	}
-	*slash = '\0';
-	Buf_AddBytes (buf, strlen (word), (Byte *)word);
-	*slash = '/';
+	Buf_AddBytes (buf, slash - word, (Byte *)word);
 	return (TRUE);
     } else {
 	/*
@@ -105,7 +103,7 @@
 Boolean
 VarTail (const char *word, Boolean addSpace, Buffer buf, void *dummy __unused)
 {
-    char *slash;
+    const char *slash;
 
     if (addSpace) {
 	Buf_AddByte (buf, (Byte)' ');
@@ -113,9 +111,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);
     }
@@ -139,16 +136,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);
@@ -180,9 +176,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);
     }
@@ -214,7 +208,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