Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package sysvinit for openSUSE:Factory checked in at 2026-09-24 22:55:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sysvinit (Old) and /work/SRC/openSUSE:Factory/.sysvinit.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sysvinit" Thu Sep 24 22:55:13 2026 rev:188 rq:1379681 version:3.18 Changes: -------- --- /work/SRC/openSUSE:Factory/sysvinit/sysvinit.changes 2025-02-14 19:19:07.750303211 +0100 +++ /work/SRC/openSUSE:Factory/.sysvinit.new.383539/sysvinit.changes 2026-09-24 22:55:15.189677106 +0200 @@ -1,0 +2,24 @@ +Tue Sep 15 12:19:09 UTC 2026 - Dr. Werner Fink <[email protected]> + +- Update to sysvinit 3.18 + * This release fixes builds with man pages when language-specific + directories are not available. + * Removed unused "check" command from Makefile. + * Fix version number in init.c and changelog. + * Remove shell script which has a license conflict from contrib directory. + * Clean up of inittab manual page (typos and syntax) by Bjarni Ingi Gislason. + * Clean up of init manual page (typos and syntax) by Bjarni Ingi Gislason. + * Improved systemd to sysv unit-to-script conversion. Provided by avivdaum. + * Remove some debug/status messages when reading the /etc/inittab.d/ directory. + * Document how init reads the inittab.d directory in the inittab manual page. + * Removed unused variable/code from sulogin + * Some manual page clean-up for init to fix typos and formatting. + * Small change to optimize getting string length in a loop in init. + * Small fixes for formatting and typos in runlevel manual page. +- Update to startpar 0.67 + * This release introduces no feature changes, but does clean up + compiler issues with GCC 15 and newer. Following the compiler's + C standards we now use stdbool.h instead of defining our own + boolean type. + +------------------------------------------------------------------- Old: ---- startpar-0.65.tar.xz startpar-0.65.tar.xz.sig sysvinit-3.14.tar.xz sysvinit-3.14.tar.xz.sig New: ---- startpar-0.67.tar.xz startpar-0.67.tar.xz.sig sysvinit-3.18.tar.xz sysvinit-3.18.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sysvinit.spec ++++++ --- /var/tmp/diff_new_pack.QarcJ9/_old 2026-09-24 22:55:16.484731227 +0200 +++ /var/tmp/diff_new_pack.QarcJ9/_new 2026-09-24 22:55:16.485731269 +0200 @@ -1,7 +1,7 @@ # # spec file for package sysvinit # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -26,8 +26,8 @@ Name: sysvinit %define KPVER 2.23 -%define SIVER 3.14 -%define START 0.65 +%define SIVER 3.18 +%define START 0.67 Version: %{SIVER} Release: 0 Summary: SysV-Style init @@ -38,11 +38,11 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build #!BuildIgnore: sysvinit-tools URL: https://savannah.nongnu.org/projects/sysvinit/ -Source0: https://github.com/slicer69/sysvinit/releases/download/%{SIVER}/sysvinit-%{SIVER}.tar.xz +Source0: https://codeberg.org/thejessesmith/sysvinit/releases/download/%{SIVER}/sysvinit-%{SIVER}.tar.xz Source1: https://github.com/bitstreamout/killproc/archive/v%{KPVER}.tar.gz#/killproc-%{KPVER}.tar.gz -Source2: https://download.savannah.nongnu.org/releases/sysvinit/startpar-%{START}.tar.xz -Source3: https://github.com/slicer69/sysvinit/releases/download/%{SIVER}/sysvinit-%{SIVER}.tar.xz.sig -Source4: https://download.savannah.nongnu.org/releases/sysvinit/startpar-%{START}.tar.xz.sig +Source2: https://codeberg.org/thejessesmith/startpar/releases/download/%{START}/startpar-%{START}.tar.xz +Source3: https://codeberg.org/thejessesmith/startpar/releases/download/%{START}/startpar-%{START}.tar.xz.sig +Source4: https://codeberg.org/thejessesmith/sysvinit/releases/download/%{SIVER}/sysvinit-%{SIVER}.tar.xz.sig Source5: %{name}.keyring Patch0: %{name}-2.90.dif Patch2: %{name}-2.88dsf-suse.patch ++++++ startpar-0.65.tar.xz -> startpar-0.67.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/startpar/CHANGELOG new/startpar/CHANGELOG --- old/startpar/CHANGELOG 2020-07-07 02:04:06.000000000 +0200 +++ new/startpar/CHANGELOG 2025-09-13 15:00:36.000000000 +0200 @@ -1,3 +1,18 @@ +startpar 0.67 +=============== + +* Supress warnings and keep going on FreeBSD when /proc filesystem is not available. + +* Fix compiler error with GCC 15 which prevents use of internal "boolean" type. + Patch provided by Mark Hindley. + + +startpar 0.66 +=============== + +* Fix typos and syntax in manual page. + + startpar 0.65 =============== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/startpar/Makefile new/startpar/Makefile --- old/startpar/Makefile 2020-07-07 02:04:06.000000000 +0200 +++ new/startpar/Makefile 2025-09-13 15:00:36.000000000 +0200 @@ -1,4 +1,4 @@ -VERSION = 0.65 +VERSION = 0.67 PACKAGE=startpar PROJECT=sysvinit #ISSUSE = -DSUSE @@ -27,9 +27,9 @@ endif CC ?= gcc -CFLAGS = $(RPM_OPT_FLAGS) $(COPTS) -D_GNU_SOURCE $(INC) -pipe $(OPT) +CFLAGS += $(RPM_OPT_FLAGS) $(COPTS) -D_GNU_SOURCE $(INC) -pipe $(OPT) -WARNINGS = -Wall -W -Wformat -Werror=format-security +WARNINGS += -Wall -W -Wformat -Werror=format-security CFLAGS += $(WARNINGS) # Enable large file support on GNU/Hurd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/startpar/README new/startpar/README --- old/startpar/README 2020-07-07 02:04:06.000000000 +0200 +++ new/startpar/README 2025-09-13 15:00:36.000000000 +0200 @@ -3,7 +3,9 @@ This program starts runlevel scripts (or programs) in parallel. -The latest version of the source is available from -http://savannah.nongnu.org/projects/sysvinit +The program can be built and installed on most systems that have +a build environment (compiler and make support) by running + + make + make install -Please submit patches and bug reports there. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/startpar/proc.c new/startpar/proc.c --- old/startpar/proc.c 2020-07-07 02:04:06.000000000 +0200 +++ new/startpar/proc.c 2025-09-13 15:00:36.000000000 +0200 @@ -78,7 +78,9 @@ *prcs_blked = 0; if ((stat = fopen("/proc/stat", "r")) == (FILE*)0) { + #ifndef __FreeBSD__ fprintf(stderr, "ERROR: could not open /proc/stat: %s\n", strerror(errno)); + #endif return 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/startpar/startpar.1 new/startpar/startpar.1 --- old/startpar/startpar.1 2020-07-07 02:04:06.000000000 +0200 +++ new/startpar/startpar.1 2025-09-13 15:00:36.000000000 +0200 @@ -57,11 +57,10 @@ .IR boot | start | stop ] .br .B startpar -.RB [ -f ] +.RB [ \-f ] .br .B startpar -.RB [ -v ] -.br +.RB [ \-v ] .SH DESCRIPTION startpar is used to run multiple run\-level scripts in parallel. @@ -69,8 +68,9 @@ .B CPU can be set with the .B \-p -option, the default is full parallelism. An argument to all of -the scripts can be provided with the +option, +the default is full parallelism. +An argument to all of the scripts can be provided with the .B \-a option. Processes blocked by pending @@ -83,34 +83,41 @@ .EQ weight = (nblocked times iorate) / 1000 .EN -will be subtracted from the total number of processes which could be -started, where nblocked is the number of processes currently blocked +will be subtracted from the total number of processes +which could be started, +where nblocked is the number of processes currently blocked by pending I/O. -The output of each script is buffered and written when the script -exits, so output lines of different scripts won't mix. You can -modify this behaviour by setting a timeout. +The output of each script is buffered +and written +when the script exits, +so output lines of different scripts won't mix. +You can modify this behaviour by setting a timeout. The timeout set with the .B \-t -option is used as buffer timeout. If the output buffer of a -script is not empty and the last output was +option is used as buffer timeout. +If the output buffer of a script is not empty +and the last output was .I timeout -seconds ago, startpar will flush the buffer. +seconds ago, +startpar will flush the buffer. The .B \-T -option timeout works more globally. If no output is printed for -more than +option timeout works more globally. +If no output is printed for more than .I global_timeout -seconds, startpar will flush the buffer of the script with -the oldest output. Afterwards it will only print output of this -script until it is finished. +seconds, +startpar will flush the buffer of the script with the oldest output. +Afterwards it will only print output of this script +until it is finished. -When the +When the .B \-n -flag is used, output from a running job is prefixed with the name -of the program or script being run. +flag is used, +output from a running job is prefixed with the name of the program +or script being run. The .B \-M @@ -118,7 +125,8 @@ .B startpar into a .BR make (1) -like behaviour. This option takes three different arguments: +like behaviour. +This option takes three different arguments: .IR boot ", " start ", and " stop for reading .IR .depend.boot " or " .depend.start " or " .depend.stop @@ -131,20 +139,30 @@ The .B \-e option allows the user to set the location of the system's etc configuration -directory. The default is to use /etc. Using \-e we can use alternative locations +directory. +The default is to use /etc. +Using \-e +we can use alternative locations such as /usr/local/etc. -The +The .B \-f -option causes startpar to copy standard input (stdin) to standard output (stdout) -until startpar reaches the end of input or the process is killed. When \-f -is used no programs are started and other parameters on the command line are -ignored. This option is only kept for legacy purposes. +option causes startpar to copy standard input +(stdin) +to standard output +(stdout) +until startpar reaches the end of input +or the process is killed. +When \-f is used +no programs are started +and other parameters on the command line are ignored. +This option is only kept for legacy purposes. The .B \-v -option tells startpar to print its name and version number. When the -version flag is used, all other command line parameters are ignored. +option tells startpar to print its name and version number. +When the version flag is used, +all other command line parameters are ignored. The version number will be printed and startpar then immediately exits. .SH FILES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/startpar/startpar.c new/startpar/startpar.c --- old/startpar/startpar.c 2020-07-07 02:04:06.000000000 +0200 +++ new/startpar/startpar.c 2025-09-13 15:00:36.000000000 +0200 @@ -53,6 +53,7 @@ #include <time.h> #include <fcntl.h> #include <errno.h> +#include <stdbool.h> #include <string.h> #include <stdlib.h> #include <unistd.h> @@ -92,7 +93,6 @@ __result; })) #endif -typedef enum _boolean {false, true} boolean; extern char *optarg; extern int optind; @@ -106,7 +106,7 @@ } sz; static sig_atomic_t wzok; static char *arg; -static boolean isstart; +static bool isstart; static struct sigaction sa; static struct timeval glastio; static struct timeval now; @@ -333,7 +333,7 @@ glastio = now; } -static int checksystem(const int par, const boolean start, const boolean limit) +static int checksystem(const int par, const bool start, const bool limit) { const int pg_size = sysconf(_SC_PAGESIZE); #ifdef __FreeBSD__ @@ -388,12 +388,12 @@ return newpar; } -static inline int checklimit(const int par, const boolean start) +static inline int checklimit(const int par, const bool start) { return checksystem(par, start, true); } -static inline int checkpar(const int par, const boolean start) +static inline int checkpar(const int par, const bool start) { return checksystem(par, start, false); } @@ -486,8 +486,10 @@ if (p->fd <= 0) { p->fd = 0; + #ifndef __FreeBSD__ perror("getpt"); fprintf(stderr, "could not get pty for %s\n", p->name); + #endif } else if ((m = ptsname(p->fd)) == 0 || grantpt(p->fd) || unlockpt(p->fd)) { ++++++ sysvinit-3.14.tar.xz -> sysvinit-3.18.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/Makefile new/sysvinit-3.18/Makefile --- old/sysvinit-3.14/Makefile 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/Makefile 2026-03-26 15:45:44.000000000 +0100 @@ -43,4 +43,3 @@ @cp -R $(SOURCES) $(TMP)/$(PACKAGE)-$(VERSION)/ @chmod -R a+r,u+w,og-w $@ @find $@ -type d | xargs -r chmod a+rx,u+w,og-w - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/contrib/sysd2v.sh new/sysvinit-3.18/contrib/sysd2v.sh --- old/sysvinit-3.14/contrib/sysd2v.sh 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/contrib/sysd2v.sh 1970-01-01 01:00:00.000000000 +0100 @@ -1,551 +0,0 @@ -#!/bin/sh -# sysd2v v0.3 -- systemd unit to sysvinit script converter -# Copyright (C) 2019 Trek http://www.trek.eu.org/devel/sysd2v -# distributed under the terms of the GNU General Public License 3 - - -nl=" -" - -# read a systemd unit file and set variables named ini_{section}_{key} -# usage: read_unit filename instance -# filename service unit configuration file, '-' to read from stdin -# instance instance name for template units -read_unit() -{ - filename=$1 - instance=$2 - - if [ "$filename" != - ] - then - inifile_unit_name=${filename##*/} - inifile_unit_name=${inifile_unit_name%.*} - fi - - rm_comm='/^[#;]/d' - concat=':l; /\\$/ { N; s/[[:space:]]*\\\n/ /; tl }' - subst_inst="s/%[Ii]/$instance/g" - unit=$( - cat "$filename" | - sed "$rm_comm" | - sed "$concat;$subst_inst" - ) - section_list=$( - printf %s "$unit" | - sed -n 's/^\[\([[:alnum:]]\+\)\].*/\1/p' - ) - oldifs=$IFS - IFS=$nl - - for section in $section_list - do - get_sect='/^\['"$section"'\]/,/^\[.\+\]/' - key_list=$( - printf %s "$unit" | - sed -n "$get_sect"'s/^\([[:alnum:]]\+\)[[:space:]]*=.*/\1/p' | - sort -u - ) - - for key in $key_list - do - val=$( - printf %s "$unit" | - sed -n "$get_sect"'s/^'"$key"'[[:space:]]*=[[:space:]]*\(.*\)/\1/p' - ) - var=$( - echo "${section}_$key" | - tr '[:upper:]' '[:lower:]' - ) - eval ini_$var=\$val - [ -n "$debug" ] && echo "ini_$var=$val" >&2 - done - done - - IFS=$oldifs -} - - -# read a systemd configuration value and write its prefix to stdout -# usage: get_prefix val -# val systemd configuration value -get_prefix () { printf %s "$1" | sed -n 's/^\([-@:+!|]*\).*/\1/p'; } - - -# read a boolean value and returns true or false -# usage: is_true val -# val boolean value -is_true () { case "$1" in 1|[Oo][Nn]|[Tt]*|[Yy]*) true;; *) false; esac } - - -# read systemd services list and write LSB facilities to stdout -# usage: get_provides services -# services list of service units -get_provides () -{ - lst= - for dep in $1 - do - lst=${lst:+$lst }${dep%.service} - done - printf %s "$lst" -} - - -# read systemd units list and write LSB facilities to stdout -# usage: get_depends dependencies [ignores] -# dependencies list of required units -# ignores facilities to ignore -get_depends () -{ - lst= - for dep in $1 - do - d= - case $dep in - local-fs-pre.target) d=mountkernfs;; - time-sync.target) d=\$time;; - systemd-modules-load.service) d=kmod;; - local-fs.target|network-pre.target) d=\$local_fs;; - systemd-sysctl.service) d=procps;; - network.target|network-online.target|systemd-networkd.service) - d=\$network;; - nss-lookup.target) d=\$named;; - rpcbind.target|remote-fs-pre.target) d=\$portmap;; - remote-fs.target|sysinit.target|basic.target) d=\$remote_fs;; - syslog.service) d=\$syslog;; - boot-complete.target|multi-user.target|default.target) d=\$all;; - *.service) d=${dep%.service};; - *) echo "WARNING: unsupported target '$dep'" >&2 - esac - - ign=${2:+$2 }$lst - [ -z "$ign" -o -n "${ign%%*"$d"*}" ] && - lst=${lst:+$lst }$d - done - - printf %s "$lst" -} - - -# read LSB facilities list and write runlevel to stdout -# usage: get_runlevel facilities -# facilities list of required facilities -get_runlevel () -{ - case $1 in - *\$remote_fs*) echo 2 3 4 5;; - *) echo S - esac -} - - -# write a list of environment files to be executed -# usage: write_env list -# list files separated by newlines, with prefix (-) -write_env () -{ - oldifs=$IFS - IFS=$nl - - for env in $1 - do - pre=$(get_prefix "$env") - noerr= - - [ -n "$pre" -a -z "${pre%%*-*}" ] && noerr="[ -r ${env#$pre} ] && " - - printf '%s\n' "$noerr. ${env#$pre}" - done - - IFS=$oldifs -} - - -# write an environment variable containing paths -# usage: write_path name prefix list -# name name of the environment variable -# prefix path prefix to append directories -# list paths separated by spaces or newlines -write_path () -{ - lst= - for dir in $3 - do - lst=${lst:+$lst:}$2/$dir - done - - [ -z "$3" ] || printf '%s=%s\n' $1 $lst -} - - -# write a list of directories to be created -# usage: write_install prefix list [user [group [mode]]] -# prefix path prefix to append directories -# list paths separated by spaces or newlines -# user user ownership -# group group ownership -# mode permission mode -write_install () -{ - for dir in $2 - do - printf ' install -d %s%s/%s || return 2\n' \ - "${3:+-o $3 }${4:+-g $4 }${5:+-m $5 }" "$1" "$dir" - done -} - - -# write a list of commands applying systemd executable prefixes -# usage: write_commands list [run [runpriv]] -# list commands separated by newlines, with prefixes (-@:+!) -# run command line to run each command (nice, chrt, ...) -# runpriv command line to set privileges (runuser, ...) -write_commands () -{ - oldifs=$IFS - IFS=$nl - - for cmd in $1 - do - pre=$(get_prefix "$cmd") - beg=$3 - end=' || return 2' - - if [ -n "$pre" ] - then - [ -z "${pre%%*-*}" ] && end= - [ -z "${pre%%*[+!]*}" ] && beg= - [ -z "${pre%%*[@:]*}" ] && - echo "WARNING: unsupported exec prefix '$pre'" >&2 - fi - - printf ' %s\n' "$2$beg${cmd#$pre}$end" - done - - IFS=$oldifs -} - - -# read a list of commands separated by newlines and write an override function -# usage: write_function name [commands] -# name function name (start_cmd, stop_cmd, ...) -# commands list of commands, read from stdin if omitted -write_function () -{ - lst=${2-$(cat)} - - [ -n "$lst" ] || return - [ "$lst" = : ] && printf "do_${1}_override () :\n\n" && return - - end=' true\n' - [ -z "${lst%%*|| return [0-9]}" -o -z "${lst%%*|| return \$?}" ] && end= - printf "do_${1}_override ()\n{\n%s\n$end}\n\n" "$lst" -} - - -# write an init-d-script file starting from the ini_* vars (see read_unit) -# usage: write_init servicename instance -# servicename name of the service provided -# instance instance name for template units -write_init () -{ - name=$1 - instance=$2 - - if [ "${name%@}" != "$name" ] - then - name=$name$instance - fi - - daemon_pre=$(get_prefix "$ini_service_execstart") - daemon=${ini_service_execstart#$daemon_pre} - - if [ "${daemon%%[[:space:]]*}" != "$daemon" ] - then - daemon_args=${daemon#*[[:space:]]} - daemon=${daemon%%[[:space:]]*} - fi - - pidfile=$ini_service_pidfile - - if [ -n "$ini_service_user" ] - then - start_args="--user $ini_service_user" - [ -n "$daemon_pre" -a -z "${daemon_pre%%*[+!]*}" ] || - start_args="$start_args --chuid $ini_service_user" - stop_args="--user $ini_service_user" - runprivstart="runuser -u $ini_service_user -- " - is_true "$ini_service_permissionsstartonly" || runpriv=$runprivstart - fi - - cls=$ini_service_ioschedulingclass - pri=$ini_service_ioschedulingpriority - [ -n "$cls$pri" ] && - start_args="$start_args --iosched ${cls:-best-effort}${pri:+:$pri}" && - run="ionice ${cls:+-c $cls }${pri:+-n $pri }" - - pol=$ini_service_cpuschedulingpolicy - pri=$ini_service_cpuschedulingpriority - [ -n "$pol$pri" ] && - start_args="$start_args --procsched ${pol:-other}${pri:+:$pri}" && - run="${run}chrt ${pol:+--$pol }${pri:-0} " - - [ -n "$ini_service_nice" ] && - start_args="$start_args --nicelevel $ini_service_nice" && - run="${run}nice -n $ini_service_nice " - - pre=$(get_prefix "$ini_service_workingdirectory") - workdir=${ini_service_workingdirectory#$pre} - [ "$workdir" = '~' ] && workdir=\~$ini_service_user - [ -n "$workdir" ] && - start_args="$start_args --chdir $workdir" && - chdir="${pre}cd $workdir" - - if [ -z "${service_type:=$ini_service_type}" ] - then - if [ -n "$ini_service_busname" ] - then - service_type=dbus - elif [ -n "$ini_service_execstart" ] - then - service_type=simple - else - service_type=oneshot - fi - fi - - if [ "$service_type" != forking ] - then - start_args="$start_args --background" - [ -z "$pidfile" -a "$ini_service_killmode" != none ] && - start_args="$start_args --make-pidfile" && - pidfile="/var/run/$name-sysd2v.pid" - fi - - if [ "$service_type" = notify ] - then - start_args="$start_args --notify-await" - timeout=${ini_service_timeoutstartsec:-$ini_service_timeoutsec} - timeout=${timeout%s} - [ -n "${timeout#60}" ] && - start_args="$start_args --notify-timeout $timeout" - [ -n "$timeout" -a -z "${timeout%%*[^0-9]*}" ] && - echo "WARNING: unsupported timeout '$timeout'" >&2 - elif [ "$service_type" = dbus ] - then - : TODO - fi - - signal=${ini_service_killsignal#SIG} - timeout=${ini_service_timeoutstopsec:-$ini_service_timeoutsec} - timeout=${timeout%s} - [ -n "${signal#TERM}" -o -n "${timeout#90}" ] && - stop_args="$stop_args --retry=${signal:-TERM}/${timeout:-90}/KILL/5" - - limitnofile=$ini_service_limitnofile - [ "$limitnofile" = infinity ] && limitnofile=unlimited - - need_install=$ini_service_runtimedirectory - need_install=$need_install$ini_service_statedirectory - need_install=$need_install$ini_service_cachedirectory - need_install=$need_install$ini_service_logsdirectory - need_install=$need_install$ini_service_configurationdirectory - - need_do_start=$ini_service_execstartpre$ini_service_execstartpost - need_do_start=$need_do_start$need_install - - execstop=$ini_service_execstop - - if [ "$service_type" != oneshot ] - then - [ "$pidfile" = "/var/run/${daemon##*/}.pid" ] && unset pidfile - [ "$name" = "${daemon##*/}" ] && unset name - - [ -n "$daemon_args" -a -z "${daemon_args%%*[\"\\]*}" ] && - echo "WARNING: DAEMON_ARGS needs to be escaped" >&2 - errcheck=' || return $?' - - if [ -n "$daemon_pre" ] - then - [ -z "${daemon_pre%%*-*}" ] && errcheck= - [ -z "${daemon_pre%%*[@:]*}" ] && - echo "WARNING: unsupported exec prefix '$daemon_pre'" >&2 - fi - - # TODO: test if already running before start (pretest="+do_status_cmd") - [ -n "$need_do_start" -o -z "$errcheck" ] && - execstart="-+do_start_cmd$errcheck" - - errcheck=' || return $?' - [ -n "$execstop" ] && errcheck= - [ -n "$execstop$ini_service_execstoppost" -a \ - "$ini_service_killmode" != none ] && - killstop="-do_stop_cmd$errcheck" - - [ -n "$timeout" -a -z "${timeout%%*[^0-9]*}" ] && - echo "WARNING: unsupported timeout '$timeout'" >&2 - else - daemon=none - pidfile=none - : ${name:=SERVICE_NAME} - unset daemon_args start_args stop_args - execstart=$ini_service_execstart - runstart=$run - fi - - need_do_start=$need_do_start$execstart - start_args=${start_args# } - stop_args=${stop_args# } - - aliases=$(get_provides "$ini_install_alias") - - [ -z "$ini_unit_defaultdependencies" ] || - is_true "$ini_unit_defaultdependencies" && - defdep=sysinit.target - - req_start=$(get_depends "$ini_unit_requires $defdep") - should_start=$(get_depends "$ini_unit_wants $ini_unit_after" "$req_start") - - default_start=$(get_runlevel "$req_start $should_start") - [ "$default_start" = S ] && default_stop='0 6' || default_stop='0 1 6' - [ -z "$execstop$ini_service_execstoppost" ] && - [ "$service_type" = oneshot -o "$ini_service_killmode" = none ] && - default_stop= - - [ "$default_start" = S ] && ignore=\$remote_fs - start_before=$(get_depends "$ini_unit_requiredby $ini_install_wantedby - $ini_unit_before" "$req_start $should_start \$all $ignore") - - cat <<EOF -#!/bin/sh -# Generated by sysd2v v0.3 -- http://www.trek.eu.org/devel/sysd2v -# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing. -if [ true != "\$INIT_D_SCRIPT_SOURCED" ] ; then - set "\$0" "\$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script -fi -### BEGIN INIT INFO -# Provides: ${name:-${daemon##*/}}${aliases:+ $aliases} -# Required-Start: $req_start -# Required-Stop: ${default_stop:+$req_start} -${should_start:+# Should-Start: $should_start -${default_stop:+# Should-Stop: $should_start -}}${start_before:+# X-Start-Before: $start_before -${default_stop:+# X-Stop-After: $start_before -}}# Default-Start: $default_start -# Default-Stop: $default_stop -# Description: ${ini_unit_description:-SERVICE_DESCRIPTION} -### END INIT INFO -EOF - - if [ -n "$ini_service_environment$ini_service_environmentfile$need_install" ] - then - echo set -a - write_path RUNTIME_DIRECTORY /run "$ini_service_runtimedirectory" - write_path STATE_DIRECTORY /var/lib "$ini_service_statedirectory" - write_path CACHE_DIRECTORY /var/cache "$ini_service_cachedirectory" - write_path LOGS_DIRECTORY /var/log "$ini_service_logsdirectory" - write_path CONFIGURATION_DIRECTORY /etc \ - "$ini_service_configurationdirectory" - printf '%s' "${ini_service_environment:+$ini_service_environment$nl}" - write_env "$ini_service_environmentfile" - printf 'set +a\n\n' - fi - - cat <<EOF -${name:+DESC=\"$name\" -}DAEMON=$daemon -${daemon_args:+DAEMON_ARGS=\"$daemon_args\" -}${pidfile:+PIDFILE=$pidfile -}${start_args:+START_ARGS=\"$start_args\" -}${stop_args:+STOP_ARGS=\"$stop_args\" -}${limitnofile:+ulimit -n $limitnofile -}${ini_service_umask:+umask $ini_service_umask -} -EOF - - if [ -n "$need_do_start" ] - then - { - write_install /run "$ini_service_runtimedirectory" \ - "$ini_service_user" "$ini_service_group" \ - "$ini_service_runtimedirectorymode" - write_install /var/lib "$ini_service_statedirectory" \ - "$ini_service_user" "$ini_service_group" \ - "$ini_service_statedirectorymode" - write_install /var/cache "$ini_service_cachedirectory" \ - "$ini_service_user" "$ini_service_group" \ - "$ini_service_cachedirectorymode" - write_install /var/log "$ini_service_logsdirectory" \ - "$ini_service_user" "$ini_service_group" \ - "$ini_service_logsdirectorymode" - write_install /etc "$ini_service_configurationdirectory" '' '' \ - "$ini_service_configurationdirectorymode" - write_commands "$chdir" - write_commands "$ini_service_execstartpre" "$run" "$runpriv" - write_commands "$execstart" "$runstart" "$runprivstart" - write_commands "$ini_service_execstartpost" "$run" "$runpriv" - } | write_function start_cmd - else - [ "$service_type" = oneshot ] && write_function start : - fi - - if [ -n "$execstop$ini_service_execstoppost" ] - then - { - write_commands "$chdir" - write_commands "$execstop" "$run" "$runpriv" - write_commands "$killstop" - write_commands "$ini_service_execstoppost" "$run" "$runpriv" - } | write_function stop_cmd - else - [ "$service_type" = oneshot -o "$ini_service_killmode" = none ] && - write_function stop : - fi - - if [ "$ini_service_execreload" = '/bin/kill -HUP $MAINPID' -a \ - -z "$run$runpriv" ] - then - printf 'alias do_reload=do_reload_sigusr1\n\n' - elif [ -n "$ini_service_execreload" ] - then - { - write_commands "$chdir" - write_commands "$ini_service_execreload" "$run" "$runpriv" - } | write_function reload_cmd - - cat <<"EOF" -do_reload () -{ - log_daemon_msg "Reloading $DESC configuration files" "$NAME" - MAINPID=$(cat $PIDFILE) - do_reload_cmd_override - log_end_msg $? -} -EOF - fi - - [ "$service_type" = oneshot ] && write_function status : -} - - -# parse command line -while getopts di:n: opt -do - case $opt in - d) debug=1;; - i) instance=$OPTARG;; - n) name=$OPTARG;; - ?) printf "Usage: %s [-d] [-i instance] [-n servicename] [filename]\n" \ - "$0" - exit 2;; - esac -done - -: ${instance=INSTANCE_NAME} -shift $(($OPTIND - 1)) - - -# convert unit file -read_unit "${1:--}" "$instance" -write_init "${name-$inifile_unit_name}" "$instance" - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/doc/Changelog new/sysvinit-3.18/doc/Changelog --- old/sysvinit-3.14/doc/Changelog 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/doc/Changelog 2026-03-26 15:45:44.000000000 +0100 @@ -1,3 +1,33 @@ +sysvinit (3.18) released; urgency=low + * Remove unneeded test script and references to it in Makefile. + * Fix man page translation. + + +sysvinit (3.17) released; urgency=low + * Fixed changelog. + * Remove systemd-to-shell script due to license conflict. + * Remove "set" variable from sulogin as it is unused. + + +sysvinit (3.16) released; urgency=low + * Clean up of inittab manual page by Bjarni Ingi Gislason. + * Clean up of init manual page by Bjarni Ingi Gislason. + * Improved systemd to sysv unit-to-script conversion. + Provided by avivdaum. + * Remove some debug/status messages when reading the /etc/inittab.d/ + directory. + * Document how init reads the inittab.d directory in the inittab manual page. + + +sysvinit (3.15) released; urgency=low + + * Patched manual page for runlevel command. This cleans up formatting and whitespace. + Patch provided by Bjarni Ingi Gislason. + + * Fixed formatting in init manual page to indicate runlevel arguments + to telinit are not optional. + + sysvinit (3.14) released; urgency=medium * Re-introduced DESTDIR flag in src/Makefile to assist building on Arch. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/man/Makefile new/sysvinit-3.18/man/Makefile --- old/sysvinit-3.14/man/Makefile 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/man/Makefile 2026-03-26 15:45:44.000000000 +0100 @@ -9,7 +9,12 @@ --package-name sysvinit --package-version $(VERSION) \ --msgid-bugs-address "Jesse <[email protected]>" -all: +LANGS := $(patsubst po/%.po,%,$(wildcard po/*.po)) + +$(LANGS): + mkdir -p $@ + +all: $(LANGS) sed --in-place=.orig --separate 's/\@VERSION\@/$(VERSION)/g' $(MANPAGES) ifdef PO4A po4a $(PO4A_OPTS) po/po4a.cfg @@ -23,5 +28,7 @@ clean distclean: ifdef PO4A po4a $(PO4A_OPTS) --rm-translations po/po4a.cfg + rm -rf $(LANGS) endif rm -f *.po sysvinit-man.pot + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/man/init.8 new/sysvinit-3.18/man/init.8 --- old/sysvinit-3.14/man/init.8 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/man/init.8 2026-03-26 15:45:44.000000000 +0100 @@ -37,7 +37,7 @@ .br .B /sbin/telinit [ \fB\-t\fP \fISECONDS\fP ] -.RB [ " 0123456sSQqabcUu " ] +.I 0123456sSQqabcUu .br .B /sbin/telinit [ \fB\-e\fP \fIVAR\fP[\fB=\fP\fIVAL\fP] ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/man/init.8.orig new/sysvinit-3.18/man/init.8.orig --- old/sysvinit-3.14/man/init.8.orig 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/man/init.8.orig 2026-03-26 15:45:44.000000000 +0100 @@ -37,7 +37,7 @@ .br .B /sbin/telinit [ \fB\-t\fP \fISECONDS\fP ] -.RB [ " 0123456sSQqabcUu " ] +.I 0123456sSQqabcUu .br .B /sbin/telinit [ \fB\-e\fP \fIVAR\fP[\fB=\fP\fIVAL\fP] ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/man/inittab.5 new/sysvinit-3.18/man/inittab.5 --- old/sysvinit-3.14/man/inittab.5 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/man/inittab.5 2026-03-26 15:45:44.000000000 +0100 @@ -27,7 +27,8 @@ .\"{{{ Description .SH DESCRIPTION The \fBinittab\fP file describes which processes are started at bootup and -during normal operation (e.g.\& /etc/init.d/boot, /etc/init.d/rc, gettys...). +during normal operation +(e.g.\& /etc/init.d/boot, /etc/init.d/rc, gettys...). .BR init (8) distinguishes multiple \fIrunlevels\fP, each of which can have its own set of processes that are started. Valid runlevels are \fB0\fP\-\fB6\fP plus @@ -40,15 +41,17 @@ .RE Lines beginning with `#' are ignored. .\"{{{ id -.IP \fIid\fP -is a unique sequence of 1-4 characters which identifies an entry in -.B inittab -(for versions of sysvinit compiled with the \fIold\fP libc5 (< 5.2.18) or -a.out libraries the limit is 2 characters). +.IP \fIid\fP 8n\" indent 8n added for tag 'process' +is a unique sequence of 1\(en4 characters which identifies an entry in +.B inittab +(for versions of sysvinit compiled with the \fIold\fP libc5 +(< 5.2.18) +or a.out libraries the limit is 2 characters). .sp Note: traditionally, for getty and other login processes, the value of the \fIid\fP field is kept the same as the suffix of the corresponding tty, e.g.\& -\fB1\fP for \fBtty1\fP. Some ancient login accounting programs might +\fB1\fP for \fBtty1\fP. +Some ancient login accounting programs might expect this, though I can't think of any. .\"}}} .\"{{{ runlevels @@ -62,10 +65,10 @@ .\"{{{ process .IP \fIprocess\fP specifies the process to be executed. If the process field starts with -a `+' character, -.B init -will not do utmp and wtmp accounting for that process. This is needed for -gettys that insist on doing their own utmp/wtmp housekeeping. This is also +a `+' character, +.B init +will not do utmp and wtmp accounting for that process. This is needed for +gettys that insist on doing their own utmp/wtmp housekeeping. This is also a historic bug. The length of this field is limited to 253 characters. Anything beyond 253 will result in a log warning and the process command line being skipped/ignored. @@ -73,8 +76,8 @@ Please note that including certain characters in the process field will result in .B init -attempting to launch a shell to interpret the command contained in the process field. -The characters which will trigger a shell are: +attempting to launch a shell to interpret the command contained in the process field. +The characters which will trigger a shell are: .B ~`!$^&*()=|\{}[];\ "'<>? @@ -93,7 +96,7 @@ .\"}}} .PP The \fIrunlevels\fP field may contain multiple characters for different -runlevels. For example, \fB123\fP specifies that the process should be +runlevels. For example, \fB123\fP specifies that the process should be started in runlevels 1, 2, and 3. The \fIrunlevels\fP for \fBondemand\fP entries may contain an \fBA\fP, \fBB\fP, or \fBC\fP. The \fIrunlevels\fP field of \fBsysinit\fP, @@ -105,13 +108,14 @@ .PP Valid actions for the \fIaction\fP field are: .\"{{{ respawn -.IP \fBrespawn\fP -The process will be restarted whenever it terminates (e.g.\& getty). +.IP \fBrespawn\fP 13n\" indent 13n added for 'powerfailnow' +The process will be restarted whenever it terminates +(e.g.\& getty). .\"}}} .\"{{{ wait .IP \fBwait\fP -The process will be started once when the specified runlevel is entered and -.B init +The process will be started once when the specified runlevel is entered and +.B init will wait for its termination. .\"}}} .\"{{{ once @@ -126,9 +130,10 @@ .\"}}} .\"{{{ bootwait .IP \fBbootwait\fP -The process will be executed during system boot, while -.B init -waits for its termination (e.g.\& /etc/rc). +The process will be executed during system boot, while +.B init +waits for its termination +(e.g.\& /etc/rc). The \fIrunlevels\fP field is ignored. .\"}}} .\"{{{ off @@ -145,19 +150,22 @@ .\"{{{ initdefault .IP \fBinitdefault\fP An \fBinitdefault\fP entry specifies the runlevel which should be -entered after system boot. If none exists, +entered after system boot. If none exists, .B init -will ask for a runlevel on the console. The \fIprocess\fP field is ignored. +will ask for a runlevel on the console. +The \fIprocess\fP field is ignored. .\"}}} .\"{{{ sysinit .IP \fBsysinit\fP -The process will be executed during system boot. It will be +The process will be executed during system boot. +It will be executed before any \fBboot\fP or \fB bootwait\fP entries. The \fIrunlevels\fP field is ignored. .\"}}} .\"{{{ powerwait .IP \fBpowerwait\fP -The process will be executed when the power goes down. \fBinit\fR is usually +The process will be executed when the power goes down. +\fBinit\fR is usually informed about this by a process talking to a UPS connected to the computer. \fBinit\fP will wait for the process to finish before continuing. .\"}}} @@ -181,7 +189,8 @@ .IP \fBctrlaltdel\fP The process will be executed when \fBinit\fP receives the \fBSIGINT\fP signal. This means that someone on the system console has pressed the -\fBCTRL\-ALT\-DEL\fP key combination. Typically one wants to execute some +\fBCTRL\-ALT\-DEL\fP key combination. +Typically one wants to execute some sort of \fBshutdown\fP either to get into single\-user level or to reboot the machine. .\"}}} @@ -192,15 +201,25 @@ console keyboard. .sp The documentation for this function is not complete yet; more documentation -can be found in the kbd-x.xx packages (most recent was kbd-0.94 at -the time of this writing). Basically you want to map some keyboard -combination to the "KeyboardSignal" action. For example, to map Alt-Uparrow +can be found in the kbd-x.xx packages +(most recent was kbd-0.94 at the time of this writing). +Basically you want to map some keyboard +combination to the "KeyboardSignal" action. +For example, to map Alt-Uparrow for this purpose use the following in your keymaps file: .RS .sp alt keycode 103 = KeyboardSignal .sp .RE + +.sp +Note: In environments where the directory /etc/inittab.d/ exists, init will +read the contents of this directory and open any files with the ".tab" +extension. These .tab files can introduce additional lines and settings with the same +format as inittab. The .tab files are optional and provide a install-specific +method for adding extra options or functionality. + .\"}}} .\"}}} .\"{{{ Examples @@ -243,7 +262,7 @@ # # Runlevel 0 is halt. # Runlevel 1 is single-user. -# Runlevels 2-5 are multi-user. +# Runlevels 2\(en5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 @@ -255,7 +274,7 @@ l6:6:wait:/etc/init.d/rc 6 # What to do at the "3 finger salute". -ca::ctrlaltdel:/sbin/shutdown -t1 -h now +ca::ctrlaltdel:/sbin/shutdown \-t1 \-h now # Runlevel 2,3: getty on virtual consoles # Runlevel 3: getty on terminal (ttyS0) and modem (ttyS1) @@ -263,8 +282,8 @@ 2:23:respawn:/sbin/getty tty2 VC linux 3:23:respawn:/sbin/getty tty3 VC linux 4:23:respawn:/sbin/getty tty4 VC linux -S0:3:respawn:/sbin/getty -L 9600 ttyS0 vt320 -S1:3:respawn:/sbin/mgetty -x0 -D ttyS1 +S0:3:respawn:/sbin/getty \-L 9600 ttyS0 vt320 +S1:3:respawn:/sbin/mgetty \-x0 \-D ttyS1 .fi .sp @@ -284,13 +303,13 @@ .MT lederer@\:francium\:.informatik\:.uni-bonn\:.de Sebastian Lederer .ME -and modified by +and modified by .MT u31b3hs@\:pool\:.informatik\:.rwth-aachen\:.de Michael Haardt .ME . .\"}}} .\"{{{ See also -.SH "SEE ALSO" +.SH SEE ALSO .BR init (8), .BR telinit (8) .\"}}} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/man/inittab.5.orig new/sysvinit-3.18/man/inittab.5.orig --- old/sysvinit-3.14/man/inittab.5.orig 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/man/inittab.5.orig 2026-03-26 15:45:44.000000000 +0100 @@ -27,7 +27,8 @@ .\"{{{ Description .SH DESCRIPTION The \fBinittab\fP file describes which processes are started at bootup and -during normal operation (e.g.\& /etc/init.d/boot, /etc/init.d/rc, gettys...). +during normal operation +(e.g.\& /etc/init.d/boot, /etc/init.d/rc, gettys...). .BR init (8) distinguishes multiple \fIrunlevels\fP, each of which can have its own set of processes that are started. Valid runlevels are \fB0\fP\-\fB6\fP plus @@ -40,15 +41,17 @@ .RE Lines beginning with `#' are ignored. .\"{{{ id -.IP \fIid\fP -is a unique sequence of 1-4 characters which identifies an entry in -.B inittab -(for versions of sysvinit compiled with the \fIold\fP libc5 (< 5.2.18) or -a.out libraries the limit is 2 characters). +.IP \fIid\fP 8n\" indent 8n added for tag 'process' +is a unique sequence of 1\(en4 characters which identifies an entry in +.B inittab +(for versions of sysvinit compiled with the \fIold\fP libc5 +(< 5.2.18) +or a.out libraries the limit is 2 characters). .sp Note: traditionally, for getty and other login processes, the value of the \fIid\fP field is kept the same as the suffix of the corresponding tty, e.g.\& -\fB1\fP for \fBtty1\fP. Some ancient login accounting programs might +\fB1\fP for \fBtty1\fP. +Some ancient login accounting programs might expect this, though I can't think of any. .\"}}} .\"{{{ runlevels @@ -62,10 +65,10 @@ .\"{{{ process .IP \fIprocess\fP specifies the process to be executed. If the process field starts with -a `+' character, -.B init -will not do utmp and wtmp accounting for that process. This is needed for -gettys that insist on doing their own utmp/wtmp housekeeping. This is also +a `+' character, +.B init +will not do utmp and wtmp accounting for that process. This is needed for +gettys that insist on doing their own utmp/wtmp housekeeping. This is also a historic bug. The length of this field is limited to 253 characters. Anything beyond 253 will result in a log warning and the process command line being skipped/ignored. @@ -73,8 +76,8 @@ Please note that including certain characters in the process field will result in .B init -attempting to launch a shell to interpret the command contained in the process field. -The characters which will trigger a shell are: +attempting to launch a shell to interpret the command contained in the process field. +The characters which will trigger a shell are: .B ~`!$^&*()=|\{}[];\ "'<>? @@ -93,7 +96,7 @@ .\"}}} .PP The \fIrunlevels\fP field may contain multiple characters for different -runlevels. For example, \fB123\fP specifies that the process should be +runlevels. For example, \fB123\fP specifies that the process should be started in runlevels 1, 2, and 3. The \fIrunlevels\fP for \fBondemand\fP entries may contain an \fBA\fP, \fBB\fP, or \fBC\fP. The \fIrunlevels\fP field of \fBsysinit\fP, @@ -105,13 +108,14 @@ .PP Valid actions for the \fIaction\fP field are: .\"{{{ respawn -.IP \fBrespawn\fP -The process will be restarted whenever it terminates (e.g.\& getty). +.IP \fBrespawn\fP 13n\" indent 13n added for 'powerfailnow' +The process will be restarted whenever it terminates +(e.g.\& getty). .\"}}} .\"{{{ wait .IP \fBwait\fP -The process will be started once when the specified runlevel is entered and -.B init +The process will be started once when the specified runlevel is entered and +.B init will wait for its termination. .\"}}} .\"{{{ once @@ -126,9 +130,10 @@ .\"}}} .\"{{{ bootwait .IP \fBbootwait\fP -The process will be executed during system boot, while -.B init -waits for its termination (e.g.\& /etc/rc). +The process will be executed during system boot, while +.B init +waits for its termination +(e.g.\& /etc/rc). The \fIrunlevels\fP field is ignored. .\"}}} .\"{{{ off @@ -145,19 +150,22 @@ .\"{{{ initdefault .IP \fBinitdefault\fP An \fBinitdefault\fP entry specifies the runlevel which should be -entered after system boot. If none exists, +entered after system boot. If none exists, .B init -will ask for a runlevel on the console. The \fIprocess\fP field is ignored. +will ask for a runlevel on the console. +The \fIprocess\fP field is ignored. .\"}}} .\"{{{ sysinit .IP \fBsysinit\fP -The process will be executed during system boot. It will be +The process will be executed during system boot. +It will be executed before any \fBboot\fP or \fB bootwait\fP entries. The \fIrunlevels\fP field is ignored. .\"}}} .\"{{{ powerwait .IP \fBpowerwait\fP -The process will be executed when the power goes down. \fBinit\fR is usually +The process will be executed when the power goes down. +\fBinit\fR is usually informed about this by a process talking to a UPS connected to the computer. \fBinit\fP will wait for the process to finish before continuing. .\"}}} @@ -181,7 +189,8 @@ .IP \fBctrlaltdel\fP The process will be executed when \fBinit\fP receives the \fBSIGINT\fP signal. This means that someone on the system console has pressed the -\fBCTRL\-ALT\-DEL\fP key combination. Typically one wants to execute some +\fBCTRL\-ALT\-DEL\fP key combination. +Typically one wants to execute some sort of \fBshutdown\fP either to get into single\-user level or to reboot the machine. .\"}}} @@ -192,15 +201,25 @@ console keyboard. .sp The documentation for this function is not complete yet; more documentation -can be found in the kbd-x.xx packages (most recent was kbd-0.94 at -the time of this writing). Basically you want to map some keyboard -combination to the "KeyboardSignal" action. For example, to map Alt-Uparrow +can be found in the kbd-x.xx packages +(most recent was kbd-0.94 at the time of this writing). +Basically you want to map some keyboard +combination to the "KeyboardSignal" action. +For example, to map Alt-Uparrow for this purpose use the following in your keymaps file: .RS .sp alt keycode 103 = KeyboardSignal .sp .RE + +.sp +Note: In environments where the directory /etc/inittab.d/ exists, init will +read the contents of this directory and open any files with the ".tab" +extension. These .tab files can introduce additional lines and settings with the same +format as inittab. The .tab files are optional and provide a install-specific +method for adding extra options or functionality. + .\"}}} .\"}}} .\"{{{ Examples @@ -243,7 +262,7 @@ # # Runlevel 0 is halt. # Runlevel 1 is single-user. -# Runlevels 2-5 are multi-user. +# Runlevels 2\(en5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 @@ -255,7 +274,7 @@ l6:6:wait:/etc/init.d/rc 6 # What to do at the "3 finger salute". -ca::ctrlaltdel:/sbin/shutdown -t1 -h now +ca::ctrlaltdel:/sbin/shutdown \-t1 \-h now # Runlevel 2,3: getty on virtual consoles # Runlevel 3: getty on terminal (ttyS0) and modem (ttyS1) @@ -263,8 +282,8 @@ 2:23:respawn:/sbin/getty tty2 VC linux 3:23:respawn:/sbin/getty tty3 VC linux 4:23:respawn:/sbin/getty tty4 VC linux -S0:3:respawn:/sbin/getty -L 9600 ttyS0 vt320 -S1:3:respawn:/sbin/mgetty -x0 -D ttyS1 +S0:3:respawn:/sbin/getty \-L 9600 ttyS0 vt320 +S1:3:respawn:/sbin/mgetty \-x0 \-D ttyS1 .fi .sp @@ -284,13 +303,13 @@ .MT lederer@\:francium\:.informatik\:.uni-bonn\:.de Sebastian Lederer .ME -and modified by +and modified by .MT u31b3hs@\:pool\:.informatik\:.rwth-aachen\:.de Michael Haardt .ME . .\"}}} .\"{{{ See also -.SH "SEE ALSO" +.SH SEE ALSO .BR init (8), .BR telinit (8) .\"}}} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/man/runlevel.8 new/sysvinit-3.18/man/runlevel.8 --- old/sysvinit-3.14/man/runlevel.8 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/man/runlevel.8 2026-03-26 15:45:44.000000000 +0100 @@ -17,20 +17,21 @@ .\" .TH RUNLEVEL 8 "May 27, 1997" "sysvinit " "Linux System Administrator's Manual" .SH NAME -runlevel - find the previous and current system runlevel +runlevel \- find the previous and current system runlevel .SH SYNOPSIS -.B runlevel +.B runlevel .RI [ utmp ] .SH DESCRIPTION .B runlevel reads the system .I utmp -file (typically +file (typically .IR /var/run/utmp ) to locate the runlevel record, and then -prints the previous and current system runlevel on its standard output, -separated by a single space. If there is no previous system -runlevel, the letter \fBN\fP will be printed instead. +prints the previous and current system runlevel on its standard output, +separated by a single space. +If there is no previous system runlevel, +the letter \fBN\fP will be printed instead. .PP If no .I utmp @@ -42,13 +43,13 @@ .PP .B Runlevel can be used in \fIrc\fP scripts as a substitute for the System-V -\fBwho -r\fP command. +\fBwho \-r\fP command. However, in newer versions of \fBinit\fP(8) this information is also available in the environment variables \fBRUNLEVEL\fP and \fBPREVLEVEL\fP. .SH OPTIONS .\"{{{ utmp -.IP \fIutmp\fP +.IP \fIutmp\fP The name of the \fIutmp\fP file to read. .\"}}} .SH SEE ALSO diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/man/runlevel.8.orig new/sysvinit-3.18/man/runlevel.8.orig --- old/sysvinit-3.14/man/runlevel.8.orig 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/man/runlevel.8.orig 2026-03-26 15:45:44.000000000 +0100 @@ -17,20 +17,21 @@ .\" .TH RUNLEVEL 8 "May 27, 1997" "sysvinit " "Linux System Administrator's Manual" .SH NAME -runlevel - find the previous and current system runlevel +runlevel \- find the previous and current system runlevel .SH SYNOPSIS -.B runlevel +.B runlevel .RI [ utmp ] .SH DESCRIPTION .B runlevel reads the system .I utmp -file (typically +file (typically .IR /var/run/utmp ) to locate the runlevel record, and then -prints the previous and current system runlevel on its standard output, -separated by a single space. If there is no previous system -runlevel, the letter \fBN\fP will be printed instead. +prints the previous and current system runlevel on its standard output, +separated by a single space. +If there is no previous system runlevel, +the letter \fBN\fP will be printed instead. .PP If no .I utmp @@ -42,13 +43,13 @@ .PP .B Runlevel can be used in \fIrc\fP scripts as a substitute for the System-V -\fBwho -r\fP command. +\fBwho \-r\fP command. However, in newer versions of \fBinit\fP(8) this information is also available in the environment variables \fBRUNLEVEL\fP and \fBPREVLEVEL\fP. .SH OPTIONS .\"{{{ utmp -.IP \fIutmp\fP +.IP \fIutmp\fP The name of the \fIutmp\fP file to read. .\"}}} .SH SEE ALSO diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/src/init.c new/sysvinit-3.18/src/init.c --- old/sysvinit-3.14/src/init.c 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/src/init.c 2026-03-26 15:45:44.000000000 +0100 @@ -13,7 +13,7 @@ Version information is not placed in the top-level Makefile by default */ #ifndef VERSION -#define VERSION "3.14" +#define VERSION "3.18" #endif /* * This file is part of the sysvinit suite, @@ -1381,9 +1381,10 @@ char* p = buf; if ( strstr(p, "init.autocon=1") ) { + size_t console_length = strlen("console="); while ((p = strstr(p, "console="))) { char* e; - p += strlen("console="); + p += console_length; for (e = p; *e; ++e) { switch (*e) { case '-' ... '9': @@ -1491,8 +1492,13 @@ /* * Open INITTAB.D directory */ + tabdir = opendir(INITTABD); + /* + - We don't need to log this since the inittab.d directory does not + exist, by default. - Jesse if( (tabdir = opendir(INITTABD))==NULL) initlog(L_VB, "No inittab.d directory found"); + */ while(done != 1) { skip_this_line = FALSE; @@ -1549,7 +1555,6 @@ memset(buf, '\0', sizeof(buf)); file_status = fgets(buf, sizeof(buf), fp_tab); while( file_status != NULL) { - printf("Got line: %s\n", buf); for(p = buf; *p == ' ' || *p == '\t'; p++); if (*p != '#' && *p != '\n') break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysvinit-3.14/src/sulogin.c new/sysvinit-3.18/src/sulogin.c --- old/sysvinit-3.14/src/sulogin.c 2025-02-08 16:56:54.000000000 +0100 +++ new/sysvinit-3.18/src/sulogin.c 2026-03-26 15:45:44.000000000 +0100 @@ -152,14 +152,11 @@ tio->c_cc[VMIN] = 1; if (ioctl(fd, TIOCGWINSZ, &ws) == 0) { - int set = 0; if (ws.ws_row == 0) { ws.ws_row = 24; - set++; } if (ws.ws_col == 0) { ws.ws_col = 80; - set++; } (void)ioctl(fd, TIOCSWINSZ, &ws); }
