Better explain why the connection fails
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
This commit is contained in:
24
src/ctl.c
24
src/ctl.c
@@ -36,7 +36,7 @@ ctl_rundir(char *dst, size_t size)
|
||||
return dst;
|
||||
}
|
||||
|
||||
errno = EINTR;
|
||||
errno = EPERM;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ ctl_connect(const char *file)
|
||||
|
||||
if (!file) {
|
||||
if (dp = opendir(dir), !dp)
|
||||
return -1;
|
||||
return CTL_ERROR_NONE;
|
||||
|
||||
struct dirent *d = NULL;
|
||||
|
||||
@@ -197,3 +197,23 @@ ctl_connect(const char *file)
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
void
|
||||
ctl_explain_connect(int ret)
|
||||
{
|
||||
switch (ret) {
|
||||
case 0:
|
||||
break;
|
||||
case CTL_ERROR_MANY:
|
||||
gt_log("please select a tunnel\n");
|
||||
break;
|
||||
case CTL_ERROR_NONE:
|
||||
gt_log("no active tunnel\n");
|
||||
break;
|
||||
default:
|
||||
gt_log("unknown error\n"); /* FALLTHRU */
|
||||
case -1:
|
||||
if (errno)
|
||||
perror("connect");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,3 +48,5 @@ int ctl_create (const char *);
|
||||
int ctl_connect (const char *);
|
||||
int ctl_reply (int, struct ctl_msg *, struct ctl_msg *);
|
||||
void ctl_delete (int);
|
||||
|
||||
void ctl_explain_connect (int);
|
||||
|
||||
14
src/path.c
14
src/path.c
@@ -135,19 +135,7 @@ gt_path(int argc, char **argv)
|
||||
int fd = ctl_connect(dev);
|
||||
|
||||
if (fd < 0) {
|
||||
switch (fd) {
|
||||
case -1:
|
||||
perror("path");
|
||||
break;
|
||||
case CTL_ERROR_NONE:
|
||||
gt_log("no device\n");
|
||||
break;
|
||||
case CTL_ERROR_MANY:
|
||||
gt_log("please choose a device\n");
|
||||
break;
|
||||
default:
|
||||
gt_log("couldn't connect\n");
|
||||
}
|
||||
ctl_explain_connect(fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
14
src/set.c
14
src/set.c
@@ -54,19 +54,7 @@ gt_set(int argc, char **argv)
|
||||
int fd = ctl_connect(dev);
|
||||
|
||||
if (fd < 0) {
|
||||
switch (fd) {
|
||||
case -1:
|
||||
perror("set");
|
||||
break;
|
||||
case CTL_ERROR_NONE:
|
||||
gt_log("no device\n");
|
||||
break;
|
||||
case CTL_ERROR_MANY:
|
||||
gt_log("please choose a device\n");
|
||||
break;
|
||||
default:
|
||||
gt_log("couldn't connect\n");
|
||||
}
|
||||
ctl_explain_connect(fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
14
src/show.c
14
src/show.c
@@ -126,19 +126,7 @@ gt_show(int argc, char **argv)
|
||||
int fd = ctl_connect(dev);
|
||||
|
||||
if (fd < 0) {
|
||||
switch (fd) {
|
||||
case -1:
|
||||
perror("show");
|
||||
break;
|
||||
case CTL_ERROR_NONE:
|
||||
gt_log("no device\n");
|
||||
break;
|
||||
case CTL_ERROR_MANY:
|
||||
gt_log("please choose a device\n");
|
||||
break;
|
||||
default:
|
||||
gt_log("couldn't connect\n");
|
||||
}
|
||||
ctl_explain_connect(fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user