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 0;
+ 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 {
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 0;
+ 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(). */