Print out the actual filename supplied to "lfs find" rather than the
last argument in the list. Otherwise we get error messages like:
$ lfs find /myth/tmp -name fasdfasf -size 12
error: find failed for 12.
Test-Parameters: trivial
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I56eef89ab3c04b193f1c7dec3852c4038b3ebbe5
Reviewed-on: https://review.whamcloud.com/35740
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.super@gmail.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
/* getstripe { .val = 'v', .name = "verbose", .has_arg = no_argument }, */
/* getstripe { .val = 'y', .name = "yaml", .has_arg = no_argument }, */
{ .name = NULL } };
/* getstripe { .val = 'v', .name = "verbose", .has_arg = no_argument }, */
/* getstripe { .val = 'y', .name = "yaml", .has_arg = no_argument }, */
{ .name = NULL } };
- int pathstart = -1;
- int pathend = -1;
- int neg_opt = 0;
- time_t *xtime;
- int *xsign;
- int isoption;
- char *endptr;
+ int pathstart = -1;
+ int pathend = -1;
+ int pathbad = -1;
+ int neg_opt = 0;
+ time_t *xtime;
+ int *xsign;
+ int isoption;
+ char *endptr;
/* when getopt_long_only() hits '!' it returns 1, puts "!" in optarg */
while ((c = getopt_long_only(argc, argv,
/* when getopt_long_only() hits '!' it returns 1, puts "!" in optarg */
while ((c = getopt_long_only(argc, argv,
do {
rc = llapi_find(argv[pathstart], ¶m);
do {
rc = llapi_find(argv[pathstart], ¶m);
- if (rc != 0 && ret == 0)
+ pathbad = pathstart;
+ }
} while (++pathstart < pathend);
} while (++pathstart < pathend);
- if (ret)
- fprintf(stderr, "error: %s failed for %s.\n",
- argv[0], argv[optind - 1]);
+ if (ret)
+ fprintf(stderr, "%s: failed for '%s': %s\n",
+ progname, argv[pathbad], strerror(-rc));
+
err:
if (param.fp_obd_uuid && param.fp_num_alloc_obds)
free(param.fp_obd_uuid);
err:
if (param.fp_obd_uuid && param.fp_num_alloc_obds)
free(param.fp_obd_uuid);