fatal("cannot get lock");
}
+int verifyp(const char *old_name, int namesc, const char **names)
+{
+ char *old, *tmp, *id;
+ int i, fd;
+ int old_sz;
+
+ // Fail silently if file does not exist
+ if (access(old_name, F_OK) == -1)
+ return -1;
+
+ old = map_file(backup_name, &old_sz);
+ if (old == NULL)
+ fatal("cannot mmap old");
+
+ for (i = 0; i < old_sz; ) {
+ id = old + i;
+ while (i < old_sz && old[i] != ':' && old[i] != '\n')
+ i++;
+ if (i < old_sz && old[i] == ':') {
+ int id_len, line_len;
+
+ id_len = i - (id - old);
+ while (i < old_sz && old[i] != '\n')
+ i++;
+ if (i < old_sz)
+ i++;
+ line_len = i - (id - old);
+
+ if (exist(id, id_len, namesc, names))
+ return 1;
+ } else if (i < old_sz)
+ i++;
+ }
+ return 0;
+}
+
int delp(const char *old_name, const char *backup_name,
int namesc, const char **names)
{
fatal("Usage: delpasswd [-u|-g] name1 name2 ... nameN");
#if 1
if (what == 1) {
- delp(FILE1, FILE1 BACKUP, argc-2, argv+2);
- delp(FILE2, FILE2 BACKUP, argc-2, argv+2);
+ if (verifyp(FILE1, argc-2, argv+2))
+ delp(FILE1, FILE1 BACKUP, argc-2, argv+2);
+ if (verifyp(FILE2, argc-2, argv+2))
+ delp(FILE2, FILE2 BACKUP, argc-2, argv+2);
}
if (what == 2) {
- delp(FILE3, FILE3 BACKUP, argc-2, argv+2);
- delp(FILE4, FILE4 BACKUP, argc-2, argv+2);
+ if (verifyp(FILE3, argc-2, argv+2))
+ delp(FILE3, FILE3 BACKUP, argc-2, argv+2);
+ if (verifyp(FILE4, argc-2, argv+2))
+ delp(FILE4, FILE4 BACKUP, argc-2, argv+2);
}
#else
delp("test", "test.old", argc-2, argv+2);