|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
io.c (SHUT_RD) [SD_RECEIVE]: Define to SD_RECEIVE.
(SHUT_WR) [SD_SEND]: Define to SD_SEND.
(SHUT_RDWR) [SD_BOTH]: Define to SD_BOTH.
(FD_TO_SOCKET, closemaybesocket) [!FD_TO_SOCKET]: New macros.
(SOCKET_TO_FD, SOCKET) [!SOCKET_TO_FD]: New macros.
(PIPES_SIMULATED): Define only for DJGPP.
(pipe) [__MINGW32__]: Define to call _pipe, unless PIPES_SIMULATED
is defined.
(init_io) [HAVE_SOCKETS]: Call init_sockets.
(iop_close, socketopen): Call closemaybesocket instead of close.
(redirect) [__MINGW32__]: Call wait_any with a non-zero argument.
(devopen) [__EMX__ || __MINGW32__]: Don't call stat on network
pseudo-filenames.
(two_way_open) [HAVE_SOCKETS]: Switch input and output to binary
mode if appropriate.
(two_way_open) [!PIPES_SIMULATED]: Use the __EMX__ code for MinGW
as well.
[__MINGW32__] Call spawnl to invoke $ComSpec and pass it a
suitably quoted command line.
(two_way_open) [__MINGW32__]: Wait only for a specified process
ID. If successful, update the exit status of the exited process.
Don't use signals that are undefined on MinGW.
(two_way_open) [!PIPES_SIMULATED]: Use the __EMX__ code for MinGW
as well.
(min): Define only if not already defined.
(read_with_timeout) [__MINGW32__]: Allow reading from sockets with
timeout.
(gawk_fclose) [__MINGW32__]: Close the underlying socket as well.
getopt.c: Include stdlib.h for MinGW as well.
pc/popen.h (SIGKILL) [__MINGW32__]: Define.
(kill, quote_cmd): New prototypes.
pc/popen.c: Include popen.h and errno.h.
(popen, pclose, system): Undefine macros.
(WIN32_LEAN_AND_MEAN) [__MINGW32__]: Define and include windows.h.
(kill, quote_cmd) [!PIPES_SIMULATED]: New functions.
(os_popen): Make the function definition match its prototype
exactly.
pc/gawkmisc.pc [HAVE_SOCKETS]: Include socket.h and windows.h.
(socket, setsockopt, bind, connect, listen, accept, recvfrom)
(shutdown): Undefine macros.
(os_close_on_exec) [__MINGW32__]: Non-trivial implementation.
(init_sockets, socket_to_fd, w32_socket, w32_setsockopt)
(w32_bind, w32_connect, w32_listen, w32_accept, valid_socket)
(w32_closesocket, w32_recvfrom, w32_shutdown) [HAVE_SOCKETS]: New
functions for MinGW, emulate Posix sockets specified by file
descriptors.
pc/config.h (HAVE_GETADDRINFO, HAVE_SOCKADDR_STORAGE)
(HAVE_SOCKETS) [__MINGW32__]: Define.
pc/config.sed (HAVE_GETADDRINFO, HAVE_SOCKADDR_STORAGE)
(HAVE_SOCKETS) [__MINGW32__]: Define.
pc/Makefile.tst (fmtspcl): Announce expected failure only if not
built with MPFR.
(inetecht, inetdayt): For MinGW, warn about time-outs.
(beginfile1, clos1way, getlndir): Announce expected failure only
with DJGPP.
(exit): Describe the failure on MinGW.
(readdir): Explain why test might fail with bad ls.exe.
pc/Makefile (mingw32, mingw32-readline, mingw32-mpfr)
(mingw32-readline-mpfr): Add -lws2_32 to the link flags.
(gawkmisc$O): Depend on socket.h.
(io$O): Depend on socket.h and in.h.
(popen$O): New dependency.
posix/gawkmisc.c (init_sockets): New dummy function.
extension/filefuncs.c [_WIN32]: Define WIN32_LEAN_AND_MEAN before
including windows.h.
extension/readdir.c [__MINGW32__]: Define WIN32_LEAN_AND_MEAN before
including windows.h.
extension/filefuncs.c [HAVE_GETSYSTEMTIMEASFILETIME]: Define
WIN32_LEAN_AND_MEAN before including windows.h.
test/clos1way.awk: Don't use features of Posix shells, to allow this
test to work on Windows.
test/beginfile2.sh: Leave one blank between the left quote and the
following slash. Use non-absolute name for a non-existent file.
This is to avoid breakage on Windows due to MSYS transformation of
Posix style /foo/bar absolute file names.
test/beginfile2.ok: Adapt to changes in beginfile2.sh.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test/Makefile.in (mpfr-tests, shlib-tests): Add a blank character
between ' and /FOO/ in Gawk command lines, for the benefit of
testing under MSYS Bash.
test/filefuncs.awk (BEGIN): Call 'stat' on gawkapi.o, not on gawk,
which does not exist on systems that produce gawk.exe.
README_D/README.pc: Update the pc build and test instructions.
pc/Makefile.tst (AWK): Set AWKLIBPATH so extensions could be found.
(LS): New variable.
(check): Add back shlib-tests and shlib-msg-end.
(readdir): Add a warning regarding inode reporting by ls.exe.
(fts, fork, fork2): Add message about expected failure on MinGW.
pc/Makefile (install): Install the extensions.
(install-strip): Likewise.
pc/Makefile.ext: New file.
io.c (devopen) [__EMX__ || __MINGW32__]: Produce EISDIR on MinGW
when an attempt to open() a directory fails.
(two_way_open) [__EMX__ || __MINGW32__]: When trying to open() a
directory fails with EISDIR, assign FAKE_FD_VALUE to the file
descriptor and attributes of a directory to its mode bits. This
is needed to support the readdir extension.
gawkapi.h (FAKE_FD_VALUE): New macro, used in io.h and in
extension/gawkdirfd.h.
extension/rwarray.c [__MINGW32__]: Include winsock2.h instead of
arpa/inet.h.
extension/readdir.c [__MINGW32__]: Include windows.h.
Include gawkapi.h before gawkdirfd.h, since the former defines
FAKE_FD_VALUE needed by the latter.
(ftype): Accept an additional argument, the directory that is
being read. Callers changed.
[!DT_BLK]: Produce the file's type by calling 'stat' on it, if the
dirent structure doesn't provide that.
(get_inode): New function, to produce inode values on MS-Windows.
(dir_get_record): Use it.
extension/inplace.c (chown, link) [__MINGW32__]: Redirect to existing
library functions.
(mkstemp) [__MINGW32__]: New function, for MinGW, which doesn't
have it in its library.
(do_inplace_end) [__MINGW32__]: Remove the old file before
renaming the new, since 'rename' on Windows cannot overwrite
existing files.
extension/gawkdirfd.h (ENOTSUP): Define to ENOSYS if not already defined.
(DIR_TO_FD): If not defined yet, define to FAKE_FD_VALUE.
extension/filefuncs.c (get_inode) [_WIN32]: New function, produces the
file index used on Windows as its inode.
(fill_stat_array) [_WIN32]: Use it.
|