X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afs.c;h=53fa5379dc906ccb173535ab06bbe9c770f4b25a;hp=a16252cdf037e50bdd415b8978968b638b508f0c;hb=57e4ba0b86355954ff7978eaf15de6bb50a380ce;hpb=19d0ffee2c551fb8d17f01f5bd04b0c52987147b diff --git a/afs.c b/afs.c index a16252cd..53fa5379 100644 --- a/afs.c +++ b/afs.c @@ -195,7 +195,7 @@ static int dispatch_result(int result_shmid, callback_result_handler *handler, * copied. It then notifies the afs process that the callback function \a f * should be executed by sending the shared memory identifier (shmid) to the * socket. - + * * If the callback produces a result, it sends any number of shared memory * identifiers back via the socket. For each such identifier received, \a * result_handler is called. The contents of the sma identified by the received @@ -236,8 +236,8 @@ int send_callback_request(callback_function *f, struct osl_object *query, if (ret < 0) goto out; - *(uint32_t *) buf = afs_socket_cookie; - *(int *) (buf + sizeof(afs_socket_cookie)) = query_shmid; + *(uint32_t *)buf = afs_socket_cookie; + *(int *)(buf + sizeof(afs_socket_cookie)) = query_shmid; ret = connect_local_socket(conf.afs_socket_arg); if (ret < 0) @@ -365,8 +365,11 @@ static int action_if_pattern_matches(struct osl_row *row, void *data) name = (char *)name_obj.data; if ((!name || !*name) && (pmd->pm_flags & PM_SKIP_EMPTY_NAME)) return 1; - if (!pmd->patterns.size && (pmd->pm_flags & PM_NO_PATTERN_MATCHES_EVERYTHING)) + if (pmd->patterns.size == 0 && + (pmd->pm_flags & PM_NO_PATTERN_MATCHES_EVERYTHING)) { + pmd->num_matches++; return pmd->action(pmd->table, row, name, pmd->data); + } for (p = pattern_txt; p < pattern_txt + pmd->patterns.size; p += strlen(p) + 1) { ret = fnmatch(p, name, pmd->fnmatch_flags); @@ -595,8 +598,9 @@ static void com_select_callback(int fd, const struct osl_object *query) activate_mood_or_playlist(NULL, &num_admissible); } } else - ret2 = para_printf(&pb, "activated %s (%d admissible files)\n", current_mop? - current_mop : "dummy mood", num_admissible); + ret2 = para_printf(&pb, "activated %s (%d admissible files)\n", + current_mop? current_mop : "dummy mood", + num_admissible); out: if (ret2 >= 0 && pb.offset) pass_buffer_as_shm(fd, SBD_OUTPUT, pb.buf, pb.offset); @@ -816,11 +820,6 @@ err: return ret; } -/* - * On errors, negative value is written to fd. - * On success: If query produced a result, the result_shmid is written to fd. - * Otherwise, zero is written. - */ static int call_callback(int fd, int query_shmid) { void *query_shm; @@ -998,7 +997,13 @@ static void create_tables_callback(int fd, const struct osl_object *query) { uint32_t table_mask = *(uint32_t *)query->data; int i, ret; - struct para_buffer pb = {.buf = NULL}; + struct para_buffer pb = { + .max_size = shm_get_shmmax(), + .private_data = &(struct afs_max_size_handler_data) { + .fd = fd, + .band = SBD_OUTPUT + } + }; close_afs_tables(); for (i = 0; i < NUM_AFS_TABLES; i++) { @@ -1047,9 +1052,8 @@ int com_init(struct command_context *cc) return -E_BAD_TABLE_NAME; } } - ret = send_callback_request(create_tables_callback, &query, + return send_callback_request(create_tables_callback, &query, afs_cb_result_handler, cc); - return ret; } /**