X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=blob.c;h=c42a5f7ad6d91bc8889aa7b3d570a356a90560e3;hp=72e4a55b30ffe4ca3e13a79f866f7f2a27f67baf;hb=c33fa55e39f9ef715abe47cabdfd997a190da61d;hpb=1b5148109a273e7a30255ab3a705ca49f71e046f diff --git a/blob.c b/blob.c index 72e4a55b..c42a5f7a 100644 --- a/blob.c +++ b/blob.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Andre Noll + * Copyright (C) 2007-2008 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -54,7 +54,9 @@ enum blob_ls_flags { /** Structure passed to the \p print_blob function. */ struct lsblob_action_data { + /* The flags given at the command line. */ uint32_t flags; + /** Message buffer. */ struct para_buffer pb; }; @@ -72,7 +74,7 @@ static int print_blob(struct osl_table *table, struct osl_row *row, } ret = osl_get_object(table, row, BLOBCOL_ID, &obj); if (ret < 0) { - para_printf(&lbad->pb, "%s: %s\n", name, PARA_STRERROR(-ret)); + para_printf(&lbad->pb, "%s: %s\n", name, para_strerror(-ret)); return ret; } id = *(uint32_t *)obj.data; @@ -98,12 +100,12 @@ static int com_lsblob_callback(struct osl_table *table, if (lbad.flags & BLOB_LS_FLAG_REVERSE) pmd.pm_flags |= PM_REVERSE_LOOP; if (!(lbad.flags & BLOB_LS_FLAG_SORT_BY_ID)) - pmd.loop_col_num = BLOBCOL_ID; - else pmd.loop_col_num = BLOBCOL_NAME; + else + pmd.loop_col_num = BLOBCOL_ID; ret = for_each_matching_row(&pmd); if (ret < 0) - para_printf(&lbad.pb, "%s\n", PARA_STRERROR(-ret)); + para_printf(&lbad.pb, "%s\n", para_strerror(-ret)); if (!lbad.pb.buf) return 0; result->data = lbad.pb.buf; @@ -144,10 +146,14 @@ static int com_lsblob(callback_function *f, int fd, int argc, char * const * con // return -E_BLOB_SYNTAX; ret = send_option_arg_callback_request(&options, argc - i, argv + i, f, &result); - if (ret > 0) { - send_buffer(fd, (char *)result.data); - free(result.data); + if (!ret) + return 0; + if (ret < 0) { + send_va_buffer(fd, "%s\n", para_strerror(-ret)); + return ret; } + ret = send_buffer(fd, (char *)result.data); + free(result.data); return ret; } @@ -205,8 +211,11 @@ static int com_catblob(callback_function *f, int fd, int argc, return ret; } +/** Used for removing rows from a blob table. */ struct rmblob_data { + /** Message buffer. */ struct para_buffer pb; + /** Number of removed blobs. */ unsigned num_removed; }; @@ -216,7 +225,7 @@ static int remove_blob(struct osl_table *table, struct osl_row *row, struct rmblob_data *rmbd = data; int ret = osl_del_row(table, row); if (ret < 0) { - para_printf(&rmbd->pb, "%s: %s\n", name, PARA_STRERROR(-ret)); + para_printf(&rmbd->pb, "%s: %s\n", name, para_strerror(-ret)); return ret; } rmbd->num_removed++; @@ -241,7 +250,7 @@ static int com_rmblob_callback(struct osl_table *table, result->data = NULL; ret = for_each_matching_row(&pmd); if (ret < 0) - para_printf(&rmbd.pb, "%s\n", PARA_STRERROR(-ret)); + para_printf(&rmbd.pb, "%s\n", para_strerror(-ret)); if (!rmbd.num_removed) para_printf(&rmbd.pb, "no matches, nothing removed\n"); else {