X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=blob.c;h=4f4a034ad2d60c2e67856050671713738459c828;hp=0092bea3fbf47c2c5afb7ca1e1e8b3b138119d60;hb=2edd5e54e7443ed42d4c4e56c2efb242956f818b;hpb=53c10f83c35b3f3376529632f198e32e6afb09f4 diff --git a/blob.c b/blob.c index 0092bea3..4f4a034a 100644 --- a/blob.c +++ b/blob.c @@ -116,15 +116,18 @@ static int print_blob(struct osl_table *table, struct osl_row *row, uint32_t id; int ret; - if (!(lbad->flags & BLOB_LS_FLAG_LONG)) - return para_printf(&lbad->pb, "%s\n", name); + if (!(lbad->flags & BLOB_LS_FLAG_LONG)) { + para_printf(&lbad->pb, "%s\n", name); + return 0; + } ret = osl(osl_get_object(table, row, BLOBCOL_ID, &obj)); if (ret < 0) { para_printf(&lbad->pb, "%s: %s\n", name, para_strerror(-ret)); return ret; } id = *(uint32_t *)obj.data; - return para_printf(&lbad->pb, "%u\t%s\n", id, name); + para_printf(&lbad->pb, "%u\t%s\n", id, name); + return 1; } static void com_lsblob_callback(struct osl_table *table, @@ -265,7 +268,7 @@ static int remove_blob(struct osl_table *table, struct osl_row *row, static void com_rmblob_callback(struct osl_table *table, int fd, const struct osl_object *query) { - int ret, ret2 = 0; + int ret; struct rmblob_data rmbd = { .pb = { .max_size = shm_get_shmmax(), @@ -286,19 +289,15 @@ static void com_rmblob_callback(struct osl_table *table, int fd, .action = remove_blob }; ret = for_each_matching_row(&pmd); - if (ret < 0) { - ret2 = para_printf(&rmbd.pb, "%s\n", para_strerror(-ret)); - if (ret2 < 0) - goto out; - } + if (ret < 0) + para_printf(&rmbd.pb, "%s\n", para_strerror(-ret)); if (pmd.num_matches == 0) - ret2 = para_printf(&rmbd.pb, "no matches, nothing removed\n"); + para_printf(&rmbd.pb, "no matches, nothing removed\n"); else { - ret2 = para_printf(&rmbd.pb, "removed %d blobs\n", pmd.num_matches); + para_printf(&rmbd.pb, "removed %d blobs\n", pmd.num_matches); afs_event(BLOB_RENAME, NULL, table); } -out: - if (ret2 >= 0 && rmbd.pb.offset) + if (rmbd.pb.offset) pass_buffer_as_shm(fd, SBD_OUTPUT, rmbd.pb.buf, rmbd.pb.offset); free(rmbd.pb.buf); } @@ -426,27 +425,16 @@ again: } /* - * Read data from a file descriptor, and send it to the afs process. - * - * \param cc Contains the file descriptor to read data from. - * \param arg_obj Pointer to the arguments to \a f. - * \param f The callback function. - * \param result_handler See \ref send_callback_request. - * \param private_result_data See \ref send_callback_request. - * - * This function is used by the addblob commands that instruct para_server to - * store arbitrary data in a blob table. Input data is read and decrypted from - * the file descriptor given by \a cc. This data is concatenated with the - * buffer given by \a arg_obj, and the combined buffer is made available to the - * afs process via the callback method. See \ref send_callback_request for - * details. + * Read blob from a file descriptor and send it to afs. * - * \return Negative on errors, the return value of the underlying call to - * send_callback_request() otherwise. + * This function is called from the addblob command handlers to instruct the + * afs process to store the input in a blob table. Input is read and decrypted + * from the file descriptor given by cc and appended to arg_obj, which contains + * the name of the blob to create. The combined buffer is made available to the + * afs process via the callback method. */ static int stdin_command(struct command_context *cc, struct osl_object *arg_obj, - callback_function *f, callback_result_handler *result_handler, - void *private_result_data) + callback_function *f) { struct osl_object query, stdin_obj; int ret; @@ -464,7 +452,7 @@ static int stdin_command(struct command_context *cc, struct osl_object *arg_obj, memcpy((char *)query.data + arg_obj->size, stdin_obj.data, stdin_obj.size); free(stdin_obj.data); - ret = send_callback_request(f, &query, result_handler, private_result_data); + ret = send_callback_request(f, &query, afs_cb_result_handler, cc); free(query.data); return ret; } @@ -479,7 +467,7 @@ static int com_addblob(callback_function *f, struct command_context *cc) return -E_BLOB_SYNTAX; arg_obj.size = strlen(cc->argv[1]) + 1; arg_obj.data = (char *)cc->argv[1]; - return stdin_command(cc, &arg_obj, f, afs_cb_result_handler, cc); + return stdin_command(cc, &arg_obj, f); } static void com_mvblob_callback(struct osl_table *table, int fd,