Better explain why the connection fails

Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
This commit is contained in:
Adrien Gallouët
2020-04-03 09:35:43 +00:00
parent 18b8229a93
commit 3622f928ca
5 changed files with 27 additions and 41 deletions

View File

@@ -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");
}
}

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}