return rc;
}
-static int print_instance(const char *mntdir, char *fsname, size_t fsnamelen,
+static int print_instance(const char *mntdir, char *buf, size_t buflen,
bool opt_instance, bool opt_fsname, bool opt_mntdir)
{
- char *buf = fsname;
-
- /* llapi_search_mounts() fills "fsname", but that is not called if
- * explicit paths are specified on the command-line
- */
- if (opt_instance || (opt_fsname && fsname[0] == '\0')) {
- int rc = llapi_getname(mntdir, fsname, fsnamelen);
+ int rc = 0;
- if (rc < 0) {
- fprintf(stderr, "cannot get instance for '%s': %s\n",
- mntdir, strerror(-rc));
- return rc;
- }
- buf = fsname;
- if (!opt_instance) {
- /* print only the fsname name */
- buf = strchr(fsname, '-');
- if (buf)
- *buf = '\0';
- buf = fsname;
- } else if (!opt_fsname) {
- /* print only the instance name */
- buf = strchr(fsname, '-');
- if (buf)
- buf++;
- else
- buf = fsname;
- }
+ if (opt_fsname == opt_instance) { /* both true or both false */
+ rc = llapi_getname(mntdir, buf, buflen);
} else if (opt_fsname) {
- /* print only the fsname */
- buf = fsname;
+ /* llapi_search_mounts() fills @buf with fsname, but that is not
+ * called if explicit paths are specified on the command-line
+ */
+ if (buf[0] == '\0')
+ rc = llapi_get_fsname(mntdir, buf, buflen);
+ } else /* if (opt_instance) */ {
+ rc = llapi_get_instance(mntdir, buf, buflen);
+ }
+
+ if (rc < 0) {
+ fprintf(stderr, "cannot get instance for '%s': %s\n",
+ mntdir, strerror(-rc));
+ return rc;
}
- printf("%s %s\n", buf, opt_mntdir ? mntdir : "");
+ if (opt_mntdir)
+ printf("%s %s\n", buf, mntdir);
+ else
+ printf("%s\n", buf);
return 0;
}
}
}
- /* If neither option is given, print both instance and fsname */
- if (!opt_instance && !opt_fsname)
- opt_instance = opt_fsname = true;
-
if (optind == argc) { /* no paths specified, get all paths. */
char mntdir[PATH_MAX] = "", path[PATH_MAX] = "";
int index = 0;