X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=blob.c;h=b396ef792c1ecc6bec8d03b5b88885ea1f7f0bac;hp=eca3c5630ef8a24061f818fb1bf2c2852e405ba3;hb=4c2a8737d3867f7ec8ee4d858e981c1b62e29759;hpb=8211954fc3390c0fa19cca788b03336a37aa9dc0 diff --git a/blob.c b/blob.c index eca3c563..b396ef79 100644 --- a/blob.c +++ b/blob.c @@ -106,7 +106,7 @@ int com_lsblob_callback(struct osl_table *table, return ret; } -static int com_lsblob(callback_function *f, int fd, int argc, const char **argv) +static int com_lsblob(callback_function *f, int fd, int argc, char * const * const argv) { struct com_lsblob_options clbo = {.flags = 0}; struct osl_object query = {.data = &clbo, .size = sizeof(clbo)}, @@ -138,9 +138,10 @@ static int com_lsblob(callback_function *f, int fd, int argc, const char **argv) return -E_BLOB_SYNTAX; ret = send_option_arg_callback_request(&query, argc - i, argv + i, f, &ls_output); - if (ret >= 0 && ls_output.data) + if (ret > 0) { send_buffer(fd, (char *)ls_output.data); - free(ls_output.data); + free(ls_output.data); + } return ret; } @@ -162,8 +163,9 @@ static int com_catblob_callback(struct osl_table *table, memcpy(output->data, obj.data, obj.size); return osl_close_disk_object(&obj); } + static int com_catblob(callback_function *f, int fd, int argc, - const char **argv) + char * const * const argv) { struct osl_object cat_output = {.data = NULL}; int ret; @@ -173,8 +175,8 @@ static int com_catblob(callback_function *f, int fd, int argc, if (!*argv[1]) /* empty name is reserved of the dummy row */ return -E_BLOB_SYNTAX; ret = send_standard_callback_request(1, argv + 1, f, &cat_output); - if (ret >= 0 && cat_output.data) - ret = send_buffer(fd, (char *)cat_output.data); + if (ret > 0) + ret = send_bin_buffer(fd, (char *)cat_output.data, cat_output.size); free(cat_output.data); return ret; @@ -231,8 +233,8 @@ static int com_addblob_callback(struct osl_table *table, return osl_add_row(table, objs); } -static int com_addblob(callback_function *f, __a_unused int fd, int argc, - const char **argv) +static int com_addblob(callback_function *f, int fd, int argc, + char * const * const argv) { struct osl_object arg_obj; @@ -243,7 +245,7 @@ static int com_addblob(callback_function *f, __a_unused int fd, int argc, PARA_NOTICE_LOG("argv[1]: %s\n", argv[1]); arg_obj.size = strlen(argv[1]) + 1; arg_obj.data = (char *)argv[1]; - return stdin_command(&arg_obj, f, 10 * 1024 * 1024, NULL); + return stdin_command(fd, &arg_obj, f, 10 * 1024 * 1024, NULL); } static int com_rmblob_callback(struct osl_table *table, @@ -272,7 +274,7 @@ static int com_rmblob_callback(struct osl_table *table, } static int com_rmblob(callback_function *f, __a_unused int fd, int argc, - const char **argv) + char * const * const argv) { if (argc < 2) return -E_MOOD_SYNTAX; @@ -298,7 +300,7 @@ static int com_mvblob_callback(struct osl_table *table, } static int com_mvblob(callback_function *f, __a_unused int fd, - int argc, const char **argv) + int argc, char * const * const argv) { if (argc != 3) return -E_MOOD_SYNTAX; @@ -312,7 +314,7 @@ static int com_mvblob(callback_function *f, __a_unused int fd, { \ return com_ ## cmd_name ## blob_callback(table_name ## _table, query, output); \ } \ - int com_ ## cmd_name ## cmd_prefix(__a_unused int fd, int argc, const char **argv) \ + int com_ ## cmd_name ## cmd_prefix(int fd, int argc, char * const * const argv) \ { \ return com_ ## cmd_name ## blob(com_ ## cmd_name ## cmd_prefix ## _callback, fd, argc, argv); \ } @@ -352,11 +354,11 @@ static int blob_get_name_by_id(struct osl_table *table, uint32_t id, } static int blob_init(struct osl_table **table, - const struct osl_table_description *desc, - struct table_info *ti) + struct osl_table_description *desc, + struct table_info *ti, const char *db) { int ret; - + desc->dir = db; ti->desc = desc; ret = osl_open_table(ti->desc, &ti->table); if (ret >= 0) { @@ -369,10 +371,10 @@ static int blob_init(struct osl_table **table, /** Define the \p init function for this blob type. */ #define DEFINE_BLOB_INIT(table_name) \ - int table_name ## _init(struct table_info *ti) \ + int table_name ## _init(struct table_info *ti, const char *db) \ { \ return blob_init(&table_name ## _table, \ - &table_name ## _table_desc, ti); \ + &table_name ## _table_desc, ti, db); \ }