[BusyBox] logger

Matt Kraai kraai at alumni.carnegiemellon.edu
Tue Jan 2 17:31:49 UTC 2001


On Tue, Jan 02, 2001 at 11:14:30AM -0600, David Douthitt wrote:
> According to the logger man page I see (part of the RPM
> util-linux-2.9o-13, from Red Hat 6.0, Linux 2.2.5), the usage
> 
> # cat file | logger
> 
> is standard, and the use of the "-" parameter is not.
> 
> Perhaps busybox logger should be changed?

OK, attached is a patch to do that (and simplify a lot of code in
the process).  OK to commit?

Matt
-------------- next part --------------
Index: logger.c
===================================================================
RCS file: /var/cvs/busybox/logger.c,v
retrieving revision 1.23
diff -u -r1.23 logger.c
--- logger.c	2000/12/11 20:29:13	1.23
+++ logger.c	2001/01/02 17:27:25
@@ -101,68 +101,47 @@
 {
 	int pri = LOG_USER | LOG_NOTICE;
 	int option = 0;
-	int fromStdinFlag = FALSE;
-	int stopLookingAtMeLikeThat = FALSE;
+	int c, i, len, opt;
 	char *message=NULL, buf[1024], name[128];
 
-	/* Fill out the name string early (may be overwritten later */
+	/* Fill out the name string early (may be overwritten later) */
 	my_getpwuid(name, geteuid());
 
 	/* Parse any options */
-	while (--argc > 0 && **(++argv) == '-') {
-		if (*((*argv) + 1) == '\0') {
-			fromStdinFlag = TRUE;
-		}
-		stopLookingAtMeLikeThat = FALSE;
-		while (*(++(*argv)) && stopLookingAtMeLikeThat == FALSE) {
-			switch (**argv) {
+	while ((opt = getopt(argc, argv, "p:st:")) > 0) {
+		switch (opt) {
 			case 's':
 				option |= LOG_PERROR;
 				break;
 			case 'p':
-				if (--argc == 0) {
-					usage(logger_usage);
-				}
-				pri = pencode(*(++argv));
-				stopLookingAtMeLikeThat = TRUE;
+				pri = pencode(optarg);
 				break;
 			case 't':
-				if (--argc == 0) {
-					usage(logger_usage);
-				}
-				strncpy(name, *(++argv), sizeof(name));
-				stopLookingAtMeLikeThat = TRUE;
+				strncpy(name, optarg, sizeof(name));
 				break;
 			default:
 				usage(logger_usage);
-			}
 		}
 	}
 
-	if (fromStdinFlag == TRUE) {
+	if (optind == argc) {
 		/* read from stdin */
-		int c;
-		unsigned int i = 0;
-
+		i = 0;
 		while ((c = getc(stdin)) != EOF && i < sizeof(buf)) {
 			buf[i++] = c;
 		}
 		message = buf;
 	} else {
-		if (argc >= 1) {
-			int len = 1; /* for the '\0' */
-			message=xcalloc(1, 1);
-			for (; *argv != NULL; argv++) {
-				len += strlen(*argv);
-				len += 1;  /* for the space between the args */
-				message = xrealloc(message, len);
-				strcat(message, *argv);
-				strcat(message, " ");
-			}
-			message[strlen(message)-1] = '\0';
-		} else {
-			error_msg_and_die("No message\n");
+		len = 1; /* for the '\0' */
+		message=xcalloc(1, 1);
+		for (i = optind; i < argc; i++) {
+			len += strlen(argv[i]);
+			len += 1;  /* for the space between the args */
+			message = xrealloc(message, len);
+			strcat(message, argv[i]);
+			strcat(message, " ");
 		}
+		message[strlen(message)-1] = '\0';
 	}
 
 	openlog(name, option, (pri | LOG_FACMASK));
Index: usage.c
===================================================================
RCS file: /var/cvs/busybox/usage.c,v
retrieving revision 1.42
diff -u -r1.42 usage.c
--- usage.c	2000/12/18 21:38:57	1.42
+++ usage.c	2001/01/02 17:29:37
@@ -586,7 +586,7 @@
 const char logger_usage[] =
 	"logger [OPTION]... [MESSAGE]\n"
 #ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nWrite MESSAGE to the system log.  If MESSAGE is '-', log stdin.\n\n"
+	"\nWrite MESSAGE to the system log.  If MESSAGE is omitted, log stdin.\n\n"
 	"Options:\n"
 	"\t-s\tLog to stderr as well as the system log.\n"
 	"\t-t\tLog using the specified tag (defaults to user name).\n"


More information about the busybox mailing list