Change year in copyright message to 2012.
[paraslash.git] / blob.c
diff --git a/blob.c b/blob.c
index b3daf5c35744c5727ab8a8f52f127b83c1454073..ee4e405eba46b6c96c46048e77311051402c4808 100644 (file)
--- a/blob.c
+++ b/blob.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2012 Andre Noll <maan@systemlinux.org>
  *
  * 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,