Ralf S. Engelschall wrote:
rse         2007-05-21 11:44:13 UTC

  FreeBSD src repository

  Modified files:
etc/rc.d hostid Log:
  Adjust UUID lower-case translation from straight-forward tr(1)
  usage to an equivalent csh(1) usage as tr(1) stays in /usr/bin and
  /etc/rc.d/hostid has just the root filesystem (and this way mainly the
  tools in /bin) available.
I've chosen csh(1) here as the string manipulation tools available in
  /bin is extremely limited and the (only) alternative ed(1) usage would
  have been a lot more complicated or even might require a temporary file.
Revision Changes Path
  1.4       +2 -1      src/etc/rc.d/hostid

http://www.FreeBSD.org/cgi/cvsweb.cgi/src/etc/rc.d/hostid.diff?&r1=1.3&r2=1.4&f=h

I really don't like the idea of having an rc.d script depend on csh. We don't have any other examples of that, and I don't really want to start down that road. I would appreciate it if you'd do a little more research into ways that this could be done with the tools available.

Meanwhile, I've attached a patch that simplifies the hostid_hardware() quite a bit, and has the added virtue of only calling csh if it's needed.

hth,

Doug

--

    This .signature sanitized for your protection

Index: hostid
===================================================================
RCS file: /usr/local/ncvs/src/etc/rc.d/hostid,v
retrieving revision 1.5
diff -u -r1.5 hostid
--- hostid      21 May 2007 11:57:01 -0000      1.5
+++ hostid      21 May 2007 18:02:54 -0000
@@ -56,19 +56,26 @@
 
 hostid_hardware()
 {
+       local uuid
+
        uuid=`kenv smbios.system.uuid 2>/dev/null`
-       uuid=`csh -c 'echo -n ${*:al}' "${uuid}"`
-       x="[0-9a-f]"
-       y=$x$x$x$x
-       z="0000"
-       case "${uuid}" in
-       $z$z-$z-$z-$z-$z$z$z)
+
+       case "$uuid" in
+       00000000-0000-0000-0000-000000000000)
                # Filter the special "Nil" UUID
+               return
                ;;
-       $y$y-$y-$y-$y-$y$y$y)
-               echo "${uuid}"
+       *[^A-Fa-f0-9-]*)
+               # Contains invalid (non-hex) characters
+               return
+               ;;
+       *[A-F]*)
+               # Contains capital letters that need to be changed
+               uuid=`csh -c 'echo -n ${*:al}' "${uuid}"`
                ;;
        esac
+
+       echo "${uuid}"
 }
 
 hostid_reset()
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to