summaryrefslogtreecommitdiffhomepage
path: root/sysklogd
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2002-11-10 21:33:28 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2002-11-10 21:33:28 +0000
commit907a240b1c4bbc65f9010f5b2fd31157f9d083c3 (patch)
tree88af504fae635390309cb999382c781c4f46ed0e /sysklogd
parent5a7ec22c493a02106d892effeef78e65a4e6b4a0 (diff)
last_patch57 from Vladimir N. Oleynik
Diffstat (limited to 'sysklogd')
-rw-r--r--sysklogd/logger.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/sysklogd/logger.c b/sysklogd/logger.c
index 4aa15101a..bb63975e7 100644
--- a/sysklogd/logger.c
+++ b/sysklogd/logger.c
@@ -105,8 +105,8 @@ extern int logger_main(int argc, char **argv)
{
int pri = LOG_USER | LOG_NOTICE;
int option = 0;
- int c, i, len, opt;
- char *message=NULL, buf[1024], name[128];
+ int c, i, opt;
+ char buf[1024], name[128];
/* Fill out the name string early (may be overwritten later) */
my_getpwuid(name, geteuid());
@@ -143,16 +143,21 @@ extern int logger_main(int argc, char **argv)
}
} while (c != EOF);
} else {
- 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 */
+ char *message = NULL;
+ int len = argc - optind; /* for the space between the args
+ and '\0' */
+ opt = len;
+ argv += optind;
+ for (i = 0; i < opt; i++) {
+ len += strlen(*argv);
message = xrealloc(message, len);
- strcat(message, argv[i]);
+ if(!i)
+ message[0] = 0;
+ else
strcat(message, " ");
+ strcat(message, *argv);
+ argv++;
}
- message[strlen(message) - 2] = '\0';
syslog(pri, "%s", message);
}