Cosmetics of various sorts

Also in srv_connect() (renamed from ttynvt_connect()), close newly
crated socket in a couple of error paths.
This commit is contained in:
Kim Woelders
2018-07-02 12:31:20 +02:00
parent f0697e83f3
commit 4988368662
+27 -16
View File
@@ -33,7 +33,7 @@
static struct ttynvt_param { static struct ttynvt_param {
unsigned int major; unsigned int major;
unsigned int minor; unsigned int minor;
char *dev_name; const char *dev_name;
char *host; char *host;
unsigned int port; unsigned int port;
unsigned int debug; unsigned int debug;
@@ -216,49 +216,56 @@ static void *ttynvt_read_net(void *arg)
return 0; return 0;
} }
static int ttynvt_connect(const char *host, unsigned int port) static int srv_connect(const char *host, unsigned int port)
{ {
struct sockaddr_in serveraddr; struct sockaddr_in serveraddr;
struct hostent *server; struct hostent *server;
int sockfd, err;
int sockfd = socket(AF_INET, SOCK_STREAM, 0); sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) if (sockfd < 0)
{ {
ttynvt_log(LOG_ERR, "Socket open failed: %s\n", strerror(errno)); ttynvt_log(LOG_ERR, "Socket open failed: %s\n", strerror(errno));
return sockfd; return sockfd;
} }
server = gethostbyname(host); server = gethostbyname(host);
if (server == NULL) if (server == NULL)
{ {
ttynvt_log(LOG_ERR, "Cannot resolve host name: %s\n", strerror(errno)); ttynvt_log(LOG_ERR, "Cannot resolve host name: %s\n", strerror(errno));
close(sockfd);
return -1; return -1;
} }
bzero((char *)&serveraddr, sizeof(serveraddr)); bzero((char *)&serveraddr, sizeof(serveraddr));
serveraddr.sin_family = AF_INET; serveraddr.sin_family = AF_INET;
bcopy((char *)server->h_addr, (char *)&serveraddr.sin_addr.s_addr, bcopy((char *)server->h_addr, (char *)&serveraddr.sin_addr.s_addr,
server->h_length); server->h_length);
serveraddr.sin_port = htons(port); serveraddr.sin_port = htons(port);
if (connect err = connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
(sockfd, (const struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0) if (err < 0)
{ {
ttynvt_log(LOG_ERR, "Failed to connect to: %s:%u:%s\n", ttynvt_log(LOG_ERR, "Failed to connect to: %s:%u:%s\n",
host, port, strerror(errno)); host, port, strerror(errno));
close(sockfd);
return -1; return -1;
} }
return sockfd; return sockfd;
} }
int srv_write(void *cctx, const void *buf, int len) static int srv_write(void *cctx, const void *buf, int len)
{ {
ttynvt_t *tty = cctx; ttynvt_t *tty = cctx;
int res;
return write(tty->fds[0].fd, buf, len); res = write(tty->fds[0].fd, buf, len);
return res;
} }
int srv_read(void *cctx, int timeout) static int srv_read(void *cctx, int timeout)
{ {
ttynvt_t *tty = cctx; ttynvt_t *tty = cctx;
int res; int res;
@@ -287,7 +294,7 @@ int srv_read(void *cctx, int timeout)
return 1; return 1;
} }
void modem_status_cb(void *cctx, int status) static void modem_status_cb(void *cctx, int status)
{ {
ttynvt_t *tty = cctx; ttynvt_t *tty = cctx;
@@ -327,7 +334,7 @@ static void ttynvt_open(fuse_req_t req, struct fuse_file_info *info)
return; return;
} }
sockfd = ttynvt_connect(ttynvt_param.host, ttynvt_param.port); sockfd = srv_connect(ttynvt_param.host, ttynvt_param.port);
if (sockfd < 0) if (sockfd < 0)
{ {
free(tty->tn); free(tty->tn);
@@ -760,8 +767,10 @@ ttynvt_poll(fuse_req_t req, struct fuse_file_info *info,
if (ttynvt_write_avail(tty) > 0) if (ttynvt_write_avail(tty) > 0)
revents |= POLLOUT; revents |= POLLOUT;
if (ttynvt_read_avail(tty) > 0) if (ttynvt_read_avail(tty) > 0)
revents |= POLLIN; revents |= POLLIN;
if (tty->error) if (tty->error)
{ {
if (tty->epipe == 0) if (tty->epipe == 0)
@@ -830,7 +839,7 @@ int main(int argc, char *argv[])
{ {
struct fuse_args args = FUSE_ARGS_INIT(argc, argv); struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
char dev_name[128] = { 0 }; char dev_name[128];
const char *dev_info_argv[] = { dev_name }; const char *dev_info_argv[] = { dev_name };
openlog("ttynvt", LOG_PID, LOG_DAEMON); openlog("ttynvt", LOG_PID, LOG_DAEMON);
@@ -841,13 +850,15 @@ int main(int argc, char *argv[])
return 1; return 1;
} }
snprintf(dev_name, sizeof(dev_name), "DEVNAME=%s", if (!ttynvt_param.dev_name)
ttynvt_param.dev_name ? ttynvt_param.dev_name : "ttyNVT0"); ttynvt_param.dev_name = "ttyNVT0";
snprintf(dev_name, sizeof(dev_name), "DEVNAME=%s", ttynvt_param.dev_name);
struct cuse_info ci = { struct cuse_info ci = {
.dev_major = ttynvt_param.major, .dev_major = ttynvt_param.major,
.dev_minor = ttynvt_param.minor, .dev_minor = ttynvt_param.minor,
.dev_info_argc = 1, .dev_info_argc = sizeof(dev_info_argv) / sizeof(char *),
.dev_info_argv = dev_info_argv, .dev_info_argv = dev_info_argv,
.flags = CUSE_UNRESTRICTED_IOCTL, .flags = CUSE_UNRESTRICTED_IOCTL,
}; };