From: Andre Noll Date: Sun, 5 Apr 2015 13:49:10 +0000 (+0000) Subject: com_lsatt(): Return negative on errors X-Git-Tag: v0.5.6~94^2~18 X-Git-Url: http://git.tue.mpg.de/?a=commitdiff_plain;h=112efddb6753266296cad0a9b0499528fe784214;p=paraslash.git com_lsatt(): Return negative on errors --- diff --git a/attribute.c b/attribute.c index 7da525eb..82ac4dac 100644 --- a/attribute.c +++ b/attribute.c @@ -151,6 +151,7 @@ static int print_attribute(struct osl_table *table, struct osl_row *row, static int com_lsatt_callback(int fd, const struct osl_object *query) { + int ret; struct lsatt_action_data laad = { .flags = *(unsigned *) query->data, .pb = { @@ -177,16 +178,21 @@ static int com_lsatt_callback(int fd, const struct osl_object *query) 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]; @@ -209,13 +215,8 @@ int com_lsatt(struct command_context *cc) 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 {