X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afs.c;h=c4de2e8f37d5a94937f0fe3519715d40242f5329;hp=538606add432aef4710c09d5b2826df3d123c933;hb=11eac668691942254a703300aecf2557a2ef4826;hpb=c517cb88ae745c9be06ac5cd99236c4bae8575c9 diff --git a/afs.c b/afs.c index 538606ad..c4de2e8f 100644 --- a/afs.c +++ b/afs.c @@ -366,8 +366,8 @@ int for_each_matching_row(struct pattern_match_data *pmd) */ int string_compare(const struct osl_object *obj1, const struct osl_object *obj2) { - const char *str1 = (const char *)obj1->data; - const char *str2 = (const char *)obj2->data; + const char *str1 = obj1->data; + const char *str2 = obj2->data; return strncmp(str1, str2, PARA_MIN(obj1->size, obj2->size)); } @@ -589,8 +589,9 @@ static int com_select_callback(struct afs_callback_arg *aca) para_printf(&aca->pbout, "activating dummy mood\n"); activate_mood_or_playlist(NULL, &num_admissible, NULL); out: - para_printf(&aca->pbout, "activated %s (%d admissible files)\n", - current_mop? current_mop : "dummy mood", num_admissible); + para_printf(&aca->pbout, "activated %s (%d admissible file%s)\n", + current_mop? current_mop : "dummy mood", num_admissible, + num_admissible == 1? "" : "s"); free_lpr: lls_free_parse_result(aca->lpr, cmd); return ret; @@ -638,16 +639,18 @@ static int setup_command_socket_or_die(void) return socket_fd; } +static char *database_dir; + static void close_afs_tables(void) { int i; PARA_NOTICE_LOG("closing afs_tables\n"); for (i = 0; i < NUM_AFS_TABLES; i++) afs_tables[i].close(); + free(database_dir); + database_dir = NULL; } -static char *database_dir; - static void get_database_dir(void) { if (!database_dir) { @@ -1002,9 +1005,14 @@ __noreturn void afs_init(int socket_fd) } ret = schedule(&s); sched_shutdown(&s); + close_current_mood(); out_close: close_afs_tables(); out: + signal_shutdown(signal_task); + free_status_items(); + free(current_mop); + free_lpr(); if (ret < 0) PARA_EMERG_LOG("%s\n", para_strerror(-ret)); exit(EXIT_FAILURE); @@ -1016,6 +1024,7 @@ static int com_init_callback(struct afs_callback_arg *aca) int i, ret; close_afs_tables(); + get_database_dir(); for (i = 0; i < NUM_AFS_TABLES; i++) { struct afs_table *t = &afs_tables[i]; @@ -1034,7 +1043,8 @@ static int com_init_callback(struct afs_callback_arg *aca) } ret = open_afs_tables(); if (ret < 0) - para_printf(&aca->pbout, "cannot open afs tables\n"); + para_printf(&aca->pbout, "cannot open afs tables: %s\n", + para_strerror(-ret)); out: return ret; }