Patchwork ybin --bootonce doesn't work

login
register
mail settings
Submitter Roman Rakus
Date Nov. 14, 2008, 2:55 p.m.
Message ID <491D9179.4020506@redhat.com>
Download mbox | patch
Permalink /patch/22979/
State Accepted
Headers show

Comments

Roman Rakus - Nov. 14, 2008, 2:55 p.m.
From bugzilla
https://bugzilla.redhat.com/show_bug.cgi?id=471425

/Description <https://bugzilla.redhat.com/show_bug.cgi?id=471425#c0> 
 From Will Woods (wwoods@redhat.com <mailto:wwoods@redhat.com>) 
2008-11-13 12:25:19 EDT/

ybin --bootonce doesn't work, for a couple of reasons:

1) It inverts the logic of a test to see if nvram is available, and
2) It assumes the output of 'nvsetenv VARNAME' will be 'VARNAME=VALUE', rather
than just 'VALUE' (as it is when using the "nvram" utility).

The attached patch fixes these problems and makes --bootonce work as expected.



RR
Dustin Kirkland - Nov. 17, 2008, 4:58 p.m.
2008/11/14 Roman Rakus <rrakus@redhat.com>:
> ybin --bootonce doesn't work, for a couple of reasons:
>
> 1) It inverts the logic of a test to see if nvram is available, and
> 2) It assumes the output of 'nvsetenv VARNAME' will be 'VARNAME=VALUE',
> rather
> than just 'VALUE' (as it is when using the "nvram" utility).
>
> The attached patch fixes these problems and makes --bootonce work as
> expected.

Hi Roman-

Unfortunately, I no longer have access to any PPC hardware to verify
your fix, but examining the patch, it looks okay to me.

Paul-

Assuming you (or someone else on the list) can verify the
functionality of Roman's patch, I think this should be committed.


:-Dustin

Patch

diff --git a/ybin/ybin b/ybin/ybin
index 379b94b..bd4e8cc 100755
--- a/ybin/ybin
+++ b/ybin/ybin
@@ -1658,14 +1658,15 @@  checkconf || exit 1
 
 if [ "x$bootonce" != "x" ]; then
     foundlabel=`sed s/\#.*// $bootconf | grep "label=$bootonce$" | wc -l`
-    if [ "$nonvram" = 0 ]; then
+    if [ "$nonvram" = 1 ]; then
 	echo 1>&2 "$PRG: --bootonce specified, but nvsetenv not available."
 	exit 1
     fi
     if [ "$foundlabel" = 1 ]; then
 	nvsetenv boot-once "$bootonce"
 	foundlabel=`nvsetenv boot-once`
-	if [ "$foundlabel" != "boot-once=$bootonce" ]; then
+	if [ "$foundlabel" != "boot-once=$bootonce" -a \
+             "$foundlabel" != "$bootonce" ]; then
 	    echo 1>&2 "$PRG: Could not nvsetenv boot-once $bootonce"
 	    exit 1
 	fi