diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Doc/Makefile.in | 3 | ||||
-rw-r--r-- | Doc/Zsh/mod_socket.yo | 1 | ||||
-rw-r--r-- | Src/Modules/socket.c | 25 |
4 files changed, 23 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog index d42be3345..b6e7d5d6b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2002-08-22 Peter Stephenson <pws@csr.com> + + * 17570: Src/Modules/socket.c, Doc/Zsh/Makefile.in, + Doc/Zsh/mod_socket.yo: Don't use predefined name `sun'; set + length parameter for accept(); fix inclusion of socket module + in documentation. + 2002-08-20 Sven Wischnowsky <wischnow@zsh.org> * 17569: Src/Zle/zle_tricky.c: fix typo in comment diff --git a/Doc/Makefile.in b/Doc/Makefile.in index 5996d332a..7ed9d02d4 100644 --- a/Doc/Makefile.in +++ b/Doc/Makefile.in @@ -59,7 +59,8 @@ Zsh/mod_compctl.yo Zsh/mod_complete.yo Zsh/mod_complist.yo \ Zsh/mod_computil.yo \ Zsh/mod_deltochar.yo Zsh/mod_example.yo Zsh/mod_files.yo \ Zsh/mod_mapfile.yo Zsh/mod_mathfunc.yo Zsh/mod_parameter.yo Zsh/mod_pcre.yo \ -Zsh/mod_sched.yo Zsh/mod_stat.yo Zsh/mod_termcap.yo Zsh/mod_terminfo.yo \ +Zsh/mod_sched.yo Zsh/mod_socket.yo \ +Zsh/mod_stat.yo Zsh/mod_termcap.yo Zsh/mod_terminfo.yo \ Zsh/mod_zftp.yo Zsh/mod_zle.yo Zsh/mod_zleparameter.yo \ Zsh/mod_zprof.yo Zsh/mod_zpty.yo Zsh/mod_zselect.yo \ Zsh/mod_zutil.yo Zsh/mod_tcp.yo diff --git a/Doc/Zsh/mod_socket.yo b/Doc/Zsh/mod_socket.yo index 9c503ffe5..3538c85cd 100644 --- a/Doc/Zsh/mod_socket.yo +++ b/Doc/Zsh/mod_socket.yo @@ -62,3 +62,4 @@ it will wait for one. In order to elicit more verbose output, use tt(-v). ) enditem() +) diff --git a/Src/Modules/socket.c b/Src/Modules/socket.c index 68e895e68..b676e2d36 100644 --- a/Src/Modules/socket.c +++ b/Src/Modules/socket.c @@ -63,7 +63,7 @@ bin_zsocket(char *nam, char **args, char *ops, int func) int err=1, verbose=0, test=0, targetfd=0; SOCKLEN_T len; char **dargs; - struct sockaddr_un sun; + struct sockaddr_un soun; int sfd; if (ops['v']) @@ -101,12 +101,12 @@ bin_zsocket(char *nam, char **args, char *ops, int func) return 1; } - sun.sun_family = AF_UNIX; - strncpy(sun.sun_path, localfn, UNIX_PATH_MAX); + soun.sun_family = AF_UNIX; + strncpy(soun.sun_path, localfn, UNIX_PATH_MAX); - if (bind(sfd, (struct sockaddr *)&sun, sizeof(struct sockaddr_un))) + if (bind(sfd, (struct sockaddr *)&soun, sizeof(struct sockaddr_un))) { - zwarnnam(nam, "could not bind to %s: %e", sun.sun_path, errno); + zwarnnam(nam, "could not bind to %s: %e", soun.sun_path, errno); close(sfd); return 1; } @@ -130,7 +130,7 @@ bin_zsocket(char *nam, char **args, char *ops, int func) setiparam("REPLY", sfd); if (verbose) - printf("%s listener is on fd %d\n", sun.sun_path, sfd); + printf("%s listener is on fd %d\n", soun.sun_path, sfd); return 0; @@ -190,7 +190,8 @@ bin_zsocket(char *nam, char **args, char *ops, int func) #endif } - if ((rfd = accept(lfd, (struct sockaddr *)&sun, &len)) == -1) + len = sizeof(soun); + if ((rfd = accept(lfd, (struct sockaddr *)&soun, &len)) == -1) { zwarnnam(nam, "could not accept connection: %e", NULL, errno); return 1; @@ -207,7 +208,7 @@ bin_zsocket(char *nam, char **args, char *ops, int func) setiparam("REPLY", sfd); if (verbose) - printf("new connection from %s is on fd %d\n", sun.sun_path, sfd); + printf("new connection from %s is on fd %d\n", soun.sun_path, sfd); } else { @@ -223,10 +224,10 @@ bin_zsocket(char *nam, char **args, char *ops, int func) return 1; } - sun.sun_family = AF_UNIX; - strncpy(sun.sun_path, dargs[0], UNIX_PATH_MAX); + soun.sun_family = AF_UNIX; + strncpy(soun.sun_path, dargs[0], UNIX_PATH_MAX); - if ((err = connect(sfd, (struct sockaddr *)&sun, sizeof(struct sockaddr_un)))) { + if ((err = connect(sfd, (struct sockaddr *)&soun, sizeof(struct sockaddr_un)))) { zwarnnam(nam, "connection failed: %e", NULL, errno); close(sfd); return 1; @@ -241,7 +242,7 @@ bin_zsocket(char *nam, char **args, char *ops, int func) setiparam("REPLY", sfd); if (verbose) - printf("%s is now on fd %d\n", sun.sun_path, sfd); + printf("%s is now on fd %d\n", soun.sun_path, sfd); } } |