aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-05-15 12:50:50 +0300
committerSergey Poznyakoff <gray@gnu.org>2018-05-15 13:04:59 +0300
commitd0004608cb066135457dffafec10926d43f30eab (patch)
treeba8179347ffcb5cf1aea265cb97e94fcfb0f7970 /src
parentb5f4388a2da1b94ce8c8e45a990fd51b2f52dae4 (diff)
downloadgenrc-d0004608cb066135457dffafec10926d43f30eab.tar.gz
genrc-d0004608cb066135457dffafec10926d43f30eab.tar.bz2
Add documentation.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am20
-rw-r--r--src/com_reload.c6
-rw-r--r--src/com_restart.c6
-rw-r--r--src/com_start.c6
-rw-r--r--src/com_status.c6
-rw-r--r--src/com_stop.c6
-rw-r--r--src/err.c6
-rw-r--r--src/genrc.8291
-rw-r--r--src/genrc.c6
-rw-r--r--src/genrc.h6
-rw-r--r--src/match_exact.c6
-rw-r--r--src/match_glob.c6
-rw-r--r--src/match_pcre.c6
-rw-r--r--src/match_regex.c6
-rw-r--r--src/pid_config.c6
-rw-r--r--src/pid_file.c6
-rw-r--r--src/pid_grep.c6
-rw-r--r--src/pid_proc.c6
-rw-r--r--src/pid_ps.c6
-rw-r--r--src/pidfrom.c6
-rw-r--r--src/pidlist.c6
-rw-r--r--src/procscan.c6
-rw-r--r--src/sentinel.c6
23 files changed, 436 insertions, 1 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index fe24f3e..f78a979 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,20 @@
-bin_PROGRAMS = genrc
+# This file is part of genrc.
+# Copyright (C) 2018 Sergey Poznyakoff.
+#
+# Genrc is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# Genrc 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 genrc. If not, see <http://www.gnu.org/licenses/>.
+
+sbin_PROGRAMS = genrc
genrc_SOURCES = \
genrc.c\
genrc.h\
@@ -30,3 +46,5 @@ if COND_PCRE
AM_CPPFLAGS += -DHAVE_PCRE=1
endif
+dist_man_MANS=genrc.8
+
diff --git a/src/com_reload.c b/src/com_reload.c
index 7ff1206..fd12e7d 100644
--- a/src/com_reload.c
+++ b/src/com_reload.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
int
diff --git a/src/com_restart.c b/src/com_restart.c
index b3588a1..1b47277 100644
--- a/src/com_restart.c
+++ b/src/com_restart.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
int
diff --git a/src/com_start.c b/src/com_start.c
index 73bb2ec..93c324e 100644
--- a/src/com_start.c
+++ b/src/com_start.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
void
diff --git a/src/com_status.c b/src/com_status.c
index f68c6ef..e0e68c7 100644
--- a/src/com_status.c
+++ b/src/com_status.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
int
diff --git a/src/com_stop.c b/src/com_stop.c
index 5227358..1cb4452 100644
--- a/src/com_stop.c
+++ b/src/com_stop.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
static void
diff --git a/src/err.c b/src/err.c
index 539a7b8..64731f3 100644
--- a/src/err.c
+++ b/src/err.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
char *progname = "genrc";
diff --git a/src/genrc.8 b/src/genrc.8
new file mode 100644
index 0000000..1255b45
--- /dev/null
+++ b/src/genrc.8
@@ -0,0 +1,291 @@
+.\" This file is part of genrc.
+.\" Copyright (C) 2018 Sergey Poznyakoff.
+.\"
+.\" Genrc is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 3, or (at your option)
+.\" any later version.
+.\"
+.\" Genrc 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 genrc. If not, see <http://www.gnu.org/licenses/>.
+.TH GENRC 8 "May 15, 2018" "GENRC" "Genrc User Manual"
+.SH NAME
+genrc \- generic system initialization script helper
+.SH SYNOPSIS
+.nh
+\fBgenrc\fR\
+ [\fB\-h\fR]\
+ [\fB\-F\fR \fIPIDFILE\fR]\
+ [\fB\-P\fR \fISOURCE\fR]\
+ [\fB\-c\fR \fICOMMAND\fR]\
+ [\fB\-p\fR \fIPROGRAM\fR]\
+ [\fB\-t\fR \fISECONDS\fR]\
+ [\fB\-\-command=\fICOMMAND\fR]\
+ [\fB\-\-help\fR]\
+ [\fB\-\-no\-reload\fR]\
+ [\fB\-\-pid\-from=\fISOURCE\fR]\
+ [\fB\-\-pidfile=\fIPIDFILE\fR]\
+ [\fB\-\-program=\fIPROGRAM\fR]\
+ [\fB\-\-sentinel\fR]\
+ [\fB\-\-signal\-reload=\fISIG\fR]\
+ [\fB\-\-signal\-stop=\fISIG\fR]\
+ [\fB\-\-timeout=\fISECONDS\fR]\
+ [\fB\-\-usage\fR]\
+ {\
+ \fBstart\fR\
+ |\
+ \fBstop\fR\
+ |\
+ \fBrestart\fR\
+ |\
+ \fBreload\fR\
+ |\
+ \fBstatus\fR\
+ }
+.ad
+.hy
+.SH DESCRIPTION
+.B genrc
+is a generic helper program for writing system initialization
+scripts. Depending on the operation mode, it starts, stops,
+reconfigures or displays the status of a specific program.
+.PP
+The operation mode of the program is set by its only mandatory
+argument. Other program settings are specified via the command
+line options or environment variables. Most options have a
+corresponding environment variable. For example, the command line
+of the program to be run is given by the \fB\-\-command\fR option,
+or by the \fBGENRC_COMMAND\fR environment variable. If both the
+variable is set and the option is supplied, the later takes precedence
+over the former.
+.PP
+The \fB\-\-program\fR option or the \fBGENRC_PROGRAM\fR environment
+variable supplies the name of the program, which is used to determine
+whether the program is already running. If not supplied, the first
+word (in the shell sense) from \fICOMMAND\fR is used.
+.PP
+If \fB\-\-program\fR is given, but \fB\-\-command\fR is not, its value
+will be used as the command to run.
+.PP
+The program operation modes are:
+.SS start
+If given \fBstart\fR argument, \fBgenrc\fR runs the supplier
+command. Before, it checks if the program is not already running and
+refuses to start its second copy if so.
+.PP
+It is supposed that the program to be run will detach from the
+controlling terminal and continue running in the background (i.e. it
+is a \fIdaemon\fR, in UNIX sense). If it is not the case, use the
+\fB\-\-sentinel\fR option. With this option, \fBgenrc\fR will start
+the command and will become daemon itself, controlling the execution
+of the program. It will exit when the command terminates. So long as
+the command runs, \fBgenrc\fR will pipe its standard output and error
+to syslog facility \fBdaemon\fR. The standard output will be logged
+with the priority \fBinfo\fR and the error with the priority
+\fBerr\fR.
+.PP
+If the \fB\-\-pidfile=\fIFILE\fR option is given together with
+\fB\-\-sentinel\fR, the PID of the subsidiary command will be stored
+in \fIFILE\fR. The file will be unlinked after the subsidiary command
+terminates.
+.SS status
+In \fBstatus\fR mode \fBgenrc\fR verifies if the \fICOMMAND\fR is
+already running and outputs its status on the standard output. To this
+effect, it uses an abstraction called \fIPID source\fR, which allows
+it to determine the PID of the program by its name of command line.
+.PP
+The default PID source is the Linux \fB/proc\fR filesystem (or, if it
+is not available, the output of \fBps -ef\fR), which is scanned for
+the name of the program (given by \fB\-\-program\fR or
+\fB\-\-command\fR options).
+.PP
+The source to use can be supplied with the \fB\-\-pid\-from\fR option
+(or the \fB\-\-pidfile option, which is equivalent to
+\fB\-\-pid\-from=FILE:\fR). See the section \fBPID SOURCES\fR for a
+detailed discussion of available sources.
+.SS stop
+In the \fBstop\fR mode \fBgenrc\fR stops the command by sending it
+\fBSIGTERM\fR (or another signal as supplied with the
+\fB\-\-signal\-stop\fR option). If the PID source returns multiple
+PIDs, by default only parent PID is selected. However, \fBgenrc\fR can
+be instructed to signal all PIDs instead (see the \fBa\fR flag in the
+description of \fBPROC\fR or \fBPS\fR PID source).
+.PP
+After sending the signal, the program will wait for all processes to
+terminate. It will report error if they don't terminate within 5
+seconds. This timeout can be changed using the \fB\-\-timeout\fR
+option.
+.SS restart
+Restarts the program. It is equivalent to running
+.B genrc stop
+immediately followed by
+.BR "genrc start" .
+.SS reload
+Attempt to reload (or reconfigure) the program by sending it the
+\fBSIGHUP\fR signal (or another signal, as given with the
+\fB\-\-signal\-reload\fR option). The \fB\-\-no\-reload\fR or
+\fB\-\-signal\-reload=0\fR option disables this behavior, making
+this mode equivalent to
+.BR "genrc restart" .
+.SH EXAMPLE
+Following is a sample \fBrc.ntpd\fR file for Slackware:
+.sp
+.EX
+#! /bin/sh
+PIDFILE=/var/run/ntpd.pid
+exec /sbin/genrc \\
+ \-\-command="/usr/sbin/ntpd \-g \-p $PIDFILE" \\
+ \-\-no\-reload \\
+ \-\-signal\-stop=SIGHUP \\
+ \-\-pid\-from="FILE:$PIDFILE" "$@"
+.EE
+.SH OPTIONS
+.TP
+\fB\-c\fR, \fB\-\-command=\fICOMMAND\fR
+Command line to run.
+.TP
+\fB\-F\fR, \fB\-\-pidfile=\fINAME\fR
+Name of the PID file (same as \fB\-\-pid\-from=FILE:\fINAME\fR)
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Display a short help list.
+.TP
+\fB\-\-no\-reload\fR
+Makes \fBreload\fR equivalent to \fBrestart\fR.
+.TP
+\fB\-p\fR, \fB\-\-program=\fIPROGRAM\fR
+Name of the program to run.
+.TP
+\fB\-P\fR, \fB\-\-pid\-from=\fISOURCE\fR
+Where to look for PIDs of the running programs.
+.TP
+\fB\-\-sentinel\fR
+\fIPROGRAM\fR runs in foreground; disconnect from the controlling
+terminal, run it and act as a sentinel.
+.TP
+\fB\-\-signal\-reload=\fISIG\fR
+Signal to send on reload (default: \fBSIGHUP\fR). Setting it to 0 is
+equivalent to \fB\-\-no\-reload\fR.
+.TP
+\fB\-\-signal\-stop=\fISIG\fR
+Signal to send in order to terminate the program (default:
+\fBSIGTERM\fR).
+.TP
+\fB\-t\fR, \fB\-\-timeout=\fISECONDS\fR
+Time to wait for the program to start up or terminate.
+.TP
+\fB\-\-usage\fR
+Display a short usage summary.
+.TP
+\fB\-\-version\fR
+Display program version and exit.
+.SH PID SOURCES
+.TP
+\fBFILE:\fIFILENAME\fR
+Read PID from the file \fIFILENAME\fR.
+.TP
+\fBCONFIG:\fILANG\fB:\fIFILENAME\fB:\fIFQRN\fR
+Name of the PID file is stored in relation \fIFQRN\fR of the configuration
+file \fIFILENAME\fR, written in language \fILANG\fR. Recognizable
+\fILANG\fR values are:
+.RS
+.TP
+.B BIND
+ISC BIND configuration file.
+.TP
+.B DHCPD
+ISC DHCPD configuration file.
+.TP
+.B GIT
+Git-style configuration file.
+.TP
+.B GRECS
+GRECS-style configuration file. This is a generalization of a
+structured configuration file format.
+.TP
+.B META1
+META1 configuration file.
+.TP
+.B PATH
+Configuration specified as fully-qualified keyword-value pairs
+(similar to \fB.Xdefaults\fR).
+.RE
+.TP
+\fBGREP:\fIFILE\fB:s/\fIRX\fB/\fIREPL\fB/[\fIFLAGS\fR][\fB;\fR...]
+Grep for the first line in \fIFILE\fR that matches \fIRX\fR. If found, process
+replace the matched portion according to \fIREPL\fR and \fIFLAGS\fR. Use
+the resulting string as PID. More sed expressions can be supplied,
+separated with semicolons.
+.TP
+\fBPROC\fR[\fB:\fR[\fIEXE\fR][\fB:\fIFLAGS\fR]]
+Look for matching program in \fB/proc/\fIPID\fB/*\fR. If \fIEXE\fR is
+not supplied or empty, program name from \fB\-\-program\fR will be
+used. \fIFLAGS\fR are:
+.RS
+.TP
+.B e
+exact match
+.TP
+.B g
+glob pattern match
+.TP
+.B x
+extended POSIX regexp match (default)
+.TP
+.B p
+PCRE match
+.TP
+.B i
+case-insensitive match
+.TP
+.B c
+match entire command line
+.TP
+.B r
+match real executable name (instead of argv0)
+.TP
+.B a
+signal all matching PIDs
+.RE
+.TP
+\fBPS:\fR[\fB:\fR[\fIEXE\fR][:\fIFLAGS\fR]]
+Look for matching program in the output of \fBps \-ef\fR. \fIEXE\fR
+and \fIFLAGS\fR are as described above.
+.SH ENVIRONMENT
+Influential environment variables and corresponding options:
+.sp
+.nf
+.ta 5n 35n
+.ul
+ \fBGENRC_COMMAND=\fICOMMAND\fR \fB\-\-command=\fICOMMAND\fR
+ \fBGENRC_PROGRAM=\fINAME\fR \fB\-\-program=\fINAME\fR
+ \fBGENRC_PID_FROM=\fISOURCE\fR \fB\-\-pid\-from=\fISOURCE\fR
+ \fBGENRC_TIMEOUT=\fISECONDS\fR \fB\-\-timeout=\fISECONDS\fR
+ \fBGENRC_SENTINEL=1\fR \fB\-\-sentinel\fR
+.fi
+.SH AUTHORS
+Sergey Poznyakoff
+.SH "BUG REPORTS"
+Report bugs to <gray@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2018 Sergey Poznyakoff
+.br
+.na
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+.br
+.ad
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+.\" Local variables:
+.\" eval: (add-hook 'write-file-hooks 'time-stamp)
+.\" time-stamp-start: ".TH [A-Z_][A-Z0-9_.\\-]* [0-9] \""
+.\" time-stamp-format: "%:B %:d, %:y"
+.\" time-stamp-end: "\""
+.\" time-stamp-line-limit: 20
+.\" end:
+
diff --git a/src/genrc.c b/src/genrc.c
index 64dd81a..ecc26fe 100644
--- a/src/genrc.c
+++ b/src/genrc.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
#include <sys/ioctl.h>
diff --git a/src/genrc.h b/src/genrc.h
index f782fd5..82e29d6 100644
--- a/src/genrc.h
+++ b/src/genrc.h
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include <config.h>
#include <stdlib.h>
#include <stdio.h>
diff --git a/src/match_exact.c b/src/match_exact.c
index 49be17f..2a2caf4 100644
--- a/src/match_exact.c
+++ b/src/match_exact.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
void
diff --git a/src/match_glob.c b/src/match_glob.c
index d2dfd71..23577ee 100644
--- a/src/match_glob.c
+++ b/src/match_glob.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
#define _GNU_SOURCE 1
#include <fnmatch.h>
diff --git a/src/match_pcre.c b/src/match_pcre.c
index 55c4714..dac61cf 100644
--- a/src/match_pcre.c
+++ b/src/match_pcre.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
#include <pcre.h>
diff --git a/src/match_regex.c b/src/match_regex.c
index fc666c9..b8549bf 100644
--- a/src/match_regex.c
+++ b/src/match_regex.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
static char *
diff --git a/src/pid_config.c b/src/pid_config.c
index b646cc0..0a10c4c 100644
--- a/src/pid_config.c
+++ b/src/pid_config.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
typedef struct grecs_node *(*GRECS_PARSER_FUNC)(const char *, int);
diff --git a/src/pid_file.c b/src/pid_file.c
index 344de12..6164463 100644
--- a/src/pid_file.c
+++ b/src/pid_file.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
struct file_pid_closure {
diff --git a/src/pid_grep.c b/src/pid_grep.c
index 8869a2d..76740ac 100644
--- a/src/pid_grep.c
+++ b/src/pid_grep.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
/*
diff --git a/src/pid_proc.c b/src/pid_proc.c
index e460dff..097c2ed 100644
--- a/src/pid_proc.c
+++ b/src/pid_proc.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
#include <glob.h>
#include <sys/stat.h>
diff --git a/src/pid_ps.c b/src/pid_ps.c
index 573304d..ff224da 100644
--- a/src/pid_ps.c
+++ b/src/pid_ps.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
struct ps_pid_closure {
diff --git a/src/pidfrom.c b/src/pidfrom.c
index ab1f623..d1fa627 100644
--- a/src/pidfrom.c
+++ b/src/pidfrom.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
struct genrc_pid_source {
diff --git a/src/pidlist.c b/src/pidlist.c
index cf47c2e..1dc5893 100644
--- a/src/pidlist.c
+++ b/src/pidlist.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
void *
diff --git a/src/procscan.c b/src/procscan.c
index 1425f6a..d51a7b9 100644
--- a/src/procscan.c
+++ b/src/procscan.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
struct flagdfn {
diff --git a/src/sentinel.c b/src/sentinel.c
index 0fe0714..55395b3 100644
--- a/src/sentinel.c
+++ b/src/sentinel.c
@@ -1,3 +1,9 @@
+/* This file is part of genrc
+Copyryght (C) 2018 Sergey Poznyakoff
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+*/
#include "genrc.h"
#include <unistd.h>
#include <fcntl.h>

Return to:

Send suggestions and report system problems to the System administrator.