Updates
 -Erik
diff --git a/syslogd.c b/syslogd.c
index 8827265..228d0a1 100644
--- a/syslogd.c
+++ b/syslogd.c
@@ -226,18 +226,20 @@
 				}
 				else {
 #define			  BUFSIZE 1024 + 1
-					char buf[BUFSIZE];
+					char buf;
 					char *q, *p;
 					int n_read;
 					char line[BUFSIZE];
 					unsigned char c;
+					int pri;
+
+					/* Get set to read in a line */
+					memset (line, 0, sizeof(line));
+					pri = (LOG_USER | LOG_NOTICE);
 
 					/* 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);
-
-						memset (line, 0, sizeof(line));
-						p = buf;
+					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 @@
 
 						/* Now log it */
 						logMessage(pri, line);
+						break;
 					}
 					close (fd);
 					FD_CLR (fd, &readfds);