@@ -113,9 +113,11 @@ main(int argc, char *argv[])
113113 case 's' : logflags |= LOG_PERROR ; break ;
114114 case 't' : tag = optarg ; break ;
115115 default :
116- fprintf (stderr , "usage: vlogger [-isS] [-f file] [-p pri] [-t tag]\n" );
116+ fprintf (stderr , "usage: vlogger [-isS] [-f file] [-p pri] [-t tag] [message ...] \n" );
117117 exit (1 );
118118 }
119+ argc -= optind ;
120+ argv += optind ;
119121
120122 if (!Sflag && access ("/etc/vlogger" , X_OK ) != -1 ) {
121123 CODE * cp ;
@@ -135,6 +137,35 @@ main(int argc, char *argv[])
135137
136138 openlog (tag , logflags , facility );
137139
140+ if (argc > 0 ) {
141+ size_t len ;
142+ char * p , * e ;
143+ p = buf ;
144+ * p = '\0' ;
145+ e = buf + sizeof buf - 2 ;
146+ for (; * argv ;) {
147+ len = strlen (* argv );
148+ if (p + len > e && p > buf ) {
149+ syslog (level |facility , "%s" , buf );
150+ p = buf ;
151+ * p = '\0' ;
152+ }
153+ if (len > sizeof buf - 1 ) {
154+ syslog (level |facility , "%s" , * argv ++ );
155+ } else {
156+ if (p != buf ) {
157+ * p ++ = ' ' ;
158+ * p = '\0' ;
159+ }
160+ strncat (p , * argv ++ , e - p );
161+ p += len ;
162+ }
163+ }
164+ if (p != buf )
165+ syslog (level |facility , "%s" , buf );
166+ return 0 ;
167+ }
168+
138169 while (fgets (buf , sizeof buf , stdin ) != NULL )
139170 syslog (level |facility , "%s" , buf );
140171
0 commit comments