X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/4a1bd4ba0a6a98f07a4b9709a17cc2dae1c832b7..fc6165db82d89d5d82e054fdb97c6e6657b076d0:/dbck/phase2.pc diff --git a/dbck/phase2.pc b/dbck/phase2.pc index da78b03c..89982100 100644 --- a/dbck/phase2.pc +++ b/dbck/phase2.pc @@ -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)) {