]> andersk Git - moira.git/blobdiff - gen/hesiod.qc
Used /bin/sh format instead of /bin/csh format, by accident.
[moira.git] / gen / hesiod.qc
index 77b5387ca8ac058013cb31d093529be1aae01b90..c56630aede5da6cf725b4b3384a6fbfa006a7747 100644 (file)
 
 #include <mit-copyright.h>
 #include <stdio.h>
-#include <sms.h>
-#include <sms_app.h>
+#include <moira.h>
+#include <moira_site.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <ctype.h>
 
 
+#ifdef ATHENA
+#define HTYPE "UNSPECA"
+#else
+#define HTYPE "TXT"
+#endif
+
 char hesiod_dir[64];
 
 #define min(x,y)       ((x) < (y) ? (x) : (y))
@@ -28,7 +34,7 @@ char *whoami = "hesiod.gen";
 
 struct grp {
     struct grp *next;
-    int id;
+    char *lid;
 };
 struct user {
     char name[9];
@@ -49,7 +55,7 @@ char **argv;
 
     if (argc > 2) {
        fprintf(stderr, "usage: %s [outfile]\n", argv[0]);
-       exit(SMS_ARGS);
+       exit(MR_ARGS);
     }
 
     IIseterr(ingerr);
@@ -73,17 +79,17 @@ char **argv;
     if (!changed) {
        fprintf(stderr, "No files updated.\n");
        if (argc == 2 && stat(argv[1], &sb) == 0)
-         exit(SMS_NO_CHANGE);
+         exit(MR_NO_CHANGE);
     }
 
     if (argc == 2) {
        fprintf(stderr, "Building tar file.\n");
        sprintf(cmd, "cd %s; tar cf %s .", hesiod_dir, argv[1]);
        if (system(cmd))
-         exit(SMS_TAR_FAIL);
+         exit(MR_TAR_FAIL);
     }
 
-    exit(SMS_SUCCESS);
+    exit(MR_SUCCESS);
 }
 
 
@@ -101,12 +107,12 @@ static int ingerr(num)
 
     switch (*num) {
     case INGRES_DEADLOCK:
-       ingres_errno = SMS_DEADLOCK;
+       ingres_errno = MR_DEADLOCK;
        break;
     default:
-       ingres_errno = SMS_INGRES_ERR;
+       ingres_errno = MR_INGRES_ERR;
     }
-    com_err(whoami, SMS_INGRES_ERR, " code %d\n", *num);
+    com_err(whoami, MR_INGRES_ERR, " code %d\n", *num);
     critical_alert("DCM", "Hesiod build encountered INGRES ERROR %d", *num);
     exit(ingres_errno);
 }
@@ -161,19 +167,19 @@ do_passwd()
     pout = fopen(poutft, "w");
     if (!pout) {
        perror("cannot open passwd.db~ for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
     sprintf(uoutft, "%s~", uoutf);
     uout = fopen(uoutft, "w");
     if (!uout) {
        perror("cannot open uid.db~ for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
     sprintf(boutft, "%s~", boutf);
     bout = fopen(boutft, "w");
     if (!bout) {
        perror("cannot open pobox.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
 
     fprintf(stderr, "Building passwd.db, uid.db, and pobox.db\n");
@@ -197,18 +203,18 @@ do_passwd()
            strcpy(u->name, login);
            u->lists = NULL;
            hash_store(users, id, u);
-           fprintf(pout, "%s.passwd\tHS UNSPECA \"%s:*:%d:101:%s,%s,%s,%s,%s:/mit/%s:%s\"\n",
-                   login, login, uid, fullname, nn, oa, op, hp, login, shell);
+           fprintf(pout, "%s.passwd\tHS %s \"%s:*:%d:101:%s,%s,%s,%s,%s:/mit/%s:%s\"\n",
+                   login, HTYPE, login, uid, fullname, nn, oa, op, hp, login, shell);
            fprintf(uout, "%d.uid\tHS CNAME %s.passwd\n", uid, login);
            if (ptype[0] == 'P' && (mach = hash_lookup(machines, pid))) {
-               fprintf(bout, "%s.pobox\tHS UNSPECA \"POP %s %s\"\n",
-                       login, mach, login);
+               fprintf(bout, "%s.pobox\tHS %s \"POP %s %s\"\n",
+                       login, HTYPE, mach, login);
            }
 ##  }
 
     if (fclose(pout) || fclose(uout) || fclose(bout)) {
        fprintf(stderr, "Unsuccessful file close of passwd.db, uid.db, or pobox.db\n");
-       exit(SMS_CCONFIG);
+       exit(MR_CCONFIG);
     }
     fix_file(poutf);
     fix_file(uoutf);
@@ -254,19 +260,19 @@ do_groups()
     iout = fopen(buf, "w");
     if (!iout) {
        perror("cannot open gid.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
     sprintf(buf, "%s~", goutf);
     gout = fopen(buf, "w");
     if (!gout) {
        perror("cannot open group.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
     sprintf(buf, "%s~", loutf);
     lout = fopen(buf, "w");
     if (!lout) {
        perror("cannot open grplist.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
 
     fprintf(stderr, "Building gid.db, group.db, and grplist.db\n");
@@ -288,8 +294,8 @@ do_groups()
            sprintf(buf, "%s:%d", name, gid);
            hash_store(groups, lid, strsave(buf));
            fprintf(iout, "%d.gid\tHS CNAME %s.group\n", gid, name);
-           fprintf(gout, "%s.group\tHS UNSPECA \"%s:*:%d:\"\n",
-                   name, name, gid);
+           fprintf(gout, "%s.group\tHS %s \"%s:*:%d:\"\n",
+                   name, HTYPE, name, gid);
 ##  }
 
     fflush(iout);
@@ -309,12 +315,12 @@ do_groups()
 
 ##  repeat retrieve (lid = m.list_id, id = m.member_id)
 ##     where m.member_type = "USER" {
-      if ((hash_lookup(groups, lid) != NULL) &&
+      if (((l = hash_lookup(groups, lid)) != NULL) &&
          (u = (struct user *) hash_lookup(users, id))) {
          g = (struct grp *) malloc(sizeof(struct grp));
          g->next = u->lists;
          u->lists = g;
-         g->id = lid;
+         g->lid = l;
       }
 ##  }
 ##  end transaction
@@ -323,21 +329,20 @@ do_groups()
        for (b = *p; b; b = b->next) {
            if ((g = ((struct user *)b->data)->lists) == NULL)
              continue;
-           fprintf(lout, "%s.grplist\tHS UNSPECA \"",
-                   ((struct user *)b->data)->name);
-           for (; g; g = g->next)
-             if (l = hash_lookup(groups, g->id)) {
-                 fputs(l, lout);
-                 if (g->next)
-                   putc(':', lout);
-             }
+           fprintf(lout, "%s.grplist\tHS %s \"",
+                   ((struct user *)b->data)->name, HTYPE);
+           for (; g; g = g->next) {
+               fputs(g->lid, lout);
+               if (g->next)
+                 putc(':', lout);
+           }
            fputs("\"\n", lout);
        }
     }
 
     if (fclose(iout) || fclose(gout) || fclose(lout)) {
        fprintf(stderr, "Unsuccessful close of gid.db, group.db, or grplist.db\n");
-       exit(SMS_CCONFIG);
+       exit(MR_CCONFIG);
     }
     fix_file(ioutf);
     fix_file(goutf);
@@ -382,7 +387,7 @@ do_filsys()
     out = fopen(outft, "w");
     if (!out) {
        perror("cannot open filsys.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
 
     fprintf(stderr, "Building filsys.db\n");
@@ -403,17 +408,17 @@ do_filsys()
                          *p++ = *mach;
                    }
                    *p = 0;
-                   fprintf(out, "%s.filsys\tHS UNSPECA \"%s %s %s %s %s\"\n",
-                           strtrim(name), type, strtrim(loc), machbuf,
+                   fprintf(out, "%s.filsys\tHS %s \"%s %s %s %s %s\"\n",
+                           strtrim(name), HTYPE, type, strtrim(loc), machbuf,
                            strtrim(access), strtrim(mount));
                }
            } else if (!strcmp(type, "AFS")) {
-               fprintf(out, "%s.filsys\tHS UNSPECA \"AFS %s %s %s\"\n",
-                       strtrim(name), strtrim(loc), strtrim(access),
+               fprintf(out, "%s.filsys\tHS %s \"AFS %s %s %s\"\n",
+                       strtrim(name), HTYPE, strtrim(loc), strtrim(access),
                        strtrim(mount));
            } else if (!strcmp(type, "ERR")) {
-               fprintf(out, "%s.filsys\tHS UNSPECA \"ERR %s\"\n",
-                       name, strtrim(comments));
+               fprintf(out, "%s.filsys\tHS %s \"ERR %s\"\n",
+                       name, HTYPE, strtrim(comments));
            } else if (!strcmp(type, "FSGROUP")) {
                sprintf(trans, "%s:%d", strtrim(name), fid);
                sq_save_data(sq, strsave(trans));
@@ -439,16 +444,17 @@ do_filsys()
                          *p++ = *mach;
                    }
                    *p = 0;
-                   fprintf(out, "%s.filsys\tHS UNSPECA \"%s %s %s %s %s\"\n",
-                           group, type, strtrim(loc), machbuf,
+                   fprintf(out, "%s.filsys\tHS %s \"%s %s %s %s %s\"\n",
+                           group, HTYPE, type, strtrim(loc), machbuf,
                            strtrim(access), strtrim(mount));
                }
            } else if (!strcmp(type, "AFS")) {
-               fprintf(out, "%s.filsys\tHS UNSPECA \"AFS %s %s %s\"\n",
-                       group, strtrim(loc), strtrim(access), strtrim(mount));
+               fprintf(out, "%s.filsys\tHS %s \"AFS %s %s %s\"\n",
+                       group, HTYPE, strtrim(loc), strtrim(access),
+                       strtrim(mount));
            } else if (!strcmp(type, "ERR")) {
-               fprintf(out, "%s.filsys\tHS UNSPECA \"ERR %s\"\n",
-                       group, strtrim(comments));
+               fprintf(out, "%s.filsys\tHS %s \"ERR %s\"\n",
+                       group, HTYPE, strtrim(comments));
            }
 ##     }
        free(group);
@@ -463,7 +469,7 @@ do_filsys()
 
     if (fclose(out)) {
        fprintf(stderr, "Unsuccessful close of filsys.db\n");
-       exit(SMS_CCONFIG);
+       exit(MR_CCONFIG);
     }
     fix_file(outf);
     return(1);
@@ -535,7 +541,7 @@ do_cluster()
     out = fopen(outft, "w");
     if (!out) {
        perror("cannot open cluster.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
 
     fprintf(stderr, "Building cluster.db\n");
@@ -575,8 +581,8 @@ do_cluster()
                      strtrim(label);
                      strtrim(data);
                      fprintf(out,
-                             "smsinternal-%d.cluster\tHS UNSPECA \"%s %s\"\n",
-                             mid, label, data);
+                             "mrinternal-%d.cluster\tHS %s \"%s %s\"\n",
+                             mid, HTYPE, label, data);
 ##               }
                }
            }
@@ -596,7 +602,7 @@ do_cluster()
              fprintf(out, "%s.cluster\tHS CNAME %s.cluster\n",
                      machbuf, name);
            else
-             fprintf(out, "%s.cluster\tHS CNAME smsinternal-%d.cluster\n",
+             fprintf(out, "%s.cluster\tHS CNAME mrinternal-%d.cluster\n",
                      machbuf, mid);
        }
        for (id = mid + 1; id < maxmach; id++) {
@@ -612,7 +618,7 @@ do_cluster()
                              machbuf, name);
                    else
                      fprintf(out,
-                             "%s.cluster\tHS CNAME smsinternal-%d.cluster\n",
+                             "%s.cluster\tHS CNAME mrinternal-%d.cluster\n",
                              machbuf, mid);
                }
            }
@@ -626,15 +632,15 @@ do_cluster()
            strtrim(name);
            strtrim(label);
            strtrim(data);
-           fprintf(out, "%s.cluster\tHS UNSPECA \"%s %s\"\n",
-                   name, label, data);
+           fprintf(out, "%s.cluster\tHS %s \"%s %s\"\n",
+                   name, HTYPE, label, data);
 ##  }
 ##  end transaction
     free(machs);
 
     if (fclose(out)) {
        fprintf(stderr, "Unsuccessful close of cluster.db\n");
-       exit(SMS_CCONFIG);
+       exit(MR_CCONFIG);
     }
     fix_file(outf);
     return(1);
@@ -647,8 +653,8 @@ do_printcap()
     char outf[64], outft[64];
     struct stat sb;
     time_t ftime;
-##  char name[17], rp[17], sd[33], rm[33], *filetime;
-##  int flag;
+##  char name[17], rp[17], sd[33], rm[33], rq[33], *filetime;
+##  int flag, ka, pc;
 
     sprintf(outf, "%s/printcap.db", hesiod_dir);
 
@@ -667,25 +673,32 @@ do_printcap()
     out = fopen(outft, "w");
     if (!out) {
        perror("cannot open printcap.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
 
     fprintf(stderr, "Building printcap.db\n");
 
 ##  range of p is printcap
-##  retrieve (name = p.#name, rp = p.#rp, sd = p.dir, rm = machine.#name)
-##    where machine.mach_id = p.mach_id {
+##  range of m is machine
+##  retrieve (name = p.#name, rp = p.#rp, sd = p.dir, rm = machine.#name,
+##           ka = p.auth, pc = p.price, rq = m.#name)
+##    where machine.mach_id = p.mach_id and m.mach_id = p.quotaserver {
        strtrim(name);
        strtrim(rp);
        strtrim(sd);
        strtrim(rm);
-       fprintf(out, "%s.pcap\tHS UNSPECA \"%s:rp=%s:rm=%s:sd=%s\"\n",
-               name, name, rp, rm, sd);
+       strtrim(rq);
+       fprintf(out, "%s.pcap\tHS %s \"%s:rp=%s:rm=%s:sd=%s:ka#%d:pc#%d",
+               name, HTYPE, name, rp, rm, sd, ka, pc);
+       if (strcmp(rq, "[NONE]"))
+         fprintf(out, ":rq=%s\"\n", rq);
+       else
+         fputs("\"\n", out);
 ##  }
 
     if (fclose(out)) {
        fprintf(stderr, "Unsuccessful close of pcap.db\n");
-       exit(SMS_CCONFIG);
+       exit(MR_CCONFIG);
     }
     fix_file(outf);
     return(1);
@@ -720,7 +733,7 @@ do_palladium()
     out = fopen(outft, "w");
     if (!out) {
        perror("cannot open palladium.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
 
     fprintf(stderr, "Building palladium.db\n");
@@ -731,19 +744,19 @@ do_palladium()
        strtrim(name);
        strtrim(rm);
        fprintf(out,
-               "%s.palladium\tHS UNSPECA \"%s %d %s interface directory\"\n",
-               name, rm, ident, name);
+               "%s.palladium\tHS %s \"%s %d %s interface directory\"\n",
+               name, HTYPE, rm, ident, name);
 ##  }
 ##  range of a is alias
 ##  retrieve (name = a.#name, trans = a.#trans) where a.#type = "PALLADIUM" {
        strtrim(name);
        strtrim(trans);
-       fprintf(out, "%s.palladium\tHS UNSPECA \"%s\"\n", name, trans);
+       fprintf(out, "%s.palladium\tHS %s \"%s\"\n", name, HTYPE, trans);
 ##  }
 
     if (fclose(out)) {
        fprintf(stderr, "Unsuccessful close of palladium.db\n");
-       exit(SMS_CCONFIG);
+       exit(MR_CCONFIG);
     }
     fix_file(outf);
     return(1);
@@ -778,7 +791,7 @@ do_sloc()
     out = fopen(outft, "w");
     if (!out) {
        perror("cannot open sloc.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
 
     fprintf(stderr, "Building sloc.db\n");
@@ -789,12 +802,12 @@ do_sloc()
 ##     sort by #service {
            strtrim(service);
            if (mach = hash_lookup(machines, id))
-             fprintf(out, "%s.sloc\tHS UNSPECA %s\n", service, mach);
+             fprintf(out, "%s.sloc\tHS %s %s\n", service, HTYPE, mach);
 ##  }
 
     if (fclose(out)) {
        fprintf(stderr, "Unsuccessful close of sloc.db\n");
-       exit(SMS_CCONFIG);
+       exit(MR_CCONFIG);
     }
 
     fix_file(outf);
@@ -827,7 +840,7 @@ do_service()
     out = fopen(outft, "w");
     if (!out) {
        perror("cannot open service.db for write");
-       exit(SMS_OCONFIG);
+       exit(MR_OCONFIG);
     }
 
     fprintf(stderr, "Building service.db\n");
@@ -837,8 +850,8 @@ do_service()
 ##           port = s.#port) {
        strtrim(service);
        strtrim(protocol);
-       fprintf(out, "%s.service\tHS UNSPECA \"%s %s %d\"\n",
-               service, service, protocol, port);
+       fprintf(out, "%s.service\tHS %s \"%s %s %d\"\n",
+               service, HTYPE, service, protocol, port);
 ##  }
 
 ##  range of a is alias
@@ -850,7 +863,7 @@ do_service()
 
     if (fclose(out)) {
        fprintf(stderr, "Unsuccessful close of service.db\n");
-       exit(SMS_CCONFIG);
+       exit(MR_CCONFIG);
     }
     fix_file(outf);
     return(1);
This page took 0.063875 seconds and 4 git commands to generate.