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 {