Remove the silly "user_socket_options" global variable
[samba.git] / source3 / torture / vfstest.c
index fbdc0ff054a4c198514bce96f16172f6d95957e0..daecf3c2d1dffa5ff75a58eae68d0e4ca1fd0762 100644 (file)
@@ -11,7 +11,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
@@ -20,8 +20,7 @@
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
@@ -33,12 +32,15 @@ static struct cmd_list {
        struct cmd_set *cmd_set;
 } *cmd_list;
 
-extern pstring user_socket_options;
+int get_client_fd(void)
+{
+       return -1;
+}
 
 /****************************************************************************
 handle completion of commands for readline
 ****************************************************************************/
-static char **completion_fn(char *text, int start, int end)
+static char **completion_fn(const char *text, int start, int end)
 {
 #define MAX_COMPLETIONS 100
        char **matches;
@@ -52,10 +54,10 @@ static char **completion_fn(char *text, int start, int end)
        if (!commands) 
                return NULL;
 
-       matches = (char **)malloc(sizeof(matches[0])*MAX_COMPLETIONS);
+       matches = SMB_MALLOC_ARRAY(char *, MAX_COMPLETIONS);
        if (!matches) return NULL;
 
-       matches[count++] = strdup(text);
+       matches[count++] = SMB_STRDUP(text);
        if (!matches[0]) return NULL;
 
        while (commands && count < MAX_COMPLETIONS-1) 
@@ -68,7 +70,7 @@ static char **completion_fn(char *text, int start, int end)
                        if ((strncmp(text, commands->cmd_set[i].name, strlen(text)) == 0) &&
                                commands->cmd_set[i].fn) 
                        {
-                               matches[count] = strdup(commands->cmd_set[i].name);
+                               matches[count] = SMB_STRDUP(commands->cmd_set[i].name);
                                if (!matches[count]) 
                                        return NULL;
                                count++;
@@ -81,7 +83,7 @@ static char **completion_fn(char *text, int start, int end)
 
        if (count == 2) {
                SAFE_FREE(matches[0]);
-               matches[0] = strdup(matches[1]);
+               matches[0] = SMB_STRDUP(matches[1]);
        }
        matches[count] = NULL;
        return matches;
@@ -113,7 +115,7 @@ static NTSTATUS cmd_conf(struct vfs_state *vfs, TALLOC_CTX *mem_ctx,
                return NT_STATUS_OK;
        }
 
-       if (!lp_load(argv[1], False, True, False)) {
+       if (!lp_load(argv[1], False, True, False, True)) {
                printf("Error loading \"%s\"\n", argv[1]);
                return NT_STATUS_OK;
        }
@@ -248,7 +250,7 @@ static void add_command_set(struct cmd_set *cmd_set)
 {
        struct cmd_list *entry;
 
-       if (!(entry = (struct cmd_list *)malloc(sizeof(struct cmd_list)))) {
+       if (!(entry = SMB_MALLOC_P(struct cmd_list))) {
                DEBUG(0, ("out of memory\n"));
                return;
        }
@@ -261,7 +263,8 @@ static void add_command_set(struct cmd_set *cmd_set)
 
 static NTSTATUS do_cmd(struct vfs_state *vfs, struct cmd_set *cmd_entry, char *cmd)
 {
-       char *p = cmd, **argv = NULL;
+       const char *p = cmd;
+       char **argv = NULL;
        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        pstring buf;
        TALLOC_CTX *mem_ctx = NULL;
@@ -273,7 +276,7 @@ static NTSTATUS do_cmd(struct vfs_state *vfs, struct cmd_set *cmd_entry, char *c
  again:
        while(next_token(&p, buf, " ", sizeof(buf))) {
                if (argv) {
-                       argv[argc] = strdup(buf);
+                       argv[argc] = SMB_STRDUP(buf);
                }
                
                argc++;
@@ -283,7 +286,7 @@ static NTSTATUS do_cmd(struct vfs_state *vfs, struct cmd_set *cmd_entry, char *c
 
                /* Create argument list */
 
-               argv = (char **)malloc(sizeof(char *) * argc);
+               argv = SMB_MALLOC_ARRAY(char *, argc);
                memset(argv, 0, sizeof(char *) * argc);
 
                if (!argv) {
@@ -336,9 +339,9 @@ static NTSTATUS do_cmd(struct vfs_state *vfs, struct cmd_set *cmd_entry, char *c
 static NTSTATUS process_cmd(struct vfs_state *vfs, char *cmd)
 {
        struct cmd_list *temp_list;
-       BOOL found = False;
+       bool found = False;
        pstring buf;
-       char *p = cmd;
+       const char *p = cmd;
        NTSTATUS result = NT_STATUS_OK;
        int len = 0;
 
@@ -409,6 +412,11 @@ void exit_server(const char *reason)
        exit(0);
 }
 
+void exit_server_cleanly(const char *const reason)
+{
+       exit_server("normal exit");
+}
+
 static int server_fd = -1;
 int last_message = -1;
 
@@ -417,13 +425,18 @@ int smbd_server_fd(void)
                return server_fd;
 }
 
+void reload_printers(void)
+{
+       return;
+}
+
 /****************************************************************************
  Reload the services file.
 **************************************************************************/
 
-BOOL reload_services(BOOL test)
+bool reload_services(bool test)
 {
-       BOOL ret;
+       bool ret;
        
        if (lp_loaded()) {
                pstring fname;
@@ -442,9 +455,7 @@ BOOL reload_services(BOOL test)
 
        lp_killunused(conn_snum_used);
        
-       ret = lp_load(dyn_CONFIGFILE, False, False, True);
-
-       load_printers();
+       ret = lp_load(dyn_CONFIGFILE, False, False, True, True);
 
        /* perhaps the config filename is now set */
        if (!test)
@@ -457,7 +468,8 @@ BOOL reload_services(BOOL test)
        {
                if (smbd_server_fd() != -1) {      
                        set_socket_options(smbd_server_fd(),"SO_KEEPALIVE");
-                       set_socket_options(smbd_server_fd(), user_socket_options);
+                       set_socket_options(smbd_server_fd(),
+                                          lp_socket_options());
                }
        }
 
@@ -465,11 +477,32 @@ BOOL reload_services(BOOL test)
        reset_stat_cache();
 
        /* this forces service parameters to be flushed */
-       set_current_service(NULL,True);
+       set_current_service(NULL,0,True);
 
        return (ret);
 }
 
+struct event_context *smbd_event_context(void)
+{
+       static struct event_context *ctx;
+
+       if (!ctx && !(ctx = event_context_init(NULL))) {
+               smb_panic("Could not init smbd event context\n");
+       }
+       return ctx;
+}
+
+struct messaging_context *smbd_messaging_context(void)
+{
+       static struct messaging_context *ctx;
+
+       if (!ctx && !(ctx = messaging_init(NULL, server_id_self(),
+                                          smbd_event_context()))) {
+               smb_panic("Could not init smbd messaging context\n");
+       }
+       return ctx;
+}
+
 /* Main function */
 
 int main(int argc, char *argv[])
@@ -491,6 +524,7 @@ int main(int argc, char *argv[])
                POPT_TABLEEND
        };
 
+       load_case_tables();
 
        setlinebuf(stdout);
 
@@ -565,6 +599,6 @@ int main(int argc, char *argv[])
                        process_cmd(&vfs, line);
        }
        
-       free(vfs.conn);
+       conn_free(vfs.conn);
        return 0;
 }