svn commit: r232007 - head/lib/libc/gen

Jilles Tjoelker jilles at FreeBSD.org
Wed Feb 22 21:47:51 UTC 2012


Author: jilles
Date: Wed Feb 22 21:47:50 2012
New Revision: 232007
URL: http://svn.freebsd.org/changeset/base/232007

Log:
  libc: Eliminate some relative relocations in fmtmsg().

Modified:
  head/lib/libc/gen/fmtmsg.c

Modified: head/lib/libc/gen/fmtmsg.c
==============================================================================
--- head/lib/libc/gen/fmtmsg.c	Wed Feb 22 21:46:15 2012	(r232006)
+++ head/lib/libc/gen/fmtmsg.c	Wed Feb 22 21:47:50 2012	(r232007)
@@ -45,10 +45,6 @@ static const char
 		*sevinfo(int);
 static int	 validmsgverb(const char *);
 
-static const char *validlist[] = {
-	"label", "severity", "text", "action", "tag", NULL
-};
-
 int
 fmtmsg(long class, const char *label, int sev, const char *text,
     const char *action, const char *tag)
@@ -205,14 +201,18 @@ sevinfo(int sev)
 static int
 validmsgverb(const char *msgverb)
 {
+	const char *validlist = "label\0severity\0text\0action\0tag\0";
 	char *msgcomp;
-	int i, equality;
+	size_t len1, len2;
+	const char *p;
+	int equality;
 
 	equality = 0;
 	while ((msgcomp = nextcomp(msgverb)) != NULL) {
 		equality--;
-		for (i = 0; validlist[i] != NULL; i++) {
-			if (strcmp(msgcomp, validlist[i]) == 0)
+		len1 = strlen(msgcomp);
+		for (p = validlist; (len2 = strlen(p)) != 0; p += len2 + 1) {
+			if (len1 == len2 && memcmp(msgcomp, p, len1) == 0)
 				equality++;
 		}
 	}


More information about the svn-src-all mailing list