[meego-commits] 9170: Changes to Trunk/chkconfig
Peter Zhu
no_reply at build.meego.com
Wed Nov 3 07:07:05 UTC 2010
Hi,
I have made the following changes to chkconfig in project Trunk. Please review and accept ASAP.
Thank You,
Peter Zhu
[This message was auto-generated]
---
Request #9170:
submit: Trunk:Testing/chkconfig(r11) -> Trunk/chkconfig
Message:
Move to Trunk
State: new 2010-11-03T00:07:04 peter
Comment: None
changes files:
--------------
--- chkconfig.changes
+++ chkconfig.changes
@@ -0,0 +1,4 @@
+* Fri Oct 29 2010 Yan Yin <yan.yin at intel.com> - 1.3.48
+- Update to 1.3.48
+- Fix broken YAML file
+
old:
----
chkconfig-1.3.46.tar.bz2
new:
----
chkconfig-1.3.48.tar.bz2
spec files:
-----------
--- chkconfig.spec
+++ chkconfig.spec
@@ -1,13 +1,13 @@
#
-# Do not Edit! Generated by:
-# spectacle version 0.17
+# Do NOT Edit the Auto-generated Part!
+# Generated by: spectacle version 0.20
#
# >> macros
# << macros
Name: chkconfig
Summary: A system tool for maintaining the /etc/rc*.d hierarchy
-Version: 1.3.46
+Version: 1.3.48
Release: 1
Group: System/Base
License: GPLv2
@@ -53,18 +53,17 @@
# << build pre
-make %{?jobs:-j%jobs}
# >> build post
+make %{?jobs:-j%jobs}
# << build post
%install
rm -rf %{buildroot}
# >> install pre
# << install pre
-make DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} SBINDIR=%{_sbindir} install
-
# >> install post
+make DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} SBINDIR=%{_sbindir} install
for n in 0 1 2 3 4 5 6; do
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc${n}.d
@@ -78,6 +77,12 @@
+
+
+
+
+
+
%files -f %{name}.lang
%defattr(-,root,root,-)
# >> files
other changes:
--------------
++++++ chkconfig-1.3.46.tar.bz2 -> chkconfig-1.3.48.tar.bz2
--- chkconfig-1.3.46
+++ chkconfig-1.3.46
-(directory)
--- chkconfig-1.3.46/COPYING
+++ chkconfig-1.3.46/COPYING
(renamed to chkconfig-1.3.48/COPYING)
--- chkconfig-1.3.46/Makefile
+++ chkconfig-1.3.46/Makefile
(renamed to chkconfig-1.3.48/Makefile)
--- chkconfig-1.3.46/alternatives.8
+++ chkconfig-1.3.46/alternatives.8
(renamed to chkconfig-1.3.48/alternatives.8)
--- chkconfig-1.3.46/alternatives.c
+++ chkconfig-1.3.46/alternatives.c
(renamed to chkconfig-1.3.48/alternatives.c)
--- chkconfig-1.3.46/chkconfig.8
+++ chkconfig-1.3.46/chkconfig.8
(renamed to chkconfig-1.3.48/chkconfig.8)
--- chkconfig-1.3.46/chkconfig.c
+++ chkconfig-1.3.46/chkconfig.c
-/* Copyright 1997-2008 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-#include <ctype.h>
-#include <dirent.h>
-#include <errno.h>
-#include <glob.h>
-#include <libintl.h>
-#include <locale.h>
-#include <popt.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-static char *progname;
-
-#define _(String) gettext((String))
-
-#include "leveldb.h"
-
-static int LSB = 0;
-
-static void usage(void) {
- fprintf(stderr, _("%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"), progname, VERSION);
- fprintf(stderr, _("This may be freely redistributed under the terms of "
- "the GNU Public License.\n"));
- fprintf(stderr, "\n");
- fprintf(stderr, _("usage: %s [--list] [--type <type>] [name]\n"), progname);
- fprintf(stderr, _(" %s --add <name>\n"), progname);
- fprintf(stderr, _(" %s --del <name>\n"), progname);
- fprintf(stderr, _(" %s --override <name>\n"), progname);
- fprintf(stderr, _(" %s [--level <levels>] [--type <type>] <name> %s\n"), progname, "<on|off|reset|resetpriorities>");
-
- exit(1);
-}
-
-static void readServiceError(int rc, char * name) {
- if (rc == 2) {
- fprintf(stderr, _("service %s supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add %s')\n"), name, name);
- } else if (rc == 1) {
- fprintf(stderr, _("service %s does not support chkconfig\n"), name);
- } else {
- fprintf(stderr, _("error reading information on service %s: %s\n"),
- name, strerror(errno));
- }
-
- exit(1);
-}
-
-static void checkRoot() {
- if (access(RUNLEVELS "/rc3.d", R_OK | W_OK) != 0) {
- fprintf(stderr, _("You do not have enough privileges to perform this operation.\n"));
- exit(1);
- }
-}
-
-static int delService(char *name, int type, int level) {
- int i, j, k, numservs, rc;
- glob_t globres;
- struct service s;
- struct service *services;
-
- if ((rc = readServiceInfo(name, type, &s, 0))) {
- readServiceError(rc, name);
- return 1;
- }
- if (s.type == TYPE_XINETD) return 0;
-
- checkRoot();
-
- if (LSB && level == -1) {
- numservs = readServices(&services);
-
- for (i = 0; i < numservs ; i++) {
- if (services[i].startDeps) {
- for (j = 0; services[i].startDeps[j].name ; j++) {
- if (!strcmp(services[i].startDeps[j].name, s.name)) {
- for (k = 0 ; k <= 6; k++) {
- if (isOn(services[i].name, k))
- return 1;
- }
- }
- }
- }
- if (services[i].stopDeps) {
- for (j = 0; services[i].stopDeps[j].name ; j++) {
- if (!strcmp(services[i].stopDeps[j].name, s.name)) {
- for (k = 0 ; k <= 6; k++) {
- if (!isOn(services[i].name, k))
- return 1;
- }
- }
- }
- }
- }
- }
-
- for (j = 0 ; j < 7; j++) {
- if (level == -1 || level == j) {
- if (!findServiceEntries(name, j, &globres)) {
- for (i = 0; i < globres.gl_pathc; i++)
- unlink(globres.gl_pathv[i]);
- if (globres.gl_pathc) globfree(&globres);
- }
- }
- }
- return 0;
-}
-
-static inline int laterThan(int i, int j) {
- if (i <= j) {
- i = j+1;
- if (i > 99)
- i = 99;
- }
- return i;
-}
-
-static inline int earlierThan(int i, int j) {
- if (i >= j) {
- i = j -1;
- if (i < 0)
- i = 0;
- }
- return i;
-}
-
-static int isSimilarlyConfigured(struct service s, struct service t, int start) {
- int i, state_s, state_t;
-
- for (i = 0; i <= 6; i ++) {
- if (isConfigured(s.name, i, NULL, NULL)) {
- state_s = isOn(s.name, i);
- } else {
- state_s = ((1<<i) & s.levels) ? 1 : 0;
- }
- state_t = isOn(t.name, i);
- if (state_s == state_t && state_s == start)
- return 1;
- }
- return 0;
-}
-
-static void checkDeps(struct service *s, struct dep *deps, struct service *serv, int start) {
- int j,k;
-
- for (j = 0; deps[j].name ; j++) {
- if (!strcmp(deps[j].name, serv->name) && isSimilarlyConfigured(*s, *serv, 0)) {
- if (start)
- s->sPriority = laterThan(s->sPriority, serv->sPriority);
- else
- s->kPriority = earlierThan(s->kPriority, serv->kPriority);
- deps[j].handled = 1;
- }
- if (serv->provides) {
- for (k = 0; serv->provides[k]; k++) {
- if (!strcmp(deps[j].name, serv->provides[k]) && isSimilarlyConfigured(*s, *serv, 0)) {
- if (start)
- s->sPriority = laterThan(s->sPriority, serv->sPriority);
- else
- s->kPriority = earlierThan(s->kPriority, serv->kPriority);
- deps[j].handled = 1;
- }
- }
- }
- }
-}
-
-static int frobOneDependencies(struct service *s, struct service *servs, int numservs, int target, int depfail) {
- int i;
- int s0 = s->sPriority;
- int k0 = s->kPriority;
-
- if (s->sPriority < 0) s->sPriority = 50;
- if (s->kPriority < 0) s->kPriority = 50;
- for (i = 0; i < numservs ; i++) {
- if (s->startDeps) {
- checkDeps(s, s->startDeps, &servs[i], 1);
- }
- if (s->softStartDeps) {
- checkDeps(s, s->softStartDeps, &servs[i], 1);
- }
- if (s->stopDeps) {
- checkDeps(s, s->stopDeps, &servs[i], 0);
- }
- if (s->softStopDeps) {
- checkDeps(s, s->softStopDeps, &servs[i], 0);
- }
- }
- if (depfail) {
- if (s->startDeps) {
- for (i = 0; s->startDeps[i].name; i++) {
- if (!s->startDeps[i].handled)
- return -1;
- }
- }
- if (s->stopDeps) {
- for (i = 0; s->stopDeps[i].name; i++) {
- if (!s->stopDeps[i].handled)
- return -1;
- }
- }
- }
-
- if (target || ((s0 != s->sPriority) || (k0 != s->kPriority))) {
- for (i = 0; i < 7; i++) {
- if (isConfigured(s->name, i, NULL, NULL)) {
- int on = isOn(s->name, i);
- delService(s->name, TYPE_INIT_D, i);
- doSetService(*s, i, on);
- } else if (target) {
- delService(s->name, TYPE_INIT_D, i);
- doSetService(*s, i, ((1<<i) & s->levels));
- }
- }
- return 1; /* Resolved something */
- }
- return 0; /* Didn't resolve anything */
-}
-
-/* LSB-style dependency frobber. Calculates a usable start priority
- * and stop priority.
- * This algorithm will almost certainly break horribly at some point. */
-static int frobDependencies(struct service *s) {
- struct service *servs = NULL;
- int numservs = 0;
- int nResolved = 0;
-
- numservs = readServices(&servs);
- /* Resolve recursively the other dependancies */
- do {
- nResolved = 0;
- int i;
-
- for (i = 0; i < numservs ; i++) {
- if ((servs+i)->isLSB && strcmp((servs+i)->name, s->name))
- nResolved += frobOneDependencies(servs+i, servs, numservs, 0, 0);
- }
- } while (nResolved);
-
- /* Resolve our target */
- if (frobOneDependencies(s, servs, numservs, 1, LSB) == -1)
- return 1;
- return 0;
-}
-
-static int addService(char * name, int type) {
- int i, rc;
- struct service s;
-
- if ((rc = readServiceInfo(name, type, &s, 0))) {
- readServiceError(rc, name);
- return 1;
- }
-
- if (s.type == TYPE_XINETD) return 0;
- checkRoot();
-
- if (s.isLSB)
- rc = frobDependencies(&s);
- else
- for (i = 0; i < 7; i++) {
- if (!isConfigured(name, i, NULL, NULL)) {
- if ((1 << i) & s.levels)
- doSetService(s, i, 1);
- else
- doSetService(s, i, 0);
- }
- }
-
- return rc;
-}
-
-static int overrideService(char * name, int srvtype) {
- /* Apply overrides if available; no available overrides is no error */
- int level, i, rc;
- glob_t globres;
- struct service s;
- struct service o;
- int priority;
- char type;
- int doChange = 1;
- int configured = 0;
- int thisLevelAdded, thisLevelOn;
-
- if ((rc = readServiceDifferences(name, srvtype, &s, &o, 0))) {
- return 0;
- }
-
- if (s.type == TYPE_XINETD) return 0;
-
- checkRoot();
-
- if ((s.levels == o.levels) &&
- (s.kPriority == o.kPriority) &&
- (s.sPriority == o.sPriority)) {
- /* no relevant changes in the override file */
- return 0;
- }
-
- if (s.isLSB && (s.sPriority <= -1) && (s.kPriority <= -1))
- frobDependencies(&s);
- if ((s.isLSB || o.isLSB) && (o.sPriority <= -1) && (o.kPriority <= -1))
- frobDependencies(&o);
-
- /* Apply overrides only if the service has not been changed since
- * being added, and not if the service has never been configured
- * at all.
- */
-
- for (level = 0; level < 7; level++) {
- thisLevelAdded = isConfigured(name, level, &priority, &type);
- thisLevelOn = s.levels & 1<<level;
- if (thisLevelAdded) {
- configured = 1;
- if (type == 'S') {
- if (priority != s.sPriority || !thisLevelOn) {
- doChange = 0;
- break;
- }
- } else if (type == 'K') {
- if (priority != s.kPriority || thisLevelOn) {
- doChange = 0;
- break;
- }
- }
- }
- }
-
- if (configured && doChange) {
- for (level = 0; level < 7; level++) {
- if (!findServiceEntries(name, level, &globres)) {
- for (i = 0; i < globres.gl_pathc; i++)
- unlink(globres.gl_pathv[i]);
- if (globres.gl_pathc)
- globfree(&globres);
- if ((1 << level) & o.levels)
- doSetService(o, level, 1);
- else
- doSetService(o, level, 0);
- }
- }
- }
-
- return 0;
-}
-
-static int showServiceInfo(struct service s, int forgiving) {
- int rc;
- int i;
-
- if (s.type == TYPE_INIT_D) {
- rc = 2;
- for (i = 0 ; i < 7 ; i++) {
- if (isConfigured(s.name, i, NULL, NULL)) {
- rc = 0;
- break;
- }
- }
- }
-
- if (rc) {
- if (!forgiving)
- readServiceError(rc, s.name);
- return forgiving ? 0 : 1;
- }
-
- printf("%-15s", s.name);
- if (s.type == TYPE_XINETD) {
- printf("\t%s\n", s.levels ? _("on") : _("off"));
- return 0;
- }
-
- for (i = 0; i < 7; i++) {
- printf("\t%d:%s", i, isOn(s.name, i) ? _("on") : _("off"));
- }
- printf("\n");
-
- return 0;
-}
-
-static int showServiceInfoByName(char * name, int type, int forgiving) {
- int rc;
- struct service s;
-
- rc = readServiceInfo(name, type, &s, 0);
-
- if (rc) {
- if (!forgiving)
- readServiceError(rc, name);
- return forgiving ? 0 : 1;
- }
-
- return showServiceInfo(s, forgiving);
-}
-
-
-static int isXinetdEnabled() {
- int i;
- struct service s;
-
- if (readServiceInfo("xinetd", TYPE_INIT_D, &s, 0)) {
- return 0;
- }
- for (i = 0; i < 7; i++) {
- if (isOn("xinetd", i))
- return 1;
- }
- return 0;
-}
-
-static int serviceNameCmp(const void * a, const void * b) {
- return strcmp(* (char **)a, * (char **)b);
-}
-
-static int xinetdNameCmp(const void * a, const void * b) {
- const struct service * first = a;
- const struct service * second = b;
-
- return strcmp(first->name, second->name);
-}
-
-
-static int listService(char * item, int type) {
- DIR * dir;
- struct dirent * ent;
- struct service *services;
- int i;
- int numServices = 0;
- int numServicesAlloced;
- int err = 0;
-
- if (item) return showServiceInfoByName(item, type, 0);
-
- if (type & TYPE_INIT_D) {
- numServices = readServices(&services);
-
- qsort(services, numServices, sizeof(*services), serviceNameCmp);
-
- for (i = 0; i < numServices ; i++) {
- if (showServiceInfo(services[i], 1)) {
- return 1;
- }
- }
- }
-
- if (isXinetdEnabled() && type & TYPE_XINETD) {
- struct service *s, *t;
-
- printf("\n");
- printf(_("xinetd based services:\n"));
- if (!(dir = opendir(XINETDDIR))) {
- fprintf(stderr, _("failed to open directory %s: %s\n"),
- XINETDDIR, strerror(err));
- return 1;
- }
- numServices = 0;
- numServicesAlloced = 10;
- s = malloc(sizeof (*s) * numServicesAlloced);
-
- while ((ent = readdir(dir))) {
- const char *dn;
-
- /* Skip any file starting with a . */
- if (ent->d_name[0] == '.') continue;
-
- /* Skip files with known bad extensions */
- if ((dn = strrchr(ent->d_name, '.')) != NULL &&
- (!strcmp(dn, ".rpmsave") || !strcmp(dn, ".rpmnew") || !strcmp(dn, ".rpmorig") || !strcmp(dn, ".swp")))
- continue;
-
- dn = ent->d_name + strlen(ent->d_name) - 1;
- if (*dn == '~' || *dn == ',')
- continue;
-
- if (numServices == numServicesAlloced) {
- numServicesAlloced += 10;
- s = realloc(s, numServicesAlloced * sizeof (*s));
- }
- if (readXinetdServiceInfo(ent->d_name, s + numServices, 0) != -1)
- numServices ++;
- }
-
- qsort(s, numServices, sizeof(*s), xinetdNameCmp);
- t = s;
- for (i = 0; i < numServices; i++, s++) {
- char *tmp = malloc(strlen(s->name) + 5);
- sprintf(tmp,"%s:",s->name);
- printf("\t%-15s\t%s\n", tmp, s->levels ? _("on") : _("off"));
- }
- closedir(dir);
- free(t);
- }
- return 0;
-}
-
-int setService(char * name, int type, int where, int state) {
- int i, rc;
- int what;
- struct service s;
-
- if (!where && state != -1) {
- /* levels 2, 3, 4, 5 */
- where = (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5);
- } else if (!where) {
- where = (1 << 0) | (1 << 1) | (1 << 2) |
- (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
- }
-
- if ((rc = readServiceInfo(name, type, &s, 0))) {
- readServiceError(rc, name);
- return 1;
- }
-
- checkRoot();
-
- if (s.type == TYPE_INIT_D) {
- int rc = 0;
-
- if (s.isLSB)
- frobDependencies(&s);
- for (i = 0; i < 7; i++) {
-
- if (!((1 << i) & where)) continue;
-
- if (state == 1 || state == 0)
- what = state;
- else if (state == -2)
- what = isOn(name, i);
- else if (s.levels & (1 << i))
- what = 1;
- else
- what = 0;
- rc |= doSetService(s, i, what);
- }
- return rc;
- } else if (s.type == TYPE_XINETD) {
- if (setXinetdService(s, state)) {
- return 1;
- }
- system("/etc/init.d/xinetd reload >/dev/null 2>&1");
- }
-
- return 0;
-}
-
-int main(int argc, char ** argv) {
- int listItem = 0, addItem = 0, delItem = 0, overrideItem = 0;
- int type = TYPE_ANY;
- int rc, i, x;
- char * levels = NULL;
- char * typeString = NULL;
- int help=0, version=0;
- struct service s;
- poptContext optCon;
- struct poptOption optionsTable[] = {
- { "add", '\0', 0, &addItem, 0 },
- { "del", '\0', 0, &delItem, 0 },
- { "override", '\0', 0, &overrideItem, 0 },
- { "list", '\0', 0, &listItem, 0 },
- { "level", '\0', POPT_ARG_STRING, &levels, 0 },
- { "levels", '\0', POPT_ARG_STRING, &levels, 0 },
- { "type", '\0', POPT_ARG_STRING, &typeString, 0 },
- { "help", 'h', POPT_ARG_NONE, &help, 0 },
- { "version", 'v', POPT_ARG_NONE, &version, 0 },
- { 0, 0, 0, 0, 0 }
- };
-
- if ((progname = strrchr(argv[0], '/')) != NULL)
- progname++;
- else
- progname = argv[0];
- if (!strcmp(progname,"install_initd")) {
- addItem++;
- LSB++;
- }
- if (!strcmp(progname,"remove_initd")) {
- delItem++;
- LSB++;
- }
-
- setlocale(LC_ALL, "");
- bindtextdomain("chkconfig","/usr/share/locale");
- textdomain("chkconfig");
-
- optCon = poptGetContext("chkconfig", argc, argv, optionsTable, 0);
- poptReadDefaultConfig(optCon, 1);
-
- if ((rc = poptGetNextOpt(optCon)) < -1) {
- fprintf(stderr, "%s: %s\n",
- poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
- poptStrerror(rc));
- exit(1);
- }
-
- if (version) {
- fprintf(stdout, _("%s version %s\n"), progname, VERSION);
- exit(0);
- }
-
- if (help) usage();
-
- if (typeString) {
- if (!strcmp(typeString, "xinetd"))
- type = TYPE_XINETD;
- else if (!strcmp(typeString, "sysv"))
- type = TYPE_INIT_D;
- else {
- fprintf(stderr, _("--type must be 'sysv' or 'xinetd'\n"));
- exit(1);
- }
- }
-
- if (argc == 1) return listService(NULL, type);
-
- if ((listItem + addItem + delItem + overrideItem) > 1) {
- fprintf(stderr, _("only one of --list, --add, --del, or --override"
- " may be specified\n"));
- exit(1);
- }
-
- if (addItem) {
- char * name = (char *)poptGetArg(optCon);
-
- if (!name || !*name || poptGetArg(optCon))
- usage();
-
- name = basename(name);
- return addService(name, type);
- } else if (delItem) {
- char * name = (char *)poptGetArg(optCon);
-
- if (!name || !*name || poptGetArg(optCon)) usage();
-
- name = basename(name);
- return delService(name, type, -1);
- } else if (overrideItem) {
- char * name = (char *)poptGetArg(optCon);
-
- if (!name || !*name || poptGetArg(optCon)) usage();
-
- name = basename(name);
- return overrideService(name, type);
- } else if (listItem) {
- char * item = (char *)poptGetArg(optCon);
-
- if (item && poptGetArg(optCon)) usage();
-
- return listService(item, type);
- } else {
- char * name = (char *)poptGetArg(optCon);
- char * state = (char *)poptGetArg(optCon);
- int where = 0, level = -1;
-
- if (!name) {
- usage();
- }
- if (levels) {
- where = parseLevels(levels, 0);
- if (where == -1) usage();
- }
-
- if (!state) {
- if (where) {
- rc = x = 0;
- i = where;
- while (i) {
- if (i & 1) {
- rc++;
- level = x;
- }
- i >>= 1;
- x++;
- }
-
- if (rc > 1) {
- fprintf(stderr, _("only one runlevel may be specified for "
- "a chkconfig query\n"));
- exit(1);
- }
- }
- rc = readServiceInfo(name, type, &s, 0);
- if (rc)
- return 1;
- if (s.type == TYPE_XINETD) {
- if (isOn("xinetd",level))
- return !s.levels;
- else
- return 1;
- } else
- return isOn(name, level) ? 0 : 1;
- } else if (!strcmp(state, "on"))
- return setService(name, type, where, 1);
- else if (!strcmp(state, "off"))
- return setService(name, type, where, 0);
- else if (!strcmp(state, "reset"))
- return setService(name, type, where, -1);
- else if (!strcmp(state, "resetpriorities"))
- return setService(name, type, where, -2);
- else
- usage();
- }
-
- usage();
-
- return 1;
-}
--- chkconfig-1.3.46/chkconfig.spec
+++ chkconfig-1.3.46/chkconfig.spec
-Summary: A system tool for maintaining the /etc/rc*.d hierarchy
-Name: chkconfig
-Version: 1.3.46
-Release: 1%{?dist}
-License: GPLv2
-Group: System Environment/Base
-Source: http://fedorahosted.org/releases/c/h/chkconfig/%{name}-%{version}.tar.bz2
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: newt-devel gettext popt-devel
-Conflicts: initscripts <= 5.30-1
-
-%description
-Chkconfig is a basic system utility. It updates and queries runlevel
-information for system services. Chkconfig manipulates the numerous
-symbolic links in /etc/rc.d, to relieve system administrators of some
-of the drudgery of manually editing the symbolic links.
-
-%package -n ntsysv
-Summary: A tool to set the stop/start of system services in a runlevel
-Group: System Environment/Base
-Requires: chkconfig = %{version}-%{release}
-
-%description -n ntsysv
-Ntsysv provides a simple interface for setting which system services
-are started or stopped in various runlevels (instead of directly
-manipulating the numerous symbolic links in /etc/rc.d). Unless you
-specify a runlevel or runlevels on the command line (see the man
-page), ntsysv configures the current runlevel (5 if you're using X).
-
-%prep
-%setup -q
-
-%build
-
-make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags}
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} SBINDIR=%{_sbindir} install
-
-mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
-ln -s rc.d/init.d $RPM_BUILD_ROOT/etc/init.d
-for n in 0 1 2 3 4 5 6; do
- mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc${n}.d
- ln -s rc.d/rc${n}.d $RPM_BUILD_ROOT/etc/rc${n}.d
-done
-mkdir -p $RPM_BUILD_ROOT/etc/chkconfig.d
-
-%find_lang %{name}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files -f %{name}.lang
-%defattr(-,root,root)
-%doc COPYING
-%dir /etc/alternatives
-/sbin/chkconfig
-%{_sbindir}/update-alternatives
-%{_sbindir}/alternatives
-/etc/chkconfig.d
-/etc/init.d
-/etc/rc.d/init.d
-/etc/rc[0-6].d
-/etc/rc.d/rc[0-6].d
-%dir /var/lib/alternatives
-%{_mandir}/*/chkconfig*
-%{_mandir}/*/update-alternatives*
-%{_mandir}/*/alternatives*
-
-%files -n ntsysv
-%defattr(-,root,root)
-%{_sbindir}/ntsysv
-%{_mandir}/*/ntsysv.8*
-
-%changelog
-* Wed May 05 2010 Bill Nottingham <notting at redhat.com> 1.3.46-1
-- translation updates: hu, kn, ko (#589187)
-
-* Thu Mar 04 2010 Bill Nottingham <notting at redhat.com> 1.3.45-1
-- add support for Should-Start, Should-Stop (#98470, <iarnell at gmail.com>)
-- ntsysv: don't drop initscripts with '.' in the name (#556751)
-- translation updates: el, id
-
-* Tue Sep 29 2009 Bill Nottingham <notting at redhat.com> 1.3.44-1
-- alternatives: update symlinks if they exist on installation (#104940)
-- alternatives: clarify error messages with more context (#441443)
-- alternatives: fix removal of manual links (#525021, <dtardon at redhat.com>)
-- translation updates: ml, mr, pl, ta, uk
-
-* Mon Sep 14 2009 Bill Nottingham <notting at redhat.com> 1.3.43-1
-- ntsysv man page tweak (#516599)
-- another minor LSB tweak (#474223)
-- translation updates
-
-* Fri Mar 6 2009 Bill Nottingham <notting at redhat.com> 1.3.42-1
-- further LSB fixes (#474223)
-- throw errors on various malformed init scripts (#481198)
-- man page updates re: LSB (#487979)
-- translation updates: mai, gu, pt_BR, ro, ca, pa, sr, fr, hu
-
-* Tue Jan 20 2009 Bill Nottingham <notting at redhat.com> 1.3.41-1
-- restore return code & error on unconfigured services (#480805)
-
-* Fri Dec 5 2008 Bill Nottingham <notting at redhat.com> 1.3.40-1
-- fix some overflows. (#176944)
-- add --type parameter to specify either xinetd or sysv services.
- (#467863, <mschmidt at redhat.com>
-- do a permissions check before add/remove/on/off/resetpriorities. (#450254)
-- parse Short-Description correctly (#441813, <peter_e at gmx.net>)
-
-* Thu Dec 4 2008 Bill Nottingham <notting at redhat.com> 1.3.39-1
-- fail if dependencies fail on add/remove in LSB mode (#474223)
-
-* Wed Oct 29 2008 Bill Nottingham <notting at redhat.com> 1.3.38-1
-- Fix runlevel list in man page (#466739)
-- translation updates
-
-* Thu Nov 8 2007 Bill Nottingham <notting at redhat.com> 1.3.37-1
-- make no options do --list (#290241, #176184)
-- sr at Latn -> sr at latin
-
-* Tue Sep 25 2007 Bill Nottingham <notting at redhat.com> 1.3.36-1
-- buildreq popt-devel, link it dynamically (#279531)
-- translation updates: kn, ko, mr, ro
-
-* Fri Aug 3 2007 Bill Nottingham <notting at redhat.com> 1.3.35-1
-- clarify licensing
-
-* Mon Apr 16 2007 Bill Nottingham <notting at redhat.com> 1.3.34-1
-- translation updates: as, bg, bn_IN, bs, ca, de, fr, hi, hu, id, ja,
- ka, ml, ms, nb, or, sk, sl
-- add resetpriorities to the man page (#197399)
-
-* Tue Feb 6 2007 Bill Nottingham <notting at redhat.com> 1.3.33-1
-- various changes from review - support alternate %%{_sbindir}, fix
- summaries, add version to requires, assorted other bits
-
-* Fri Feb 2 2007 Bill Nottingham <notting at redhat.com> 1.3.32-1
-- support overriding various defaults via /etc/chkconfig.d (<johnsonm at rpath.com>)
-
-* Thu Feb 1 2007 Bill Nottingham <notting at redhat.com> 1.3.31-1
-- fix man page (#220558, <esr at thyrus.com>)
-- add some more verbiage in alternatives man page (#221089)
-- don't print usage message on a nonexstent service (#226804)
-
-* Fri Dec 1 2006 Bill Nottingham <notting at redhat.com> 1.3.30.1-1
-- translation updates: as, ka, lv, ml, te (#216617)
-
-* Thu Sep 7 2006 Bill Nottingham <notting at redhat.com> 1.3.30-1
-- license cleanup
-
-* Fri Feb 24 2006 Bill Nottingham <notting at redhat.com> 1.3.29-1
-- fix accidental enabling of services on --add (#182729)
-
-* Mon Feb 13 2006 Bill Nottingham <notting at redhat.com> 1.3.27-1
-- translation updates
-
-* Thu Feb 2 2006 Bill Nottingham <notting at redhat.com> 1.3.26-1
-- add support for resetting priorities without on/off status (#178864)
-
-* Wed Nov 30 2005 Bill Nottingham <notting at redhat.com> 1.3.25-1
-- return an error if changing services fails (#150235)
-
-* Fri Nov 18 2005 Bill Nottingham <notting at redhat.com> 1.3.24-1
-- when removing alternatives links, check to make sure they're
- actually links (#173685)
-
-* Fri Nov 11 2005 Bill Nottingham <notting at redhat.com> 1.3.23-1
-- fix ntsysv (#172996)
-
-* Wed Nov 9 2005 Bill Nottingham <notting at redhat.com>
-- fix doSetService call in frobOneDependencies
-
-* Tue Nov 8 2005 Bill Nottingham <notting at redhat.com>
-- for LSB scripts, use any chkconfig: priorities as a basis,
- instead of 50/50 (#172599)
-- fix LSB script dependency setting when no chkconfig: line
- is present (#161870, <jean-francois.larvoire at hp.com>)
-- fix LSB script dependency setting when one of Required-Stop
- or Required-Start: is missing (#168457)
-
-* Fri Oct 7 2005 Bill Nottingham <notting at redhat.com>
-- fix segfault on directories in /etc/xinetd.d (#166385)
-- don't needlessly rewrite xinetd files (#81008)
-
-* Thu May 5 2005 Bill Nottingham <notting at redhat.com> 1.3.20-1
-- fix deletion of orphaned slave links (#131496, <mitr at redhat.com>)
-
-* Fri Apr 29 2005 Bill Nottingham <notting at redhat.com> 1.3.19-1
-- build with updated translations
-
-* Thu Mar 3 2005 Bill Nottingham <notting at redhat.com> 1.3.18-1
-- actually return an error code if changing a service info fails
-
-* Tue Feb 22 2005 Bill Nottingham <notting at redhat.com> 1.3.17-1
-- more chkconfig: vs. LSB fixes (#149066)
-
-* Thu Feb 10 2005 Bill Nottingham <notting at redhat.com> 1.3.16-1
-- prefer chkconfig: start/stop priorities in LSB mode unless
- Required-Start/Stop are used
-
-* Mon Feb 7 2005 Bill Nottingham <notting at redhat.com> 1.3.15-1
-- print usage when various invalid args are passed (#147393)
-
-* Wed Feb 2 2005 Bill Nottingham <notting at redhat.com> 1.3.14-1
-- resize reasonably with larger screens (#74156)
-- don't error out completely on bad symlink (#74324)
-- use ngettext (#106176)
-- error out on invalid start/stop values (#109858)
-- some man page updates
-- fix return code of chkconfig for xinetd services (#63123)
-- sort chkconfig --list display (#61576, <shishz at alum.rpi.edu>)
-
-* Tue Jan 11 2005 Bill Nottingham <notting at redhat.com> 1.3.13-1
-- fix LSB comment parsing some more (#144739)
-
-* Thu Oct 28 2004 Bill Nottingham <notting at redhat.com> 1.3.11.2-1
-- fix manpage reference (#137492)
-
-* Fri Oct 1 2004 Bill Nottingham <notting at redhat.com> 1.3.11.1-1
-- rebuild with updated translations
-
-* Fri Jun 4 2004 Bill Nottingham <notting at redhat.com> 1.3.11-1
-- fix LSB comment parsing (#85678)
-
-* Wed May 29 2004 Bill Nottingham <notting at redhat.com> 1.3.10-1
-- mark alternatives help output for translation (#110526)
-
-* Wed Oct 22 2003 Bill Nottingham <notting at redhat.com> 1.3.9-1
-- update translations
-
-* Mon Jul 28 2003 Bill Nottingham <notting at redhat.com> 1.3.8-4
-- rebuild
-
-* Tue May 13 2003 Dan Walsh <dwalsh at redhat.com> 1.3.8-3
-- Update for RHEL
-
-* Thu May 8 2003 Dan Walsh <dwalsh at redhat.com> 1.3.8-2
-- Fix readXinetdServiceInfo to return error on not regular files
-- Fix chkconfig to not write messages if readXinetdServiceInfo gets an error
-
-* Fri Jan 31 2003 Bill Nottingham <notting at redhat.com> 1.3.8-1
-- fix some wording in alternatives (#76213)
-- actually mark alternatives for translation
-
-* Thu Dec 12 2002 Elliot Lee <sopwith at redhat.com> 1.3.7-1
-- Link to libpopt in a multilib-safe fashion.
-
-* Thu Aug 29 2002 Trond Eivind Glomsrød <teg at redhat.com> 1.3.6-3
-- bump
-
-* Thu Aug 15 2002 Bill Nottingham <notting at redhat.com> 1.3.6-2
-- rebuild against new newt
-
-* Mon Aug 12 2002 Bill Nottingham <notting at redhat.com> 1.3.6-1
-- make on and off handle runlevel 2 too (#70766)
-
-* Mon Apr 15 2002 Trond Eivind Glomsrød <teg at redhat.com> 1.3.5-3
-- Update translations
-
-* Mon Apr 15 2002 Trond Eivind Glomsrød <teg at redhat.com> 1.3.5-2
-- Update translations
-
-* Sun Apr 7 2002 Jeremy Katz <katzj at redhat.com> 1.3.5-1
-- alternatives: handle default with --config properly (#62009)
-
-* Thu Mar 14 2002 Bill Nottingham <notting at redhat.com> 1.3.4-1
-- don't apply the dependency logic to things that already have
- start/stop priorities
-- fix silly display bug in --config
-
-* Tue Mar 12 2002 Bill Nottingham <notting at redhat.com> 1.3.2-1
-- chkconfig: LSB support
-
-* Fri Mar 8 2002 Bill Nottingham <notting at redhat.com>
-- alternatives: handle initscripts too; --initscript command-line option
-- chkconfig/ntsysv (and serviceconf, indirectly): services with
- *no* links in /etc/rc*.d are no longer displayed with --list, or
- available for configuration except via chkconfig command-line options
-- alternatives: fix trying to enable disable a null service
-
-* Tue Mar 5 2002 Bill Nottingham <notting at redhat.com>
-- alternatives: handle things with different numbers of slave links
-
-* Mon Mar 4 2002 Bill Nottingham <notting at redhat.com>
-- minor alternatives tweaks: don't install the same thing multiple times
-
-* Wed Jan 30 2002 Bill Nottingham <notting at redhat.com>
-- actually, put the alternatives stuff back in /usr/sbin
-- ship /etc/alternatives dir
-- random alternatives fixes
-
-* Sun Jan 27 2002 Erik Troan <ewt at redhat.com>
-- reimplemented update-alternatives as just alternatives
-
-* Thu Jan 25 2002 Bill Nottingham <notting at redhat.com>
-- add in update-alternatives stuff (perl ATM)
-
-* Mon Aug 27 2001 Trond Eivind Glomsrød <teg at redhat.com>
-- Update translations
-
-* Tue Jun 12 2001 Bill Nottingham <notting at redhat.com>
-- don't segfault on files that are exactly the length of a page size
- (#44199, <kmori at redhat.com>)
-
-* Sun Mar 4 2001 Bill Nottingham <notting at redhat.com>
-- don't show xinetd services in ntsysv if xinetd doesn't appear to be
- installed (#30565)
-
-* Wed Feb 14 2001 Preston Brown <pbrown at redhat.com>
-- final translation update.
-
-* Tue Feb 13 2001 Preston Brown <pbrown at redhat.com>
-- warn in ntsysv if not running as root.
-
-* Fri Feb 2 2001 Preston Brown <pbrown at redhat.com>
-- use lang finder script
-
-* Fri Feb 2 2001 Bill Nottingham <notting at redhat.com>
-- finally fix the bug Nalin keeps complaining about :)
-
-* Wed Jan 24 2001 Preston Brown <pbrown at redhat.com>
-- final i18n update before Beta.
-
-* Wed Oct 18 2000 Bill Nottingham <notting at redhat.com>
-- ignore .rpmnew files (#18915)
-- fix typo in error message (#17575)
-
-* Wed Aug 30 2000 Nalin Dahyabhai <nalin at redhat.com>
-- make xinetd config files mode 0644, not 644
-
-* Thu Aug 24 2000 Erik Troan <ewt at redhat.com>
-- updated it and es translations
-
-* Sun Aug 20 2000 Bill Nottingham <notting at redhat.com>
-- get man pages in proper packages
-
-* Sun Aug 20 2000 Matt Wilson <msw at redhat.com>
-- new translations
-
-* Tue Aug 16 2000 Nalin Dahyabhai <nalin at redhat.com>
-- don't worry about extra whitespace on chkconfig: lines (#16150)
-
-* Wed Aug 10 2000 Trond Eivind Glomsrød <teg at redhat.com>
-- i18n merge
-
-* Wed Jul 26 2000 Matt Wilson <msw at redhat.com>
-- new translations for de fr it es
-
-* Tue Jul 25 2000 Bill Nottingham <notting at redhat.com>
-- change prereqs
-
-* Sun Jul 23 2000 Bill Nottingham <notting at redhat.com>
-- fix ntsysv's handling of xinetd/init files with the same name
-
-* Fri Jul 21 2000 Bill Nottingham <notting at redhat.com>
-- fix segv when reading malformed files
-
-* Wed Jul 19 2000 Bill Nottingham <notting at redhat.com>
-- put links, rc[0-6].d dirs back, those are necessary
-
-* Tue Jul 18 2000 Bill Nottingham <notting at redhat.com>
-- add quick hack support for reading descriptions from xinetd files
-
-* Mon Jul 17 2000 Bernhard Rosenkraenzer <bero at redhat.com>
-- don't own the /etc/rc[0-6].d symlinks; they're owned by initscripts
-
-* Sat Jul 15 2000 Matt Wilson <msw at redhat.com>
-- move back to old file layout
-
-* Thu Jul 13 2000 Preston Brown <pbrown at redhat.com>
-- bump copyright date
-
-* Tue Jul 11 2000 Bill Nottingham <notting at redhat.com>
-- no %%pre today. Maybe tomorrow.
-
-* Thu Jul 6 2000 Bill Nottingham <notting at redhat.com>
-- put initscripts %%pre here too
-
-* Mon Jul 3 2000 Bill Nottingham <notting at redhat.com>
-- oops, if we don't prereq initscripts, we *need* to own /etc/rc[0-6].d
-
-* Sun Jul 2 2000 Bill Nottingham <notting at redhat.com>
-- add xinetd support
-
-* Tue Jun 27 2000 Matt Wilson <msw at redhat.com>
-- changed Prereq: initscripts >= 5.18 to Conflicts: initscripts < 5.18
-- fixed sumary and description where a global string replace nuked them
-
-* Mon Jun 26 2000 Matt Wilson <msw at redhat.com>
-- what Bill said, but actually build this version
-
-* Thu Jun 15 2000 Bill Nottingham <notting at redhat.com>
-- don't own /etc/rc.*
-
-* Fri Feb 11 2000 Bill Nottingham <notting at redhat.com>
-- typo in man page
-
-* Wed Feb 02 2000 Cristian Gafton <gafton at redhat.com>
-- fix description
-
-* Wed Jan 12 2000 Bill Nottingham <notting at redhat.com>
-- link chkconfig statically against popt
-
-* Mon Oct 18 1999 Bill Nottingham <notting at redhat.com>
-- fix querying alternate levels
-
-* Mon Aug 23 1999 Jeff Johnson <jbj at redhat.com>
-- don't use strchr to skip unwanted files, look at extension instead (#4166).
-
-* Thu Aug 5 1999 Bill Nottingham <notting at redhat.com>
-- fix --help, --verson
-
-* Mon Aug 2 1999 Matt Wilson <msw at redhat.com>
-- rebuilt ntsysv against newt 0.50
-
-* Mon Aug 2 1999 Jeff Johnson <jbj at redhat.com>
-- fix i18n problem in usage message (#4233).
-- add --help and --version.
-
-* Mon Apr 19 1999 Cristian Gafton <gafton at redhat.com>
-- release for Red Hat 6.0
-
-* Thu Apr 8 1999 Matt Wilson <msw at redhat.com>
-- added support for a "hide: true" tag in initscripts that will make
- services not appear in ntsysv when run with the "--hide" flag
-
-* Thu Apr 1 1999 Matt Wilson <msw at redhat.com>
-- added --hide flag for ntsysv that allows you to hide a service from the
- user.
-
-* Mon Mar 22 1999 Bill Nottingham <notting at redhat.com>
-- fix glob, once and for all. Really. We mean it.
-
-* Thu Mar 18 1999 Bill Nottingham <notting at redhat.com>
-- revert fix for services at levels, it's broken
-- change default to only edit the current runlevel
-
-* Mon Mar 15 1999 Bill Nottingham <notting at redhat.com>
-- don't remove scripts that don't support chkconfig
-
-* Tue Mar 09 1999 Erik Troan <ewt at redhat.com>
-- made glob a bit more specific so xinetd and inetd don't cause improper matches
-
-* Thu Feb 18 1999 Matt Wilson <msw at redhat.com>
-- removed debugging output when starting ntsysv
-
-* Thu Feb 18 1999 Preston Brown <pbrown at redhat.com>
-- fixed globbing error
-- fixed ntsysv running services not at their specified levels.
-
-* Tue Feb 16 1999 Matt Wilson <msw at redhat.com>
-- print the value of errno on glob failures.
-
-* Sun Jan 10 1999 Matt Wilson <msw at redhat.com>
-- rebuilt for newt 0.40 (ntsysv)
-
-* Tue Dec 15 1998 Jeff Johnson <jbj at redhat.com>
-- add ru.po.
-
-* Thu Oct 22 1998 Bill Nottingham <notting at redhat.com>
-- build for Raw Hide (slang-1.2.2)
-
-* Wed Oct 14 1998 Cristian Gafton <gafton at redhat.com>
-- translation updates
-
-* Thu Oct 08 1998 Cristian Gafton <gafton at redhat.com>
-- updated czech translation (and use cs instead of cz)
-
-* Tue Sep 22 1998 Arnaldo Carvalho de Melo <acme at conectiva.com.br>
-- added pt_BR translations
-- added more translatable strings
-- support for i18n init.d scripts description
-
-* Sun Aug 02 1998 Erik Troan <ewt at redhat.com>
-- built against newt 0.30
-- split ntsysv into a separate package
-
-* Thu May 07 1998 Erik Troan <ewt at redhat.com>
-- added numerous translations
-
-* Mon Mar 23 1998 Erik Troan <ewt at redhat.com>
-- added i18n support
-
-* Sun Mar 22 1998 Erik Troan <ewt at redhat.com>
-- added --back
--- chkconfig-1.3.46/leveldb.c
+++ chkconfig-1.3.46/leveldb.c
-/* Copyright 1997-2008 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-#include <alloca.h>
-#include <ctype.h>
-#include <dirent.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <glob.h>
-#include <libintl.h>
-#include <locale.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-/* Changes
- 1998-09-22 - Arnaldo Carvalho de Melo <acme at conectiva.com.br>
- i18n for init.d scripts (eg.: description(pt_BR) is a brazilian
- portuguese description for the package)
-*/
-
-#define _(String) gettext((String))
-
-#include "leveldb.h"
-
-int parseLevels(char * str, int emptyOk) {
- char * chptr = str;
- int rc = 0;
-
- if (!str || !strlen(str))
- return emptyOk ? 0 : -1;
-
- while (*chptr) {
- if (!isdigit(*chptr) || *chptr > '6') return -1;
- rc |= 1 << (*chptr - '0');
- chptr++;
- }
-
- return rc;
-}
-
-int readDescription(char *start, char *bufstop, char **english_desc, char **serv_desc) {
- char english;
- char my_lang_loaded = 0;
- char is_my_lang = 0;
- char * lang = getenv ("LANG");
- char * final_parenthesis;
- char * end, *next;
- int i;
-
- english = *start == ':';
- end = strchr(start, '\n');
- if (!end)
- next = end = bufstop;
- else
- next = end + 1;
-
- if (!english) {
- if (*start != '(') {
- return 1;
- }
-
- ++start;
- final_parenthesis = strchr (start, ')');
-
- if (final_parenthesis == NULL || final_parenthesis - start > 5) {
- return 1;
- }
-
- is_my_lang = lang ? strncmp (lang, start, strlen (lang)) == 0 : 0;
- start = final_parenthesis + 2;
- } else ++start;
-
- while (isspace(*start) && start < end) start++;
- if (start >= end) {
- return 1;
- }
- {
- char* desc = malloc(end - start + 1);
- strncpy(desc, start, end - start);
- desc[end - start] = '\0';
-
- start = next;
-
- while (desc[strlen(desc) - 1] == '\\') {
- desc[strlen(desc) - 1] = '\0';
- start = next;
-
- while (isspace(*start) && start < bufstop) start++;
- if (start == bufstop || *start != '#') {
- return 1;
- }
-
- start++;
-
- while (isspace(*start) && start < bufstop) start++;
- if (start == bufstop) {
- return 1;
- }
-
- end = strchr(start, '\n');
- if (!end)
- next = end = bufstop;
- else
- next = end + 1;
-
- i = strlen(desc);
- desc = realloc(desc, i + end - start + 1);
- strncat(desc, start, end - start);
- desc[i + end - start] = '\0';
-
- start = next;
- }
-
- if (desc) {
- if (my_lang_loaded) {
- free(desc);
- } else if (is_my_lang) {
- if (*serv_desc)
- free(*serv_desc);
-
- *serv_desc = desc;
- return 0;
- } else if (english) {
- if (*serv_desc)
- free(*serv_desc);
-
- if (*english_desc)
- free (*english_desc);
-
- *english_desc = desc;
- } else free (desc);
- }
- }
- return 0;
-}
-
-int readXinetdServiceInfo(char *name, struct service * service, int honorHide) {
- char * filename = alloca(strlen(name) + strlen(XINETDDIR) + 50);
- int fd;
- struct service serv = {
- name: NULL,
- levels: -1,
- kPriority: -1,
- sPriority: -1,
- desc: NULL,
- startDeps: NULL,
- stopDeps: NULL,
- softStartDeps: NULL,
- softStopDeps: NULL,
- provides: NULL,
- type: TYPE_XINETD,
- isLSB: 0,
- enabled: -1
- };
- struct stat sb;
- char * buf, *ptr;
- char * eng_desc = NULL, *start;
-
- snprintf(filename, strlen(name)+strlen(XINETDDIR)+50, XINETDDIR "/%s", name);
-
- if ((fd = open(filename, O_RDONLY)) < 0) return -1;
- fstat(fd,&sb);
- if (! S_ISREG(sb.st_mode)) return -1;
- buf = malloc(sb.st_size+1);
- if (read(fd,buf,sb.st_size)!=sb.st_size) {
- close(fd);
- free(buf);
- return -1;
- }
- close(fd);
- serv.name = strdup(name);
- buf[sb.st_size] = '\0';
- start = buf;
- while (buf) {
- ptr = strchr(buf,'\n');
- if (*buf == '#') {
- buf++;
- while (isspace(*buf) && buf < ptr) buf++;
- if (!strncmp(buf,"default:", 9)) {
- buf+=8;
- while(isspace(*buf)) buf++;
- if (!strncmp(buf+9,"on",2)) {
- serv.enabled = 1;
- } else {
- serv.enabled = 0;
- }
- } else if (!strncmp(buf,"description:",12)) {
- buf+=11;
- if (readDescription(buf,start+sb.st_size,
- &serv.desc,&eng_desc)) {
- if (serv.desc) free(serv.desc);
- }
- if (!serv.desc) {
- if (eng_desc)
- serv.desc = eng_desc;
- else
- serv.desc = strdup(name);
- } else if (eng_desc)
- free (eng_desc);
- }
- if (ptr) {
- *ptr = '\0';
- ptr++;
- }
- buf = ptr;
- continue;
- }
- while (isspace(*buf) && buf < ptr) buf++;
- if (!strncmp(buf,"disable", 7)) {
- buf = strstr(buf,"=");
- if (buf)
- do {
- buf++;
- } while(isspace(*buf));
-
- if (buf && strncmp(buf,"yes",3)) {
- serv.levels = parseLevels("0123456",0);
- if (serv.enabled == -1)
- serv.enabled = 1;
- } else {
- serv.levels = 0;
- if (serv.enabled == -1)
- serv.enabled = 0;
- }
- }
- if (ptr) {
- *ptr = '\0';
- ptr++;
- }
- buf = ptr;
- }
- *service = serv;
- return 0;
-}
-
-int readServices(struct service **services) {
- DIR * dir;
- struct dirent * ent;
- struct stat sb;
- struct service *servs = NULL;
- int numservs = 0;
- char fn[1024];
-
- if (!(dir = opendir(RUNLEVELS "/init.d"))) {
- fprintf(stderr, _("failed to open %s/init.d: %s\n"), RUNLEVELS,
- strerror(errno));
- return 1;
- }
-
- while ((ent = readdir(dir))) {
- const char *dn;
-
- /* Skip any file starting with a . */
- if (ent->d_name[0] == '.') continue;
-
- /* Skip files with known bad extensions */
- if ((dn = strrchr(ent->d_name, '.')) != NULL &&
- (!strcmp(dn, ".rpmsave") || !strcmp(dn, ".rpmnew") || !strcmp(dn, ".rpmorig") || !strcmp(dn, ".swp")))
- continue;
-
- dn = ent->d_name + strlen(ent->d_name) - 1;
- if (*dn == '~' || *dn == ',')
- continue;
-
- sprintf(fn, RUNLEVELS "/init.d/%s", ent->d_name);
- if (stat(fn, &sb)) {
- continue;
- }
- if (!S_ISREG(sb.st_mode)) continue;
- servs = realloc(servs, (numservs+1) * sizeof(struct service));
- if (!readServiceInfo(ent->d_name, TYPE_INIT_D, servs + numservs, 0))
- numservs++;
- }
- *services = servs;
- return numservs;
-}
-
-int readServiceInfo(char * name, int type, struct service * service, int honorHide) {
- char * filename = alloca(strlen(name) + strlen(RUNLEVELS) + 50);
- int fd;
- struct service serv, serv_overrides;
- int parseret;
-
- if (!(type & TYPE_INIT_D))
- goto try_xinetd;
-
- sprintf(filename, RUNLEVELS "/init.d/%s", name);
-
- if ((fd = open(filename, O_RDONLY)) < 0)
- goto try_xinetd;
-
- parseret = parseServiceInfo(fd, name, &serv, honorHide, 0);
- if (parseret)
- return parseret;
-
- sprintf(filename, RUNLEVELS "/chkconfig.d/%s", name);
- if ((fd = open(filename, O_RDONLY)) >= 0) {
- parseret = parseServiceInfo(fd, name, &serv_overrides, honorHide, 1);
- if (parseret >= 0) {
- if (serv_overrides.name) serv.name = serv_overrides.name;
- if (serv_overrides.levels != -1) serv.levels = serv_overrides.levels;
- if (serv_overrides.kPriority != -2) serv.kPriority = serv_overrides.kPriority;
- if (serv_overrides.sPriority != -2) serv.sPriority = serv_overrides.sPriority;
- if (serv_overrides.desc) serv.desc = serv_overrides.desc;
- if (serv_overrides.startDeps) serv.startDeps = serv_overrides.startDeps;
- if (serv_overrides.stopDeps) serv.stopDeps = serv_overrides.stopDeps;
- if (serv_overrides.softStartDeps) serv.softStartDeps = serv_overrides.softStartDeps;
- if (serv_overrides.softStopDeps) serv.softStopDeps = serv_overrides.softStopDeps;
- if (serv_overrides.provides) serv.provides = serv_overrides.provides;
- if (serv_overrides.isLSB || serv.isLSB) serv.isLSB = 1;
- }
- }
-
- *service = serv;
- return 0;
-
-try_xinetd:
- if (!(type & TYPE_XINETD))
- return -1;
- return readXinetdServiceInfo(name,service,honorHide);
-}
-
-int readServiceDifferences(char * name, int type, struct service * service, struct service * service_overrides, int honorHide) {
- char * filename = alloca(strlen(name) + strlen(RUNLEVELS) + 50);
- int fd;
- struct service serv, serv_overrides;
- int parseret;
-
- if (!(type & TYPE_INIT_D))
- goto try_xinetd;
-
- sprintf(filename, RUNLEVELS "/init.d/%s", name);
-
- if ((fd = open(filename, O_RDONLY)) < 0) {
- goto try_xinetd;
- }
-
- parseret = parseServiceInfo(fd, name, &serv, honorHide, 0);
- if (parseret) {
- return parseret;
- }
-
- sprintf(filename, RUNLEVELS "/chkconfig.d/%s", name);
- if ((fd = open(filename, O_RDONLY)) >= 0) {
- parseret = parseServiceInfo(fd, name, &serv_overrides, honorHide, 1);
- } else {
- return 1;
- }
- if (parseret) {
- return 1;
- }
-
- *service = serv;
- *service_overrides = serv_overrides;
- return 0;
-
-try_xinetd:
- if (!(type & TYPE_XINETD))
- return -1;
- return readXinetdServiceInfo(name,service,honorHide);
-}
-
-static struct dep *parseDeps(char *pos, char *end) {
- char *t;
- int numdeps = 0;
- struct dep *deps = NULL;
-
- while (1) {
- while (*pos && isspace(*pos) && pos < end) pos++;
- if (pos == end)
- break;
- t = pos;
- while (*t && !isspace(*t) && t < end) t++;
- if (isspace(*t)) {
- *t = '\0';
- t++;
- }
- numdeps++;
- deps = realloc(deps,
- (numdeps + 1) * sizeof(struct dep));
- deps[numdeps-1].name = strdup(pos);
- deps[numdeps-1].handled = 0;
- memset(&deps[numdeps],'\0',sizeof(struct dep));
- if (!t || t >= end)
- break;
- else
- pos = t;
- }
- return deps;
-}
-
-
-int parseServiceInfo(int fd, char * name, struct service * service, int honorHide, int partialOk) {
- struct stat sb;
- char * bufstart, * bufstop, * start, * end, * next, *tmpbufstart;
- struct service serv = {
- name: NULL,
- levels: -1,
- kPriority: -1,
- sPriority: -1,
- desc: NULL,
- startDeps: NULL,
- stopDeps: NULL,
- softStartDeps: NULL,
- softStopDeps: NULL,
- provides: NULL,
- type: TYPE_INIT_D,
- isLSB: 0,
- enabled: 0
- };
- char overflow;
- char levelbuf[20];
- char * english_desc = NULL;
-
- fstat(fd, &sb);
-
- bufstart = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, fd, 0);
- if (bufstart == ((caddr_t) -1)) {
- close(fd);
- return -1;
- }
-
- tmpbufstart = (char*)malloc(sb.st_size+1);
- if (tmpbufstart == NULL) {
- close(fd);
- return -1;
- }
-
- memcpy(tmpbufstart, bufstart, sb.st_size);
- munmap(bufstart, sb.st_size);
-
- bufstart = tmpbufstart;
- bufstop = bufstart + sb.st_size;
- *bufstop = 0;
-
- close(fd);
-
- next = bufstart;
- while (next < bufstop && (serv.levels == -1 || !serv.desc)) {
- start = next;
-
- while (isspace(*start) && start < bufstop) start++;
- if (start == bufstop) break;
-
- end = strchr(start, '\n');
- if (!end)
- next = end = bufstop;
- else
- next = end + 1;
-
- if (*start != '#') continue;
-
- start++;
- if (!strncmp(start, "## BEGIN INIT INFO", 18))
- serv.isLSB = 1;
-
- while (isspace(*start) && start < end) start++;
- if (start == end) continue;
- if (honorHide && !strncmp(start, "hide:", 5)) {
- start += 5;
- while (isspace(*start) && start < end) start++;
- if (start == end || !strncmp(start, "true", 4)) {
- if (serv.desc) free(serv.desc);
- free(bufstart);
- return 1;
- }
- }
-
- if (!strncmp(start, "chkconfig:", 10)) {
- int spri, kpri;
-
- start += 10;
- while (isspace(*start) && start < end) start++;
- if (start == end) {
- if (serv.desc) free(serv.desc);
- free(bufstart);
- return 1;
- }
-
- if ((sscanf(start, "%15s %d %d%c", levelbuf,
- &spri, &kpri, &overflow) != 4) ||
- !isspace(overflow)) {
- if (serv.desc) free(serv.desc);
- free(bufstart);
- return 1;
- }
- if (spri > 99 || kpri > 99 || kpri < 0 || spri < 0) {
- if (serv.desc) free(serv.desc);
- free(bufstart);
- return 1;
- }
- if (serv.sPriority == -1)
- serv.sPriority = spri;
- if (serv.kPriority == -1)
- serv.kPriority = kpri;
-
- if (serv.levels == -1) {
- if (!strcmp(levelbuf, "-"))
- serv.levels = 0;
- else
- serv.levels = parseLevels(levelbuf, 0);
- }
- if (serv.levels == -1) {
- if (serv.desc) free(serv.desc);
- free(bufstart);
- return 1;
- }
- } else if (!strncmp(start, "description", 11) ||
- !strncmp(start, "Description:", 12)) {
- if (readDescription(start+11, bufstop, &english_desc, &serv.desc)) {
- if (serv.desc) free(serv.desc);
- }
- } else if (!strncmp(start, "Short-Description:", 18)) {
- if (readDescription(start+17, bufstop, &english_desc, &serv.desc)) {
- if (serv.desc) free(serv.desc);
- }
- } else if (!strncmp(start, "Default-Start:", 14)) {
- char *t;
-
- start+=14;
- while (1) {
- int lev;
-
- lev = strtol(start, &t, 10);
- if (t && t != start)
- start = t;
- else
- break;
- if (serv.levels == -1)
- serv.levels = 0;
- serv.levels |= 1 << lev;
- }
- } else if (!strncmp(start, "Default-Stop:", 13)) {
- char *t;
-
- start+=13;
- while (1) {
- int lev;
-
- lev = strtol(start, &t, 10);
- if (t && t != start)
- start = t;
- else
- break;
- if (serv.levels == -1)
- serv.levels = 0;
- serv.levels &= ~(1 << lev);
- }
- } else if (!strncmp(start, "Required-Start:", 15)) {
- start+=15;
- serv.startDeps = parseDeps(start, end);
- } else if (!strncmp(start, "Required-Stop:", 14)) {
- start+=14;
- serv.stopDeps = parseDeps(start, end);
- } else if (!strncmp(start, "Should-Start:", 13)) {
- start+=13;
- serv.softStartDeps = parseDeps(start, end);
- } else if (!strncmp(start, "Should-Stop:", 12)) {
- start+=12;
- serv.softStopDeps = parseDeps(start, end);
- } else if (!strncmp(start, "Provides:", 9)) {
- char *t;
- int numdeps = 0;
-
- start+=9;
- while (1) {
- while (*start && isspace(*start) && start < end) start++;
- if (start == end)
- break;
- t = start;
- while (*t && !isspace(*t) && t < end) t++;
- if (isspace(*t)) {
- *t = '\0';
- t++;
- }
- numdeps++;
- serv.provides = realloc(serv.provides,
- (numdeps + 1) * sizeof(char *));
- serv.provides[numdeps-1] = strdup(start);
- serv.provides[numdeps] = NULL;
- if (!t || t >= end)
- break;
- else
- start = t;
- }
-
- }
- }
-
- free(bufstart);
-
- if (!serv.desc) {
- if (english_desc)
- serv.desc = english_desc;
- else
- serv.desc = strdup(name);
- } else if (english_desc)
- free (english_desc);
-
- if (!partialOk && ((serv.levels == -1) || !serv.desc || (!serv.isLSB && (serv.sPriority == -1 || serv.kPriority == -1)))) {
- return 1;
- }
-
- serv.name = strdup(name);
- if (!serv.provides) {
- serv.provides = malloc(2 * sizeof(char *));
- serv.provides[0] = strdup(name);
- serv.provides[1] = NULL;
- }
-
- *service = serv;
- return 0;
-}
-
-/* returns -1 on error */
-int currentRunlevel(void) {
- FILE * p;
- char response[50];
-
- p = popen("/sbin/runlevel", "r");
- if (!p) return -1;
-
- if (!fgets(response, sizeof(response), p)) {
- pclose(p);
- return -1;
- }
-
- pclose(p);
-
- if (response[1] != ' ' || !isdigit(response[2]) || response[3] != '\n')
- return -1;
-
- return response[2] - '0';
-}
-
-int findServiceEntries(char * name, int level, glob_t * globresptr) {
- char match[200];
- glob_t globres;
- int rc;
-
- sprintf(match, "%s/rc%d.d/[SK][0-9][0-9]%s", RUNLEVELS, level, name);
-
- rc = glob(match, GLOB_ERR | GLOB_NOSORT, NULL, &globres);
-
- if (rc && rc != GLOB_NOMATCH) {
- fprintf(stderr, _("failed to glob pattern %s: %s\n"), match,
- strerror(errno));
- return 1;
- } else if (rc == GLOB_NOMATCH) {
- globresptr->gl_pathc = 0;
- return 0;
- }
-
- *globresptr = globres;
- return 0;
-}
-
-int isConfigured(char * name, int level, int *priority, char *type) {
- glob_t globres;
- char *pri_string;
-
- if (findServiceEntries(name, level, &globres))
- exit(1);
-
- if (!globres.gl_pathc)
- return 0;
-
- if (type) {
- *type = globres.gl_pathv[0][11];
- }
-
- if (priority) {
- pri_string = strndup(globres.gl_pathv[0]+12, 2);
- if (!pri_string) return 0;
- sscanf(pri_string, "%d", priority);
- free(pri_string);
- }
-
- globfree(&globres);
- return 1;
-}
-
-int isOn(char * name, int level) {
- glob_t globres;
-
- if (level == -1) {
- level = currentRunlevel();
- if (level == -1) {
- fprintf(stderr, _("cannot determine current run level\n"));
- return 0;
- }
- }
-
- if (findServiceEntries(name, level, &globres))
- exit(1);
-
- if (!globres.gl_pathc || !strstr(globres.gl_pathv[0], "/S"))
- return 0;
-
- globfree(&globres);
- return 1;
-}
-
-int setXinetdService(struct service s, int on) {
- int oldfd, newfd;
- char oldfname[100], newfname[100];
- char tmpstr[50];
- char *buf, *ptr, *tmp;
- struct stat sb;
-
- if (on == -1) {
- on = s.enabled ? 1 : 0;
- }
- snprintf(oldfname,100,"%s/%s",XINETDDIR,s.name);
- if ( (oldfd = open(oldfname,O_RDONLY)) == -1 ) {
- return -1;
- }
- fstat(oldfd,&sb);
- buf = malloc(sb.st_size+1);
- if (read(oldfd,buf,sb.st_size)!=sb.st_size) {
- close(oldfd);
- free(buf);
- return -1;
- }
- close(oldfd);
- buf[sb.st_size] = '\0';
- snprintf(newfname,100,"%s/%s.XXXXXX",XINETDDIR,s.name);
- newfd = mkstemp(newfname);
- if (newfd == -1) {
- free(buf);
- return -1;
- }
- while (buf) {
- tmp = buf;
- ptr = strchr(buf,'\n');
- if (ptr) {
- *ptr = '\0';
- ptr++;
- }
- while (isspace(*buf)) buf++;
- if (strncmp(buf,"disable", 7) && strlen(buf)) {
- write(newfd,tmp,strlen(tmp));
- write(newfd,"\n",1);
- if (buf[0] == '{') {
- snprintf(tmpstr,50,"\tdisable\t= %s", on ? "no" : "yes");
- write(newfd,tmpstr,strlen(tmpstr));
- write(newfd,"\n",1);
- }
- }
- buf = ptr;
- }
- close(newfd);
- chmod(newfname,0644);
- unlink(oldfname);
- return(rename(newfname,oldfname));
-}
-
-int doSetService(struct service s, int level, int on) {
- int priority = on ? s.sPriority : s.kPriority;
- char linkname[200];
- char linkto[200];
- glob_t globres;
- int i;
-
- if (!findServiceEntries(s.name, level, &globres)) {
- for (i = 0; i < globres.gl_pathc; i++)
- unlink(globres.gl_pathv[i]);
- if (globres.gl_pathc) globfree(&globres);
- }
-
- sprintf(linkname, "%s/rc%d.d/%c%02d%s", RUNLEVELS, level,
- on ? 'S' : 'K', priority, s.name);
- sprintf(linkto, "../init.d/%s", s.name);
-
- unlink(linkname); /* just in case */
- if (symlink(linkto, linkname)) {
- fprintf(stderr, _("failed to make symlink %s: %s\n"), linkname,
- strerror(errno));
- return 1;
- }
-
- return 0;
-}
-
--- chkconfig-1.3.46/leveldb.h
+++ chkconfig-1.3.46/leveldb.h
-/* Copyright 1997-2008 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-#ifndef H_LEVELDB
-#define H_LEVELDB
-
-#define RUNLEVELS "/etc"
-#define XINETDDIR "/etc/xinetd.d"
-
-#include <glob.h>
-
-#define TYPE_INIT_D 0x1
-#define TYPE_XINETD 0x2
-#define TYPE_ANY (TYPE_INIT_D | TYPE_XINETD)
-
-struct dep {
- char *name;
- int handled;
-};
-
-struct service {
- char * name;
- int levels, kPriority, sPriority;
- char * desc;
- struct dep *startDeps;
- struct dep *stopDeps;
- struct dep *softStartDeps;
- struct dep *softStopDeps;
- char **provides;
- int type;
- int isLSB;
- int enabled;
-};
-
-int parseLevels(char * str, int emptyOk);
-
-/* returns 0 on success, 1 if the service is not chkconfig-able, -1 if an
- I/O error occurs (in which case errno can be checked) */
-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);
-int parseServiceInfo(int fd, char * name, struct service * service, int honorHide, int partialOk);
-int currentRunlevel(void);
-int isOn(char * name, int where);
-int isConfigured(char * name, int level, int *priority, char *type);
-int doSetService(struct service s, int level, int on);
-int findServiceEntries(char * name, int level, glob_t * globresptr);
-int readXinetdServiceInfo(char *name, struct service *service, int honorHide);
-int setXinetdService(struct service s, int on);
-
-#endif
--- chkconfig-1.3.46/ntsysv.8
+++ chkconfig-1.3.46/ntsysv.8
(renamed to chkconfig-1.3.48/ntsysv.8)
--- chkconfig-1.3.46/ntsysv.c
+++ chkconfig-1.3.46/ntsysv.c
-/* Copyright 1997-2007 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-#include <alloca.h>
-#include <ctype.h>
-#include <dirent.h>
-#include <errno.h>
-#include <libintl.h>
-#include <locale.h>
-#include <newt.h>
-#include <popt.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#define _(String) gettext((String))
-
-#include "leveldb.h"
-
-/* return 1 on cancel, 2 on error, 0 on success */
-static int servicesWindow(struct service * services, int numServices,
- int levels, int backButton) {
- newtComponent label, subform, ok, cancel;
- newtComponent * checkboxes, form, curr, blank;
- newtComponent sb = NULL;
- newtGrid grid, subgrid, buttons;
- char * states;
- int i, done = 0, update = 0, j;
- int width, height;
- struct newtExitStruct e;
-
- newtPushHelpLine(_("Press <F1> for more information on a service."));
-
- newtGetScreenSize(&width, &height);
- width = width > 80 ? width - 60 : 20;
- height = height > 25 ? height - 17 : 8;
-
-
- sb = newtVerticalScrollbar(-1, -1, height, NEWT_COLORSET_CHECKBOX,
- NEWT_COLORSET_ACTCHECKBOX);
-
- subform = newtForm(sb, NULL, 0);
- newtFormSetBackground(subform, NEWT_COLORSET_CHECKBOX);
- newtFormSetHeight(subform, height);
-
- checkboxes = alloca(sizeof(*checkboxes) * numServices);
- states = alloca(sizeof(*states) * numServices);
-
- for (i = 0; i < numServices; i++) {
- if (services[i].type == TYPE_XINETD) {
- checkboxes[i] = newtCheckbox(-1, i, services[i].name,
- services[i].levels ? '*' : ' ', NULL,
- states + i);
- } else {
- for (j = 0; j < 7; j++) {
- if (levels & (1 << j)) {
- if (isOn(services[i].name, j)) break;
- }
- }
- checkboxes[i] = newtCheckbox(-1, i, services[i].name,
- (j != 7) ? '*' : ' ', NULL,
- states + i);
- }
- newtFormAddComponent(subform, checkboxes[i]);
- }
-
- newtFormSetWidth(subform, width);
-
- buttons = newtButtonBar(_("Ok"), &ok, backButton ? _("Back") : _("Cancel"),
- &cancel, NULL);
-
- blank = newtForm(NULL, NULL, 0);
- newtFormSetWidth(blank, 2);
- newtFormSetHeight(blank, height);
- newtFormSetBackground(blank, NEWT_COLORSET_CHECKBOX);
-
- subgrid = newtGridHCloseStacked(NEWT_GRID_COMPONENT, subform,
- NEWT_GRID_COMPONENT, blank,
- NEWT_GRID_COMPONENT, sb, NULL);
-
- label = newtTextboxReflowed(-1, -1, _("What services should be "
- "automatically started?"), 30, 0, 20, 0);
- grid = newtGridBasicWindow(label, subgrid, buttons);
-
- form = newtForm(NULL, NULL, 0);
- newtGridAddComponentsToForm(grid, form, 1);
- newtGridWrappedWindow(grid, _("Services"));
- newtGridFree(grid, 1);
-
- newtFormAddHotKey(form, NEWT_KEY_F1);
-
- while (!done) {
- newtFormRun(form, &e);
-
- if (e.reason == NEWT_EXIT_HOTKEY) {
- if (e.u.key == NEWT_KEY_F12) {
- done = 1;
- update = 1;
- } else {
- /* must be F1 */
- curr = newtFormGetCurrent(subform);
- for (i = 0; i < numServices; i++)
- if (curr == checkboxes[i]) break;
-
- if (i < numServices && services[i].desc)
- newtWinMessage(services[i].name, _("Ok"), services[i].desc);
- }
- } else {
- done = 1;
- update = (e.u.co == ok);
- }
- }
-
- newtPopWindow();
- newtFormDestroy(form);
-
- if (!update) return 1;
-
- for (i = 0; i < numServices; i++) {
- if (services[i].type == TYPE_XINETD) {
- if ((services[i].enabled && states[i] != '*') ||
- (!services[i].enabled && states[i] == '*'))
- setXinetdService(services[i], states[i] == '*');
- } else {
- for (j = 0; j < 7; j++) {
- if (levels & (1 << j))
- doSetService(services[i], j, states[i] == '*');
- }
- }
- }
-
- return 0;
-}
-
-static int serviceNameCmp(const void * a, const void * b) {
- const struct service * first = a;
- const struct service * second = b;
-
- return strcmp(first->name, second->name);
-}
-
-static int getServices(struct service ** servicesPtr, int * numServicesPtr,
- int backButton, int honorHide) {
- DIR * dir;
- struct dirent * ent;
- struct stat sb;
- char fn[1024];
- struct service * services;
- int numServices = 0;
- int numServicesAlloced, rc;
- int err = 0;
-
- numServicesAlloced = 10;
- services = malloc(sizeof(*services) * numServicesAlloced);
-
- if (!(dir = opendir(RUNLEVELS "/init.d"))) {
- fprintf(stderr, "failed to open " RUNLEVELS "/init.d: %s\n",
- strerror(errno));
- return 2;
- }
-
- while ((ent = readdir(dir))) {
- if (strchr(ent->d_name, '~') || strchr(ent->d_name, ',') ||
- (ent->d_name[0] == '.')) continue;
-
- sprintf(fn, RUNLEVELS "/init.d/%s", ent->d_name);
- if (stat(fn, &sb))
- {
- fprintf(stderr, _("error reading info for service %s: %s\n"),
- ent->d_name, strerror(errno));
- continue;
- }
- if (!S_ISREG(sb.st_mode)) continue;
-
- if (numServices == numServicesAlloced) {
- numServicesAlloced += 10;
- services = realloc(services,
- numServicesAlloced * sizeof(*services));
- }
-
- rc = readServiceInfo(ent->d_name, TYPE_INIT_D, services + numServices, honorHide);
-
- if (!rc) {
- int i;
-
- rc = -2;
- for (i = 0 ; i < 7 ; i++) {
- if (isConfigured(ent->d_name, i, NULL, NULL)) {
- rc = 0;
- break;
- }
- }
- }
-
- if (rc == -1) {
- fprintf(stderr, _("error reading info for service %s: %s\n"),
- ent->d_name, strerror(errno));
- closedir(dir);
- return 2;
- } else if (!rc)
- numServices++;
- }
-
- closedir(dir);
-
- if (!stat("/usr/sbin/xinetd",&sb)) {
- if (!(dir = opendir(XINETDDIR))) {
- fprintf(stderr, "failed to open " XINETDDIR ": %s\n",
- strerror(errno));
- return 2;
- }
-
- while ((ent = readdir(dir))) {
- if (strchr(ent->d_name, '~') || strchr(ent->d_name, ',') ||
- strchr(ent->d_name, '.')) continue;
-
- sprintf(fn, "%s/%s", XINETDDIR, ent->d_name);
- if (stat(fn, &sb))
- {
- err = errno;
- continue;
- }
- if (!S_ISREG(sb.st_mode)) continue;
-
- if (numServices == numServicesAlloced) {
- numServicesAlloced += 10;
- services = realloc(services,
- numServicesAlloced * sizeof(*services));
- }
-
- rc = readXinetdServiceInfo(ent->d_name, services + numServices, honorHide);
-
- if (rc == -1) {
- fprintf(stderr, _("error reading info for service %s: %s\n"),
- ent->d_name, strerror(errno));
- closedir(dir);
- return 2;
- } else if (!rc)
- numServices++;
- }
-
- if (err) {
- fprintf(stderr, _("error reading from directory %s: %s\n"),
- XINETDDIR, strerror(err));
- return 1;
- }
- }
-
- qsort(services, numServices, sizeof(*services), serviceNameCmp);
-
- *servicesPtr = services;
- *numServicesPtr = numServices;
-
- return 0;
-}
-
-int main(int argc, char ** argv) {
- struct service * services;
- int numServices;
- int levels = -1;
- char * levelsStr = NULL;
- char *progName;
- poptContext optCon;
- int rc, backButton = 0, hide = 0;
- struct poptOption optionsTable[] = {
- { "back", '\0', 0, &backButton, 0 },
- { "level", '\0', POPT_ARG_STRING, &levelsStr, 0 },
- { "hide", '\0', 0, &hide, 0 },
- { 0, 0, 0, 0, 0 }
- };
-
- setlocale(LC_ALL, "");
- bindtextdomain("chkconfig", "/usr/share/locale");
- textdomain("chkconfig");
-
- progName = argv[0];
-
- if (getuid() != 0) {
- fprintf(stderr, _("You must be root to run %s.\n"),progName);
- exit(1);
- }
-
- optCon = poptGetContext(progName, argc, argv, optionsTable, 0);
- poptReadDefaultConfig(optCon, 1);
-
- if ((rc = poptGetNextOpt(optCon)) < -1) {
- fprintf(stderr, "%s: %s\n",
- poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
- poptStrerror(rc));
- exit(1);
- }
-
- if (levelsStr) {
- levels = parseLevels(levelsStr, 0);
- if (levels == -1) {
- fprintf(stderr, _("bad argument to --levels\n"));
- exit(2);
- }
- }
-
- if (getServices(&services, &numServices, backButton, hide)) return 1;
- if (!numServices) {
- fprintf(stderr, _("No services may be managed by ntsysv!\n"));
- return 2;
- }
-
- newtInit();
- newtCls();
-
- newtPushHelpLine(NULL);
- newtDrawRootText(0, 0,
- "ntsysv " VERSION " - (C) 2000-2001 Red Hat, Inc. ");
-
- if (levels==-1)
- levels=(1<<currentRunlevel());
-
- rc = servicesWindow(services, numServices, levels, backButton);
-
- newtFinished();
-
- return rc;
-}
--- chkconfig-1.3.46/po
+++ chkconfig-1.3.46/po
-(directory)
--- chkconfig-1.3.46/po/ChangeLog
+++ chkconfig-1.3.46/po/ChangeLog
(renamed to chkconfig-1.3.48/po/ChangeLog)
--- chkconfig-1.3.46/po/Makefile
+++ chkconfig-1.3.46/po/Makefile
(renamed to chkconfig-1.3.48/po/Makefile)
--- chkconfig-1.3.46/po/ar.po
+++ chkconfig-1.3.46/po/ar.po
(renamed to chkconfig-1.3.48/po/ar.po)
--- chkconfig-1.3.46/po/as.po
+++ chkconfig-1.3.46/po/as.po
(renamed to chkconfig-1.3.48/po/as.po)
--- chkconfig-1.3.46/po/bal.po
+++ chkconfig-1.3.46/po/bal.po
(renamed to chkconfig-1.3.48/po/bal.po)
--- chkconfig-1.3.46/po/be.po
+++ chkconfig-1.3.46/po/be.po
(renamed to chkconfig-1.3.48/po/be.po)
--- chkconfig-1.3.46/po/bg.po
+++ chkconfig-1.3.46/po/bg.po
-# translation of bg.po to Bulgarian
-# translation of bg.po to
-# translation of bg.po to
-# translation of bg.po to
-# translation of chkconfig.po to
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Николай Сърмаджиев,преносим <nikolayds at msn.com>, 2004.
-# Doncho N. Gunchev <mr700 at globalnet.bg>, 2005.
-# Doncho N. Gunchev <gunchev at gmail.com>, 2007.
-# Alexander Todorov <atodorov at redhat.com>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: bg\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-04 23:29-0500\n"
-"PO-Revision-Date: 2008-03-11 10:41+0100\n"
-"Last-Translator: Alexander Todorov <atodorov at redhat.com>\n"
-"Language-Team: Bulgarian <Bulgarian Translators' Team <dict at fsa-bg.org>>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../chkconfig.c:38
-#, c-format
-msgid "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
-msgstr "%s версия %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
-
-#: ../chkconfig.c:39
-#, c-format
-msgid ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-msgstr "Програмата се разпространява свободно под условията на GPL.\n"
-
-#: ../chkconfig.c:42
-#, fuzzy, c-format
-msgid "usage: %s [--list] [--type <type>] [name]\n"
-msgstr "употреба: %s [--list] [име]\n"
-
-#: ../chkconfig.c:43
-#, c-format
-msgid " %s --add <name>\n"
-msgstr " %s --add <име>\n"
-
-#: ../chkconfig.c:44
-#, c-format
-msgid " %s --del <name>\n"
-msgstr " %s --del <име>\n"
-
-#: ../chkconfig.c:45
-#, c-format
-msgid " %s --override <name>\n"
-msgstr " %s --override <име>\n"
-
-#: ../chkconfig.c:46
-#, fuzzy, c-format
-msgid " %s [--level <levels>] [--type <type>] <name> %s\n"
-msgstr " %s [--level <нива>] <име> %s\n"
-
-#: ../chkconfig.c:53
-#, c-format
-msgid ""
-"service %s supports chkconfig, but is not referenced in any runlevel (run "
-"'chkconfig --add %s')\n"
-msgstr ""
-"услугата %s поддържа chkconfig, но не е включена в никое работно ниво "
-"(runlevel) (изпълнете chkconfig --add %s')\n"
-
-#: ../chkconfig.c:55
-#, c-format
-msgid "service %s does not support chkconfig\n"
-msgstr "услугата %s не поддържа chkconfig\n"
-
-#: ../chkconfig.c:57
-#, c-format
-msgid "error reading information on service %s: %s\n"
-msgstr "грешка при четене на информацията за услуга %s: %s\n"
-
-#: ../chkconfig.c:66
-#, c-format
-msgid "You do not have enough privileges to perform this operation.\n"
-msgstr ""
-
-#: ../chkconfig.c:351 ../chkconfig.c:356 ../chkconfig.c:470
-msgid "on"
-msgstr "да"
-
-#: ../chkconfig.c:351 ../chkconfig.c:356 ../chkconfig.c:470
-msgid "off"
-msgstr "не "
-
-#: ../chkconfig.c:432
-#, c-format
-msgid "xinetd based services:\n"
-msgstr "xinetd базирани услуги:\n"
-
-#: ../chkconfig.c:434
-#, c-format
-msgid "failed to open directory %s: %s\n"
-msgstr "неуспех при отваряне на директория %s: %s\n"
-
-#: ../chkconfig.c:578
-#, c-format
-msgid "%s version %s\n"
-msgstr "%s версия %s\n"
-
-#: ../chkconfig.c:590
-#, c-format
-msgid "--type must be 'sysv' or 'xinetd'\n"
-msgstr ""
-
-#: ../chkconfig.c:598
-#, c-format
-msgid "only one of --list, --add, --del, or --override may be specified\n"
-msgstr ""
-"може да бъде зададена само една от опциите --list, --add, --del или --"
-"override\n"
-
-#: ../chkconfig.c:658
-#, c-format
-msgid "only one runlevel may be specified for a chkconfig query\n"
-msgstr ""
-"може да бъде зададено само едно работно ниво при запитване към chkconfig\n"
-
-#: ../ntsysv.c:46
-msgid "Press <F1> for more information on a service."
-msgstr "Натиснете <F1> за повече информация за дадена услуга."
-
-#: ../ntsysv.c:83 ../ntsysv.c:120
-msgid "Ok"
-msgstr "Добре"
-
-#: ../ntsysv.c:83
-msgid "Back"
-msgstr "Назад"
-
-#: ../ntsysv.c:83
-msgid "Cancel"
-msgstr "Отказ"
-
-#: ../ntsysv.c:95
-msgid "What services should be automatically started?"
-msgstr "Кои услуги да се стартират автоматично?"
-
-#: ../ntsysv.c:101
-msgid "Services"
-msgstr "Услуги"
-
-#: ../ntsysv.c:183 ../ntsysv.c:210 ../ntsysv.c:248
-#, c-format
-msgid "error reading info for service %s: %s\n"
-msgstr "грешка при четене на информацията за услуга %s: %s\n"
-
-#: ../ntsysv.c:257
-#, c-format
-msgid "error reading from directory %s: %s\n"
-msgstr "грешка при четене от директория %s: %s\n"
-
-#: ../ntsysv.c:293
-#, c-format
-msgid "You must be root to run %s.\n"
-msgstr "За да изпълните %s трябва да бъдете root.\n"
-
-#: ../ntsysv.c:310
-#, c-format
-msgid "bad argument to --levels\n"
-msgstr "лош аргумент за --levels\n"
-
-#: ../ntsysv.c:317
-#, c-format
-msgid "No services may be managed by ntsysv!\n"
-msgstr "Няма услуги, които биха могли да се управляват от ntsysv!\n"
-
-#: ../leveldb.c:260
-#, c-format
-msgid "failed to open %s/init.d: %s\n"
-msgstr "неуспех при отваряне на %s/init.d: %s\n"
-
-#: ../leveldb.c:668
-#, c-format
-msgid "failed to glob pattern %s: %s\n"
-msgstr "невъзможно е ползването на шаблона %s: %s\n"
-
-#: ../leveldb.c:711
-#, c-format
-msgid "cannot determine current run level\n"
-msgstr "не може да се определи текущото работно ниво\n"
-
-#: ../leveldb.c:799
-#, c-format
-msgid "failed to make symlink %s: %s\n"
-msgstr "неуспех при създаване на символна връзка %s: %s\n"
-
-#: ../alternatives.c:63
-#, c-format
-msgid "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
-msgstr "alternatives версия %s - Copyright (C) 2001 Red Hat, Inc.\n"
-
-#: ../alternatives.c:64
-#, c-format
-msgid ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-"\n"
-msgstr ""
-"Програмата се разпространява свободно под условията на GPL.\n"
-"\n"
-
-#: ../alternatives.c:65
-#, c-format
-msgid "usage: alternatives --install <link> <name> <path> <priority>\n"
-msgstr "употреба: alternatives --install <връзка> <име> <път> <приоритет>\n"
-
-#: ../alternatives.c:66
-#, c-format
-msgid " [--initscript <service>]\n"
-msgstr " [--initscript <услуга>]\n"
-
-#: ../alternatives.c:67
-#, c-format
-msgid " [--slave <link> <name> <path>]*\n"
-msgstr " [--slave <връзка> <име> <път>]*\n"
-
-#: ../alternatives.c:68
-#, c-format
-msgid " alternatives --remove <name> <path>\n"
-msgstr " alternatives --remove <име> <път>\n"
-
-#: ../alternatives.c:69
-#, c-format
-msgid " alternatives --auto <name>\n"
-msgstr " alternatives --auto <име>\n"
-
-#: ../alternatives.c:70
-#, c-format
-msgid " alternatives --config <name>\n"
-msgstr " alternatives --config <име>\n"
-
-#: ../alternatives.c:71
-#, c-format
-msgid " alternatives --display <name>\n"
-msgstr " alternatives --display <име>\n"
-
-#: ../alternatives.c:72
-#, c-format
-msgid " alternatives --set <name> <path>\n"
-msgstr " alternatives --set <име> <път>\n"
-
-#: ../alternatives.c:73
-#, c-format
-msgid "\n"
-msgstr "\n"
-
-#: ../alternatives.c:74
-#, c-format
-msgid "common options: --verbose --test --help --usage --version\n"
-msgstr "общи параметри: --verbose --test --help --usage --version\n"
-
-#: ../alternatives.c:75
-#, c-format
-msgid " --altdir <directory> --admindir <directory>\n"
-msgstr " --altdir <директория> --admindir <директория>\n"
-
-#: ../alternatives.c:172
-#, c-format
-msgid "reading %s\n"
-msgstr "четене %s\n"
-
-#: ../alternatives.c:176
-#, c-format
-msgid "failed to open %s: %s\n"
-msgstr "неуспех при отваряне на %s: %s\n"
-
-#: ../alternatives.c:185
-#, c-format
-msgid "failed to read %s: %s\n"
-msgstr "неуспех при четене на %s: %s\n"
-
-#: ../alternatives.c:194
-#, c-format
-msgid "%s empty!\n"
-msgstr "%s празен!\n"
-
-#: ../alternatives.c:203
-#, c-format
-msgid "bad mode on line 1 of %s\n"
-msgstr "неправилен режим на ред 1 от %s\n"
-
-#: ../alternatives.c:210
-#, c-format
-msgid "bad primary link in %s\n"
-msgstr "неправилна първична връзка в %s\n"
-
-#: ../alternatives.c:222
-#, c-format
-msgid "path %s unexpected in %s\n"
-msgstr "пътя %s e неочакван в %s\n"
-
-#: ../alternatives.c:231
-#, c-format
-msgid "missing path for slave %s in %s\n"
-msgstr "липсва пътя за slave %s в %s\n"
-
-#: ../alternatives.c:241
-#, c-format
-msgid "unexpected end of file in %s\n"
-msgstr "неочакван край на файла в %s\n"
-
-#: ../alternatives.c:250
-#, c-format
-msgid "path to alternate expected in %s\n"
-msgstr "очаква се път до алтернатива в %s\n"
-
-#: ../alternatives.c:270
-#, c-format
-msgid "numeric priority expected in %s\n"
-msgstr "очаква се цифров приоритет в %s\n"
-
-#: ../alternatives.c:292
-#, c-format
-msgid "slave path expected in %s\n"
-msgstr "очаква се подчинен път в %s\n"
-
-#: ../alternatives.c:311
-#, c-format
-msgid "unexpected line in %s: %s\n"
-msgstr "неочаквана линия в %s: %s\n"
-
-#: ../alternatives.c:319
-#, c-format
-msgid "failed to read link %s: %s\n"
-msgstr "неуспешно четене на връзката %s: %s\n"
-
-#: ../alternatives.c:333
-#, c-format
-msgid "link points to no alternative -- setting mode to manual\n"
-msgstr "връзката не сочи към алтернатива. -- установяване режима на ръчен\n"
-
-#: ../alternatives.c:338
-#, c-format
-msgid "link changed -- setting mode to manual\n"
-msgstr "връзката е променена -- установяване режима на ръчен\n"
-
-#: ../alternatives.c:366 ../alternatives.c:373
-#, c-format
-msgid "would remove %s\n"
-msgstr "би премахнало %s\n"
-
-#: ../alternatives.c:368 ../alternatives.c:375 ../alternatives.c:406
-#, c-format
-msgid "failed to remove link %s: %s\n"
-msgstr "неуспех при премахване на връзка %s: %s\n"
-
-#: ../alternatives.c:391 ../alternatives.c:403
-#, c-format
-msgid "would link %s -> %s\n"
-msgstr "би свързало %s -> %s\n"
-
-#: ../alternatives.c:395 ../alternatives.c:412
-#, c-format
-msgid "failed to link %s -> %s: %s\n"
-msgstr "неуспешно свързване %s -> %s: %s\n"
-
-#: ../alternatives.c:444
-#, c-format
-msgid "%s already exists\n"
-msgstr "%s вече съществува\n"
-
-#: ../alternatives.c:446
-#, c-format
-msgid "failed to create %s: %s\n"
-msgstr "неуспех при създаване на %s: %s\n"
-
-#: ../alternatives.c:477
-#, c-format
-msgid "failed to replace %s with %s: %s\n"
-msgstr "неуспех при заместване на %s с %s: %s\n"
-
-#: ../alternatives.c:503 ../alternatives.c:512
-#, c-format
-msgid "running %s\n"
-msgstr "изпълнява %s\n"
-
-#: ../alternatives.c:539
-#, c-format
-msgid "the primary link for %s must be %s\n"
-msgstr "първичната връзка за %s трябва да бъде %s\n"
-
-#: ../alternatives.c:619
-#, c-format
-msgid "link %s incorrect for slave %s (%s %s)\n"
-msgstr "връзката %s е неправилна за подчинения %s (%s %s)\n"
-
-#: ../alternatives.c:660
-#, c-format
-msgid "%s - status is auto.\n"
-msgstr "%s - статуса е автоматичен.\n"
-
-#: ../alternatives.c:662
-#, c-format
-msgid "%s - status is manual.\n"
-msgstr "%s - статуса е ръчен.\n"
-
-#: ../alternatives.c:664
-#, c-format
-msgid " link currently points to %s\n"
-msgstr " връзката в момента сочи към %s\n"
-
-#: ../alternatives.c:667
-#, c-format
-msgid "%s - priority %d\n"
-msgstr "%s - приоритет %d\n"
-
-#: ../alternatives.c:670
-#, c-format
-msgid " slave %s: %s\n"
-msgstr " подчинен %s: %s\n"
-
-#: ../alternatives.c:675
-#, c-format
-msgid "Current `best' version is %s.\n"
-msgstr "Текущата 'най-добра' версия е %s.\n"
-
-#: ../alternatives.c:705
-#, c-format
-msgid "There is %d program that provides '%s'.\n"
-msgstr "Има %d програма осигуряваща '%s'.\n"
-
-#: ../alternatives.c:705
-#, c-format
-msgid "There are %d programs which provide '%s'.\n"
-msgstr "Има %d програми осигуряващи '%s'.\n"
-
-#: ../alternatives.c:707
-#, c-format
-msgid " Selection Command\n"
-msgstr " Избор Команда\n"
-
-#: ../alternatives.c:716
-#, c-format
-msgid "Enter to keep the current selection[+], or type selection number: "
-msgstr "Enter за да запазите текущата избор[+] или въведете номер за избор: "
-
-#: ../alternatives.c:719
-#, c-format
-msgid ""
-"\n"
-"error reading choice\n"
-msgstr ""
-"\n"
-"грешка при четенето на избора\n"
-
-#: ../alternatives.c:746 ../alternatives.c:772
-#, c-format
-msgid "%s has not been configured as an alternative for %s\n"
-msgstr "%s не е настроен като алтернатива на %s\n"
-
-#: ../alternatives.c:788
-#, c-format
-msgid "(would remove %s\n"
-msgstr "(ще премахне %s\n"
-
-#: ../alternatives.c:790
-#, c-format
-msgid "failed to remove %s: %s\n"
-msgstr "неуспех при премахване на %s: %s\n"
-
-#: ../alternatives.c:912
-#, c-format
-msgid "altdir %s invalid\n"
-msgstr "altdir %s е невалидна\n"
-
-#: ../alternatives.c:918
-#, c-format
-msgid "admindir %s invalid\n"
-msgstr "admindir %s е невалидна\n"
-
-#: ../alternatives.c:928
-#, c-format
-msgid "alternatives version %s\n"
-msgstr "alternatives версия %s\n"
--- chkconfig-1.3.46/po/bn.po
+++ chkconfig-1.3.46/po/bn.po
(renamed to chkconfig-1.3.48/po/bn.po)
--- chkconfig-1.3.46/po/bn_IN.po
+++ chkconfig-1.3.46/po/bn_IN.po
(renamed to chkconfig-1.3.48/po/bn_IN.po)
--- chkconfig-1.3.46/po/bs.po
+++ chkconfig-1.3.46/po/bs.po
(renamed to chkconfig-1.3.48/po/bs.po)
--- chkconfig-1.3.46/po/ca.po
+++ chkconfig-1.3.46/po/ca.po
(renamed to chkconfig-1.3.48/po/ca.po)
--- chkconfig-1.3.46/po/chkconfig.pot
+++ chkconfig-1.3.46/po/chkconfig.pot
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-03 17:22-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../chkconfig.c:38
-#, c-format
-msgid "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
-msgstr ""
-
-#: ../chkconfig.c:39
-#, c-format
-msgid ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-msgstr ""
-
-#: ../chkconfig.c:42
-#, c-format
-msgid "usage: %s [--list] [--type <type>] [name]\n"
-msgstr ""
-
-#: ../chkconfig.c:43
-#, c-format
-msgid " %s --add <name>\n"
-msgstr ""
-
-#: ../chkconfig.c:44
-#, c-format
-msgid " %s --del <name>\n"
-msgstr ""
-
-#: ../chkconfig.c:45
-#, c-format
-msgid " %s --override <name>\n"
-msgstr ""
-
-#: ../chkconfig.c:46
-#, c-format
-msgid " %s [--level <levels>] [--type <type>] <name> %s\n"
-msgstr ""
-
-#: ../chkconfig.c:53
-#, c-format
-msgid ""
-"service %s supports chkconfig, but is not referenced in any runlevel (run "
-"'chkconfig --add %s')\n"
-msgstr ""
-
-#: ../chkconfig.c:55
-#, c-format
-msgid "service %s does not support chkconfig\n"
-msgstr ""
-
-#: ../chkconfig.c:57
-#, c-format
-msgid "error reading information on service %s: %s\n"
-msgstr ""
-
-#: ../chkconfig.c:66
-#, c-format
-msgid "You do not have enough privileges to perform this operation.\n"
-msgstr ""
-
-#: ../chkconfig.c:411 ../chkconfig.c:416 ../chkconfig.c:530
-msgid "on"
-msgstr ""
-
-#: ../chkconfig.c:411 ../chkconfig.c:416 ../chkconfig.c:530
-msgid "off"
-msgstr ""
-
-#: ../chkconfig.c:492
-#, c-format
-msgid "xinetd based services:\n"
-msgstr ""
-
-#: ../chkconfig.c:494
-#, c-format
-msgid "failed to open directory %s: %s\n"
-msgstr ""
-
-#: ../chkconfig.c:638
-#, c-format
-msgid "%s version %s\n"
-msgstr ""
-
-#: ../chkconfig.c:650
-#, c-format
-msgid "--type must be 'sysv' or 'xinetd'\n"
-msgstr ""
-
-#: ../chkconfig.c:658
-#, c-format
-msgid "only one of --list, --add, --del, or --override may be specified\n"
-msgstr ""
-
-#: ../chkconfig.c:718
-#, c-format
-msgid "only one runlevel may be specified for a chkconfig query\n"
-msgstr ""
-
-#: ../ntsysv.c:46
-msgid "Press <F1> for more information on a service."
-msgstr ""
-
-#: ../ntsysv.c:83 ../ntsysv.c:120
-msgid "Ok"
-msgstr ""
-
-#: ../ntsysv.c:83
-msgid "Back"
-msgstr ""
-
-#: ../ntsysv.c:83
-msgid "Cancel"
-msgstr ""
-
-#: ../ntsysv.c:95
-msgid "What services should be automatically started?"
-msgstr ""
-
-#: ../ntsysv.c:101
-msgid "Services"
-msgstr ""
-
-#: ../ntsysv.c:183 ../ntsysv.c:210 ../ntsysv.c:248
-#, c-format
-msgid "error reading info for service %s: %s\n"
-msgstr ""
-
-#: ../ntsysv.c:257
-#, c-format
-msgid "error reading from directory %s: %s\n"
-msgstr ""
-
-#: ../ntsysv.c:293
-#, c-format
-msgid "You must be root to run %s.\n"
-msgstr ""
-
-#: ../ntsysv.c:310
-#, c-format
-msgid "bad argument to --levels\n"
-msgstr ""
-
-#: ../ntsysv.c:317
-#, c-format
-msgid "No services may be managed by ntsysv!\n"
-msgstr ""
-
-#: ../leveldb.c:261
-#, c-format
-msgid "failed to open %s/init.d: %s\n"
-msgstr ""
-
-#: ../leveldb.c:662
-#, c-format
-msgid "failed to glob pattern %s: %s\n"
-msgstr ""
-
-#: ../leveldb.c:705
-#, c-format
-msgid "cannot determine current run level\n"
-msgstr ""
-
-#: ../leveldb.c:793
-#, c-format
-msgid "failed to make symlink %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:63
-#, c-format
-msgid "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
-msgstr ""
-
-#: ../alternatives.c:64
-#, c-format
-msgid ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-"\n"
-msgstr ""
-
-#: ../alternatives.c:65
-#, c-format
-msgid "usage: alternatives --install <link> <name> <path> <priority>\n"
-msgstr ""
-
-#: ../alternatives.c:66
-#, c-format
-msgid " [--initscript <service>]\n"
-msgstr ""
-
-#: ../alternatives.c:67
-#, c-format
-msgid " [--slave <link> <name> <path>]*\n"
-msgstr ""
-
-#: ../alternatives.c:68
-#, c-format
-msgid " alternatives --remove <name> <path>\n"
-msgstr ""
-
-#: ../alternatives.c:69
-#, c-format
-msgid " alternatives --auto <name>\n"
-msgstr ""
-
-#: ../alternatives.c:70
-#, c-format
-msgid " alternatives --config <name>\n"
-msgstr ""
-
-#: ../alternatives.c:71
-#, c-format
-msgid " alternatives --display <name>\n"
-msgstr ""
-
-#: ../alternatives.c:72
-#, c-format
-msgid " alternatives --set <name> <path>\n"
-msgstr ""
-
-#: ../alternatives.c:73
-#, c-format
-msgid "\n"
-msgstr ""
-
-#: ../alternatives.c:74
-#, c-format
-msgid "common options: --verbose --test --help --usage --version\n"
-msgstr ""
-
-#: ../alternatives.c:75
-#, c-format
-msgid " --altdir <directory> --admindir <directory>\n"
-msgstr ""
-
-#: ../alternatives.c:172
-#, c-format
-msgid "reading %s\n"
-msgstr ""
-
-#: ../alternatives.c:176
-#, c-format
-msgid "failed to open %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:185
-#, c-format
-msgid "failed to read %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:194
-#, c-format
-msgid "%s empty!\n"
-msgstr ""
-
-#: ../alternatives.c:203
-#, c-format
-msgid "bad mode on line 1 of %s\n"
-msgstr ""
-
-#: ../alternatives.c:210
-#, c-format
-msgid "bad primary link in %s\n"
-msgstr ""
-
-#: ../alternatives.c:222
-#, c-format
-msgid "path %s unexpected in %s\n"
-msgstr ""
-
-#: ../alternatives.c:231
-#, c-format
-msgid "missing path for slave %s in %s\n"
-msgstr ""
-
-#: ../alternatives.c:241
-#, c-format
-msgid "unexpected end of file in %s\n"
-msgstr ""
-
-#: ../alternatives.c:250
-#, c-format
-msgid "path to alternate expected in %s\n"
-msgstr ""
-
-#: ../alternatives.c:251 ../alternatives.c:272 ../alternatives.c:295
-#: ../alternatives.c:314
-#, c-format
-msgid "unexpected line in %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:271
-#, c-format
-msgid "numeric priority expected in %s\n"
-msgstr ""
-
-#: ../alternatives.c:294
-#, c-format
-msgid "slave path expected in %s\n"
-msgstr ""
-
-#: ../alternatives.c:322
-#, c-format
-msgid "failed to read link %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:336
-#, c-format
-msgid "link points to no alternative -- setting mode to manual\n"
-msgstr ""
-
-#: ../alternatives.c:341
-#, c-format
-msgid "link changed -- setting mode to manual\n"
-msgstr ""
-
-#: ../alternatives.c:369 ../alternatives.c:376
-#, c-format
-msgid "would remove %s\n"
-msgstr ""
-
-#: ../alternatives.c:371 ../alternatives.c:378 ../alternatives.c:410
-#, c-format
-msgid "failed to remove link %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:394 ../alternatives.c:407
-#, c-format
-msgid "would link %s -> %s\n"
-msgstr ""
-
-#: ../alternatives.c:399 ../alternatives.c:416
-#, c-format
-msgid "failed to link %s -> %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:448
-#, c-format
-msgid "%s already exists\n"
-msgstr ""
-
-#: ../alternatives.c:450
-#, c-format
-msgid "failed to create %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:481
-#, c-format
-msgid "failed to replace %s with %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:507 ../alternatives.c:516
-#, c-format
-msgid "running %s\n"
-msgstr ""
-
-#: ../alternatives.c:543
-#, c-format
-msgid "the primary link for %s must be %s\n"
-msgstr ""
-
-#: ../alternatives.c:623
-#, c-format
-msgid "link %s incorrect for slave %s (%s %s)\n"
-msgstr ""
-
-#: ../alternatives.c:664
-#, c-format
-msgid "%s - status is auto.\n"
-msgstr ""
-
-#: ../alternatives.c:666
-#, c-format
-msgid "%s - status is manual.\n"
-msgstr ""
-
-#: ../alternatives.c:668
-#, c-format
-msgid " link currently points to %s\n"
-msgstr ""
-
-#: ../alternatives.c:671
-#, c-format
-msgid "%s - priority %d\n"
-msgstr ""
-
-#: ../alternatives.c:674
-#, c-format
-msgid " slave %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:679
-#, c-format
-msgid "Current `best' version is %s.\n"
-msgstr ""
-
-#: ../alternatives.c:709
-#, c-format
-msgid "There is %d program that provides '%s'.\n"
-msgstr ""
-
-#: ../alternatives.c:709
-#, c-format
-msgid "There are %d programs which provide '%s'.\n"
-msgstr ""
-
-#: ../alternatives.c:711
-#, c-format
-msgid " Selection Command\n"
-msgstr ""
-
-#: ../alternatives.c:720
-#, c-format
-msgid "Enter to keep the current selection[+], or type selection number: "
-msgstr ""
-
-#: ../alternatives.c:723
-#, c-format
-msgid ""
-"\n"
-"error reading choice\n"
-msgstr ""
-
-#: ../alternatives.c:750 ../alternatives.c:776
-#, c-format
-msgid "%s has not been configured as an alternative for %s\n"
-msgstr ""
-
-#: ../alternatives.c:792
-#, c-format
-msgid "(would remove %s\n"
-msgstr ""
-
-#: ../alternatives.c:794
-#, c-format
-msgid "failed to remove %s: %s\n"
-msgstr ""
-
-#: ../alternatives.c:916
-#, c-format
-msgid "altdir %s invalid\n"
-msgstr ""
-
-#: ../alternatives.c:922
-#, c-format
-msgid "admindir %s invalid\n"
-msgstr ""
-
-#: ../alternatives.c:932
-#, c-format
-msgid "alternatives version %s\n"
-msgstr ""
--- chkconfig-1.3.46/po/cs.po
+++ chkconfig-1.3.46/po/cs.po
(renamed to chkconfig-1.3.48/po/cs.po)
--- chkconfig-1.3.46/po/cy.po
+++ chkconfig-1.3.46/po/cy.po
(renamed to chkconfig-1.3.48/po/cy.po)
--- chkconfig-1.3.46/po/da.po
+++ chkconfig-1.3.46/po/da.po
(renamed to chkconfig-1.3.48/po/da.po)
--- chkconfig-1.3.46/po/de.po
+++ chkconfig-1.3.46/po/de.po
(renamed to chkconfig-1.3.48/po/de.po)
--- chkconfig-1.3.46/po/el.po
+++ chkconfig-1.3.46/po/el.po
(renamed to chkconfig-1.3.48/po/el.po)
--- chkconfig-1.3.46/po/en_GB.po
+++ chkconfig-1.3.46/po/en_GB.po
-# English (British) translation.
-# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Abigail Brady <morwen at evilmagic.org>, Bastien Nocera <hadess at hadess.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-04 23:29-0500\n"
-"PO-Revision-Date: 2007-06-11 13:15+0000\n"
-"Last-Translator: Abigail Brady <morwen at evilmagic.org>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../chkconfig.c:38
-#, c-format
-msgid "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
-msgstr "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
-
-#: ../chkconfig.c:39
-#, c-format
-msgid ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-msgstr ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-
-#: ../chkconfig.c:42
-#, fuzzy, c-format
-msgid "usage: %s [--list] [--type <type>] [name]\n"
-msgstr "usage: %s --list [name]\n"
-
-#: ../chkconfig.c:43
-#, c-format
-msgid " %s --add <name>\n"
-msgstr " %s --add <name>\n"
-
-#: ../chkconfig.c:44
-#, c-format
-msgid " %s --del <name>\n"
-msgstr " %s --del <name>\n"
-
-#: ../chkconfig.c:45
-#, c-format
-msgid " %s --override <name>\n"
-msgstr " %s --override <name>\n"
-
-#: ../chkconfig.c:46
-#, fuzzy, c-format
-msgid " %s [--level <levels>] [--type <type>] <name> %s\n"
-msgstr " %s [--level <levels>] <name> %s\n"
-
-#: ../chkconfig.c:53
-#, c-format
-msgid ""
-"service %s supports chkconfig, but is not referenced in any runlevel (run "
-"'chkconfig --add %s')\n"
-msgstr ""
-"service %s supports chkconfig, but is not referenced in any runlevel (run "
-"'chkconfig --add %s')\n"
-
-#: ../chkconfig.c:55
-#, c-format
-msgid "service %s does not support chkconfig\n"
-msgstr "service %s does not support chkconfig\n"
-
-#: ../chkconfig.c:57
-#, c-format
-msgid "error reading information on service %s: %s\n"
-msgstr "error reading information on service %s: %s\n"
-
-#: ../chkconfig.c:66
-#, c-format
-msgid "You do not have enough privileges to perform this operation.\n"
-msgstr ""
-
-#: ../chkconfig.c:351 ../chkconfig.c:356 ../chkconfig.c:470
-msgid "on"
-msgstr "on"
-
-#: ../chkconfig.c:351 ../chkconfig.c:356 ../chkconfig.c:470
-msgid "off"
-msgstr "off"
-
-#: ../chkconfig.c:432
-#, c-format
-msgid "xinetd based services:\n"
-msgstr "xinetd based services:\n"
-
-#: ../chkconfig.c:434
-#, c-format
-msgid "failed to open directory %s: %s\n"
-msgstr "failed to open directory %s: %s\n"
-
-#: ../chkconfig.c:578
-#, c-format
-msgid "%s version %s\n"
-msgstr "%s version %s\n"
-
-#: ../chkconfig.c:590
-#, c-format
-msgid "--type must be 'sysv' or 'xinetd'\n"
-msgstr ""
-
-#: ../chkconfig.c:598
-#, c-format
-msgid "only one of --list, --add, --del, or --override may be specified\n"
-msgstr "only one of --list, --add, --del, or --override may be specified\n"
-
-#: ../chkconfig.c:658
-#, c-format
-msgid "only one runlevel may be specified for a chkconfig query\n"
-msgstr "only one runlevel may be specified for a chkconfig query\n"
-
-#: ../ntsysv.c:46
-msgid "Press <F1> for more information on a service."
-msgstr "Press <F1> for more information on a service."
-
-#: ../ntsysv.c:83 ../ntsysv.c:120
-msgid "Ok"
-msgstr "Ok"
-
-#: ../ntsysv.c:83
-msgid "Back"
-msgstr "Back"
-
-#: ../ntsysv.c:83
-msgid "Cancel"
-msgstr "Cancel"
-
-#: ../ntsysv.c:95
-msgid "What services should be automatically started?"
-msgstr "What services should be automatically started?"
-
-#: ../ntsysv.c:101
-msgid "Services"
-msgstr "Services"
-
-#: ../ntsysv.c:183 ../ntsysv.c:210 ../ntsysv.c:248
-#, c-format
-msgid "error reading info for service %s: %s\n"
-msgstr "error reading info for service %s: %s\n"
-
-#: ../ntsysv.c:257
-#, c-format
-msgid "error reading from directory %s: %s\n"
-msgstr "error reading from directory %s: %s\n"
-
-#: ../ntsysv.c:293
-#, c-format
-msgid "You must be root to run %s.\n"
-msgstr "You must be root to run %s.\n"
-
-#: ../ntsysv.c:310
-#, c-format
-msgid "bad argument to --levels\n"
-msgstr "bad argument to --levels\n"
-
-#: ../ntsysv.c:317
-#, c-format
-msgid "No services may be managed by ntsysv!\n"
-msgstr "No services may be managed by ntsysv!\n"
-
-#: ../leveldb.c:260
-#, c-format
-msgid "failed to open %s/init.d: %s\n"
-msgstr "failed to open %s/init.d: %s\n"
-
-#: ../leveldb.c:668
-#, c-format
-msgid "failed to glob pattern %s: %s\n"
-msgstr "failed to glob pattern %s: %s\n"
-
-#: ../leveldb.c:711
-#, c-format
-msgid "cannot determine current run level\n"
-msgstr "cannot determine current run level\n"
-
-#: ../leveldb.c:799
-#, c-format
-msgid "failed to make symlink %s: %s\n"
-msgstr "failed to make symlink %s: %s\n"
-
-#: ../alternatives.c:63
-#, c-format
-msgid "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
-msgstr "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
-
-#: ../alternatives.c:64
-#, c-format
-msgid ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-"\n"
-msgstr ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-"\n"
-
-#: ../alternatives.c:65
-#, c-format
-msgid "usage: alternatives --install <link> <name> <path> <priority>\n"
-msgstr "usage: alternatives --install <link> <name> <path> <priority>\n"
-
-#: ../alternatives.c:66
-#, c-format
-msgid " [--initscript <service>]\n"
-msgstr " [--initscript <service>]\n"
-
-#: ../alternatives.c:67
-#, c-format
-msgid " [--slave <link> <name> <path>]*\n"
-msgstr " [--slave <link> <name> <path>]*\n"
-
-#: ../alternatives.c:68
-#, c-format
-msgid " alternatives --remove <name> <path>\n"
-msgstr " alternatives --remove <name> <path>\n"
-
-#: ../alternatives.c:69
-#, c-format
-msgid " alternatives --auto <name>\n"
-msgstr " alternatives --auto <name>\n"
-
-#: ../alternatives.c:70
-#, c-format
-msgid " alternatives --config <name>\n"
-msgstr " alternatives --config <name>\n"
-
-#: ../alternatives.c:71
-#, c-format
-msgid " alternatives --display <name>\n"
-msgstr " alternatives --display <name>\n"
-
-#: ../alternatives.c:72
-#, c-format
-msgid " alternatives --set <name> <path>\n"
-msgstr " alternatives --set <name> <path>\n"
-
-#: ../alternatives.c:73
-#, c-format
-msgid "\n"
-msgstr "\n"
-
-#: ../alternatives.c:74
-#, c-format
-msgid "common options: --verbose --test --help --usage --version\n"
-msgstr "common options: --verbose --test --help --usage --version\n"
-
-#: ../alternatives.c:75
-#, c-format
-msgid " --altdir <directory> --admindir <directory>\n"
-msgstr " --altdir <directory> --admindir <directory>\n"
-
-#: ../alternatives.c:172
-#, c-format
-msgid "reading %s\n"
-msgstr "reading %s\n"
-
-#: ../alternatives.c:176
-#, c-format
-msgid "failed to open %s: %s\n"
-msgstr "failed to open %s: %s\n"
-
-#: ../alternatives.c:185
-#, c-format
-msgid "failed to read %s: %s\n"
-msgstr "failed to read %s: %s\n"
-
-#: ../alternatives.c:194
-#, c-format
-msgid "%s empty!\n"
-msgstr "%s empty!\n"
-
-#: ../alternatives.c:203
-#, c-format
-msgid "bad mode on line 1 of %s\n"
-msgstr "bad mode on line 1 of %s\n"
-
-#: ../alternatives.c:210
-#, c-format
-msgid "bad primary link in %s\n"
-msgstr "bad primary link in %s\n"
-
-#: ../alternatives.c:222
-#, c-format
-msgid "path %s unexpected in %s\n"
-msgstr "path %s unexpected in %s\n"
-
-#: ../alternatives.c:231
-#, c-format
-msgid "missing path for slave %s in %s\n"
-msgstr "missing path for slave %s in %s\n"
-
-#: ../alternatives.c:241
-#, c-format
-msgid "unexpected end of file in %s\n"
-msgstr "unexpected end of file in %s\n"
-
-#: ../alternatives.c:250
-#, c-format
-msgid "path to alternate expected in %s\n"
-msgstr "path to alternate expected in %s\n"
-
-#: ../alternatives.c:270
-#, c-format
-msgid "numeric priority expected in %s\n"
-msgstr "numeric priority expected in %s\n"
-
-#: ../alternatives.c:292
-#, c-format
-msgid "slave path expected in %s\n"
-msgstr "slave path expected in %s\n"
-
-#: ../alternatives.c:311
-#, c-format
-msgid "unexpected line in %s: %s\n"
-msgstr "unexpected line in %s: %s\n"
-
-#: ../alternatives.c:319
-#, c-format
-msgid "failed to read link %s: %s\n"
-msgstr "failed to read link %s: %s\n"
-
-#: ../alternatives.c:333
-#, c-format
-msgid "link points to no alternative -- setting mode to manual\n"
-msgstr "link points to no alternative -- setting mode to manual\n"
-
-#: ../alternatives.c:338
-#, c-format
-msgid "link changed -- setting mode to manual\n"
-msgstr "link changed -- setting mode to manual\n"
-
-#: ../alternatives.c:366 ../alternatives.c:373
-#, c-format
-msgid "would remove %s\n"
-msgstr "would remove %s\n"
-
-#: ../alternatives.c:368 ../alternatives.c:375 ../alternatives.c:406
-#, c-format
-msgid "failed to remove link %s: %s\n"
-msgstr "failed to remove link %s: %s\n"
-
-#: ../alternatives.c:391 ../alternatives.c:403
-#, c-format
-msgid "would link %s -> %s\n"
-msgstr "would link %s -> %s\n"
-
-#: ../alternatives.c:395 ../alternatives.c:412
-#, c-format
-msgid "failed to link %s -> %s: %s\n"
-msgstr "failed to link %s -> %s: %s\n"
-
-#: ../alternatives.c:444
-#, c-format
-msgid "%s already exists\n"
-msgstr "%s already exists\n"
-
-#: ../alternatives.c:446
-#, c-format
-msgid "failed to create %s: %s\n"
-msgstr "failed to create %s: %s\n"
-
-#: ../alternatives.c:477
-#, c-format
-msgid "failed to replace %s with %s: %s\n"
-msgstr "failed to replace %s with %s: %s\n"
-
-#: ../alternatives.c:503 ../alternatives.c:512
-#, c-format
-msgid "running %s\n"
-msgstr "running %s\n"
-
-#: ../alternatives.c:539
-#, c-format
-msgid "the primary link for %s must be %s\n"
-msgstr "the primary link for %s must be %s\n"
-
-#: ../alternatives.c:619
-#, c-format
-msgid "link %s incorrect for slave %s (%s %s)\n"
-msgstr "link %s incorrect for slave %s (%s %s)\n"
-
-#: ../alternatives.c:660
-#, c-format
-msgid "%s - status is auto.\n"
-msgstr "%s - status is auto.\n"
-
-#: ../alternatives.c:662
-#, c-format
-msgid "%s - status is manual.\n"
-msgstr "%s - status is manual.\n"
-
-#: ../alternatives.c:664
-#, c-format
-msgid " link currently points to %s\n"
-msgstr " link currently points to %s\n"
-
-#: ../alternatives.c:667
-#, c-format
-msgid "%s - priority %d\n"
-msgstr "%s - priority %d\n"
-
-#: ../alternatives.c:670
-#, c-format
-msgid " slave %s: %s\n"
-msgstr " slave %s: %s\n"
-
-#: ../alternatives.c:675
-#, c-format
-msgid "Current `best' version is %s.\n"
-msgstr "Current `best' version is %s.\n"
-
-#: ../alternatives.c:705
-#, c-format
-msgid "There is %d program that provides '%s'.\n"
-msgstr "There is %d program that provides '%s'.\n"
-
-#: ../alternatives.c:705
-#, c-format
-msgid "There are %d programs which provide '%s'.\n"
-msgstr "There are %d programs which provide '%s'.\n"
-
-#: ../alternatives.c:707
-#, c-format
-msgid " Selection Command\n"
-msgstr " Selection Command\n"
-
-#: ../alternatives.c:716
-#, c-format
-msgid "Enter to keep the current selection[+], or type selection number: "
-msgstr "Enter to keep the current selection[+], or type selection number: "
-
-#: ../alternatives.c:719
-#, c-format
-msgid ""
-"\n"
-"error reading choice\n"
-msgstr ""
-"\n"
-"error reading choice\n"
-
-#: ../alternatives.c:746 ../alternatives.c:772
-#, c-format
-msgid "%s has not been configured as an alternative for %s\n"
-msgstr "%s has not been configured as an alternative for %s\n"
-
-#: ../alternatives.c:788
-#, c-format
-msgid "(would remove %s\n"
-msgstr "(would remove %s\n"
-
-#: ../alternatives.c:790
-#, c-format
-msgid "failed to remove %s: %s\n"
-msgstr "failed to remove %s: %s\n"
-
-#: ../alternatives.c:912
-#, c-format
-msgid "altdir %s invalid\n"
-msgstr "altdir %s invalid\n"
-
-#: ../alternatives.c:918
-#, c-format
-msgid "admindir %s invalid\n"
-msgstr "admindir %s invalid\n"
-
-#: ../alternatives.c:928
-#, c-format
-msgid "alternatives version %s\n"
-msgstr "alternatives version %s\n"
--- chkconfig-1.3.46/po/es.po
+++ chkconfig-1.3.46/po/es.po
(renamed to chkconfig-1.3.48/po/es.po)
--- chkconfig-1.3.46/po/et.po
+++ chkconfig-1.3.46/po/et.po
(renamed to chkconfig-1.3.48/po/et.po)
--- chkconfig-1.3.46/po/fi.po
+++ chkconfig-1.3.46/po/fi.po
(renamed to chkconfig-1.3.48/po/fi.po)
--- chkconfig-1.3.46/po/fr.po
+++ chkconfig-1.3.46/po/fr.po
(renamed to chkconfig-1.3.48/po/fr.po)
--- chkconfig-1.3.46/po/gl.po
+++ chkconfig-1.3.46/po/gl.po
(renamed to chkconfig-1.3.48/po/gl.po)
--- chkconfig-1.3.46/po/gu.po
+++ chkconfig-1.3.46/po/gu.po
(renamed to chkconfig-1.3.48/po/gu.po)
--- chkconfig-1.3.46/po/he.po
+++ chkconfig-1.3.46/po/he.po
(renamed to chkconfig-1.3.48/po/he.po)
--- chkconfig-1.3.46/po/hi.po
+++ chkconfig-1.3.46/po/hi.po
(renamed to chkconfig-1.3.48/po/hi.po)
--- chkconfig-1.3.46/po/hr.po
+++ chkconfig-1.3.46/po/hr.po
(renamed to chkconfig-1.3.48/po/hr.po)
--- chkconfig-1.3.46/po/hu.po
+++ chkconfig-1.3.46/po/hu.po
(renamed to chkconfig-1.3.48/po/hu.po)
--- chkconfig-1.3.46/po/hy.po
+++ chkconfig-1.3.46/po/hy.po
(renamed to chkconfig-1.3.48/po/hy.po)
--- chkconfig-1.3.46/po/id.po
+++ chkconfig-1.3.46/po/id.po
(renamed to chkconfig-1.3.48/po/id.po)
--- chkconfig-1.3.46/po/is.po
+++ chkconfig-1.3.46/po/is.po
(renamed to chkconfig-1.3.48/po/is.po)
--- chkconfig-1.3.46/po/it.po
+++ chkconfig-1.3.46/po/it.po
(renamed to chkconfig-1.3.48/po/it.po)
--- chkconfig-1.3.46/po/ja.po
+++ chkconfig-1.3.46/po/ja.po
(renamed to chkconfig-1.3.48/po/ja.po)
--- chkconfig-1.3.46/po/ka.po
+++ chkconfig-1.3.46/po/ka.po
(renamed to chkconfig-1.3.48/po/ka.po)
--- chkconfig-1.3.46/po/kn.po
+++ chkconfig-1.3.46/po/kn.po
(renamed to chkconfig-1.3.48/po/kn.po)
--- chkconfig-1.3.46/po/ko.po
+++ chkconfig-1.3.46/po/ko.po
(renamed to chkconfig-1.3.48/po/ko.po)
--- chkconfig-1.3.46/po/ku.po
+++ chkconfig-1.3.46/po/ku.po
(renamed to chkconfig-1.3.48/po/ku.po)
--- chkconfig-1.3.46/po/lo.po
+++ chkconfig-1.3.46/po/lo.po
(renamed to chkconfig-1.3.48/po/lo.po)
--- chkconfig-1.3.46/po/lv.po
+++ chkconfig-1.3.46/po/lv.po
(renamed to chkconfig-1.3.48/po/lv.po)
--- chkconfig-1.3.46/po/mai.po
+++ chkconfig-1.3.46/po/mai.po
(renamed to chkconfig-1.3.48/po/mai.po)
--- chkconfig-1.3.46/po/mk.po
+++ chkconfig-1.3.46/po/mk.po
(renamed to chkconfig-1.3.48/po/mk.po)
--- chkconfig-1.3.46/po/ml.po
+++ chkconfig-1.3.46/po/ml.po
(renamed to chkconfig-1.3.48/po/ml.po)
--- chkconfig-1.3.46/po/mr.po
+++ chkconfig-1.3.46/po/mr.po
(renamed to chkconfig-1.3.48/po/mr.po)
--- chkconfig-1.3.46/po/ms.po
+++ chkconfig-1.3.46/po/ms.po
(renamed to chkconfig-1.3.48/po/ms.po)
--- chkconfig-1.3.46/po/my.po
+++ chkconfig-1.3.46/po/my.po
(renamed to chkconfig-1.3.48/po/my.po)
--- chkconfig-1.3.46/po/nb.po
+++ chkconfig-1.3.46/po/nb.po
(renamed to chkconfig-1.3.48/po/nb.po)
--- chkconfig-1.3.46/po/nl.po
+++ chkconfig-1.3.46/po/nl.po
-# translation of chkconfig.master.nl.po to Dutch
-# Dutch translation of chkconfig
-# Copyright (C) 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
-#
-# Tino Meinen <a.t.meinen at chello.nl>, 2003, 2004.
-# Peter van Egdom <p.van.egdom at gmail.com>, 2003, 2005, 2007.
-# R.E. van der Luit <nippur at fedoraproject.org>, 2009.
-msgid ""
-msgstr ""
-"Project-Id-Version: chkconfig.master.nl\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-04 23:29-0500\n"
-"PO-Revision-Date: 2009-01-16 22:36+0100\n"
-"Last-Translator: R.E. van der Luit <nippur at fedoraproject.org>\n"
-"Language-Team: Dutch <nippur at fedoraproject.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../chkconfig.c:38
-#, c-format
-msgid "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
-msgstr "%s versie %s - Copyright © 1997-2000 Red Hat, Inc.\n"
-
-#: ../chkconfig.c:39
-#, c-format
-msgid "This may be freely redistributed under the terms of the GNU Public License.\n"
-msgstr ""
-"Dit mag vrijelijk worden verspreid onder de voorwaarden van de GNU Public "
-"License.\n"
-
-#: ../chkconfig.c:42
-#, c-format
-msgid "usage: %s [--list] [--type <type>] [name]\n"
-msgstr "gebruik: %s [--list] [--type <type>] [naam]\n"
-
-#: ../chkconfig.c:43
-#, c-format
-msgid " %s --add <name>\n"
-msgstr " %s --add <naam>\n"
-
-#: ../chkconfig.c:44
-#, c-format
-msgid " %s --del <name>\n"
-msgstr " %s --del <naam>\n"
-
-#: ../chkconfig.c:45
-#, c-format
-msgid " %s --override <name>\n"
-msgstr " %s --override <naam>\n"
-
-#: ../chkconfig.c:46
-#, c-format
-msgid " %s [--level <levels>] [--type <type>] <name> %s\n"
-msgstr " %s [--level <levels>] [--type <type>] <naam> %s\n"
-
-#: ../chkconfig.c:53
-#, c-format
-msgid ""
-"service %s supports chkconfig, but is not referenced in any runlevel (run "
-"'chkconfig --add %s')\n"
-msgstr "service %s ondersteunt chkconfig, maar in geen enkel runlevel staat een verwijzing naar deze service (voer 'chkconfig --add %s' uit)\n"
-
-#: ../chkconfig.c:55
-#, c-format
-msgid "service %s does not support chkconfig\n"
-msgstr "service %s ondersteunt chkconfig niet\n"
-
-#: ../chkconfig.c:57
-#, c-format
-msgid "error reading information on service %s: %s\n"
-msgstr "fout bij lezen van informatie over service %s: %s\n"
-
-#: ../chkconfig.c:66
-#, c-format
-msgid "You do not have enough privileges to perform this operation.\n"
-msgstr "U hebt niet genoeg rechten om deze actie te laten uitvoeren.\n"
-
-#: ../chkconfig.c:351 ../chkconfig.c:356 ../chkconfig.c:470
-msgid "on"
-msgstr "on"
-
-#: ../chkconfig.c:351 ../chkconfig.c:356 ../chkconfig.c:470
-msgid "off"
-msgstr "off"
-
-#: ../chkconfig.c:432
-#, c-format
-msgid "xinetd based services:\n"
-msgstr "services gebaseerd op xinetd:\n"
-
-#: ../chkconfig.c:434
-#, c-format
-msgid "failed to open directory %s: %s\n"
-msgstr "openen van map %s mislukt: %s\n"
-
-#: ../chkconfig.c:578
-#, c-format
-msgid "%s version %s\n"
-msgstr "%s versie %s\n"
-
-#: ../chkconfig.c:590
-#, c-format
-msgid "--type must be 'sysv' or 'xinetd'\n"
-msgstr "--type dient te zijn 'sysv' of 'xinetd'\n"
-
-#: ../chkconfig.c:598
-#, c-format
-msgid "only one of --list, --add, --del, or --override may be specified\n"
-msgstr "slechts één van --list, --add, --del of --override mag worden opgegeven\n"
-
-#: ../chkconfig.c:658
-#, c-format
-msgid "only one runlevel may be specified for a chkconfig query\n"
-msgstr "slechts één runlevel mag worden opgegeven voor een chkconfig zoekopdracht\n"
-
-#: ../ntsysv.c:46
-msgid "Press <F1> for more information on a service."
-msgstr "Druk op <F1> voor meer informatie over een service."
-
-#: ../ntsysv.c:83 ../ntsysv.c:120
-msgid "Ok"
-msgstr "Ok"
-
-#: ../ntsysv.c:83
-msgid "Back"
-msgstr "Terug"
-
-#: ../ntsysv.c:83
-msgid "Cancel"
-msgstr "Annuleren"
-
-#: ../ntsysv.c:95
-msgid "What services should be automatically started?"
-msgstr "Welke services moeten automatisch worden gestart?"
-
-#: ../ntsysv.c:101
-msgid "Services"
-msgstr "Services"
-
-#: ../ntsysv.c:183 ../ntsysv.c:210 ../ntsysv.c:248
-#, c-format
-msgid "error reading info for service %s: %s\n"
-msgstr "fout bij lezen van informatie over service %s: %s\n"
-
-#: ../ntsysv.c:257
-#, c-format
-msgid "error reading from directory %s: %s\n"
-msgstr "fout bij lezen uit map %s: %s\n"
-
-#: ../ntsysv.c:293
-#, c-format
-msgid "You must be root to run %s.\n"
-msgstr "U moet root zijn om %s uit te kunnen voeren.\n"
-
-#: ../ntsysv.c:310
-#, c-format
-msgid "bad argument to --levels\n"
-msgstr "verkeerd argument voor --levels\n"
-
-#: ../ntsysv.c:317
-#, c-format
-msgid "No services may be managed by ntsysv!\n"
-msgstr "Er mogen geen services worden beheerd door ntsysv!\n"
-
-#: ../leveldb.c:260
-#, c-format
-msgid "failed to open %s/init.d: %s\n"
-msgstr "openen van %s/init.d mislukt: %s\n"
-
-#: ../leveldb.c:668
-#, c-format
-msgid "failed to glob pattern %s: %s\n"
-msgstr "globben van patroon %s mislukt: %s\n"
-
-#: ../leveldb.c:711
-#, c-format
-msgid "cannot determine current run level\n"
-msgstr "kan het huidige runlevel niet bepalen\n"
-
-#: ../leveldb.c:799
-#, c-format
-msgid "failed to make symlink %s: %s\n"
-msgstr "maken van symbolische link %s mislukt: %s\n"
-
-#: ../alternatives.c:63
-#, c-format
-msgid "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
-msgstr "alternatives versie %s - Copyright © 2001 Red Hat, Inc.\n"
-
-#: ../alternatives.c:64
-#, c-format
-msgid ""
-"This may be freely redistributed under the terms of the GNU Public License.\n"
-"\n"
-msgstr ""
-"Dit mag vrijelijk worden verspreid onder de voorwaarden van de GNU Public "
-"License.\n"
-"\n"
-
-#: ../alternatives.c:65
-#, c-format
-msgid "usage: alternatives --install <link> <name> <path> <priority>\n"
-msgstr "gebruik: alternatives --install <link> <naam> <pad> <prioriteit>\n"
-
-#: ../alternatives.c:66
-#, c-format
-msgid " [--initscript <service>]\n"
-msgstr " [--initscript <service>]\n"
-
-#: ../alternatives.c:67
-#, c-format
-msgid " [--slave <link> <name> <path>]*\n"
-msgstr " [--slave <link> <naam> <pad>]*\n"
-
-#: ../alternatives.c:68
-#, c-format
-msgid " alternatives --remove <name> <path>\n"
-msgstr " alternatives --remove <naam> <pad>\n"
-
-#: ../alternatives.c:69
-#, c-format
-msgid " alternatives --auto <name>\n"
-msgstr " alternatives --auto <naam>\n"
-
-#: ../alternatives.c:70
-#, c-format
-msgid " alternatives --config <name>\n"
-msgstr " alternatives --config <naam>\n"
-
-#: ../alternatives.c:71
-#, c-format
-msgid " alternatives --display <name>\n"
-msgstr " alternatives --display <naam>\n"
-
-#: ../alternatives.c:72
-#, c-format
-msgid " alternatives --set <name> <path>\n"
-msgstr " alternatives --set <naam> <pad>\n"
-
-#: ../alternatives.c:73
-#, c-format
-msgid "\n"
-msgstr "\n"
-
-#: ../alternatives.c:74
-#, c-format
-msgid "common options: --verbose --test --help --usage --version\n"
-msgstr "gebruikelijke opties: --verbose --test --help --usage --version\n"
-
-#: ../alternatives.c:75
-#, c-format
-msgid " --altdir <directory> --admindir <directory>\n"
-msgstr " --altdir <map> --admindir <map>\n"
-
-#: ../alternatives.c:172
-#, c-format
-msgid "reading %s\n"
-msgstr "lezen van %s\n"
-
-#: ../alternatives.c:176
-#, c-format
-msgid "failed to open %s: %s\n"
-msgstr "openen van %s mislukt: %s\n"
-
-#: ../alternatives.c:185
-#, c-format
-msgid "failed to read %s: %s\n"
-msgstr "lezen van %s mislukt: %s\n"
-
-#: ../alternatives.c:194
-#, c-format
-msgid "%s empty!\n"
-msgstr "%s is leeg!\n"
-
-#: ../alternatives.c:203
-#, c-format
-msgid "bad mode on line 1 of %s\n"
-msgstr "verkeerde modus op regel 1 van %s\n"
-
-#: ../alternatives.c:210
-#, c-format
-msgid "bad primary link in %s\n"
-msgstr "verkeerde primaire link in %s\n"
-
-#: ../alternatives.c:222
-#, c-format
-msgid "path %s unexpected in %s\n"
-msgstr "pad %s niet verwacht in %s\n"
-
-#: ../alternatives.c:231
-#, c-format
-msgid "missing path for slave %s in %s\n"
-msgstr "ontbrekend pad voor slaaf %s in %s\n"
-
-#: ../alternatives.c:241
-#, c-format
-msgid "unexpected end of file in %s\n"
-msgstr "onverwacht einde van bestand in %s\n"
-
-#: ../alternatives.c:250
-#, c-format
-msgid "path to alternate expected in %s\n"
-msgstr "pad voor alternatief verwacht in %s\n"
-
-#: ../alternatives.c:270
-#, c-format
-msgid "numeric priority expected in %s\n"
-msgstr "numerieke prioriteit verwacht in %s\n"
-
-#: ../alternatives.c:292
-#, c-format
-msgid "slave path expected in %s\n"
-msgstr "pad voor slaaf verwacht in %s\n"
-
-#: ../alternatives.c:311
-#, c-format
-msgid "unexpected line in %s: %s\n"
-msgstr "onverwachte regel in %s: %s\n"
-
-#: ../alternatives.c:319
-#, c-format
-msgid "failed to read link %s: %s\n"
-msgstr "lezen van link %s mislukt: %s\n"
-
-#: ../alternatives.c:333
-#, c-format
-msgid "link points to no alternative -- setting mode to manual\n"
-msgstr "link verwijst niet naar alternatief -- modus wordt op handmatig gezet\n"
-
-#: ../alternatives.c:338
-#, c-format
-msgid "link changed -- setting mode to manual\n"
-msgstr "link veranderd -- modus wordt op handmatig gezet\n"
-
-#: ../alternatives.c:366 ../alternatives.c:373
-#, c-format
-msgid "would remove %s\n"
-msgstr "zou %s verwijderen\n"
-
-#: ../alternatives.c:368 ../alternatives.c:375 ../alternatives.c:406
-#, c-format
-msgid "failed to remove link %s: %s\n"
-msgstr "verwijderen van link %s mislukt: %s\n"
-
-#: ../alternatives.c:391 ../alternatives.c:403
-#, c-format
-msgid "would link %s -> %s\n"
-msgstr "zou %s linken -> %s\n"
-
-#: ../alternatives.c:395 ../alternatives.c:412
-#, c-format
-msgid "failed to link %s -> %s: %s\n"
-msgstr "aanmaken van link %s -> %s mislukt: %s\n"
-
-#: ../alternatives.c:444
-#, c-format
-msgid "%s already exists\n"
-msgstr "%s bestaat reeds\n"
-
-#: ../alternatives.c:446
-#, c-format
-msgid "failed to create %s: %s\n"
-msgstr "aanmaken van %s mislukt: %s\n"
-
-#: ../alternatives.c:477
-#, c-format
-msgid "failed to replace %s with %s: %s\n"
-msgstr "vervangen van %s door %s mislukt: %s\n"
-
-#: ../alternatives.c:503 ../alternatives.c:512
-#, c-format
-msgid "running %s\n"
-msgstr "uitvoeren van %s\n"
-
-#: ../alternatives.c:539
-#, c-format
-msgid "the primary link for %s must be %s\n"
-msgstr "de primaire link voor %s moet zijn %s\n"
-
-#: ../alternatives.c:619
-#, c-format
-msgid "link %s incorrect for slave %s (%s %s)\n"
-msgstr "link %s is incorrect voor slaaf %s (%s %s)\n"
-
-#: ../alternatives.c:660
-#, c-format
-msgid "%s - status is auto.\n"
-msgstr "%s - status is auto.\n"
-
-#: ../alternatives.c:662
-#, c-format
-msgid "%s - status is manual.\n"
-msgstr "%s - status is handmatig.\n"
-
-#: ../alternatives.c:664
-#, c-format
-msgid " link currently points to %s\n"
-msgstr " link wijst momenteel naar %s\n"
-
-#: ../alternatives.c:667
-#, c-format
-msgid "%s - priority %d\n"
-msgstr "%s - prioriteit %d\n"
-
-#: ../alternatives.c:670
-#, c-format
-msgid " slave %s: %s\n"
-msgstr " slaaf %s: %s\n"
-
-#: ../alternatives.c:675
-#, c-format
-msgid "Current `best' version is %s.\n"
-msgstr "Huidige 'beste' versie is %s.\n"
-
-#: ../alternatives.c:705
-#, c-format
-msgid "There is %d program that provides '%s'.\n"
-msgstr "Er is %d programma die '%s' levert.\n"
-
-#: ../alternatives.c:705
-#, c-format
-msgid "There are %d programs which provide '%s'.\n"
-msgstr "Er zijn %d programma's die '%s' leveren.\n"
-
-#: ../alternatives.c:707
-#, c-format
-msgid " Selection Command\n"
-msgstr " Selectie Opdracht\n"
-
-#: ../alternatives.c:716
-#, c-format
-msgid "Enter to keep the current selection[+], or type selection number: "
-msgstr "<enter> om de huidige selectie te bewaren[+], of type een selectienummer: "
-
-#: ../alternatives.c:719
-#, c-format
-msgid ""
-"\n"
-"error reading choice\n"
-msgstr ""
-"\n"
-"fout bij lezen keuze\n"
-
-#: ../alternatives.c:746 ../alternatives.c:772
-#, c-format
-msgid "%s has not been configured as an alternative for %s\n"
-msgstr "%s is niet geconfigureerd als alternatief voor %s\n"
-
-#: ../alternatives.c:788
-#, c-format
-msgid "(would remove %s\n"
-msgstr "(zou %s verwijderen\n"
-
-#: ../alternatives.c:790
-#, c-format
-msgid "failed to remove %s: %s\n"
-msgstr "verwijderen van %s mislukt: %s\n"
-
-#: ../alternatives.c:912
-#, c-format
-msgid "altdir %s invalid\n"
-msgstr "altdir %s is ongeldig\n"
-
-#: ../alternatives.c:918
-#, c-format
-msgid "admindir %s invalid\n"
-msgstr "admindir %s is ongeldig\n"
-
-#: ../alternatives.c:928
-#, c-format
-msgid "alternatives version %s\n"
-msgstr "alternatives versie %s\n"
-
--- chkconfig-1.3.46/po/nn.po
+++ chkconfig-1.3.46/po/nn.po
(renamed to chkconfig-1.3.48/po/nn.po)
--- chkconfig-1.3.46/po/or.po
+++ chkconfig-1.3.46/po/or.po
(renamed to chkconfig-1.3.48/po/or.po)
--- chkconfig-1.3.46/po/pa.po
+++ chkconfig-1.3.46/po/pa.po
(renamed to chkconfig-1.3.48/po/pa.po)
--- chkconfig-1.3.46/po/pl.po
+++ chkconfig-1.3.46/po/pl.po
(renamed to chkconfig-1.3.48/po/pl.po)
--- chkconfig-1.3.46/po/pt.po
+++ chkconfig-1.3.46/po/pt.po
(renamed to chkconfig-1.3.48/po/pt.po)
--- chkconfig-1.3.46/po/pt_BR.po
+++ chkconfig-1.3.46/po/pt_BR.po
(renamed to chkconfig-1.3.48/po/pt_BR.po)
--- chkconfig-1.3.46/po/ro.po
+++ chkconfig-1.3.46/po/ro.po
(renamed to chkconfig-1.3.48/po/ro.po)
--- chkconfig-1.3.46/po/ru.po
+++ chkconfig-1.3.46/po/ru.po
(renamed to chkconfig-1.3.48/po/ru.po)
--- chkconfig-1.3.46/po/si.po
+++ chkconfig-1.3.46/po/si.po
(renamed to chkconfig-1.3.48/po/si.po)
--- chkconfig-1.3.46/po/sk.po
+++ chkconfig-1.3.46/po/sk.po
(renamed to chkconfig-1.3.48/po/sk.po)
--- chkconfig-1.3.46/po/sl.po
+++ chkconfig-1.3.46/po/sl.po
(renamed to chkconfig-1.3.48/po/sl.po)
--- chkconfig-1.3.46/po/sq.po
+++ chkconfig-1.3.46/po/sq.po
(renamed to chkconfig-1.3.48/po/sq.po)
--- chkconfig-1.3.46/po/sr.po
+++ chkconfig-1.3.46/po/sr.po
(renamed to chkconfig-1.3.48/po/sr.po)
--- chkconfig-1.3.46/po/sr at latin.po
+++ chkconfig-1.3.46/po/sr at latin.po
(renamed to chkconfig-1.3.48/po/sr at latin.po)
--- chkconfig-1.3.46/po/sv.po
+++ chkconfig-1.3.46/po/sv.po
(renamed to chkconfig-1.3.48/po/sv.po)
--- chkconfig-1.3.46/po/ta.po
+++ chkconfig-1.3.46/po/ta.po
(renamed to chkconfig-1.3.48/po/ta.po)
--- chkconfig-1.3.46/po/te.po
+++ chkconfig-1.3.46/po/te.po
(renamed to chkconfig-1.3.48/po/te.po)
--- chkconfig-1.3.46/po/tg.po
+++ chkconfig-1.3.46/po/tg.po
(renamed to chkconfig-1.3.48/po/tg.po)
--- chkconfig-1.3.46/po/tr.po
+++ chkconfig-1.3.46/po/tr.po
(renamed to chkconfig-1.3.48/po/tr.po)
--- chkconfig-1.3.46/po/uk.po
+++ chkconfig-1.3.46/po/uk.po
(renamed to chkconfig-1.3.48/po/uk.po)
--- chkconfig-1.3.46/po/ur.po
+++ chkconfig-1.3.46/po/ur.po
(renamed to chkconfig-1.3.48/po/ur.po)
--- chkconfig-1.3.46/po/vi.po
+++ chkconfig-1.3.46/po/vi.po
(renamed to chkconfig-1.3.48/po/vi.po)
--- chkconfig-1.3.46/po/zh_CN.po
+++ chkconfig-1.3.46/po/zh_CN.po
(renamed to chkconfig-1.3.48/po/zh_CN.po)
--- chkconfig-1.3.46/po/zh_TW.po
+++ chkconfig-1.3.46/po/zh_TW.po
(renamed to chkconfig-1.3.48/po/zh_TW.po)
--- chkconfig-1.3.48
+++ chkconfig-1.3.48
+(directory)
--- chkconfig-1.3.48/COPYING
+++ chkconfig-1.3.48/COPYING
(renamed from chkconfig-1.3.46/COPYING)
--- chkconfig-1.3.48/Makefile
+++ chkconfig-1.3.48/Makefile
(renamed from chkconfig-1.3.46/Makefile)
--- chkconfig-1.3.48/alternatives.8
+++ chkconfig-1.3.48/alternatives.8
(renamed from chkconfig-1.3.46/alternatives.8)
--- chkconfig-1.3.48/alternatives.c
+++ chkconfig-1.3.48/alternatives.c
(renamed from chkconfig-1.3.46/alternatives.c)
--- chkconfig-1.3.48/chkconfig.8
+++ chkconfig-1.3.48/chkconfig.8
(renamed from chkconfig-1.3.46/chkconfig.8)
--- chkconfig-1.3.48/chkconfig.c
+++ chkconfig-1.3.48/chkconfig.c
+/* Copyright 1997-2008 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+#include <ctype.h>
+#include <dirent.h>
+#include <errno.h>
+#include <glob.h>
+#include <libintl.h>
+#include <locale.h>
+#include <popt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+static char *progname;
+
+#define _(String) gettext((String))
+
+#include "leveldb.h"
+
+static int LSB = 0;
+
+static void usage(void) {
+ fprintf(stderr, _("%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"), progname, VERSION);
+ fprintf(stderr, _("This may be freely redistributed under the terms of "
+ "the GNU Public License.\n"));
+ fprintf(stderr, "\n");
+ fprintf(stderr, _("usage: %s [--list] [--type <type>] [name]\n"), progname);
+ fprintf(stderr, _(" %s --add <name>\n"), progname);
+ fprintf(stderr, _(" %s --del <name>\n"), progname);
+ fprintf(stderr, _(" %s --override <name>\n"), progname);
+ fprintf(stderr, _(" %s [--level <levels>] [--type <type>] <name> %s\n"), progname, "<on|off|reset|resetpriorities>");
+
+ exit(1);
+}
+
+static void readServiceError(int rc, char * name) {
+ if (rc == 2) {
+ fprintf(stderr, _("service %s supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add %s')\n"), name, name);
+ } else if (rc == 1) {
+ fprintf(stderr, _("service %s does not support chkconfig\n"), name);
+ } else {
+ fprintf(stderr, _("error reading information on service %s: %s\n"),
+ name, strerror(errno));
+ }
+
+ exit(1);
+}
+
+static void checkRoot() {
+ if (access(RUNLEVELS "/rc3.d", R_OK | W_OK) != 0) {
+ fprintf(stderr, _("You do not have enough privileges to perform this operation.\n"));
+ exit(1);
+ }
+}
+
+static int delService(char *name, int type, int level) {
+ int i, j, k, numservs, rc;
+ glob_t globres;
+ struct service s;
+ struct service *services;
+
+ if ((rc = readServiceInfo(name, type, &s, 0))) {
+ readServiceError(rc, name);
+ return 1;
+ }
+ if (s.type == TYPE_XINETD) return 0;
+
+ checkRoot();
+
+ if (LSB && level == -1) {
+ numservs = readServices(&services);
+
+ for (i = 0; i < numservs ; i++) {
+ if (services[i].startDeps) {
+ for (j = 0; services[i].startDeps[j].name ; j++) {
+ if (!strcmp(services[i].startDeps[j].name, s.name)) {
+ for (k = 0 ; k <= 6; k++) {
+ if (isOn(services[i].name, k))
+ return 1;
+ }
+ }
+ }
+ }
+ if (services[i].stopDeps) {
+ for (j = 0; services[i].stopDeps[j].name ; j++) {
+ if (!strcmp(services[i].stopDeps[j].name, s.name)) {
+ for (k = 0 ; k <= 6; k++) {
+ if (!isOn(services[i].name, k))
+ return 1;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ for (j = 0 ; j < 7; j++) {
+ if (level == -1 || level == j) {
+ if (!findServiceEntries(name, j, &globres)) {
+ for (i = 0; i < globres.gl_pathc; i++)
+ unlink(globres.gl_pathv[i]);
+ if (globres.gl_pathc) globfree(&globres);
+ }
+ }
+ }
+ return 0;
+}
+
+static inline int laterThan(int i, int j) {
+ if (i <= j) {
+ i = j+1;
+ if (i > 99)
+ i = 99;
+ }
+ return i;
+}
+
+static inline int earlierThan(int i, int j) {
+ if (i >= j) {
+ i = j -1;
+ if (i < 0)
+ i = 0;
+ }
+ return i;
+}
+
+static int isSimilarlyConfigured(struct service s, struct service t, int start) {
+ int i, state_s, state_t;
+
+ for (i = 0; i <= 6; i ++) {
+ if (isConfigured(s.name, i, NULL, NULL)) {
+ state_s = isOn(s.name, i);
+ } else {
+ state_s = ((1<<i) & s.levels) ? 1 : 0;
+ }
+ state_t = isOn(t.name, i);
+ if (state_s == state_t && state_s == start)
+ return 1;
+ }
+ return 0;
+}
+
+static void checkDeps(struct service *s, struct dep *deps, struct service *serv, int start) {
+ int j,k;
+
+ for (j = 0; deps[j].name ; j++) {
+ if (!strcmp(deps[j].name, serv->name) && isSimilarlyConfigured(*s, *serv, start)) {
+ if (start)
+ s->sPriority = laterThan(s->sPriority, serv->sPriority);
+ else
+ s->kPriority = earlierThan(s->kPriority, serv->kPriority);
+ deps[j].handled = 1;
+ }
+ if (serv->provides) {
+ for (k = 0; serv->provides[k]; k++) {
+ if (!strcmp(deps[j].name, serv->provides[k]) && isSimilarlyConfigured(*s, *serv, start)) {
+ if (start)
+ s->sPriority = laterThan(s->sPriority, serv->sPriority);
+ else
+ s->kPriority = earlierThan(s->kPriority, serv->kPriority);
+ deps[j].handled = 1;
+ }
+ }
+ }
+ }
+}
+
+static int frobOneDependencies(struct service *s, struct service *servs, int numservs, int target, int depfail) {
+ int i;
+ int s0 = s->sPriority;
+ int k0 = s->kPriority;
+
+ if (s->sPriority < 0) s->sPriority = 50;
+ if (s->kPriority < 0) s->kPriority = 50;
+ for (i = 0; i < numservs ; i++) {
+ if (s->startDeps) {
+ checkDeps(s, s->startDeps, &servs[i], 1);
+ }
+ if (s->softStartDeps) {
+ checkDeps(s, s->softStartDeps, &servs[i], 1);
+ }
+ if (s->stopDeps) {
+ checkDeps(s, s->stopDeps, &servs[i], 0);
+ }
+ if (s->softStopDeps) {
+ checkDeps(s, s->softStopDeps, &servs[i], 0);
+ }
+ }
+ if (depfail) {
+ if (s->startDeps) {
+ for (i = 0; s->startDeps[i].name; i++) {
+ if (!s->startDeps[i].handled && strcmp(s->startDeps[i].name,"$local_fs"))
+ return -1;
+ }
+ }
+ if (s->stopDeps) {
+ for (i = 0; s->stopDeps[i].name; i++) {
+ if (!s->stopDeps[i].handled && strcmp(s->stopDeps[i].name,"$local_fs"))
+ return -1;
+ }
+ }
+ }
+
+ if (target || ((s0 != s->sPriority) || (k0 != s->kPriority))) {
+ for (i = 0; i < 7; i++) {
+ if (isConfigured(s->name, i, NULL, NULL)) {
+ int on = isOn(s->name, i);
+ delService(s->name, TYPE_INIT_D, i);
+ doSetService(*s, i, on);
+ } else if (target) {
+ delService(s->name, TYPE_INIT_D, i);
+ doSetService(*s, i, ((1<<i) & s->levels));
+ }
+ }
+ return 1; /* Resolved something */
+ }
+ return 0; /* Didn't resolve anything */
+}
+
+/* LSB-style dependency frobber. Calculates a usable start priority
+ * and stop priority.
+ * This algorithm will almost certainly break horribly at some point. */
+static int frobDependencies(struct service *s) {
+ struct service *servs = NULL;
+ int numservs = 0;
+ int nResolved = 0;
+
+ numservs = readServices(&servs);
+ /* Resolve recursively the other dependancies */
+ do {
+ nResolved = 0;
+ int i;
+
+ for (i = 0; i < numservs ; i++) {
+ if ((servs+i)->isLSB && strcmp((servs+i)->name, s->name))
+ nResolved += frobOneDependencies(servs+i, servs, numservs, 0, 0);
+ }
+ } while (nResolved);
+
+ /* Resolve our target */
+ if (frobOneDependencies(s, servs, numservs, 1, LSB) == -1)
+ return 1;
+ return 0;
+}
+
+static int addService(char * name, int type) {
+ int i, rc;
+ struct service s;
+
+ if ((rc = readServiceInfo(name, type, &s, 0))) {
+ readServiceError(rc, name);
+ return 1;
+ }
+
+ if (s.type == TYPE_XINETD) return 0;
+ checkRoot();
+
+ if (s.isLSB)
+ rc = frobDependencies(&s);
+ else
+ for (i = 0; i < 7; i++) {
+ if (!isConfigured(name, i, NULL, NULL)) {
+ if ((1 << i) & s.levels)
+ doSetService(s, i, 1);
+ else
+ doSetService(s, i, 0);
+ }
+ }
+
+ return rc;
+}
+
+static int overrideService(char * name, int srvtype) {
+ /* Apply overrides if available; no available overrides is no error */
+ int level, i, rc;
+ glob_t globres;
+ struct service s;
+ struct service o;
+ int priority;
+ char type;
+ int doChange = 1;
+ int configured = 0;
+ int thisLevelAdded, thisLevelOn;
+
+ if ((rc = readServiceDifferences(name, srvtype, &s, &o, 0))) {
+ return 0;
+ }
+
+ if (s.type == TYPE_XINETD) return 0;
+
+ checkRoot();
+
+ if ((s.levels == o.levels) &&
+ (s.kPriority == o.kPriority) &&
+ (s.sPriority == o.sPriority)) {
+ /* no relevant changes in the override file */
+ return 0;
+ }
+
+ if (s.isLSB && (s.sPriority <= -1) && (s.kPriority <= -1))
+ frobDependencies(&s);
+ if ((s.isLSB || o.isLSB) && (o.sPriority <= -1) && (o.kPriority <= -1))
+ frobDependencies(&o);
+
+ /* Apply overrides only if the service has not been changed since
+ * being added, and not if the service has never been configured
+ * at all.
+ */
+
+ for (level = 0; level < 7; level++) {
+ thisLevelAdded = isConfigured(name, level, &priority, &type);
+ thisLevelOn = s.levels & 1<<level;
+ if (thisLevelAdded) {
+ configured = 1;
+ if (type == 'S') {
+ if (priority != s.sPriority || !thisLevelOn) {
+ doChange = 0;
+ break;
+ }
+ } else if (type == 'K') {
+ if (priority != s.kPriority || thisLevelOn) {
+ doChange = 0;
+ break;
+ }
+ }
+ }
+ }
+
+ if (configured && doChange) {
+ for (level = 0; level < 7; level++) {
+ if (!findServiceEntries(name, level, &globres)) {
+ for (i = 0; i < globres.gl_pathc; i++)
+ unlink(globres.gl_pathv[i]);
+ if (globres.gl_pathc)
+ globfree(&globres);
+ if ((1 << level) & o.levels)
+ doSetService(o, level, 1);
+ else
+ doSetService(o, level, 0);
+ }
+ }
+ }
+
+ return 0;
+}
+
+static int showServiceInfo(struct service s, int forgiving) {
+ int rc;
+ int i;
+
+ if (s.type == TYPE_INIT_D) {
+ rc = 2;
+ for (i = 0 ; i < 7 ; i++) {
+ if (isConfigured(s.name, i, NULL, NULL)) {
+ rc = 0;
+ break;
+ }
+ }
+ }
+
+ if (rc) {
+ if (!forgiving)
+ readServiceError(rc, s.name);
+ return forgiving ? 0 : 1;
+ }
+
+ printf("%-15s", s.name);
+ if (s.type == TYPE_XINETD) {
+ printf("\t%s\n", s.levels ? _("on") : _("off"));
+ return 0;
+ }
+
+ for (i = 0; i < 7; i++) {
+ printf("\t%d:%s", i, isOn(s.name, i) ? _("on") : _("off"));
+ }
+ printf("\n");
+
+ return 0;
+}
+
+static int showServiceInfoByName(char * name, int type, int forgiving) {
+ int rc;
+ struct service s;
+
+ rc = readServiceInfo(name, type, &s, 0);
+
+ if (rc) {
+ if (!forgiving)
+ readServiceError(rc, name);
+ return forgiving ? 0 : 1;
+ }
+
+ return showServiceInfo(s, forgiving);
+}
+
+
+static int isXinetdEnabled() {
+ int i;
+ struct service s;
+
+ if (readServiceInfo("xinetd", TYPE_INIT_D, &s, 0)) {
+ return 0;
+ }
+ for (i = 0; i < 7; i++) {
+ if (isOn("xinetd", i))
+ return 1;
+ }
+ return 0;
+}
+
+static int serviceNameCmp(const void * a, const void * b) {
+ return strcmp(* (char **)a, * (char **)b);
+}
+
+static int xinetdNameCmp(const void * a, const void * b) {
+ const struct service * first = a;
+ const struct service * second = b;
+
+ return strcmp(first->name, second->name);
+}
+
+
+static int listService(char * item, int type) {
+ DIR * dir;
+ struct dirent * ent;
+ struct service *services;
+ int i;
+ int numServices = 0;
+ int numServicesAlloced;
+ int err = 0;
+
+ if (item) return showServiceInfoByName(item, type, 0);
+
+ if (type & TYPE_INIT_D) {
+ numServices = readServices(&services);
+
+ qsort(services, numServices, sizeof(*services), serviceNameCmp);
+
+ for (i = 0; i < numServices ; i++) {
+ if (showServiceInfo(services[i], 1)) {
+ return 1;
+ }
+ }
+ }
+
+ if (isXinetdEnabled() && type & TYPE_XINETD) {
+ struct service *s, *t;
+
+ printf("\n");
+ printf(_("xinetd based services:\n"));
+ if (!(dir = opendir(XINETDDIR))) {
+ fprintf(stderr, _("failed to open directory %s: %s\n"),
+ XINETDDIR, strerror(err));
+ return 1;
+ }
+ numServices = 0;
+ numServicesAlloced = 10;
+ s = malloc(sizeof (*s) * numServicesAlloced);
+
+ while ((ent = readdir(dir))) {
+ const char *dn;
+
+ /* Skip any file starting with a . */
+ if (ent->d_name[0] == '.') continue;
+
+ /* Skip files with known bad extensions */
+ if ((dn = strrchr(ent->d_name, '.')) != NULL &&
+ (!strcmp(dn, ".rpmsave") || !strcmp(dn, ".rpmnew") || !strcmp(dn, ".rpmorig") || !strcmp(dn, ".swp")))
+ continue;
+
+ dn = ent->d_name + strlen(ent->d_name) - 1;
+ if (*dn == '~' || *dn == ',')
+ continue;
+
+ if (numServices == numServicesAlloced) {
+ numServicesAlloced += 10;
+ s = realloc(s, numServicesAlloced * sizeof (*s));
+ }
+ if (readXinetdServiceInfo(ent->d_name, s + numServices) != -1)
+ numServices ++;
+ }
+
+ qsort(s, numServices, sizeof(*s), xinetdNameCmp);
+ t = s;
+ for (i = 0; i < numServices; i++, s++) {
+ char *tmp = malloc(strlen(s->name) + 5);
+ sprintf(tmp,"%s:",s->name);
+ printf("\t%-15s\t%s\n", tmp, s->levels ? _("on") : _("off"));
+ }
+ closedir(dir);
+ free(t);
+ }
+ return 0;
+}
+
+int setService(char * name, int type, int where, int state) {
+ int i, rc;
+ int what;
+ struct service s;
+
+ if (!where && state != -1) {
+ /* levels 2, 3, 4, 5 */
+ where = (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5);
+ } else if (!where) {
+ where = (1 << 0) | (1 << 1) | (1 << 2) |
+ (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
+ }
+
+ if ((rc = readServiceInfo(name, type, &s, 0))) {
+ readServiceError(rc, name);
+ return 1;
+ }
+
+ checkRoot();
+
+ if (s.type == TYPE_INIT_D) {
+ int rc = 0;
+
+ if (s.isLSB)
+ frobDependencies(&s);
+ for (i = 0; i < 7; i++) {
+
+ if (!((1 << i) & where)) continue;
+
+ if (state == 1 || state == 0)
+ what = state;
+ else if (state == -2)
+ what = isOn(name, i);
+ else if (s.levels & (1 << i))
+ what = 1;
+ else
+ what = 0;
+ rc |= doSetService(s, i, what);
+ }
+ return rc;
+ } else if (s.type == TYPE_XINETD) {
+ if (setXinetdService(s, state)) {
+ return 1;
+ }
+ system("/etc/init.d/xinetd reload >/dev/null 2>&1");
+ }
+
+ return 0;
+}
+
+int main(int argc, const char ** argv) {
+ int listItem = 0, addItem = 0, delItem = 0, overrideItem = 0;
+ int type = TYPE_ANY;
+ int rc, i, x;
+ char * levels = NULL;
+ char * typeString = NULL;
+ int help=0, version=0;
+ struct service s;
+ poptContext optCon;
+ struct poptOption optionsTable[] = {
+ { "add", '\0', 0, &addItem, 0 },
+ { "del", '\0', 0, &delItem, 0 },
+ { "override", '\0', 0, &overrideItem, 0 },
+ { "list", '\0', 0, &listItem, 0 },
+ { "level", '\0', POPT_ARG_STRING, &levels, 0 },
+ { "levels", '\0', POPT_ARG_STRING, &levels, 0 },
+ { "type", '\0', POPT_ARG_STRING, &typeString, 0 },
+ { "help", 'h', POPT_ARG_NONE, &help, 0 },
+ { "version", 'v', POPT_ARG_NONE, &version, 0 },
+ { 0, 0, 0, 0, 0 }
+ };
+
+ if ((progname = strrchr(argv[0], '/')) != NULL)
+ progname++;
+ else
+ progname = (char *)argv[0];
+ if (!strcmp(progname,"install_initd")) {
+ addItem++;
+ LSB++;
+ }
+ if (!strcmp(progname,"remove_initd")) {
+ delItem++;
+ LSB++;
+ }
+
+ setlocale(LC_ALL, "");
+ bindtextdomain("chkconfig","/usr/share/locale");
+ textdomain("chkconfig");
+
+ optCon = poptGetContext("chkconfig", argc, argv, optionsTable, 0);
+ poptReadDefaultConfig(optCon, 1);
+
+ if ((rc = poptGetNextOpt(optCon)) < -1) {
+ fprintf(stderr, "%s: %s\n",
+ poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
+ poptStrerror(rc));
+ exit(1);
+ }
+
+ if (version) {
+ fprintf(stdout, _("%s version %s\n"), progname, VERSION);
+ exit(0);
+ }
+
+ if (help) usage();
+
+ if (typeString) {
+ if (!strcmp(typeString, "xinetd"))
+ type = TYPE_XINETD;
+ else if (!strcmp(typeString, "sysv"))
+ type = TYPE_INIT_D;
+ else {
+ fprintf(stderr, _("--type must be 'sysv' or 'xinetd'\n"));
+ exit(1);
+ }
+ }
+
+ if (argc == 1) return listService(NULL, type);
+
+ if ((listItem + addItem + delItem + overrideItem) > 1) {
+ fprintf(stderr, _("only one of --list, --add, --del, or --override"
+ " may be specified\n"));
+ exit(1);
+ }
+
+ if (addItem) {
+ char * name = (char *)poptGetArg(optCon);
+
+ if (!name || !*name || poptGetArg(optCon))
+ usage();
+
+ name = basename(name);
+ return addService(name, type);
+ } else if (delItem) {
+ char * name = (char *)poptGetArg(optCon);
+
+ if (!name || !*name || poptGetArg(optCon)) usage();
+
+ name = basename(name);
+ return delService(name, type, -1);
+ } else if (overrideItem) {
+ char * name = (char *)poptGetArg(optCon);
+
+ if (!name || !*name || poptGetArg(optCon)) usage();
+
+ name = basename(name);
+ return overrideService(name, type);
+ } else if (listItem) {
+ char * item = (char *)poptGetArg(optCon);
+
+ if (item && poptGetArg(optCon)) usage();
+
+ return listService(item, type);
+ } else {
+ char * name = (char *)poptGetArg(optCon);
+ char * state = (char *)poptGetArg(optCon);
+ int where = 0, level = -1;
+
+ if (!name) {
+ usage();
+ }
+ if (levels) {
+ where = parseLevels(levels, 0);
+ if (where == -1) usage();
+ }
+
+ if (!state) {
+ if (where) {
+ rc = x = 0;
+ i = where;
+ while (i) {
+ if (i & 1) {
+ rc++;
+ level = x;
+ }
+ i >>= 1;
+ x++;
+ }
+
+ if (rc > 1) {
+ fprintf(stderr, _("only one runlevel may be specified for "
+ "a chkconfig query\n"));
+ exit(1);
+ }
+ }
+ rc = readServiceInfo(name, type, &s, 0);
+ if (rc)
+ return 1;
+ if (s.type == TYPE_XINETD) {
+ if (isOn("xinetd",level))
+ return !s.levels;
+ else
+ return 1;
+ } else
+ return isOn(name, level) ? 0 : 1;
+ } else if (!strcmp(state, "on"))
+ return setService(name, type, where, 1);
+ else if (!strcmp(state, "off"))
+ return setService(name, type, where, 0);
+ else if (!strcmp(state, "reset"))
+ return setService(name, type, where, -1);
+ else if (!strcmp(state, "resetpriorities"))
+ return setService(name, type, where, -2);
+ else
+ usage();
+ }
+
+ usage();
+
+ return 1;
+}
--- chkconfig-1.3.48/chkconfig.spec
+++ chkconfig-1.3.48/chkconfig.spec
+Summary: A system tool for maintaining the /etc/rc*.d hierarchy
+Name: chkconfig
+Version: 1.3.48
+Release: 1%{?dist}
+License: GPLv2
+Group: System Environment/Base
+Source: http://fedorahosted.org/releases/c/h/chkconfig/%{name}-%{version}.tar.bz2
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: newt-devel gettext popt-devel
+Conflicts: initscripts <= 5.30-1
+
+%description
+Chkconfig is a basic system utility. It updates and queries runlevel
+information for system services. Chkconfig manipulates the numerous
+symbolic links in /etc/rc.d, to relieve system administrators of some
+of the drudgery of manually editing the symbolic links.
+
+%package -n ntsysv
+Summary: A tool to set the stop/start of system services in a runlevel
+Group: System Environment/Base
+Requires: chkconfig = %{version}-%{release}
+
+%description -n ntsysv
+Ntsysv provides a simple interface for setting which system services
+are started or stopped in various runlevels (instead of directly
+manipulating the numerous symbolic links in /etc/rc.d). Unless you
+specify a runlevel or runlevels on the command line (see the man
+page), ntsysv configures the current runlevel (5 if you're using X).
+
+%prep
+%setup -q
+
+%build
+
+make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} SBINDIR=%{_sbindir} install
+
+mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
+ln -s rc.d/init.d $RPM_BUILD_ROOT/etc/init.d
+for n in 0 1 2 3 4 5 6; do
+ mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc${n}.d
+ ln -s rc.d/rc${n}.d $RPM_BUILD_ROOT/etc/rc${n}.d
+done
+mkdir -p $RPM_BUILD_ROOT/etc/chkconfig.d
+
+%find_lang %{name}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files -f %{name}.lang
+%defattr(-,root,root)
+%doc COPYING
+%dir /etc/alternatives
+/sbin/chkconfig
+%{_sbindir}/update-alternatives
+%{_sbindir}/alternatives
+/etc/chkconfig.d
+/etc/init.d
+/etc/rc.d/init.d
+/etc/rc[0-6].d
+/etc/rc.d/rc[0-6].d
+%dir /var/lib/alternatives
+%{_mandir}/*/chkconfig*
+%{_mandir}/*/update-alternatives*
+%{_mandir}/*/alternatives*
+
+%files -n ntsysv
+%defattr(-,root,root)
+%{_sbindir}/ntsysv
+%{_mandir}/*/ntsysv.8*
+
+%changelog
+* Wed Oct 27 2010 Bill Nottingham <notting at redhat.com> 1.3.48-1
+- fix install_initd invocation for services that require $local_fs (#632294)
+
+* Tue Aug 10 2010 Bill Nottingham <notting at redhat.com> 1.3.47-1
+- Fix regression introduced in 1.3.45 (#622799)
+
+* Wed May 05 2010 Bill Nottingham <notting at redhat.com> 1.3.46-1
+- translation updates: hu, kn, ko (#589187)
+
+* Thu Mar 04 2010 Bill Nottingham <notting at redhat.com> 1.3.45-1
+- add support for Should-Start, Should-Stop (#98470, <iarnell at gmail.com>)
+- ntsysv: don't drop initscripts with '.' in the name (#556751)
+- translation updates: el, id
+
+* Tue Sep 29 2009 Bill Nottingham <notting at redhat.com> 1.3.44-1
+- alternatives: update symlinks if they exist on installation (#104940)
+- alternatives: clarify error messages with more context (#441443)
+- alternatives: fix removal of manual links (#525021, <dtardon at redhat.com>)
+- translation updates: ml, mr, pl, ta, uk
+
+* Mon Sep 14 2009 Bill Nottingham <notting at redhat.com> 1.3.43-1
+- ntsysv man page tweak (#516599)
+- another minor LSB tweak (#474223)
+- translation updates
+
+* Fri Mar 6 2009 Bill Nottingham <notting at redhat.com> 1.3.42-1
+- further LSB fixes (#474223)
+- throw errors on various malformed init scripts (#481198)
+- man page updates re: LSB (#487979)
+- translation updates: mai, gu, pt_BR, ro, ca, pa, sr, fr, hu
+
+* Tue Jan 20 2009 Bill Nottingham <notting at redhat.com> 1.3.41-1
+- restore return code & error on unconfigured services (#480805)
+
+* Fri Dec 5 2008 Bill Nottingham <notting at redhat.com> 1.3.40-1
+- fix some overflows. (#176944)
+- add --type parameter to specify either xinetd or sysv services.
+ (#467863, <mschmidt at redhat.com>
+- do a permissions check before add/remove/on/off/resetpriorities. (#450254)
+- parse Short-Description correctly (#441813, <peter_e at gmx.net>)
+
+* Thu Dec 4 2008 Bill Nottingham <notting at redhat.com> 1.3.39-1
+- fail if dependencies fail on add/remove in LSB mode (#474223)
+
+* Wed Oct 29 2008 Bill Nottingham <notting at redhat.com> 1.3.38-1
+- Fix runlevel list in man page (#466739)
+- translation updates
+
+* Thu Nov 8 2007 Bill Nottingham <notting at redhat.com> 1.3.37-1
+- make no options do --list (#290241, #176184)
+- sr at Latn -> sr at latin
+
+* Tue Sep 25 2007 Bill Nottingham <notting at redhat.com> 1.3.36-1
+- buildreq popt-devel, link it dynamically (#279531)
+- translation updates: kn, ko, mr, ro
+
+* Fri Aug 3 2007 Bill Nottingham <notting at redhat.com> 1.3.35-1
+- clarify licensing
+
+* Mon Apr 16 2007 Bill Nottingham <notting at redhat.com> 1.3.34-1
+- translation updates: as, bg, bn_IN, bs, ca, de, fr, hi, hu, id, ja,
+ ka, ml, ms, nb, or, sk, sl
+- add resetpriorities to the man page (#197399)
+
+* Tue Feb 6 2007 Bill Nottingham <notting at redhat.com> 1.3.33-1
+- various changes from review - support alternate %%{_sbindir}, fix
+ summaries, add version to requires, assorted other bits
+
+* Fri Feb 2 2007 Bill Nottingham <notting at redhat.com> 1.3.32-1
+- support overriding various defaults via /etc/chkconfig.d (<johnsonm at rpath.com>)
+
+* Thu Feb 1 2007 Bill Nottingham <notting at redhat.com> 1.3.31-1
+- fix man page (#220558, <esr at thyrus.com>)
+- add some more verbiage in alternatives man page (#221089)
+- don't print usage message on a nonexstent service (#226804)
+
+* Fri Dec 1 2006 Bill Nottingham <notting at redhat.com> 1.3.30.1-1
+- translation updates: as, ka, lv, ml, te (#216617)
+
+* Thu Sep 7 2006 Bill Nottingham <notting at redhat.com> 1.3.30-1
+- license cleanup
+
+* Fri Feb 24 2006 Bill Nottingham <notting at redhat.com> 1.3.29-1
+- fix accidental enabling of services on --add (#182729)
+
+* Mon Feb 13 2006 Bill Nottingham <notting at redhat.com> 1.3.27-1
+- translation updates
+
+* Thu Feb 2 2006 Bill Nottingham <notting at redhat.com> 1.3.26-1
+- add support for resetting priorities without on/off status (#178864)
+
+* Wed Nov 30 2005 Bill Nottingham <notting at redhat.com> 1.3.25-1
+- return an error if changing services fails (#150235)
+
+* Fri Nov 18 2005 Bill Nottingham <notting at redhat.com> 1.3.24-1
+- when removing alternatives links, check to make sure they're
+ actually links (#173685)
+
+* Fri Nov 11 2005 Bill Nottingham <notting at redhat.com> 1.3.23-1
+- fix ntsysv (#172996)
+
+* Wed Nov 9 2005 Bill Nottingham <notting at redhat.com>
+- fix doSetService call in frobOneDependencies
+
+* Tue Nov 8 2005 Bill Nottingham <notting at redhat.com>
+- for LSB scripts, use any chkconfig: priorities as a basis,
+ instead of 50/50 (#172599)
+- fix LSB script dependency setting when no chkconfig: line
+ is present (#161870, <jean-francois.larvoire at hp.com>)
+- fix LSB script dependency setting when one of Required-Stop
+ or Required-Start: is missing (#168457)
+
+* Fri Oct 7 2005 Bill Nottingham <notting at redhat.com>
+- fix segfault on directories in /etc/xinetd.d (#166385)
+- don't needlessly rewrite xinetd files (#81008)
+
+* Thu May 5 2005 Bill Nottingham <notting at redhat.com> 1.3.20-1
+- fix deletion of orphaned slave links (#131496, <mitr at redhat.com>)
+
+* Fri Apr 29 2005 Bill Nottingham <notting at redhat.com> 1.3.19-1
+- build with updated translations
+
+* Thu Mar 3 2005 Bill Nottingham <notting at redhat.com> 1.3.18-1
+- actually return an error code if changing a service info fails
+
+* Tue Feb 22 2005 Bill Nottingham <notting at redhat.com> 1.3.17-1
+- more chkconfig: vs. LSB fixes (#149066)
+
+* Thu Feb 10 2005 Bill Nottingham <notting at redhat.com> 1.3.16-1
+- prefer chkconfig: start/stop priorities in LSB mode unless
+ Required-Start/Stop are used
+
+* Mon Feb 7 2005 Bill Nottingham <notting at redhat.com> 1.3.15-1
+- print usage when various invalid args are passed (#147393)
+
+* Wed Feb 2 2005 Bill Nottingham <notting at redhat.com> 1.3.14-1
+- resize reasonably with larger screens (#74156)
+- don't error out completely on bad symlink (#74324)
+- use ngettext (#106176)
+- error out on invalid start/stop values (#109858)
+- some man page updates
+- fix return code of chkconfig for xinetd services (#63123)
+- sort chkconfig --list display (#61576, <shishz at alum.rpi.edu>)
+
+* Tue Jan 11 2005 Bill Nottingham <notting at redhat.com> 1.3.13-1
+- fix LSB comment parsing some more (#144739)
+
+* Thu Oct 28 2004 Bill Nottingham <notting at redhat.com> 1.3.11.2-1
+- fix manpage reference (#137492)
+
+* Fri Oct 1 2004 Bill Nottingham <notting at redhat.com> 1.3.11.1-1
+- rebuild with updated translations
+
+* Fri Jun 4 2004 Bill Nottingham <notting at redhat.com> 1.3.11-1
+- fix LSB comment parsing (#85678)
+
+* Wed May 29 2004 Bill Nottingham <notting at redhat.com> 1.3.10-1
+- mark alternatives help output for translation (#110526)
+
+* Wed Oct 22 2003 Bill Nottingham <notting at redhat.com> 1.3.9-1
+- update translations
+
+* Mon Jul 28 2003 Bill Nottingham <notting at redhat.com> 1.3.8-4
+- rebuild
+
+* Tue May 13 2003 Dan Walsh <dwalsh at redhat.com> 1.3.8-3
+- Update for RHEL
+
+* Thu May 8 2003 Dan Walsh <dwalsh at redhat.com> 1.3.8-2
+- Fix readXinetdServiceInfo to return error on not regular files
+- Fix chkconfig to not write messages if readXinetdServiceInfo gets an error
+
+* Fri Jan 31 2003 Bill Nottingham <notting at redhat.com> 1.3.8-1
+- fix some wording in alternatives (#76213)
+- actually mark alternatives for translation
+
+* Thu Dec 12 2002 Elliot Lee <sopwith at redhat.com> 1.3.7-1
+- Link to libpopt in a multilib-safe fashion.
+
+* Thu Aug 29 2002 Trond Eivind Glomsrød <teg at redhat.com> 1.3.6-3
+- bump
+
+* Thu Aug 15 2002 Bill Nottingham <notting at redhat.com> 1.3.6-2
+- rebuild against new newt
+
+* Mon Aug 12 2002 Bill Nottingham <notting at redhat.com> 1.3.6-1
+- make on and off handle runlevel 2 too (#70766)
+
+* Mon Apr 15 2002 Trond Eivind Glomsrød <teg at redhat.com> 1.3.5-3
+- Update translations
+
+* Mon Apr 15 2002 Trond Eivind Glomsrød <teg at redhat.com> 1.3.5-2
+- Update translations
+
+* Sun Apr 7 2002 Jeremy Katz <katzj at redhat.com> 1.3.5-1
+- alternatives: handle default with --config properly (#62009)
+
+* Thu Mar 14 2002 Bill Nottingham <notting at redhat.com> 1.3.4-1
+- don't apply the dependency logic to things that already have
+ start/stop priorities
+- fix silly display bug in --config
+
+* Tue Mar 12 2002 Bill Nottingham <notting at redhat.com> 1.3.2-1
+- chkconfig: LSB support
+
+* Fri Mar 8 2002 Bill Nottingham <notting at redhat.com>
+- alternatives: handle initscripts too; --initscript command-line option
+- chkconfig/ntsysv (and serviceconf, indirectly): services with
+ *no* links in /etc/rc*.d are no longer displayed with --list, or
+ available for configuration except via chkconfig command-line options
+- alternatives: fix trying to enable disable a null service
+
+* Tue Mar 5 2002 Bill Nottingham <notting at redhat.com>
+- alternatives: handle things with different numbers of slave links
+
+* Mon Mar 4 2002 Bill Nottingham <notting at redhat.com>
+- minor alternatives tweaks: don't install the same thing multiple times
+
+* Wed Jan 30 2002 Bill Nottingham <notting at redhat.com>
+- actually, put the alternatives stuff back in /usr/sbin
+- ship /etc/alternatives dir
+- random alternatives fixes
+
+* Sun Jan 27 2002 Erik Troan <ewt at redhat.com>
+- reimplemented update-alternatives as just alternatives
+
+* Thu Jan 25 2002 Bill Nottingham <notting at redhat.com>
+- add in update-alternatives stuff (perl ATM)
+
+* Mon Aug 27 2001 Trond Eivind Glomsrød <teg at redhat.com>
+- Update translations
+
+* Tue Jun 12 2001 Bill Nottingham <notting at redhat.com>
+- don't segfault on files that are exactly the length of a page size
+ (#44199, <kmori at redhat.com>)
+
+* Sun Mar 4 2001 Bill Nottingham <notting at redhat.com>
+- don't show xinetd services in ntsysv if xinetd doesn't appear to be
+ installed (#30565)
+
+* Wed Feb 14 2001 Preston Brown <pbrown at redhat.com>
+- final translation update.
+
+* Tue Feb 13 2001 Preston Brown <pbrown at redhat.com>
+- warn in ntsysv if not running as root.
+
+* Fri Feb 2 2001 Preston Brown <pbrown at redhat.com>
+- use lang finder script
+
+* Fri Feb 2 2001 Bill Nottingham <notting at redhat.com>
+- finally fix the bug Nalin keeps complaining about :)
+
+* Wed Jan 24 2001 Preston Brown <pbrown at redhat.com>
+- final i18n update before Beta.
+
+* Wed Oct 18 2000 Bill Nottingham <notting at redhat.com>
+- ignore .rpmnew files (#18915)
+- fix typo in error message (#17575)
+
+* Wed Aug 30 2000 Nalin Dahyabhai <nalin at redhat.com>
+- make xinetd config files mode 0644, not 644
+
+* Thu Aug 24 2000 Erik Troan <ewt at redhat.com>
+- updated it and es translations
+
+* Sun Aug 20 2000 Bill Nottingham <notting at redhat.com>
+- get man pages in proper packages
+
+* Sun Aug 20 2000 Matt Wilson <msw at redhat.com>
+- new translations
+
+* Tue Aug 16 2000 Nalin Dahyabhai <nalin at redhat.com>
+- don't worry about extra whitespace on chkconfig: lines (#16150)
+
+* Wed Aug 10 2000 Trond Eivind Glomsrød <teg at redhat.com>
+- i18n merge
+
+* Wed Jul 26 2000 Matt Wilson <msw at redhat.com>
+- new translations for de fr it es
+
+* Tue Jul 25 2000 Bill Nottingham <notting at redhat.com>
+- change prereqs
+
+* Sun Jul 23 2000 Bill Nottingham <notting at redhat.com>
+- fix ntsysv's handling of xinetd/init files with the same name
+
+* Fri Jul 21 2000 Bill Nottingham <notting at redhat.com>
+- fix segv when reading malformed files
+
+* Wed Jul 19 2000 Bill Nottingham <notting at redhat.com>
+- put links, rc[0-6].d dirs back, those are necessary
+
+* Tue Jul 18 2000 Bill Nottingham <notting at redhat.com>
+- add quick hack support for reading descriptions from xinetd files
+
+* Mon Jul 17 2000 Bernhard Rosenkraenzer <bero at redhat.com>
+- don't own the /etc/rc[0-6].d symlinks; they're owned by initscripts
+
+* Sat Jul 15 2000 Matt Wilson <msw at redhat.com>
+- move back to old file layout
+
+* Thu Jul 13 2000 Preston Brown <pbrown at redhat.com>
+- bump copyright date
+
+* Tue Jul 11 2000 Bill Nottingham <notting at redhat.com>
+- no %%pre today. Maybe tomorrow.
+
+* Thu Jul 6 2000 Bill Nottingham <notting at redhat.com>
+- put initscripts %%pre here too
+
+* Mon Jul 3 2000 Bill Nottingham <notting at redhat.com>
+- oops, if we don't prereq initscripts, we *need* to own /etc/rc[0-6].d
+
+* Sun Jul 2 2000 Bill Nottingham <notting at redhat.com>
+- add xinetd support
+
+* Tue Jun 27 2000 Matt Wilson <msw at redhat.com>
+- changed Prereq: initscripts >= 5.18 to Conflicts: initscripts < 5.18
+- fixed sumary and description where a global string replace nuked them
+
+* Mon Jun 26 2000 Matt Wilson <msw at redhat.com>
+- what Bill said, but actually build this version
+
+* Thu Jun 15 2000 Bill Nottingham <notting at redhat.com>
+- don't own /etc/rc.*
+
+* Fri Feb 11 2000 Bill Nottingham <notting at redhat.com>
+- typo in man page
+
+* Wed Feb 02 2000 Cristian Gafton <gafton at redhat.com>
+- fix description
+
+* Wed Jan 12 2000 Bill Nottingham <notting at redhat.com>
+- link chkconfig statically against popt
+
+* Mon Oct 18 1999 Bill Nottingham <notting at redhat.com>
+- fix querying alternate levels
+
+* Mon Aug 23 1999 Jeff Johnson <jbj at redhat.com>
+- don't use strchr to skip unwanted files, look at extension instead (#4166).
+
+* Thu Aug 5 1999 Bill Nottingham <notting at redhat.com>
+- fix --help, --verson
+
+* Mon Aug 2 1999 Matt Wilson <msw at redhat.com>
+- rebuilt ntsysv against newt 0.50
+
+* Mon Aug 2 1999 Jeff Johnson <jbj at redhat.com>
+- fix i18n problem in usage message (#4233).
+- add --help and --version.
+
+* Mon Apr 19 1999 Cristian Gafton <gafton at redhat.com>
+- release for Red Hat 6.0
+
+* Thu Apr 8 1999 Matt Wilson <msw at redhat.com>
+- added support for a "hide: true" tag in initscripts that will make
+ services not appear in ntsysv when run with the "--hide" flag
+
+* Thu Apr 1 1999 Matt Wilson <msw at redhat.com>
+- added --hide flag for ntsysv that allows you to hide a service from the
+ user.
+
+* Mon Mar 22 1999 Bill Nottingham <notting at redhat.com>
+- fix glob, once and for all. Really. We mean it.
+
+* Thu Mar 18 1999 Bill Nottingham <notting at redhat.com>
+- revert fix for services at levels, it's broken
+- change default to only edit the current runlevel
+
+* Mon Mar 15 1999 Bill Nottingham <notting at redhat.com>
+- don't remove scripts that don't support chkconfig
+
+* Tue Mar 09 1999 Erik Troan <ewt at redhat.com>
+- made glob a bit more specific so xinetd and inetd don't cause improper matches
+
+* Thu Feb 18 1999 Matt Wilson <msw at redhat.com>
+- removed debugging output when starting ntsysv
+
+* Thu Feb 18 1999 Preston Brown <pbrown at redhat.com>
+- fixed globbing error
+- fixed ntsysv running services not at their specified levels.
+
+* Tue Feb 16 1999 Matt Wilson <msw at redhat.com>
+- print the value of errno on glob failures.
+
+* Sun Jan 10 1999 Matt Wilson <msw at redhat.com>
+- rebuilt for newt 0.40 (ntsysv)
+
+* Tue Dec 15 1998 Jeff Johnson <jbj at redhat.com>
+- add ru.po.
+
+* Thu Oct 22 1998 Bill Nottingham <notting at redhat.com>
+- build for Raw Hide (slang-1.2.2)
+
+* Wed Oct 14 1998 Cristian Gafton <gafton at redhat.com>
+- translation updates
+
+* Thu Oct 08 1998 Cristian Gafton <gafton at redhat.com>
+- updated czech translation (and use cs instead of cz)
+
+* Tue Sep 22 1998 Arnaldo Carvalho de Melo <acme at conectiva.com.br>
+- added pt_BR translations
+- added more translatable strings
+- support for i18n init.d scripts description
+
+* Sun Aug 02 1998 Erik Troan <ewt at redhat.com>
+- built against newt 0.30
+- split ntsysv into a separate package
+
+* Thu May 07 1998 Erik Troan <ewt at redhat.com>
+- added numerous translations
+
+* Mon Mar 23 1998 Erik Troan <ewt at redhat.com>
+- added i18n support
+
+* Sun Mar 22 1998 Erik Troan <ewt at redhat.com>
+- added --back
--- chkconfig-1.3.48/leveldb.c
+++ chkconfig-1.3.48/leveldb.c
+/* Copyright 1997-2008 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+#include <alloca.h>
+#include <ctype.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <glob.h>
+#include <libintl.h>
+#include <locale.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+/* Changes
+ 1998-09-22 - Arnaldo Carvalho de Melo <acme at conectiva.com.br>
+ i18n for init.d scripts (eg.: description(pt_BR) is a brazilian
+ portuguese description for the package)
+*/
+
+#define _(String) gettext((String))
+
+#include "leveldb.h"
+
+int parseLevels(char * str, int emptyOk) {
+ char * chptr = str;
+ int rc = 0;
+
+ if (!str || !strlen(str))
+ return emptyOk ? 0 : -1;
+
+ while (*chptr) {
+ if (!isdigit(*chptr) || *chptr > '6') return -1;
+ rc |= 1 << (*chptr - '0');
+ chptr++;
+ }
+
+ return rc;
+}
+
+int readDescription(char *start, char *bufstop, char **english_desc, char **serv_desc) {
+ char english;
+ char my_lang_loaded = 0;
+ char is_my_lang = 0;
+ char * lang = getenv ("LANG");
+ char * final_parenthesis;
+ char * end, *next;
+ int i;
+
+ english = *start == ':';
+ end = strchr(start, '\n');
+ if (!end)
+ next = end = bufstop;
+ else
+ next = end + 1;
+
+ if (!english) {
+ if (*start != '(') {
+ return 1;
+ }
+
+ ++start;
+ final_parenthesis = strchr (start, ')');
+
+ if (final_parenthesis == NULL || final_parenthesis - start > 5) {
+ return 1;
+ }
+
+ is_my_lang = lang ? strncmp (lang, start, strlen (lang)) == 0 : 0;
+ start = final_parenthesis + 2;
+ } else ++start;
+
+ while (isspace(*start) && start < end) start++;
+ if (start >= end) {
+ return 1;
+ }
+ {
+ char* desc = malloc(end - start + 1);
+ strncpy(desc, start, end - start);
+ desc[end - start] = '\0';
+
+ start = next;
+
+ while (desc[strlen(desc) - 1] == '\\') {
+ desc[strlen(desc) - 1] = '\0';
+ start = next;
+
+ while (isspace(*start) && start < bufstop) start++;
+ if (start == bufstop || *start != '#') {
+ return 1;
+ }
+
+ start++;
+
+ while (isspace(*start) && start < bufstop) start++;
+ if (start == bufstop) {
+ return 1;
+ }
+
+ end = strchr(start, '\n');
+ if (!end)
+ next = end = bufstop;
+ else
+ next = end + 1;
+
+ i = strlen(desc);
+ desc = realloc(desc, i + end - start + 1);
+ strncat(desc, start, end - start);
+ desc[i + end - start] = '\0';
+
+ start = next;
+ }
+
+ if (desc) {
+ if (my_lang_loaded) {
+ free(desc);
+ } else if (is_my_lang) {
+ if (*serv_desc)
+ free(*serv_desc);
+
+ *serv_desc = desc;
+ return 0;
+ } else if (english) {
+ if (*serv_desc)
+ free(*serv_desc);
+
+ if (*english_desc)
+ free (*english_desc);
+
+ *english_desc = desc;
+ } else free (desc);
+ }
+ }
+ return 0;
+}
+
+int readXinetdServiceInfo(char *name, struct service * service) {
+ char * filename;
+ int fd;
+ struct service serv = {
+ name: NULL,
+ levels: -1,
+ kPriority: -1,
+ sPriority: -1,
+ desc: NULL,
+ startDeps: NULL,
+ stopDeps: NULL,
+ softStartDeps: NULL,
+ softStopDeps: NULL,
+ provides: NULL,
+ type: TYPE_XINETD,
+ isLSB: 0,
+ enabled: -1
+ };
+ struct stat sb;
+ char * buf = NULL, *ptr;
+ char * eng_desc = NULL, *start;
+
+ asprintf(&filename, XINETDDIR "/%s", name);
+
+ if ((fd = open(filename, O_RDONLY)) < 0) goto out_err;
+ fstat(fd,&sb);
+ if (! S_ISREG(sb.st_mode)) goto out_err;
+ buf = malloc(sb.st_size+1);
+ if (read(fd,buf,sb.st_size)!=sb.st_size) goto out_err;
+ close(fd);
+ serv.name = strdup(name);
+ buf[sb.st_size] = '\0';
+ start = buf;
+ while (buf) {
+ ptr = strchr(buf,'\n');
+ if (*buf == '#') {
+ buf++;
+ while (isspace(*buf) && buf < ptr) buf++;
+ if (!strncmp(buf,"default:", 9)) {
+ buf+=8;
+ while(isspace(*buf)) buf++;
+ if (!strncmp(buf+9,"on",2)) {
+ serv.enabled = 1;
+ } else {
+ serv.enabled = 0;
+ }
+ } else if (!strncmp(buf,"description:",12)) {
+ buf+=11;
+ if (readDescription(buf,start+sb.st_size,
+ &serv.desc,&eng_desc)) {
+ if (serv.desc) free(serv.desc);
+ }
+ if (!serv.desc) {
+ if (eng_desc)
+ serv.desc = eng_desc;
+ else
+ serv.desc = strdup(name);
+ } else if (eng_desc)
+ free (eng_desc);
+ }
+ if (ptr) {
+ *ptr = '\0';
+ ptr++;
+ }
+ buf = ptr;
+ continue;
+ }
+ while (isspace(*buf) && buf < ptr) buf++;
+ if (!strncmp(buf,"disable", 7)) {
+ buf = strstr(buf,"=");
+ if (buf)
+ do {
+ buf++;
+ } while(isspace(*buf));
+
+ if (buf && strncmp(buf,"yes",3)) {
+ serv.levels = parseLevels("0123456",0);
+ if (serv.enabled == -1)
+ serv.enabled = 1;
+ } else {
+ serv.levels = 0;
+ if (serv.enabled == -1)
+ serv.enabled = 0;
+ }
+ }
+ if (ptr) {
+ *ptr = '\0';
+ ptr++;
+ }
+ buf = ptr;
+ }
+ *service = serv;
+ return 0;
+out_err:
+ close(fd);
+ free(buf);
+ free(filename);
+ return -1;
+}
+
+int readServices(struct service **services) {
+ DIR * dir;
+ struct dirent * ent;
+ struct stat sb;
+ struct service *servs = NULL;
+ int numservs = 0;
+ char fn[1024];
+
+ if (!(dir = opendir(RUNLEVELS "/init.d"))) {
+ fprintf(stderr, _("failed to open %s/init.d: %s\n"), RUNLEVELS,
+ strerror(errno));
+ return 1;
+ }
+
+ while ((ent = readdir(dir))) {
+ const char *dn;
+
+ /* Skip any file starting with a . */
+ if (ent->d_name[0] == '.') continue;
+
+ /* Skip files with known bad extensions */
+ if ((dn = strrchr(ent->d_name, '.')) != NULL &&
+ (!strcmp(dn, ".rpmsave") || !strcmp(dn, ".rpmnew") || !strcmp(dn, ".rpmorig") || !strcmp(dn, ".swp")))
+ continue;
+
+ dn = ent->d_name + strlen(ent->d_name) - 1;
+ if (*dn == '~' || *dn == ',')
+ continue;
+
+ sprintf(fn, RUNLEVELS "/init.d/%s", ent->d_name);
+ if (stat(fn, &sb)) {
+ continue;
+ }
+ if (!S_ISREG(sb.st_mode)) continue;
+ servs = realloc(servs, (numservs+1) * sizeof(struct service));
+ if (!readServiceInfo(ent->d_name, TYPE_INIT_D, servs + numservs, 0))
+ numservs++;
+ }
+ *services = servs;
+ return numservs;
+}
+
+int readServiceInfo(char * name, int type, struct service * service, int honorHide) {
+ char * filename;
+ int fd;
+ struct service serv, serv_overrides;
+ int parseret;
+
+ if (!(type & TYPE_INIT_D))
+ goto try_xinetd;
+
+ asprintf(&filename, RUNLEVELS "/init.d/%s", name);
+
+ if ((fd = open(filename, O_RDONLY)) < 0)
+ goto try_xinetd;
+
+ free(filename);
+ parseret = parseServiceInfo(fd, name, &serv, honorHide, 0);
+ if (parseret)
+ return parseret;
+
+ asprintf(&filename, RUNLEVELS "/chkconfig.d/%s", name);
+ if ((fd = open(filename, O_RDONLY)) >= 0) {
+ parseret = parseServiceInfo(fd, name, &serv_overrides, honorHide, 1);
+ if (parseret >= 0) {
+ if (serv_overrides.name) serv.name = serv_overrides.name;
+ if (serv_overrides.levels != -1) serv.levels = serv_overrides.levels;
+ if (serv_overrides.kPriority != -2) serv.kPriority = serv_overrides.kPriority;
+ if (serv_overrides.sPriority != -2) serv.sPriority = serv_overrides.sPriority;
+ if (serv_overrides.desc) serv.desc = serv_overrides.desc;
+ if (serv_overrides.startDeps) serv.startDeps = serv_overrides.startDeps;
+ if (serv_overrides.stopDeps) serv.stopDeps = serv_overrides.stopDeps;
+ if (serv_overrides.softStartDeps) serv.softStartDeps = serv_overrides.softStartDeps;
+ if (serv_overrides.softStopDeps) serv.softStopDeps = serv_overrides.softStopDeps;
+ if (serv_overrides.provides) serv.provides = serv_overrides.provides;
+ if (serv_overrides.isLSB || serv.isLSB) serv.isLSB = 1;
+ }
+ }
+
+ free(filename);
+ *service = serv;
+ return 0;
+
+try_xinetd:
+ free(filename);
+ if (!(type & TYPE_XINETD))
+ return -1;
+ return readXinetdServiceInfo(name,service);
+}
+
+int readServiceDifferences(char * name, int type, struct service * service, struct service * service_overrides, int honorHide) {
+ char * filename;
+ int fd;
+ struct service serv, serv_overrides;
+ int parseret;
+
+ if (!(type & TYPE_INIT_D))
+ goto try_xinetd;
+
+ asprintf(&filename, RUNLEVELS "/init.d/%s", name);
+
+ if ((fd = open(filename, O_RDONLY)) < 0) {
+ goto try_xinetd;
+ }
+
+ free(filename);
+ parseret = parseServiceInfo(fd, name, &serv, honorHide, 0);
+ if (parseret) {
+ return parseret;
+ }
+
+ asprintf(&filename, RUNLEVELS "/chkconfig.d/%s", name);
+ if ((fd = open(filename, O_RDONLY)) >= 0) {
+ parseret = parseServiceInfo(fd, name, &serv_overrides, honorHide, 1);
+ } else {
+ parseret = 1;
+ }
+
+ free(filename);
+ if (parseret) {
+ return 1;
+ }
+
+ *service = serv;
+ *service_overrides = serv_overrides;
+ return 0;
+
+try_xinetd:
+ free(filename);
+ if (!(type & TYPE_XINETD))
+ return -1;
+ return readXinetdServiceInfo(name,service);
+}
+
+static struct dep *parseDeps(char *pos, char *end) {
+ char *t;
+ int numdeps = 0;
+ struct dep *deps = NULL;
+
+ while (1) {
+ while (*pos && isspace(*pos) && pos < end) pos++;
+ if (pos == end)
+ break;
+ t = pos;
+ while (*t && !isspace(*t) && t < end) t++;
+ if (isspace(*t)) {
+ *t = '\0';
+ t++;
+ }
+ numdeps++;
+ deps = realloc(deps,
+ (numdeps + 1) * sizeof(struct dep));
+ deps[numdeps-1].name = strdup(pos);
+ deps[numdeps-1].handled = 0;
+ memset(&deps[numdeps],'\0',sizeof(struct dep));
+ if (!t || t >= end)
+ break;
+ else
+ pos = t;
+ }
+ return deps;
+}
+
+
+int parseServiceInfo(int fd, char * name, struct service * service, int honorHide, int partialOk) {
+ struct stat sb;
+ char * bufstart, * bufstop, * start, * end, * next, *tmpbufstart;
+ struct service serv = {
+ name: NULL,
+ levels: -1,
+ kPriority: -1,
+ sPriority: -1,
+ desc: NULL,
+ startDeps: NULL,
+ stopDeps: NULL,
+ softStartDeps: NULL,
+ softStopDeps: NULL,
+ provides: NULL,
+ type: TYPE_INIT_D,
+ isLSB: 0,
+ enabled: 0
+ };
+ char overflow;
+ char levelbuf[20];
+ char * english_desc = NULL;
+
+ fstat(fd, &sb);
+
+ bufstart = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, fd, 0);
+ if (bufstart == ((caddr_t) -1)) {
+ close(fd);
+ return -1;
+ }
+
+ tmpbufstart = (char*)malloc(sb.st_size+1);
+ if (tmpbufstart == NULL) {
+ close(fd);
+ return -1;
+ }
+
+ memcpy(tmpbufstart, bufstart, sb.st_size);
+ munmap(bufstart, sb.st_size);
+
+ bufstart = tmpbufstart;
+ bufstop = bufstart + sb.st_size;
+ *bufstop = 0;
+
+ close(fd);
+
+ next = bufstart;
+ while (next < bufstop && (serv.levels == -1 || !serv.desc)) {
+ start = next;
+
+ while (isspace(*start) && start < bufstop) start++;
+ if (start == bufstop) break;
+
+ end = strchr(start, '\n');
+ if (!end)
+ next = end = bufstop;
+ else
+ next = end + 1;
+
+ if (*start != '#') continue;
+
+ start++;
+ if (!strncmp(start, "## BEGIN INIT INFO", 18))
+ serv.isLSB = 1;
+
+ while (isspace(*start) && start < end) start++;
+ if (start == end) continue;
+ if (honorHide && !strncmp(start, "hide:", 5)) {
+ start += 5;
+ while (isspace(*start) && start < end) start++;
+ if (start == end || !strncmp(start, "true", 4)) {
+ if (serv.desc) free(serv.desc);
+ free(bufstart);
+ return 1;
+ }
+ }
+
+ if (!strncmp(start, "chkconfig:", 10)) {
+ int spri, kpri;
+
+ start += 10;
+ while (isspace(*start) && start < end) start++;
+ if (start == end) {
+ if (serv.desc) free(serv.desc);
+ free(bufstart);
+ return 1;
+ }
+
+ if ((sscanf(start, "%15s %d %d%c", levelbuf,
+ &spri, &kpri, &overflow) != 4) ||
+ !isspace(overflow)) {
+ if (serv.desc) free(serv.desc);
+ free(bufstart);
+ return 1;
+ }
+ if (spri > 99 || kpri > 99 || kpri < 0 || spri < 0) {
+ if (serv.desc) free(serv.desc);
+ free(bufstart);
+ return 1;
+ }
+ if (serv.sPriority == -1)
+ serv.sPriority = spri;
+ if (serv.kPriority == -1)
+ serv.kPriority = kpri;
+
+ if (serv.levels == -1) {
+ if (!strcmp(levelbuf, "-"))
+ serv.levels = 0;
+ else
+ serv.levels = parseLevels(levelbuf, 0);
+ }
+ if (serv.levels == -1) {
+ if (serv.desc) free(serv.desc);
+ free(bufstart);
+ return 1;
+ }
+ } else if (!strncmp(start, "description", 11) ||
+ !strncmp(start, "Description:", 12)) {
+ if (readDescription(start+11, bufstop, &english_desc, &serv.desc)) {
+ if (serv.desc) free(serv.desc);
+ }
+ } else if (!strncmp(start, "Short-Description:", 18)) {
+ if (readDescription(start+17, bufstop, &english_desc, &serv.desc)) {
+ if (serv.desc) free(serv.desc);
+ }
+ } else if (!strncmp(start, "Default-Start:", 14)) {
+ char *t;
+
+ start+=14;
+ while (1) {
+ int lev;
+
+ lev = strtol(start, &t, 10);
+ if (t && t != start)
+ start = t;
+ else
+ break;
+ if (serv.levels == -1)
+ serv.levels = 0;
+ serv.levels |= 1 << lev;
+ }
+ } else if (!strncmp(start, "Default-Stop:", 13)) {
+ char *t;
+
+ start+=13;
+ while (1) {
+ int lev;
+
+ lev = strtol(start, &t, 10);
+ if (t && t != start)
+ start = t;
+ else
+ break;
+ if (serv.levels == -1)
+ serv.levels = 0;
+ serv.levels &= ~(1 << lev);
+ }
+ } else if (!strncmp(start, "Required-Start:", 15)) {
+ start+=15;
+ serv.startDeps = parseDeps(start, end);
+ } else if (!strncmp(start, "Required-Stop:", 14)) {
+ start+=14;
+ serv.stopDeps = parseDeps(start, end);
+ } else if (!strncmp(start, "Should-Start:", 13)) {
+ start+=13;
+ serv.softStartDeps = parseDeps(start, end);
+ } else if (!strncmp(start, "Should-Stop:", 12)) {
+ start+=12;
+ serv.softStopDeps = parseDeps(start, end);
+ } else if (!strncmp(start, "Provides:", 9)) {
+ char *t;
+ int numdeps = 0;
+
+ start+=9;
+ while (1) {
+ while (*start && isspace(*start) && start < end) start++;
+ if (start == end)
+ break;
+ t = start;
+ while (*t && !isspace(*t) && t < end) t++;
+ if (isspace(*t)) {
+ *t = '\0';
+ t++;
+ }
+ numdeps++;
+ serv.provides = realloc(serv.provides,
+ (numdeps + 1) * sizeof(char *));
+ serv.provides[numdeps-1] = strdup(start);
+ serv.provides[numdeps] = NULL;
+ if (!t || t >= end)
+ break;
+ else
+ start = t;
+ }
+
+ }
+ }
+
+ free(bufstart);
+
+ if (!serv.desc) {
+ if (english_desc)
+ serv.desc = english_desc;
+ else
+ serv.desc = strdup(name);
+ } else if (english_desc)
+ free (english_desc);
+
+ if (!partialOk && ((serv.levels == -1) || !serv.desc || (!serv.isLSB && (serv.sPriority == -1 || serv.kPriority == -1)))) {
+ return 1;
+ }
+
+ serv.name = strdup(name);
+ if (!serv.provides) {
+ serv.provides = malloc(2 * sizeof(char *));
+ serv.provides[0] = strdup(name);
+ serv.provides[1] = NULL;
+ }
+
+ *service = serv;
+ return 0;
+}
+
+/* returns -1 on error */
+int currentRunlevel(void) {
+ FILE * p;
+ char response[50];
+
+ p = popen("/sbin/runlevel", "r");
+ if (!p) return -1;
+
+ if (!fgets(response, sizeof(response), p)) {
+ pclose(p);
+ return -1;
+ }
+
+ pclose(p);
+
+ if (response[1] != ' ' || !isdigit(response[2]) || response[3] != '\n')
+ return -1;
+
+ return response[2] - '0';
+}
+
+int findServiceEntries(char * name, int level, glob_t * globresptr) {
+ char match[200];
+ glob_t globres;
+ int rc;
+
+ sprintf(match, "%s/rc%d.d/[SK][0-9][0-9]%s", RUNLEVELS, level, name);
+
+ rc = glob(match, GLOB_ERR | GLOB_NOSORT, NULL, &globres);
+
+ if (rc && rc != GLOB_NOMATCH) {
+ fprintf(stderr, _("failed to glob pattern %s: %s\n"), match,
+ strerror(errno));
+ return 1;
+ } else if (rc == GLOB_NOMATCH) {
+ globresptr->gl_pathc = 0;
+ return 0;
+ }
+
+ *globresptr = globres;
+ return 0;
+}
+
+int isConfigured(char * name, int level, int *priority, char *type) {
+ glob_t globres;
+ char *pri_string;
+
+ if (findServiceEntries(name, level, &globres))
+ exit(1);
+
+ if (!globres.gl_pathc)
+ return 0;
+
+ if (type) {
+ *type = globres.gl_pathv[0][11];
+ }
+
+ if (priority) {
+ pri_string = strndup(globres.gl_pathv[0]+12, 2);
+ if (!pri_string) return 0;
+ sscanf(pri_string, "%d", priority);
+ free(pri_string);
+ }
+
+ globfree(&globres);
+ return 1;
+}
+
+int isOn(char * name, int level) {
+ glob_t globres;
+
+ if (level == -1) {
+ level = currentRunlevel();
+ if (level == -1) {
+ fprintf(stderr, _("cannot determine current run level\n"));
+ return 0;
+ }
+ }
+
+ if (findServiceEntries(name, level, &globres))
+ exit(1);
+
+ if (!globres.gl_pathc || !strstr(globres.gl_pathv[0], "/S"))
+ return 0;
+
+ globfree(&globres);
+ return 1;
+}
+
+int setXinetdService(struct service s, int on) {
+ int oldfd, newfd;
+ char oldfname[100], newfname[100];
+ char tmpstr[50];
+ char *buf, *ptr, *tmp;
+ struct stat sb;
+
+ if (on == -1) {
+ on = s.enabled ? 1 : 0;
+ }
+ snprintf(oldfname,100,"%s/%s",XINETDDIR,s.name);
+ if ( (oldfd = open(oldfname,O_RDONLY)) == -1 ) {
+ return -1;
+ }
+ fstat(oldfd,&sb);
+ buf = malloc(sb.st_size+1);
+ if (read(oldfd,buf,sb.st_size)!=sb.st_size) {
+ close(oldfd);
+ free(buf);
+ return -1;
+ }
+ close(oldfd);
+ buf[sb.st_size] = '\0';
+ snprintf(newfname,100,"%s/%s.XXXXXX",XINETDDIR,s.name);
+ newfd = mkstemp(newfname);
+ if (newfd == -1) {
+ free(buf);
+ return -1;
+ }
+ while (buf) {
+ tmp = buf;
+ ptr = strchr(buf,'\n');
+ if (ptr) {
+ *ptr = '\0';
+ ptr++;
+ }
+ while (isspace(*buf)) buf++;
+ if (strncmp(buf,"disable", 7) && strlen(buf)) {
+ write(newfd,tmp,strlen(tmp));
+ write(newfd,"\n",1);
+ if (buf[0] == '{') {
+ snprintf(tmpstr,50,"\tdisable\t= %s", on ? "no" : "yes");
+ write(newfd,tmpstr,strlen(tmpstr));
+ write(newfd,"\n",1);
+ }
+ }
+ buf = ptr;
+ }
+ close(newfd);
+ chmod(newfname,0644);
+ unlink(oldfname);
+ return(rename(newfname,oldfname));
+}
+
+int doSetService(struct service s, int level, int on) {
+ int priority = on ? s.sPriority : s.kPriority;
+ char linkname[200];
+ char linkto[200];
+ glob_t globres;
+ int i;
+
+ if (!findServiceEntries(s.name, level, &globres)) {
+ for (i = 0; i < globres.gl_pathc; i++)
+ unlink(globres.gl_pathv[i]);
+ if (globres.gl_pathc) globfree(&globres);
+ }
+
+ sprintf(linkname, "%s/rc%d.d/%c%02d%s", RUNLEVELS, level,
+ on ? 'S' : 'K', priority, s.name);
+ sprintf(linkto, "../init.d/%s", s.name);
+
+ unlink(linkname); /* just in case */
+ if (symlink(linkto, linkname)) {
+ fprintf(stderr, _("failed to make symlink %s: %s\n"), linkname,
+ strerror(errno));
+ return 1;
+ }
+
+ return 0;
+}
+
--- chkconfig-1.3.48/leveldb.h
+++ chkconfig-1.3.48/leveldb.h
+/* Copyright 1997-2008 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+#ifndef H_LEVELDB
+#define H_LEVELDB
+
+#define RUNLEVELS "/etc"
+#define XINETDDIR "/etc/xinetd.d"
+
+#include <glob.h>
+
+#define TYPE_INIT_D 0x1
+#define TYPE_XINETD 0x2
+#define TYPE_ANY (TYPE_INIT_D | TYPE_XINETD)
+
+struct dep {
+ char *name;
+ int handled;
+};
+
+struct service {
+ char * name;
+ int levels, kPriority, sPriority;
+ char * desc;
+ struct dep *startDeps;
+ struct dep *stopDeps;
+ struct dep *softStartDeps;
+ struct dep *softStopDeps;
+ char **provides;
+ int type;
+ int isLSB;
+ int enabled;
+};
+
+int parseLevels(char * str, int emptyOk);
+
+/* returns 0 on success, 1 if the service is not chkconfig-able, -1 if an
+ I/O error occurs (in which case errno can be checked) */
+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);
+int parseServiceInfo(int fd, char * name, struct service * service, int honorHide, int partialOk);
+int currentRunlevel(void);
+int isOn(char * name, int where);
+int isConfigured(char * name, int level, int *priority, char *type);
+int doSetService(struct service s, int level, int on);
+int findServiceEntries(char * name, int level, glob_t * globresptr);
+int readXinetdServiceInfo(char *name, struct service *service);
+int setXinetdService(struct service s, int on);
+
+#endif
--- chkconfig-1.3.48/ntsysv.8
+++ chkconfig-1.3.48/ntsysv.8
(renamed from chkconfig-1.3.46/ntsysv.8)
--- chkconfig-1.3.48/ntsysv.c
+++ chkconfig-1.3.48/ntsysv.c
+/* Copyright 1997-2007 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+#include <alloca.h>
+#include <ctype.h>
+#include <dirent.h>
+#include <errno.h>
+#include <libintl.h>
+#include <locale.h>
+#include <newt.h>
+#include <popt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#define _(String) gettext((String))
+
+#include "leveldb.h"
+
+/* return 1 on cancel, 2 on error, 0 on success */
+static int servicesWindow(struct service * services, int numServices,
+ int levels, int backButton) {
+ newtComponent label, subform, ok, cancel;
+ newtComponent * checkboxes, form, curr, blank;
+ newtComponent sb = NULL;
+ newtGrid grid, subgrid, buttons;
+ char * states;
+ int i, done = 0, update = 0, j;
+ int width, height;
+ struct newtExitStruct e;
+
+ newtPushHelpLine(_("Press <F1> for more information on a service."));
+
+ newtGetScreenSize(&width, &height);
+ width = width > 80 ? width - 60 : 20;
+ height = height > 25 ? height - 17 : 8;
+
+
+ sb = newtVerticalScrollbar(-1, -1, height, NEWT_COLORSET_CHECKBOX,
+ NEWT_COLORSET_ACTCHECKBOX);
+
+ subform = newtForm(sb, NULL, 0);
+ newtFormSetBackground(subform, NEWT_COLORSET_CHECKBOX);
+ newtFormSetHeight(subform, height);
+
+ checkboxes = alloca(sizeof(*checkboxes) * numServices);
+ states = alloca(sizeof(*states) * numServices);
+
+ for (i = 0; i < numServices; i++) {
+ if (services[i].type == TYPE_XINETD) {
+ checkboxes[i] = newtCheckbox(-1, i, services[i].name,
+ services[i].levels ? '*' : ' ', NULL,
+ states + i);
+ } else {
+ for (j = 0; j < 7; j++) {
+ if (levels & (1 << j)) {
+ if (isOn(services[i].name, j)) break;
+ }
+ }
+ checkboxes[i] = newtCheckbox(-1, i, services[i].name,
+ (j != 7) ? '*' : ' ', NULL,
+ states + i);
+ }
+ newtFormAddComponent(subform, checkboxes[i]);
+ }
+
+ newtFormSetWidth(subform, width);
+
+ buttons = newtButtonBar(_("Ok"), &ok, backButton ? _("Back") : _("Cancel"),
+ &cancel, NULL);
+
+ blank = newtForm(NULL, NULL, 0);
+ newtFormSetWidth(blank, 2);
+ newtFormSetHeight(blank, height);
+ newtFormSetBackground(blank, NEWT_COLORSET_CHECKBOX);
+
+ subgrid = newtGridHCloseStacked(NEWT_GRID_COMPONENT, subform,
+ NEWT_GRID_COMPONENT, blank,
+ NEWT_GRID_COMPONENT, sb, NULL);
+
+ label = newtTextboxReflowed(-1, -1, _("What services should be "
+ "automatically started?"), 30, 0, 20, 0);
+ grid = newtGridBasicWindow(label, subgrid, buttons);
+
+ form = newtForm(NULL, NULL, 0);
+ newtGridAddComponentsToForm(grid, form, 1);
+ newtGridWrappedWindow(grid, _("Services"));
+ newtGridFree(grid, 1);
+
+ newtFormAddHotKey(form, NEWT_KEY_F1);
+
+ while (!done) {
+ newtFormRun(form, &e);
+
+ if (e.reason == NEWT_EXIT_HOTKEY) {
+ if (e.u.key == NEWT_KEY_F12) {
+ done = 1;
+ update = 1;
+ } else {
+ /* must be F1 */
+ curr = newtFormGetCurrent(subform);
+ for (i = 0; i < numServices; i++)
+ if (curr == checkboxes[i]) break;
+
+ if (i < numServices && services[i].desc)
+ newtWinMessage(services[i].name, _("Ok"), services[i].desc);
+ }
+ } else {
+ done = 1;
+ update = (e.u.co == ok);
+ }
+ }
+
+ newtPopWindow();
+ newtFormDestroy(form);
+
+ if (!update) return 1;
+
+ for (i = 0; i < numServices; i++) {
+ if (services[i].type == TYPE_XINETD) {
+ if ((services[i].enabled && states[i] != '*') ||
+ (!services[i].enabled && states[i] == '*'))
+ setXinetdService(services[i], states[i] == '*');
+ } else {
+ for (j = 0; j < 7; j++) {
+ if (levels & (1 << j))
+ doSetService(services[i], j, states[i] == '*');
+ }
+ }
+ }
+
+ return 0;
+}
+
+static int serviceNameCmp(const void * a, const void * b) {
+ const struct service * first = a;
+ const struct service * second = b;
+
+ return strcmp(first->name, second->name);
+}
+
+static int getServices(struct service ** servicesPtr, int * numServicesPtr,
+ int backButton, int honorHide) {
+ DIR * dir;
+ struct dirent * ent;
+ struct stat sb;
+ char fn[1024];
+ struct service * services;
+ int numServices = 0;
+ int numServicesAlloced, rc;
+ int err = 0;
+
+ numServicesAlloced = 10;
+ services = malloc(sizeof(*services) * numServicesAlloced);
+
+ if (!(dir = opendir(RUNLEVELS "/init.d"))) {
+ fprintf(stderr, "failed to open " RUNLEVELS "/init.d: %s\n",
+ strerror(errno));
+ return 2;
+ }
+
+ while ((ent = readdir(dir))) {
+ if (strchr(ent->d_name, '~') || strchr(ent->d_name, ',') ||
+ (ent->d_name[0] == '.')) continue;
+
+ sprintf(fn, RUNLEVELS "/init.d/%s", ent->d_name);
+ if (stat(fn, &sb))
+ {
+ fprintf(stderr, _("error reading info for service %s: %s\n"),
+ ent->d_name, strerror(errno));
+ continue;
+ }
+ if (!S_ISREG(sb.st_mode)) continue;
+
+ if (numServices == numServicesAlloced) {
+ numServicesAlloced += 10;
+ services = realloc(services,
+ numServicesAlloced * sizeof(*services));
+ }
+
+ rc = readServiceInfo(ent->d_name, TYPE_INIT_D, services + numServices, honorHide);
+
+ if (!rc) {
+ int i;
+
+ rc = -2;
+ for (i = 0 ; i < 7 ; i++) {
+ if (isConfigured(ent->d_name, i, NULL, NULL)) {
+ rc = 0;
+ break;
+ }
+ }
+ }
+
+ if (rc == -1) {
+ fprintf(stderr, _("error reading info for service %s: %s\n"),
+ ent->d_name, strerror(errno));
+ continue;
+ } else if (!rc)
+ numServices++;
+ }
+
+ closedir(dir);
+
+ if (!stat("/usr/sbin/xinetd",&sb)) {
+ if (!(dir = opendir(XINETDDIR))) {
+ fprintf(stderr, "failed to open " XINETDDIR ": %s\n",
+ strerror(errno));
+ return 2;
+ }
+
+ while ((ent = readdir(dir))) {
+ if (strchr(ent->d_name, '~') || strchr(ent->d_name, ',') ||
+ strchr(ent->d_name, '.')) continue;
+
+ sprintf(fn, "%s/%s", XINETDDIR, ent->d_name);
+ if (stat(fn, &sb))
+ {
+ err = errno;
+ continue;
+ }
+ if (!S_ISREG(sb.st_mode)) continue;
+
+ if (numServices == numServicesAlloced) {
+ numServicesAlloced += 10;
+ services = realloc(services,
+ numServicesAlloced * sizeof(*services));
+ }
+
+ rc = readXinetdServiceInfo(ent->d_name, services + numServices);
+
+ if (rc == -1) {
+ fprintf(stderr, _("error reading info for service %s: %s\n"),
+ ent->d_name, strerror(errno));
+ closedir(dir);
+ return 2;
+ } else if (!rc)
+ numServices++;
+ }
+
+ if (err) {
+ fprintf(stderr, _("error reading from directory %s: %s\n"),
+ XINETDDIR, strerror(err));
+ return 1;
+ }
+ }
+
+ qsort(services, numServices, sizeof(*services), serviceNameCmp);
+
+ *servicesPtr = services;
+ *numServicesPtr = numServices;
+
+ return 0;
+}
+
+int main(int argc, const char ** argv) {
+ struct service * services;
+ int numServices;
+ int levels = -1;
+ char * levelsStr = NULL;
+ char *progName;
+ poptContext optCon;
+ int rc, backButton = 0, hide = 0;
+ struct poptOption optionsTable[] = {
+ { "back", '\0', 0, &backButton, 0 },
+ { "level", '\0', POPT_ARG_STRING, &levelsStr, 0 },
+ { "hide", '\0', 0, &hide, 0 },
+ { 0, 0, 0, 0, 0 }
+ };
+
+ setlocale(LC_ALL, "");
+ bindtextdomain("chkconfig", "/usr/share/locale");
+ textdomain("chkconfig");
+
+ progName = (char *)argv[0];
+
+ if (getuid() != 0) {
+ fprintf(stderr, _("You must be root to run %s.\n"),progName);
+ exit(1);
+ }
+
+ optCon = poptGetContext(progName, argc, argv, optionsTable, 0);
+ poptReadDefaultConfig(optCon, 1);
+
+ if ((rc = poptGetNextOpt(optCon)) < -1) {
+ fprintf(stderr, "%s: %s\n",
+ poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
+ poptStrerror(rc));
+ exit(1);
+ }
+
+ if (levelsStr) {
+ levels = parseLevels(levelsStr, 0);
+ if (levels == -1) {
+ fprintf(stderr, _("bad argument to --levels\n"));
+ exit(2);
+ }
+ }
+
+ if (getServices(&services, &numServices, backButton, hide)) return 1;
+ if (!numServices) {
+ fprintf(stderr, _("No services may be managed by ntsysv!\n"));
+ return 2;
+ }
+
+ newtInit();
+ newtCls();
+
+ newtPushHelpLine(NULL);
+ newtDrawRootText(0, 0,
+ "ntsysv " VERSION " - (C) 2000-2001 Red Hat, Inc. ");
+
+ if (levels==-1)
+ levels=(1<<currentRunlevel());
+
+ rc = servicesWindow(services, numServices, levels, backButton);
+
+ newtFinished();
+
+ return rc;
+}
--- chkconfig-1.3.48/po
+++ chkconfig-1.3.48/po
+(directory)
--- chkconfig-1.3.48/po/ChangeLog
+++ chkconfig-1.3.48/po/ChangeLog
(renamed from chkconfig-1.3.46/po/ChangeLog)
--- chkconfig-1.3.48/po/Makefile
+++ chkconfig-1.3.48/po/Makefile
(renamed from chkconfig-1.3.46/po/Makefile)
--- chkconfig-1.3.48/po/ar.po
+++ chkconfig-1.3.48/po/ar.po
(renamed from chkconfig-1.3.46/po/ar.po)
--- chkconfig-1.3.48/po/as.po
+++ chkconfig-1.3.48/po/as.po
(renamed from chkconfig-1.3.46/po/as.po)
--- chkconfig-1.3.48/po/bal.po
+++ chkconfig-1.3.48/po/bal.po
(renamed from chkconfig-1.3.46/po/bal.po)
--- chkconfig-1.3.48/po/be.po
+++ chkconfig-1.3.48/po/be.po
(renamed from chkconfig-1.3.46/po/be.po)
--- chkconfig-1.3.48/po/bg.po
+++ chkconfig-1.3.48/po/bg.po
+# translation of bg.po to Bulgarian
+# translation of bg.po to
+# translation of bg.po to
+# translation of bg.po to
+# translation of chkconfig.po to
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Николай Сърмаджиев,преносим <nikolayds at msn.com>, 2004.
+# Doncho N. Gunchev <mr700 at globalnet.bg>, 2005.
+# Doncho N. Gunchev <gunchev at gmail.com>, 2007.
+# Alexander Todorov <atodorov at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: bg\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-03 17:22-0500\n"
+"PO-Revision-Date: 2008-03-11 10:41+0100\n"
+"Last-Translator: Alexander Todorov <atodorov at redhat.com>\n"
+"Language-Team: Bulgarian <Bulgarian Translators' Team <dict at fsa-bg.org>>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../chkconfig.c:38
+#, c-format
+msgid "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
+msgstr "%s версия %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
+
+#: ../chkconfig.c:39
+#, c-format
+msgid "This may be freely redistributed under the terms of the GNU Public License.\n"
+msgstr "Програмата се разпространява свободно под условията на GPL.\n"
+
+#: ../chkconfig.c:43
+#, c-format
+msgid " %s --add <name>\n"
+msgstr " %s --add <име>\n"
+
+#: ../chkconfig.c:44
+#, c-format
+msgid " %s --del <name>\n"
+msgstr " %s --del <име>\n"
+
+#: ../chkconfig.c:45
+#, c-format
+msgid " %s --override <name>\n"
+msgstr " %s --override <име>\n"
+
+#: ../chkconfig.c:53
+#, c-format
+msgid "service %s supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add %s')\n"
+msgstr "услугата %s поддържа chkconfig, но не е включена в никое работно ниво (runlevel) (изпълнете chkconfig --add %s')\n"
+
+#: ../chkconfig.c:55
+#, c-format
+msgid "service %s does not support chkconfig\n"
+msgstr "услугата %s не поддържа chkconfig\n"
+
+#: ../chkconfig.c:57
+#, c-format
+msgid "error reading information on service %s: %s\n"
+msgstr "грешка при четене на информацията за услуга %s: %s\n"
+
+#: ../chkconfig.c:411 ../chkconfig.c:416 ../chkconfig.c:530
+msgid "on"
+msgstr "да"
+
+#: ../chkconfig.c:411 ../chkconfig.c:416 ../chkconfig.c:530
+msgid "off"
+msgstr "не "
+
+#: ../chkconfig.c:492
+#, c-format
+msgid "xinetd based services:\n"
+msgstr "xinetd базирани услуги:\n"
+
+#: ../chkconfig.c:494
+#, c-format
+msgid "failed to open directory %s: %s\n"
+msgstr "неуспех при отваряне на директория %s: %s\n"
+
+#: ../chkconfig.c:638
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s версия %s\n"
+
+#: ../chkconfig.c:658
+#, c-format
+msgid "only one of --list, --add, --del, or --override may be specified\n"
+msgstr "може да бъде зададена само една от опциите --list, --add, --del или --override\n"
+
+#: ../chkconfig.c:718
+#, c-format
+msgid "only one runlevel may be specified for a chkconfig query\n"
+msgstr "може да бъде зададено само едно работно ниво при запитване към chkconfig\n"
+
+#: ../ntsysv.c:46
+msgid "Press <F1> for more information on a service."
+msgstr "Натиснете <F1> за повече информация за дадена услуга."
+
+#: ../ntsysv.c:83 ../ntsysv.c:120
+msgid "Ok"
+msgstr "Добре"
+
+#: ../ntsysv.c:83
+msgid "Back"
+msgstr "Назад"
+
+#: ../ntsysv.c:83
+msgid "Cancel"
+msgstr "Отказ"
+
+#: ../ntsysv.c:95
+msgid "What services should be automatically started?"
+msgstr "Кои услуги да се стартират автоматично?"
+
+#: ../ntsysv.c:101
+msgid "Services"
+msgstr "Услуги"
+
+#: ../ntsysv.c:183 ../ntsysv.c:210 ../ntsysv.c:248
+#, c-format
+msgid "error reading info for service %s: %s\n"
+msgstr "грешка при четене на информацията за услуга %s: %s\n"
+
+#: ../ntsysv.c:257
+#, c-format
+msgid "error reading from directory %s: %s\n"
+msgstr "грешка при четене от директория %s: %s\n"
+
+#: ../ntsysv.c:293
+#, c-format
+msgid "You must be root to run %s.\n"
+msgstr "За да изпълните %s трябва да бъдете root.\n"
+
+#: ../ntsysv.c:310
+#, c-format
+msgid "bad argument to --levels\n"
+msgstr "лош аргумент за --levels\n"
+
+#: ../ntsysv.c:317
+#, c-format
+msgid "No services may be managed by ntsysv!\n"
+msgstr "Няма услуги, които биха могли да се управляват от ntsysv!\n"
+
+#: ../leveldb.c:261
+#, c-format
+msgid "failed to open %s/init.d: %s\n"
+msgstr "неуспех при отваряне на %s/init.d: %s\n"
+
+#: ../leveldb.c:662
+#, c-format
+msgid "failed to glob pattern %s: %s\n"
+msgstr "невъзможно е ползването на шаблона %s: %s\n"
+
+#: ../leveldb.c:705
+#, c-format
+msgid "cannot determine current run level\n"
+msgstr "не може да се определи текущото работно ниво\n"
+
+#: ../leveldb.c:793
+#, c-format
+msgid "failed to make symlink %s: %s\n"
+msgstr "неуспех при създаване на символна връзка %s: %s\n"
+
+#: ../alternatives.c:63
+#, c-format
+msgid "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
+msgstr "alternatives версия %s - Copyright (C) 2001 Red Hat, Inc.\n"
+
+#: ../alternatives.c:64
+#, c-format
+msgid ""
+"This may be freely redistributed under the terms of the GNU Public License.\n"
+"\n"
+msgstr ""
+"Програмата се разпространява свободно под условията на GPL.\n"
+"\n"
+
+#: ../alternatives.c:65
+#, c-format
+msgid "usage: alternatives --install <link> <name> <path> <priority>\n"
+msgstr "употреба: alternatives --install <връзка> <име> <път> <приоритет>\n"
+
+#: ../alternatives.c:66
+#, c-format
+msgid " [--initscript <service>]\n"
+msgstr " [--initscript <услуга>]\n"
+
+#: ../alternatives.c:67
+#, c-format
+msgid " [--slave <link> <name> <path>]*\n"
+msgstr " [--slave <връзка> <име> <път>]*\n"
+
+#: ../alternatives.c:68
+#, c-format
+msgid " alternatives --remove <name> <path>\n"
+msgstr " alternatives --remove <име> <път>\n"
+
+#: ../alternatives.c:69
+#, c-format
+msgid " alternatives --auto <name>\n"
+msgstr " alternatives --auto <име>\n"
+
+#: ../alternatives.c:70
+#, c-format
+msgid " alternatives --config <name>\n"
+msgstr " alternatives --config <име>\n"
+
+#: ../alternatives.c:71
+#, c-format
+msgid " alternatives --display <name>\n"
+msgstr " alternatives --display <име>\n"
+
+#: ../alternatives.c:72
+#, c-format
+msgid " alternatives --set <name> <path>\n"
+msgstr " alternatives --set <име> <път>\n"
+
+#: ../alternatives.c:73
+#, c-format
+msgid "\n"
+msgstr "\n"
+
+#: ../alternatives.c:74
+#, c-format
+msgid "common options: --verbose --test --help --usage --version\n"
+msgstr "общи параметри: --verbose --test --help --usage --version\n"
+
+#: ../alternatives.c:75
+#, c-format
+msgid " --altdir <directory> --admindir <directory>\n"
+msgstr " --altdir <директория> --admindir <директория>\n"
+
+#: ../alternatives.c:172
+#, c-format
+msgid "reading %s\n"
+msgstr "четене %s\n"
+
+#: ../alternatives.c:176
+#, c-format
+msgid "failed to open %s: %s\n"
+msgstr "неуспех при отваряне на %s: %s\n"
+
+#: ../alternatives.c:185
+#, c-format
+msgid "failed to read %s: %s\n"
+msgstr "неуспех при четене на %s: %s\n"
+
+#: ../alternatives.c:194
+#, c-format
+msgid "%s empty!\n"
+msgstr "%s празен!\n"
+
+#: ../alternatives.c:203
+#, c-format
+msgid "bad mode on line 1 of %s\n"
+msgstr "неправилен режим на ред 1 от %s\n"
+
+#: ../alternatives.c:210
+#, c-format
+msgid "bad primary link in %s\n"
+msgstr "неправилна първична връзка в %s\n"
+
+#: ../alternatives.c:222
+#, c-format
+msgid "path %s unexpected in %s\n"
+msgstr "пътя %s e неочакван в %s\n"
+
+#: ../alternatives.c:231
+#, c-format
+msgid "missing path for slave %s in %s\n"
+msgstr "липсва пътя за slave %s в %s\n"
+
+#: ../alternatives.c:241
+#, c-format
+msgid "unexpected end of file in %s\n"
+msgstr "неочакван край на файла в %s\n"
+
+#: ../alternatives.c:250
+#, c-format
+msgid "path to alternate expected in %s\n"
+msgstr "очаква се път до алтернатива в %s\n"
+
+#: ../alternatives.c:251 ../alternatives.c:272 ../alternatives.c:295
+#: ../alternatives.c:314
+#, c-format
+msgid "unexpected line in %s: %s\n"
+msgstr "неочаквана линия в %s: %s\n"
+
+#: ../alternatives.c:271
+#, c-format
+msgid "numeric priority expected in %s\n"
+msgstr "очаква се цифров приоритет в %s\n"
+
+#: ../alternatives.c:294
+#, c-format
+msgid "slave path expected in %s\n"
+msgstr "очаква се подчинен път в %s\n"
+
+#: ../alternatives.c:322
+#, c-format
+msgid "failed to read link %s: %s\n"
+msgstr "неуспешно четене на връзката %s: %s\n"
+
+#: ../alternatives.c:336
+#, c-format
+msgid "link points to no alternative -- setting mode to manual\n"
+msgstr "връзката не сочи към алтернатива. -- установяване режима на ръчен\n"
+
+#: ../alternatives.c:341
+#, c-format
+msgid "link changed -- setting mode to manual\n"
+msgstr "връзката е променена -- установяване режима на ръчен\n"
+
+#: ../alternatives.c:369 ../alternatives.c:376
+#, c-format
+msgid "would remove %s\n"
+msgstr "би премахнало %s\n"
+
+#: ../alternatives.c:371 ../alternatives.c:378 ../alternatives.c:410
+#, c-format
+msgid "failed to remove link %s: %s\n"
+msgstr "неуспех при премахване на връзка %s: %s\n"
+
+#: ../alternatives.c:394 ../alternatives.c:407
+#, c-format
+msgid "would link %s -> %s\n"
+msgstr "би свързало %s -> %s\n"
+
+#: ../alternatives.c:399 ../alternatives.c:416
+#, c-format
+msgid "failed to link %s -> %s: %s\n"
+msgstr "неуспешно свързване %s -> %s: %s\n"
+
+#: ../alternatives.c:448
+#, c-format
+msgid "%s already exists\n"
+msgstr "%s вече съществува\n"
+
+#: ../alternatives.c:450
+#, c-format
+msgid "failed to create %s: %s\n"
+msgstr "неуспех при създаване на %s: %s\n"
+
+#: ../alternatives.c:481
+#, c-format
+msgid "failed to replace %s with %s: %s\n"
+msgstr "неуспех при заместване на %s с %s: %s\n"
+
+#: ../alternatives.c:507 ../alternatives.c:516
+#, c-format
+msgid "running %s\n"
+msgstr "изпълнява %s\n"
+
+#: ../alternatives.c:543
+#, c-format
+msgid "the primary link for %s must be %s\n"
+msgstr "първичната връзка за %s трябва да бъде %s\n"
+
+#: ../alternatives.c:623
+#, c-format
+msgid "link %s incorrect for slave %s (%s %s)\n"
+msgstr "връзката %s е неправилна за подчинения %s (%s %s)\n"
+
+#: ../alternatives.c:664
+#, c-format
+msgid "%s - status is auto.\n"
+msgstr "%s - статуса е автоматичен.\n"
+
+#: ../alternatives.c:666
+#, c-format
+msgid "%s - status is manual.\n"
+msgstr "%s - статуса е ръчен.\n"
+
+#: ../alternatives.c:668
+#, c-format
+msgid " link currently points to %s\n"
+msgstr " връзката в момента сочи към %s\n"
+
+#: ../alternatives.c:671
+#, c-format
+msgid "%s - priority %d\n"
+msgstr "%s - приоритет %d\n"
+
+#: ../alternatives.c:674
+#, c-format
+msgid " slave %s: %s\n"
+msgstr " подчинен %s: %s\n"
+
+#: ../alternatives.c:679
+#, c-format
+msgid "Current `best' version is %s.\n"
+msgstr "Текущата 'най-добра' версия е %s.\n"
+
+#: ../alternatives.c:709
+#, c-format
+msgid "There is %d program that provides '%s'.\n"
+msgstr "Има %d програма осигуряваща '%s'.\n"
+
+#: ../alternatives.c:709
+#, c-format
+msgid "There are %d programs which provide '%s'.\n"
+msgstr "Има %d програми осигуряващи '%s'.\n"
+
+#: ../alternatives.c:711
+#, c-format
+msgid " Selection Command\n"
+msgstr " Избор Команда\n"
+
+#: ../alternatives.c:720
+#, c-format
+msgid "Enter to keep the current selection[+], or type selection number: "
+msgstr "Enter за да запазите текущата избор[+] или въведете номер за избор: "
+
+#: ../alternatives.c:723
+#, c-format
+msgid ""
+"\n"
+"error reading choice\n"
+msgstr ""
+"\n"
+"грешка при четенето на избора\n"
+
+#: ../alternatives.c:750 ../alternatives.c:776
+#, c-format
+msgid "%s has not been configured as an alternative for %s\n"
+msgstr "%s не е настроен като алтернатива на %s\n"
+
+#: ../alternatives.c:792
+#, c-format
+msgid "(would remove %s\n"
+msgstr "(ще премахне %s\n"
+
+#: ../alternatives.c:794
+#, c-format
+msgid "failed to remove %s: %s\n"
+msgstr "неуспех при премахване на %s: %s\n"
+
+#: ../alternatives.c:916
+#, c-format
+msgid "altdir %s invalid\n"
+msgstr "altdir %s е невалидна\n"
+
+#: ../alternatives.c:922
+#, c-format
+msgid "admindir %s invalid\n"
+msgstr "admindir %s е невалидна\n"
+
+#: ../alternatives.c:932
+#, c-format
+msgid "alternatives version %s\n"
+msgstr "alternatives версия %s\n"
+
+#: ../chkconfig.c:42
+#, c-format
+msgid "usage: %s [--list] [--type <type>] [name]\n"
+msgstr "usage: %s [--list] [--type <тип>] [име]\n"
+
+#: ../chkconfig.c:46
+#, c-format
+msgid " %s [--level <levels>] [--type <type>] <name> %s\n"
+msgstr "%s [--level <нива>] [--type <тип>] <име> %s\n"
+
+#: ../chkconfig.c:66
+#, c-format
+msgid "You do not have enough privileges to perform this operation.\n"
+msgstr "Нямате достатъчно права за да изпълнявате тази операция.\n"
+
+#: ../chkconfig.c:650
+#, c-format
+msgid "--type must be 'sysv' or 'xinetd'\n"
+msgstr "--type трябва да бъде 'sysv' или 'xinetd'\n"
--- chkconfig-1.3.48/po/bn.po
+++ chkconfig-1.3.48/po/bn.po
(renamed from chkconfig-1.3.46/po/bn.po)
--- chkconfig-1.3.48/po/bn_IN.po
+++ chkconfig-1.3.48/po/bn_IN.po
(renamed from chkconfig-1.3.46/po/bn_IN.po)
--- chkconfig-1.3.48/po/bs.po
+++ chkconfig-1.3.48/po/bs.po
(renamed from chkconfig-1.3.46/po/bs.po)
--- chkconfig-1.3.48/po/ca.po
+++ chkconfig-1.3.48/po/ca.po
(renamed from chkconfig-1.3.46/po/ca.po)
--- chkconfig-1.3.48/po/chkconfig.pot
+++ chkconfig-1.3.48/po/chkconfig.pot
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-09-10 15:18-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../chkconfig.c:38
+#, c-format
+msgid "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
+msgstr ""
+
+#: ../chkconfig.c:39
+#, c-format
+msgid ""
+"This may be freely redistributed under the terms of the GNU Public License.\n"
+msgstr ""
+
+#: ../chkconfig.c:42
+#, c-format
+msgid "usage: %s [--list] [--type <type>] [name]\n"
+msgstr ""
+
+#: ../chkconfig.c:43
+#, c-format
+msgid " %s --add <name>\n"
+msgstr ""
+
+#: ../chkconfig.c:44
+#, c-format
+msgid " %s --del <name>\n"
+msgstr ""
+
+#: ../chkconfig.c:45
+#, c-format
+msgid " %s --override <name>\n"
+msgstr ""
+
+#: ../chkconfig.c:46
+#, c-format
+msgid " %s [--level <levels>] [--type <type>] <name> %s\n"
+msgstr ""
+
+#: ../chkconfig.c:53
+#, c-format
+msgid ""
+"service %s supports chkconfig, but is not referenced in any runlevel (run "
+"'chkconfig --add %s')\n"
+msgstr ""
+
+#: ../chkconfig.c:55
+#, c-format
+msgid "service %s does not support chkconfig\n"
+msgstr ""
+
+#: ../chkconfig.c:57
+#, c-format
+msgid "error reading information on service %s: %s\n"
+msgstr ""
+
+#: ../chkconfig.c:66
+#, c-format
+msgid "You do not have enough privileges to perform this operation.\n"
+msgstr ""
+
+#: ../chkconfig.c:384 ../chkconfig.c:389 ../chkconfig.c:503
+msgid "on"
+msgstr ""
+
+#: ../chkconfig.c:384 ../chkconfig.c:389 ../chkconfig.c:503
+msgid "off"
+msgstr ""
+
+#: ../chkconfig.c:465
+#, c-format
+msgid "xinetd based services:\n"
+msgstr ""
+
+#: ../chkconfig.c:467
+#, c-format
+msgid "failed to open directory %s: %s\n"
+msgstr ""
+
+#: ../chkconfig.c:611
+#, c-format
+msgid "%s version %s\n"
+msgstr ""
+
+#: ../chkconfig.c:623
+#, c-format
+msgid "--type must be 'sysv' or 'xinetd'\n"
+msgstr ""
+
+#: ../chkconfig.c:631
+#, c-format
+msgid "only one of --list, --add, --del, or --override may be specified\n"
+msgstr ""
+
+#: ../chkconfig.c:691
+#, c-format
+msgid "only one runlevel may be specified for a chkconfig query\n"
+msgstr ""
+
+#: ../ntsysv.c:46
+msgid "Press <F1> for more information on a service."
+msgstr ""
+
+#: ../ntsysv.c:83 ../ntsysv.c:120
+msgid "Ok"
+msgstr ""
+
+#: ../ntsysv.c:83
+msgid "Back"
+msgstr ""
+
+#: ../ntsysv.c:83
+msgid "Cancel"
+msgstr ""
+
+#: ../ntsysv.c:95
+msgid "What services should be automatically started?"
+msgstr ""
+
+#: ../ntsysv.c:101
+msgid "Services"
+msgstr ""
+
+#: ../ntsysv.c:183 ../ntsysv.c:210 ../ntsysv.c:247
+#, c-format
+msgid "error reading info for service %s: %s\n"
+msgstr ""
+
+#: ../ntsysv.c:256
+#, c-format
+msgid "error reading from directory %s: %s\n"
+msgstr ""
+
+#: ../ntsysv.c:292
+#, c-format
+msgid "You must be root to run %s.\n"
+msgstr ""
+
+#: ../ntsysv.c:309
+#, c-format
+msgid "bad argument to --levels\n"
+msgstr ""
+
+#: ../ntsysv.c:316
+#, c-format
+msgid "No services may be managed by ntsysv!\n"
+msgstr ""
+
+#: ../leveldb.c:261
+#, c-format
+msgid "failed to open %s/init.d: %s\n"
+msgstr ""
+
+#: ../leveldb.c:662
+#, c-format
+msgid "failed to glob pattern %s: %s\n"
+msgstr ""
+
+#: ../leveldb.c:705
+#, c-format
+msgid "cannot determine current run level\n"
+msgstr ""
+
+#: ../leveldb.c:793
+#, c-format
+msgid "failed to make symlink %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:63
+#, c-format
+msgid "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
+msgstr ""
+
+#: ../alternatives.c:64
+#, c-format
+msgid ""
+"This may be freely redistributed under the terms of the GNU Public License.\n"
+"\n"
+msgstr ""
+
+#: ../alternatives.c:65
+#, c-format
+msgid "usage: alternatives --install <link> <name> <path> <priority>\n"
+msgstr ""
+
+#: ../alternatives.c:66
+#, c-format
+msgid " [--initscript <service>]\n"
+msgstr ""
+
+#: ../alternatives.c:67
+#, c-format
+msgid " [--slave <link> <name> <path>]*\n"
+msgstr ""
+
+#: ../alternatives.c:68
+#, c-format
+msgid " alternatives --remove <name> <path>\n"
+msgstr ""
+
+#: ../alternatives.c:69
+#, c-format
+msgid " alternatives --auto <name>\n"
+msgstr ""
+
+#: ../alternatives.c:70
+#, c-format
+msgid " alternatives --config <name>\n"
+msgstr ""
+
+#: ../alternatives.c:71
+#, c-format
+msgid " alternatives --display <name>\n"
+msgstr ""
+
+#: ../alternatives.c:72
+#, c-format
+msgid " alternatives --set <name> <path>\n"
+msgstr ""
+
+#: ../alternatives.c:73
+#, c-format
+msgid "\n"
+msgstr ""
+
+#: ../alternatives.c:74
+#, c-format
+msgid "common options: --verbose --test --help --usage --version\n"
+msgstr ""
+
+#: ../alternatives.c:75
+#, c-format
+msgid " --altdir <directory> --admindir <directory>\n"
+msgstr ""
+
+#: ../alternatives.c:172
+#, c-format
+msgid "reading %s\n"
+msgstr ""
+
+#: ../alternatives.c:176
+#, c-format
+msgid "failed to open %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:185
+#, c-format
+msgid "failed to read %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:194
+#, c-format
+msgid "%s empty!\n"
+msgstr ""
+
+#: ../alternatives.c:203
+#, c-format
+msgid "bad mode on line 1 of %s\n"
+msgstr ""
+
+#: ../alternatives.c:210
+#, c-format
+msgid "bad primary link in %s\n"
+msgstr ""
+
+#: ../alternatives.c:222
+#, c-format
+msgid "path %s unexpected in %s\n"
+msgstr ""
+
+#: ../alternatives.c:231
+#, c-format
+msgid "missing path for slave %s in %s\n"
+msgstr ""
+
+#: ../alternatives.c:241
+#, c-format
+msgid "unexpected end of file in %s\n"
+msgstr ""
+
+#: ../alternatives.c:250
+#, c-format
+msgid "path to alternate expected in %s\n"
+msgstr ""
+
+#: ../alternatives.c:251 ../alternatives.c:272 ../alternatives.c:295
+#: ../alternatives.c:314
+#, c-format
+msgid "unexpected line in %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:271
+#, c-format
+msgid "numeric priority expected in %s\n"
+msgstr ""
+
+#: ../alternatives.c:294
+#, c-format
+msgid "slave path expected in %s\n"
+msgstr ""
+
+#: ../alternatives.c:322
+#, c-format
+msgid "failed to read link %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:336
+#, c-format
+msgid "link points to no alternative -- setting mode to manual\n"
+msgstr ""
+
+#: ../alternatives.c:341
+#, c-format
+msgid "link changed -- setting mode to manual\n"
+msgstr ""
+
+#: ../alternatives.c:369 ../alternatives.c:376
+#, c-format
+msgid "would remove %s\n"
+msgstr ""
+
+#: ../alternatives.c:371 ../alternatives.c:378 ../alternatives.c:410
+#, c-format
+msgid "failed to remove link %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:394 ../alternatives.c:407
+#, c-format
+msgid "would link %s -> %s\n"
+msgstr ""
+
+#: ../alternatives.c:399 ../alternatives.c:416
+#, c-format
+msgid "failed to link %s -> %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:448
+#, c-format
+msgid "%s already exists\n"
+msgstr ""
+
+#: ../alternatives.c:450
+#, c-format
+msgid "failed to create %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:481
+#, c-format
+msgid "failed to replace %s with %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:507 ../alternatives.c:516
+#, c-format
+msgid "running %s\n"
+msgstr ""
+
+#: ../alternatives.c:543
+#, c-format
+msgid "the primary link for %s must be %s\n"
+msgstr ""
+
+#: ../alternatives.c:623
+#, c-format
+msgid "link %s incorrect for slave %s (%s %s)\n"
+msgstr ""
+
+#: ../alternatives.c:664
+#, c-format
+msgid "%s - status is auto.\n"
+msgstr ""
+
+#: ../alternatives.c:666
+#, c-format
+msgid "%s - status is manual.\n"
+msgstr ""
+
+#: ../alternatives.c:668
+#, c-format
+msgid " link currently points to %s\n"
+msgstr ""
+
+#: ../alternatives.c:671
+#, c-format
+msgid "%s - priority %d\n"
+msgstr ""
+
+#: ../alternatives.c:674
+#, c-format
+msgid " slave %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:679
+#, c-format
+msgid "Current `best' version is %s.\n"
+msgstr ""
+
+#: ../alternatives.c:709
+#, c-format
+msgid "There is %d program that provides '%s'.\n"
+msgstr ""
+
+#: ../alternatives.c:709
+#, c-format
+msgid "There are %d programs which provide '%s'.\n"
+msgstr ""
+
+#: ../alternatives.c:711
+#, c-format
+msgid " Selection Command\n"
+msgstr ""
+
+#: ../alternatives.c:720
+#, c-format
+msgid "Enter to keep the current selection[+], or type selection number: "
+msgstr ""
+
+#: ../alternatives.c:723
+#, c-format
+msgid ""
+"\n"
+"error reading choice\n"
+msgstr ""
+
+#: ../alternatives.c:750 ../alternatives.c:776
+#, c-format
+msgid "%s has not been configured as an alternative for %s\n"
+msgstr ""
+
+#: ../alternatives.c:792
+#, c-format
+msgid "(would remove %s\n"
+msgstr ""
+
+#: ../alternatives.c:794
+#, c-format
+msgid "failed to remove %s: %s\n"
+msgstr ""
+
+#: ../alternatives.c:916
+#, c-format
+msgid "altdir %s invalid\n"
+msgstr ""
+
+#: ../alternatives.c:922
+#, c-format
+msgid "admindir %s invalid\n"
+msgstr ""
+
+#: ../alternatives.c:932
+#, c-format
+msgid "alternatives version %s\n"
+msgstr ""
--- chkconfig-1.3.48/po/cs.po
+++ chkconfig-1.3.48/po/cs.po
(renamed from chkconfig-1.3.46/po/cs.po)
--- chkconfig-1.3.48/po/cy.po
+++ chkconfig-1.3.48/po/cy.po
(renamed from chkconfig-1.3.46/po/cy.po)
--- chkconfig-1.3.48/po/da.po
+++ chkconfig-1.3.48/po/da.po
(renamed from chkconfig-1.3.46/po/da.po)
--- chkconfig-1.3.48/po/de.po
+++ chkconfig-1.3.48/po/de.po
(renamed from chkconfig-1.3.46/po/de.po)
--- chkconfig-1.3.48/po/el.po
+++ chkconfig-1.3.48/po/el.po
(renamed from chkconfig-1.3.46/po/el.po)
--- chkconfig-1.3.48/po/en_GB.po
+++ chkconfig-1.3.48/po/en_GB.po
+# English (British) translation.
+# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Abigail Brady <morwen at evilmagic.org>, Bastien Nocera <hadess at hadess.net>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-03 17:22-0500\n"
+"PO-Revision-Date: 2007-06-11 13:15+0000\n"
+"Last-Translator: Abigail Brady <morwen at evilmagic.org>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../chkconfig.c:38
+#, c-format
+msgid "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
+msgstr "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
+
+#: ../chkconfig.c:39
+#, c-format
+msgid "This may be freely redistributed under the terms of the GNU Public License.\n"
+msgstr "This may be freely redistributed under the terms of the GNU Public License.\n"
+
+#: ../chkconfig.c:43
+#, c-format
+msgid " %s --add <name>\n"
+msgstr " %s --add <name>\n"
+
+#: ../chkconfig.c:44
+#, c-format
+msgid " %s --del <name>\n"
+msgstr " %s --del <name>\n"
+
+#: ../chkconfig.c:45
+#, c-format
+msgid " %s --override <name>\n"
+msgstr " %s --override <name>\n"
+
+#: ../chkconfig.c:53
+#, c-format
+msgid "service %s supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add %s')\n"
+msgstr "service %s supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add %s')\n"
+
+#: ../chkconfig.c:55
+#, c-format
+msgid "service %s does not support chkconfig\n"
+msgstr "service %s does not support chkconfig\n"
+
+#: ../chkconfig.c:57
+#, c-format
+msgid "error reading information on service %s: %s\n"
+msgstr "error reading information on service %s: %s\n"
+
+#: ../chkconfig.c:411 ../chkconfig.c:416 ../chkconfig.c:530
+msgid "on"
+msgstr "on"
+
+#: ../chkconfig.c:411 ../chkconfig.c:416 ../chkconfig.c:530
+msgid "off"
+msgstr "off"
+
+#: ../chkconfig.c:492
+#, c-format
+msgid "xinetd based services:\n"
+msgstr "xinetd based services:\n"
+
+#: ../chkconfig.c:494
+#, c-format
+msgid "failed to open directory %s: %s\n"
+msgstr "failed to open directory %s: %s\n"
+
+#: ../chkconfig.c:638
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s version %s\n"
+
+#: ../chkconfig.c:658
+#, c-format
+msgid "only one of --list, --add, --del, or --override may be specified\n"
+msgstr "only one of --list, --add, --del, or --override may be specified\n"
+
+#: ../chkconfig.c:718
+#, c-format
+msgid "only one runlevel may be specified for a chkconfig query\n"
+msgstr "only one runlevel may be specified for a chkconfig query\n"
+
+#: ../ntsysv.c:46
+msgid "Press <F1> for more information on a service."
+msgstr "Press <F1> for more information on a service."
+
+#: ../ntsysv.c:83 ../ntsysv.c:120
+msgid "Ok"
+msgstr "Ok"
+
+#: ../ntsysv.c:83
+msgid "Back"
+msgstr "Back"
+
+#: ../ntsysv.c:83
+msgid "Cancel"
+msgstr "Cancel"
+
+#: ../ntsysv.c:95
+msgid "What services should be automatically started?"
+msgstr "What services should be automatically started?"
+
+#: ../ntsysv.c:101
+msgid "Services"
+msgstr "Services"
+
+#: ../ntsysv.c:183 ../ntsysv.c:210 ../ntsysv.c:248
+#, c-format
+msgid "error reading info for service %s: %s\n"
+msgstr "error reading info for service %s: %s\n"
+
+#: ../ntsysv.c:257
+#, c-format
+msgid "error reading from directory %s: %s\n"
+msgstr "error reading from directory %s: %s\n"
+
+#: ../ntsysv.c:293
+#, c-format
+msgid "You must be root to run %s.\n"
+msgstr "You must be root to run %s.\n"
+
+#: ../ntsysv.c:310
+#, c-format
+msgid "bad argument to --levels\n"
+msgstr "bad argument to --levels\n"
+
+#: ../ntsysv.c:317
+#, c-format
+msgid "No services may be managed by ntsysv!\n"
+msgstr "No services may be managed by ntsysv!\n"
+
+#: ../leveldb.c:261
+#, c-format
+msgid "failed to open %s/init.d: %s\n"
+msgstr "failed to open %s/init.d: %s\n"
+
+#: ../leveldb.c:662
+#, c-format
+msgid "failed to glob pattern %s: %s\n"
+msgstr "failed to glob pattern %s: %s\n"
+
+#: ../leveldb.c:705
+#, c-format
+msgid "cannot determine current run level\n"
+msgstr "cannot determine current run level\n"
+
+#: ../leveldb.c:793
+#, c-format
+msgid "failed to make symlink %s: %s\n"
+msgstr "failed to make symlink %s: %s\n"
+
+#: ../alternatives.c:63
+#, c-format
+msgid "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
+msgstr "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
+
+#: ../alternatives.c:64
+#, c-format
+msgid ""
+"This may be freely redistributed under the terms of the GNU Public License.\n"
+"\n"
+msgstr ""
+"This may be freely redistributed under the terms of the GNU Public License.\n"
+"\n"
+
+#: ../alternatives.c:65
+#, c-format
+msgid "usage: alternatives --install <link> <name> <path> <priority>\n"
+msgstr "usage: alternatives --install <link> <name> <path> <priority>\n"
+
+#: ../alternatives.c:66
+#, c-format
+msgid " [--initscript <service>]\n"
+msgstr " [--initscript <service>]\n"
+
+#: ../alternatives.c:67
+#, c-format
+msgid " [--slave <link> <name> <path>]*\n"
+msgstr " [--slave <link> <name> <path>]*\n"
+
+#: ../alternatives.c:68
+#, c-format
+msgid " alternatives --remove <name> <path>\n"
+msgstr " alternatives --remove <name> <path>\n"
+
+#: ../alternatives.c:69
+#, c-format
+msgid " alternatives --auto <name>\n"
+msgstr " alternatives --auto <name>\n"
+
+#: ../alternatives.c:70
+#, c-format
+msgid " alternatives --config <name>\n"
+msgstr " alternatives --config <name>\n"
+
+#: ../alternatives.c:71
+#, c-format
+msgid " alternatives --display <name>\n"
+msgstr " alternatives --display <name>\n"
+
+#: ../alternatives.c:72
+#, c-format
+msgid " alternatives --set <name> <path>\n"
+msgstr " alternatives --set <name> <path>\n"
+
+#: ../alternatives.c:73
+#, c-format
+msgid "\n"
+msgstr "\n"
+
+#: ../alternatives.c:74
+#, c-format
+msgid "common options: --verbose --test --help --usage --version\n"
+msgstr "common options: --verbose --test --help --usage --version\n"
+
+#: ../alternatives.c:75
+#, c-format
+msgid " --altdir <directory> --admindir <directory>\n"
+msgstr " --altdir <directory> --admindir <directory>\n"
+
+#: ../alternatives.c:172
+#, c-format
+msgid "reading %s\n"
+msgstr "reading %s\n"
+
+#: ../alternatives.c:176
+#, c-format
+msgid "failed to open %s: %s\n"
+msgstr "failed to open %s: %s\n"
+
+#: ../alternatives.c:185
+#, c-format
+msgid "failed to read %s: %s\n"
+msgstr "failed to read %s: %s\n"
+
+#: ../alternatives.c:194
+#, c-format
+msgid "%s empty!\n"
+msgstr "%s empty!\n"
+
+#: ../alternatives.c:203
+#, c-format
+msgid "bad mode on line 1 of %s\n"
+msgstr "bad mode on line 1 of %s\n"
+
+#: ../alternatives.c:210
+#, c-format
+msgid "bad primary link in %s\n"
+msgstr "bad primary link in %s\n"
+
+#: ../alternatives.c:222
+#, c-format
+msgid "path %s unexpected in %s\n"
+msgstr "path %s unexpected in %s\n"
+
+#: ../alternatives.c:231
+#, c-format
+msgid "missing path for slave %s in %s\n"
+msgstr "missing path for slave %s in %s\n"
+
+#: ../alternatives.c:241
+#, c-format
+msgid "unexpected end of file in %s\n"
+msgstr "unexpected end of file in %s\n"
+
+#: ../alternatives.c:250
+#, c-format
+msgid "path to alternate expected in %s\n"
+msgstr "path to alternate expected in %s\n"
+
+#: ../alternatives.c:251 ../alternatives.c:272 ../alternatives.c:295
+#: ../alternatives.c:314
+#, c-format
+msgid "unexpected line in %s: %s\n"
+msgstr "unexpected line in %s: %s\n"
+
+#: ../alternatives.c:271
+#, c-format
+msgid "numeric priority expected in %s\n"
+msgstr "numeric priority expected in %s\n"
+
+#: ../alternatives.c:294
+#, c-format
+msgid "slave path expected in %s\n"
+msgstr "slave path expected in %s\n"
+
+#: ../alternatives.c:322
+#, c-format
+msgid "failed to read link %s: %s\n"
+msgstr "failed to read link %s: %s\n"
+
+#: ../alternatives.c:336
+#, c-format
+msgid "link points to no alternative -- setting mode to manual\n"
+msgstr "link points to no alternative -- setting mode to manual\n"
+
+#: ../alternatives.c:341
+#, c-format
+msgid "link changed -- setting mode to manual\n"
+msgstr "link changed -- setting mode to manual\n"
+
+#: ../alternatives.c:369 ../alternatives.c:376
+#, c-format
+msgid "would remove %s\n"
+msgstr "would remove %s\n"
+
+#: ../alternatives.c:371 ../alternatives.c:378 ../alternatives.c:410
+#, c-format
+msgid "failed to remove link %s: %s\n"
+msgstr "failed to remove link %s: %s\n"
+
+#: ../alternatives.c:394 ../alternatives.c:407
+#, c-format
+msgid "would link %s -> %s\n"
+msgstr "would link %s -> %s\n"
+
+#: ../alternatives.c:399 ../alternatives.c:416
+#, c-format
+msgid "failed to link %s -> %s: %s\n"
+msgstr "failed to link %s -> %s: %s\n"
+
+#: ../alternatives.c:448
+#, c-format
+msgid "%s already exists\n"
+msgstr "%s already exists\n"
+
+#: ../alternatives.c:450
+#, c-format
+msgid "failed to create %s: %s\n"
+msgstr "failed to create %s: %s\n"
+
+#: ../alternatives.c:481
+#, c-format
+msgid "failed to replace %s with %s: %s\n"
+msgstr "failed to replace %s with %s: %s\n"
+
+#: ../alternatives.c:507 ../alternatives.c:516
+#, c-format
+msgid "running %s\n"
+msgstr "running %s\n"
+
+#: ../alternatives.c:543
+#, c-format
+msgid "the primary link for %s must be %s\n"
+msgstr "the primary link for %s must be %s\n"
+
+#: ../alternatives.c:623
+#, c-format
+msgid "link %s incorrect for slave %s (%s %s)\n"
+msgstr "link %s incorrect for slave %s (%s %s)\n"
+
+#: ../alternatives.c:664
+#, c-format
+msgid "%s - status is auto.\n"
+msgstr "%s - status is auto.\n"
+
+#: ../alternatives.c:666
+#, c-format
+msgid "%s - status is manual.\n"
+msgstr "%s - status is manual.\n"
+
+#: ../alternatives.c:668
+#, c-format
+msgid " link currently points to %s\n"
+msgstr " link currently points to %s\n"
+
+#: ../alternatives.c:671
+#, c-format
+msgid "%s - priority %d\n"
+msgstr "%s - priority %d\n"
+
+#: ../alternatives.c:674
+#, c-format
+msgid " slave %s: %s\n"
+msgstr " slave %s: %s\n"
+
+#: ../alternatives.c:679
+#, c-format
+msgid "Current `best' version is %s.\n"
+msgstr "Current `best' version is %s.\n"
+
+#: ../alternatives.c:709
+#, c-format
+msgid "There is %d program that provides '%s'.\n"
+msgstr "There is %d program that provides '%s'.\n"
+
+#: ../alternatives.c:709
+#, c-format
+msgid "There are %d programs which provide '%s'.\n"
+msgstr "There are %d programs which provide '%s'.\n"
+
+#: ../alternatives.c:711
+#, c-format
+msgid " Selection Command\n"
+msgstr " Selection Command\n"
+
+#: ../alternatives.c:720
+#, c-format
+msgid "Enter to keep the current selection[+], or type selection number: "
+msgstr "Enter to keep the current selection[+], or type selection number: "
+
+#: ../alternatives.c:723
+#, c-format
+msgid ""
+"\n"
+"error reading choice\n"
+msgstr ""
+"\n"
+"error reading choice\n"
+
+#: ../alternatives.c:750 ../alternatives.c:776
+#, c-format
+msgid "%s has not been configured as an alternative for %s\n"
+msgstr "%s has not been configured as an alternative for %s\n"
+
+#: ../alternatives.c:792
+#, c-format
+msgid "(would remove %s\n"
+msgstr "(would remove %s\n"
+
+#: ../alternatives.c:794
+#, c-format
+msgid "failed to remove %s: %s\n"
+msgstr "failed to remove %s: %s\n"
+
+#: ../alternatives.c:916
+#, c-format
+msgid "altdir %s invalid\n"
+msgstr "altdir %s invalid\n"
+
+#: ../alternatives.c:922
+#, c-format
+msgid "admindir %s invalid\n"
+msgstr "admindir %s invalid\n"
+
+#: ../alternatives.c:932
+#, c-format
+msgid "alternatives version %s\n"
+msgstr "alternatives version %s\n"
+
+#: ../chkconfig.c:42
+#, c-format
+msgid "usage: %s [--list] [--type <type>] [name]\n"
+msgstr "usage: %s [--list] [--type <type>] [name]\n"
+
+#: ../chkconfig.c:46
+#, c-format
+msgid " %s [--level <levels>] [--type <type>] <name> %s\n"
+msgstr "%s [--level <levels>] [--type <type>] <name> %s\n"
+
+#: ../chkconfig.c:66
+#, c-format
+msgid "You do not have enough privileges to perform this operation.\n"
+msgstr "You do not have enough privileges to perform this operation.\n"
+
+#: ../chkconfig.c:650
+#, c-format
+msgid "--type must be 'sysv' or 'xinetd'\n"
+msgstr "--type must be 'sysv' or 'xinetd'\n"
--- chkconfig-1.3.48/po/es.po
+++ chkconfig-1.3.48/po/es.po
(renamed from chkconfig-1.3.46/po/es.po)
--- chkconfig-1.3.48/po/et.po
+++ chkconfig-1.3.48/po/et.po
(renamed from chkconfig-1.3.46/po/et.po)
--- chkconfig-1.3.48/po/fi.po
+++ chkconfig-1.3.48/po/fi.po
(renamed from chkconfig-1.3.46/po/fi.po)
--- chkconfig-1.3.48/po/fr.po
+++ chkconfig-1.3.48/po/fr.po
(renamed from chkconfig-1.3.46/po/fr.po)
--- chkconfig-1.3.48/po/gl.po
+++ chkconfig-1.3.48/po/gl.po
(renamed from chkconfig-1.3.46/po/gl.po)
--- chkconfig-1.3.48/po/gu.po
+++ chkconfig-1.3.48/po/gu.po
(renamed from chkconfig-1.3.46/po/gu.po)
--- chkconfig-1.3.48/po/he.po
+++ chkconfig-1.3.48/po/he.po
(renamed from chkconfig-1.3.46/po/he.po)
--- chkconfig-1.3.48/po/hi.po
+++ chkconfig-1.3.48/po/hi.po
(renamed from chkconfig-1.3.46/po/hi.po)
--- chkconfig-1.3.48/po/hr.po
+++ chkconfig-1.3.48/po/hr.po
(renamed from chkconfig-1.3.46/po/hr.po)
--- chkconfig-1.3.48/po/hu.po
+++ chkconfig-1.3.48/po/hu.po
(renamed from chkconfig-1.3.46/po/hu.po)
--- chkconfig-1.3.48/po/hy.po
+++ chkconfig-1.3.48/po/hy.po
(renamed from chkconfig-1.3.46/po/hy.po)
--- chkconfig-1.3.48/po/id.po
+++ chkconfig-1.3.48/po/id.po
(renamed from chkconfig-1.3.46/po/id.po)
--- chkconfig-1.3.48/po/is.po
+++ chkconfig-1.3.48/po/is.po
(renamed from chkconfig-1.3.46/po/is.po)
--- chkconfig-1.3.48/po/it.po
+++ chkconfig-1.3.48/po/it.po
(renamed from chkconfig-1.3.46/po/it.po)
--- chkconfig-1.3.48/po/ja.po
+++ chkconfig-1.3.48/po/ja.po
(renamed from chkconfig-1.3.46/po/ja.po)
--- chkconfig-1.3.48/po/ka.po
+++ chkconfig-1.3.48/po/ka.po
(renamed from chkconfig-1.3.46/po/ka.po)
--- chkconfig-1.3.48/po/kn.po
+++ chkconfig-1.3.48/po/kn.po
(renamed from chkconfig-1.3.46/po/kn.po)
--- chkconfig-1.3.48/po/ko.po
+++ chkconfig-1.3.48/po/ko.po
(renamed from chkconfig-1.3.46/po/ko.po)
--- chkconfig-1.3.48/po/ku.po
+++ chkconfig-1.3.48/po/ku.po
(renamed from chkconfig-1.3.46/po/ku.po)
--- chkconfig-1.3.48/po/lo.po
+++ chkconfig-1.3.48/po/lo.po
(renamed from chkconfig-1.3.46/po/lo.po)
--- chkconfig-1.3.48/po/lv.po
+++ chkconfig-1.3.48/po/lv.po
(renamed from chkconfig-1.3.46/po/lv.po)
--- chkconfig-1.3.48/po/mai.po
+++ chkconfig-1.3.48/po/mai.po
(renamed from chkconfig-1.3.46/po/mai.po)
--- chkconfig-1.3.48/po/mk.po
+++ chkconfig-1.3.48/po/mk.po
(renamed from chkconfig-1.3.46/po/mk.po)
--- chkconfig-1.3.48/po/ml.po
+++ chkconfig-1.3.48/po/ml.po
(renamed from chkconfig-1.3.46/po/ml.po)
--- chkconfig-1.3.48/po/mr.po
+++ chkconfig-1.3.48/po/mr.po
(renamed from chkconfig-1.3.46/po/mr.po)
--- chkconfig-1.3.48/po/ms.po
+++ chkconfig-1.3.48/po/ms.po
(renamed from chkconfig-1.3.46/po/ms.po)
--- chkconfig-1.3.48/po/my.po
+++ chkconfig-1.3.48/po/my.po
(renamed from chkconfig-1.3.46/po/my.po)
--- chkconfig-1.3.48/po/nb.po
+++ chkconfig-1.3.48/po/nb.po
(renamed from chkconfig-1.3.46/po/nb.po)
--- chkconfig-1.3.48/po/nl.po
+++ chkconfig-1.3.48/po/nl.po
+# translation of chkconfig.master.nl.po to Dutch
+# Dutch translation of chkconfig
+# Copyright (C) 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
+# Tino Meinen <a.t.meinen at chello.nl>, 2003, 2004.
+# Peter van Egdom <p.van.egdom at gmail.com>, 2003, 2005, 2007.
+# R.E. van der Luit <nippur at fedoraproject.org>, 2009.
+# Geert Warrink <geert.warrink at onsnet.nu>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: chkconfig.master.nl\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-03 17:22-0500\n"
+"PO-Revision-Date: 2010-06-22 17:34+0200\n"
+"Last-Translator: Geert Warrink <geert.warrink at onsnet.nu>\n"
+"Language-Team: Fedora\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.5.2\n"
+
+#: ../chkconfig.c:38
+#, c-format
+msgid "%s version %s - Copyright (C) 1997-2000 Red Hat, Inc.\n"
+msgstr "%s versie %s - Copyright © 1997-2000 Red Hat, Inc.\n"
+
+#: ../chkconfig.c:39
+#, c-format
+msgid ""
+"This may be freely redistributed under the terms of the GNU Public License.\n"
+msgstr "Dit mag vrijelijk worden verspreid onder de voorwaarden van de GNU Public "
+"License.\n"
+
+#: ../chkconfig.c:42
+#, c-format
+msgid "usage: %s [--list] [--type <type>] [name]\n"
+msgstr "gebruik: %s [--list] [--type <type>] [naam]\n"
+
+#: ../chkconfig.c:43
+#, c-format
+msgid " %s --add <name>\n"
+msgstr " %s --add <naam>\n"
+
+#: ../chkconfig.c:44
+#, c-format
+msgid " %s --del <name>\n"
+msgstr " %s --del <naam>\n"
+
+#: ../chkconfig.c:45
+#, c-format
+msgid " %s --override <name>\n"
+msgstr " %s --override <naam>\n"
+
+#: ../chkconfig.c:46
+#, c-format
+msgid " %s [--level <levels>] [--type <type>] <name> %s\n"
+msgstr " %s [--level <levels>] [--type <type>] <naam> %s\n"
+
+#: ../chkconfig.c:53
+#, c-format
+msgid ""
+"service %s supports chkconfig, but is not referenced in any runlevel (run "
+"'chkconfig --add %s')\n"
+msgstr "service %s ondersteunt chkconfig, maar in geen enkel runlevel staat een "
+"verwijzing naar deze service (voer 'chkconfig --add %s' uit)\n"
+
+#: ../chkconfig.c:55
+#, c-format
+msgid "service %s does not support chkconfig\n"
+msgstr "service %s ondersteunt chkconfig niet\n"
+
+#: ../chkconfig.c:57
+#, c-format
+msgid "error reading information on service %s: %s\n"
+msgstr "fout bij lezen van informatie over service %s: %s\n"
+
+#: ../chkconfig.c:66
+#, c-format
+msgid "You do not have enough privileges to perform this operation.\n"
+msgstr "Je hebt niet genoeg rechten om deze actie uit te voeren.\n"
+
+#: ../chkconfig.c:411 ../chkconfig.c:416 ../chkconfig.c:530
+msgid "on"
+msgstr "aan"
+
+#: ../chkconfig.c:411 ../chkconfig.c:416 ../chkconfig.c:530
+msgid "off"
+msgstr "uit"
+
+#: ../chkconfig.c:492
+#, c-format
+msgid "xinetd based services:\n"
+msgstr "services gebaseerd op xinetd:\n"
+
+#: ../chkconfig.c:494
+#, c-format
+msgid "failed to open directory %s: %s\n"
+msgstr "openen van map %s mislukt: %s\n"
+
+#: ../chkconfig.c:638
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s versie %s\n"
+
+#: ../chkconfig.c:650
+#, c-format
+msgid "--type must be 'sysv' or 'xinetd'\n"
+msgstr "--type moet zijn 'sysv' of 'xinetd'\n"
+
+#: ../chkconfig.c:658
+#, c-format
+msgid "only one of --list, --add, --del, or --override may be specified\n"
+msgstr "slechts één van --list, --add, --del of --override mag worden opgegeven\n"
+
+#: ../chkconfig.c:718
+#, c-format
+msgid "only one runlevel may be specified for a chkconfig query\n"
+msgstr "slechts één runlevel mag worden opgegeven voor een chkconfig zoekopdracht\n"
+
+#: ../ntsysv.c:46
+msgid "Press <F1> for more information on a service."
+msgstr "Druk op <F1> voor meer informatie over een service."
+
+#: ../ntsysv.c:83 ../ntsysv.c:120
+msgid "Ok"
+msgstr "Ok"
+
+#: ../ntsysv.c:83
+msgid "Back"
+msgstr "Terug"
+
+#: ../ntsysv.c:83
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: ../ntsysv.c:95
+msgid "What services should be automatically started?"
+msgstr "Welke services moeten automatisch worden gestart?"
+
+#: ../ntsysv.c:101
+msgid "Services"
+msgstr "Services"
+
+#: ../ntsysv.c:183 ../ntsysv.c:210 ../ntsysv.c:248
+#, c-format
+msgid "error reading info for service %s: %s\n"
+msgstr "fout bij lezen van informatie over service %s: %s\n"
+
+#: ../ntsysv.c:257
+#, c-format
+msgid "error reading from directory %s: %s\n"
+msgstr "fout bij lezen uit map %s: %s\n"
+
+#: ../ntsysv.c:293
+#, c-format
+msgid "You must be root to run %s.\n"
+msgstr "Je moet root zijn om %s uit te kunnen voeren.\n"
+
+#: ../ntsysv.c:310
+#, c-format
+msgid "bad argument to --levels\n"
+msgstr "verkeerd argument voor --levels\n"
+
+#: ../ntsysv.c:317
+#, c-format
+msgid "No services may be managed by ntsysv!\n"
+msgstr "Er mogen geen services worden beheerd door ntsysv!\n"
+
+#: ../leveldb.c:261
+#, c-format
+msgid "failed to open %s/init.d: %s\n"
+msgstr "openen van %s/init.d mislukt: %s\n"
+
+#: ../leveldb.c:662
+#, c-format
+msgid "failed to glob pattern %s: %s\n"
+msgstr "klonteren van patroon %s mislukt: %s\n"
+
+#: ../leveldb.c:705
+#, c-format
+msgid "cannot determine current run level\n"
+msgstr "kan het huidige runlevel niet bepalen\n"
+
+#: ../leveldb.c:793
+#, c-format
+msgid "failed to make symlink %s: %s\n"
+msgstr "maken van symbolische link %s mislukt: %s\n"
+
+#: ../alternatives.c:63
+#, c-format
+msgid "alternatives version %s - Copyright (C) 2001 Red Hat, Inc.\n"
+msgstr "alternatives versie %s - Copyright © 2001 Red Hat, Inc.\n"
+
+#: ../alternatives.c:64
+#, c-format
+msgid ""
+"This may be freely redistributed under the terms of the GNU Public License.\n"
+"\n"
+msgstr ""
+"Dit mag vrijelijk worden verspreid onder de voorwaarden van de GNU Public "
+"License.\n"
+"\n"
+
+#: ../alternatives.c:65
+#, c-format
+msgid "usage: alternatives --install <link> <name> <path> <priority>\n"
+msgstr "gebruik: alternatives --install <link> <naam> <pad> <prioriteit>\n"
+
+#: ../alternatives.c:66
+#, c-format
+msgid " [--initscript <service>]\n"
+msgstr " [--initscript <service>]\n"
+
+#: ../alternatives.c:67
+#, c-format
+msgid " [--slave <link> <name> <path>]*\n"
+msgstr " [--slave <link> <naam> <pad>]*\n"
+
+#: ../alternatives.c:68
+#, c-format
+msgid " alternatives --remove <name> <path>\n"
+msgstr " alternatives --remove <naam> <pad>\n"
+
+#: ../alternatives.c:69
+#, c-format
+msgid " alternatives --auto <name>\n"
+msgstr " alternatives --auto <naam>\n"
+
+#: ../alternatives.c:70
+#, c-format
+msgid " alternatives --config <name>\n"
+msgstr " alternatives --config <naam>\n"
+
+#: ../alternatives.c:71
+#, c-format
+msgid " alternatives --display <name>\n"
+msgstr " alternatives --display <naam>\n"
+
+#: ../alternatives.c:72
+#, c-format
+msgid " alternatives --set <name> <path>\n"
+msgstr " alternatives --set <naam> <pad>\n"
+
+#: ../alternatives.c:73
+#, c-format
+msgid "\n"
+msgstr "\n"
+
+#: ../alternatives.c:74
+#, c-format
+msgid "common options: --verbose --test --help --usage --version\n"
+msgstr "gebruikelijke opties: --verbose --test --help --usage --version\n"
+
+#: ../alternatives.c:75
+#, c-format
+msgid " --altdir <directory> --admindir <directory>\n"
+msgstr " --altdir <map> --admindir <map>\n"
+
+#: ../alternatives.c:172
+#, c-format
+msgid "reading %s\n"
+msgstr "lezen van %s\n"
+
+#: ../alternatives.c:176
+#, c-format
+msgid "failed to open %s: %s\n"
+msgstr "openen van %s mislukt: %s\n"
+
+#: ../alternatives.c:185
+#, c-format
+msgid "failed to read %s: %s\n"
+msgstr "lezen van %s mislukt: %s\n"
+
+#: ../alternatives.c:194
+#, c-format
+msgid "%s empty!\n"
+msgstr "%s is leeg!\n"
+
+#: ../alternatives.c:203
+#, c-format
+msgid "bad mode on line 1 of %s\n"
+msgstr "verkeerde mode op regel 1 van %s\n"
+
+#: ../alternatives.c:210
+#, c-format
+msgid "bad primary link in %s\n"
+msgstr "verkeerde primaire link in %s\n"
+
+#: ../alternatives.c:222
+#, c-format
+msgid "path %s unexpected in %s\n"
+msgstr "pad %s niet verwacht in %s\n"
+
+#: ../alternatives.c:231
+#, c-format
+msgid "missing path for slave %s in %s\n"
+msgstr "ontbrekend pad voor slaaf %s in %s\n"
+
+#: ../alternatives.c:241
+#, c-format
+msgid "unexpected end of file in %s\n"
+msgstr "onverwacht einde van bestand in %s\n"
+
+#: ../alternatives.c:250
+#, c-format
+msgid "path to alternate expected in %s\n"
+msgstr "pad voor alternatief verwacht in %s\n"
+
+#: ../alternatives.c:251 ../alternatives.c:272 ../alternatives.c:295
+#: ../alternatives.c:314
+#, c-format
+msgid "unexpected line in %s: %s\n"
+msgstr "onverwachte regel in %s: %s\n"
+
+#: ../alternatives.c:271
+#, c-format
+msgid "numeric priority expected in %s\n"
+msgstr "numerieke prioriteit verwacht in %s\n"
+
+#: ../alternatives.c:294
+#, c-format
+msgid "slave path expected in %s\n"
+msgstr "pad voor slaaf verwacht in %s\n"
+
+#: ../alternatives.c:322
+#, c-format
+msgid "failed to read link %s: %s\n"
+msgstr "lezen van link %s mislukt: %s\n"
+
+#: ../alternatives.c:336
+#, c-format
+msgid "link points to no alternative -- setting mode to manual\n"
+msgstr "link verwijst niet naar alternatief -- mode wordt op handmatig ingesteld\n"
+
+#: ../alternatives.c:341
+#, c-format
+msgid "link changed -- setting mode to manual\n"
+msgstr "link veranderd -- mode wordt op handmatig ingesteld\n"
+
+#: ../alternatives.c:369 ../alternatives.c:376
+#, c-format
+msgid "would remove %s\n"
+msgstr "zou %s verwijderen\n"
+
+#: ../alternatives.c:371 ../alternatives.c:378 ../alternatives.c:410
+#, c-format
+msgid "failed to remove link %s: %s\n"
+msgstr "verwijderen van link %s mislukt: %s\n"
+
+#: ../alternatives.c:394 ../alternatives.c:407
+#, c-format
+msgid "would link %s -> %s\n"
+msgstr "zou %s linken -> %s\n"
+
+#: ../alternatives.c:399 ../alternatives.c:416
+#, c-format
+msgid "failed to link %s -> %s: %s\n"
+msgstr "aanmaken van link %s -> %s mislukt: %s\n"
+
+#: ../alternatives.c:448
+#, c-format
+msgid "%s already exists\n"
+msgstr "%s bestaat reeds\n"
+
+#: ../alternatives.c:450
+#, c-format
+msgid "failed to create %s: %s\n"
+msgstr "aanmaken van %s mislukt: %s\n"
+
+#: ../alternatives.c:481
+#, c-format
+msgid "failed to replace %s with %s: %s\n"
+msgstr "vervangen van %s door %s mislukt: %s\n"
+
+#: ../alternatives.c:507 ../alternatives.c:516
+#, c-format
+msgid "running %s\n"
+msgstr "uitvoeren van %s\n"
+
+#: ../alternatives.c:543
+#, c-format
+msgid "the primary link for %s must be %s\n"
+msgstr "de primaire link voor %s moet zijn %s\n"
+
+#: ../alternatives.c:623
+#, c-format
+msgid "link %s incorrect for slave %s (%s %s)\n"
+msgstr "link %s is incorrect voor slaaf %s (%s %s)\n"
+
+#: ../alternatives.c:664
+#, c-format
+msgid "%s - status is auto.\n"
+msgstr "%s - status is auto.\n"
+
+#: ../alternatives.c:666
+#, c-format
+msgid "%s - status is manual.\n"
+msgstr "%s - status is handmatig.\n"
+
+#: ../alternatives.c:668
+#, c-format
+msgid " link currently points to %s\n"
+msgstr " link wijst momenteel naar %s\n"
+
+#: ../alternatives.c:671
+#, c-format
+msgid "%s - priority %d\n"
+msgstr "%s - prioriteit %d\n"
+
+#: ../alternatives.c:674
+#, c-format
+msgid " slave %s: %s\n"
+msgstr " slaaf %s: %s\n"
+
+#: ../alternatives.c:679
+#, c-format
+msgid "Current `best' version is %s.\n"
+msgstr "Huidige 'beste' versie is %s.\n"
+
+#: ../alternatives.c:709
+#, c-format
+msgid "There is %d program that provides '%s'.\n"
+msgstr "Er is %d programma die '%s' levert.\n"
+
+#: ../alternatives.c:709
+#, c-format
+msgid "There are %d programs which provide '%s'.\n"
+msgstr "Er zijn %d programma's die '%s' leveren.\n"
+
+#: ../alternatives.c:711
+#, c-format
+msgid " Selection Command\n"
+msgstr " Selectie Commando\n"
+
+#: ../alternatives.c:720
+#, c-format
+msgid "Enter to keep the current selection[+], or type selection number: "
+msgstr ""
+"<enter> om de huidige selectie te bewaren[+], of type een selectie nummer: "
+
+#: ../alternatives.c:723
+#, c-format
+msgid ""
+"\n"
+"error reading choice\n"
+msgstr ""
+"\n"
+"fout bij lezen van keuze\n"
+
+#: ../alternatives.c:750 ../alternatives.c:776
+#, c-format
+msgid "%s has not been configured as an alternative for %s\n"
+msgstr "%s is niet geconfigureerd als alternatief voor %s\n"
+
+#: ../alternatives.c:792
+#, c-format
+msgid "(would remove %s\n"
+msgstr "(zou %s verwijderen\n"
+
+#: ../alternatives.c:794
+#, c-format
+msgid "failed to remove %s: %s\n"
+msgstr "verwijderen van %s mislukt: %s\n"
+
+#: ../alternatives.c:916
+#, c-format
+msgid "altdir %s invalid\n"
+msgstr "altdir %s is ongeldig\n"
+
+#: ../alternatives.c:922
+#, c-format
+msgid "admindir %s invalid\n"
+msgstr "admindir %s is ongeldig\n"
+
+#: ../alternatives.c:932
+#, c-format
+msgid "alternatives version %s\n"
+msgstr "alternatives versie %s\n"
--- chkconfig-1.3.48/po/nn.po
+++ chkconfig-1.3.48/po/nn.po
(renamed from chkconfig-1.3.46/po/nn.po)
--- chkconfig-1.3.48/po/or.po
+++ chkconfig-1.3.48/po/or.po
(renamed from chkconfig-1.3.46/po/or.po)
--- chkconfig-1.3.48/po/pa.po
+++ chkconfig-1.3.48/po/pa.po
(renamed from chkconfig-1.3.46/po/pa.po)
--- chkconfig-1.3.48/po/pl.po
+++ chkconfig-1.3.48/po/pl.po
(renamed from chkconfig-1.3.46/po/pl.po)
--- chkconfig-1.3.48/po/pt.po
+++ chkconfig-1.3.48/po/pt.po
(renamed from chkconfig-1.3.46/po/pt.po)
--- chkconfig-1.3.48/po/pt_BR.po
+++ chkconfig-1.3.48/po/pt_BR.po
(renamed from chkconfig-1.3.46/po/pt_BR.po)
--- chkconfig-1.3.48/po/ro.po
+++ chkconfig-1.3.48/po/ro.po
(renamed from chkconfig-1.3.46/po/ro.po)
--- chkconfig-1.3.48/po/ru.po
+++ chkconfig-1.3.48/po/ru.po
(renamed from chkconfig-1.3.46/po/ru.po)
--- chkconfig-1.3.48/po/si.po
+++ chkconfig-1.3.48/po/si.po
(renamed from chkconfig-1.3.46/po/si.po)
--- chkconfig-1.3.48/po/sk.po
+++ chkconfig-1.3.48/po/sk.po
(renamed from chkconfig-1.3.46/po/sk.po)
--- chkconfig-1.3.48/po/sl.po
+++ chkconfig-1.3.48/po/sl.po
(renamed from chkconfig-1.3.46/po/sl.po)
--- chkconfig-1.3.48/po/sq.po
+++ chkconfig-1.3.48/po/sq.po
(renamed from chkconfig-1.3.46/po/sq.po)
--- chkconfig-1.3.48/po/sr.po
+++ chkconfig-1.3.48/po/sr.po
(renamed from chkconfig-1.3.46/po/sr.po)
--- chkconfig-1.3.48/po/sr at latin.po
+++ chkconfig-1.3.48/po/sr at latin.po
(renamed from chkconfig-1.3.46/po/sr at latin.po)
--- chkconfig-1.3.48/po/sv.po
+++ chkconfig-1.3.48/po/sv.po
(renamed from chkconfig-1.3.46/po/sv.po)
--- chkconfig-1.3.48/po/ta.po
+++ chkconfig-1.3.48/po/ta.po
(renamed from chkconfig-1.3.46/po/ta.po)
--- chkconfig-1.3.48/po/te.po
+++ chkconfig-1.3.48/po/te.po
(renamed from chkconfig-1.3.46/po/te.po)
--- chkconfig-1.3.48/po/tg.po
+++ chkconfig-1.3.48/po/tg.po
(renamed from chkconfig-1.3.46/po/tg.po)
--- chkconfig-1.3.48/po/tr.po
+++ chkconfig-1.3.48/po/tr.po
(renamed from chkconfig-1.3.46/po/tr.po)
--- chkconfig-1.3.48/po/uk.po
+++ chkconfig-1.3.48/po/uk.po
(renamed from chkconfig-1.3.46/po/uk.po)
--- chkconfig-1.3.48/po/ur.po
+++ chkconfig-1.3.48/po/ur.po
(renamed from chkconfig-1.3.46/po/ur.po)
--- chkconfig-1.3.48/po/vi.po
+++ chkconfig-1.3.48/po/vi.po
(renamed from chkconfig-1.3.46/po/vi.po)
--- chkconfig-1.3.48/po/zh_CN.po
+++ chkconfig-1.3.48/po/zh_CN.po
(renamed from chkconfig-1.3.46/po/zh_CN.po)
--- chkconfig-1.3.48/po/zh_TW.po
+++ chkconfig-1.3.48/po/zh_TW.po
(renamed from chkconfig-1.3.46/po/zh_TW.po)
++++++ chkconfig.yaml
--- chkconfig.yaml
+++ chkconfig.yaml
@@ -1,6 +1,6 @@
Name: chkconfig
Summary: A system tool for maintaining the /etc/rc*.d hierarchy
-Version: 1.3.46
+Version: 1.3.48
Release: 1
Group: System/Base
License: GPLv2
@@ -20,7 +20,7 @@
- gettext
- popt-devel
Configure: none
-Builder: make
+Builder: none
LocaleName: "%{name}"
SubPackages:
- Name: ntsysv
@@ -33,6 +33,3 @@
manipulating the numerous symbolic links in /etc/rc.d). Unless you
specify a runlevel or runlevels on the command line (see the man
page), ntsysv configures the current runlevel (5 if you're using X).
- Requires:
- - chkconfig = %{version}-%{release}
-
More information about the MeeGo-commits
mailing list