setup: delpasswd.c - added verifyp(), don't mess with files if there is no ...
baggins
baggins at pld-linux.org
Mon Mar 2 01:14:50 CET 2009
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
More information about the pld-cvs-commit
mailing list