svn commit: trunk/busybox: include init libbb procps

vda at busybox.net vda at busybox.net
Wed Nov 1 09:16:50 UTC 2006


Author: vda
Date: 2006-11-01 01:16:49 -0800 (Wed, 01 Nov 2006)
New Revision: 16485

Log:
PID should be stored in pid_t, not int or long.
find_pid_by_name() was returning 0 or -1 in last array element,
but -1 was never checked. We can use just 0 intead.


Modified:
   trunk/busybox/include/libbb.h
   trunk/busybox/init/halt.c
   trunk/busybox/libbb/find_pid_by_name.c
   trunk/busybox/libbb/procps.c
   trunk/busybox/procps/kill.c
   trunk/busybox/procps/pidof.c
   trunk/busybox/procps/ps.c
   trunk/busybox/procps/top.c


Changeset:
Modified: trunk/busybox/include/libbb.h
===================================================================
--- trunk/busybox/include/libbb.h	2006-11-01 09:14:52 UTC (rev 16484)
+++ trunk/busybox/include/libbb.h	2006-11-01 09:16:49 UTC (rev 16485)
@@ -501,11 +501,10 @@
 #endif
 #endif
 typedef struct {
-	int pid;
+	pid_t pid, ppid;
 	char user[9];
 	char state[4];
 	unsigned long rss;
-	int ppid;
 #ifdef CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
 	unsigned pcpu;
 	unsigned pscpu;
@@ -518,8 +517,8 @@
 	char short_cmd[COMM_LEN];
 } procps_status_t;
 procps_status_t* procps_scan(int save_user_arg0);
-long *find_pid_by_name( const char* pidName);
-long *pidlist_reverse(long *pidList);
+pid_t *find_pid_by_name(const char* procName);
+pid_t *pidlist_reverse(pid_t *pidList);
 
 
 extern const char bb_uuenc_tbl_base64[];

Modified: trunk/busybox/init/halt.c
===================================================================
--- trunk/busybox/init/halt.c	2006-11-01 09:14:52 UTC (rev 16484)
+++ trunk/busybox/init/halt.c	2006-11-01 09:16:49 UTC (rev 16485)
@@ -25,29 +25,34 @@
 #endif
 RB_AUTOBOOT
 	};
-	static const int signals[] = {SIGUSR1, SIGUSR2, SIGTERM};
+	static const int signals[] = { SIGUSR1, SIGUSR2, SIGTERM };
 
-	char *delay = "hpr";
+	char *delay;
 	int which, flags, rc = 1;
 
 	/* Figure out which applet we're running */
-	for(which=0;delay[which]!=*applet_name;which++);
+	for (which = 0; "hpr"[which] != *applet_name; which++);
 
 	/* Parse and handle arguments */
 	flags = getopt32(argc, argv, "d:nf", &delay);
-	if (flags&1) sleep(xatou(delay));
-	if (!(flags&2)) sync();
+	if (flags & 1) sleep(xatou(delay));
+	if (!(flags & 2)) sync();
 
 	/* Perform action. */
 	if (ENABLE_INIT && !(flags & 4)) {
 		if (ENABLE_FEATURE_INITRD) {
-			long *pidlist=find_pid_by_name("linuxrc");
-			if (*pidlist>0) rc = kill(*pidlist,signals[which]);
-			if (ENABLE_FEATURE_CLEAN_UP) free(pidlist);
+			pid_t *pidlist = find_pid_by_name("linuxrc");
+			if (pidlist[0] > 0)
+				rc = kill(pidlist[0], signals[which]);
+			if (ENABLE_FEATURE_CLEAN_UP)
+				free(pidlist);
 		}
-		if (rc) rc = kill(1,signals[which]);
-	} else rc = reboot(magic[which]);
+		if (rc)
+			rc = kill(1, signals[which]);
+	} else
+		rc = reboot(magic[which]);
 
-	if (rc) bb_error_msg("no");
+	if (rc)
+		bb_error_msg("no");
 	return rc;
 }

Modified: trunk/busybox/libbb/find_pid_by_name.c
===================================================================
--- trunk/busybox/libbb/find_pid_by_name.c	2006-11-01 09:14:52 UTC (rev 16484)
+++ trunk/busybox/libbb/find_pid_by_name.c	2006-11-01 09:16:49 UTC (rev 16485)
@@ -7,10 +7,6 @@
  * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
  */
 
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
 #include "libbb.h"
 
 /* find_pid_by_name()
@@ -23,30 +19,31 @@
  *  Returns a list of all matching PIDs
  *  It is the caller's duty to free the returned pidlist.
  */
-long* find_pid_by_name(const char* pidName)
+pid_t* find_pid_by_name(const char* procName)
 {
-	long* pidList;
+	pid_t* pidList;
 	int i = 0;
 	procps_status_t* p;
 
-	pidList = xmalloc(sizeof(long));
+	pidList = xmalloc(sizeof(*pidList));
 	while ((p = procps_scan(0)) != 0) {
-		if (strncmp(p->short_cmd, pidName, COMM_LEN-1) == 0) {
-			pidList = xrealloc( pidList, sizeof(long) * (i+2));
+		if (strncmp(p->short_cmd, procName, COMM_LEN-1) == 0) {
+			pidList = xrealloc(pidList, sizeof(*pidList) * (i+2));
 			pidList[i++] = p->pid;
 		}
 	}
 
-	pidList[i] = i==0 ? -1 : 0;
+	pidList[i] = 0;
 	return pidList;
 }
 
-long *pidlist_reverse(long *pidList)
+pid_t *pidlist_reverse(pid_t *pidList)
 {
 	int i = 0;
-	while (pidList[i] > 0 && ++i);
-	if (i-- > 0) {
-		long k;
+	while (pidList[i])
+		i++;
+	if (--i >= 0) {
+		pid_t k;
 		int j;
 		for (j = 0; i > j; i--, j++) {
 			k = pidList[i];

Modified: trunk/busybox/libbb/procps.c
===================================================================
--- trunk/busybox/libbb/procps.c	2006-11-01 09:14:52 UTC (rev 16484)
+++ trunk/busybox/libbb/procps.c	2006-11-01 09:16:49 UTC (rev 16485)
@@ -32,8 +32,9 @@
 procps_status_t * procps_scan(int save_user_arg0)
 {
 	static DIR *dir;
+	static procps_status_t ret_status;
+
 	struct dirent *entry;
-	static procps_status_t ret_status;
 	char *name;
 	int n;
 	char status[32];

Modified: trunk/busybox/procps/kill.c
===================================================================
--- trunk/busybox/procps/kill.c	2006-11-01 09:14:52 UTC (rev 16484)
+++ trunk/busybox/procps/kill.c	2006-11-01 09:16:49 UTC (rev 16485)
@@ -103,31 +103,31 @@
 	}
 
 	/* Pid or name required for kill/killall */
-	if (argc<1)
+	if (argc < 1)
 		bb_show_usage();
 
 	if (killall) {
 		/* Looks like they want to do a killall.  Do that */
 		pid = getpid();
 		while (arg) {
-			long* pidList;
+			pid_t* pidList;
 
 			pidList = find_pid_by_name(arg);
-			if (!pidList || *pidList<=0) {
+			if (*pidList == 0) {
 				errors++;
 				if (!quiet)
 					bb_error_msg("%s: no process killed", arg);
 			} else {
-				long *pl;
+				pid_t *pl;
 
-				for (pl = pidList; *pl!=0; pl++) {
-					if (*pl==pid)
+				for (pl = pidList; *pl; pl++) {
+					if (*pl == pid)
 						continue;
-					if (kill(*pl, signo)!=0) {
-						errors++;
-						if (!quiet)
-							bb_perror_msg("cannot kill pid %ld", *pl);
-					}
+					if (kill(*pl, signo) == 0)
+						continue;
+					errors++;
+					if (!quiet)
+						bb_perror_msg("cannot kill pid %u", (unsigned)*pl);
 				}
 			}
 			free(pidList);
@@ -138,12 +138,14 @@
 
 	/* Looks like they want to do a kill. Do that */
 	while (arg) {
-		if (!isdigit(arg[0]) && arg[0]!='-')
+		/* Huh?
+		if (!isdigit(arg[0]) && arg[0] != '-')
 			bb_error_msg_and_die("bad pid '%s'", arg);
+		*/
 		pid = xatou(arg);
 		/* FIXME: better overflow check? */
-		if (kill(pid, signo)!=0) {
-			bb_perror_msg("cannot kill pid %ld", (long)pid);
+		if (kill(pid, signo) != 0) {
+			bb_perror_msg("cannot kill pid %u", (unsigned)pid);
 			errors++;
 		}
 		arg = *++argv;

Modified: trunk/busybox/procps/pidof.c
===================================================================
--- trunk/busybox/procps/pidof.c	2006-11-01 09:14:52 UTC (rev 16484)
+++ trunk/busybox/procps/pidof.c	2006-11-01 09:16:49 UTC (rev 16485)
@@ -18,19 +18,19 @@
 #endif
 
 #if ENABLE_FEATURE_PIDOF_OMIT
-#define _OMIT_COMPL(a) a
-#define _OMIT(a) ,a
-#if ENABLE_FEATURE_PIDOF_SINGLE
-#define OMIT (1<<1)
+# define _OMIT_COMPL(a) a
+# define _OMIT(a) ,a
+# if ENABLE_FEATURE_PIDOF_SINGLE
+#  define OMIT (1<<1)
+# else
+#  define OMIT (1<<0)
+# endif
 #else
-#define OMIT (1<<0)
+# define _OMIT_COMPL(a) ""
+# define _OMIT(a)
+# define OMIT (0)
+# define omitted (0)
 #endif
-#else
-#define _OMIT_COMPL(a) ""
-#define _OMIT(a)
-#define OMIT (0)
-#define omitted (0)
-#endif
 
 int pidof_main(int argc, char **argv)
 {
@@ -65,21 +65,23 @@
 #endif
 	/* Looks like everything is set to go.  */
 	while (optind < argc) {
-		long *pidList;
-		long *pl;
+		pid_t *pidList;
+		pid_t *pl;
 
 		/* reverse the pidlist like GNU pidof does.  */
 		pidList = pidlist_reverse(find_pid_by_name(argv[optind]));
-		for (pl = pidList; *pl > 0; pl++) {
+		for (pl = pidList; *pl; pl++) {
 #if ENABLE_FEATURE_PIDOF_OMIT
 			unsigned omitted = 0;
 			if (opt & OMIT) {
 				llist_t *omits_p = omits;
-				while (omits_p)
+				while (omits_p) {
 					if (xatoul(omits_p->data) == *pl) {
-						omitted = 1; break;
+						omitted = 1;
+						break;
 					} else
 						omits_p = omits_p->link;
+				}
 			}
 #endif
 			if (!omitted) {
@@ -88,7 +90,7 @@
 				} else {
 					n = 1;
 				}
-				printf("%ld", *pl);
+				printf("%u", (unsigned)*pl);
 			}
 			fail = (!ENABLE_FEATURE_PIDOF_OMIT && omitted);
 

Modified: trunk/busybox/procps/ps.c
===================================================================
--- trunk/busybox/procps/ps.c	2006-11-01 09:14:52 UTC (rev 16484)
+++ trunk/busybox/procps/ps.c	2006-11-01 09:16:49 UTC (rev 16485)
@@ -58,7 +58,7 @@
 			len = sizeof(sbuf);
 
 			if (is_selinux_enabled()) {
-				if (getpidcon(p->pid,&sid) < 0)
+				if (getpidcon(p->pid, &sid) < 0)
 					sid = NULL;
 			}
 
@@ -71,14 +71,14 @@
 			} else {
 				safe_strncpy(sbuf, "unknown", 7);
 			}
-			len = printf("%5d %-32s %s ", p->pid, sbuf, p->state);
+			len = printf("%5u %-32s %s ", (unsigned)p->pid, sbuf, p->state);
 		}
 		else
 #endif
 			if (p->rss == 0)
-				len = printf("%5d %-8s        %s ", p->pid, p->user, p->state);
+				len = printf("%5u %-8s        %s ", (unsigned)p->pid, p->user, p->state);
 			else
-				len = printf("%5d %-8s %6ld %s ", p->pid, p->user, p->rss, p->state);
+				len = printf("%5u %-8s %6ld %s ", (unsigned)p->pid, p->user, p->rss, p->state);
 
 		i = terminal_width-len;
 

Modified: trunk/busybox/procps/top.c
===================================================================
--- trunk/busybox/procps/top.c	2006-11-01 09:14:52 UTC (rev 16484)
+++ trunk/busybox/procps/top.c	2006-11-01 09:16:49 UTC (rev 16485)
@@ -78,7 +78,7 @@
    the next. Mostly used for sorting. */
 struct save_hist {
 	int ticks;
-	int pid;
+	pid_t pid;
 };
 
 /*
@@ -119,7 +119,8 @@
 static void do_stats(void)
 {
 	procps_status_t *cur;
-	int pid, total_time, i, last_i, n;
+	pid_t pid;
+	int total_time, i, last_i, n;
 	struct save_hist *new_hist;
 
 	get_jiffy_counts();
@@ -328,9 +329,9 @@
 		else
 			sprintf(rss_str_buf, "%7ld", s->rss);
 		USE_FEATURE_TOP_CPU_USAGE_PERCENTAGE(pcpu = div((s->pcpu*pcpu_scale) >> pcpu_shift, 10);)
-		col -= printf("\n%5d %-8s %s  %s%6d%3u.%c" \
+		col -= printf("\n%5u %-8s %s  %s%6u%3u.%c" \
 				USE_FEATURE_TOP_CPU_USAGE_PERCENTAGE("%3u.%c") " ",
-				s->pid, s->user, s->state, rss_str_buf, s->ppid,
+				(unsigned)s->pid, s->user, s->state, rss_str_buf, (unsigned)s->ppid,
 				USE_FEATURE_TOP_CPU_USAGE_PERCENTAGE(pcpu.quot, '0'+pcpu.rem,)
 				pmem.quot, '0'+pmem.rem);
 		if (col > 0)




More information about the busybox-cvs mailing list