svn commit: trunk/busybox/libbb

vda at busybox.net vda at busybox.net
Tue Dec 4 10:20:52 UTC 2007


Author: vda
Date: 2007-12-04 02:20:48 -0800 (Tue, 04 Dec 2007)
New Revision: 20621

Log:
Make signal table a bit smaller

get_signum                                           136     151     +15
signals                                              224     192     -32



Modified:
   trunk/busybox/libbb/u_signal_names.c


Changeset:
Modified: trunk/busybox/libbb/u_signal_names.c
===================================================================
--- trunk/busybox/libbb/u_signal_names.c	2007-12-04 10:05:28 UTC (rev 20620)
+++ trunk/busybox/libbb/u_signal_names.c	2007-12-04 10:20:48 UTC (rev 20621)
@@ -11,10 +11,9 @@
 
 #define KILL_MAX_SIG 32
 
-static const char signals[KILL_MAX_SIG][7] = {
+static const char signals[KILL_MAX_SIG][6] = {
 	// SUSv3 says kill must support these, and specifies the numerical values,
 	// http://www.opengroup.org/onlinepubs/009695399/utilities/kill.html
-	// TODO: "[SIG]EXIT" shouldn't work for kill, right?
 	// {0, "EXIT"}, {1, "HUP"}, {2, "INT"}, {3, "QUIT"},
 	// {6, "ABRT"}, {9, "KILL"}, {14, "ALRM"}, {15, "TERM"}
 	// And Posix adds the following:
@@ -25,6 +24,8 @@
 
 /* Believe it or not, but some arches have more than 32 SIGs!
  * HPPA: SIGSTKFLT == 36. We don't include those. */
+
+/* NB: longest (6-char) names are NOT nul-terminated */
 	[0] = "EXIT",
 #if defined SIGHUP && SIGHUP < KILL_MAX_SIG
 	[SIGHUP   ] = "HUP",
@@ -132,8 +133,10 @@
 		return i;
 	if (strncasecmp(name, "SIG", 3) == 0)
 		name += 3;
+	if (strlen(name) > 6)
+		return -1;
 	for (i = 0; i < ARRAY_SIZE(signals); i++)
-		if (strcasecmp(name, signals[i]) == 0)
+		if (strncasecmp(name, signals[i], 6) == 0)
 			return i;
 
 #if ENABLE_DESKTOP && (defined(SIGIOT) || defined(SIGIO))




More information about the busybox-cvs mailing list