[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2707-g8927b50

Derrell Lipman derrell.lipman at unwireduniverse.com
Mon Mar 3 23:28:16 GMT 2008


The branch, v3-2-test has been updated
       via  8927b50d6051fcefd87f19dc90c5826378d03e4e (commit)
       via  76ba37ac46b4a77fe228ca90635fa19140541ccd (commit)
       via  a67f96fbe9683b46c2149f7cb439d13f7f0e6ecd (commit)
      from  2c42fc21d8bede226e411623aecd69038477373b (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 8927b50d6051fcefd87f19dc90c5826378d03e4e
Merge: 76ba37ac46b4a77fe228ca90635fa19140541ccd 2c42fc21d8bede226e411623aecd69038477373b
Author: Derrell Lipman <derrell.lipman at unwireduniverse.com>
Date:   Mon Mar 3 18:27:41 2008 -0500

    Merge branch 'v3-2-test' of ssh://git.samba.org/data/git/samba into v3-2-test

commit 76ba37ac46b4a77fe228ca90635fa19140541ccd
Author: Derrell Lipman <derrell.lipman at unwireduniverse.com>
Date:   Mon Mar 3 18:25:49 2008 -0500

    Missed a few 'deprecated' markers

commit a67f96fbe9683b46c2149f7cb439d13f7f0e6ecd
Author: Derrell Lipman <derrell.lipman at unwireduniverse.com>
Date:   Mon Mar 3 18:13:33 2008 -0500

    Continued revamping of libsmbclient.
    
    - James suggested using gcc's "deprecated" attribute to mark the context
      structure fields to generate warnings.  This creates a scenario with the
      best of all worlds.  I'm able to move to an organization that more easily
      allows future enhancements, while avoiding any mandatory changes by
      applications.  Thanks, James!
    
    - Updated WHATSNEW.txt so that it accurately reflects the current state of
      affairs.
    
    Derrell

-----------------------------------------------------------------------

Summary of changes:
 WHATSNEW.txt                       |   17 +-
 examples/libsmbclient/Makefile     |    4 +-
 examples/libsmbclient/testbrowse.c |    2 +-
 examples/libsmbclient/testsmbc.c   |    2 +-
 source/Makefile.in                 |    1 +
 source/include/libsmb_internal.h   |  100 +----
 source/include/libsmbclient.h      |  249 ++++-----
 source/libsmb/libsmb_cache.c       |   16 +-
 source/libsmb/libsmb_context.c     | 1078 ++++--------------------------------
 source/libsmb/libsmb_dir.c         |   30 +-
 source/libsmb/libsmb_file.c        |    8 +-
 source/libsmb/libsmb_path.c        |    6 +-
 source/libsmb/libsmb_printjob.c    |    6 +-
 source/libsmb/libsmb_server.c      |   75 ++--
 source/libsmb/libsmb_setget.c      |  905 ++++++++++++++++++++++++++++++
 source/libsmb/libsmb_stat.c        |    4 +-
 source/libsmb/libsmb_xattr.c       |    6 +-
 17 files changed, 1225 insertions(+), 1284 deletions(-)
 create mode 100644 source/libsmb/libsmb_setget.c


Changeset truncated at 500 lines:

diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 4ae46df..30740de 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -111,16 +111,11 @@ Modified API for libsmbclient
 Maintaining ABI compatibility for libsmbclient has become increasingly
 difficult to accomplish, while also keeping the code organization such that it
 is easily readable.  Towards the goal of maintaining ABI compatibility and
-also keeping the code easy to maintain and enhance, the API has changed
-somewhat.  In particular, the fields in the SMBCCTX context structure are no
-longer intended to be read/write by the user.  The names of the fields have
-changed to encourage any recompilations to use the new interface, but for
-continued ABI compatibility, the fields are in the same locations in the
-context structure as they were previously so any previously-compiled
-applications should continue to work with this new version.
-
-An application that previously accessed the members of the SMBCCTX context
-structure will encounter errors if recompiled.  This is intentional to
+also keeping the code easy to maintain and enhance, the API has been enhanced.
+In particular, the fields in the SMBCCTX context structure are no longer
+intended to be read/write by the user, and are marked as deprecated.  An
+application that previously accessed the members of the SMBCCTX context
+structure will now encounter warnings if recompiled.  This is intentional, to
 encourage implementation of the small changes required for the new interface.
 The number of changes is expected to be quite small for the vast majority of
 applications, and no changes need be made for many applications.  The changes
@@ -141,7 +136,7 @@ under these comment blocks:
   Callable functions for directories
   Callable functions applicable to both files and directories
 
-Example changes that may be required:
+Example changes that may be required to eliminate "deprecated" warnings:
 
   /* Set the debug level */
   context->debug = 99;
diff --git a/examples/libsmbclient/Makefile b/examples/libsmbclient/Makefile
index e2d8b68..a50e80a 100644
--- a/examples/libsmbclient/Makefile
+++ b/examples/libsmbclient/Makefile
@@ -1,14 +1,14 @@
 #
 CC = gcc
 
-SAMBA_INCL = ../../source/include
+SAMBA_INCL  = -I/usr/local/samba/include
 EXTLIB_INCL = -I/usr/include/gtk-1.2 \
 	      -I/usr/include/glib-1.2 \
 	      -I/usr/lib/glib/include
 EXTLIB_INCL = `gtk-config --cflags`
 
 DEFS = -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-CFLAGS = -O0 -g -I$(SAMBA_INCL) $(EXTLIB_INCL) $(DEFS)
+CFLAGS = -O0 -g $(SAMBA_INCL) $(EXTLIB_INCL) $(DEFS)
 
 LDFLAGS = -L/usr/local/samba/lib \
 	  -lldap -lkrb5 -lgssapi_krb5
diff --git a/examples/libsmbclient/testbrowse.c b/examples/libsmbclient/testbrowse.c
index c4ca666..a7eda36 100644
--- a/examples/libsmbclient/testbrowse.c
+++ b/examples/libsmbclient/testbrowse.c
@@ -122,7 +122,7 @@ main(int argc, char * argv[])
         /* ... then set the option to do so */
         smbc_setOptionDebugToStderr(context, 1);
     }
-	
+
     /* Initialize the context using the previously specified options */
     if (!smbc_init_context(context)) {
         smbc_free_context(context, 0);
diff --git a/examples/libsmbclient/testsmbc.c b/examples/libsmbclient/testsmbc.c
index c506f5f..1f06437 100644
--- a/examples/libsmbclient/testsmbc.c
+++ b/examples/libsmbclient/testsmbc.c
@@ -25,7 +25,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <stdlib.h>
-#include <libsmbclient.h>
+#include "libsmbclient.h"
 #include "get_auth_data_fn.h"
 
 int global_id = 0;
diff --git a/source/Makefile.in b/source/Makefile.in
index 5f57f67..f4b0344 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -775,6 +775,7 @@ LIBSMBCLIENT_OBJ0 = \
 		    libsmb/libsmb_server.o \
 		    libsmb/libsmb_stat.o \
 		    libsmb/libsmb_xattr.o \
+		    libsmb/libsmb_setget.o \
 		    $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
 		    $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
 		    $(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) $(RPC_PARSE_OBJ) \
diff --git a/source/include/libsmb_internal.h b/source/include/libsmb_internal.h
index e687e24..6930812 100644
--- a/source/include/libsmb_internal.h
+++ b/source/include/libsmb_internal.h
@@ -113,23 +113,6 @@ struct SMBC_internal_data {
 	/* True when this handle is initialized */
 	bool                                    initialized;
 
-#if 0 /* Left in libsmbclient.h for backward compatibility */
-        /* Netbios name used for making connections */
-        char *                                  netbios_name;
-
-        /* Workgroup used for making connections */
-        char *                                  workgroup;
-
-        /* Username used for making connections */
-        char *                                  user;
-
-        /* Debug level */
-        int                                     debug;
-
-        /* Connection timeout value */
-        int                                     timeout;
-#endif
-
         /* dirent pointer location
          *
          * Leave room for any urlencoded filename and the comment field.
@@ -192,88 +175,7 @@ struct SMBC_internal_data {
          */
         smbc_smb_encrypt_level                  smb_encryption_level;
 
-#if 0 /* Left in libsmbclient.h for backward compatibility */
-        /*
-         * From how many local master browsers should the list of
-         * workgroups be retrieved?  It can take up to 12 minutes or
-         * longer after a server becomes a local master browser, for
-         * it to have the entire browse list (the list of
-         * workgroups/domains) from an entire network.  Since a client
-         * never knows which local master browser will be found first,
-         * the one which is found first and used to retrieve a browse
-         * list may have an incomplete or empty browse list.  By
-         * requesting the browse list from multiple local master
-         * browsers, a more complete list can be generated.  For small
-         * networks (few workgroups), it is recommended that this
-         * value be set to 0, causing the browse lists from all found
-         * local master browsers to be retrieved and merged.  For
-         * networks with many workgroups, a suitable value for this
-         * variable is probably somewhere around 3. (Default: 3).
-         */
-        int                                     browse_max_lmb_count;
-
-        /*
-         * There is a difference in the desired return strings from
-         * smbc_readdir() depending upon whether the filenames are to
-         * be displayed to the user, or whether they are to be
-         * appended to the path name passed to smbc_opendir() to call
-         * a further smbc_ function (e.g. open the file with
-         * smbc_open()).  In the former case, the filename should be
-         * in "human readable" form.  In the latter case, the smbc_
-         * functions expect a URL which must be url-encoded.  Those
-         * functions decode the URL.  If, for example, smbc_readdir()
-         * returned a file name of "abc%20def.txt", passing a path
-         * with this file name attached to smbc_open() would cause
-         * smbc_open to attempt to open the file "abc def.txt" since
-         * the %20 is decoded into a space.
-         *
-         * Set this option to True if the names returned by
-         * smbc_readdir() should be url-encoded such that they can be
-         * passed back to another smbc_ call.  Set it to False if the
-         * names returned by smbc_readdir() are to be presented to the
-         * user.
-         *
-         * For backwards compatibility, this option defaults to False.
-         */
-        bool                                    urlencode_readdir_entries;
-
-        /*
-         * Some Windows versions appear to have a limit to the number
-         * of concurrent SESSIONs and/or TREE CONNECTions.  In
-         * one-shot programs (i.e. the program runs and then quickly
-         * ends, thereby shutting down all connections), it is
-         * probably reasonable to establish a new connection for each
-         * share.  In long-running applications, the limitation can be
-         * avoided by using only a single connection to each server,
-         * and issuing a new TREE CONNECT when the share is accessed.
-         */
-        bool                                    one_share_per_server;
-
-        /* Kerberos-related flags */
-        bool                                    use_kerberos;
-        bool                                    fallback_after_kerberos;
-
-        /* Don't try to do automatic anonymous login */
-        bool                                    no_auto_anonymous_login;
-
-        /* Server-related functions */
-        struct
-        {
-                smbc_get_auth_data_fn           get_auth_data_fn;
-                smbc_check_server_fn            check_server_fn;
-                smbc_remove_unused_server_fn    remove_unused_server_fn;
-        }               server;
-
-        /* Cache-related functions */
-        struct
-        {
-                struct smbc_server_cache *      server_cache_data;
-                smbc_add_cached_srv_fn          add_cached_server_fn;
-                smbc_get_cached_srv_fn          get_cached_server_fn;
-                smbc_remove_cached_srv_fn       remove_cached_server_fn;
-                smbc_purge_cached_srv_fn        purge_cached_server_fn;
-        }               cache;
-#endif
+        struct smbc_server_cache * server_cache;
 
         /* POSIX emulation functions */
         struct
diff --git a/source/include/libsmbclient.h b/source/include/libsmbclient.h
index bfed71d..e1a4b74 100644
--- a/source/include/libsmbclient.h
+++ b/source/include/libsmbclient.h
@@ -25,6 +25,13 @@
 #ifndef SMBCLIENT_H_INCLUDED
 #define SMBCLIENT_H_INCLUDED
 
+#undef _DEPRECATED_
+#if ! defined(__LIBSMBCLIENT_INTERNAL__) && defined(__GNUC__)
+# define _DEPRECATED_      __attribute__ ((deprecated))
+#else
+# define _DEPRECATED_
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -416,7 +423,7 @@ typedef int (*smbc_remove_cached_srv_fn)(SMBCCTX * c, SMBCSRV *srv);
  * @return          0 when found and removed. 1 on failure.
  *
  */ 
-typedef int (*smbc_purge_cached_srv_fn)     (SMBCCTX * c);
+typedef int (*smbc_purge_cached_fn)     (SMBCCTX * c);
 
 
 
@@ -734,14 +741,14 @@ void smbc_setFunctionRemoveCachedServer(SMBCCTX *c,
  * Get the function for server cache purging.  This function tries to
  * remove all cached servers (e.g. on disconnect)
  */
-smbc_purge_cached_srv_fn smbc_getFunctionPurgeCachedServers(SMBCCTX *c);
+smbc_purge_cached_fn smbc_getFunctionPurgeCachedServers(SMBCCTX *c);
 
 /**
  * Set the function for server cache purging.  This function tries to
  * remove all cached servers (e.g. on disconnect)
  */
 void smbc_setFunctionPurgeCachedServers(SMBCCTX *c,
-                                        smbc_purge_cached_srv_fn fn);
+                                        smbc_purge_cached_fn fn);
 
 /** Get the function to store private data of the server cache */
 struct smbc_server_cache * smbc_getServerCacheData(SMBCCTX *c);
@@ -1010,7 +1017,7 @@ int smbc_free_context(SMBCCTX * context, int shutdown_ctx);
 
 /**@ingroup misc
  *
- * @DEPRECATED.  Use smbc_setOption*() functions instead.
+ * @deprecated.  Use smbc_setOption*() functions instead.
  */
 void
 smbc_option_set(SMBCCTX *context,
@@ -1018,7 +1025,7 @@ smbc_option_set(SMBCCTX *context,
                 ... /* option_value */);
 
 /*
- * @DEPRECATED.  Use smbc_getOption*() functions instead.
+ * @deprecated.  Use smbc_getOption*() functions instead.
  */
 void *
 smbc_option_get(SMBCCTX *context,
@@ -2570,7 +2577,6 @@ smbc_version(void);
 }
 #endif
 
-
 /**
  * @ingroup structure
  * Structure that contains a client context information 
@@ -2586,137 +2592,129 @@ smbc_version(void);
  * directly visible to applications.  This makes it much easier to maintain
  * ABI compatibility.
  */
-struct _SMBCCTX {
-        struct
-        {
-                /**
-                 * debug level
-                 *
-                 * Manually setting/retrieving this value is deprecated.
-                 * Use smbc_getDebug() and smbc_setDebug()
-                 */
-                int     debug;
+struct _SMBCCTX
+{
+        /**
+         * debug level
+         *
+         * DEPRECATED:
+         * Use smbc_getDebug() and smbc_setDebug()
+         */
+        int     debug _DEPRECATED_;
 	
-                /**
-                 * netbios name used for making connections
-                 *
-                 * Manually setting/retrieving this value is deprecated.
-                 * Use smbc_getNetbiosName() and smbc_setNetbiosName()
-                 */
-                char * netbios_name;
+        /**
+         * netbios name used for making connections
+         *
+         * DEPRECATED:
+         * Use smbc_getNetbiosName() and smbc_setNetbiosName()
+         */
+        char * netbios_name _DEPRECATED_;
 
-                /**
-                 * workgroup name used for making connections
-                 *
-                 * Manually setting/retrieving this value is deprecated.
-                 * Use smbc_getWorkgroup() and smbc_setWorkgroup()
-                 */
-                char * workgroup;
+        /**
+         * workgroup name used for making connections
+         *
+         * DEPRECATED:
+         * Use smbc_getWorkgroup() and smbc_setWorkgroup()
+         */
+        char * workgroup _DEPRECATED_;
 
-                /**
-                 * username used for making connections
-                 *
-                 * Manually setting/retrieving this value is deprecated.
-                 * Use smbc_getUser() and smbc_setUser()
-                 */
-                char * user;
-
-                /**
-                 * timeout used for waiting on connections / response data (in
-                 * milliseconds)
-                 *
-                 * Manually setting/retrieving this value is deprecated.
-                 * Use smbc_getTimeout() and smbc_setTimeout()
-                 */
-                int timeout;
-        } config;
+        /**
+         * username used for making connections
+         *
+         * DEPRECATED:
+         * Use smbc_getUser() and smbc_setUser()
+         */
+        char * user _DEPRECATED_;
+
+        /**
+         * timeout used for waiting on connections / response data (in
+         * milliseconds)
+         *
+         * DEPRECATED:
+         * Use smbc_getTimeout() and smbc_setTimeout()
+         */
+        int timeout _DEPRECATED_;
 
 	/**
          * callable functions for files:
 	 * For usage and return values see the SMBC_* functions
          *
-         * Manually setting/retrieving these values is deprecated.
+         * DEPRECATED:
          *
          * Use smbc_getFunction*() and smbc_setFunction*(), e.g.
          * smbc_getFunctionOpen(), smbc_setFunctionUnlink(), etc.
 	 */ 
-        struct
-        {
-                smbc_open_fn                    open_fn;
-                smbc_creat_fn                   creat_fn;
-                smbc_read_fn                    read_fn;
-                smbc_write_fn                   write_fn;
-                smbc_unlink_fn                  unlink_fn;
-                smbc_rename_fn                  rename_fn;
-                smbc_lseek_fn                   lseek_fn;
-                smbc_stat_fn                    stat_fn;
-                smbc_fstat_fn                   fstat_fn;
+        smbc_open_fn                    open _DEPRECATED_;
+        smbc_creat_fn                   creat _DEPRECATED_;
+        smbc_read_fn                    read _DEPRECATED_;
+        smbc_write_fn                   write _DEPRECATED_;
+        smbc_unlink_fn                  unlink _DEPRECATED_;
+        smbc_rename_fn                  rename _DEPRECATED_;
+        smbc_lseek_fn                   lseek _DEPRECATED_;
+        smbc_stat_fn                    stat _DEPRECATED_;
+        smbc_fstat_fn                   fstat _DEPRECATED_;
 #if 0 /* internal */
-                smbc_ftruncate_fn               ftruncate_fn;
+        smbc_ftruncate_fn               ftruncate_fn;
 #endif
-                smbc_close_fn                   close_fn;
-                smbc_opendir_fn                 opendir_fn;
-                smbc_closedir_fn                closedir_fn;
-                smbc_readdir_fn                 readdir_fn;
-                smbc_getdents_fn                getdents_fn;
-                smbc_mkdir_fn                   mkdir_fn;
-                smbc_rmdir_fn                   rmdir_fn;
-                smbc_telldir_fn                 telldir_fn;
-                smbc_lseekdir_fn                lseekdir_fn;
-                smbc_fstatdir_fn                fstatdir_fn;
-                smbc_chmod_fn                   chmod_fn;
-                smbc_utimes_fn                  utimes_fn;
-                smbc_setxattr_fn                setxattr_fn;
-                smbc_getxattr_fn                getxattr_fn;
-                smbc_removexattr_fn             removexattr_fn;
-                smbc_listxattr_fn               listxattr_fn;
-        }               posix_emu;
+        smbc_close_fn                   close_fn _DEPRECATED_;
+        smbc_opendir_fn                 opendir _DEPRECATED_;
+        smbc_closedir_fn                closedir _DEPRECATED_;
+        smbc_readdir_fn                 readdir _DEPRECATED_;
+        smbc_getdents_fn                getdents _DEPRECATED_;
+        smbc_mkdir_fn                   mkdir _DEPRECATED_;
+        smbc_rmdir_fn                   rmdir _DEPRECATED_;
+        smbc_telldir_fn                 telldir _DEPRECATED_;
+        smbc_lseekdir_fn                lseekdir _DEPRECATED_;
+        smbc_fstatdir_fn                fstatdir _DEPRECATED_;
+        smbc_chmod_fn                   chmod _DEPRECATED_;
+        smbc_utimes_fn                  utimes _DEPRECATED_;
+        smbc_setxattr_fn                setxattr _DEPRECATED_;
+        smbc_getxattr_fn                getxattr _DEPRECATED_;
+        smbc_removexattr_fn             removexattr _DEPRECATED_;
+        smbc_listxattr_fn               listxattr _DEPRECATED_;
 
         /* Printing-related functions */
-        struct
-        {
-                smbc_print_file_fn              print_file_fn;
-                smbc_open_print_job_fn          open_print_job_fn;
-                smbc_list_print_jobs_fn         list_print_jobs_fn;
-                smbc_unlink_print_job_fn        unlink_print_job_fn;
-        }               printing;
+        smbc_print_file_fn              print_file _DEPRECATED_;
+        smbc_open_print_job_fn          open_print_job _DEPRECATED_;
+        smbc_list_print_jobs_fn         list_print_jobs _DEPRECATED_;
+        smbc_unlink_print_job_fn        unlink_print_job _DEPRECATED_;
 
         /*
         ** Callbacks
-        * These callbacks _always_ have to be initialized because they will
-        * not be checked at dereference for increased speed.
+        *
+        * DEPRECATED:
+        *
+        * See the comment above each field, for the getter and setter
+        * functions that should now be used.
         */
-	struct
+	struct _smbc_callbacks
         {
 		/**
                  * authentication function callback: called upon auth requests
                  *
-                 * Manually setting/retrieving this value is deprecated.
+                 * DEPRECATED:
                  * Use smbc_getFunctionAuthData(), smbc_setFunctionAuthData()
 		 */
-                smbc_get_auth_data_fn get_auth_data_fn;
+                smbc_get_auth_data_fn auth_fn _DEPRECATED_;
 		
 		/**
                  * check if a server is still good
                  *
-                 * Manually setting/retrieving this value is deprecated.
+                 * DEPRECATED:
                  * Use smbc_getFunctionCheckServer(),
                  * smbc_setFunctionCheckServer()
 		 */
-		smbc_check_server_fn check_server_fn;
+		smbc_check_server_fn check_server_fn _DEPRECATED_;
 
 		/**
                  * remove a server if unused
                  *
-                 * Manually setting/retrieving this value is deprecated.
+                 * DEPRECATED:
                  * Use smbc_getFunctionRemoveUnusedServer(),
                  * smbc_setFunctionCheckServer()
 		 */
-		smbc_remove_unused_server_fn remove_unused_server_fn;
-        } server;
+		smbc_remove_unused_server_fn remove_unused_server_fn _DEPRECATED_;
 
-        struct
-        {
 		/** Cache subsystem


-- 
Samba Shared Repository


More information about the samba-cvs mailing list