| 615 if (config) gtk_widget_destroy(config); |
615 if (config) gtk_widget_destroy(config); |
| 616 config = NULL; |
616 config = NULL; |
| 617 } |
617 } |
| 618 |
618 |
| 619 static void do_load(GtkWidget *m, gpointer n) { |
619 static void do_load(GtkWidget *m, gpointer n) { |
| 620 const char *f = gtk_file_selection_get_filename(GTK_FILE_SELECTION(config)); |
620 const char *file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(config)); |
| 621 gchar* file; |
621 gchar *f = NULL; |
| 622 if (!f || !strlen(f)) { |
622 if (!file || !strlen(file)) { |
| 623 perl_end(); |
623 perl_end(); |
| 624 perl_init(); |
624 perl_init(); |
| 625 return; |
625 return; |
| 626 } |
626 } |
| 627 file = g_strdup(f); |
|
| 628 |
627 |
| 629 if (file_is_dir(file, config)) { |
628 if (file_is_dir(file, config)) { |
| 630 g_free(file); |
|
| 631 return; |
629 return; |
| 632 } |
630 } |
| 633 |
631 |
| 634 if (last_dir) { |
632 if (last_dir) { |
| 635 g_free(file); |
|
| 636 g_free(last_dir); |
633 g_free(last_dir); |
| 637 } |
634 } |
| 638 last_dir = g_dirname(file); |
635 last_dir = g_dirname(file); |
| 639 |
636 |
| 640 debug_printf("Loading perl script: %s\n", file); |
637 debug_printf("Loading perl script: %s\n", file); |
| 641 |
638 |
| 642 perl_load_file(file); |
639 f = g_strdup(file); |
| |
640 perl_load_file(f); |
| |
641 g_free(f); |
| 643 cfdes(config, NULL); |
642 cfdes(config, NULL); |
| 644 g_free(file); |
|
| 645 } |
643 } |
| 646 |
644 |
| 647 void load_perl_script(GtkWidget *w, gpointer d) |
645 void load_perl_script(GtkWidget *w, gpointer d) |
| 648 { |
646 { |
| 649 char *buf, *temp; |
647 char *buf, *temp; |