On Mon, Jun 27, 2011 at 11:27 AM, Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> wrote:
Seblu, 2011-06-27 00:51:
On Mon, Jun 27, 2011 at 12:44 AM, Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> wrote:
Seblu, 2011-06-27 00:28:
On Sun, Jun 26, 2011 at 11:51 PM, Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> wrote:
--- functions | 7 +++++++ rc.sysinit | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/functions b/functions index 43414c0..9ad75a9 100644 --- a/functions +++ b/functions @@ -428,6 +428,13 @@ install_file() { install -T "$@"<(printf '%s' "$content") "$file" }
+# install would fail because files can't be removed from /proc +# moreover we don't want to remove nodes from /dev +write_file() { + local file=$1 content=$2 + printf '%s' "$content">| "$file" +} + bootlogd_stop() { [[ -f /run/bootlogd.pid ]] || return 0 touch /var/log/boot diff --git a/rc.sysinit b/rc.sysinit index dcc88f5..2c08f02 100755 --- a/rc.sysinit +++ b/rc.sysinit @@ -209,7 +209,7 @@ status "Activating Swap" swapon -a RANDOM_SEED=/var/lib/misc/random-seed [[ -f $RANDOM_SEED ]]&& status "Initializing Random Seed" \ - install_file /dev/urandom "$(< "$RANDOM_SEED" )" + cp "$RANDOM_SEED" /dev/urandom
stat_busy "Removing Leftover Files" rm -rf /etc/{nologin,shutdownpid} /forcefsck /tmp/* /tmp/.*&>/dev/null @@ -225,7 +225,7 @@ stat_done
[[ $HOSTNAME ]]&& status "Setting Hostname: $HOSTNAME" \ - install_file /proc/sys/kernel/hostname "$HOSTNAME" + write_file /proc/sys/kernel/hostname "$HOSTNAME"
Do you call a function to do the job of a redirection?
Yep. We need to do it _within_ status.
Reading (or not) your commit message I thought you wanted to do that. What do you think about doing you eval inside status?
Would be rather difficult because eval does word splitting. It was a joke, using eval should be avoided.
Or better, just rollback from your previous patch where you assert this write can be done in one line with status instead of a classic status_start / status_done? In this case, the use of status is not the best choice I think.
Using status + write_file is better in this case IMHO for some reasons: * It provides DONE/FAIL handling.
Nothing more than calling those 2 lines ? start_busy "Setting Hostname: $HOSTNAME" echo $HOSTNAME > /proc/sys/kernel/hostname && stat_done || stat_fail or in one line start_busy "Setting Hostname: $HOSTNAME"; echo $HOSTNAME > /proc/sys/kernel/hostname && stat_done || stat_fail
* We avoid the common pitfall of changing the from stat_busy/stat_done to the non working status with redirection later as happened for "Initializing Random Seed" two moths ago without beeing fixed until now. Thos doesn't avoid bad using of status... this just fix a bad status using by creating a function to write a file.
I see status as an helper for simple cases of stat_*. Here bash syntax doesn't allow it. Doesn't forget that initscripts syntax must be easily readable (i tell this about all your patchs, not only this one) -- Sébastien Luttringer www.seblu.net