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; return dst;
} }
errno = EINTR; errno = EPERM;
return NULL; return NULL;
} }
@@ -151,7 +151,7 @@ ctl_connect(const char *file)
if (!file) { if (!file) {
if (dp = opendir(dir), !dp) if (dp = opendir(dir), !dp)
return -1; return CTL_ERROR_NONE;
struct dirent *d = NULL; struct dirent *d = NULL;
@@ -197,3 +197,23 @@ ctl_connect(const char *file)
return fd; 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_connect (const char *);
int ctl_reply (int, struct ctl_msg *, struct ctl_msg *); int ctl_reply (int, struct ctl_msg *, struct ctl_msg *);
void ctl_delete (int); 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); int fd = ctl_connect(dev);
if (fd < 0) { if (fd < 0) {
switch (fd) { ctl_explain_connect(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");
}
return 1; return 1;
} }

View File

@@ -54,19 +54,7 @@ gt_set(int argc, char **argv)
int fd = ctl_connect(dev); int fd = ctl_connect(dev);
if (fd < 0) { if (fd < 0) {
switch (fd) { ctl_explain_connect(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");
}
return 1; return 1;
} }

View File

@@ -126,19 +126,7 @@ gt_show(int argc, char **argv)
int fd = ctl_connect(dev); int fd = ctl_connect(dev);
if (fd < 0) { if (fd < 0) {
switch (fd) { ctl_explain_connect(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");
}
return 1; return 1;
} }