diff --git a/src/ctl.c b/src/ctl.c index 0437461..e4ab57c 100644 --- a/src/ctl.c +++ b/src/ctl.c @@ -153,8 +153,8 @@ ctl_connect(const char *dir, const char *file) continue; if (file) { - file = NULL; - break; + closedir(dp); + return -3; } file = &d->d_name[0]; @@ -162,8 +162,7 @@ ctl_connect(const char *dir, const char *file) if (!file) { closedir(dp); - errno = ENOENT; - return -1; + return -2; } } diff --git a/src/path.c b/src/path.c index 462116a..1bb8779 100644 --- a/src/path.c +++ b/src/path.c @@ -99,9 +99,20 @@ gt_path(int argc, char **argv) int fd = ctl_connect(GT_RUNDIR, dev); - if (fd == -1) { - perror("path"); - ctl_delete(fd); + if (fd < 0) { + switch (fd) { + case -1: + perror("path"); + break; + case -2: + gt_log("no device\n"); + break; + case -3: + gt_log("please choose a device\n"); + break; + default: + gt_log("couldn't connect\n"); + } return 1; } diff --git a/src/set.c b/src/set.c index 638ae41..e7ef5cd 100644 --- a/src/set.c +++ b/src/set.c @@ -149,8 +149,20 @@ gt_set(int argc, char **argv) int fd = ctl_connect(GT_RUNDIR, dev); - if (fd == -1) { - perror("set"); + if (fd < 0) { + switch (fd) { + case -1: + perror("set"); + break; + case -2: + gt_log("no device\n"); + break; + case -3: + gt_log("please choose a device\n"); + break; + default: + gt_log("couldn't connect\n"); + } return 1; } diff --git a/src/show.c b/src/show.c index d95ef6a..b6deeff 100644 --- a/src/show.c +++ b/src/show.c @@ -60,8 +60,9 @@ gt_show_dev(const char *dev) { int fd = ctl_connect(GT_RUNDIR, dev); - if (fd == -1) { - perror(dev); + if (fd < 0) { + if (fd == -1) + perror("show"); return -1; }