/** 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;
};
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));
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;
};
static int com_rmblob_callback(struct osl_table *table,
const struct osl_object *query,
- __a_unused struct osl_object *result)
+ struct osl_object *result)
{
int ret;
struct rmblob_data rmbd = {.num_removed = 0};
para_printf(&rmbd.pb, "%s\n", PARA_STRERROR(-ret));
if (!rmbd.num_removed)
para_printf(&rmbd.pb, "no matches, nothing removed\n");
- else
+ else {
para_printf(&rmbd.pb, "removed %d blobs\n", rmbd.num_removed);
+ afs_event(BLOB_RENAME, NULL, table);
+ }
result->data = rmbd.pb.buf;
result->size = rmbd.pb.size;
return 1;
}
-static int com_rmblob(callback_function *f, __a_unused int fd, int argc,
+static int com_rmblob(callback_function *f, int fd, int argc,
char * const * const argv)
{
int ret;
objs[BLOBCOL_NAME].size = name_len;
objs[BLOBCOL_DEF].data = name + name_len;
objs[BLOBCOL_DEF].size = query->size - name_len;
- return osl_add_row(table, objs);
+ ret = osl_add_row(table, objs);
+ if (ret < 0)
+ return ret;
+ afs_event(BLOB_ADD, NULL, table);
+ return 1;
}
static int com_addblob(callback_function *f, int fd, int argc,
return ret;
obj.data = dest;
obj.size = strlen(dest) + 1;
- return osl_update_object(table, row, BLOBCOL_NAME, &obj);
+ ret = osl_update_object(table, row, BLOBCOL_NAME, &obj);
+ if (ret < 0)
+ return ret;
+ afs_event(BLOB_RENAME, NULL, table);
+ return 1;
}
-static int com_mvblob(callback_function *f, __a_unused int fd,
+static int com_mvblob(callback_function *f, __a_unused int fd,
int argc, char * const * const argv)
{
if (argc != 3)
t->close = table_name ## _close; \
t->create = table_name ## _create;\
t->event_handler = table_name ##_event_handler; \
+ table_name ## _table = NULL; \
}