r8643: - make lp_configfile() work again
[sfrench/samba-autobuild/.git] / source4 / gtk / tools / gwcrontab.c
index f06b4fcbe8cad5e52079ee731c499f444c4edf11..c8d8fd692955b384e7ffeb82b55950acfa621b61 100644 (file)
 */
 
 #include "includes.h"
+#include "dynconfig.h"
 #include "librpc/gen_ndr/ndr_atsvc.h"
+#include "gtk/common/select.h"
 #include "gtk/common/gtk-smb.h"
 
-struct dcerpc_pipe *at_pipe = NULL;
-GtkWidget *mainwin;
-GtkListStore *store_jobs;
-GtkWidget *tasks;
-GtkWidget *entry_cmd;
-GtkWidget *entry_repeat_weekly;
-GtkWidget *entry_repeat_monthly;
-GtkWidget *delete;
+static struct dcerpc_pipe *at_pipe = NULL;
+static GtkWidget *mainwin;
+static GtkListStore *store_jobs;
+static GtkWidget *tasks;
+static GtkWidget *entry_cmd;
+static GtkWidget *entry_repeat_weekly;
+static GtkWidget *entry_repeat_monthly;
+static GtkWidget *delete;
 
 void update_joblist(void)
 {
@@ -39,7 +41,7 @@ void update_joblist(void)
        struct atsvc_JobEnum r;
        struct atsvc_enum_ctr ctr;
        int i;
-       uint32 resume_handle = 0;
+       uint32_t resume_handle = 0;
 
         gtk_list_store_clear(store_jobs);
 
@@ -52,7 +54,7 @@ void update_joblist(void)
        
        status = dcerpc_atsvc_JobEnum(at_pipe, mem_ctx, &r);
        if(!NT_STATUS_IS_OK(status)) {
-               gtk_show_ntstatus(mainwin, status);
+               gtk_show_ntstatus(mainwin, "Error while enumerating first job", status);
                return;
        }
 
@@ -68,28 +70,26 @@ void update_joblist(void)
                         -1);
 
        }
-       talloc_destroy(mem_ctx);
+       talloc_free(mem_ctx);
        gtk_widget_set_sensitive(tasks, TRUE);
 }
 
-static void on_job_select(GtkTreeSelection *sel,
-                                             gpointer data)
+static void on_job_select(GtkTreeSelection *sel, gpointer data)
 {
        gtk_widget_set_sensitive(delete, gtk_tree_selection_get_selected(sel, NULL, NULL));
 }
 
 
-void
-on_connect_activate                    (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
+static void on_connect_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        GtkRpcBindingDialog *d;
        NTSTATUS status;
+       struct cli_credentials *credentials;
        gint result;
        TALLOC_CTX *mem_ctx;
 
-       d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(FALSE, NULL));
-    result = gtk_dialog_run(GTK_DIALOG(d));
+       d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(NULL));
+       result = gtk_dialog_run(GTK_DIALOG(d));
        switch(result) {
                case GTK_RESPONSE_ACCEPT:
                        break;
@@ -100,27 +100,34 @@ on_connect_activate                    (GtkMenuItem     *menuitem,
 
        mem_ctx = talloc_init("gwcrontab_connect");
        /* If connected, get list of jobs */
+
+       credentials = cli_credentials_init(mem_ctx);
+       cli_credentials_guess(credentials);
+       cli_credentials_set_gtk_callbacks(credentials);
        
-       status = dcerpc_pipe_connect_b(&at_pipe, gtk_rpc_binding_dialog_get_binding(d, mem_ctx), DCERPC_ATSVC_UUID, DCERPC_ATSVC_VERSION, lp_workgroup(), gtk_rpc_binding_dialog_get_username(d), gtk_rpc_binding_dialog_get_password(d));
-       
+       status = dcerpc_pipe_connect_b(mem_ctx, &at_pipe,
+                                      gtk_rpc_binding_dialog_get_binding(d, mem_ctx),
+                                      DCERPC_ATSVC_UUID,
+                                      DCERPC_ATSVC_VERSION,
+                                      credentials, NULL);
+
        if(!NT_STATUS_IS_OK(status)) {
-               gtk_show_ntstatus(mainwin, status);
+               gtk_show_ntstatus(mainwin, "Error while connecting to at service", status);
                at_pipe = NULL;
-        gtk_widget_destroy(GTK_WIDGET(d));
-               talloc_destroy(mem_ctx);
+               gtk_widget_destroy(GTK_WIDGET(d));
+               talloc_free(mem_ctx);
                return;
        }
        gtk_widget_destroy(GTK_WIDGET(d));
 
-       talloc_destroy(mem_ctx);
+       at_pipe = talloc_reference(talloc_autofree_context(), at_pipe);
+       talloc_free(mem_ctx);
        update_joblist();
 }
 
-void
-on_quit_activate                      (GtkMenuItem     *menuitem,
-                                                                          gpointer         user_data)
+static void on_quit_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
-       if(at_pipe)dcerpc_pipe_close(at_pipe);
+       talloc_free(at_pipe);
        gtk_main_quit();
 }
 
@@ -156,12 +163,12 @@ on_new_activate                        (GtkMenuItem     *menuitem,
 
        status = dcerpc_atsvc_JobAdd(at_pipe, mem_ctx, &r);
        if(!NT_STATUS_IS_OK(status)) {
-               talloc_destroy(mem_ctx);
-               gtk_show_ntstatus(mainwin, status);
+               talloc_free(mem_ctx);
+               gtk_show_ntstatus(mainwin, "Error while adding job", status);
                return;
        }
        
-       talloc_destroy(mem_ctx);
+       talloc_free(mem_ctx);
        gtk_widget_destroy(d);
        
        d = gtk_message_dialog_new (GTK_WINDOW(mainwin), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Job Id: %d", r.out.job_id);
@@ -192,9 +199,9 @@ on_delete_activate                     (GtkMenuItem     *menuitem,
 
                mem_ctx = talloc_init("del_job");
                status = dcerpc_atsvc_JobDel(at_pipe, mem_ctx, &r);
-               talloc_destroy(mem_ctx);
+               talloc_free(mem_ctx);
                if(!NT_STATUS_IS_OK(status)) {
-                       gtk_show_ntstatus(mainwin, status);
+                       gtk_show_ntstatus(mainwin, "Error deleting job", status);
                        return;
                }
 
@@ -203,17 +210,14 @@ on_delete_activate                     (GtkMenuItem     *menuitem,
 }
 
 
-void
-on_about_activate                     (GtkMenuItem     *menuitem,
-                                                                          gpointer         user_data)
+static void on_about_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
        GtkDialog *aboutwin = GTK_DIALOG(create_gtk_samba_about_dialog("gwcrontab"));
        gtk_dialog_run(aboutwin);
        gtk_widget_destroy(GTK_WIDGET(aboutwin));
 }
 
-GtkWidget*
-create_mainwindow (void)
+static GtkWidget* create_mainwindow (void)
 {
        GtkWidget *mainwindow;
        GtkWidget *vbox;
@@ -412,9 +416,9 @@ static GtkWidget*create_new_job_dialog (void)
        gtk_table_attach (GTK_TABLE (table1), cal_day, 1, 2, 0, 1,
                                          (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                                          (GtkAttachOptions) (GTK_FILL), 0, 0);
-       gtk_calendar_display_options (GTK_CALENDAR (cal_day),
-                                                                 GTK_CALENDAR_SHOW_HEADING
-                                                                 | GTK_CALENDAR_SHOW_DAY_NAMES);
+       gtk_calendar_set_display_options (GTK_CALENDAR (cal_day),
+                                         GTK_CALENDAR_SHOW_HEADING
+                                         | GTK_CALENDAR_SHOW_DAY_NAMES);
 
        label3 = gtk_label_new ("Date");
        gtk_table_attach (GTK_TABLE (table1), label3, 0, 1, 0, 1,
@@ -490,13 +494,14 @@ static GtkWidget*create_new_job_dialog (void)
 
  int main(int argc, char **argv)
 {
-       lp_load(dyn_CONFIGFILE,True,False,False);
+       gwcrontab_init_subsystems;
+       lp_load();
        load_interfaces();
+       setup_logging(argv[0], DEBUG_STDERR);
 
        gtk_init(&argc, &argv);
        mainwin = create_mainwindow();
        gtk_widget_show_all(mainwin);
-       gtk_main();
 
-       return 0;
+       return gtk_event_loop();
 }