return 1;
}
-static void com_lsatt_callback(int fd, const struct osl_object *query)
+static int com_lsatt_callback(int fd, const struct osl_object *query)
{
+ int ret;
struct lsatt_action_data laad = {
.flags = *(unsigned *) query->data,
.pb = {
pmd.loop_col_num = ATTCOL_NAME;
if (laad.flags & LSATT_FLAG_REVERSE)
pmd.pm_flags |= PM_REVERSE_LOOP;
- for_each_matching_row(&pmd);
+ ret = for_each_matching_row(&pmd);
+ if (ret < 0)
+ goto out;
+ if (pmd.num_matches == 0)
+ ret = -E_NO_MATCH;
+out:
flush_and_free_pb(&laad.pb);
+ return ret;
}
int com_lsatt(struct command_context *cc)
{
unsigned flags = 0;
struct osl_object options = {.data = &flags, .size = sizeof(flags)};
- int ret, i;
+ int i;
for (i = 1; i < cc->argc; i++) {
const char *arg = cc->argv[i];
continue;
}
}
- ret = send_option_arg_callback_request(&options, cc->argc - i, cc->argv + i,
+ return send_option_arg_callback_request(&options, cc->argc - i, cc->argv + i,
com_lsatt_callback, afs_cb_result_handler, cc);
- if (ret < 0)
- send_strerror(cc, -ret);
- else if (ret == 0 && cc->argc > 1)
- ret = send_sb_va(&cc->scc, SBD_ERROR_LOG, "no matches\n");
- return ret;
}
struct addatt_event_data {
};
-static void com_addatt_callback(int fd, const struct osl_object *query)
+static int com_addatt_callback(int fd, const struct osl_object *query)
{
char *p;
int ret = 1;
if (ret < 0)
para_printf(&pb, "%s: %s\n", p, para_strerror(-ret));
flush_and_free_pb(&pb);
+ return 0;
}
int com_addatt(struct command_context *cc)
return ret;
}
-static void com_mvatt_callback(int fd, const struct osl_object *query)
+static int com_mvatt_callback(int fd, const struct osl_object *query)
{
char *old = query->data;
size_t size = strlen(old) + 1;
ret = osl(osl_update_object(attribute_table, row, ATTCOL_NAME, &obj));
out:
if (ret < 0)
- para_printf(&pb, "%s\n", para_strerror(-ret));
+ para_printf(&pb, "cannot rename %s to %s\n", old, new);
else
afs_event(ATTRIBUTE_RENAME, &pb, NULL);
flush_and_free_pb(&pb);
+ return ret;
}
int com_mvatt(struct command_context *cc)
{
- int ret;
-
if (cc->argc != 3)
return -E_ATTR_SYNTAX;
- ret = send_standard_callback_request(cc->argc - 1, cc->argv + 1,
+ return send_standard_callback_request(cc->argc - 1, cc->argv + 1,
com_mvatt_callback, afs_cb_result_handler, cc);
- if (ret < 0)
- send_strerror(cc, -ret);
- return ret;
}
/** Data passed to the action handler of com_rmatt(). */
return 1;
}
-static void com_rmatt_callback(int fd, const struct osl_object *query)
+static int com_rmatt_callback(int fd, const struct osl_object *query)
{
struct remove_attribute_action_data raad = {
.num_removed = 0,
else if (!raad.num_removed)
para_printf(&raad.pb, "no match -- nothing removed\n");
flush_and_free_pb(&raad.pb);
+ return 0;
}
int com_rmatt(struct command_context *cc)