mirror of
https://github.com/sheumann/hush.git
synced 2024-12-27 01:32:08 +00:00
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[] =
|
const char logger_usage[] =
|
||||||
"logger [OPTION]... [MESSAGE]\n"
|
"logger [OPTION]... [MESSAGE]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#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"
|
"Options:\n"
|
||||||
"\t-s\tLog to stderr as well as the system log.\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"
|
"\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 pri = LOG_USER | LOG_NOTICE;
|
||||||
int option = 0;
|
int option = 0;
|
||||||
int fromStdinFlag = FALSE;
|
int c, i, len, opt;
|
||||||
int stopLookingAtMeLikeThat = FALSE;
|
|
||||||
char *message=NULL, buf[1024], name[128];
|
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());
|
my_getpwuid(name, geteuid());
|
||||||
|
|
||||||
/* Parse any options */
|
/* Parse any options */
|
||||||
while (--argc > 0 && **(++argv) == '-') {
|
while ((opt = getopt(argc, argv, "p:st:")) > 0) {
|
||||||
if (*((*argv) + 1) == '\0') {
|
switch (opt) {
|
||||||
fromStdinFlag = TRUE;
|
|
||||||
}
|
|
||||||
stopLookingAtMeLikeThat = FALSE;
|
|
||||||
while (*(++(*argv)) && stopLookingAtMeLikeThat == FALSE) {
|
|
||||||
switch (**argv) {
|
|
||||||
case 's':
|
case 's':
|
||||||
option |= LOG_PERROR;
|
option |= LOG_PERROR;
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
if (--argc == 0) {
|
pri = pencode(optarg);
|
||||||
usage(logger_usage);
|
|
||||||
}
|
|
||||||
pri = pencode(*(++argv));
|
|
||||||
stopLookingAtMeLikeThat = TRUE;
|
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
if (--argc == 0) {
|
strncpy(name, optarg, sizeof(name));
|
||||||
usage(logger_usage);
|
|
||||||
}
|
|
||||||
strncpy(name, *(++argv), sizeof(name));
|
|
||||||
stopLookingAtMeLikeThat = TRUE;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
usage(logger_usage);
|
usage(logger_usage);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fromStdinFlag == TRUE) {
|
if (optind == argc) {
|
||||||
/* read from stdin */
|
/* read from stdin */
|
||||||
int c;
|
i = 0;
|
||||||
unsigned int i = 0;
|
|
||||||
|
|
||||||
while ((c = getc(stdin)) != EOF && i < sizeof(buf)) {
|
while ((c = getc(stdin)) != EOF && i < sizeof(buf)) {
|
||||||
buf[i++] = c;
|
buf[i++] = c;
|
||||||
}
|
}
|
||||||
message = buf;
|
message = buf;
|
||||||
} else {
|
} else {
|
||||||
if (argc >= 1) {
|
len = 1; /* for the '\0' */
|
||||||
int len = 1; /* for the '\0' */
|
message=xcalloc(1, 1);
|
||||||
message=xcalloc(1, 1);
|
for (i = optind; i < argc; i++) {
|
||||||
for (; *argv != NULL; argv++) {
|
len += strlen(argv[i]);
|
||||||
len += strlen(*argv);
|
len += 1; /* for the space between the args */
|
||||||
len += 1; /* for the space between the args */
|
message = xrealloc(message, len);
|
||||||
message = xrealloc(message, len);
|
strcat(message, argv[i]);
|
||||||
strcat(message, *argv);
|
strcat(message, " ");
|
||||||
strcat(message, " ");
|
|
||||||
}
|
|
||||||
message[strlen(message)-1] = '\0';
|
|
||||||
} else {
|
|
||||||
error_msg_and_die("No message\n");
|
|
||||||
}
|
}
|
||||||
|
message[strlen(message)-1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
openlog(name, option, (pri | LOG_FACMASK));
|
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 pri = LOG_USER | LOG_NOTICE;
|
||||||
int option = 0;
|
int option = 0;
|
||||||
int fromStdinFlag = FALSE;
|
int c, i, len, opt;
|
||||||
int stopLookingAtMeLikeThat = FALSE;
|
|
||||||
char *message=NULL, buf[1024], name[128];
|
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());
|
my_getpwuid(name, geteuid());
|
||||||
|
|
||||||
/* Parse any options */
|
/* Parse any options */
|
||||||
while (--argc > 0 && **(++argv) == '-') {
|
while ((opt = getopt(argc, argv, "p:st:")) > 0) {
|
||||||
if (*((*argv) + 1) == '\0') {
|
switch (opt) {
|
||||||
fromStdinFlag = TRUE;
|
|
||||||
}
|
|
||||||
stopLookingAtMeLikeThat = FALSE;
|
|
||||||
while (*(++(*argv)) && stopLookingAtMeLikeThat == FALSE) {
|
|
||||||
switch (**argv) {
|
|
||||||
case 's':
|
case 's':
|
||||||
option |= LOG_PERROR;
|
option |= LOG_PERROR;
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
if (--argc == 0) {
|
pri = pencode(optarg);
|
||||||
usage(logger_usage);
|
|
||||||
}
|
|
||||||
pri = pencode(*(++argv));
|
|
||||||
stopLookingAtMeLikeThat = TRUE;
|
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
if (--argc == 0) {
|
strncpy(name, optarg, sizeof(name));
|
||||||
usage(logger_usage);
|
|
||||||
}
|
|
||||||
strncpy(name, *(++argv), sizeof(name));
|
|
||||||
stopLookingAtMeLikeThat = TRUE;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
usage(logger_usage);
|
usage(logger_usage);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fromStdinFlag == TRUE) {
|
if (optind == argc) {
|
||||||
/* read from stdin */
|
/* read from stdin */
|
||||||
int c;
|
i = 0;
|
||||||
unsigned int i = 0;
|
|
||||||
|
|
||||||
while ((c = getc(stdin)) != EOF && i < sizeof(buf)) {
|
while ((c = getc(stdin)) != EOF && i < sizeof(buf)) {
|
||||||
buf[i++] = c;
|
buf[i++] = c;
|
||||||
}
|
}
|
||||||
message = buf;
|
message = buf;
|
||||||
} else {
|
} else {
|
||||||
if (argc >= 1) {
|
len = 1; /* for the '\0' */
|
||||||
int len = 1; /* for the '\0' */
|
message=xcalloc(1, 1);
|
||||||
message=xcalloc(1, 1);
|
for (i = optind; i < argc; i++) {
|
||||||
for (; *argv != NULL; argv++) {
|
len += strlen(argv[i]);
|
||||||
len += strlen(*argv);
|
len += 1; /* for the space between the args */
|
||||||
len += 1; /* for the space between the args */
|
message = xrealloc(message, len);
|
||||||
message = xrealloc(message, len);
|
strcat(message, argv[i]);
|
||||||
strcat(message, *argv);
|
strcat(message, " ");
|
||||||
strcat(message, " ");
|
|
||||||
}
|
|
||||||
message[strlen(message)-1] = '\0';
|
|
||||||
} else {
|
|
||||||
error_msg_and_die("No message\n");
|
|
||||||
}
|
}
|
||||||
|
message[strlen(message)-1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
openlog(name, option, (pri | LOG_FACMASK));
|
openlog(name, option, (pri | LOG_FACMASK));
|
||||||
|
2
usage.c
2
usage.c
@ -586,7 +586,7 @@ const char loadkmap_usage[] =
|
|||||||
const char logger_usage[] =
|
const char logger_usage[] =
|
||||||
"logger [OPTION]... [MESSAGE]\n"
|
"logger [OPTION]... [MESSAGE]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#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"
|
"Options:\n"
|
||||||
"\t-s\tLog to stderr as well as the system log.\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"
|
"\t-t\tLog using the specified tag (defaults to user name).\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user