chiark / gitweb /
serialmgr: Copy from woking.cam.xci-test.com
[sympathy.git] / src / lockfile.c
index 94cee444e8cc21ea483e156e177aa0f98667c997..569e02f0d865faeb06dac2c595271539f475f317 100644 (file)
@@ -1,15 +1,37 @@
-/*
+/* 
  * lockfile.c:
  *
- * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
+ * Copyright (c) 2008 James McKenzie <sympathy@madingley.org>,
  * All rights reserved.
  *
  */
 
-static char rcsid[] = "$Id$";
+static char rcsid[] =
+  "$Id: lockfile.c,v 1.17 2010/07/16 11:04:10 james Exp $";
 
-/*
- * $Log$
+/* 
+ * $Log: lockfile.c,v $
+ * Revision 1.17  2010/07/16 11:04:10  james
+ * ignore tedious return values
+ *
+ * Revision 1.16  2008/05/09 12:56:11  james
+ * *** empty log message ***
+ *
+ * Revision 1.15  2008/03/07 14:13:40  james
+ * *** empty log message ***
+ *
+ * Revision 1.14  2008/03/07 13:16:02  james
+ * *** empty log message ***
+ *
+ * Revision 1.13  2008/03/07 12:37:04  james
+ * *** empty log message ***
+ *
+ * Revision 1.12  2008/03/03 06:04:42  james
+ * *** empty log message ***
+ *
+ * Revision 1.11  2008/03/02 10:38:18  james
+ * *** empty log message ***
+ *
  * Revision 1.10  2008/03/02 10:37:56  james
  * *** empty log message ***
  *
@@ -64,10 +86,12 @@ static char rcsid[] = "$Id$";
 
 #include "lockfile.h"
 
+extern void *xmalloc (size_t);
+
 Filelist *
 filelist_new (void)
 {
-  Filelist *fl = (Filelist *) malloc (sizeof (Filelist));
+  Filelist *fl = (Filelist *) xmalloc (sizeof (Filelist));
 
   fl->head = NULL;
 
@@ -105,7 +129,7 @@ filelist_add (Filelist * fl, char *fn)
     if (!strcmp (fle->name, fn))
       return;
 
-  fle = malloc (sizeof (Filelist_ent));
+  fle = xmalloc (sizeof (Filelist_ent));
 
   strcpy (fle->name, fn);
 
@@ -182,13 +206,18 @@ lockfile_make (char *name)
     return -1;
   }
 
-  write (fd, buf, i);
+  int result;
+  result = write (fd, buf, i);
   fchmod (fd, 044);
+#if 0
   if (chown_uucp (fd)) {
     close (fd);
     unlink (tmpfn);
     return -1;
   }
+#else
+  chown_uucp (fd);
+#endif
 
   close (fd);
 
@@ -332,13 +361,15 @@ lockfile_make_list (char *device)
 
   ret = filelist_new ();
 
-  lockfile_add_name_from_dev (ret, dev_stat.st_rdev);
+  if (ret) {
+    lockfile_add_name_from_dev (ret, dev_stat.st_rdev);
 
-  lockfile_add_name_from_path (ret, device);
+    lockfile_add_name_from_path (ret, device);
 
-  lockfile_check_dir_for_dev (ret, "/dev/", dev_stat.st_rdev);
-  lockfile_check_dir_for_dev (ret, "/dev/usb/", dev_stat.st_rdev);
-  lockfile_check_dir_for_dev (ret, "/dev/tts/", dev_stat.st_rdev);
+    lockfile_check_dir_for_dev (ret, "/dev/", dev_stat.st_rdev);
+    lockfile_check_dir_for_dev (ret, "/dev/usb/", dev_stat.st_rdev);
+    lockfile_check_dir_for_dev (ret, "/dev/tts/", dev_stat.st_rdev);
+  }
 
   return ret;
 }
@@ -410,15 +441,17 @@ lockfile_lock (Filelist * fl)
 
   ret = filelist_new ();
 
-  lockfile_remove_stale (fl);
+  if (ret) {
+    lockfile_remove_stale (fl);
 
-  for (fle = fl->head; fle; fle = fle->next) {
-    if (lockfile_make (fle->name)) {
-      fprintf (stderr, "Failed to get lockfile %s\n", fle->name);
-      filelist_free (ret);
-      return NULL;
+    for (fle = fl->head; fle; fle = fle->next) {
+      if (lockfile_make (fle->name)) {
+        fprintf (stderr, "Failed to get lockfile %s\n", fle->name);
+        filelist_free (ret);
+        return NULL;
+      }
+      filelist_add (ret, fle->name);
     }
-    filelist_add (ret, fle->name);
   }
 
   return ret;
@@ -495,7 +528,7 @@ serial_lock_new (char *dev, int mode)
   if (!fl)
     return NULL;
 
-  l = (Serial_lock *) malloc (sizeof (Serial_lock));
+  l = (Serial_lock *) xmalloc (sizeof (Serial_lock));
 
   l->mode = mode;
   l->locks_to_check = fl;