add samba package
[openwrt/svn-archive/archive.git] / openwrt / package / samba / patches / 100-samba.patch
diff --git a/openwrt/package/samba/patches/100-samba.patch b/openwrt/package/samba/patches/100-samba.patch
new file mode 100644 (file)
index 0000000..3d41af7
--- /dev/null
@@ -0,0 +1,489 @@
+diff -ur samba-2.0.10/source/include/smb.h samba/source/include/smb.h
+--- samba-2.0.10/source/include/smb.h  2001-06-23 12:52:20.000000000 +0400
++++ samba/source/include/smb.h 2005-05-21 21:09:03.204222704 +0400
+@@ -115,6 +115,22 @@
+  *               Usage:
+  *                 DEBUGADD( 2, ("Some additional text.\n") );
+  */
++ 
++#ifdef NDEBUG
++
++#define DEBUGLVL( level ) \
++  ( (0 == (level)) \
++   && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) )
++
++#define DEBUG( level, body ) \
++  (void)( (0 == (level)) \
++       && (dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) )) \
++       && (dbgtext body) )
++
++#define DEBUGADD( level, body )       \
++  (void)( (0 == (level)) && (dbgtext body) )
++
++#else
+ #define DEBUGLVL( level ) \
+   ( (DEBUGLEVEL >= (level)) \
+    && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) )
+@@ -140,7 +156,7 @@
+   (void)( (DEBUGLEVEL >= (level)) && (dbgtext body) )
+ #endif
+-
++#endif
+ /* End Debugging code section.
+  * -------------------------------------------------------------------------- **
+  */
+@@ -1612,7 +1628,9 @@
+ #define CAP_LOCK_AND_READ    0x0100
+ #define CAP_NT_FIND          0x0200
+ #define CAP_DFS              0x1000
++#define CAP_W2K_SMBS         0x2000
+ #define CAP_LARGE_READX      0x4000
++#define CAP_LARGE_WRITEX     0x8000
+ #define CAP_EXTENDED_SECURITY 0x80000000
+ /* protocol types. It assumes that higher protocols include lower protocols
+diff -ur samba-2.0.10/source/Makefile.in samba/source/Makefile.in
+--- samba-2.0.10/source/Makefile.in    2000-03-17 01:57:08.000000000 +0300
++++ samba/source/Makefile.in   2005-05-21 20:59:57.130238568 +0400
+@@ -37,8 +37,8 @@
+ # set these to where to find various files
+ # These can be overridden by command line switches (see smbd(8))
+ # or in smb.conf (see smb.conf(5))
+-SMBLOGFILE = $(VARDIR)/log.smb
+-NMBLOGFILE = $(VARDIR)/log.nmb
++SMBLOGFILE = $(VARDIR)/smb
++NMBLOGFILE = $(VARDIR)/nmb
+ CONFIGFILE = $(LIBDIR)/smb.conf
+ LMHOSTSFILE = $(LIBDIR)/lmhosts
+ DRIVERFILE = $(LIBDIR)/printers.def
+@@ -55,7 +55,7 @@
+ LOCKDIR = @lockdir@
+ # The directory where code page definition files go
+-CODEPAGEDIR = $(LIBDIR)/codepages
++CODEPAGEDIR = $(BASEDIR)/codepages
+ # The current codepage definition list.
+ CODEPAGELIST= 437 737 775 850 852 861 932 866 949 950 936 1251 ISO8859-1 ISO8859-2 ISO8859-5 ISO8859-7 KOI8-R
+@@ -82,6 +82,7 @@
+ PROGS2 = bin/rpcclient bin/smbpasswd bin/make_smbcodepage bin/make_unicodemap @WRAP@ @WRAP32@
+ MPROGS = @MPROGS@
+ PROGS = $(PROGS1) $(PROGS2) $(MPROGS) bin/nmblookup bin/make_printerdef 
++SHAREDPROGS = bin/smbd.shared bin/nmbd.shared bin/smbpasswd.shared
+ SCRIPTS = $(srcdir)/script/smbtar $(srcdir)/script/addtosmbpass $(srcdir)/script/convert_smbpasswd
+@@ -159,6 +160,8 @@
+            $(RPC_SERVER_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
+            $(LOCKING_OBJ) $(PASSDB_OBJ) $(PRINTING_OBJ) $(PROFILE_OBJ) $(LIB_OBJ)
++SMBDSHARED_OBJ = $(SMBD_OBJ1) $(RPC_SERVER_OBJ) \
++           $(LOCKING_OBJ) $(PROFILE_OBJ) #$(PRINTING_OBJ)
+ NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
+             nmbd/nmbd_become_lmb.o nmbd/nmbd_browserdb.o \
+@@ -176,6 +179,8 @@
+ NMBD_OBJ = $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) \
+            $(LIB_OBJ)
++NMBDSHARED_OBJ = $(NMBD_OBJ1)
++
+ SWAT_OBJ = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
+            web/swat.o $(LIBSMB_OBJ) $(LOCKING_OBJ) \
+            $(PARAM_OBJ) $(PASSDB_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
+@@ -207,6 +212,8 @@
+ SMBPASSWD_OBJ = utils/smbpasswd.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(PASSDB_OBJ) \
+                 $(UBIQX_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) $(LIB_OBJ)
++SMBPASSWDSHARED_OBJ = utils/smbpasswd.o
++
+ RPCCLIENT_OBJ = rpcclient/rpcclient.o \
+              rpcclient/display.o \
+              rpcclient/cmd_lsarpc.o \
+@@ -265,6 +272,11 @@
+ PROTO_OBJ = $(SMBD_OBJ) $(NMBD_OBJ) $(SWAT_OBJ) $(CLIENT_OBJ) \
+           $(RPCCLIENT_OBJ) $(SMBWRAPPER_OBJ) $(SMBTORTURE_OBJ)
++LIBSMBSHARED_OBJ = $(LIB_OBJ) $(LIBSMB_OBJ) $(PARAM_OBJ) $(UBIQX_OBJ) \
++              $(PASSDB_OBJ) $(RPC_PARSE_OBJ) #$(RPC_CLIENT_OBJ)
++
++LIBSMB_PICOBJS = $(LIBSMBSHARED_OBJ:.o=.po)
++
+ PICOBJS = $(SMBWRAPPER_OBJ:.o=.po)
+ PICOBJS32 = $(SMBWRAPPER_OBJ:.o=.po32)
+@@ -274,6 +286,8 @@
+ all : CHECK $(SPROGS) $(PROGS) 
++shared : CHECK $(SHAREDPROGS)
++
+ smbwrapper : CHECK bin/smbsh bin/smbwrapper.@SHLIBEXT@ @WRAP32@
+ smbtorture : CHECK bin/smbtorture
+@@ -359,10 +373,18 @@
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(LIBS) 
++bin/smbd.shared: $(SMBDSHARED_OBJ) bin/libsmb.@SHLIBEXT@ bin/.dummy
++      @echo Linking $@
++      @$(CC) $(FLAGS) -o $@ $(SMBDSHARED_OBJ) $(LDFLAGS) $(LIBS) -Lbin -lsmb
++
+ bin/nmbd: $(NMBD_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(LIBS)
++bin/nmbd.shared: $(NMBDSHARED_OBJ) bin/libsmb.@SHLIBEXT@ bin/.dummy
++      @echo Linking $@
++      @$(CC) $(FLAGS) -o $@ $(NMBDSHARED_OBJ) $(LDFLAGS) $(LIBS) -Lbin -lsmb
++
+ bin/swat: $(SWAT_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(LIBS) 
+@@ -411,6 +433,10 @@
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SMBPASSWD_OBJ) $(LDFLAGS) $(LIBS)
++bin/smbpasswd.shared: $(SMBPASSWDSHARED_OBJ) bin/libsmb.@SHLIBEXT@ bin/.dummy
++      @echo Linking $@
++      @$(CC) $(FLAGS) -o $@ $(SMBPASSWDSHARED_OBJ) $(LDFLAGS) $(LIBS) -Lbin -lsmb
++
+ bin/make_smbcodepage: $(MAKE_SMBCODEPAGE_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(MAKE_SMBCODEPAGE_OBJ) $(LDFLAGS) $(LIBS)
+@@ -459,6 +485,10 @@
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SMBSH_OBJ) $(LDFLAGS) $(LIBS)
++bin/libsmb.@SHLIBEXT@: $(LIBSMB_PICOBJS) bin/.dummy
++      @echo Linking shared library $@
++      @$(LD) @LDSHFLAGS@ -o $@ $(LIBSMB_PICOBJS) $(LIBS)
++
+ install: installbin installman installscripts installcp installswat
+ installdirs:
+@@ -518,7 +548,7 @@
+       ctags `find . -name "*.[ch]" | grep -v /CVS/`
+ realclean: clean
+-      -rm -f config.log $(PROGS) $(SPROGS) bin/.dummy
++      -rm -f config.log $(PROGS) $(SPROGS) $(SHAREDPROGS) bin/.dummy
+       -rmdir bin
+ distclean: realclean
+diff -ur samba-2.0.10/source/nmbd/nmbd_mynames.c samba/source/nmbd/nmbd_mynames.c
+--- samba-2.0.10/source/nmbd/nmbd_mynames.c    2000-03-17 01:59:24.000000000 +0300
++++ samba/source/nmbd/nmbd_mynames.c   2005-05-21 20:57:26.672111680 +0400
+@@ -215,8 +215,8 @@
+          */
+         if( !is_refresh_already_queued( subrec, namerec) )
+           refresh_name( subrec, namerec, NULL, NULL, NULL );
+-        namerec->data.death_time += lp_max_ttl();
+-        namerec->data.refresh_time += MIN(lp_max_ttl(), MAX_REFRESH_TIME);
++        namerec->data.death_time = t + lp_max_ttl();
++        namerec->data.refresh_time = t + MIN(lp_max_ttl(), MAX_REFRESH_TIME);
+       }
+     }
+   }
+diff -ur samba-2.0.10/source/smbd/close.c samba/source/smbd/close.c
+--- samba-2.0.10/source/smbd/close.c   2000-04-21 21:43:13.000000000 +0400
++++ samba/source/smbd/close.c  2005-05-21 19:44:59.516979712 +0400
+@@ -122,11 +122,11 @@
+               last_reference = True;
+     fsp->fd_ptr = NULL;
+-
++#ifdef PRINTING
+       /* NT uses smbclose to start a print - weird */
+       if (normal_close && fsp->print_file)
+               print_file(conn, fsp);
+-
++#endif
+       /* check for magic scripts */
+       if (normal_close) {
+               check_magic(fsp,conn);
+diff -ur samba-2.0.10/source/smbd/ipc.c samba/source/smbd/ipc.c
+--- samba-2.0.10/source/smbd/ipc.c     2000-03-30 02:20:06.000000000 +0400
++++ samba/source/smbd/ipc.c    2005-05-21 19:44:59.559973176 +0400
+@@ -472,7 +472,7 @@
+   PACK(desc,t,v);
+ }
+-
++#ifdef PRINTING
+ /****************************************************************************
+   get a print queue
+   ****************************************************************************/
+@@ -1004,7 +1004,7 @@
+   
+   return True;
+ }
+-
++#endif
+ /****************************************************************************
+   get info level for a server list query
+   ****************************************************************************/
+@@ -1834,7 +1834,7 @@
+   return(True);
+ }
+-
++#ifdef PRINTING
+ /****************************************************************************
+   delete a print job
+   Form: <W> <> 
+@@ -2091,7 +2091,7 @@
+       
+       return(True);
+ }
+-
++#endif
+ /****************************************************************************
+   get info about the server
+@@ -2756,7 +2756,7 @@
+   return(True);
+ }
+-
++#ifdef PRINTING
+ /****************************************************************************
+   api_WPrintJobEnumerate
+   ****************************************************************************/
+@@ -3189,7 +3189,7 @@
+   DEBUG(4,("WPrintPortEnum: errorcode %d\n",desc.errcode));
+   return(True);
+ }
+-
++#endif
+ /****************************************************************************
+  Start the first part of an RPC reply which began with an SMBtrans request.
+ ****************************************************************************/
+@@ -3407,6 +3407,7 @@
+   {"RNetUserGetInfo", 56,     api_RNetUserGetInfo,0},
+   {"NetUserGetGroups",        59,     api_NetUserGetGroups,0},
+   {"NetWkstaGetInfo", 63,     api_NetWkstaGetInfo,0},
++#ifdef PRINTING
+   {"DosPrintQEnum",   69,     api_DosPrintQEnum,0},
+   {"DosPrintQGetInfo",        70,     api_DosPrintQGetInfo,0},
+   {"WPrintQueuePause",  74, api_WPrintQueuePurge,0},
+@@ -3418,16 +3419,21 @@
+   {"RDosPrintJobResume",83,   api_RDosPrintJobDel,0},
+   {"WPrintDestEnum",  84,     api_WPrintDestEnum,0},
+   {"WPrintDestGetInfo",       85,     api_WPrintDestGetInfo,0},
++#endif
+   {"NetRemoteTOD",    91,     api_NetRemoteTOD,0},
++#ifdef PRINTING
+   {"WPrintQueuePurge",        103,    api_WPrintQueuePurge,0},
++#endif
+   {"NetServerEnum",   104,    api_RNetServerEnum,0},
+   {"WAccessGetUserPerms",105, api_WAccessGetUserPerms,0},
+   {"SetUserPassword", 115,    api_SetUserPassword,0},
+   {"WWkstaUserLogon", 132,    api_WWkstaUserLogon,0},
++#ifdef PRINTING
+   {"PrintJobInfo",    147,    api_PrintJobInfo,0},
+   {"WPrintDriverEnum",        205,    api_WPrintDriverEnum,0},
+   {"WPrintQProcEnum", 206,    api_WPrintQProcEnum,0},
+   {"WPrintPortEnum",  207,    api_WPrintPortEnum,0},
++#endif
+   {"SamOEMChangePassword", 214, api_SamOEMChangePassword,0},
+   {NULL,              -1,     api_Unsupported,0}};
+diff -ur samba-2.0.10/source/smbd/negprot.c samba/source/smbd/negprot.c
+--- samba-2.0.10/source/smbd/negprot.c 2000-03-17 01:59:47.000000000 +0300
++++ samba/source/smbd/negprot.c        2005-05-21 21:09:16.025273608 +0400
+@@ -160,7 +160,7 @@
+   /* dual names + lock_and_read + nt SMBs + remote API calls */
+   int capabilities = CAP_NT_FIND|CAP_LOCK_AND_READ|
+                      (lp_nt_smb_support() ? CAP_NT_SMBS | CAP_RPC_REMOTE_APIS : 0) |
+-                     (SMB_OFF_T_BITS == 64 ? CAP_LARGE_FILES : 0);
++                     (SMB_OFF_T_BITS == 64 ? CAP_LARGE_FILES | CAP_LARGE_READX | CAP_LARGE_WRITEX /*| CAP_W2K_SMBS*/ : 0);
+ /*
+diff -ur samba-2.0.10/source/smbd/password.c samba/source/smbd/password.c
+--- samba-2.0.10/source/smbd/password.c        2000-03-17 01:59:48.000000000 +0300
++++ samba/source/smbd/password.c       2005-05-21 19:44:59.562972720 +0400
+@@ -1149,7 +1149,7 @@
+   return(True);
+ }
+-
++#ifdef RPCCLIENT
+ /***********************************************************************
+  Connect to a remote machine for domain security authentication
+  given a name or IP address.
+@@ -1504,3 +1504,4 @@
+   cli_shutdown(&cli);
+   return True;
+ }
++#endif
+diff -ur samba-2.0.10/source/smbd/process.c samba/source/smbd/process.c
+--- samba-2.0.10/source/smbd/process.c 2000-04-15 04:21:27.000000000 +0400
++++ samba/source/smbd/process.c        2005-05-21 19:44:59.583969528 +0400
+@@ -343,10 +343,12 @@
+    {SMBlseek,"SMBlseek",reply_lseek,AS_USER},
+    {SMBflush,"SMBflush",reply_flush,AS_USER},
+    {SMBctemp,"SMBctemp",reply_ctemp,AS_USER | QUEUE_IN_OPLOCK },
++#ifdef PRINTING
+    {SMBsplopen,"SMBsplopen",reply_printopen,AS_USER | QUEUE_IN_OPLOCK },
+    {SMBsplclose,"SMBsplclose",reply_printclose,AS_USER},
+    {SMBsplretq,"SMBsplretq",reply_printqueue,AS_USER},
+    {SMBsplwr,"SMBsplwr",reply_printwrite,AS_USER},
++#endif
+    {SMBlock,"SMBlock",reply_lock,AS_USER},
+    {SMBunlock,"SMBunlock",reply_unlock,AS_USER},
+    
+@@ -908,7 +910,7 @@
+     DEBUG(2,("Closing idle connection 2.\n"));
+     return False;
+   }
+-
++#ifdef RPCLIENT
+   if(global_machine_password_needs_changing)
+   {
+     unsigned char trust_passwd_hash[16];
+@@ -954,7 +956,7 @@
+     trust_password_unlock();
+     global_machine_password_needs_changing = False;
+   }
+-
++#endif
+   /*
+    * Check to see if we have any blocking locks
+    * outstanding on the queue.
+diff -ur samba-2.0.10/source/smbd/reply.c samba/source/smbd/reply.c
+--- samba-2.0.10/source/smbd/reply.c   2001-06-23 12:51:24.000000000 +0400
++++ samba/source/smbd/reply.c  2005-05-21 19:44:59.628962688 +0400
+@@ -597,12 +597,12 @@
+   if (!check_domain_match(orig_user, domain))
+      return False;
+-
++#ifdef RPCCLIENT
+   ret = domain_client_validate(orig_user, domain,
+                                 smb_apasswd, smb_apasslen,
+                                 smb_ntpasswd, smb_ntpasslen,
+                                 &user_exists);
+-
++#endif
+   if(ret) {
+     /*
+      * User validated ok against Domain controller.
+@@ -2991,7 +2991,7 @@
+       return -1;
+ }
+-
++#ifdef PRINTING
+ /****************************************************************************
+   reply to a printopen
+ ****************************************************************************/
+@@ -3176,7 +3176,7 @@
+   
+   return(outsize);
+ }
+-
++#endif
+ /****************************************************************************
+   reply to a mkdir
+diff -ur samba-2.0.10/source/smbd/server.c samba/source/smbd/server.c
+--- samba-2.0.10/source/smbd/server.c  2000-03-17 01:59:52.000000000 +0300
++++ samba/source/smbd/server.c 2005-05-21 19:44:59.649959496 +0400
+@@ -300,9 +300,9 @@
+       lp_killunused(conn_snum_used);
+       ret = lp_load(servicesf,False,False,True);
+-
++#ifdef PRINTING
+       load_printers();
+-
++#endif
+       /* perhaps the config filename is now set */
+       if (!test)
+               reload_services(True);
+diff -ur samba-2.0.10/source/smbd/service.c samba/source/smbd/service.c
+--- samba-2.0.10/source/smbd/service.c 2000-03-17 01:59:52.000000000 +0300
++++ samba/source/smbd/service.c        2005-05-21 19:44:59.670956304 +0400
+@@ -121,7 +121,7 @@
+       }
+      }
+    }
+-
++#ifdef PRINTING
+    /* If we still don't have a service, attempt to add it as a printer. */
+    if (iService < 0)
+    {
+@@ -146,7 +146,7 @@
+             DEBUG(3,("%s is not a valid printer name\n", service));
+       }
+    }
+-
++#endif
+    /* just possibly it's a default service? */
+    if (iService < 0) 
+    {
+diff -ur samba-2.0.10/source/utils/smbpasswd.c samba/source/utils/smbpasswd.c
+--- samba-2.0.10/source/utils/smbpasswd.c      2000-03-17 01:59:57.000000000 +0300
++++ samba/source/utils/smbpasswd.c     2005-05-21 19:44:59.671956152 +0400
+@@ -71,7 +71,7 @@
+       }
+       exit(1);
+ }
+-
++#ifdef RPCCLIENT
+ /*********************************************************
+ Join a domain.
+ **********************************************************/
+@@ -143,7 +143,7 @@
+       
+       return (int)ret;
+ }
+-
++#endif
+ static void set_line_buffering(FILE *f)
+ {
+@@ -335,13 +335,13 @@
+       if((local_flags & (LOCAL_ADD_USER|LOCAL_DELETE_USER)) && ((remote_machine != NULL) || joining_domain)) {
+               usage();
+       }
+-      
++#ifdef RPCCLIENT      
+       if(joining_domain) {
+               if (argc != 0)
+                       usage();
+               return join_domain(new_domain, remote_machine);
+       }
+-
++#endif
+       /*
+        * Deal with root - can add a user, but only locally.
+        */
+diff -ur samba-2.0.10/source/web/swat.c samba/source/web/swat.c
+--- samba-2.0.10/source/web/swat.c     2000-04-11 21:36:36.000000000 +0400
++++ samba/source/web/swat.c    2005-05-21 19:44:59.692952960 +0400
+@@ -357,8 +357,9 @@
+                 return 0;
+         }
+       iNumNonAutoPrintServices = lp_numservices();
++#ifdef PRINTING
+       load_printers();
+-
++#endif
+       return 1;
+ }
+@@ -997,8 +998,9 @@
+       charset_initialise();
+       load_config(True);
+       iNumNonAutoPrintServices = lp_numservices();
++#ifdef PRINTING
+       load_printers();
+-
++#endif
+       cgi_setup(SWATDIR, !demo_mode);
+       print_header();