The attached set of patches cleans up samba-3.0-alpha17 for
systems such as Stratus VOS that implement POSIX-1996 but do not
provide full Unix compatibility.  I would be most grateful if
this patch could be applied against samba-3.0.  I can supply a
version of this patch for samba-2.2 if/when anyone cares.

Summary of changes by module:

source/configure.in             check for non-POSIX headers syslog.h and sys/file.h 
(and alphabetize list)
source/include/includes.h       conditionally include syslog.h and sys/file.h
source/lib/interfaces.c         conditionally include sys/time.h and sys/sockio.h 
(autoconf macros already exist)
source/lib/util_sock.c          change memcmp use of (caddr_t) type to (void *); 
removes only use of nonstandard caddr_t type.
source/libsmb/clifile.c         fix bug that references uint not uint32, fix bug that 
references S_ISVTX not S_ISUID.
source/nsswitch/winbind_nss_config.h    conditionally include sys/select.h (autoconf 
macro already exists)
source/pam_smbpass/general.h            conditionally include syslog.h
source/rpc_server/srv_spoolss_nt.c      change 'FALSE' to 'False' (Samba defines 
'False' in smb.h; POSIX-96 does not admit to FALSE)
source/rpcclient/cmd_reg.c              declare optarg and optind (many other Samba 
source files explicitly declare these names)
source/smbd/chgpasswd.c                 conditionally reference ONLCR macro (not in 
POSIX-96)
source/smbd/trans2.c                    fix bug that references S_ISVTX not S_ISUID
source/smbd/vfs-wrap.c                  conditionally reference fchown (autoconf 
HAVE_FCHOWN macro already exists)
source/smbd/utils/smbcontrol.c  declare optarg (many other Samba source files 
explicitly declare this name)

Patch is against samba-3.0-alpha17.

Tested by successfully rebuilding all of samba-3.0-alpha17 here
on Stratus VOS.  I actually needed a few other changes, but I'm
not submitting them at this time.  I am only submitting the
changes that I am 100% sure of.

Oh, and my official email address is [EMAIL PROTECTED]
This odd addresss ([EMAIL PROTECTED]) is a secondary
address.  I use it because it is not Outlook and won't mess up
the formatting of the text.

### START OF PATCH ###

diff -urp oldsamba3/source/configure.in newsamba3/source/configure.in
--- oldsamba3/source/configure.in       Fri May 31 13:54:22 2002
+++ newsamba3/source/configure.in       Fri May 31 13:54:28 2002
@@ -278,8 +278,9 @@ AC_HEADER_SYS_WAIT
 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
+AC_CHECK_HEADERS(stdlib.h string.h strings.h syslog.h sys/file.h)
 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h 
sys/mode.h)
-AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h 
stdlib.h sys/socket.h)
+AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h sys/socket.h)
 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h 
termio.h)
 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h 
sys/sockio.h)
 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h ldap.h lber.h)
diff -urp oldsamba3/source/include/includes.h newsamba3/source/include/includes.h
--- oldsamba3/source/include/includes.h Fri May 31 13:08:57 2002
+++ newsamba3/source/include/includes.h Fri May 31 13:55:27 2002
@@ -216,8 +216,14 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
-/* #include <syslog.h> */
-/* #include <sys/file.h> */
+
+#ifdef HAVE_SYSLOG_H
+#include <syslog.h>
+#endif
+
+#ifdef HAVE_SYS_FILE_H
+#include <sys/file.h>
+#endif
 
 #ifdef HAVE_NETINET_TCP_H
 #include <netinet/tcp.h>
diff -urp oldsamba3/source/lib/interfaces.c newsamba3/source/lib/interfaces.c
--- oldsamba3/source/lib/interfaces.c   Fri May 31 13:09:54 2002
+++ newsamba3/source/lib/interfaces.c   Fri May 31 13:10:13 2002
@@ -38,11 +38,15 @@
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <sys/ioctl.h>
+#ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
+#endif
 #include <net/if.h>
 
 #ifndef SIOCGIFCONF
+#ifdef HAVE_SYS_SOCKIO_H
 #include <sys/sockio.h>
+#endif
 #endif
 
 #ifdef AUTOCONF_TEST
diff -urp oldsamba3/source/lib/util_sock.c newsamba3/source/lib/util_sock.c
--- oldsamba3/source/lib/util_sock.c    Fri May 31 13:09:55 2002
+++ newsamba3/source/lib/util_sock.c    Fri May 31 13:10:21 2002
@@ -1020,7 +1020,7 @@ static BOOL matchname(char *remotehost,s
        
        /* Look up the host address in the address list we just got. */
        for (i = 0; hp->h_addr_list[i]; i++) {
-               if (memcmp(hp->h_addr_list[i], (caddr_t) & addr, sizeof(addr)) == 0)
+               if (memcmp(hp->h_addr_list[i], (void *) & addr, sizeof(addr)) == 0)
                        return True;
        }
        
diff -urp oldsamba3/source/libsmb/clifile.c newsamba3/source/libsmb/clifile.c
--- oldsamba3/source/libsmb/clifile.c   Fri May 31 13:28:36 2002
+++ newsamba3/source/libsmb/clifile.c   Fri May 31 14:20:06 2002
@@ -76,7 +76,7 @@ static BOOL cli_link_internal(struct cli
 
 uint32  unix_perms_to_wire(mode_t perms)
 {
-        uint ret = 0;
+        uint32 ret = 0;
 
         ret |= ((perms & S_IXOTH) ?  UNIX_X_OTH : 0);
         ret |= ((perms & S_IWOTH) ?  UNIX_W_OTH : 0);
@@ -94,7 +94,7 @@ uint32  unix_perms_to_wire(mode_t perms)
         ret |= ((perms & S_ISGID) ?  UNIX_SET_GID : 0);
 #endif
 #ifdef S_ISUID
-        ret |= ((perms & S_ISVTX) ?  UNIX_SET_UID : 0);
+        ret |= ((perms & S_ISUID) ?  UNIX_SET_UID : 0);
 #endif
         return ret;
 }
diff -urp oldsamba3/source/nsswitch/winbind_nss_config.h 
newsamba3/source/nsswitch/winbind_nss_config.h
--- oldsamba3/source/nsswitch/winbind_nss_config.h      Fri May 31 13:12:17 2002
+++ newsamba3/source/nsswitch/winbind_nss_config.h      Fri May 31 13:12:47 2002
@@ -38,6 +38,10 @@
 #include <unistd.h>
 #endif
 
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
diff -urp oldsamba3/source/pam_smbpass/general.h newsamba3/source/pam_smbpass/general.h
--- oldsamba3/source/pam_smbpass/general.h      Fri May 31 14:02:45 2002
+++ newsamba3/source/pam_smbpass/general.h      Fri May 31 14:02:58 2002
@@ -11,11 +11,14 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <syslog.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
+
+#ifdef HAVE_SYSLOG_H
+#include <syslog.h>
+#endif
 
 /*
  * here is the string to inform the user that the new passwords they
diff -urp oldsamba3/source/rpc_server/srv_spoolss_nt.c 
newsamba3/source/rpc_server/srv_spoolss_nt.c
--- oldsamba3/source/rpc_server/srv_spoolss_nt.c        Fri May 31 13:13:57 2002
+++ newsamba3/source/rpc_server/srv_spoolss_nt.c        Fri May 31 13:14:13 2002
@@ -7605,7 +7605,7 @@ static WERROR getprintprocessordirectory
 
        unistr2_to_ascii(long_archi, environment, sizeof(long_archi)-1);
 
-       if (get_short_archi(short_archi, long_archi)==FALSE)
+       if (get_short_archi(short_archi, long_archi)==False)
                return WERR_INVALID_ENVIRONMENT;
 
        if((info=(PRINTPROCESSOR_DIRECTORY_1 
*)malloc(sizeof(PRINTPROCESSOR_DIRECTORY_1))) == NULL)
diff -urp oldsamba3/source/rpcclient/cmd_reg.c newsamba3/source/rpcclient/cmd_reg.c
--- oldsamba3/source/rpcclient/cmd_reg.c        Fri May 31 17:32:07 2002
+++ newsamba3/source/rpcclient/cmd_reg.c        Fri May 31 17:36:07 2002
@@ -897,6 +897,8 @@ nt registry shutdown
 static NTSTATUS cmd_reg_shutdown(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                                  int argc, char **argv)
 {
+       extern char *optarg;
+       extern int optind;
        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        fstring msg;
        uint32 timeout = 20;
diff -urp oldsamba3/source/smbd/chgpasswd.c newsamba3/source/smbd/chgpasswd.c
--- oldsamba3/source/smbd/chgpasswd.c   Fri May 31 13:14:58 2002
+++ newsamba3/source/smbd/chgpasswd.c   Fri May 31 13:15:08 2002
@@ -196,7 +196,9 @@ static int dochild(int master, const cha
        }
        stermios.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
        stermios.c_lflag |= ICANON;
+#ifdef ONLCR
        stermios.c_oflag &= ~(ONLCR);
+#endif
        if (tcsetattr(0, TCSANOW, &stermios) < 0)
        {
                DEBUG(3, ("could not set attributes of pty\n"));
diff -urp oldsamba3/source/smbd/trans2.c newsamba3/source/smbd/trans2.c
--- oldsamba3/source/smbd/trans2.c      Fri May 31 14:10:33 2002
+++ newsamba3/source/smbd/trans2.c      Fri May 31 14:10:41 2002
@@ -393,7 +393,7 @@ static uint32  unix_perms_to_wire(mode_t
        ret |= ((perms & S_ISGID) ?  UNIX_SET_GID : 0);
 #endif
 #ifdef S_ISUID
-       ret |= ((perms & S_ISVTX) ?  UNIX_SET_UID : 0);
+       ret |= ((perms & S_ISUID) ?  UNIX_SET_UID : 0);
 #endif
        return ret;
 }
diff -urp oldsamba3/source/smbd/vfs-wrap.c newsamba3/source/smbd/vfs-wrap.c
--- oldsamba3/source/smbd/vfs-wrap.c    Fri May 31 14:13:40 2002
+++ newsamba3/source/smbd/vfs-wrap.c    Fri May 31 14:23:44 2002
@@ -432,6 +432,7 @@ int vfswrap_chown(connection_struct *con
 
 int vfswrap_fchown(files_struct *fsp, int fd, uid_t uid, gid_t gid)
 {
+#ifdef HAVE_FCHOWN
     int result;
 
     START_PROFILE(syscall_fchown);
@@ -439,6 +440,10 @@ int vfswrap_fchown(files_struct *fsp, in
     result = fchown(fd, uid, gid);
     END_PROFILE(syscall_fchown);
     return result;
+#else
+    errno = ENOSYS;
+    return 0;
+#endif
 }
 
 int vfswrap_chdir(connection_struct *conn, const char *path)
diff -urp oldsamba3/source/utils/smbcontrol.c newsamba3/source/utils/smbcontrol.c
--- oldsamba3/source/utils/smbcontrol.c Fri May 31 17:13:48 2002
+++ newsamba3/source/utils/smbcontrol.c Fri May 31 17:13:57 2002
@@ -439,6 +439,7 @@ static BOOL do_command(char *dest, char 
 {
        int opt;
        char temp[255];
+       extern char *optarg;
        extern int optind;
        BOOL interactive = False;
 
### END OF PATCH ###

Thanks
PG
--
Paul Green                  | Mail: [EMAIL PROTECTED]
Senior Technical Consultant | Voice: +1 978-461-7557   FAX: +1 978-461-3610
Stratus Technologies        | Video: PictureTel/AT&T by request.
Maynard, MA  01754          | Disclaimer: I speak for myself, not Stratus.


Reply via email to