chiark / gitweb /
debian/control: Add missing build-dependency on flex. Fixes FTBFS. Report from Aurel...
[userv.git] / overlord.c
index 3ba4114008d041db558a90196c4ecc2369edec57..756c5ab67c9d4379340c5fda6b6779518432c2f4 100644 (file)
@@ -2,11 +2,12 @@
  * userv - overlord.c
  * daemon main program, collects request and forks handlers
  *
- * Copyright (C)1996-1997,1999 Ian Jackson
+ * userv is copyright Ian Jackson and other contributors.
+ * See README for full authorship information.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
@@ -15,8 +16,7 @@
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with userv; if not, write to the Free Software
- * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with userv; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <unistd.h>
@@ -68,7 +68,7 @@ static void checkstalepipes(void) {
   if (time(&now) == -1) { syslog(LOG_ERR,"get current time: %m"); return; }
   dir= opendir(".");
   if (!dir) { syslog(LOG_ERR,"open directory " VARDIR ": %m"); return; }
-  while ((de= readdir(dir))) {
+  while ((errno=0, de= readdir(dir))) {
     if (fnmatch(PIPEPATTERN,de->d_name,FNM_PATHNAME|FNM_PERIOD)) continue;
     r= lstat(de->d_name,&stab); if (r && errno==ENOENT) continue;
     if (r) { syslog(LOG_ERR,"could not stat `" VARDIR "/%s': %m",de->d_name); continue; }
@@ -77,12 +77,13 @@ static void checkstalepipes(void) {
     if (unlink(de->d_name) && errno!=ENOENT)
       syslog(LOG_ERR,"could not remove stale pipe `%s': %m",de->d_name);
   }
+  if (errno) syslog(LOG_ERR,"read directory " VARDIR ": %m");
   if (closedir(dir)) syslog(LOG_ERR,"close directory " VARDIR ": %m");
 }
 
 static void sighandler_chld(int x) {
   pid_t r;
-  int status, es, ar;
+  int status, es;
 
   es= errno;
   for (;;) {
@@ -246,7 +247,8 @@ static void NONRETURNING docheck(int needwanted) {
   r= write(sfd,&request_mbuf,sizeof(request_mbuf));
   if (r==sizeof(request_mbuf)) {
     endmagic= REQUEST_END_MAGIC;
-    write(sfd,&endmagic,sizeof(endmagic));
+    r= write(sfd,&endmagic,sizeof(endmagic));
+    (void)r;
   }
   syslog(LOG_NOTICE,"uservd[%ld] is running",(long)overlordpid);
 #endif
@@ -262,7 +264,8 @@ static void NONRETURNING startupsyscallerr(const char *what) {
 }
 
 int main(int argc, char *const *argv) {
-  int mfd, sfd, nfd, csocklen, e, r, becomedaemon;
+  int mfd, sfd, nfd, e, r, becomedaemon;
+  socklen_t csocklen;
   struct sigaction sigact;
   struct sockaddr_un ssockname, csockname;
   pid_t child, parentpid, sid;