Author: baggins                      Date: Mon Mar  2 00:14:50 2009 GMT
Module: setup                         Tag: HEAD
---- Log message:
- added verifyp(), don't mess with files if there is no reason to

---- Files affected:
setup:
   delpasswd.c (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: setup/delpasswd.c
diff -u setup/delpasswd.c:1.1 setup/delpasswd.c:1.2
--- setup/delpasswd.c:1.1       Mon Mar  2 00:57:46 2009
+++ setup/delpasswd.c   Mon Mar  2 01:14:45 2009
@@ -249,6 +249,42 @@
        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 @@
                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);
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/setup/delpasswd.c?r1=1.1&r2=1.2&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to