+++ /dev/null
-/* $Header$
- */
-
-#include <stdio.h>
-#include <strings.h>
-#include <ctype.h>
-#include <sys/time.h>
-#include <moira.h>
-#include <moira_site.h>
-
-
-##define WHO 11859 /* root */
-##define PROG "emp-tape"
-
-#define MAX_ID_VALUE 32766
-#define MIN_ID_VALUE 101
-
-/* File format is:
-
-0-8 id number
-9-38 name
-39-62 office address
-63-74 phone1
-75-86 phone2
-87-106 dept
-107-156 title
-157-186 username
-187-241 host
-
-*/
-
-#define LOC_ID 0
-#define LOC_NAME 9
-#define LOC_OFFICE 39
-#define LOC_PHONE 63
-#define LOC_PHONE2 75
-#define LOC_DEPT 87
-#define LOC_TITLE 107
-#define LOC_USERNAME 157
-#define LOC_HOST 187
-
-#define LEN_ID 9
-#define LEN_NAME 30
-#define LEN_OFFICE 24
-#define LEN_PHONE 12
-#define LEN_PHONE2 12
-#define LEN_DEPT 20
-#define LEN_TITLE 50
-#define LEN_USERNAME 30
-#define LEN_HOST 55
-
-
-struct entry {
- char *name;
- char *last;
- char *first;
- char *middle;
- char *title;
- char *class;
- char *id;
- char *eid;
- char *dept;
- char *address;
- char *phone;
- char *phone2;
- char *email;
-};
-
-
-char *whoami;
-int newfinger = 0;
-int addxuser = 0;
-
-
-main(argc, argv)
-int argc;
-char **argv;
-##{
- FILE *in;
- struct entry *e, *get_next_entry();
- int i, wait = 0;
- char buf[BUFSIZ], *file = NULL;
-
- whoami = rindex(argv[0], '/');
- if (whoami)
- whoami++;
- else
- whoami = argv[0];
-
- for (i = 1; i < argc; i++) {
- if (!strcmp(argv[i], "-w"))
- wait++;
- else if (!strcmp(argv[i], "-D"))
- setenv("ING_SET", "set printqry");
- else if (!strcmp(argv[i], "-n"))
- newfinger++;
- else if (!strcmp(argv[i], "-u"))
- addxuser++;
- else if (file != NULL)
- fprintf(stderr, "Usage: %s [-w] [-D] [-n] [-u] inputfile\n", whoami);
- else
- file = argv[i];
- }
-
- in = fopen(file, "r");
- if (in == NULL) {
- fprintf(stderr, "Unable to open %s for input\n", file);
- exit(1);
- }
-
-## ingres sms
-## range of u is users
-
- while (e = get_next_entry(in)) {
- process_entry(e);
- if (wait) {
- printf("Next");
- fflush(stdout);
- gets(buf);
- }
- }
-
-## exit
- exit(0);
-##}
-
-
-char *substr(buf, key)
-char *buf;
-char *key;
-{
- int l;
-
- for (l = strlen(key); *buf; buf++)
- if (!strncmp(buf, key, l))
- return(buf);
- return(NULL);
-}
-
-
-struct entry *get_next_entry(in)
-FILE *in;
-{
- static struct entry e;
- static char buf[BUFSIZ], mid[16], eid[16], email[256];
- static char name[LEN_NAME+1], sname[LEN_NAME+1], id[LEN_ID+1];
- static char office[LEN_OFFICE+1], phone[LEN_PHONE+1], phone2[LEN_PHONE2+1];
- static char dept[LEN_DEPT+1], title[LEN_TITLE+1], username[LEN_USERNAME+1];
- static char host[LEN_HOST+1];
- int ends_sr, ends_jr, ends_iii, ends_iv;
- char *p;
-
- if (fgets(buf, sizeof(buf), in) == NULL)
- return((struct entry *)NULL);
-
- strncpy(id, &buf[LOC_ID], LEN_ID); id[LEN_ID] = 0;
- strncpy(name, &buf[LOC_NAME], LEN_NAME); name[LEN_NAME] = 0;
- strncpy(office, &buf[LOC_OFFICE], LEN_OFFICE); office[LEN_OFFICE] = 0;
- strncpy(phone, &buf[LOC_PHONE], LEN_PHONE); phone[LEN_PHONE] = 0;
- strncpy(phone2, &buf[LOC_PHONE2], LEN_PHONE2); phone2[LEN_PHONE2] = 0;
- strncpy(dept, &buf[LOC_DEPT], LEN_DEPT); dept[LEN_DEPT] = 0;
- strncpy(title, &buf[LOC_TITLE], LEN_TITLE); title[LEN_TITLE] = 0;
- strncpy(username, &buf[LOC_USERNAME], LEN_USERNAME); username[LEN_USERNAME] = 0;
- strncpy(host, &buf[LOC_HOST], LEN_HOST); host[LEN_HOST] = 0;
-
- strcpy(sname, name);
- e.name = strtrim(sname);
- p = index(name, ',');
- if (p)
- *p = 0;
- e.last = strtrim(name);
- if (p) {
- p++;
- while (isspace(*p))
- p++;
- e.first = p;
- if (p = index(e.first, ' ')) {
- *p = 0;
- e.first = strtrim(e.first);
- e.middle = strtrim(p + 1);
- } else {
- e.first = strtrim(e.first);
- e.middle = "";
- }
- } else {
- e.first = "";
- e.middle = "";
- }
- ends_sr = ends_jr = ends_iii = ends_iv = 0;
- LookForSt(e.last);
- LookForO(e.last);
- LookForJrAndIII(e.last, &ends_sr, &ends_jr, &ends_iii, &ends_iv);
- LookForJrAndIII(e.first, &ends_sr, &ends_jr, &ends_iii, &ends_iv);
- FixCase(e.last);
- FixCase(e.first);
- FixCase(e.middle);
-
- e.id = id;
- e.eid = eid;
- EncryptID(e.eid, e.id, e.first, e.last);
-
- e.address = strtrim(office);
- e.phone = strtrim(phone);
- e.phone2 = strtrim(phone2);
- e.dept = strtrim(dept);
- e.title = strtrim(title);
-
- e.class = "MITS";
- if (!strcmp(e.dept, "PROJECT ATHENA"))
- e.class = "STAFF";
- else if (substr(e.title, "PROF") || substr(e.title, "LECTURE"))
- e.class = "FACULTY";
- else if (!strcmp(e.title, "VISITING SCIENTIST"))
- e.class = "VSCIENTI";
-
- strcpy(email, strtrim(username));
- if (host[0] == '@')
- strncat(email, strtrim(host));
- e.email = email;
-
- return(&e);
-}
-
-
-process_entry(e)
-struct entry *e;
-##{
- int changed, nochange;
- char buf[BUFSIZ], *from, *to;
-## char *first, *last, *eid, *sid, *name, *title, *phone2;
-## char class[9], oaddr[25], ophone[17], dept[128];
-## int id, status;
-
- first = e->first;
- if (strlen(first) > 16)
- first[16] = 0;
- last = e->last;
- if (strlen(last) > 16)
- last[16] = 0;
- eid = e->eid;
- id = 0;
-## repeat retrieve (id = u.users_id, class = u.mit_year, oaddr = u.office_addr,
-## ophone = u.office_phone, dept = u.mit_dept, status = u.#status)
-## where u.#last = @last and u.#first = @first and u.mit_id = @eid
- if (id == 0) {
- com_err(whoami, 0, "New user found: %s %s\n", first, last);
- return;
- }
- eid = e->id;
-## repeat replace u (mit_id=@eid) where u.users_id = @id
- sid = e->id;
- name = e->name;
- strcpy(dept, e->dept);
- title = e->title;
- strcpy(oaddr, e->address);
- phone2 = e->phone2;
-## repeat replace u (xname = @name, xdept = @dept, xtitle = @title,
-## xaddress = @oaddr, xphone1 = @ophone, xphone2 = @phone2,
-## xmodtime = "now")
-## where u.users_id = @id
-##}
-