]> andersk Git - moira.git/blobdiff - gen/hesiod.pc
EXCHANGE changes.
[moira.git] / gen / hesiod.pc
index ec3cf1fbe53c1f4b4de19e2f80c6dfa3b80668bc..c07fa43ff1341698880d95797390a4f691735669 100644 (file)
@@ -40,7 +40,7 @@ RCSID("$Header$");
  * query.  This is 512 - overhead (~78) [derived empirically]
  * (it used to be 446 with older versions of bind)
  */
-#define MAXHESSIZE 434
+#define MAXHESSIZE 256
 
 char hesiod_dir[MAXPATHLEN];
 
@@ -176,6 +176,8 @@ int valid(char *name)
 
   for (sawdot = 1; *name; name++)
     {
+      if (*name == '$')
+       return 0;
       if (*name == '.')
        {
          if (sawdot)
@@ -201,8 +203,8 @@ int do_passwd(void)
   char login[USERS_LOGIN_SIZE], shell[USERS_SHELL_SIZE];
   char fullname[USERS_FULLNAME_SIZE], oa[USERS_OFFICE_ADDR_SIZE];
   char op[USERS_OFFICE_PHONE_SIZE], hp[USERS_HOME_PHONE_SIZE];
-  char nn[USERS_NICKNAME_SIZE];
-  int uid, id, pid, iid, mid, status;
+  char nn[USERS_NICKNAME_SIZE], potype[USERS_POTYPE_SIZE];
+  int uid, id, pid, iid, eid, mid, status;
   EXEC SQL END DECLARE SECTION;
 
   sprintf(poutf, "%s/passwd.db", hesiod_dir);
@@ -237,7 +239,8 @@ int do_passwd(void)
   users = create_hash(12001);
   EXEC SQL DECLARE u_cursor CURSOR FOR
     SELECT login, unix_uid, shell, fullname, nickname, office_addr,
-    office_phone, home_phone, users_id, pop_id, imap_id, status
+    office_phone, home_phone, users_id, potype, pop_id, imap_id, exchange_id,
+    status
     FROM users
     WHERE status = 1 OR status = 2 OR status = 5 OR status = 6
     ORDER BY users_id;
@@ -245,7 +248,7 @@ int do_passwd(void)
   while (1)
     {
       EXEC SQL FETCH u_cursor INTO :login, :uid, :shell, :fullname, :nn,
-       :oa, :op, :hp, :id, :pid, :iid, :status;
+       :oa, :op, :hp, :id, :potype, :pid, :iid, :eid, :status;
       if (sqlca.sqlcode)
        break;
       strtrim(login);
@@ -255,6 +258,7 @@ int do_passwd(void)
       dequote(op);
       dequote(hp);
       dequote(shell);
+      dequote(potype);
       u = malloc(sizeof(struct user));
       strcpy(u->name, login);
       u->lists = NULL;
@@ -267,6 +271,17 @@ int do_passwd(void)
          fprintf(uout, "%d.uid\t%s CNAME %s.passwd\n", uid, HCLASS, login);
        }
 
+      if (eid != 0)
+       {
+         /* eid will be for EXCHANGE.MIT.EDU, but we need to convert it to
+          * IMAP.EXCHANGE.MIT.EDU.
+          */
+         EXEC SQL SELECT mach_id INTO :eid FROM machine WHERE
+           name = 'IMAP.EXCHANGE.MIT.EDU';
+         if (sqlca.sqlcode == 0)
+             pid = eid;
+       }
+
       if (iid != 0)
        {
          EXEC SQL SELECT mach_id INTO :mid FROM filesys
@@ -275,7 +290,8 @@ int do_passwd(void)
            pid = mid;
        }
 
-      if (pid != 0 && (mach = hash_lookup(machines, pid)))
+      if ((strcmp(potype, "NONE") != 0) &&  pid != 0 &&
+         (mach = hash_lookup(machines, pid)))
        {
          fprintf(bout, "%s.pobox\t%s %s \"POP %s %s\"\n",
                  login, HCLASS, HTYPE, mach, login);
This page took 0.201577 seconds and 4 git commands to generate.