Compare commits

..

50 Commits

Author SHA1 Message Date
Daniel Robbins
6a5e6f1ee0 openrc-0.7.0 upstream merge 2011-01-20 14:00:29 -07:00
Robin H. Johnson
eebb2d1b9c test: You need to run "make" before "make check" will work.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
2011-01-18 01:49:22 +00:00
Robin H. Johnson
e39178de28 docs: make check does not catch textfile trailing whitespace. 2011-01-18 01:48:53 +00:00
Robin H. Johnson
9c5aa8a3f7 Document all deprecated code for future removal. 2011-01-18 01:41:29 +00:00
Robin H. Johnson
80853f5dbc sh/init: Detect a mounted /proc without sleeping
Previously we checked if /proc was alive by reading /proc/uptime twice
with a 1 second sleep between calls, so that it had time to update.
This got a complaint of an entire 1 second delay, so we improve the
check to be much faster without sleep. We cannot continue to use
/proc/uptime as it only has a 10ms resolution.

X-Gentoo-Bug: 348416
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=348416
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
2011-01-18 01:29:09 +00:00
Mike Frysinger
9ce957c3e7 librc: delete trailing newlines
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-01-17 20:05:13 -05:00
Mike Frysinger
c825a74dd1 tests: check for trailing blank newlines
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-01-17 20:04:53 -05:00
Robin H. Johnson
69abe1b2e8 Add removal schedule document for code trimming/deprecation. 2011-01-17 22:31:11 +00:00
Robin H. Johnson
164b8e4e04 Document that rc_sys_v{1,2} should not be used outside of OpenRC. 2011-01-17 22:30:40 +00:00
Robin H. Johnson
de8b4855d3 Bug #351570: Fix hidden functions visibility for rc_deptree_load_file. 2011-01-17 19:36:51 +00:00
Robin H. Johnson
f3f55f1f6d Build cleanup: librc.funcs.hidden.list is generated by testsuite. 2011-01-17 19:34:09 +00:00
Robin H. Johnson
2b7c2b8cf1 Bug #351570: Hidden function fixes: rc_conf_value.
Refactor rc_conf_value into librc for use in library context.
Also requires moving:
- rc_conf internal static
- Defines: PROFILE_ENV, SYS_WHITELIST, USR_WHITELIST, RC_PATH_PREFIX
  moved to rc.h with new RC_ prefix added.
- Defines: RC_CONF, RC_CONF_OLD moved to rc.h.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
2011-01-17 19:29:45 +00:00
Mike Frysinger
6e876bca13 tests: check for common style issues
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-01-17 04:49:35 -05:00
Mike Frysinger
faa2df1159 more whitespace cleanup
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-01-17 04:49:12 -05:00
Mike Frysinger
711713d664 start-stop-daemon: use termios.h rather than sys/termios.h
POSIX specifies termios.h, not sys/termios.h.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-01-17 04:48:13 -05:00
Mike Frysinger
8b5e391afb start a STYLE file
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-01-17 04:23:09 -05:00
Mike Frysinger
1e73fd4b1e tests: setup env before reading local files
The local files we source might use local binaries (like eval_ecolors),
so setup the env first.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-01-17 04:07:24 -05:00
Mike Frysinger
f796269a1d dist.mk: add a standard "distcheck" target
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-01-17 04:03:25 -05:00
Robin H. Johnson
b2d0656814 Style fix: "char *foo" not "char* foo". 2011-01-17 08:46:41 +00:00
Robin H. Johnson
c0a3e25d48 Style fix: /* */ comments not // comments. 2011-01-17 08:43:40 +00:00
Robin H. Johnson
0c93f4df32 Style fix: "while (" not "while(". 2011-01-17 08:42:28 +00:00
Robin H. Johnson
b1fcf4ce9c Style fix: "if (" not "if(". 2011-01-17 08:41:02 +00:00
Robin H. Johnson
6804edfc85 Better error checking of argc for --applet call. 2011-01-17 08:39:44 +00:00
Robin H. Johnson
bfb87f2d51 Use xstrdup for style. 2011-01-17 08:34:03 +00:00
Robin H. Johnson
e6fc30da61 Clean up all trailing whitespace in src/. 2011-01-17 08:28:43 +00:00
Robin H. Johnson
49339525a9 Bug #351712: Implement --applet selection mode for SELinux wrappers.
In addition to detecting what multicall applet we want via argv[0],
provide an explicit override mode with a --applet initial argument.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
2011-01-17 07:37:43 +00:00
Robin H. Johnson
1f578cdbad Add TODO item. 2011-01-17 06:59:37 +00:00
Robin H. Johnson
b00ad439a6 Add new option -F to rc-depend tool, so that we can debug user deptree files easily. 2011-01-17 06:53:50 +00:00
Robin H. Johnson
0e90ae266a Factor out new function rc_deptree_load_file to aid in debugging deptree files from users. Loads from a given filename instead of the hardcoded RC_DEPTREE_CACHE define. 2011-01-17 06:32:46 +00:00
Robin H. Johnson
b113ad49e9 Bug #351783: more documentation for rc_sys. But really see the OpenRC migration guide where this is covered. 2011-01-16 22:48:10 +00:00
Nathan Phillip Brink
a534b623b9 bug #351622: Use CFLAGS during linking.
Fix compilation on portage-multilib.
2011-01-14 16:40:58 -06:00
William Hubbs
882a4b7d69 bug 351523: fix deprecation date for rc_sys
The deprecation notice for automatic detection of the system type stated
that the automatic detection will be removed no later than 2010/03/01,
but it should state 2011/03/01.
2011-01-13 10:37:45 -06:00
Piotr Karbowski
d8ce5dccb2 openrc-0.6.8 2010-12-16 11:17:34 +01:00
Piotr Karbowski
62bd337494 Unprivileged users (such as services for example) should not be able view who is logged into system. 2010-12-16 10:04:46 +01:00
Jory A. Pratt
06c8bd0156 Fix for make-3.82 breakage. 2010-12-03 20:06:34 -07:00
Daniel Robbins
33803219d4 openrc-0.6.5 2010-11-26 17:02:16 -07:00
Jory A. Pratt
18c08a9d4d remove 'use hostname' bug 340991, Thanks Diego 2010-11-26 16:59:28 -07:00
William Hubbs
2406dc4f3e allow net_fs_list to be extended but not replaced
This fixes bug #342825.
2010-11-26 16:59:18 -07:00
Diego Elio Pettenò
8e6d461a7f Allow cleaning up of pam_mktemp-based temporary directories.
This was blacklisted before, so the .private directories never had their
content cleaned up, even if WIPE_TMP was set to yes.
2010-11-26 16:57:37 -07:00
William Hubbs
472a3bb99c remove support for local.start and local.stop for bug #343709
The openrc ebuild now migrates these files to /etc/conf.d/local, so we
do not need to support them.
2010-11-26 16:53:54 -07:00
William Hubbs
c9a2085699 add warnings about local.start and local.stop for bug #343709
We need to warn users that they should be using /etc/conf.d/local
instead of /etc/conf.d/local.start and /etc/conf.d/local.stop. This adds
those warnings.
2010-11-26 16:53:50 -07:00
William Hubbs
69169b7e95 update documentation for rc_interactive
rc_interactive is automatically disabled if rc_parallel is set to YES.
Update the documentation in rc.conf to reflect this.
This fixes bug #327305.
2010-11-26 16:53:37 -07:00
William Hubbs
3a11f8af34 remove "use hostname" from sysctl for bsd systems 2010-11-26 16:51:42 -07:00
William Hubbs
e2e5b27d85 do not mount local file systems with the _netdev option in fstab
This fixes #344947.
2010-11-26 16:51:20 -07:00
Daniel Robbins
f343360741 0.6.4 release 2010-10-27 23:43:30 -06:00
Brant Gurganus
694fd2027f correction for unmounting volumes with weird characters 2010-10-24 13:08:38 -04:00
Daniel Robbins
ca76764743 Merge branch 'master' of github.com:funtoo/openrc 2010-10-20 19:21:48 -06:00
Jory A. Pratt
19bd9923d7 surpress output of loadkeys, fix setfont path check 2010-10-20 19:21:02 -06:00
Brant Gurganus
2a844e1122 corrected a typo 2010-10-20 16:26:01 -04:00
Daniel Robbins
5135412978 fixing history, one step at a time 2010-08-16 19:09:26 -06:00
81 changed files with 571 additions and 368 deletions

70
FEATURE-REMOVAL-SCHEDULE Normal file
View File

@@ -0,0 +1,70 @@
The following is a list of files and features that are going to be removed in
the source tree. Every entry should contain what exactly is going away, why it
is happening, and who is going to be doing the work. When the feature is
removed, it should also be removed from this file.
---------------------------
What: rc_sys automatic detection code
- Functions for removal: rc_sys_v1, rc_sys_v2
When: 2011/03/01
Why: The original automatic sub-system detection is flawed in that it cannot
safely detect some variables (Using cgroups confused it to think you were
using LXC, and Prefix cannot be detect by definition). Also, almost all of
the detection requires that /proc is available and readable. During early
boot, /proc may not be mounted yet, leading to mis-detection. The readable
condition can also fail under some hardened kernels when running as an
unprivileged user.
The new rc_sys_v2 function uses the rc_sys variable from rc.conf. After
the removal, the contents of the rc_sys_v2 function will move into the
rc_sys function.
Who: Robin H. Johnson <robbat2@gentoo.org>
---------------------------
What: oldnet ADSL rp-pppoe mode
When: undecided
Why: Replaced by the oldnet PPP module
Who: Robin H. Johnson <robbat2@gentoo.org>
---------------------------
What: oldnet /etc/conf.d/wireless
When: undecided
Why: All configuration moved to /etc/conf.d/net
Who: Robin H. Johnson <robbat2@gentoo.org>
---------------------------
What: Service pause action
When: Removed already, compatbility warning in place.
Why: ...
Who:
---------------------------
What: Service --startas, --chuid , --oknodo
When: undecided
Why: Obsolete or replaced by other options.
--startas => use --name or --exec
--chuid => use --user
--oknodo => ignore return code instead
Who:
---------------------------

72
README
View File

@@ -1,8 +1,9 @@
OpenRC README
=============
Installation
------------
make install
Yup, that simple. Works with GNU make and BSD make.
@@ -51,31 +52,54 @@ init.d.misc is not installed by default as the scripts will need
tweaking on a per distro basis. They are also non essential to the operation
of the system.
Reporting Bugs
--------------
Bugs should go to the Gentoo Bugzilla:
http://bugs.gentoo.org/
You'll want the "Gentoo Linux" product and the "baselayout" component.
If you installed OpenRC from your chosen distribution, you should report
bugs directly to them. For example, if you use Gentoo and emerged OpenRC
then you should reports bugs to http://bugs.gentoo.org.
History - by Roy Marples
------------------------
I became a Gentoo/Linux developer in 2004 and wrote the modular network
scripts for the Gentoo baselayout package. baselayout is a collection of
bash scripts to bring up your computer and its services.
Then towards the end of 2005 I found myself as the primary maintainer
for baselayout.
History - by Daniel Robbins
---------------------------
At the start of 2007, baselayout-2 is announced to the world, re-writing the
core of baselayout in C and allowing POSIX sh init scripts instead of
forcing the use of bash. By Mid 2007 I have re-written everything, including
init scripts, and alpha and pre baselayout-2 snapshots where put into Gentoo.
Towards the end of 2007 I retired as a Gentoo developer for reasons I won't
go into here. baselayout-2 was still in the pre stage, and aside from the
fbsd users, it was masked everywhere. However, I also desired to keep the
baselayout-2 project alive, but outside of Gentoo and into other projects
such as FreeBSD.
The Gentoo modular network scripts were created by Daniel Robbins for
Gentoo Linux 1.0_rc6, in development during most of 2001 and released
in September 2001. After their development, the dependency-based initscript
system was maintained by a number of senior developers (add names here....
need to look at baselayout cvs logs.)
As such, the Gentoo Council have allowed the creation of OpenRC under the
2 clause BSD license, managed by me as an external project.
excerpt from http://www.gentoo.org/news/en/gwn/20040426-newsletter.xml
by Grant Goodyear:
"My recollection is that one of woodchip's more impressive early feats was the
complete replacement of all of the init scripts in Portage for Gentoo Linux
1.0_rc6. Through 1.0_rc5 Gentoo had used fairly standard rc scripts modified
from Stampede Linux, but for 1.0_rc6 Daniel Robbins (drobbins) and Martin
Schlemmer (azarah) had created a new dependency-based init script system that
is still used today. Within a span of days Donny rewrote every single init
script in the Portage tree and committed new masked packages to await the
release of 1.0_rc6. Thanks to woodchip (and drobbins and azarah, of course) the
transition to the new init scripts was nearly painless."
Roy Marples became a Gentoo/Linux developer in 2004 and maintained the modular
network scripts for the Gentoo baselayout package. Then towards the end of
2005, he became the the primary maintainer for baselayout.
At the start of 2007, Roy Marples announced the ongoing development of
baselayout-2, containing a rewritten initscript code in C and allowing POSIX sh
init scripts instead of forcing the use of bash. By Mid 2007 Roy Marples had
re-implemented the Gentoo initscript design created by Daniel Robbins, using an
entirely new code base. Alpha and pre-release baselayout-2 snapshots were
added to Gentoo's Portage tree as an optional component.
Towards the end of 2007, Roy Marples retired as a Gentoo developer Baselayout-2
was still in the pre stage, and aside from the fbsd users, it was masked
everywhere. However, Roy Marples desired to keep the baselayout-2 project
alive, but outside of Gentoo and into other projects such as FreeBSD.
As such, the Gentoo Council permitted Roy Marples to release OpenRC under the 2
clause BSD license, managed by him as an external project. Around mid-2010, Roy
Marples decided to no longer maintain OpenRC. At this point, he transferred
development back to Gentoo, which continues to maintain the scripts. In
addition, Daniel Robbins continues to maintain an independent version OpenRC
for Funtoo Linux, which includes a Funtoo-specific network configuration
system.

34
STYLE Normal file
View File

@@ -0,0 +1,34 @@
This is the openrc style manual. It governs the coding style of all code
in this repository. Follow it. Contact openrc@gentoo.org for any questions
or fixes you might notice.
##########
# C CODE #
##########
The BSD Kernel Normal Form (KNF) style is used:
http://en.wikipedia.org/wiki/Indent_style#BSD_KNF_style
Basically, it's like K&R/LKML, but wrapped lines that are indented use 4 spaces.
Highlights:
- no trailing whitespace
- indented code use tabs (not line wrapped)
- cuddle the braces (except for functions)
- space after native statements and before paren (for/if/while/...)
- no space between function and paren
- pointer asterisk cuddles the variable, not the type
void foo(int c)
{
int ret = 0;
if (c > 1000)
return;
while (c--) {
bar(c);
ret++;
}
return ret;
}

2
TODO
View File

@@ -3,3 +3,5 @@
- add support somehow for optional translations
- oldnet[bridging]: Review setting of bridge configuration on dynamic interface add
- Document rc-depend binary.

View File

@@ -23,7 +23,7 @@
# We now support modular networking scripts which means we can easily
# add support for new interface types and modules while keeping
# compatibility with existing ones.
#
#
# Modules load by default if the package they need is installed. If
# you specify a module here that doesn't have its package installed
# then you get an error stating which package you need to install.
@@ -212,7 +212,7 @@
# not find them in a scan
# "forcepreferredonly" means it forcibly connects to the APs in order and
# does not bother to scan
# "forceany" does the same as forcepreferred + connects to any other
# "forceany" does the same as forcepreferred + connects to any other
# available AP
# Default is "any"
#associate_order="any"
@@ -266,13 +266,13 @@
# won't have associated then)
# If you're using anything else to configure wireless on your interface AND
# you have installed wpa_supplicant, you need to disable wpa_supplicant
# you have installed wpa_supplicant, you need to disable wpa_supplicant
#modules="!iwconfig !wpa_supplicant"
#or
#modules="!wireless"
##############################################################################
# WIRELESS SSID IN VARIABLES
# WIRELESS SSID IN VARIABLES
##############################################################################
# Remember to change SSID to your SSID.
# Say that your SSID is My NET - the line
@@ -368,7 +368,7 @@
##############################################################################
# ADVANCED CONFIGURATION
#
#
# Four functions can be defined which will be called surrounding the
# start/stop operations. The functions are called with the interface
# name first so that one function can control multiple adapters. An extra two

View File

@@ -24,7 +24,7 @@
# We now support modular networking scripts which means we can easily
# add support for new interface types and modules while keeping
# compatibility with existing ones.
#
#
# Modules load by default if the package they need is installed. If
# you specify a module here that doesn't have its package installed
# then you get an error stating which package you need to install.
@@ -49,7 +49,7 @@
##############################################################################
# INTERFACE HANDLERS
#
#
# We provide two interface handlers presently: ifconfig and iproute2.
# You need one of these to do any kind of network configuration.
# For ifconfig support, emerge sys-apps/net-tools
@@ -297,7 +297,7 @@
# Surround each SSID with the " character and separate them with a space
# If the first SSID isn't found then it moves onto the next
# If this isn't defined then it connects to the first one found
#preferred_aps="SSID1 SSID2"
#preferred_aps="SSID1 SSID2"
# You can also define a preferred_aps list per interface
#preferred_aps_eth0="SSID3 SSID4"
@@ -371,13 +371,13 @@
# won't have associated then)
# If you're using anything else to configure wireless on your interface AND
# you have installed wpa_supplicant, you need to disable wpa_supplicant
# you have installed wpa_supplicant, you need to disable wpa_supplicant
#modules="!iwconfig !wpa_supplicant"
#or
#modules="!wireless"
##############################################################################
# WIRELESS SSID IN VARIABLES
# WIRELESS SSID IN VARIABLES
##############################################################################
# Remember to change SSID to your SSID.
# Say that your SSID is My NET - the line
@@ -421,7 +421,7 @@
# Notes:
# - All clients send the current hostname to the DHCP server by default
# - dhcpcd does not daemonize when the lease time is infinite
# - udhcp-0.9.3-r3 and earlier do not support getting NTP servers
# - udhcp-0.9.3-r3 and earlier do not support getting NTP servers
# - pump does not support getting NIS servers
# - DHCP tends to erase any existing device information - so add
# static addresses after dhcp if you need them
@@ -467,7 +467,7 @@
#fallback_eth0="apipa"
#-----------------------------------------------------------------------------
# ARPING Gateway configuration
# ARPING Gateway configuration
# and
# Automatic Private IP Addressing (APIPA)
# For arpingnet / apipa support, emerge net-misc/iputils or net-analyzer/arping
@@ -582,7 +582,7 @@
#-----------------------------------------------------------------------------
# Classical IP over ATM
# Classical IP over ATM
# For CLIP support emerge net-dialup/linux-atm
# Ensure that you have /etc/atmsigd.conf setup correctly
@@ -620,7 +620,7 @@
#
# Here you should specify what pppd plugins you want to use
# Available plugins are: pppoe, pppoa, capi, dhcpc, minconn, radius,
# radattr, radrealms and winbind
# radattr, radrealms and winbind
#plugins_ppp0="pppoe" # Required plugin for PPPoE
#plugins_ppp0="pppoa vc-encaps" # Required plugin for PPPoA with an option
#plugins_ppp0="capi" # Required plugin for ISDN
@@ -660,7 +660,7 @@
# lcp-echo-interval 15 # Send a LCP echo every 15 seconds
# lcp-echo-failure 3 # Make peer dead after 3 consecutive
# # echo-requests
#
#
# Compression options - use these to completely disable compression
# noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
#
@@ -793,7 +793,7 @@
# empty value variable is fine, but at least one of them must be set:
# brctl_IFVAR
# You need to configure the ports to null values so dhcp does not get started
# You need to configure the ports to null values so dhcp does not get started
#config_eth0="null"
#config_eth1="null"
@@ -820,7 +820,7 @@
#hairpin_mode_eth0="1"
#-----------------------------------------------------------------------------
# RFC 2684 Bridge Support
# RFC 2684 Bridge Support
# For RFC 2684 bridge support emerge net-misc/br2684ctl
# Interface names have to be of the form nas0, nas1, nas2, etc.
@@ -975,7 +975,7 @@
##############################################################################
# ADVANCED CONFIGURATION
#
#
# Four functions can be defined which will be called surrounding the
# start/stop operations. The functions are called with the interface
# name first so that one function can control multiple adapters. An extra two
@@ -1001,7 +1001,7 @@
# if mii-tool "${IFACE}" 2> /dev/null | grep -q 'no link'; then
# ewarn "No link on ${IFACE}, aborting configuration"
# return 1
# fi
# fi
#
# # Test for link on the interface prior to bringing it up. This
# # only works on some network adapters and requires the ethtool

View File

@@ -3,6 +3,10 @@
# "jail" - FreeBSD jails
# "prefix" - Prefix
# If unset, the old automagic detection code will be triggered. Said old code
# is deprecated and be removed not later than 2010/03/01.
# is deprecated and will be removed not later than 2011/03/01.
#
# This should be set to the value representing what environment this file is
# PRESENTLY in, not what virtualization the environment is capable of.
# See the OpenRC migration guide for more details.
rc_sys=""

View File

@@ -8,7 +8,11 @@
# "xen0" - Xen0 Domain
# "xenU" - XenU Domain
# If unset, the old automagic detection code will be triggered. Said old code
# is deprecated and be removed not later than 2010/03/01.
# is deprecated and will be removed not later than 2011/03/01.
#
# This should be set to the value representing what environment this file is
# PRESENTLY in, not what virtualization the environment is capable of.
# See the OpenRC migration guide for more details.
rc_sys=""
##############################################################################

View File

@@ -4,6 +4,10 @@
# "xen0" - Xen0 Domain
# "xenU" - XenU Domain
# If unset, the old automagic detection code will be triggered. Said old code
# is deprecated and be removed not later than 2010/03/01.
# is deprecated and will be removed not later than 2011/03/01.
#
# This should be set to the value representing what environment this file is
# PRESENTLY in, not what virtualization the environment is capable of.
# See the OpenRC migration guide for more details.
rc_sys=""

View File

@@ -95,7 +95,7 @@
# We can set some things on a per service basis, like the nicelevel.
#export SSD_NICELEVEL="-19"
# Pass ulimit parameters
# Pass ulimit parameters
#rc_ulimit="-u 30"
# It's possible to define extra dependencies for services like so

View File

@@ -6,7 +6,7 @@
# This gives us a nice colour boot :)
[ -z "$TERM" -o "$TERM" = "dumb" ] && export TERM="@TERM@"
# Handle interrupts
# Handle interrupts
trap : SIGINT
trap "echo 'Boot interrupted'; exit 1" SIGQUIT

View File

@@ -2,7 +2,7 @@
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
# Handle interrupts
# Handle interrupts
trap : SIGINT SIGQUIT
# Try and use stuff in /lib over anywhere else so we can shutdown

View File

@@ -10,7 +10,7 @@ required_files=/etc/dnsmasq.conf
extra_started_commands="reload"
depend()
{
{
provide dns
need localmount net
after bootmisc

View File

@@ -24,7 +24,7 @@ if yesno $openvpn_client; then
command_args="$command_args --up $openvpn_up"
command_args="$command_args --down $openvpn_down"
required_files="$required_files $openvpn_up $openvpn_down"
in_background_fake="start stop"
start_inactive=YES
fi
@@ -59,7 +59,7 @@ start_pre()
sysctl -a | grep -q '\.tap\.' || kldload if_tap
fi
fi
# If the config file does not specify the cd option, we do
if ! grep -q "^[ \t]*cd[ \t].*" "$openvpn_config"; then
command_args="$command_args --cd $openvpn_dir"

View File

@@ -31,5 +31,5 @@ start_pre()
eend $? || return 1
fi
$command -t
$command -t
}

View File

@@ -43,7 +43,7 @@ find_wireless()
done
;;
esac
return 1
}

View File

@@ -4,7 +4,7 @@
extra_commands="save"
description="Sets the local clock to UTC or Local Time."
description="Sets the local clock to UTC or Local Time."
description_save="Saves the current time in the BIOS."
: ${clock:=${CLOCK:-UTC}}
@@ -26,7 +26,7 @@ depend()
}
start()
{
{
ebegin "Starting the System Clock Adjuster [${utc}]"
if [ "$clock" != "UTC" ]; then
echo >/etc/wall_cmos_clock

View File

@@ -71,7 +71,7 @@ mkutmp()
: >"$1"
# Not all systems have the utmp group
chgrp utmp "$1" 2>/dev/null
chmod 0664 "$1"
chmod 0660 "$1"
}
start()
@@ -88,7 +88,7 @@ start()
eend 1 "failed to create needed directory $x"
return 1
fi
fi
fi
done
if dir_writeable /var/run; then
@@ -137,7 +137,7 @@ start()
# Make sure our X11 stuff have the correct permissions
# Omit the chown as bootmisc is run before network is up
# and users may be using lame LDAP auth #139411
rm -rf /tmp/.ICE-unix /tmp/.X11-unix
rm -rf /tmp/.ICE-unix /tmp/.X11-unix
mkdir -p /tmp/.ICE-unix /tmp/.X11-unix
chmod 1777 /tmp/.ICE-unix /tmp/.X11-unix
if [ -x /sbin/restorecon ]; then

View File

@@ -68,7 +68,7 @@ reset()
start()
{
if [ -r "$hostid_file" ]; then
_set $(cat "$hostid_file")
_set $(cat "$hostid_file")
else
reset
fi

View File

@@ -4,7 +4,7 @@
extra_commands="save show"
description="Sets the local clock to UTC or Local Time."
description="Sets the local clock to UTC or Local Time."
description_save="Saves the current time in the BIOS."
description_show="Displays the current time in the BIOS."
@@ -87,7 +87,7 @@ start()
_hwclock --adjust $utc_cmd
retval=$(($retval + $?))
fi
# If setting UTC, don't bother to run hwclock when first booting
# as that's the default
if [ "$PREVLEVEL" != N -o \
@@ -97,7 +97,7 @@ start()
_hwclock --hctosys $utc_cmd $clock_args
retval=$(($retval + $?))
fi
eend $retval "Failed to set the system clock"
return 0
@@ -126,7 +126,7 @@ stop()
_hwclock --systohc $utc_cmd $clock_args
retval=$?
eend $retval "Failed to sync clocks"
eend $retval "Failed to sync clocks"
}
save()

View File

@@ -40,11 +40,11 @@ init() {
ipfw add deny all from any to 127.0.0.0/8
ipfw add deny ip from 127.0.0.0/8 to any
if have_ip6; then
if have_ip6; then
ipfw add pass ip6 from any to any via lo0
ipfw add deny ip6 from any to ::1
ipfw add deny ip6 from ::1 to any
ipfw add pass ip6 from :: to ff02::/16 proto ipv6-icmp
ipfw add pass ip6 from fe80::/10 to fe80::/10 proto ipv6-icmp
ipfw add pass ip6 from fe80::/10 to ff02::/16 proto ipv6-icmp
@@ -78,7 +78,7 @@ start() {
ipfw add pass udp from 0.0.0.0 68 to 255.255.255.255 67 out
ipfw add pass udp from any 67 to me 68 in
ipfw add pass udp from any 67 to 255.255.255.255 68 in
# Some servers will ping the IP while trying to decide if it's
# Some servers will ping the IP while trying to decide if it's
# still in use.
ipfw add pass icmp from any to any icmptype 8
@@ -88,11 +88,11 @@ start() {
if have_ip6; then
# Allow ICMPv6 destination unreach
ipfw add pass ip6 from any to any icmp6types 1 proto ipv6-icmp
# Allow NS/NA/toobig (don't filter it out)
ipfw add pass ip6 from any to any icmp6types 2,135,136 proto ipv6-icmp
fi
# Add permits for this workstations published services below
# Only IPs and nets in firewall_allowservices is allowed in.
for i in $ipfw_ip_in; do
@@ -107,7 +107,7 @@ start() {
for i in $ipfw_ip_trust; do
ipfw add pass ip from $i to me
done
ipfw add 65000 count ip from any to any
# Drop packets to ports where we don't want logging
@@ -117,7 +117,7 @@ start() {
# Broadcasts and muticasts
ipfw add deny ip from any to 255.255.255.255
ipfw add deny ip from any to 224.0.0.0/24
ipfw add deny ip from any to 224.0.0.0/24
# Noise from routers
ipfw add deny udp from any to any 520 in

View File

@@ -17,7 +17,7 @@ start()
: ${unicode:=$UNICODE}
: ${keymap:=$KEYMAP}
: ${extended_keymaps:=$EXTENDED_KEYMAPS}
: ${windowkeys:=$SET_WINDOWSKEYS}
: ${windowkeys:=$SET_WINDOWSKEYS}
: ${fix_euro:=$FIX_EURO}
: ${dumpkeys_charset:=${DUMPKEYS_CHARSET}}

View File

@@ -15,7 +15,7 @@ start()
killall5 -15
sleep 1
eend 0
ebegin "Killing remaining processes"
ebegin "Killing remaining processes"
killall5 -9
sleep 1
eend 0

View File

@@ -21,13 +21,13 @@ depend()
start()
{
ebegin "Starting $name"
ebegin "Starting $name"
if [ -z "$moused_device" ]; then
local dev=
for dev in /dev/psm[0-9]* /dev/ums[0-9]*; do
[ -c "$dev" ] || continue
[ -e /var/run/moused-"${dev##*/}".pid ] && continue
[ -e /var/run/moused-"${dev##*/}".pid ] && continue
moused_device=$dev
eindent
einfo "Using mouse on $moused_device"
@@ -37,7 +37,7 @@ start()
fi
if [ -z "$moused_device" ]; then
eend 1 "No mouse device found"
eend 1 "No mouse device found"
return 1
fi
@@ -49,7 +49,7 @@ start()
--pidfile "$pidfile" \
-- $args -p "$moused_device" -I "$pidfile"
local retval=$?
if [ $retval = 0 ]; then
local ttyv=
for ttyv in /dev/ttyv*; do
@@ -57,6 +57,6 @@ start()
: $((retval+= $?))
done
fi
eend $retval "Failed to start moused"
}

View File

@@ -180,7 +180,7 @@ _gen_module_list()
${update} || return 0
fi
einfo "Caching network module dependencies"
einfo "Caching network module dependencies"
# Run in a subshell to protect the main script
(
after() {
@@ -215,7 +215,7 @@ _gen_module_list()
for MODULE in "${MODULESDIR}"/*.sh; do
sh -n "${MODULE}" || continue
. "${MODULE}" || continue
. "${MODULE}" || continue
MODULE=${MODULE#${MODULESDIR}/}
MODULE=${MODULE%.sh}
eval ${MODULE}_depend
@@ -343,7 +343,7 @@ _load_modules()
# Wrap our provides
local f=
for f in pre_start start post_start; do
for f in pre_start start post_start; do
eval "${provides}_${f}() { [ "$(command -v "${mod}_${f}")" = "${mod}_${f}" ] || return 0; ${mod}_${f} \"\$@\"; }"
done
@@ -357,7 +357,7 @@ _load_modules()
*" ${mod} "*)
eval x=\$module_${mod}_provides
[ -z "${x}" ] && continue
for f in pre_start start post_start; do
for f in pre_start start post_start; do
eval "${x}_${f}() { [ "$(command -v "${mod}_${f}")" = "${mod}_${f}" ] || return 0; ${mod}_${f} \"\$@\"; }"
done
eval module_${x}_providedby="${mod}"
@@ -379,7 +379,7 @@ _load_modules()
MODULES="${MODULES}${MODULES:+ }${mod}"
done
else
for mod in ${LIST}; do
for mod in ${LIST}; do
MODULES="${mod}${MODULES:+ }${MODULES}"
done
fi
@@ -395,7 +395,7 @@ _load_config()
config_index=0
local IFS="$__IFS"
set -- ${config}
# We should support a space separated array for cidr configs
if [ $# = 1 ]; then
unset IFS
@@ -415,7 +415,7 @@ _load_config()
config_0="127.0.0.1/8"
config_index=1
fi
else
else
if [ -z "$1" ]; then
ewarn "No configuration specified; defaulting to DHCP"
config_0="dhcp"
@@ -500,7 +500,7 @@ start()
fi
_up 2>/dev/null
for module in ${MODULES}; do
if [ "$(command -v "${module}_pre_start")" = "${module}_pre_start" ]; then
${module}_pre_start || exit $?
@@ -527,7 +527,7 @@ start()
_load_config
config_index=0
eval our_metric=\$metric_${IFVAR}
eval our_metric=\$metric_${IFVAR}
if [ -n "${our_metric}" ]; then
metric=${our_metric}
elif [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
@@ -536,7 +536,7 @@ start()
while true; do
eval config=\$config_${config_index}
[ -z "${config}" ] && break
[ -z "${config}" ] && break
set -- ${config}
ebegin "$1"
@@ -638,7 +638,7 @@ ${routes}"
if [ "$(command -v postup)" = "postup" ]; then
ebegin "Running postup"
eindent
postup
postup
eoutdent
fi

View File

@@ -39,7 +39,7 @@ depend()
}
start()
{
{
local myneed= myuse= pmap="portmap" nfsmounts=
[ -x @SYSCONFDIR@/init.d/rpcbind ] && pmap="rpcbind"

View File

@@ -222,7 +222,7 @@ start()
einfo "Starting network"
routeflush
if [ "$RC_UNAME" = "Linux" ]; then
ifconfig lo 127.0.0.1 netmask 255.0.0.0 || cr=1
ifconfig lo 127.0.0.1 netmask 255.0.0.0 || cr=1
route add -net 127.0.0.0 netmask 255.0.0.0 \
gw 127.0.0.1 reject 2>/dev/null
else
@@ -287,7 +287,7 @@ start()
[ $r != 0 ]
veend $?
fi
if [ -n "$defaultroute" ]; then
ebegin "Setting default route $defaultroute"
route add default $defaultroute

View File

@@ -44,7 +44,7 @@ reload()
{
ebegin "Reloading $name rules."
pfctl -q -n -f "$pf_conf" && \
{
{
# Flush everything but existing state entries that way when
# rules are read in, it doesn't break established connections.
pfctl -q -Fnat -Fqueue -Frules -FSources -Finfo -FTables -Fosfp

View File

@@ -13,11 +13,11 @@ start()
ebegin "Activating block swap devices"
swapctl -A -t blk >/dev/null
eend 0 # If swapon has nothing todo it errors, so always return 0
}
}
stop()
{
ebegin "Deactivating block swap devices"
swapctl -U -t blk >/dev/null
eend 0
eend 0
}

View File

@@ -16,7 +16,7 @@ start()
*) swapon -a >/dev/null;;
esac
eend 0 # If swapon has nothing todo it errors, so always return 0
}
}
stop()
{
@@ -31,5 +31,5 @@ stop()
NetBSD|OpenBSD) swapctl -U -t noblk >/dev/null;;
*) swapoff -a >/dev/null;;
esac
eend 0
eend 0
}

View File

@@ -15,13 +15,13 @@ start() {
done
eend $?
fi
if [ -n "$keymap" ]; then
ebegin "Setting keymap to $keymap"
kbdcontrol -l $keymap </dev/console
eend $?
fi
if [ -n "$keyrate" ]; then
ebegin "Setting keyrate to $keyrate"
kbdcontrol -r $keyrate </dev/console
@@ -40,7 +40,7 @@ start() {
done
eoutdent
fi
if [ -n "$cursor" ]; then
ebegin "Setting cursor"
vidcontrol -c $cursor

View File

@@ -2,7 +2,7 @@
# Copyright (c) 2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
depend()
depend()
{
after fsck
keyword -prefix
@@ -13,7 +13,7 @@ start()
ebegin "Setting tty flags"
ttyflags -a
eend $? || return $?
if [ -c /dev/ttyp0 ]; then
chmod 666 /dev/tty[p-uw-zP-T][0-9a-zA-Z]
fi

View File

@@ -27,10 +27,10 @@ start()
font)
cmd=$wsfld
[ "$arg2" != "-" ] && cmd="$cmd -w $arg2"
[ "$arg3" != "-" ] && cmd="$cmd -h $arg3"
[ "$arg3" != "-" ] && cmd="$cmd -h $arg3"
[ "$arg4" != "-" ] && cmd="$cmd -e $arg4"
cmd="$cmd -N $arg1 $arg5"
eval "$cmd"
eval "$cmd"
;;
screen)

View File

@@ -17,6 +17,13 @@ SNAPFILE= ${SNAPDIR}.tar.bz2
dist:
git archive --prefix=${DISTPREFIX}/ ${GITREF} | bzip2 > ${DISTFILE}
distcheck: dist
rm -rf ${DISTPREFIX}
tar xf ${DISTFILE}
MAKEFLAGS= $(MAKE) -C ${DISTPREFIX}
MAKEFLAGS= $(MAKE) -C ${DISTPREFIX} check
rm -rf ${DISTPREFIX}
snapshot:
rm -rf /tmp/${SNAPDIR}
mkdir /tmp/${SNAPDIR}

View File

@@ -38,7 +38,7 @@ ${SHLIB_NAME}: ${SOBJS}
@${ECHO} building shared library $@
@rm -f $@ ${SHLIB_LINK}
@ln -fs $@ ${SHLIB_LINK}
${CC} ${LDFLAGS} -shared -Wl,-x \
${CC} ${CFLAGS} ${LDFLAGS} -shared -Wl,-x \
-o $@ -Wl,-soname,${SONAME} \
${SOBJS} ${LDADD}

View File

@@ -28,7 +28,7 @@ all: depend ${PROG}
${CC} ${CFLAGS} ${CPPFLAGS} -c $< -o $@
${PROG}: ${SCRIPTS} ${OBJS}
${CC} ${LDFLAGS} -o $@ ${OBJS} ${LDADD}
${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${OBJS} ${LDADD}
clean:
rm -f ${CLEANFILES}

View File

@@ -21,7 +21,7 @@ apipa_start()
local iface="$1" i1= i2= addr= i=0
_exists true || return 1
einfo "Searching for free addresses in 169.254.0.0/16"
eindent

View File

@@ -19,7 +19,7 @@ arping_address()
esac
# We need to bring the interface up to test
_exists "${iface}" || return 1
_exists "${iface}" || return 1
_up "${iface}"
eval w=\$arping_wait_${IFVAR}
@@ -43,7 +43,7 @@ arping_address()
sed -n -e 'y/abcdef/ABCDEF/' -e 's/.*\[\([^]]*\)\].*/\1/p')"
fi
[ -z "${foundmac}" ] && return 1
if [ -n "${mac}" ]; then
if [ "${mac}" != "${foundmac}" ]; then
vewarn "Found ${ip} but MAC ${foundmac} does not match"
@@ -74,7 +74,7 @@ arping_start()
fi
eindent
for x in ${gateways}; do
local IFS=,
set -- ${x}
@@ -119,7 +119,7 @@ arping_start()
fi
done
unset IFS
_load_config
return 0
fi

View File

@@ -115,7 +115,7 @@ bonding_pre_start()
bonding_stop()
{
_is_bond || return 0
_is_bond || return 0
local slaves= s=
slaves=$( \

View File

@@ -17,7 +17,7 @@ br2684ctl_depend()
}
_config_vars="$_config_vars bridge bridge_add brctl"
br2684ctl_pre_start()
{
local opts=
@@ -40,7 +40,7 @@ br2684ctl_pre_start()
return 1
;;
esac
einfo "Starting RFC 2684 Bridge control on ${IFACE}"
start-stop-daemon --start --exec $(_br2684ctl) --background \
--make-pidfile --pidfile "/var/run/br2684ctl-${IFACE}.pid" \
@@ -52,7 +52,7 @@ br2684ctl_post_stop()
{
local pidfile="/var/run/br2684ctl-${IFACE}.pid"
[ -e "${pidfile}" ] || return 0
einfo "Stopping RFC 2684 Bridge control on ${IFACE}"
start-stop-daemon --stop --quiet --pidfile "${pidfile}"
eend $?

View File

@@ -38,13 +38,13 @@ bridge_pre_start()
local opts="$(_get_array "brctl_${IFVAR}")"
# brif is used for dynamic add
eval brif=\$bridge_add_${IFVAR}
# we need a way to if the bridge exists in a variable name, not just the
# contents of a variable. Eg if somebody has only bridge_add_eth0='br0',
# with no other lines mentioning br0.
eval bridge_unset=\${bridge_${IFVAR}-y\}
eval brctl_unset=\${brctl_${IFVAR}-y\}
if [ -z "${brif}" -a "${brctl_unset}" == 'y' ]; then
if [ -z "${ports}" -a "${bridge_unset}" == "y" ]; then
#eerror "Misconfigured static bridge detected (see net.example)"
@@ -186,6 +186,6 @@ bridge_post_stop()
brctl delbr "${iface}"
eend $?
fi
return 0
}

View File

@@ -5,7 +5,7 @@ _config_vars="$_config_vars ccwgroup"
ccwgroup_depend()
{
before interface
before interface
}
ccwgroup_pre_start()
@@ -42,7 +42,7 @@ ccwgroup_pre_stop()
{
# Erase any existing ccwgroup to be safe
service_set_value ccwgroup_device ""
[ ! -L /sys/class/net/"${FACE}"/driver ] && return 0
local driver="$(readlink /sys/class/net/"${IFACE}"/driver)"
case "${diver}" in
@@ -59,7 +59,7 @@ ccwgroup_post_stop()
{
local device="$(service_get_value ccwgroup_device)"
[ -z "${device}" ] && return 0
einfo "Disabling ccwgroup on ${iface}"
echo "0" >/sys/devices/qeth/"${device}"/online
echo "1" >/sys/devices/qeth/"${device}"/ungroup

View File

@@ -97,7 +97,7 @@ clip_pre_start()
return 1
fi
fi
local started_here=
if ! are_atmclip_svcs_running; then
atmclip_svcs_start || return 1

View File

@@ -139,7 +139,7 @@ _add_address()
return 0
fi
case "$1" in
case "$1" in
*:*) ifconfig "${IFACE}" inet6 add "$@"; return $?;;
esac
@@ -225,7 +225,7 @@ _delete_addresses()
while true; do
local addr=$(_get_inet_address)
[ -z "${addr}" ] && break
if [ "${addr}" = "127.0.0.1/8" ]; then
# Don't delete the loopback address
[ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] && break
@@ -246,7 +246,7 @@ _delete_addresses()
einfo "${addr}"
ifconfig "${IFACE}" inet6 del "${addr}"
done
return 0
}

View File

@@ -57,7 +57,7 @@ ifplugd_pre_start()
ewarn "WARNING: infinite timeout set for ${IFACE} to come up"
elif [ ${timeout} -lt 0 ]; then
einfo "Backgrounding ..."
exit 1
exit 1
fi
veinfo "Waiting for ${IFACE} to be marked as started"
@@ -84,7 +84,7 @@ ifplugd_stop()
local pidfile="/var/run/ifplugd.${IFACE}.pid"
[ ! -e "${pidfile}" ] && return 0
ebegin "Stopping ifplugd on ${IFACE}"
start-stop-daemon --stop --quiet --exec /usr/sbin/ifplugd \
--pidfile "${pidfile}" --signal QUIT

View File

@@ -50,7 +50,7 @@ ifwatchd_stop()
-- -c "${RC_LIBEXECDIR}/sh/ifwatchd-carrier.sh" \
-n "${RC_LIBEXECDIR}/sh/ifwatchd-nocarrier.sh" "${IFACE}" \
|| return 0
ebegin "Stopping ifwatchd on" "${IFACE}"
start-stop-daemon --stop --exec /usr/sbin/ifwatchd \
-- -c "${RC_LIBEXECDIR}/sh/ifwatchd-carrier.sh" \

View File

@@ -56,7 +56,7 @@ ip6to4_start()
[ ${i} -lt 32 ] && continue
;;
esac
veinfo "IPv4 address on ${host}: ${ip}/${subnet}"
local ipa= ip6= IFS="${IFS}."
for i in ${ip}; do
@@ -87,7 +87,7 @@ ip6to4_start()
eend $? || return 1
_up
fi
# Now apply our config
eval config_${config_index}=\'"${new}"\'
config_index=$((${config_index} - 1))

View File

@@ -117,14 +117,14 @@ _add_address()
shift; shift; shift
set -- "${one}/$(_netmask2cidr "${three}")" "$@"
fi
# tunnel keyword is 'peer' in iproute2, but 'pointopoint' in ifconfig.
if [ "$2" = "pointopoint" ]; then
local one="$1"
shift; shift
set -- "${one}" "peer" "$@"
fi
# Always scope lo addresses as host unless specified otherwise
if [ "${IFACE}" = "lo" ]; then
set -- "$@" "scope" "host"
@@ -162,7 +162,7 @@ _add_route()
set -- "${one}" "${two}" via "$@"
fi
local cmd= have_metric=false
local cmd= have_metric=false
while [ -n "$1" ]; do
case "$1" in
metric) cmd="${cmd} $1"; have_metric=true;;

View File

@@ -477,7 +477,7 @@ iwconfig_defaults()
#ifconfig "${iface}" txpower 100 2>/dev/null
ifconfig "${IFACE}" bssid -
ifconfig "${IFACE}" ssid -
ifconfig "${IFACE}" wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:-
ifconfig "${IFACE}" wepkey 1:- wepkey 2:- wepkey 3:- wepkey 4:-
ifconfig "${IFACE}" authmode open
ifconfig "${IFACE}" -mediaopt adhoc
ifconfig "${IFACE}" -mediaopt hostap
@@ -563,8 +563,8 @@ iwconfig_pre_start()
return 0
fi
iwconfig_defaults
iwconfig_user_config
iwconfig_defaults
iwconfig_user_config
# Set the base metric to be 2000
metric=2000

View File

@@ -47,7 +47,7 @@ _get_ssid()
_get_ap_mac_address()
{
local mac="$(iwgetid --raw --ap "${IFACE}")"
local mac="$(iwgetid --raw --ap "${IFACE}")"
case "${mac}" in
"00:00:00:00:00:00") return 1;;
"44:44:44:44:44:44") return 1;;
@@ -163,7 +163,7 @@ iwconfig_setup_specific()
local key=$(iwconfig_get_wep_key)
iwconfig_set_mode "${mode}"
# Now set the key
if ! eval iwconfig "${IFACE}" key "${key}"; then
if [ "${key}" != "off" ]; then
@@ -185,10 +185,10 @@ iwconfig_setup_specific()
ewarn "${IFACE} does not support setting the channel to \"${channel:-3}\""
return 1
fi
# Finally apply the user Config
iwconfig_user_config
iwconfig_report
return 0
}
@@ -226,7 +226,7 @@ iwconfig_wait_for_association()
/proc/net/wireless)" != "0" ] && return 0
fi
fi
sleep 1
[ ${timeout} -eq 0 ] && continue
i=$((${i} + 1))
@@ -281,7 +281,7 @@ iwconfig_associate()
iwconfig "${IFACE}" freq "${freq}"
fi
[ -n "${mac}" ] && iwconfig "${IFACE}" ap "${mac}"
# Finally apply the user Config
iwconfig_user_config
@@ -377,10 +377,10 @@ iwconfig_scan()
for line; do
case "${line}" in
*Address:*)
APS=$((${APS} + 1))
APS=$((${APS} + 1))
eval MAC_${APS}="\""$(echo "${line#*: }" | tr '[:lower:]' '[:upper:]')"\""
eval QUALITY_${APS}=0
;;
;;
*ESSID:*)
x=${line#*\"}
x=${x%*\"}
@@ -455,7 +455,7 @@ iwconfig_scan()
eval a=\$QUALITY_${i}
eval b=\$QUALITY_${k}
local u=${k}
# We need to split this into two tests, otherwise bash errors
# We need to split this into two tests, otherwise bash errors
[ -n "${a}" -a -n "${b}" ] && [ "${a}" -lt "${b}" ] && u=${i}
unset MAC_${u} SSID_${u} MODE_${u} CHAN_${u} QUALITY_${u} ENC_${u}
fi
@@ -581,7 +581,7 @@ iwconfig_connect_not_preferred()
break
fi
done
if ! ${pref}; then
SSID=${e}
eval mode=\$MODE_${i}
@@ -711,10 +711,10 @@ iwconfig_pre_start()
# wait if our scan returns nothing
LC_ALL=C iwconfig "${IFACE}" | sed -e '1d' | grep -q "Tx-Power=off"
local txpowerwasoff=$?
iwconfig_defaults
iwconfig_user_config
# Set the base metric to be 2000
metric=2000

View File

@@ -24,7 +24,7 @@ macchanger_pre_start()
# The interface needs to be up for macchanger to work most of the time
_down
mac=$(echo "${mac}" | tr '[:upper:]' '[:lower:]')
local hex="[0-9a-f][0-9a-f]"
case "${mac}" in

View File

@@ -59,7 +59,7 @@ netplugd_pre_start()
ewarn "WARNING: infinite timeout set for ${IFACE} to come up"
elif [ ${timeout} -lt 0 ]; then
einfo "Backgrounding ..."
exit 1
exit 1
fi
veinfo "Waiting for ${IFACE} to be marked as started"
@@ -86,7 +86,7 @@ netplugd_stop()
local pidfile="/var/run/netplugd-${IFACE}.pid"
[ ! -e "${pidfile}" ] && return 0
ebegin "Stopping netplug on" "${IFACE}"
start-stop-daemon --stop --quiet --exec /sbin/netplugd \
--pidfile "${pidfile}"

View File

@@ -31,7 +31,7 @@ pppd_pre_start()
if yesno ${IN_BACKGROUND}; then
local config=
eval config=\$config_${IFVAR}
# If no config for ppp then don't default to DHCP
# If no config for ppp then don't default to DHCP
if [ -z "${config}" ]; then
eval config_${IFVAR}=null
fi
@@ -39,7 +39,7 @@ pppd_pre_start()
fi
local link= i= unit="${IFACE#ppp}" opts=
# PPP requires a link to communicate over - normally a serial port
# PPPoE communicates over Ethernet
# PPPoA communicates over ATM
@@ -92,7 +92,7 @@ pppd_pre_start()
&& [ -n "${password}" -o -z "${passwordset}" ]; then
opts="plugin passwordfd.so ${opts} passwordfd 0"
fi
if ! ${hasdefaultmetric}; then
local m=
eval m=\$metric_${IFVAR}
@@ -122,7 +122,7 @@ pppd_pre_start()
# Set unit
opts="unit ${unit} ${opts}"
# Setup connect script
local chatprog="/usr/sbin/chat -e -E -v" phone=
eval phone=\$phone_number_${IFVAR}

View File

@@ -35,7 +35,7 @@ pump_start()
ebegin "Running pump"
eval pump "${args}"
eend $? || return 1
eend $? || return 1
_show_address
return 0
@@ -48,7 +48,7 @@ pump_stop()
start-stop-daemon --quiet --test --stop --exec /sbin/pump || return 0
# Check that pump is running on the interface
if ! pump --status --interface "${IFACE}" >/dev/null 2>&1; then
if ! pump --status --interface "${IFACE}" >/dev/null 2>&1; then
return 0
fi

View File

@@ -80,10 +80,10 @@ _system_nis()
eval servers=\$nis_servers_${IFVAR}
[ -z "${servers}" ] && servers=${nis_servers}
eval domain=\$nis_domain_${IFVAR}
[ -z "${domain}" ] && domain=${nis_domain}
[ -z "${servers}" -a -z "${domain}" ] && return 0
buffer="# Generated by net-scripts for interface ${iface}\n"
@@ -110,8 +110,8 @@ _system_nis()
system_pre_start()
{
_system_dns
_system_ntp
_system_nis
_system_ntp
_system_nis
return 0
}

View File

@@ -68,7 +68,7 @@ vlan_post_start()
local vlans=
eval vlans=\$vlans_${IFVAR}
[ -z "${vlans}" ] && return 0
_check_vlan || return 1
_exists || return 1
@@ -95,7 +95,7 @@ vlan_post_start()
start
) || mark_service_stopped "net.${ifname}"
done
return 0
}

View File

@@ -149,7 +149,7 @@ wpa_supplicant_pre_start()
if [ -z "${wpac}" ]; then
if service_started devd; then
ebegin "Backgrounding ..."
exit 1
exit 1
fi
return 0
fi
@@ -167,7 +167,7 @@ wpa_supplicant_pre_start()
-P "/var/run/wpa_cli-${IFACE}.pid" -B
if eend $?; then
ebegin "Backgrounding ..."
exit 1
exit 1
fi
# wpa_cli failed to start? OK, error here

View File

@@ -34,7 +34,7 @@ mount_svcdir()
[ $? -eq 0 ] && return 0
fi
fi
if grep -Eq "[[:space:]]+ramfs$" /proc/filesystems; then
fs="ramfs"
# ramfs has no special options
@@ -65,19 +65,27 @@ mount_svcdir()
# By default VServer already has /proc mounted, but OpenVZ does not!
# However, some of our users have an old proc image in /proc
# NFC how they managed that, but the end result means we have to test if
# /proc actually works or not. We to this by comparing uptime to one a second
# ago
# /proc actually works or not. We to this by comparing two reads of
# /proc/self/stat. They will not match, because at least the minor fault count
# field (field 10) should have changed.
#
# We can use any file here that fills the following requirements:
# - changes between sequential reads
# - is world-readable (not blocked in hardened kernel)
# - Is only a single line (ergo entire check is doable with no forks)
mountproc=true
if [ -e /proc/uptime ]; then
up="$(cat /proc/uptime)"
sleep 1
if [ "$up" = "$(cat /proc/uptime)" ]; then
f=/proc/self/stat
if [ -e $f ]; then
exec 9<$f ; read a <&9 ; exec 9<&-
exec 9<$f ; read b <&9 ; exec 9<&-
if [ "$a" = "$b" ]; then
eerror "You have cruft in /proc that should be deleted"
else
einfo "/proc is already mounted, skipping"
mountproc=false
fi
fi
unset a b f
if $mountproc; then
procfs="proc"

View File

@@ -111,7 +111,7 @@ start()
[ -n "$command" ] || return 0
local _background=
ebegin "Starting ${name:-$RC_SVCNAME}"
if yesno "${command_background}"; then
if yesno "${command_background}"; then
_background="--background --pidfile"
fi
if yesno "$start_inactive"; then
@@ -252,7 +252,7 @@ while [ -n "$1" ]; do
eerror "$RC_SVCNAME: function \`$1' defined but does not exist"
exit 1
fi
fi
fi
fi
done
eerror "$RC_SVCNAME: unknown function \`$1'"

View File

@@ -40,7 +40,7 @@ pid_is_exec(pid_t pid, const char *exec)
int c;
bool retval = false;
exec = basename_c(exec);
exec = basename_c(exec);
snprintf(buffer, sizeof(buffer), "/proc/%d/stat", pid);
if ((fp = fopen(buffer, "r"))) {
while ((c = getc(fp)) != EOF && c != '(')
@@ -283,7 +283,7 @@ _match_daemon(const char *path, const char *file, RC_STRINGLIST *match)
}
static RC_STRINGLIST *
_match_list(const char *exec, const char* const* argv, const char *pidfile)
_match_list(const char *exec, const char *const *argv, const char *pidfile)
{
RC_STRINGLIST *match = rc_stringlist_new();
int i = 0;
@@ -297,7 +297,7 @@ _match_list(const char *exec, const char* const* argv, const char *pidfile)
rc_stringlist_add(match, m);
free(m);
}
while (argv && argv[i]) {
l = strlen(*argv) + strlen("argv_=") + 16;
m = xmalloc(sizeof(char) * l);
@@ -323,7 +323,7 @@ rc_service_daemon_set(const char *service, const char *exec,
const char *pidfile, bool started)
{
char dirpath[PATH_MAX];
char file[PATH_MAX];
char file[PATH_MAX];
int nfiles = 0;
char oldfile[PATH_MAX] = { '\0' };
bool retval = false;

View File

@@ -114,7 +114,13 @@ get_deptype(const RC_DEPINFO *depinfo, const char *type)
}
RC_DEPTREE *
rc_deptree_load(void)
rc_deptree_load(void) {
return rc_deptree_load_file(RC_DEPTREE_CACHE);
}
librc_hidden_def(rc_deptree_load)
RC_DEPTREE *
rc_deptree_load_file(const char *deptree_file)
{
FILE *fp;
RC_DEPTREE *deptree;
@@ -127,7 +133,7 @@ rc_deptree_load(void)
char *e;
int i;
if (!(fp = fopen(RC_DEPTREE_CACHE, "r")))
if (!(fp = fopen(deptree_file, "r")))
return NULL;
deptree = xmalloc(sizeof(*deptree));
@@ -172,16 +178,16 @@ rc_deptree_load(void)
}
fclose(fp);
free(line);
return deptree;
}
librc_hidden_def(rc_deptree_load)
librc_hidden_def(rc_deptree_load_file)
static bool
valid_service(const char *runlevel, const char *service, const char *type)
{
RC_SERVICE state;
if (!runlevel ||
strcmp(type, "ineed") == 0 ||
strcmp(type, "needsme") == 0)
@@ -393,7 +399,7 @@ visit_service(const RC_DEPTREE *deptree,
if (!(di = get_depinfo(deptree, service->value)))
continue;
provided = get_provided(di, runlevel, options);
if (TAILQ_FIRST(provided)) {
TAILQ_FOREACH(p, provided, entries) {
di = get_depinfo(deptree, p->value);
@@ -767,14 +773,14 @@ rc_deptree_update(void)
if (!depinfo || strcmp(depinfo->service, service) != 0) {
deptype = NULL;
depinfo = get_depinfo(deptree, service);
if (!depinfo) {
if (!depinfo) {
depinfo = xmalloc(sizeof(*depinfo));
TAILQ_INIT(&depinfo->depends);
depinfo->service = xstrdup(service);
TAILQ_INSERT_TAIL(deptree, depinfo, entries);
}
}
/* We may not have any depends */
if (!type || !depends)
continue;
@@ -815,7 +821,7 @@ rc_deptree_update(void)
depend[l - 2] == 's' &&
depend[l - 1] == 'h')
continue;
/* Remove our dependency if instructed */
if (depend[0] == '!') {
rc_stringlist_delete(deptype->services, depend + 1);

View File

@@ -61,7 +61,7 @@ rc_getline(char **line, size_t *len, FILE *fp)
char *p;
size_t last = 0;
while(!feof(fp)) {
while (!feof(fp)) {
if (*line == NULL || last != 0) {
*len += BUFSIZ;
*line = xrealloc(*line, *len);
@@ -218,3 +218,52 @@ rc_config_value(RC_STRINGLIST *list, const char *entry)
return NULL;
}
librc_hidden_def(rc_config_value)
/* Global for caching the strings loaded from rc.conf to avoid reparsing for
* each rc_conf_value call */
static RC_STRINGLIST *rc_conf = NULL;
char *
rc_conf_value(const char *setting)
{
RC_STRINGLIST *old;
RC_STRING *s;
char *p;
if (! rc_conf) {
rc_conf = rc_config_load(RC_CONF);
#ifdef DEBUG_MEMORY
atexit(_free_rc_conf);
#endif
/* Support old configs */
if (exists(RC_CONF_OLD)) {
old = rc_config_load(RC_CONF_OLD);
TAILQ_CONCAT(rc_conf, old, entries);
#ifdef DEBUG_MEMORY
free(old);
#endif
}
/* Convert old uppercase to lowercase */
TAILQ_FOREACH(s, rc_conf, entries) {
p = s->value;
while (p && *p && *p != '=') {
if (isupper((unsigned char)*p))
*p = tolower((unsigned char)*p);
p++;
}
}
}
return rc_config_value(rc_conf, setting);
}
librc_hidden_def(rc_conf_value)
#ifdef DEBUG_MEMORY
static void
_free_rc_conf(void)
{
rc_stringlist_free(rc_conf);
}
#endif

View File

@@ -146,7 +146,7 @@ librc_hidden_def(rc_stringlist_sort)
void
rc_stringlist_free(RC_STRINGLIST *list)
{
RC_STRING *s1;
RC_STRING *s1;
RC_STRING *s2;
if (!list)

View File

@@ -72,7 +72,7 @@ ls_dir(const char *dir, int options)
{
DIR *dp;
struct dirent *d;
RC_STRINGLIST *list = NULL;
RC_STRINGLIST *list = NULL;
struct stat buf;
size_t l;
char file[PATH_MAX];
@@ -198,23 +198,24 @@ file_regex(const char *file, const char *regex)
}
#endif
/* New sys identification code
* Not to be used for any binaries outside of openrc. */
const char *
rc_sys_v2(void)
{
#define __STRING_SWITCH(x) { char* __string_switch = x; if(false) {}
#define __STRING_CASE(y) else if(strcmp(__string_switch,y) == 0)
#define __STRING_SWITCH(x) { char *__string_switch = x; if (false) {}
#define __STRING_CASE(y) else if (strcmp(__string_switch,y) == 0)
#define __STRING_SWITCH_END() }
char* systype = rc_conf_value("rc_sys");
/* New sys identification code */
if(systype) {
char* s = systype;
// Convert to uppercase
while(s && *s) {
if(islower((unsigned char)*s))
*s = toupper((unsigned char)*s);
char *systype = rc_conf_value("rc_sys");
if (systype) {
char *s = systype;
/* Convert to uppercase */
while (s && *s) {
if (islower((unsigned char) *s))
*s = toupper((unsigned char) *s);
s++;
}
// Now do detection
/* Now do detection */
__STRING_SWITCH(systype)
__STRING_CASE(RC_SYS_PREFIX) { return RC_SYS_PREFIX; }
#ifdef __FreeBSD__
@@ -241,13 +242,14 @@ rc_sys_v2(void)
}
librc_hidden_def(rc_sys_v2)
/* Old sys identification code */
/* Old sys identification code.
* Not to be used for any binaries outside of openrc. */
const char *
rc_sys_v1(void)
{
#ifdef PREFIX
return RC_SYS_PREFIX;
#else
#else
#ifdef __FreeBSD__
int jailed = 0;
@@ -290,7 +292,7 @@ librc_hidden_def(rc_sys_v1)
const char *
rc_sys(void)
{
if(rc_conf_value("rc_sys")) {
if (rc_conf_value("rc_sys")) {
return rc_sys_v2();
} else {
return rc_sys_v1();
@@ -389,7 +391,7 @@ bool
rc_runlevel_stack(const char *dst, const char *src)
{
char d[PATH_MAX], s[PATH_MAX];
if (!rc_runlevel_exists(dst) || !rc_runlevel_exists(src))
return false;
snprintf(s, sizeof(s), "../%s", src);
@@ -402,7 +404,7 @@ bool
rc_runlevel_unstack(const char *dst, const char *src)
{
char path[PATH_MAX];
snprintf(path, sizeof(path), "%s/%s/%s", RC_RUNLEVELDIR, dst, src);
return (unlink(path) == 0 ? true : false);
}
@@ -638,7 +640,7 @@ rc_service_mark(const char *service, const RC_SERVICE state)
}
skip_state = state;
}
if (state == RC_SERVICE_HOTPLUGGED || state == RC_SERVICE_FAILED) {
free(init);
return true;
@@ -786,7 +788,7 @@ rc_service_value_set(const char *service, const char *option,
{
FILE *fp;
char file[PATH_MAX];
char *p = file;
char *p = file;
p += snprintf(file, sizeof(file), RC_SVCDIR "/options/%s", service);
if (mkdir(file, 0755) != 0 && errno != EEXIST)

View File

@@ -72,6 +72,7 @@
#define librc_hidden_proto(x) hidden_proto(x)
#define librc_hidden_def(x) hidden_def(x)
librc_hidden_proto(rc_conf_value)
librc_hidden_proto(rc_config_list)
librc_hidden_proto(rc_config_load)
librc_hidden_proto(rc_config_value)
@@ -79,6 +80,7 @@ librc_hidden_proto(rc_deptree_depend)
librc_hidden_proto(rc_deptree_depends)
librc_hidden_proto(rc_deptree_free)
librc_hidden_proto(rc_deptree_load)
librc_hidden_proto(rc_deptree_load_file)
librc_hidden_proto(rc_deptree_order)
librc_hidden_proto(rc_deptree_update)
librc_hidden_proto(rc_deptree_update_needed)

View File

@@ -43,6 +43,14 @@ __BEGIN_DECLS
#define RC_CONFDIR RC_SYSCONFDIR "/conf.d"
#define RC_PLUGINDIR RC_LIBDIR "/plugins"
#define RC_PROFILE_ENV RC_SYSCONFDIR "/profile.env"
#define RC_SYS_WHITELIST RC_LIBEXECDIR "/conf.d/env_whitelist"
#define RC_USR_WHITELIST RC_SYSCONFDIR "/conf.d/env_whitelist"
#define RC_CONF RC_SYSCONFDIR "/rc.conf"
#define RC_CONF_OLD RC_SYSCONFDIR "/conf.d/rc"
#define RC_PATH_PREFIX RC_LIBEXECDIR "/bin:/bin:/sbin:/usr/bin:/usr/sbin"
/* PKG_PREFIX is where packages are installed if different from the base OS
* On Gentoo this is normally unset, on FreeBSD /usr/local and on NetBSD
* /usr/pkg. */
@@ -342,7 +350,7 @@ typedef void *RC_DEPTREE;
* @param target
* @param mtime of newest target
* @param filename of the newest target (needs mtime param)
* @return true if source is newer than target, otherwise false */
* @return true if source is newer than target, otherwise false */
bool rc_newer_than(const char *, const char *, time_t *, char *);
/*! Check to see if source is older than target.
@@ -351,7 +359,7 @@ bool rc_newer_than(const char *, const char *, time_t *, char *);
* @param target
* @param mtime of oldest target
* @param filename of the oldest target (needs mtime param)
* @return true if source is older than target, otherwise false */
* @return true if source is older than target, otherwise false */
bool rc_older_than(const char *, const char *, time_t *, char *);
/*! Update the cached dependency tree if it's older than any init script,
@@ -375,6 +383,11 @@ bool rc_deptree_update_needed(time_t *, char *);
* @return pointer to the dependency tree */
RC_DEPTREE *rc_deptree_load(void);
/*! Load a cached dependency tree from the specified file and return a pointer
* to it. This pointer should be freed with rc_deptree_free when done.
* @return pointer to the dependency tree */
RC_DEPTREE *rc_deptree_load_file(const char *);
/*! List the depend for the type of service
* @param deptree to search
* @param type to use (keywords, etc)
@@ -457,6 +470,9 @@ RC_STRINGLIST *rc_config_load(const char *);
/*! Return the value of the entry from a key=value list. */
char *rc_config_value(RC_STRINGLIST *, const char *);
/*! Return the value of the entry from rc.conf. */
char *rc_conf_value(const char *);
/*! Check if a variable is a boolean and return its value.
* If variable is not a boolean then we set errno to be ENOENT when it does
* not exist or EINVAL if it's not a boolean.
@@ -503,7 +519,7 @@ RC_STRING *rc_stringlist_find(RC_STRINGLIST *, const char *);
RC_STRINGLIST *rc_stringlist_split(const char *, const char *);
/*! Sort the list according to C locale
/*! Sort the list according to C locale
* @param list to sort */
void rc_stringlist_sort(RC_STRINGLIST **);

View File

@@ -1,5 +1,6 @@
RC_1.0 {
global:
rc_conf_value;
rc_config_list;
rc_config_load;
rc_config_value;
@@ -7,6 +8,7 @@ global:
rc_deptree_depends;
rc_deptree_free;
rc_deptree_load;
rc_deptree_load_file;
rc_deptree_order;
rc_deptree_update;
rc_deptree_update_needed;

View File

@@ -109,7 +109,7 @@ do_mount(struct ENT *ent)
argv[6] = ENT_FILE(*ent);
argv[7] = NULL;
switch (pid = vfork()) {
case -1:
case -1:
eerrorx("%s: vfork: %s", applet, strerror(errno));
/* NOTREACHED */
case 0:

View File

@@ -152,7 +152,7 @@ do_e(int argc, char **argv)
ts.tv_nsec = WAIT_INTERVAL;
for (i = 0; i < argc; i++) {
ebeginv("Waiting for %s", argv[i]);
for (;;){
for (;;) {
if (exists(argv[i]))
break;
if (nanosleep(&ts, NULL) == -1)
@@ -298,7 +298,7 @@ do_service(int argc, char **argv)
}
}
ok = rc_service_started_daemon(service, exec, NULL, idx);
} else if (strcmp(applet, "service_crashed") == 0) {
ok = (_rc_can_find_pids() &&
rc_service_daemons_crashed(service) &&
@@ -476,7 +476,7 @@ run_applets(int argc, char **argv)
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
};
};
if (applet[0] == 'e' || (applet[0] == 'v' && applet[1] == 'e'))
exit(do_e(argc, argv));

View File

@@ -106,7 +106,7 @@ _rc_deptree_load(int force, int *regen) {
}
#include "_usage.h"
#define getoptstring "aot:suT" getoptstring_COMMON
#define getoptstring "aot:suTF:" getoptstring_COMMON
static const struct option longopts[] = {
{ "starting", 0, NULL, 'a'},
{ "stopping", 0, NULL, 'o'},
@@ -114,6 +114,7 @@ static const struct option longopts[] = {
{ "notrace", 0, NULL, 'T'},
{ "strict", 0, NULL, 's'},
{ "update", 0, NULL, 'u'},
{ "deptree-file", 1, NULL, 'F'},
longopts_COMMON
};
static const char * const longopts_help[] = {
@@ -123,6 +124,7 @@ static const char * const longopts_help[] = {
"Don't trace service dependencies",
"Only use what is in the runlevels",
"Force an update of the dependency tree",
"File to load cached deptree from",
longopts_help_COMMON
};
#include "_usage.c"
@@ -141,6 +143,7 @@ rc_depend(int argc, char **argv)
char *runlevel = xstrdup(getenv("RC_RUNLEVEL"));
int opt;
char *token;
char *deptree_file = NULL;
types = rc_stringlist_new();
while ((opt = getopt_long(argc, argv, getoptstring,
@@ -166,13 +169,21 @@ rc_depend(int argc, char **argv)
case 'T':
options &= RC_DEP_TRACE;
break;
case 'F':
deptree_file = xstrdup(optarg);
break;
case_RC_COMMON_GETOPT
case_RC_COMMON_GETOPT
}
}
if (!(deptree = _rc_deptree_load(update, NULL)))
eerrorx("failed to load deptree");
if (deptree_file) {
if (!(deptree = rc_deptree_load_file(deptree_file)))
eerrorx("failed to load deptree");
} else {
if (!(deptree = _rc_deptree_load(update, NULL)))
eerrorx("failed to load deptree");
}
if (!runlevel)
runlevel = rc_runlevel_get();

View File

@@ -172,7 +172,7 @@ rc_logger_open(const char *level)
ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws);
if (openpty(&rc_logger_tty, &slave_tty, NULL, &tt, &ws))
return;
} else
} else
if (openpty(&rc_logger_tty, &slave_tty, NULL, NULL, NULL))
return;

View File

@@ -52,61 +52,7 @@
#include "rc-misc.h"
#include "version.h"
#define PROFILE_ENV RC_SYSCONFDIR "/profile.env"
#define SYS_WHITELIST RC_LIBEXECDIR "/conf.d/env_whitelist"
#define USR_WHITELIST RC_SYSCONFDIR "/conf.d/env_whitelist"
#define RC_CONF RC_SYSCONFDIR "/rc.conf"
#define RC_CONF_OLD RC_SYSCONFDIR "/conf.d/rc"
#define PATH_PREFIX RC_LIBEXECDIR "/bin:/bin:/sbin:/usr/bin:/usr/sbin"
static RC_STRINGLIST *rc_conf = NULL;
extern char** environ;
#ifdef DEBUG_MEMORY
static void
_free_rc_conf(void)
{
rc_stringlist_free(rc_conf);
}
#endif
char *
rc_conf_value(const char *setting)
{
RC_STRINGLIST *old;
RC_STRING *s;
char *p;
if (! rc_conf) {
rc_conf = rc_config_load(RC_CONF);
#ifdef DEBUG_MEMORY
atexit(_free_rc_conf);
#endif
/* Support old configs */
if (exists(RC_CONF_OLD)) {
old = rc_config_load(RC_CONF_OLD);
TAILQ_CONCAT(rc_conf, old, entries);
#ifdef DEBUG_MEMORY
free(old);
#endif
}
/* Convert old uppercase to lowercase */
TAILQ_FOREACH(s, rc_conf, entries) {
p = s->value;
while (p && *p && *p != '=') {
if (isupper((unsigned char)*p))
*p = tolower((unsigned char)*p);
p++;
}
}
}
return rc_config_value(rc_conf, setting);
}
extern char **environ;
bool
rc_conf_yesno(const char *setting)
@@ -135,7 +81,7 @@ env_filter(void)
/* Add the user defined list of vars */
env_allow = rc_stringlist_split(rc_conf_value("rc_env_allow"), " ");
profile = rc_config_load(PROFILE_ENV);
profile = rc_config_load(RC_PROFILE_ENV);
/* Copy the env and work from this so we can manipulate it safely */
env_list = rc_stringlist_new();
@@ -181,7 +127,7 @@ env_filter(void)
void
env_config(void)
{
size_t pplen = strlen(PATH_PREFIX);
size_t pplen = strlen(RC_PATH_PREFIX);
char *path;
char *p;
char *e;
@@ -199,16 +145,16 @@ env_config(void)
for a little extra security */
path = getenv("PATH");
if (! path)
setenv("PATH", PATH_PREFIX, 1);
else if (strncmp (PATH_PREFIX, path, pplen) != 0) {
setenv("PATH", RC_PATH_PREFIX, 1);
else if (strncmp (RC_PATH_PREFIX, path, pplen) != 0) {
l = strlen(path) + pplen + 3;
e = p = xmalloc(sizeof(char) * l);
p += snprintf(p, l, "%s", PATH_PREFIX);
p += snprintf(p, l, "%s", RC_PATH_PREFIX);
/* Now go through the env var and only add bits not in our
* PREFIX */
while ((token = strsep(&path, ":"))) {
np = npp = xstrdup(PATH_PREFIX);
np = npp = xstrdup(RC_PATH_PREFIX);
while ((tok = strsep(&npp, ":")))
if (strcmp(tok, token) == 0)
break;
@@ -316,7 +262,7 @@ exec_service(const char *service, const char *arg)
fd = svc_lock(basename_c(service));
if (fd == -1)
return -1;
file = rc_service_resolve(service);
if (!exists(file)) {
rc_service_mark(service, RC_SERVICE_STOPPED);

View File

@@ -105,7 +105,7 @@ rc_plugin_load(void)
continue;
}
fptr = (int (*)(RC_HOOK, const char*))
fptr = (int (*)(RC_HOOK, const char *))
dlfunc(h, RC_PLUGIN_HOOK);
if (fptr == NULL) {
eerror("%s: cannot find symbol `%s'",
@@ -200,7 +200,7 @@ rc_plugin_run(RC_HOOK hook, const char *value)
sigaction(SIGUSR1, &sa, NULL);
sigaction(SIGWINCH, &sa, NULL);
sigprocmask(SIG_SETMASK, &old, NULL);
rc_in_plugin = true;
close(pfd[0]);
rc_environ_fd = fdopen(pfd[1], "w");

View File

@@ -153,7 +153,7 @@ cleanup(void)
#ifdef DEBUG_MEMORY
while (p1) {
p2 = LIST_NEXT(p1, entries);
p2 = LIST_NEXT(p1, entries);
free(p1);
p1 = p2;
}
@@ -315,7 +315,7 @@ open_shell(void)
{
const char *shell;
struct passwd *pw;
#ifdef __linux__
const char *sys = rc_sys();
@@ -586,7 +586,7 @@ do_stop_services(const char *newlevel, bool parallel, bool going_down)
}
crashed = rc_conf_yesno("rc_crashed_stop");
nostop = rc_stringlist_split(rc_conf_value("rc_nostop"), " ");
TAILQ_FOREACH_REVERSE(service, stop_services, rc_stringlist, entries)
{
@@ -804,6 +804,7 @@ main(int argc, char **argv)
int opt;
bool parallel;
int regen = 0;
int i;
#ifdef __linux__
char *proc;
char *p;
@@ -816,6 +817,20 @@ main(int argc, char **argv)
signal_setup(SIGSEGV, handle_bad_signal);
#endif
/* Bug 351712: We need an extra way to explicitly select an applet OTHER
* than trusting argv[0], as argv[0] is not going to be the applet value if
* we are doing SELinux context switching. For this, we allow calls such as
* 'rc --applet APPLET', and shift ALL of argv down by two array items. */
if (strcmp(basename_c(argv[0]), "rc") == 0 && argc > 1 && strcmp(argv[1], "--applet") == 0) {
if (argc == 2)
eerrorx("applet argument required");
for (i = 2; i < argc; i++)
argv[i - 2] = argv[i];
argv[argc - 2] = NULL;
argv[argc - 1] = NULL;
argc -= 2;
}
/* Now we can trust our applet value in argv[0] */
applet = basename_c(argv[0]);
LIST_INIT(&service_pids);
atexit(cleanup);
@@ -880,12 +895,12 @@ main(int argc, char **argv)
case 'S':
if (rc_conf_value("rc_sys")) {
bootlevel = rc_sys_v2();
if(bootlevel)
if (bootlevel)
printf("%s\n", bootlevel);
} else {
ewarn("WARNING: rc_sys not defined in rc.conf. Falling back to automatic detection");
bootlevel = rc_sys_v1();
if(bootlevel)
if (bootlevel)
printf("%s\n", bootlevel);
}
exit(EXIT_SUCCESS);

View File

@@ -451,7 +451,7 @@ svc_exec(const char *arg1, const char *arg2)
signal_pipe[0] = signal_pipe[1] = -1;
sigprocmask (SIG_SETMASK, &oldmask, NULL);
if (master_tty >= 0) {
/* Why did we do this? */
/* signal (SIGWINCH, SIG_IGN); */
@@ -572,7 +572,7 @@ svc_start_check(void)
RC_SERVICE state;
state = rc_service_state(service);
if (in_background) {
if (!(state & (RC_SERVICE_INACTIVE | RC_SERVICE_STOPPED)))
exit(EXIT_FAILURE);
@@ -583,7 +583,7 @@ svc_start_check(void)
" next runlevel", applet);
}
if (exclusive_fd == -1)
if (exclusive_fd == -1)
exclusive_fd = svc_lock(applet);
if (exclusive_fd == -1) {
if (errno == EACCES)
@@ -603,7 +603,7 @@ svc_start_check(void)
else if (state & RC_SERVICE_INACTIVE && !in_background)
ewarnx("WARNING: %s has already started, but is inactive",
applet);
rc_service_mark(service, RC_SERVICE_STARTING);
hook_out = RC_HOOK_SERVICE_START_OUT;
rc_plugin_run(RC_HOOK_SERVICE_START_IN, applet);
@@ -619,7 +619,7 @@ svc_start_deps(void)
size_t len;
char *p, *tmp;
pid_t pid;
errno = 0;
if (rc_conf_yesno("rc_depend_strict") || errno == ENOENT)
depoptions |= RC_DEP_STRICT;
@@ -725,7 +725,7 @@ svc_start_deps(void)
n = 0;
TAILQ_FOREACH(svc, tmplist, entries) {
rc_service_schedule_start(svc->value, service);
use_services = rc_deptree_depend(deptree,
use_services = rc_deptree_depend(deptree,
"iprovide", svc->value);
TAILQ_FOREACH(svc2, use_services, entries)
rc_service_schedule_start(svc2->value, service);
@@ -760,7 +760,7 @@ static void svc_start_real()
{
bool started;
RC_STRING *svc, *svc2;
if (ibsave)
setenv("IN_BACKGROUND", ibsave, 1);
hook_out = RC_HOOK_SERVICE_START_DONE;
@@ -873,7 +873,7 @@ svc_stop_deps(RC_SERVICE state)
if (state & RC_SERVICE_WASINACTIVE)
return;
errno = 0;
if (rc_conf_yesno("rc_depend_strict") || errno == ENOENT)
depoptions |= RC_DEP_STRICT;
@@ -941,7 +941,7 @@ svc_stop_deps(RC_SERVICE state)
}
rc_stringlist_free(tmplist);
tmplist = NULL;
/* We now wait for other services that may use us and are
* stopping. This is important when a runlevel stops */
services = rc_deptree_depends(deptree, types_mua, applet_list,
@@ -959,7 +959,7 @@ static void
svc_stop_real(void)
{
bool stopped;
/* If we're stopping localmount, set LC_ALL=C so that
* bash doesn't load anything blocking the unmounting of /usr */
if (strcmp(applet, "localmount") == 0)
@@ -1138,7 +1138,7 @@ runscript(int argc, char **argv)
file = basename_c(argv[1]);
else
file = basename_c(lnk);
dir = save;
dir = save;
} else
file = basename_c(argv[1]);
ll = strlen(dir) + strlen(file) + 2;
@@ -1206,7 +1206,7 @@ runscript(int argc, char **argv)
#endif
deps = true;
/* Punt the first arg as its our service name */
argc--;
argv++;
@@ -1363,7 +1363,7 @@ runscript(int argc, char **argv)
RC_SERVICE_INACTIVE)
{
TAILQ_FOREACH(svc,
restart_services,
restart_services,
entries)
if (rc_service_state(svc->value) &
RC_SERVICE_STOPPED)

View File

@@ -43,7 +43,7 @@
#include <sys/ioctl.h>
#include <sys/resource.h>
#include <sys/stat.h>
#include <sys/termios.h>
#include <termios.h>
#include <sys/time.h>
#include <sys/wait.h>
@@ -322,7 +322,7 @@ get_pid(const char *pidfile, bool quiet)
fclose(fp);
return -1;
}
fclose(fp);
return pid;
@@ -631,7 +631,7 @@ static const struct option longopts[] = {
longopts_COMMON
};
static const char * const longopts_help[] = {
"Set an ionice class:data when starting",
"Set an ionice class:data when starting",
"Stop daemon",
"Set a nicelevel when starting",
"Retry schedule to use when stopping",
@@ -1210,7 +1210,7 @@ start_stop_daemon(int argc, char **argv)
/* Clean the environment of any RC_ variables */
env_list = rc_stringlist_new();
i = 0;
while(environ[i])
while (environ[i])
rc_stringlist_add(env_list, environ[i++]);
#ifdef HAVE_PAM
@@ -1343,7 +1343,7 @@ start_stop_daemon(int argc, char **argv)
if (start_wait > 0) {
struct timespec ts;
bool alive = false;
ts.tv_sec = start_wait / 1000;
ts.tv_nsec = (start_wait % 1000) * ONE_MS;
if (nanosleep(&ts, NULL) == -1) {

3
src/test/.gitignore vendored
View File

@@ -1,5 +1,6 @@
einfo.data.out
einfo.funcs.out
librc.funcs.hidden.out
librc.funcs.hidden.list
rc.data.out
rc.funcs.out
rc.funcs.out

View File

@@ -1,56 +0,0 @@
rc_config_list
rc_config_load
rc_config_value
rc_deptree_depend
rc_deptree_depends
rc_deptree_free
rc_deptree_load
rc_deptree_order
rc_deptree_update
rc_deptree_update_needed
rc_find_pids
rc_getline
rc_newer_than
rc_older_than
rc_runlevel_exists
rc_runlevel_get
rc_runlevel_list
rc_runlevel_set
rc_runlevel_stack
rc_runlevel_stacks
rc_runlevel_starting
rc_runlevel_stopping
rc_runlevel_unstack
rc_service_add
rc_service_daemon_set
rc_service_daemons_crashed
rc_service_delete
rc_service_description
rc_service_exists
rc_service_extra_commands
rc_service_in_runlevel
rc_service_mark
rc_service_resolve
rc_service_schedule_clear
rc_service_schedule_start
rc_service_started_daemon
rc_service_state
rc_service_value_get
rc_service_value_set
rc_services_in_runlevel
rc_services_in_runlevel_stacked
rc_services_in_state
rc_services_scheduled
rc_services_scheduled_by
rc_stringlist_add
rc_stringlist_addu
rc_stringlist_delete
rc_stringlist_find
rc_stringlist_free
rc_stringlist_new
rc_stringlist_sort
rc_stringlist_split
rc_sys
rc_sys_v1
rc_sys_v2
rc_yesno

View File

@@ -1,3 +1,5 @@
rc_conf_value
rc_conf_value@@RC_1.0
rc_config_list
rc_config_list@@RC_1.0
rc_config_load
@@ -12,6 +14,8 @@ rc_deptree_free
rc_deptree_free@@RC_1.0
rc_deptree_load
rc_deptree_load@@RC_1.0
rc_deptree_load_file
rc_deptree_load_file@@RC_1.0
rc_deptree_order
rc_deptree_order@@RC_1.0
rc_deptree_update

View File

@@ -66,6 +66,50 @@ syms=$(diff -u librc.funcs.hidden.list librc.funcs.hidden.out | sed -n '/^+[^+]/
eend $? "Missing hidden defs:"$'\n'"${syms}"
ret=$(($ret + $?))
ebegin "Checking trailing whitespace in code"
# XXX: Should we check man pages too ?
out=$(cd ${top_srcdir}; find */ \
'(' -name '*.[ch]' -o -name '*.in' -o -name '*.sh' ')' \
-exec grep -n -E '[[:space:]]+$' {} +)
[ -z "${out}" ]
eend $? "Trailing whitespace needs to be deleted:"$'\n'"${out}"
ebegin "Checking trailing newlines in code"
out=$(cd ${top_srcdir};
for f in `find */ -name '*.[ch]'` ; do
sed -n -e :a -e '/^\n*$/{$q1;N;ba' -e '}' $f || echo $f
done)
[ -z "${out}" ]
eend $? "Trailing newlines need to be deleted:"$'\n'"${out}"
ebegin "Checking for obsolete functions"
out=$(cd ${top_srcdir}; find src -name '*.[ch]' \
-exec grep -n -E '\<(malloc|memory|sys/(errno|fcntl|signal|stropts|termios|unistd))\.h\>' {} +)
[ -z "${out}" ]
eend $? "Avoid these obsolete functions:"$'\n'"${out}"
ebegin "Checking for x* func usage"
out=$(cd ${top_srcdir}; find src -name '*.[ch]' \
-exec grep -n -E '\<(malloc|strdup)[[:space:]]*\(' {} + \
| grep -v \
-e src/includes/rc-misc.h \
-e src/libeinfo/libeinfo.c)
[ -z "${out}" ]
eend $? "These need to be using the x* variant:"$'\n'"${out}"
ebegin "Checking spacing style"
out=$(cd ${top_srcdir}; find src -name '*.[ch]' \
-exec grep -n -E \
-e '\<(for|if|switch|while)\(' \
-e '\<(for|if|switch|while) \( ' \
-e ' ;' \
-e '[[:space:]]$' \
-e '\){' \
-e '(^|[^:])//' \
{} +)
[ -z "${out}" ]
eend $? "These lines violate style rules:"$'\n'"${out}"
einfo "Running unit tests"
eindent
for u in units/*; do

View File

@@ -9,14 +9,18 @@ srcdir=${srcdir:-.}
top_builddir=${top_builddir:-${top_srcdir}}
builddir=${builddir:-${srcdir}}
if ! . ${top_srcdir}/sh/functions.sh; then
export LD_LIBRARY_PATH=${top_builddir}/src/libeinfo:${top_builddir}/src/librc:${LD_LIBRARY_PATH}
export PATH=${top_builddir}/src/rc:${PATH}
if [ ! -f ${top_srcdir}/sh/functions.sh ] ; then
echo "functions.sh not yet created !?" 1>&2
exit 1
elif ! . ${top_srcdir}/sh/functions.sh; then
echo "Sourcing functions.sh failed !?" 1>&2
exit 1
fi
export LD_LIBRARY_PATH=${top_builddir}/src/libeinfo:${top_builddir}/src/librc:${LD_LIBRARY_PATH}
export PATH=${top_builddir}/src/rc:${PATH}
cd ${top_srcdir}/src/rc
${MAKE:-make} links >/dev/null
cd -