Log stdin when no message given and use getopt.
This commit is contained in:
parent
28b3c53f0d
commit
1944f547bd
@ -586,7 +586,7 @@ const char loadkmap_usage[] =
|
||||
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"
|
||||
|
55
logger.c
55
logger.c
@ -101,68 +101,47 @@ extern int logger_main(int argc, char **argv)
|
||||
{
|
||||
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));
|
||||
|
@ -101,68 +101,47 @@ extern int logger_main(int argc, char **argv)
|
||||
{
|
||||
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));
|
||||
|
2
usage.c
2
usage.c
@ -586,7 +586,7 @@ const char loadkmap_usage[] =
|
||||
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"
|
||||
|
Loading…
Reference in New Issue
Block a user