You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.7 KiB

# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: package/.../nut/nut-2.6.5-upsd-foreground.patch
# Copyright (C) 2012 The OpenSDE Project
#
# More information can be found in the files COPYING and README.
#
# This patch file is dual-licensed. It is available under the license the
# patched project is licensed under, as long as it is an OpenSource license
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
# of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
# --- SDE-COPYRIGHT-NOTE-END ---
Description: Add option upsd to not detach from the controlling tty
This is needed to run upsd by a supervise service like daemontools,
runit.
The original default behavoir, which detaches from the controlling tty
and running in background has been preserved.
To run upsd in foreground you have to use the -f command option.
diff -ruN nut-2.6.5-orig/common/common.c nut-2.6.5/common/common.c
--- nut-2.6.5-orig/common/common.c 2012-07-31 19:38:58.000000000 +0200
+++ nut-2.6.5/common/common.c 2012-08-15 09:07:43.949002650 +0200
@@ -32,6 +32,7 @@
#include "nut_version.h"
const char *UPS_VERSION = NUT_VERSION_MACRO;
+ int foreground = 0;
int nut_debug_level = 0;
int nut_log_level = 0;
static int upslog_flags = UPSLOG_STDERR;
diff -ruN nut-2.6.5-orig/include/common.h nut-2.6.5/include/common.h
--- nut-2.6.5-orig/include/common.h 2012-07-31 19:38:56.000000000 +0200
+++ nut-2.6.5/include/common.h 2012-08-15 09:14:10.999949407 +0200
@@ -52,6 +52,9 @@
/* close ttys and become a daemon */
void background(void);
+/* do not detach from controlling tty and run in foreground */
+extern int foreground;
+
/* do this here to keep pwd/grp stuff out of the main files */
struct passwd *get_user_pwent(const char *name);
diff -ruN nut-2.6.5-orig/server/upsd.c nut-2.6.5/server/upsd.c
--- nut-2.6.5-orig/server/upsd.c 2012-07-31 19:38:58.000000000 +0200
+++ nut-2.6.5/server/upsd.c 2012-08-15 09:07:43.949002650 +0200
@@ -819,6 +819,7 @@
printf(" - reload: reread configuration files\n");
printf(" - stop: stop process and exit\n");
printf(" -D raise debugging level\n");
+ printf(" -f run in foreground\n");
printf(" -h display this help\n");
printf(" -r <dir> chroots to <dir>\n");
printf(" -q raise log level threshold\n");
@@ -936,6 +937,10 @@
nut_debug_level++;
break;
+ case 'f':
+ foreground = 1;
+ break;
+
case '4':
opt_af = AF_INET;
break;
@@ -1023,7 +1028,7 @@
/* handle upsd.users */
user_load();
- if (!nut_debug_level) {
+ if ((!nut_debug_level) && (!foreground)) {
background();
writepid(pidfn);
} else {