]> andersk Git - moira.git/blobdiff - gen/hosts.pc
Include gid.
[moira.git] / gen / hosts.pc
index 6b24dff577c6ff447d58c9483ac283f100e6435e..62174d17f1dfb0e848f1b1a2de2fc43c7519b8cc 100644 (file)
@@ -33,10 +33,8 @@ int main(int argc, char **argv)
 {
   FILE *out = stdout;
   char *outf = NULL, outft[MAXPATHLEN], *p;
-  char buf[MACHINE_NAME_SIZE + ALIAS_NAME_SIZE];
-  struct stat sb;
   struct timeval now;
-  int flag1, flag2, i;
+  int i;
   struct hash *aliases;
   EXEC SQL BEGIN DECLARE SECTION;
   int id;
@@ -49,18 +47,6 @@ int main(int argc, char **argv)
 
   if (argc == 2)
     {
-      if (stat(argv[1], &sb) == 0)
-       {
-         if (ModDiff(&flag1, "machine", sb.st_mtime) ||
-             ModDiff(&flag2, "subnet", sb.st_mtime))
-           exit(MR_DATE);
-         if (flag1 < 0 && flag2 < 0)
-           {
-             fprintf(stderr, "File %s does not need to be rebuilt.\n",
-                     argv[1]);
-             exit(MR_NO_CHANGE);
-           }
-       }
       outf = argv[1];
       sprintf(outft, "%s~", outf);
       if (!(out = fopen(outft, "w")))
@@ -110,9 +96,9 @@ int main(int argc, char **argv)
        name[i - 8] = 0;
       if ((p = hash_lookup(aliases, id)))
        {
-         sprintf(buf, "%s,%s", p, name);
-         hash_update(aliases, id, strdup(buf));
-         free(p);
+         p = realloc(p, strlen(p) + strlen(name) + 2);
+         sprintf(strchr(p, '\0'), ",%s", name);
+         hash_update(aliases, id, p);
        }
       else
        hash_store(aliases, id, strdup(name));
@@ -120,15 +106,14 @@ int main(int argc, char **argv)
 
   EXEC SQL DECLARE x CURSOR FOR SELECT
     name, mach_id, vendor, model, os, address
-    FROM machine WHERE status = 1 ORDER BY address;
+    FROM machine WHERE status = 1 AND mach_id > 0
+    ORDER BY address;
   EXEC SQL OPEN x;
   while (1)
     {
       EXEC SQL FETCH x INTO :name, :id, :vendor, :model, :os, :addr;
       if (sqlca.sqlcode)
        break;
-      if (id == 0)
-       continue;
       if (!*strtrim(name))
        continue;
       if ((i = strlen(name)) < 9 || !strchr(name, '.') ||
@@ -145,20 +130,18 @@ int main(int argc, char **argv)
       strtrim(addr);
       if (*addr == 0 || inet_addr(addr) == -1)
        continue;
+      fprintf(out, "HOST : %s : %s", addr, name);
       if ((p = hash_lookup(aliases, id)))
-       sprintf(buf, "%s,%s", name, p);
-      else
-       strcpy(buf, name);
-      fprintf(out, "HOST : %s : %s : ", addr, buf);
+       fprintf(out, ",%s", p);
       if ((*vendor || *model) && *os)
        {
          if (*vendor && *model)
-           fprintf(out, "%s/%s : %s :\n", vendor, model, os);
+           fprintf(out, " : %s/%s : %s :\n", vendor, model, os);
          else
-           fprintf(out, "%s%s : %s :\n", vendor, model, os);
+           fprintf(out, " : %s%s : %s :\n", vendor, model, os);
        }
       else
-       fputs("\n", out);
+       fputs(" : \n", out);
     }
 
   EXEC SQL CLOSE x;
This page took 0.035447 seconds and 4 git commands to generate.