--- a/chkconfig.c 2015-12-01 18:23:52.047031136 +0000
+++ b/chkconfig.c 2015-12-07 22:46:52.421553233 +0000
@@ -29,6 +29,7 @@
#include <unistd.h>
static char *progname;
+static char ignorePriorities;
#define _(String) gettext((String))
@@ -148,7 +149,7 @@
}
static inline int laterThan(int i, int j) {
- if (i <= j) {
+ if (!ignorePriorities && i <= j) {
i = j+1;
if (i > 99)
i = 99;
@@ -157,7 +158,7 @@
}
static inline int earlierThan(int i, int j) {
- if (i >= j) {
+ if (!ignorePriorities && i >= j) {
i = j -1;
if (i < 0)
i = 0;
@@ -695,6 +696,7 @@
bindtextdomain("chkconfig","/usr/share/locale");
textdomain("chkconfig");
+ ignorePriorities = checkIgnorePriorities();
optCon = poptGetContext("chkconfig", argc, argv, optionsTable, 0);
poptReadDefaultConfig(optCon, 1);
--- a/leveldb.c 2015-12-07 19:48:15.052238953 +0000
+++ b/leveldb.c 2015-12-07 22:43:25.500120097 +0000
@@ -448,15 +448,22 @@
return deps;
}
+char checkIgnorePriorities() {
+ int fd = open(IGNORE_PRIORITIES_FLAG, O_RDONLY);
+ char ret = fd < 0 ? 0 : 1;
+ close(fd);
+ return ret;
+}
int parseServiceInfo(int fd, char * name, struct service * service, int honorHide, int partialOk) {
struct stat sb;
char * bufstart, * bufstop, * start, * end, * next, *tmpbufstart;
+ char ignorePriorities = checkIgnorePriorities();
struct service serv = {
name: NULL,
levels: -1,
- kPriority: 100,
- sPriority: -1,
+ kPriority: (ignorePriorities ? 50 : 100),
+ sPriority: (ignorePriorities ? 50 : -1),
currentLevels: 0,
desc: NULL,
startDeps: NULL,
@@ -526,7 +533,7 @@
}
}
- if (!strncmp(start, "chkconfig:", 10)) {
+ if (!ignorePriorities && !strncmp(start, "chkconfig:", 10)) {
int spri, kpri;
start += 10;
--- a/leveldb.h 2015-12-07 21:01:24.418808908 +0000
+++ b/leveldb.h 2015-12-07 22:49:34.131868047 +0000
@@ -34,6 +34,10 @@
#define SYSTEMD_LOCAL_SERVICE_PATH "/etc/systemd/system"
#endif
+#ifndef IGNORE_PRIORITIES_FLAG
+#define IGNORE_PRIORITIES_FLAG "/etc/init.d/ignore_priorities"
+#endif
+
struct dep {
char *name;
int handled;
@@ -61,6 +65,7 @@
int readServiceInfo(char * name, int type, struct service * service, int honorHide);
int readServices(struct service **services);
int readServiceDifferences(char * name, int type, struct service * service, struct service * service_overrides, int honorHide);
+char checkIgnorePriorities();
int parseServiceInfo(int fd, char * name, struct service * service, int honorHide, int partialOk);
int currentRunlevel(void);
int isOn(char * name, int where);