]> git.pld-linux.org Git - projects/setup.git/commitdiff
- added verifyp(), don't mess with files if there is no reason to
authorJan Rękorajski <baggins@pld-linux.org>
Mon, 2 Mar 2009 00:14:45 +0000 (00:14 +0000)
committerJan Rękorajski <baggins@pld-linux.org>
Mon, 2 Mar 2009 00:14:45 +0000 (00:14 +0000)
Changed files:
    delpasswd.c -> 1.2

delpasswd.c

index d83a9b7d7254eaf39e1d2d46dcf12f466919675f..3a066bf5dad559d3da6de82fe73ab21c4de976be 100644 (file)
@@ -249,6 +249,42 @@ void lock(const char *name)
        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)
 {
@@ -336,12 +372,16 @@ int main(int argc, const char **argv)
                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);
This page took 0.050485 seconds and 4 git commands to generate.