summaryrefslogtreecommitdiff
path: root/sysklogd/syslogd.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysklogd/syslogd.c')
-rw-r--r--sysklogd/syslogd.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 8827265..228d0a1 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -226,18 +226,20 @@ static void doSyslogd (void)
}
else {
#define BUFSIZE 1024 + 1
- char buf[BUFSIZE];
+ char buf;
char *q, *p;
int n_read;
char line[BUFSIZE];
unsigned char c;
+ int pri;
- /* Keep reading stuff till there is nothing else to read */
- while( (n_read = read (fd, buf, BUFSIZE)) > 0 && errno != EOF) {
- int pri = (LOG_USER | LOG_NOTICE);
+ /* Get set to read in a line */
+ memset (line, 0, sizeof(line));
+ pri = (LOG_USER | LOG_NOTICE);
- memset (line, 0, sizeof(line));
- p = buf;
+ /* Keep reading stuff till there is nothing else to read */
+ while( (n_read = read (fd, &buf, 1)) > 0) {
+ p = &buf;
q = line;
while (p && (c = *p) && q < &line[sizeof(line) - 1]) {
if (c == '<') {
@@ -262,6 +264,7 @@ static void doSyslogd (void)
/* Now log it */
logMessage(pri, line);
+ break;
}
close (fd);
FD_CLR (fd, &readfds);