summaryrefslogtreecommitdiff
path: root/client/client.c
diff options
context:
space:
mode:
authorJan Moskyto Matejka <mq@ucw.cz>2016-05-13 13:48:04 +0200
committerJan Moskyto Matejka <mq@ucw.cz>2016-05-13 13:48:04 +0200
commit5af7b59660be615fbbd7c20b92b71321c003c43a (patch)
tree59bc962b18ae5a4ac6bf088863cfe210c9123b57 /client/client.c
parentd39d41fbda2ec86ea2bac27308eb4fb16ecc4702 (diff)
parentb66a9e2f3376b4cb07ef4cc318f70a9c794f407a (diff)
Merge branch 'int-new' of gitlab.labs.nic.cz:labs/bird into int-new
Diffstat (limited to 'client/client.c')
-rw-r--r--client/client.c39
1 files changed, 16 insertions, 23 deletions
diff --git a/client/client.c b/client/client.c
index b938f344..0d4bdf3e 100644
--- a/client/client.c
+++ b/client/client.c
@@ -37,7 +37,7 @@
#define SERVER_READ_BUF_LEN 4096
-static char *opt_list = "s:vr";
+static char *opt_list = "s:vrl";
static int verbose, restricted, once;
static char *init_cmd;
@@ -59,13 +59,14 @@ int term_lns, term_cls;
static void
usage(char *name)
{
- fprintf(stderr, "Usage: %s [-s <control-socket>] [-v] [-r]\n", name);
+ fprintf(stderr, "Usage: %s [-s <control-socket>] [-v] [-r] [-l]\n", name);
exit(1);
}
static void
parse_args(int argc, char **argv)
{
+ int server_changed = 0;
int c;
while ((c = getopt(argc, argv, opt_list)) >= 0)
@@ -73,6 +74,7 @@ parse_args(int argc, char **argv)
{
case 's':
server_path = optarg;
+ server_changed = 1;
break;
case 'v':
verbose++;
@@ -80,6 +82,10 @@ parse_args(int argc, char **argv)
case 'r':
restricted = 1;
break;
+ case 'l':
+ if (!server_changed)
+ server_path = xbasename(server_path);
+ break;
default:
usage(argv[0]);
}
@@ -242,7 +248,7 @@ server_connect(void)
server_fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (server_fd < 0)
- die("Cannot create socket: %m");
+ DIE("Cannot create socket");
if (strlen(server_path) >= sizeof(sa.sun_path))
die("server_connect: path too long");
@@ -251,9 +257,9 @@ server_connect(void)
sa.sun_family = AF_UNIX;
strcpy(sa.sun_path, server_path);
if (connect(server_fd, (struct sockaddr *) &sa, SUN_LEN(&sa)) < 0)
- die("Unable to connect to server control socket (%s): %m", server_path);
+ DIE("Unable to connect to server control socket (%s)", server_path);
if (fcntl(server_fd, F_SETFL, O_NONBLOCK) < 0)
- die("fcntl: %m");
+ DIE("fcntl");
}
@@ -303,13 +309,13 @@ server_read(void)
redo:
c = read(server_fd, server_read_pos, server_read_buf + sizeof(server_read_buf) - server_read_pos);
if (!c)
- die("Connection closed by server.");
+ die("Connection closed by server");
if (c < 0)
{
if (errno == EINTR)
goto redo;
else
- die("Server read error: %m");
+ DIE("Server read error");
}
start = server_read_buf;
@@ -360,7 +366,7 @@ select_loop(void)
if (errno == EINTR)
continue;
else
- die("select: %m");
+ DIE("select");
}
if (FD_ISSET(0, &select_fds))
@@ -393,7 +399,7 @@ wait_for_write(int fd)
if (errno == EINTR)
continue;
else
- die("select: %m");
+ DIE("select");
}
if (FD_ISSET(server_fd, &set))
@@ -420,7 +426,7 @@ server_send(char *cmd)
else if (errno == EINTR)
continue;
else
- die("Server write error: %m");
+ DIE("Server write error");
}
else
{
@@ -430,19 +436,6 @@ server_send(char *cmd)
}
}
-
-/* XXXX
-
- get_term_size();
-
- if (tcgetattr(0, &tty_save) != 0)
- {
- perror("tcgetattr error");
- return(EXIT_FAILURE);
- }
- }
-
- */
int
main(int argc, char **argv)
{