X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afs.c;h=0946b6df3b0766f82f95f0cd100f039753543350;hp=016329841fe87255cdc68c1191e8661124c1c326;hb=52fb766fd183e555d8c85185e35a4dc365097756;hpb=1ada5f286b031bde90d5cdaf8f85311cbfa7db6b diff --git a/afs.c b/afs.c index 01632984..0946b6df 100644 --- a/afs.c +++ b/afs.c @@ -607,14 +607,17 @@ static int com_select_callback(struct afs_callback_arg *aca) if (ret >= 0) goto out; /* ignore subsequent errors (but log them) */ - para_printf(&aca->pbout, "could not activate %s: %s\n" - "switching back to %s\n", - arg, para_strerror(-ret), current_mop? current_mop : "dummy"); - ret = activate_mood_or_playlist(current_mop, &num_admissible); - if (ret >= 0) - goto out; - para_printf(&aca->pbout, "could not activate %s: %s\nswitching to dummy\n", - current_mop, para_strerror(-ret)); + para_printf(&aca->pbout, "could not activate %s\n", arg); + if (current_mop) { + int ret2; + para_printf(&aca->pbout, "switching back to %s\n", current_mop); + ret2 = activate_mood_or_playlist(current_mop, &num_admissible); + if (ret2 >= 0) + goto out; + para_printf(&aca->pbout, "could not reactivate %s: %s\n", + current_mop, para_strerror(-ret2)); + } + para_printf(&aca->pbout, "activating dummy mood\n"); activate_mood_or_playlist(NULL, &num_admissible); out: para_printf(&aca->pbout, "activated %s (%d admissible files)\n", @@ -703,7 +706,7 @@ static int open_afs_tables(void) int i, ret; get_database_dir(); - PARA_NOTICE_LOG("opening %u osl tables in %s\n", NUM_AFS_TABLES, + PARA_NOTICE_LOG("opening %d osl tables in %s\n", NUM_AFS_TABLES, database_dir); for (i = 0; i < NUM_AFS_TABLES; i++) { ret = afs_tables[i].open(database_dir); @@ -1021,6 +1024,13 @@ __noreturn void afs_init(uint32_t cookie, int socket_fd) register_command_task(cookie, &s); s.default_timeout.tv_sec = 0; s.default_timeout.tv_usec = 999 * 1000; + ret = write(socket_fd, "\0", 1); + if (ret != 1) { + if (ret == 0) + errno = EINVAL; + ret = -ERRNO_TO_PARA_ERROR(errno); + goto out_close; + } ret = schedule(&s); sched_shutdown(&s); out_close: @@ -1192,7 +1202,7 @@ __must_check int afs_event(enum afs_events event, struct para_buffer *pb, continue; ret = t->event_handler(event, pb, data); if (ret < 0) { - PARA_CRIT_LOG("table %s, event %d: %s\n", t->name, + PARA_CRIT_LOG("table %s, event %u: %s\n", t->name, event, para_strerror(-ret)); return ret; }