On Sat, Nov 19, 2005 at 02:23:18AM +0100, Markus Kolb wrote:
>As someone has already posted before $relmajor should become $release in
>the $relmajor assignment.
>
>This patch fixes it:
>
>======================================================================
>--- /etc/dhclient-script.orig   2005-11-15 23:39:23.000000000 +0100
>+++ /etc/dhclient-script        2005-11-19 02:13:42.000000000 +0100
>@@ -73,7 +73,7 @@
> 
> release=`uname -r`
> relminor=`echo $release | sed 's/^[0-9]*\.[0-9]*\.\([0-9]*\).*/\1/'`
>-relmajor=`echo $relmajor | sed 's/^[0-9]*\.\([0-9]*\)\..*/\1/'`
>+relmajor=`echo $release | sed 's/^[0-9]*\.\([0-9]*\)\..*/\1/'`
> release=`echo $release | sed 's/\([0-9]*\)\..*/\1/'`
> 
> if [ x$new_broadcast_address != x ]; then
>=====================================================================
>
>++ uname -r
>+ release=2.4.27-2-686
>++ echo 2.4.27-2-686
>++ sed 's/^[0-9]*\.[0-9]*\.\([0-9]*\).*/\1/'
>+ relminor=27
>++ echo 2.4.27-2-686
>++ sed 's/^[0-9]*\.\([0-9]*\)\..*/\1/'
>+ relmajor=4
>++ echo 2.4.27-2-686
>++ sed 's/\([0-9]*\)\..*/\1/'
>+ release=2
>
>As it should be, shouldn't it?

Actually, I don't believe so.  Given the way these variables are
actually used, I suspect that the correct fix is:

  release=`uname -r`
  relmajor=`echo $release | sed 's/^\([0-9]*\).*/\1/'`
  relminor=`echo $release | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'`
  release=`echo $release | sed 's/^[0-9]*\.[0-9]*\.\([0-9]*\).*/\1/'`

i.e. for your example, 2.4.27-2-686 should map to relmajor=2, relminor=4
and release=27.

Note that the script tests these variables like so:

  if [ $relmajor -lt 2 ] || ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] )

which I would interpret as testing for 1.X.X or 2.0.X, rather than X.1.X
or X.2.0 .

--bod


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to