X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/f8a82951cd3ee34fedd666738c250721e932c296..67805159a972397342c342ee735c8acd640e1399:/gen/hesiod.qc diff --git a/gen/hesiod.qc b/gen/hesiod.qc index 7b582690..c56630ae 100644 --- a/gen/hesiod.qc +++ b/gen/hesiod.qc @@ -11,8 +11,8 @@ #include #include -#include -#include +#include +#include #include #include #include @@ -34,7 +34,7 @@ char *whoami = "hesiod.gen"; struct grp { struct grp *next; - int id; + char *lid; }; struct user { char name[9]; @@ -55,7 +55,7 @@ char **argv; if (argc > 2) { fprintf(stderr, "usage: %s [outfile]\n", argv[0]); - exit(SMS_ARGS); + exit(MR_ARGS); } IIseterr(ingerr); @@ -79,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); } @@ -107,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); } @@ -167,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"); @@ -214,7 +214,7 @@ do_passwd() 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); @@ -260,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"); @@ -315,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 @@ -331,19 +331,18 @@ do_groups() continue; fprintf(lout, "%s.grplist\tHS %s \"", ((struct user *)b->data)->name, HTYPE); - for (; g; g = g->next) - if (l = hash_lookup(groups, g->id)) { - fputs(l, lout); - if (g->next) - putc(':', lout); - } + 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); @@ -388,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"); @@ -470,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); @@ -542,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"); @@ -582,7 +581,7 @@ do_cluster() strtrim(label); strtrim(data); fprintf(out, - "smsinternal-%d.cluster\tHS %s \"%s %s\"\n", + "mrinternal-%d.cluster\tHS %s \"%s %s\"\n", mid, HTYPE, label, data); ## } } @@ -603,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++) { @@ -619,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); } } @@ -641,7 +640,7 @@ do_cluster() if (fclose(out)) { fprintf(stderr, "Unsuccessful close of cluster.db\n"); - exit(SMS_CCONFIG); + exit(MR_CCONFIG); } fix_file(outf); return(1); @@ -654,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); @@ -674,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 %s \"%s:rp=%s:rm=%s:sd=%s\"\n", - name, HTYPE, 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); @@ -727,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"); @@ -750,7 +756,7 @@ do_palladium() if (fclose(out)) { fprintf(stderr, "Unsuccessful close of palladium.db\n"); - exit(SMS_CCONFIG); + exit(MR_CCONFIG); } fix_file(outf); return(1); @@ -785,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"); @@ -801,7 +807,7 @@ do_sloc() if (fclose(out)) { fprintf(stderr, "Unsuccessful close of sloc.db\n"); - exit(SMS_CCONFIG); + exit(MR_CCONFIG); } fix_file(outf); @@ -834,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"); @@ -857,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);