ALT Linux repositórios
Group :: Sistema/Servidores
RPM: nut
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: nut-2.0.5-alt-upsdrvctl-list.patch
Download
Download
--- nut-2.0.5/drivers/upsdrvctl.c.alt-upsdrvctl-list 2007-07-27 13:20:47 +0400
+++ nut-2.0.5/drivers/upsdrvctl.c 2007-07-27 13:29:30 +0400
@@ -276,16 +276,33 @@ static void start_driver(const ups_t *up
forkexec(dfn, argv, ups);
}
+static void list_driver(const ups_t *ups)
+{
+ char dfn[SMALLBUF];
+ int ret;
+ struct stat fs;
+
+ snprintf(dfn, sizeof(dfn), "%s/%s", driverpath, ups->driver);
+ ret = stat(dfn, &fs);
+
+ if (ret < 0)
+ upslogx(LOG_ERR, "stat: %s: %m", dfn);
+ else
+ puts(dfn);
+}
+
static void help(const char *progname)
{
printf("Starts and stops UPS drivers via ups.conf.\n\n");
- printf("usage: %s [OPTIONS] (start | stop | shutdown) [<ups>]\n\n", progname);
+ printf("usage: %s [OPTIONS] (list | start | stop | shutdown) [<ups>]\n\n", progname);
printf(" -h display this help\n");
printf(" -r <path> drivers will chroot to <path>\n");
printf(" -t testing mode - prints actions without doing them\n");
printf(" -u <user> drivers started will switch from root to <user>\n");
printf(" -D raise debugging level\n");
+ printf(" list list all UPS drivers in ups.conf\n");
+ printf(" list <ups> only list driver for UPS <ups>\n");
printf(" start start all UPS drivers in ups.conf\n");
printf(" start <ups> only start driver for UPS <ups>\n");
printf(" stop stop all UPS drivers in ups.conf\n");
@@ -448,6 +465,9 @@ int main(int argc, char **argv)
nut_debug_level = 2;
}
+ if (!strcmp(argv[0], "list"))
+ command = &list_driver;
+
if (!strcmp(argv[0], "start"))
command = &start_driver;