- size reduction of pidof
- fix typo in reverse_pidlist
This commit is contained in:
		| @@ -45,7 +45,7 @@ extern long* find_pid_by_name( const char* pidName) | |||||||
| extern long *pidlist_reverse(long *pidList) | extern long *pidlist_reverse(long *pidList) | ||||||
| { | { | ||||||
| 	int i=0; | 	int i=0; | ||||||
| 	while (pidList[i] > 0 && i++); | 	while (pidList[i] > 0 && ++i); | ||||||
| 	if ( i-- > 0) { | 	if ( i-- > 0) { | ||||||
| 		long k; | 		long k; | ||||||
| 		int j; | 		int j; | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ | |||||||
| #include <signal.h> | #include <signal.h> | ||||||
| #include <ctype.h> | #include <ctype.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  | #include <sys/types.h> | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
| #include "busybox.h" | #include "busybox.h" | ||||||
|  |  | ||||||
| @@ -29,7 +30,6 @@ | |||||||
| #if ENABLE_FEATURE_PIDOF_OMIT | #if ENABLE_FEATURE_PIDOF_OMIT | ||||||
| #define _OMIT_COMPL(a) a | #define _OMIT_COMPL(a) a | ||||||
| #define _OMIT(a) ,a | #define _OMIT(a) ,a | ||||||
| static llist_t *omits; /* list of pids to omit */ |  | ||||||
| #if ENABLE_FEATURE_PIDOF_SINGLE | #if ENABLE_FEATURE_PIDOF_SINGLE | ||||||
| #define OMIT (1<<1) | #define OMIT (1<<1) | ||||||
| #else | #else | ||||||
| @@ -39,58 +39,45 @@ static llist_t *omits; /* list of pids to omit */ | |||||||
| #define _OMIT_COMPL(a) "" | #define _OMIT_COMPL(a) "" | ||||||
| #define _OMIT(a) | #define _OMIT(a) | ||||||
| #define OMIT (0) | #define OMIT (0) | ||||||
|  | #define omitted (0) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| extern int pidof_main(int argc, char **argv) | extern int pidof_main(int argc, char **argv) | ||||||
| { | { | ||||||
| 	int n = 0; | 	unsigned n = 0; | ||||||
| 	int fail = 1; | 	unsigned fail = 1; | ||||||
| 	unsigned long int opt; | 	unsigned long int opt; | ||||||
| #if ENABLE_FEATURE_PIDOF_OMIT | #if ENABLE_FEATURE_PIDOF_OMIT | ||||||
|  | 	llist_t *omits = NULL; /* list of pids to omit */ | ||||||
| 	bb_opt_complementally = _OMIT_COMPL("o*"); | 	bb_opt_complementally = _OMIT_COMPL("o*"); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	/* do option parsing */ | 	/* do unconditional option parsing */ | ||||||
| 	if ((opt = bb_getopt_ulflags(argc, argv, | 	opt = bb_getopt_ulflags(argc, argv, | ||||||
| 					_SINGLE_COMPL("s") _OMIT_COMPL("o:") | 					_SINGLE_COMPL("s") _OMIT_COMPL("o:") | ||||||
| 					_OMIT(&omits))) | 					_OMIT(&omits)); | ||||||
| 			> 0) { |  | ||||||
| #if ENABLE_FEATURE_PIDOF_SINGLE |  | ||||||
| 		if (!(opt & SINGLE)) |  | ||||||
| #endif |  | ||||||
| #if ENABLE_FEATURE_PIDOF_OMIT |  | ||||||
| 		if (!(opt & OMIT)) |  | ||||||
| #endif |  | ||||||
| 		bb_show_usage(); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| #if ENABLE_FEATURE_PIDOF_OMIT | #if ENABLE_FEATURE_PIDOF_OMIT | ||||||
| 	/* fill omit list.  */ | 	/* fill omit list.  */ | ||||||
| 	{ | 	{ | ||||||
| 	RESERVE_CONFIG_BUFFER(getppid_str, 32); | 		RESERVE_CONFIG_BUFFER(getppid_str, 32); | ||||||
| 	llist_t * omits_p = omits; | 		llist_t * omits_p = omits; | ||||||
| 	while (omits_p) { | 		while (omits_p) { | ||||||
| 		/* are we asked to exclude the parent's process ID?  */ | 			/* are we asked to exclude the parent's process ID?  */ | ||||||
| 		if (omits_p->data[0] == '%') { |  | ||||||
| 			if (!strncmp(omits_p->data, "%PPID", 5)) { | 			if (!strncmp(omits_p->data, "%PPID", 5)) { | ||||||
| 				/* yes, exclude ppid */ | 				omits_p = llist_free_one(omits_p); | ||||||
| 				snprintf(getppid_str, sizeof(getppid_str), "%ld", getppid()); | 				snprintf(getppid_str, sizeof(getppid_str), "%d", getppid()); | ||||||
| //				omits_p->data = getppid_str; | 				omits_p = llist_add_to(omits_p, getppid_str); | ||||||
| #if 0 | #if 0 | ||||||
| 			} else { | 			} else { | ||||||
| 				bb_error_msg_and_die("illegal omit pid value (%s)!\n", | 				bb_error_msg_and_die("illegal omit pid value (%s)!\n", | ||||||
| 						omits_p->data); | 						omits_p->data); | ||||||
| #endif | #endif | ||||||
| 			} | 			} | ||||||
| 		} else { | 			omits_p = omits_p->link; | ||||||
| 		/* no, not talking about ppid but deal with usual case (pid).  */ |  | ||||||
| 			snprintf(getppid_str, sizeof(getppid_str), "%ld", |  | ||||||
| 					strtol(omits_p->data, NULL, 10)); |  | ||||||
| 		} | 		} | ||||||
| 		omits_p->data = getppid_str; | 		if (ENABLE_FEATURE_CLEAN_UP) | ||||||
| 		omits_p = omits_p->link; | 			RELEASE_CONFIG_BUFFER(getppid_str); | ||||||
| 	} |  | ||||||
| 	RELEASE_CONFIG_BUFFER(getppid_str); |  | ||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
| 	/* Looks like everything is set to go.  */ | 	/* Looks like everything is set to go.  */ | ||||||
| @@ -102,7 +89,7 @@ extern int pidof_main(int argc, char **argv) | |||||||
| 		pidList = pidlist_reverse(find_pid_by_name(argv[optind])); | 		pidList = pidlist_reverse(find_pid_by_name(argv[optind])); | ||||||
| 		for(pl = pidList; *pl > 0; pl++) { | 		for(pl = pidList; *pl > 0; pl++) { | ||||||
| #if ENABLE_FEATURE_PIDOF_OMIT | #if ENABLE_FEATURE_PIDOF_OMIT | ||||||
| 			unsigned short omitted = 0; | 			unsigned omitted = 0; | ||||||
| 			if (opt & OMIT) { | 			if (opt & OMIT) { | ||||||
| 				llist_t *omits_p = omits; | 				llist_t *omits_p = omits; | ||||||
| 				while (omits_p) | 				while (omits_p) | ||||||
| @@ -111,18 +98,19 @@ extern int pidof_main(int argc, char **argv) | |||||||
| 					} else | 					} else | ||||||
| 						omits_p = omits_p->link; | 						omits_p = omits_p->link; | ||||||
| 			} | 			} | ||||||
| 			if (!omitted) |  | ||||||
| #endif | #endif | ||||||
| 			printf("%s%ld", (n++ ? " " : ""), *pl); | 			if (!omitted) { | ||||||
| #if ENABLE_FEATURE_PIDOF_OMIT | 				if (n) { | ||||||
| 			fail = omitted; | 					putchar(' '); | ||||||
| #else | 				} else { | ||||||
| 			fail = 0; | 					n = 1; | ||||||
| #endif | 				} | ||||||
| #if ENABLE_FEATURE_PIDOF_SINGLE | 				printf("%ld", *pl); | ||||||
| 			if (opt & SINGLE) | 			} | ||||||
|  | 			fail = (!ENABLE_FEATURE_PIDOF_OMIT && omitted); | ||||||
|  |  | ||||||
|  | 			if (ENABLE_FEATURE_PIDOF_SINGLE && (opt & SINGLE)) | ||||||
| 				break; | 				break; | ||||||
| #endif |  | ||||||
| 		} | 		} | ||||||
| 		free(pidList); | 		free(pidList); | ||||||
| 		optind++; | 		optind++; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user