]> andersk Git - moira.git/blobdiff - db/match.qc
Initial revision
[moira.git] / db / match.qc
diff --git a/db/match.qc b/db/match.qc
new file mode 100644 (file)
index 0000000..6580171
--- /dev/null
@@ -0,0 +1,79 @@
+/*  (c) Copyright 1988 by the Massachusetts Institute of Technology. */
+/*  For copying and distribution information, please see the file */
+/*  <mit-copyright.h>. */
+
+#include <mit-copyright.h>
+#include <stdio.h>
+
+char *malloc(), *strsave();
+
+struct np {
+    struct np *next; /* this must be the first field */
+    int        id;
+    char *dir;
+};
+struct np **nfsphys = NULL;
+
+int match_phys(mach, directory)
+int mach;
+char *directory;
+{
+    struct np *p, *n;
+
+    if (nfsphys == NULL)
+##    {
+##     int id, maxmach, mid;
+##     char dir[65];
+
+       printf("Building NFSphys table\n");
+##     range of n is nfsphys
+##     retrieve (maxmach = max(machine.mach_id))
+       maxmach++;
+       nfsphys = (struct np **) malloc(maxmach * sizeof(struct np *));
+       bzero(nfsphys, maxmach * sizeof(struct np *));
+##     retrieve (id = n.nfsphys_id, mid = n.mach_id, dir = n.#dir)
+##             sort by #dir:d {
+           n = (struct np *) malloc(sizeof(struct np));
+           n->next = NULL;
+           n->id = id;
+           n->dir = strsave(strtrim(dir));
+           p = (struct np *)&nfsphys[mid];
+           while (p->next)
+             p = p->next;
+           p->next = n;
+##     }
+##    }
+
+    if ((n = nfsphys[mach]) == NULL)
+      return(0);
+    while (n) {
+       if (!strncmp(directory, n->dir, strlen(n->dir)))
+         return(n->id);
+       n = n->next;
+    }
+    return(0);
+}
+
+
+##int match_filsys(mach, device, user)
+##int mach;
+##char *device;
+##int user;
+##{
+##  int mid, fid;
+##  char dev[33];
+
+##  repeat retrieve (fid = f.filsys_id, mid = f.mach_id, dev = n.#device)
+##     where f.label = u.login and n.nfsphys_id = f.phys_id and
+##             u.users_id = @user
+    if (mid == mach && !strcmp(device, strtrim(dev)))
+      return(fid);
+    fid = 0;
+##  repeat retrieve unique (fid = f.filsys_id) where f.mach_id = @mach and
+##     f.name = @device
+    if (fid == 0) {
+##     repeat retrieve unique (fid = f.filsys_id) where f.mach_id = @mach and
+##             f.phys_id = n.nfsphys_id and n.#device = @device
+    }
+    return(fid);
+##}
This page took 0.033821 seconds and 4 git commands to generate.