]> git.pld-linux.org Git - packages/chkconfig.git/blame - chkconfig-add.patch
- removed TODO, it baheves fine here, --add doesn't re-eanble services
[packages/chkconfig.git] / chkconfig-add.patch
CommitLineData
12254151
ER
1--- chkconfig-1.3.58/chkconfig.c~ 2012-12-04 15:41:14.000000000 +0200
2+++ chkconfig-1.3.58/chkconfig.c 2012-12-04 15:42:06.080488828 +0200
09a63b21 3@@ -27,6 +27,7 @@
82df657c 4 #include <unistd.h>
09a63b21 5
82df657c
ER
6 static char *progname;
7+extern int addItem;
82df657c
ER
8
9 #define _(String) gettext((String))
09a63b21
AM
10
11@@ -243,12 +244,10 @@
12 frobDependencies(&s);
13 else
14 for (i = 0; i < 7; i++) {
15- if (!isConfigured(name, i, NULL, NULL)) {
82df657c
ER
16 if ((1 << i) & s.levels)
17 doSetService(s, i, 1);
18 else
19 doSetService(s, i, 0);
20- }
21 }
22
23 return 0;
12254151 24@@ -626,7 +626,7 @@
09a63b21 25 }
82df657c 26
12254151
ER
27 int main(int argc, const char ** argv) {
28- int listItem = 0, addItem = 0, delItem = 0, overrideItem = 0, noRedirectItem = 0;
29+ int listItem = 0, delItem = 0, overrideItem = 0, noRedirectItem = 0;
30 int type = TYPE_ANY;
82df657c
ER
31 int rc, i, x;
32 char * levels = NULL;
09a63b21
AM
33diff -urN chkconfig-1.3.37.org/leveldb.c chkconfig-1.3.37/leveldb.c
34--- chkconfig-1.3.37.org/leveldb.c 2007-08-03 19:57:56.000000000 +0200
35+++ chkconfig-1.3.37/leveldb.c 2008-04-24 09:27:34.124665839 +0200
36@@ -26,6 +26,10 @@
82df657c
ER
37 #include <stdio.h>
38 #include <string.h>
39 #include <unistd.h>
40+#include <sys/types.h>
41+#include <dirent.h>
42+
43+int addItem = 0;
44
45 /* Changes
09a63b21
AM
46 1998-09-22 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
47@@ -563,6 +567,25 @@
48 serv.provides[1] = NULL;
49 }
82df657c
ER
50
51+ if (addItem) {
09a63b21
AM
52+ DIR *dir;
53+ struct dirent *dirent;
54+ int i;
55+
56+ strcpy(levelbuf,"/etc/rc.d/rc0.d");
57+ for(i=0;i<7;i++,levelbuf[12]++) {
58+ dir=opendir(levelbuf);
59+ if (!dir) return 1;
60+ while ((dirent=readdir(dir))) {
61+ if (strlen(dirent->d_name)<4) continue;
62+ if (strcmp(dirent->d_name+3,name)) continue;
63+ if (*dirent->d_name=='K') serv.levels &= ~(1<<i);
64+ else if (*dirent->d_name=='S') serv.levels |= 1<<i;
65+ }
66+ closedir(dir);
82df657c 67+ }
82df657c
ER
68+ }
69+
70 *service = serv;
71 return 0;
72 }
This page took 1.387841 seconds and 4 git commands to generate.