X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=blob.c;h=ee4e405eba46b6c96c46048e77311051402c4808;hb=0cbd0ac87ebe208b0d47df28e86c16886bdb687d;hp=b3daf5c35744c5727ab8a8f52f127b83c1454073;hpb=a5842a27e24fae1053b23ef51777564e87adb395;p=paraslash.git diff --git a/blob.c b/blob.c index b3daf5c3..ee4e405e 100644 --- a/blob.c +++ b/blob.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2011 Andre Noll + * Copyright (C) 2007-2012 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -156,6 +156,8 @@ static void com_lsblob_callback(struct osl_table *table, ret = for_each_matching_row(&pmd); if (ret < 0) para_printf(&lbad.pb, "%s\n", para_strerror(-ret)); + else if (pmd.num_matches == 0 && pmd.patterns.size > 0) + para_printf(&lbad.pb, "no matches\n"); if (lbad.pb.offset) pass_buffer_as_shm(lbad.pb.buf, lbad.pb.offset, &fd); free(lbad.pb.buf); @@ -203,9 +205,9 @@ static int cat_blob(struct osl_table *table, struct osl_row *row, ret = osl(osl_open_disk_object(table, row, BLOBCOL_DEF, &obj)); if (ret < 0) - return ret; - if (obj.size) - ret = pass_buffer_as_shm(obj.data, obj.size, data); + return (ret == osl(-E_OSL_EMPTY))? 0 : ret; + assert(obj.size > 0); + ret = pass_buffer_as_shm(obj.data, obj.size, data); ret2 = osl(osl_close_disk_object(&obj)); return (ret < 0)? ret : ret2; } @@ -223,6 +225,10 @@ static void com_catblob_callback(struct osl_table *table, int fd, .action = cat_blob }; for_each_matching_row(&pmd); + if (pmd.num_matches == 0) { + char err_msg[] = "no matches\n"; + pass_buffer_as_shm(err_msg, sizeof(err_msg), &fd); + } } static int com_catblob(callback_function *f, struct stream_cipher_context *scc, int argc,