]> andersk Git - moira.git/commitdiff
check that imap poboxes exist, and are of type IMAP. Do nfsphys checks
authordanw <danw>
Tue, 11 Jan 2000 18:04:28 +0000 (18:04 +0000)
committerdanw <danw>
Tue, 11 Jan 2000 18:04:28 +0000 (18:04 +0000)
on IMAP filesystems.

dbck/phase1.pc
dbck/phase2.pc

index 026020ef8e3fa1d3bdbfbb3e94846bbfb21c3c97..38a16a5f5b66f4edbf4262da35057de100ea35be 100644 (file)
@@ -348,7 +348,7 @@ void phase1(void)
 
   EXEC SQL DECLARE csr102 CURSOR FOR
     SELECT users_id, login, last, first, status, potype, pop_id, box_id,
-    modby, fmodby, pmodby, comments, sigwho FROM users
+    imap_id, modby, fmodby, pmodby, comments, sigwho FROM users
     ORDER BY users_id;
   EXEC SQL OPEN csr102;
   while (1)
@@ -357,13 +357,13 @@ void phase1(void)
       char login[USERS_LOGIN_SIZE], nbuf[USERS_FIRST_SIZE + USERS_LAST_SIZE];
       char last[USERS_LAST_SIZE], first[USERS_FIRST_SIZE];
       char potype[USERS_POTYPE_SIZE];
-      int users_id, status, pop_id, box_id, modby, fmodby, pmodby;
+      int users_id, status, pop_id, box_id, imap_id, modby, fmodby, pmodby;
       int comments, sigwho;
       EXEC SQL END DECLARE SECTION;
 
       EXEC SQL FETCH csr102 INTO :users_id, :login, :last, :first,
-       :status, :potype, :pop_id, :box_id, :modby, :fmodby, :pmodby,
-       :comments, :sigwho;
+       :status, :potype, :pop_id, :box_id, :imap_id, :modby, :fmodby,
+       :pmodby, :comments, :sigwho;
       if (sqlca.sqlcode)
        break;
 
@@ -390,6 +390,9 @@ void phase1(void)
          /*  If potype is SMTP, box_id is a string_id for the strings tbl */
          u->pobox_id = box_id;
          break;
+       case 'I':
+         u->pobox_id = imap_id;
+         break;
        default:
          u->pobox_id = 0;
        }
index da78b03c94c5479944216e0be185d74683c1dd2e..89982100b2a18a6dbda05334d03bc1a556519812 100644 (file)
@@ -530,6 +530,8 @@ int maybe_fixup_modby2(char *table, char *field, char *rowid, int id)
 
 void pobox_check(int id, struct user *u)
 {
+  struct filesys *fs;
+
   switch (u->potype)
     {
     case 'P':
@@ -544,6 +546,7 @@ void pobox_check(int id, struct user *u)
            }
        }
       break;
+
     case 'S':
       if (hash_lookup(string_dups, u->pobox_id))
        {
@@ -570,6 +573,31 @@ void pobox_check(int id, struct user *u)
            }
        }
       break;
+
+    case 'I':
+      fs = hash_lookup(filesys, u->pobox_id);
+      if (!fs)
+       {
+         printf("User %s(%s) has P.O.Box on non-existant filesystem %d\n",
+                u->login, u->fullname, u->pobox_id);
+         if (single_fix("Delete", 0))
+           {
+             remove_pobox(u->users_id);
+             u->potype = 'N';
+           }
+       }
+      else if (fs->type != 'I')
+       {
+         printf("User %s(%s) has IMAP P.O.Box on non-IMAP filesystem %s\n",
+                u->login, u->fullname, fs->name);
+         if (single_fix("Delete", 0))
+           {
+             remove_pobox(u->users_id);
+             u->potype = 'N';
+           }
+       }
+      break;
+
     default:
       ;
     }
@@ -1162,7 +1190,7 @@ void check_fs(int id, void *filesys, void *hint)
        }
     }
 
-  if (f->type == 'N')
+  if (f->type == 'N' || f->type == 'I')
     {
       if (!hash_lookup(nfsphys, f->phys_id))
        {
This page took 0.111472 seconds and 5 git commands to generate.