F* Each hostalias name must not be the same as any machine name
Each snet_id must be unique
Alloc new ID
-F**Each subnet name must be unique
+F* Each subnet name must be unique
Each clu_id must be unique
Alloc new ID
F* Each cluster must have a unique name
F* Each list must have a unique name
Each filsys_id must be unique
Alloc new ID
-F**Each filesys name must be unique
+F* Each filesys name must be unique
Each nfsphys_id must be unique
Alloc new ID
Each string must be unique
Delete second copy and remember this for phase 2
Each string_id must be unique
Delete all copies
-F**Each printer name must be unique
+F* Each printer name must be unique
*Each palladium id must be unique
Alloc new ID
F**Each palladium name must be unique
* Every hostaccess must be for a real machine
* Every hostaccess USER must exist
* Every hostaccess LIST must exist
+ Every printer must have a real spool machine
+ Delete the printer
+ Every printer must have a real quota server
+ Delete the printer
P Every palladium server must be on a real machine
Delete the palladium entry
P Every user in the krbmap must exist
m->mach_id, m->name);
}
+show_snet_name(s)
+struct subnet *s;
+{
+ printf("Subnet %s (%d) has duplicate name\n", s->name, s->snet_id);
+ return(0);
+}
+
show_clu_id(c)
struct cluster *c;
{
f->filsys_id, f->name);
}
+show_fs_name(fs)
+struct filesys *fs;
+{
+ printf("Filesys %s (%d) has duplicate name\n", fs->name, fs->filsys_id);
+ return(0);
+}
+
show_np_id(n)
struct nfsphys *n;
}
EXEC SQL CLOSE csr115;
+ if (!fast) {
+ sq = sq_create();
+ if(!sq) out_of_mem("looking for duplicate subnet names");
+
+ EXEC SQL DECLARE csr117 CURSOR FOR
+ SELECT s1.snet_id FROM subnet s1, subnet s2
+ WHERE s1.name = s2.name AND s1.rowid != s2.rowid;
+ EXEC SQL OPEN csr117;
+ while(1) {
+ EXEC SQL FETCH csr117 INTO :id;
+ if (sqlca.sqlcode != 0) break;
+
+ sq_save_data(sq, hash_lookup(subnets, id));
+ }
+ EXEC SQL CLOSE csr117;
+ generic_fix(sq, show_snet_name, "Change name", cant_fix, 0);
+ }
+
dprintf("Loading clusters...\n");
sq = sq_create();
clusters = create_hash(100);
generic_fix(sq, show_fs_id, "Change ID", fix_fs_id, 0);
+ if (!fast) {
+ sq = sq_create();
+ if(!sq) out_of_mem("looking for duplicate filesys names");
+
+ EXEC SQL DECLARE csr118 CURSOR FOR
+ SELECT fs1.filsys_id FROM filesys fs1, filesys fs2
+ WHERE fs1.label=fs2.label AND fs1.rowid != fs2.rowid;
+ EXEC SQL OPEN csr118;
+ while(1) {
+ EXEC SQL FETCH csr118 INTO :id;
+ if (sqlca.sqlcode != 0) break;
+
+ sq_save_data(sq, hash_lookup(filesys, id));
+ }
+ EXEC SQL CLOSE csr118;
+ generic_fix(sq, show_fs_name, "Change name", cant_fix, 0);
+ }
+
dprintf("Loading nfsphys...\n");
sq = sq_create();
nfsphys = create_hash(500);
while(1) {
EXEC SQL FETCH csr111 INTO :id, :name, :id2, :id3, :sid;
if (sqlca.sqlcode != 0) break;
-
+
n = (struct nfsphys *) malloc(sizeof(struct nfsphys));
if (n == NULL)
out_of_mem("storing nfsphys");
generic_fix(sq, show_np_id, "Change ID", fix_np_id, 0);
- /* csr112 */
-
+ dprintf("Checking printcap...\n");
+
+ EXEC SQL DECLARE csr119 CURSOR FOR
+ SELECT p1.name FROM printcap p1, printcap p2
+ WHERE p1.name=p2.name AND p1.rowid<p2.rowid;
+ EXEC SQL OPEN csr119;
+ while(1) {
+ EXEC SQL FETCH csr119 INTO :name;
+ if (sqlca.sqlcode != 0) break;
+
+ printf("Printer %s has duplicate name\n", name);
+ cant_fix(0);
+ }
+ EXEC SQL CLOSE csr119;
}