diff -Naur chkconfig-1.2.24.orig/chkconfig.c chkconfig-1.2.24/chkconfig.c --- chkconfig-1.2.24.orig/chkconfig.c Tue Feb 5 12:02:59 2002 +++ chkconfig-1.2.24/chkconfig.c Tue Feb 5 13:17:08 2002 @@ -14,6 +14,7 @@ extern const char *__progname; #define _(String) gettext((String)) +#define CONFIG_FILE "/etc/chkconfig.allow" #include "leveldb.h" @@ -82,6 +83,29 @@ return 0; } +static int disallowed_add(char *name){ + if (getenv ("RPM_INSTALL_NAME") && getenv ("DURING_INSTALL")){ + char buffer[BUFSIZ]; + FILE *config = fopen(CONFIG_FILE,"r"); + + if (!config) return 0; + + while (fgets (buffer, sizeof(buffer), config)) + { + size_t len = strlen(buffer); + if ((len>2) && (buffer[len-1]=='\n')) + buffer[len-1] = '\0'; + if (!strcmp (name, buffer)){ + fclose (config); + return 0; + } + } + fclose (config); + return 1; + } + return 0; +} + static int addService(char * name) { int i, rc; struct service s; @@ -91,6 +115,8 @@ return 1; } + if (disallowed_add (name)) return 0; + if ((rc = readServiceInfo(name, &s, 0))) { readServiceError(rc, name); return 1;