Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37494501
en ru br
Репозитории ALT
S:1.3.59-alt4
5.1: 1.3.29-alt2
4.1: 1.3.29-alt2
4.0: 1.3.29-alt2
3.0: 1.2.24-alt5
+backports:1.3.29-alt0.M30.1
www.altlinux.org/Changes

Группа :: Система/Настройка/Загрузка и инициализация
Пакет: chkconfig

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: chkconfig-1.2.24-alt-usage.patch
Скачать


diff -ur chkconfig-1.2.24~/chkconfig.c chkconfig-1.2.24/chkconfig.c
--- chkconfig-1.2.24~/chkconfig.c	Sat Jan 26 22:32:01 2002
+++ chkconfig-1.2.24/chkconfig.c	Sat Jan 26 22:41:35 2002
@@ -17,7 +17,8 @@
 
 #include "leveldb.h"
 
-static void usage(void) {
+__attribute__ ((__noreturn__))
+static void usage(int rc) {
     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"));
@@ -27,7 +28,7 @@
     fprintf(stderr, _("         %s --del <name>\n"), __progname);
     fprintf(stderr, _("         %s [--level <levels>] <name> %s)\n"), __progname, "<on|off|reset>");
 
-    exit(1);
+    exit(rc);
 }
 
 static void readServiceError(int rc, char * name) {
@@ -38,7 +39,7 @@
 		name, strerror(errno));
     }
 
-    exit(1);
+    exit(EXIT_FAILURE);
 }
 
 static void
@@ -292,7 +293,7 @@
     bindtextdomain("chkconfig","/usr/share/locale"); 
     textdomain("chkconfig"); 
 
-    if (argc < 1) usage();
+    if (argc < 1) usage(EXIT_FAILURE);
 
     optCon = poptGetContext("chkconfig", argc, argv, optionsTable, 0);
     poptReadDefaultConfig(optCon, 1);
@@ -301,39 +302,42 @@
 	fprintf(stderr, "%s: %s\n", 
 		poptBadOption(optCon, POPT_BADOPTION_NOALIAS), 
 		poptStrerror(rc));
-	exit(1);
+	exit(EXIT_FAILURE);
     }
 
+    if (help) usage(EXIT_SUCCESS);
+
     if (version) {
 	fprintf(stdout, _("%s version %s\n"), __progname, VERSION);
-	exit(0);
+	exit(EXIT_SUCCESS);
     }
 
-    if (help || argc == 1) usage();
+    if (argc == 1) usage(EXIT_FAILURE);
 
-    if ((listItem + addItem + delItem) > 1) {
-	fprintf(stderr, _("only one of --list, --add, or --del may be "
-		"specified\n"));
-	exit(1);
+    if ((listItem + addItem + delItem + (levels != 0)) > 1) {
+	fprintf(stderr, _("options --list, --add, --del and --level are mutually exclusive.\n"));
+	exit(EXIT_FAILURE);
     }
 
     if (addItem) {
 	char * name = (char *)poptGetArg(optCon);
 
 	if (!name || !*name || poptGetArg(optCon)) 
-	    usage();
+	    usage(EXIT_FAILURE);
 
 	return addService(name);
     } else if (delItem) {
 	char * name = (char *)poptGetArg(optCon);
 
-	if (!name || !*name || poptGetArg(optCon)) usage();
+	if (!name || !*name || poptGetArg(optCon))
+	    usage(EXIT_FAILURE);
 
 	return delService(name);
     } else if (listItem) {
 	char * item = (char *)poptGetArg(optCon);
 
-	if (item && poptGetArg(optCon)) usage();
+	if (item && poptGetArg(optCon))
+	    usage(EXIT_FAILURE);
 
 	return listService(item);
     } else {
@@ -343,7 +347,8 @@
 
 	if (levels) {
 	    where = parseLevels(levels, 0);
-	    if (where == -1) usage();
+	    if (where == -1)
+		usage(EXIT_FAILURE);
 	}
 
 	if (!state) {
@@ -362,7 +367,7 @@
 		if (rc > 1) {
 		    fprintf(stderr, _("only one runlevel may be specified for "
 			    "a chkconfig query\n"));
-		    exit(1);
+		    exit(EXIT_FAILURE);
 		}
 	    } 
 
@@ -374,10 +379,8 @@
 	else if (!strcmp(state, "reset"))
 	    return setService(name, where, -1);
 	else
-	    usage();
+	    usage(EXIT_FAILURE);
     }
 
-    usage();
-
-    return 1;
+    usage(EXIT_FAILURE);
 }
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin