Greetings!

I propose to make an optional argument '-r' for findsmb utility to pass
'-r' option to nmblookup optionally and default to omit it. The reason is
to have findsmb working more user-friendly in contemporary office
environments where Windows 95/98 boxes are rare and also to allow usage of
the utility under non-priviledged accounts when Windows95/98 boxes are in
minority or even absent in network neighbourhood.

An attached patch provides this change for HEAD together with
documentation changes.

-- 
/ Alexander Bokovoy
---
Don't get to bragging.
Index: docs/docbook/manpages/findsmb.1.sgml
===================================================================
RCS file: /cvsroot/samba/docs/docbook/manpages/findsmb.1.sgml,v
retrieving revision 1.4
diff -u -r1.4 findsmb.1.sgml
--- docs/docbook/manpages/findsmb.1.sgml        18 Oct 2002 22:16:08 -0000      1.4
+++ docs/docbook/manpages/findsmb.1.sgml        10 Jan 2003 14:21:00 -0000
@@ -40,6 +40,15 @@
 
        <variablelist>
                <varlistentry>
+               <term>-r</term>
+               <listitem><para>Controls whether <command>findsmb</command> takes
+               bugs in Windows95 into account when trying to find a Netbios name
+               registered of the remote machine. This option is disabled by default
+               because it is specific to Windows 95 and Windows 95 machines only. 
+               If set, <ulink 
+url="nmblookup.1.html"><command>nmblookup</command></ulink>
+               will be called with <constant>-B<constant> option.</para></listitem>
+               </varlistentry>
+               <varlistentry>
                <term>subnet broadcast address</term>
                <listitem><para>Without this option, <command>findsmb
                </command> will probe the subnet of the machine where 
@@ -66,15 +75,17 @@
        not show any information about the operating system or server 
        version.</para>
 
-       <para>The command must be run on a system without <ulink
+       <para>The command with <constant>-r</constant> option
+       must be run on a system without <ulink
        url="nmbd.8.html"><command>nmbd</command></ulink> running. 
        If <command>nmbd</command> is running on the system, you will 
        only  get the IP address and the DNS name of the machine. To 
        get proper responses  from Windows 95 and Windows 98 machines, 
-       the command must be run as root. </para>
+       the command must be run as root and with <constant>-r</constant>
+       option on a machine without <command>nmbd</command> running.</para>
 
-       <para>For example, running <command>findsmb</command> on a machine 
-       without <command>nmbd</command> running would yield output similar
+       <para>For example, running <command>findsmb</command> without 
+       <constant>-r</constant> option set would yield output similar
        to the following</para>
 
        <screen><computeroutput>
Index: source/script/findsmb.in
===================================================================
RCS file: /cvsroot/samba/source/script/findsmb.in,v
retrieving revision 1.2
diff -u -r1.2 findsmb.in
--- source/script/findsmb.in    9 May 2002 13:52:06 -0000       1.2
+++ source/script/findsmb.in    10 Jan 2003 14:21:05 -0000
@@ -5,7 +5,7 @@
 # run as root to get correct info from WIN95 clients.
 #
 # syntax:
-#    findsmb [subnet broadcast address]
+#    findsmb [-d|-D] [-r] [subnet broadcast address]
 #
 # with no agrument it will list machines on the current subnet
 #
@@ -13,21 +13,28 @@
 # local master browsers for that workgroup. There will be an "*" in front
 # of the workgroup name for machines that are the domain master browser for
 # that workgroup.
+# 
+# Options:
+#
+# -d|-D                enable debug
+# -r           add -r option to nmblookup when finding netbios name
 #
 
 $SAMBABIN = "@prefix@/bin";
 
-for ($i = 0; $i < 2; $i++) {   # test for -d option and broadcast address
+for ($i = 0; $i < 2; $i++) {   # test for -d and -r options
   $_ = shift;
   if (m/-d|-D/) {
     $DEBUG = 1;
-  } else  {
-    if ($_) {
-      $BCAST = "-B $_";
-    }
+  } else (m/-r/) {
+    $R_OPTION = "-r";
   }
 }
 
+if ($_) {                      # set broadcast address if it was specified
+      $BCAST = "-B $_";
+}
+
 sub ipsort                     # do numeric sort on last field of IP address
 {
   @t1 = split(/\./,$a);
@@ -56,7 +63,7 @@
 
 # find the netbios names registered by each machine
 
-  open(NMBLOOKUP,"$SAMBABIN/nmblookup -r -A $ip|") || 
+  open(NMBLOOKUP,"$SAMBABIN/nmblookup $R_OPTION -A $ip|") || 
        die("Can't get nmb name list.\n");
   @nmblookup = <NMBLOOKUP>;
   close NMBLOOKUP;

Reply via email to