/*
- * Copyright (C) 2007 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2008 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** 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;
};
}
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;
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;
// 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;
}
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;
};
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++;
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 {
t->close = table_name ## _close; \
t->create = table_name ## _create;\
t->event_handler = table_name ##_event_handler; \
+ table_name ## _table = NULL; \
}