]> andersk Git - moira.git/blobdiff - gen/nfs.pc
Command line printer manipulation client, and build goo.
[moira.git] / gen / nfs.pc
index 2eaed2084e835d725f7abba2b166461ca59dae48..877a2622123098ad84a616633ec0499c414d80f3 100644 (file)
@@ -135,21 +135,6 @@ int do_lists(struct save_queue *lists)
   EXEC SQL END DECLARE SECTION;
 
   sprintf(file, "%s/list-", nfs_dir);
-#if 0
-  if (stat(file, &sb) == 0)
-    {
-      if ((ModDiff (&flag1, "users", sb.st_mtime)) ||
-         (ModDiff (&flag2, "list", sb.st_mtime)) ||
-         (ModDiff (&flag3, "imembers", sb.st_mtime)) ||
-         (ModDiff (&flag4, "serverhosts", sb.st_mtime)))
-       exit(MR_DATE);
-      if (flag1 < 0 && flag2 < 0 && flag3 < 0 && flag4 < 0)
-       {
-         fprintf(stderr, "The lists do not need to be rebuilt.\n");
-         return 0;
-       }
-    }
-#endif
 
   /* build the list of everyone, and store it in a file whose name
    * corresponds to the empty list.
@@ -218,6 +203,7 @@ struct user {
 
 void do_everyone(void)
 {
+  const buflen = MAXPATHLEN;
   char buf[MAXPATHLEN], *l;
   struct user *u;
   struct grp *g;
@@ -244,7 +230,7 @@ void do_everyone(void)
   EXEC SQL DECLARE l_cursor CURSOR FOR
     SELECT gid, list_id
     FROM list
-    WHERE grouplist != 0 AND active != 0
+    WHERE nfsgroup != 0 AND grouplist != 0 AND active != 0
     ORDER BY list_id;
   EXEC SQL OPEN l_cursor;
   while (1)
@@ -304,9 +290,18 @@ void do_everyone(void)
       for (b = *p; b; b = b->next)
        {
          u = (struct user *)b->data;
-         sprintf(buf, "%s:%d", u->name, u->uid);
+         sprintf(buf, "%s:%d:101", u->name, u->uid);
          for (g = u->lists; g; g = g->next)
-           strcat(buf, g->lid);
+           {
+             if ((strlen(buf) + strlen(g->lid)) <= buflen)
+               strcat(buf, g->lid);
+             else
+               {
+                 com_err(whoami, 0, "truncated server-side grp list for %s",
+                         u->name);
+                 break;
+               }
+           }
          b->data = strdup(buf);
          fprintf(fd, "%s\n", buf);
        }
This page took 0.720896 seconds and 4 git commands to generate.