]> git.pld-linux.org Git - packages/chkconfig.git/blob - chkconfig-add.patch
- removed TODO, it baheves fine here, --add doesn't re-eanble services
[packages/chkconfig.git] / chkconfig-add.patch
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
3 @@ -27,6 +27,7 @@
4  #include <unistd.h>
5  
6  static char *progname;
7 +extern int addItem;
8  
9  #define _(String) gettext((String)) 
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)) {
16             if ((1 << i) & s.levels)
17                 doSetService(s, i, 1);
18             else
19                 doSetService(s, i, 0);
20 -       }
21      }
22  
23      return 0;
24 @@ -626,7 +626,7 @@
25  }
26  
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;
31      int rc, i, x;
32      char * levels = NULL;
33 diff -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 @@
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
46     1998-09-22 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
47 @@ -563,6 +567,25 @@
48             serv.provides[1] = NULL;
49      }
50  
51 +    if (addItem) {
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);
67 +           }
68 +    }
69 +
70      *service = serv;
71      return 0;
72  }
This page took 0.04681 seconds and 3 git commands to generate.