diff options
Diffstat (limited to 'libc/inet/rpc')
-rw-r--r-- | libc/inet/rpc/rexec.c | 67 |
1 files changed, 23 insertions, 44 deletions
diff --git a/libc/inet/rpc/rexec.c b/libc/inet/rpc/rexec.c index 11c4b9f83..a9d0dd66c 100644 --- a/libc/inet/rpc/rexec.c +++ b/libc/inet/rpc/rexec.c @@ -42,34 +42,12 @@ #include <string.h> #include <unistd.h> -/* Experimentally off - libc_hidden_proto(memset) */ -/* Experimentally off - libc_hidden_proto(strlen) */ -/* Experimentally off - libc_hidden_proto(strncpy) */ -/* libc_hidden_proto(read) */ -/* libc_hidden_proto(write) */ -/* libc_hidden_proto(close) */ -/* libc_hidden_proto(socket) */ -/* libc_hidden_proto(perror) */ -/* libc_hidden_proto(sprintf) */ -/* libc_hidden_proto(snprintf) */ -/* libc_hidden_proto(getsockname) */ -/* libc_hidden_proto(getnameinfo) */ -/* libc_hidden_proto(getaddrinfo) */ -/* libc_hidden_proto(freeaddrinfo) */ -/* libc_hidden_proto(sleep) */ -/* libc_hidden_proto(atoi) */ -/* libc_hidden_proto(connect) */ -/* libc_hidden_proto(accept) */ -/* libc_hidden_proto(listen) */ -/* libc_hidden_proto(ruserpass) */ - #define SA_LEN(_x) __libc_sa_len((_x)->sa_family) -extern int __libc_sa_len (sa_family_t __af) __THROW attribute_hidden; +extern int __libc_sa_len(sa_family_t __af) __THROW attribute_hidden; /* int rexecoptions; - google does not know it */ static char ahostbuf[NI_MAXHOST]; -/* libc_hidden_proto(rexec_af) */ int rexec_af(char **ahost, int rport, const char *name, const char *pass, const char *cmd, int *fd2p, sa_family_t af) { @@ -95,19 +73,19 @@ rexec_af(char **ahost, int rport, const char *name, const char *pass, const char hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_CANONNAME; gai = getaddrinfo(*ahost, servbuff, &hints, &res0); - if (gai){ + if (gai) { /* XXX: set errno? */ return -1; } - if (res0->ai_canonname){ + if (res0->ai_canonname) { strncpy(ahostbuf, res0->ai_canonname, sizeof(ahostbuf)); ahostbuf[sizeof(ahostbuf)-1] = '\0'; *ahost = ahostbuf; } - else{ + else { *ahost = NULL; - __set_errno (ENOENT); + __set_errno(ENOENT); return -1; } ruserpass(res0->ai_canonname, &name, &pass); @@ -115,7 +93,7 @@ retry: s = socket(res0->ai_family, res0->ai_socktype, 0); if (s < 0) { perror("rexec: socket"); - return (-1); + return -1; } if (connect(s, res0->ai_addr, res0->ai_addrlen) < 0) { if (errno == ECONNREFUSED && timo <= 16) { @@ -125,7 +103,7 @@ retry: goto retry; } perror(res0->ai_canonname); - return (-1); + return -1; } if (fd2p == 0) { (void) write(s, "", 1); @@ -138,10 +116,10 @@ retry: s2 = socket(res0->ai_family, res0->ai_socktype, 0); if (s2 < 0) { (void) close(s); - return (-1); + return -1; } listen(s2, 1); - sa2len = sizeof (sa2); + sa2len = sizeof(sa2); if (getsockname(s2, (struct sockaddr *)&sa2, &sa2len) < 0) { perror("getsockname"); (void) close(s2); @@ -158,15 +136,16 @@ retry: port = atoi(servbuff); (void) sprintf(num, "%u", port); (void) write(s, num, strlen(num)+1); - { socklen_t len = sizeof (from); - s3 = TEMP_FAILURE_RETRY (accept(s2, (struct sockaddr *)&from, - &len)); - close(s2); - if (s3 < 0) { - perror("accept"); - port = 0; - goto bad; - } + { + socklen_t len = sizeof(from); + s3 = TEMP_FAILURE_RETRY(accept(s2, + (struct sockaddr *)&from, &len)); + close(s2); + if (s3 < 0) { + perror("accept"); + port = 0; + goto bad; + } } *fd2p = s3; } @@ -178,9 +157,9 @@ retry: /* We don't need the memory allocated for the name and the password in ruserpass anymore. */ if (name != orig_name) - free ((char *) name); + free((char *) name); if (pass != orig_pass) - free ((char *) pass); + free((char *) pass); if (read(s, &c, 1) != 1) { perror(*ahost); @@ -195,13 +174,13 @@ retry: goto bad; } freeaddrinfo(res0); - return (s); + return s; bad: if (port) (void) close(*fd2p); (void) close(s); freeaddrinfo(res0); - return (-1); + return -1; } libc_hidden_def(rexec_af) |