s4:lib/tevent: rename structs
[gd/samba-autobuild/.git] / source4 / client / cifsdd.c
index a48235d047862ce33bf441c5b4c1cfb6fde07799..302d470afdb747b0e88430afb58481c6ca657a4f 100644 (file)
@@ -22,6 +22,9 @@
 #include "system/filesys.h"
 #include "auth/gensec/gensec.h"
 #include "lib/cmdline/popt_common.h"
+#include "libcli/resolve/resolve.h"
+#include "libcli/raw/libcliraw.h"
+#include "lib/events/events.h"
 
 #include "cifsdd.h"
 #include "param/param.h"
@@ -351,7 +354,14 @@ static void print_transfer_stats(void)
        }
 }
 
-static struct dd_iohandle * open_file(const char * which)
+static struct dd_iohandle * open_file(struct resolve_context *resolve_ctx, 
+                                     struct tevent_context *ev,
+                                     const char * which, const char **ports,
+                                     struct smbcli_options *smb_options,
+                                     const char *socket_options,
+                                     struct smbcli_session_options *smb_session_options,
+                                     struct smb_iconv_convenience *iconv_convenience,
+                                     struct gensec_settings *gensec_settings)
 {
        int                     options = 0;
        const char *            path = NULL;
@@ -371,13 +381,21 @@ static struct dd_iohandle * open_file(const char * which)
 
        if (strcmp(which, "if") == 0) {
                path = check_arg_pathname("if");
-               handle = dd_open_path(path, check_arg_numeric("ibs"),
-                                       options);
+               handle = dd_open_path(resolve_ctx, ev, path, ports,
+                                     check_arg_numeric("ibs"), options,
+                                     socket_options,
+                                     smb_options, smb_session_options,
+                                     iconv_convenience,
+                                     gensec_settings);
        } else if (strcmp(which, "of") == 0) {
                options |= DD_WRITE;
                path = check_arg_pathname("of");
-               handle = dd_open_path(path, check_arg_numeric("obs"),
-                                       options);
+               handle = dd_open_path(resolve_ctx, ev, path, ports,
+                                     check_arg_numeric("obs"), options,
+                                     socket_options,
+                                     smb_options, smb_session_options,
+                                     iconv_convenience,
+                                     gensec_settings);
        } else {
                SMB_ASSERT(0);
                return(NULL);
@@ -390,15 +408,7 @@ static struct dd_iohandle * open_file(const char * which)
        return(handle);
 }
 
-static void set_max_xmit(uint64_t iomax)
-{
-       char buf[64];
-
-       snprintf(buf, sizeof(buf), "%llu", (unsigned long long)iomax);
-       lp_set_cmdline(global_loadparm, "max xmit", buf);
-}
-
-static int copy_files(void)
+static int copy_files(struct tevent_context *ev, struct loadparm_context *lp_ctx)
 {
        uint8_t *       iobuf;  /* IO buffer. */
        uint64_t        iomax;  /* Size of the IO buffer. */
@@ -411,10 +421,16 @@ static int copy_files(void)
        struct dd_iohandle *    ifile;
        struct dd_iohandle *    ofile;
 
+       struct smbcli_options options;
+       struct smbcli_session_options session_options;
+
        ibs = check_arg_numeric("ibs");
        obs = check_arg_numeric("obs");
        count = check_arg_numeric("count");
 
+       lp_smbcli_options(lp_ctx, &options);
+       lp_smbcli_session_options(lp_ctx, &session_options);
+
        /* Allocate IO buffer. We need more than the max IO size because we
         * could accumulate a remainder if ibs and obs don't match.
         */
@@ -426,16 +442,25 @@ static int copy_files(void)
                return(EOM_EXIT_CODE);
        }
 
-       set_max_xmit(MAX(ibs, obs));
+       options.max_xmit = MAX(ibs, obs);
 
        DEBUG(4, ("IO buffer size is %llu, max xmit is %d\n",
-                       (unsigned long long)iomax, lp_max_xmit(global_loadparm)));
+                       (unsigned long long)iomax, options.max_xmit));
 
-       if (!(ifile = open_file("if"))) {
+       if (!(ifile = open_file(lp_resolve_context(lp_ctx), ev, "if",
+                               lp_smb_ports(lp_ctx), &options,
+                               lp_socket_options(lp_ctx),
+                               &session_options, lp_iconv_convenience(lp_ctx),
+                               lp_gensec_settings(lp_ctx, lp_ctx)))) {
                return(FILESYS_EXIT_CODE);
        }
 
-       if (!(ofile = open_file("of"))) {
+       if (!(ofile = open_file(lp_resolve_context(lp_ctx), ev, "of",
+                               lp_smb_ports(lp_ctx), &options,
+                               lp_socket_options(lp_ctx),
+                               &session_options,
+                               lp_iconv_convenience(lp_ctx),
+                               lp_gensec_settings(lp_ctx, lp_ctx)))) {
                return(FILESYS_EXIT_CODE);
        }
 
@@ -443,7 +468,7 @@ static int copy_files(void)
        ifile->io_seek(ifile, check_arg_numeric("skip") * ibs);
        ofile->io_seek(ofile, check_arg_numeric("seek") * obs);
 
-       DEBUG(4, ("max xmit was negotiated to be %d\n", lp_max_xmit(global_loadparm)));
+       DEBUG(4, ("max xmit was negotiated to be %d\n", options.max_xmit));
 
        for (data_size = 0;;) {
 
@@ -524,6 +549,7 @@ int main(int argc, const char ** argv)
 {
        int i;
        const char ** dd_args;
+       struct tevent_context *ev;
 
        poptContext pctx;
        struct poptOption poptions[] = {
@@ -574,7 +600,9 @@ int main(int argc, const char ** argv)
                }
        }
 
-       gensec_init(global_loadparm);
+       ev = s4_event_context_init(talloc_autofree_context());
+
+       gensec_init(cmdline_lp_ctx);
        dump_args();
 
        if (check_arg_numeric("ibs") == 0 || check_arg_numeric("ibs") == 0) {
@@ -595,7 +623,7 @@ int main(int argc, const char ** argv)
 
        CatchSignal(SIGINT, dd_handle_signal);
        CatchSignal(SIGUSR1, dd_handle_signal);
-       return(copy_files());
+       return(copy_files(ev, cmdline_lp_ctx));
 }
 
 /* vim: set sw=8 sts=8 ts=8 tw=79 : */