diff options
author | cvs2svn <> | 2010-04-02 22:36:45 +0000 |
---|---|---|
committer | cvs2svn <> | 2010-04-02 22:36:45 +0000 |
commit | 833ec8db7a32b62c657fa75fe8390dd6e116675c (patch) | |
tree | 6f4dcec7d19e941fc9b5037f70444a7cfde88397 /winsup | |
parent | d8b4cbe896c6c9ecf5fb162d93a2dd33b95501df (diff) | |
download | cygnal-cygwin-1_7_3-release.tar.gz cygnal-cygwin-1_7_3-release.tar.bz2 cygnal-cygwin-1_7_3-release.zip |
This commit was manufactured by cvs2svn to create tag 'cygwin-cygwin-1_7_3-release
1_7_3-release'.
Sprout from master 2010-03-30 16:20:15 UTC Corinna Vinschen <corinna@vinschen.de> ' * fhandler_socket.cc (fhandler_socket::wait_for_events): Remove call to'
Cherrypick from master 2010-04-02 22:36:44 UTC Christopher Faylor <me@cgf.cx> '* fhandler.h (fhandler_base::has_ongoing_io): Declare virtual method.':
winsup/cygwin/ChangeLog
winsup/cygwin/dtable.cc
winsup/cygwin/fhandler.cc
winsup/cygwin/fhandler.h
winsup/cygwin/fhandler_fifo.cc
winsup/cygwin/fhandler_tty.cc
winsup/cygwin/include/sys/strace.h
winsup/cygwin/nlsfuncs.cc
winsup/cygwin/pipe.cc
winsup/cygwin/select.cc
winsup/cygwin/select.h
winsup/cygwin/sigproc.cc
winsup/cygwin/strace.cc
winsup/cygwin/syscalls.cc
winsup/doc/ChangeLog
winsup/doc/cygwinenv.sgml
winsup/doc/effectively.sgml
winsup/doc/faq-using.xml
winsup/doc/setup-net.sgml
Cherrypick from master 2005-10-28 21:21:08 UTC Jeff Johnston <jjohnstn@redhat.com> '':
newlib/libc/string/wcsncpy.c
Cherrypick from cygnus 1999-05-03 07:29:06 UTC Richard Henderson <rth@redhat.com> '19990502 sourceware import':
README
config/mt-d30v
config/mt-netware
config/mt-ospace
etc/add-log.el
etc/add-log.vi
etc/configbuild.ein
etc/configbuild.fig
etc/configbuild.jin
etc/configbuild.tin
etc/configdev.ein
etc/configdev.fig
etc/configdev.jin
etc/configdev.tin
include/aout/hppa.h
include/coff/sym.h
include/fopen-bin.h
include/fopen-same.h
include/opcode/tahoe.h
makefile.vms
Delete:
djunpack.bat
libgloss/ChangeLog
libgloss/Makefile.in
libgloss/README
libgloss/acinclude.m4
libgloss/aclocal.m4
libgloss/arm/Makefile.in
libgloss/arm/_exit.c
libgloss/arm/_kill.c
libgloss/arm/aclocal.m4
libgloss/arm/coff-iq80310.specs
libgloss/arm/coff-pid.specs
libgloss/arm/coff-rdimon.specs
libgloss/arm/coff-rdpmon.specs
libgloss/arm/coff-redboot.ld
libgloss/arm/coff-redboot.specs
libgloss/arm/configure
libgloss/arm/configure.in
libgloss/arm/crt0.S
libgloss/arm/elf-iq80310.specs
libgloss/arm/elf-linux.specs
libgloss/arm/elf-pid.specs
libgloss/arm/elf-rdimon.specs
libgloss/arm/elf-rdpmon.specs
libgloss/arm/elf-redboot.ld
libgloss/arm/elf-redboot.specs
libgloss/arm/libcfunc.c
libgloss/arm/linux-crt0.c
libgloss/arm/linux-syscall.h
libgloss/arm/linux-syscalls0.S
libgloss/arm/linux-syscalls1.c
libgloss/arm/redboot-crt0.S
libgloss/arm/redboot-syscalls.c
libgloss/arm/swi.h
libgloss/arm/syscall.h
libgloss/arm/syscalls.c
libgloss/arm/trap.S
libgloss/bfin/Makefile.in
libgloss/bfin/aclocal.m4
libgloss/bfin/basiccrt.S
libgloss/bfin/bf512.ld
libgloss/bfin/bf514.ld
libgloss/bfin/bf516.ld
libgloss/bfin/bf518.ld
libgloss/bfin/bf522.ld
libgloss/bfin/bf523.ld
libgloss/bfin/bf524.ld
libgloss/bfin/bf525.ld
libgloss/bfin/bf526.ld
libgloss/bfin/bf527.ld
libgloss/bfin/bf531.ld
libgloss/bfin/bf532.ld
libgloss/bfin/bf533.ld
libgloss/bfin/bf534.ld
libgloss/bfin/bf536.ld
libgloss/bfin/bf537.ld
libgloss/bfin/bf538.ld
libgloss/bfin/bf539.ld
libgloss/bfin/bf542.ld
libgloss/bfin/bf544.ld
libgloss/bfin/bf547.ld
libgloss/bfin/bf548.ld
libgloss/bfin/bf549.ld
libgloss/bfin/bf561.ld
libgloss/bfin/bf561a.ld
libgloss/bfin/bf561b.ld
libgloss/bfin/bf561m.ld
libgloss/bfin/bfin-common-mc.ld
libgloss/bfin/bfin-common-sc.ld
libgloss/bfin/configure
libgloss/bfin/configure.in
libgloss/bfin/crt0.S
libgloss/bfin/include/blackfin.h
libgloss/bfin/include/ccblkfn.h
libgloss/bfin/include/cdefBF512.h
libgloss/bfin/include/cdefBF514.h
libgloss/bfin/include/cdefBF516.h
libgloss/bfin/include/cdefBF518.h
libgloss/bfin/include/cdefBF51x_base.h
libgloss/bfin/include/cdefBF522.h
libgloss/bfin/include/cdefBF523.h
libgloss/bfin/include/cdefBF524.h
libgloss/bfin/include/cdefBF525.h
libgloss/bfin/include/cdefBF526.h
libgloss/bfin/include/cdefBF527.h
libgloss/bfin/include/cdefBF52x_base.h
libgloss/bfin/include/cdefBF531.h
libgloss/bfin/include/cdefBF532.h
libgloss/bfin/include/cdefBF533.h
libgloss/bfin/include/cdefBF534.h
libgloss/bfin/include/cdefBF535.h
libgloss/bfin/include/cdefBF536.h
libgloss/bfin/include/cdefBF537.h
libgloss/bfin/include/cdefBF538.h
libgloss/bfin/include/cdefBF539.h
libgloss/bfin/include/cdefBF53x.h
libgloss/bfin/include/cdefBF541.h
libgloss/bfin/include/cdefBF542.h
libgloss/bfin/include/cdefBF542M.h
libgloss/bfin/include/cdefBF544.h
libgloss/bfin/include/cdefBF544M.h
libgloss/bfin/include/cdefBF547.h
libgloss/bfin/include/cdefBF547M.h
libgloss/bfin/include/cdefBF548.h
libgloss/bfin/include/cdefBF548M.h
libgloss/bfin/include/cdefBF549.h
libgloss/bfin/include/cdefBF549M.h
libgloss/bfin/include/cdefBF54x_base.h
libgloss/bfin/include/cdefBF561.h
libgloss/bfin/include/cdef_LPBlackfin.h
libgloss/bfin/include/cdefblackfin.h
libgloss/bfin/include/cplb.h
libgloss/bfin/include/cplbtab.h
libgloss/bfin/include/defBF512.h
libgloss/bfin/include/defBF514.h
libgloss/bfin/include/defBF516.h
libgloss/bfin/include/defBF518.h
libgloss/bfin/include/defBF51x_base.h
libgloss/bfin/include/defBF522.h
libgloss/bfin/include/defBF523.h
libgloss/bfin/include/defBF524.h
libgloss/bfin/include/defBF525.h
libgloss/bfin/include/defBF526.h
libgloss/bfin/include/defBF527.h
libgloss/bfin/include/defBF52x_base.h
libgloss/bfin/include/defBF531.h
libgloss/bfin/include/defBF532.h
libgloss/bfin/include/defBF533.h
libgloss/bfin/include/defBF534.h
libgloss/bfin/include/defBF535.h
libgloss/bfin/include/defBF536.h
libgloss/bfin/include/defBF537.h
libgloss/bfin/include/defBF538.h
libgloss/bfin/include/defBF539.h
libgloss/bfin/include/defBF541.h
libgloss/bfin/include/defBF542.h
libgloss/bfin/include/defBF542M.h
libgloss/bfin/include/defBF544.h
libgloss/bfin/include/defBF544M.h
libgloss/bfin/include/defBF547.h
libgloss/bfin/include/defBF547M.h
libgloss/bfin/include/defBF548.h
libgloss/bfin/include/defBF548M.h
libgloss/bfin/include/defBF549.h
libgloss/bfin/include/defBF549M.h
libgloss/bfin/include/defBF54x_base.h
libgloss/bfin/include/defBF561.h
libgloss/bfin/include/def_LPBlackfin.h
libgloss/bfin/include/defblackfin.h
libgloss/bfin/include/sys/_adi_platform.h
libgloss/bfin/include/sys/anomaly_macros_rtl.h
libgloss/bfin/include/sys/excause.h
libgloss/bfin/include/sys/exception.h
libgloss/bfin/include/sys/mc_typedef.h
libgloss/bfin/include/sys/platform.h
libgloss/bfin/include/sys/pll.h
libgloss/bfin/include/sysreg.h
libgloss/bfin/syscalls.c
libgloss/close.c
libgloss/config/default.mh
libgloss/config/default.mt
libgloss/config/dos.mh
libgloss/config/mips.mt
libgloss/config/mn10200.mt
libgloss/config/mn10300.mt
libgloss/config/ppc.mh
libgloss/configure
libgloss/configure.in
libgloss/cris/Makefile.in
libgloss/cris/aclocal.m4
libgloss/cris/configure
libgloss/cris/configure.in
libgloss/cris/crt0.S
libgloss/cris/crti.c
libgloss/cris/crtn.c
libgloss/cris/gensyscalls
libgloss/cris/irqtable.S
libgloss/cris/lcrt0.c
libgloss/cris/linunistd.h
libgloss/cris/outbyte.c
libgloss/cris/setup.S
libgloss/crx/Makefile.in
libgloss/crx/_exit.c
libgloss/crx/_getenv.c
libgloss/crx/_rename.c
libgloss/crx/aclocal.m4
libgloss/crx/close.c
libgloss/crx/configure
libgloss/crx/configure.in
libgloss/crx/crt0.S
libgloss/crx/crti.S
libgloss/crx/crtn.S
libgloss/crx/dvz_hndl.c
libgloss/crx/flg_hndl.c
libgloss/crx/fstat.c
libgloss/crx/getpid.c
libgloss/crx/iad_hndl.c
libgloss/crx/intable.c
libgloss/crx/isatty.c
libgloss/crx/kill.c
libgloss/crx/lseek.c
libgloss/crx/open.c
libgloss/crx/putnum.c
libgloss/crx/read.c
libgloss/crx/sbrk.c
libgloss/crx/sim.ld
libgloss/crx/stat.c
libgloss/crx/svc_hndl.c
libgloss/crx/time.c
libgloss/crx/und_hndl.c
libgloss/crx/unlink.c
libgloss/crx/write.c
libgloss/d30v/Makefile.in
libgloss/d30v/aclocal.m4
libgloss/d30v/configure
libgloss/d30v/configure.in
libgloss/d30v/crt0.S
libgloss/d30v/inbyte.c
libgloss/d30v/outbyte.c
libgloss/d30v/syscalls.c
libgloss/debug.c
libgloss/debug.h
libgloss/doc/Makefile.in
libgloss/doc/configure
libgloss/doc/configure.in
libgloss/doc/porting.texi
libgloss/fr30/Makefile.in
libgloss/fr30/aclocal.m4
libgloss/fr30/configure
libgloss/fr30/configure.in
libgloss/fr30/crt0.s
libgloss/fr30/syscalls.c
libgloss/frv/Makefile.in
libgloss/frv/aclocal.m4
libgloss/frv/configure
libgloss/frv/configure.in
libgloss/frv/crt0.S
libgloss/frv/fstat.c
libgloss/frv/getpid.c
libgloss/frv/isatty.c
libgloss/frv/kill.c
libgloss/frv/print.c
libgloss/frv/putnum.c
libgloss/frv/sbrk.c
libgloss/frv/sim-close.S
libgloss/frv/sim-exit.S
libgloss/frv/sim-inbyte.c
libgloss/frv/sim-lseek.S
libgloss/frv/sim-open.S
libgloss/frv/sim-read.S
libgloss/frv/sim-time.c
libgloss/frv/sim-unlink.S
libgloss/frv/sim-write.S
libgloss/frv/stat.c
libgloss/fstat.c
libgloss/getpid.c
libgloss/glue.h
libgloss/hp74x/Makefile.in
libgloss/hp74x/README
libgloss/hp74x/aclocal.m4
libgloss/hp74x/checksum.c
libgloss/hp74x/configure
libgloss/hp74x/configure.in
libgloss/hp74x/crt0.s
libgloss/hp74x/debugger.h
libgloss/hp74x/debugger.s
libgloss/hp74x/diagnose.h
libgloss/hp74x/hppa-defs.h
libgloss/hp74x/hppa.ld
libgloss/hp74x/io.c
libgloss/hp74x/iva_table.h
libgloss/hp74x/iva_table.s
libgloss/hp74x/pa_stub.c
libgloss/hp74x/test.c
libgloss/i386/Makefile.in
libgloss/i386/aclocal.m4
libgloss/i386/configure
libgloss/i386/configure.in
libgloss/i386/cygmon-crt0.S
libgloss/i386/cygmon-gmon.c
libgloss/i386/cygmon-gmon.h
libgloss/i386/cygmon-salib.c
libgloss/i386/cygmon-syscall.h
libgloss/i386/cygmon.ld
libgloss/i960/Makefile.in
libgloss/i960/aclocal.m4
libgloss/i960/asm.h
libgloss/i960/configure
libgloss/i960/configure.in
libgloss/i960/crt0.c
libgloss/i960/mon-read.c
libgloss/i960/mon-syscalls.S
libgloss/i960/mon-write.c
libgloss/i960/mon960.c
libgloss/i960/mon960.ld
libgloss/i960/syscall.h
libgloss/iq2000/Makefile.in
libgloss/iq2000/_exit.c
libgloss/iq2000/access.c
libgloss/iq2000/aclocal.m4
libgloss/iq2000/chmod.c
libgloss/iq2000/chown.c
libgloss/iq2000/close.c
libgloss/iq2000/configure
libgloss/iq2000/configure.in
libgloss/iq2000/creat.c
libgloss/iq2000/crt0.S
libgloss/iq2000/crt1.c
libgloss/iq2000/execv.c
libgloss/iq2000/execve.c
libgloss/iq2000/fork.c
libgloss/iq2000/fstat.c
libgloss/iq2000/getpid.c
libgloss/iq2000/gettime.c
libgloss/iq2000/isatty.c
libgloss/iq2000/kill.c
libgloss/iq2000/lseek.c
libgloss/iq2000/open.c
libgloss/iq2000/pipe.c
libgloss/iq2000/read.c
libgloss/iq2000/sbrk.c
libgloss/iq2000/sim.ld
libgloss/iq2000/stat.c
libgloss/iq2000/test.c
libgloss/iq2000/time.c
libgloss/iq2000/times.c
libgloss/iq2000/trap.c
libgloss/iq2000/trap.h
libgloss/iq2000/unlink.c
libgloss/iq2000/utime.c
libgloss/iq2000/wait.c
libgloss/iq2000/write.c
libgloss/isatty.c
libgloss/kill.c
libgloss/libnosys/Makefile.in
libgloss/libnosys/_exit.c
libgloss/libnosys/acconfig.h
libgloss/libnosys/aclocal.m4
libgloss/libnosys/chown.c
libgloss/libnosys/close.c
libgloss/libnosys/config.h.in
libgloss/libnosys/configure
libgloss/libnosys/configure.in
libgloss/libnosys/environ.c
libgloss/libnosys/errno.c
libgloss/libnosys/execve.c
libgloss/libnosys/fork.c
libgloss/libnosys/fstat.c
libgloss/libnosys/getpid.c
libgloss/libnosys/gettod.c
libgloss/libnosys/isatty.c
libgloss/libnosys/kill.c
libgloss/libnosys/link.c
libgloss/libnosys/lseek.c
libgloss/libnosys/open.c
libgloss/libnosys/read.c
libgloss/libnosys/readlink.c
libgloss/libnosys/sbrk.c
libgloss/libnosys/stat.c
libgloss/libnosys/symlink.c
libgloss/libnosys/times.c
libgloss/libnosys/unlink.c
libgloss/libnosys/wait.c
libgloss/libnosys/warning.h
libgloss/libnosys/write.c
libgloss/lm32/Makefile.in
libgloss/lm32/aclocal.m4
libgloss/lm32/configure
libgloss/lm32/configure.in
libgloss/lm32/crt0.S
libgloss/lm32/isatty.c
libgloss/lm32/scall.S
libgloss/lm32/sim.ld
libgloss/lseek.c
libgloss/m32c/Makefile.in
libgloss/m32c/abort.S
libgloss/m32c/aclocal.m4
libgloss/m32c/argv.S
libgloss/m32c/argvlen.S
libgloss/m32c/chdir.S
libgloss/m32c/chmod.S
libgloss/m32c/close.S
libgloss/m32c/configure
libgloss/m32c/configure.in
libgloss/m32c/crt0.S
libgloss/m32c/crtn.S
libgloss/m32c/exit.S
libgloss/m32c/fstat.S
libgloss/m32c/genscript
libgloss/m32c/getpid.S
libgloss/m32c/gettimeofday.S
libgloss/m32c/heaptop.S
libgloss/m32c/isatty.S
libgloss/m32c/kill.S
libgloss/m32c/link.S
libgloss/m32c/lseek.S
libgloss/m32c/m32c.tmpl
libgloss/m32c/m32csys.h
libgloss/m32c/open.S
libgloss/m32c/read.S
libgloss/m32c/sample.c
libgloss/m32c/sbrk.c
libgloss/m32c/stat.S
libgloss/m32c/time.S
libgloss/m32c/times.S
libgloss/m32c/unlink.S
libgloss/m32c/utime.S
libgloss/m32c/varvects.S
libgloss/m32c/varvects.h
libgloss/m32c/write.S
libgloss/m32r/Makefile.in
libgloss/m32r/aclocal.m4
libgloss/m32r/chmod.c
libgloss/m32r/close.c
libgloss/m32r/configure
libgloss/m32r/configure.in
libgloss/m32r/crt0.S
libgloss/m32r/eit.h
libgloss/m32r/eva-stub.ld
libgloss/m32r/eva.ld
libgloss/m32r/exit.c
libgloss/m32r/fstat.c
libgloss/m32r/getpid.c
libgloss/m32r/isatty.c
libgloss/m32r/kill.c
libgloss/m32r/lseek.c
libgloss/m32r/m32r-lib.c
libgloss/m32r/m32r-stub.c
libgloss/m32r/mon.specs
libgloss/m32r/open.c
libgloss/m32r/raise.c
libgloss/m32r/read.c
libgloss/m32r/sbrk.c
libgloss/m32r/stat.c
libgloss/m32r/trap0.S
libgloss/m32r/trapmon0.c
libgloss/m32r/unlink.c
libgloss/m32r/utime.c
libgloss/m32r/write.c
libgloss/m68hc11/Makefile.in
libgloss/m68hc11/aclocal.m4
libgloss/m68hc11/configure
libgloss/m68hc11/configure.in
libgloss/m68hc11/crt0.S
libgloss/m68hc11/sci-inout.S
libgloss/m68hc11/sim-valid-m68hc11.ld
libgloss/m68hc11/sim-valid-m68hc12.ld
libgloss/m68hc11/syscalls.c
libgloss/m68k/Makefile.in
libgloss/m68k/README
libgloss/m68k/aclocal.m4
libgloss/m68k/asm.h
libgloss/m68k/bcc.ld
libgloss/m68k/cf-crt0.S
libgloss/m68k/cf-crt1.c
libgloss/m68k/cf-exit.c
libgloss/m68k/cf-hosted.S
libgloss/m68k/cf-isrs.c
libgloss/m68k/cf-isv.S
libgloss/m68k/cf-sbrk.c
libgloss/m68k/cf.sc
libgloss/m68k/configure
libgloss/m68k/configure.in
libgloss/m68k/cpu32bug.S
libgloss/m68k/cpu32bug.h
libgloss/m68k/crt0.S
libgloss/m68k/dtor.C
libgloss/m68k/fido-_exit.c
libgloss/m68k/fido-crt0.S
libgloss/m68k/fido-handler.c
libgloss/m68k/fido-hosted.S
libgloss/m68k/fido-sbrk.c
libgloss/m68k/fido.h
libgloss/m68k/fido.sc
libgloss/m68k/fido_profiling.h
libgloss/m68k/idp-inbyte.c
libgloss/m68k/idp-outbyte.c
libgloss/m68k/idp.ld
libgloss/m68k/idpgdb.ld
libgloss/m68k/io-close.c
libgloss/m68k/io-exit.c
libgloss/m68k/io-fstat.c
libgloss/m68k/io-gdb.c
libgloss/m68k/io-gettimeofday.c
libgloss/m68k/io-isatty.c
libgloss/m68k/io-lseek.c
libgloss/m68k/io-open.c
libgloss/m68k/io-read.c
libgloss/m68k/io-rename.c
libgloss/m68k/io-stat.c
libgloss/m68k/io-system.c
libgloss/m68k/io-time.c
libgloss/m68k/io-unlink.c
libgloss/m68k/io-write.c
libgloss/m68k/io.h
libgloss/m68k/leds.c
libgloss/m68k/leds.h
libgloss/m68k/mc68681reg.h
libgloss/m68k/mc68ec.c
libgloss/m68k/mvme-stub.c
libgloss/m68k/mvme.S
libgloss/m68k/mvme135-asm.S
libgloss/m68k/mvme135.ld
libgloss/m68k/mvme162.ld
libgloss/m68k/mvme162lx-asm.S
libgloss/m68k/sbc5204.ld
libgloss/m68k/sbc5206.ld
libgloss/m68k/sim-abort.c
libgloss/m68k/sim-crt0.S
libgloss/m68k/sim-errno.c
libgloss/m68k/sim-funcs.c
libgloss/m68k/sim-inbyte.c
libgloss/m68k/sim-print.c
libgloss/m68k/sim-sbrk.c
libgloss/m68k/sim.ld
libgloss/m68k/simulator.S
libgloss/m68k/test.c
libgloss/mcore/Makefile.in
libgloss/mcore/aclocal.m4
libgloss/mcore/close.c
libgloss/mcore/cmb-exit.c
libgloss/mcore/cmb-inbyte.c
libgloss/mcore/cmb-outbyte.c
libgloss/mcore/configure
libgloss/mcore/configure.in
libgloss/mcore/crt0.S
libgloss/mcore/elf-cmb.ld
libgloss/mcore/elf-cmb.specs
libgloss/mcore/fstat.c
libgloss/mcore/getpid.c
libgloss/mcore/kill.c
libgloss/mcore/lseek.c
libgloss/mcore/open.c
libgloss/mcore/pe-cmb.ld
libgloss/mcore/pe-cmb.specs
libgloss/mcore/print.c
libgloss/mcore/putnum.c
libgloss/mcore/raise.c
libgloss/mcore/read.c
libgloss/mcore/sbrk.c
libgloss/mcore/stat.c
libgloss/mcore/syscalls.S
libgloss/mcore/unlink.c
libgloss/mcore/write.c
libgloss/mep/Makefile.in
libgloss/mep/aclocal.m4
libgloss/mep/configure
libgloss/mep/configure.in
libgloss/mep/crt0.S
libgloss/mep/crtn.S
libgloss/mep/default.ld
libgloss/mep/fmax.ld
libgloss/mep/gcov-io.h
libgloss/mep/gmap_default.ld
libgloss/mep/h_reset.c
libgloss/mep/handlers.c
libgloss/mep/isatty.c
libgloss/mep/mep-bb.c
libgloss/mep/mep-gmon.c
libgloss/mep/min.ld
libgloss/mep/read.c
libgloss/mep/sbrk.c
libgloss/mep/sdram-crt0.S
libgloss/mep/sim-crt0.S
libgloss/mep/sim-crtn.S
libgloss/mep/simnovec-crt0.S
libgloss/mep/simple.ld
libgloss/mep/simsdram-crt0.S
libgloss/mep/syscalls.S
libgloss/mep/write.c
libgloss/microblaze/Makefile.in
libgloss/microblaze/_exception_handler.S
libgloss/microblaze/_hw_exception_handler.S
libgloss/microblaze/_interrupt_handler.S
libgloss/microblaze/_program_clean.S
libgloss/microblaze/_program_init.S
libgloss/microblaze/configure
libgloss/microblaze/configure.in
libgloss/microblaze/crt0.S
libgloss/microblaze/crt1.S
libgloss/microblaze/crt2.S
libgloss/microblaze/crt3.S
libgloss/microblaze/crt4.S
libgloss/microblaze/crtinit.S
libgloss/microblaze/pgcrtinit.S
libgloss/microblaze/sbrk.c
libgloss/microblaze/sim-crtinit.S
libgloss/microblaze/sim-pgcrtinit.S
libgloss/microblaze/timer.c
libgloss/microblaze/xil_malloc.c
libgloss/microblaze/xil_sbrk.c
libgloss/microblaze/xilinx.ld
libgloss/mips/Makefile.in
libgloss/mips/aclocal.m4
libgloss/mips/array-io.c
libgloss/mips/array.ld
libgloss/mips/cfe.c
libgloss/mips/cfe.ld
libgloss/mips/cfe_api.c
libgloss/mips/cfe_api.h
libgloss/mips/cfe_api_int.h
libgloss/mips/cfe_error.h
libgloss/mips/cfe_mem.c
libgloss/mips/cma101.c
libgloss/mips/configure
libgloss/mips/configure.in
libgloss/mips/crt0.S
libgloss/mips/crt0_cfe.S
libgloss/mips/crt0_cygmon.S
libgloss/mips/cygmon.c
libgloss/mips/ddb-kseg0.ld
libgloss/mips/ddb.ld
libgloss/mips/dtor.C
libgloss/mips/dve.ld
libgloss/mips/dvemon.c
libgloss/mips/entry.S
libgloss/mips/idt.ld
libgloss/mips/idt32.ld
libgloss/mips/idt64.ld
libgloss/mips/idtecoff.ld
libgloss/mips/idtmon.S
libgloss/mips/jmr3904-io.c
libgloss/mips/jmr3904app-java.ld
libgloss/mips/jmr3904app.ld
libgloss/mips/jmr3904dram-java.ld
libgloss/mips/jmr3904dram.ld
libgloss/mips/lsi.ld
libgloss/mips/lsipmon.S
libgloss/mips/nullmon.c
libgloss/mips/nullmon.ld
libgloss/mips/pmon.S
libgloss/mips/pmon.ld
libgloss/mips/regs.S
libgloss/mips/syscalls.c
libgloss/mips/test.c
libgloss/mips/vr4300.S
libgloss/mips/vr5xxx.S
libgloss/mn10200/Makefile.in
libgloss/mn10200/_exit.c
libgloss/mn10200/access.c
libgloss/mn10200/aclocal.m4
libgloss/mn10200/chmod.c
libgloss/mn10200/chown.c
libgloss/mn10200/close.c
libgloss/mn10200/configure
libgloss/mn10200/configure.in
libgloss/mn10200/creat.c
libgloss/mn10200/crt0.S
libgloss/mn10200/crt1.c
libgloss/mn10200/eval.ld
libgloss/mn10200/execv.c
libgloss/mn10200/execve.c
libgloss/mn10200/fork.c
libgloss/mn10200/fstat.c
libgloss/mn10200/getpid.c
libgloss/mn10200/gettime.c
libgloss/mn10200/isatty.c
libgloss/mn10200/kill.c
libgloss/mn10200/lseek.c
libgloss/mn10200/open.c
libgloss/mn10200/pipe.c
libgloss/mn10200/read.c
libgloss/mn10200/sbrk.c
libgloss/mn10200/sim.ld
libgloss/mn10200/stat.c
libgloss/mn10200/test.c
libgloss/mn10200/time.c
libgloss/mn10200/times.c
libgloss/mn10200/trap.S
libgloss/mn10200/trap.h
libgloss/mn10200/unlink.c
libgloss/mn10200/utime.c
libgloss/mn10200/wait.c
libgloss/mn10200/write.c
libgloss/mn10300/Makefile.in
libgloss/mn10300/_exit.c
libgloss/mn10300/access.c
libgloss/mn10300/aclocal.m4
libgloss/mn10300/asb2303.ld
libgloss/mn10300/asb2305.ld
libgloss/mn10300/chmod.c
libgloss/mn10300/chown.c
libgloss/mn10300/close.c
libgloss/mn10300/configure
libgloss/mn10300/configure.in
libgloss/mn10300/creat.c
libgloss/mn10300/crt0-eval.S
libgloss/mn10300/crt0.S
libgloss/mn10300/crt0_cygmon.S
libgloss/mn10300/crt0_redboot.S
libgloss/mn10300/crt1.c
libgloss/mn10300/cygmon.c
libgloss/mn10300/eval.ld
libgloss/mn10300/execv.c
libgloss/mn10300/execve.c
libgloss/mn10300/fork.c
libgloss/mn10300/fstat.c
libgloss/mn10300/getpid.c
libgloss/mn10300/gettime.c
libgloss/mn10300/isatty.c
libgloss/mn10300/kill.c
libgloss/mn10300/lseek.c
libgloss/mn10300/open.c
libgloss/mn10300/pipe.c
libgloss/mn10300/read.c
libgloss/mn10300/sbrk.c
libgloss/mn10300/sim.ld
libgloss/mn10300/stat.c
libgloss/mn10300/test.c
libgloss/mn10300/time.c
libgloss/mn10300/times.c
libgloss/mn10300/trap.S
libgloss/mn10300/trap.h
libgloss/mn10300/unlink.c
libgloss/mn10300/utime.c
libgloss/mn10300/wait.c
libgloss/mn10300/write.c
libgloss/moxie/Makefile.in
libgloss/moxie/aclocal.m4
libgloss/moxie/configure
libgloss/moxie/configure.in
libgloss/moxie/crt0.S
libgloss/moxie/fstat.c
libgloss/moxie/getpid.c
libgloss/moxie/isatty.c
libgloss/moxie/kill.c
libgloss/moxie/moxie-elf-common.ld
libgloss/moxie/print.c
libgloss/moxie/putnum.c
libgloss/moxie/qemu-time.c
libgloss/moxie/qemu-write.c
libgloss/moxie/qemu.ld
libgloss/moxie/sbrk.c
libgloss/moxie/sim-close.S
libgloss/moxie/sim-exit.S
libgloss/moxie/sim-inbyte.c
libgloss/moxie/sim-lseek.S
libgloss/moxie/sim-lseek.c
libgloss/moxie/sim-open.S
libgloss/moxie/sim-read.S
libgloss/moxie/sim-time.c
libgloss/moxie/sim-unlink.S
libgloss/moxie/sim-write.S
libgloss/moxie/sim.ld
libgloss/moxie/stat.c
libgloss/mt/16-002.ld
libgloss/mt/16-003.ld
libgloss/mt/64-001.ld
libgloss/mt/Makefile.in
libgloss/mt/access.c
libgloss/mt/aclocal.m4
libgloss/mt/chmod.c
libgloss/mt/close.c
libgloss/mt/configure
libgloss/mt/configure.in
libgloss/mt/crt0-16-002.S
libgloss/mt/crt0-16-003.S
libgloss/mt/crt0-64-001.S
libgloss/mt/crt0-ms2.S
libgloss/mt/crt0.S
libgloss/mt/exit-16-002.c
libgloss/mt/exit-16-003.c
libgloss/mt/exit-64-001.c
libgloss/mt/exit-ms2.c
libgloss/mt/exit.c
libgloss/mt/fstat.c
libgloss/mt/getpid.c
libgloss/mt/gettime.c
libgloss/mt/isatty.c
libgloss/mt/kill.c
libgloss/mt/lseek.c
libgloss/mt/ms2.ld
libgloss/mt/open.c
libgloss/mt/read.c
libgloss/mt/sbrk.c
libgloss/mt/startup-16-002.S
libgloss/mt/startup-16-003.S
libgloss/mt/startup-64-001.S
libgloss/mt/startup-ms2.S
libgloss/mt/stat.c
libgloss/mt/time.c
libgloss/mt/times.c
libgloss/mt/trap.S
libgloss/mt/trap.h
libgloss/mt/unlink.c
libgloss/mt/utime.c
libgloss/mt/write.c
libgloss/open.c
libgloss/pa/Makefile.in
libgloss/pa/README
libgloss/pa/aclocal.m4
libgloss/pa/configure
libgloss/pa/configure.in
libgloss/pa/crt0.S
libgloss/pa/hp-milli.s
libgloss/pa/op50n-io.S
libgloss/pa/op50n.h
libgloss/pa/op50n.ld
libgloss/pa/op50nled.c
libgloss/pa/setjmp.S
libgloss/pa/test.c
libgloss/pa/w89k-io.c
libgloss/pa/w89k.h
libgloss/pa/w89k.ld
libgloss/print.c
libgloss/putnum.c
libgloss/read.c
libgloss/rs6000/Makefile.in
libgloss/rs6000/aclocal.m4
libgloss/rs6000/ads-exit.S
libgloss/rs6000/ads-io.c
libgloss/rs6000/ads.ld
libgloss/rs6000/configure
libgloss/rs6000/configure.in
libgloss/rs6000/crt0.S
libgloss/rs6000/mbx-exit.c
libgloss/rs6000/mbx-inbyte.c
libgloss/rs6000/mbx-outbyte.c
libgloss/rs6000/mbx-print.c
libgloss/rs6000/mbx.ld
libgloss/rs6000/mbx.specs
libgloss/rs6000/mcount.S
libgloss/rs6000/mvme-errno.c
libgloss/rs6000/mvme-exit.S
libgloss/rs6000/mvme-inbyte.S
libgloss/rs6000/mvme-outbyte.S
libgloss/rs6000/mvme-print.c
libgloss/rs6000/mvme-read.c
libgloss/rs6000/sim-abort.c
libgloss/rs6000/sim-crt0.S
libgloss/rs6000/sim-errno.c
libgloss/rs6000/sim-getrusage.S
libgloss/rs6000/sim-inbyte.c
libgloss/rs6000/sim-print.c
libgloss/rs6000/sim-sbrk.c
libgloss/rs6000/simulator.S
libgloss/rs6000/sol-cfuncs.c
libgloss/rs6000/sol-syscall.S
libgloss/rs6000/test.c
libgloss/rs6000/xil-crt0.S
libgloss/rs6000/xilinx.ld
libgloss/rs6000/xilinx440.ld
libgloss/rs6000/yellowknife.ld
libgloss/rx/Makefile.in
libgloss/rx/abort.S
libgloss/rx/argv.S
libgloss/rx/argvlen.S
libgloss/rx/chdir.S
libgloss/rx/chmod.S
libgloss/rx/close.S
libgloss/rx/configure
libgloss/rx/configure.in
libgloss/rx/crt0.S
libgloss/rx/crtn.S
libgloss/rx/exit.S
libgloss/rx/fstat.S
libgloss/rx/gcrt0.S
libgloss/rx/getpid.S
libgloss/rx/gettimeofday.S
libgloss/rx/heaptop.S
libgloss/rx/isatty.S
libgloss/rx/kill.S
libgloss/rx/link.S
libgloss/rx/lseek.S
libgloss/rx/mcount.c
libgloss/rx/open.S
libgloss/rx/read.S
libgloss/rx/rx-sim.ld
libgloss/rx/rx.ld
libgloss/rx/rxsys.h
libgloss/rx/sbrk.c
libgloss/rx/sigprocmask.S
libgloss/rx/sleep.S
libgloss/rx/stat.S
libgloss/rx/time.S
libgloss/rx/times.S
libgloss/rx/unlink.S
libgloss/rx/utime.S
libgloss/rx/write.S
libgloss/sbrk.c
libgloss/sh/sh1lcevb.ld
libgloss/sh/sh2lcevb.ld
libgloss/sh/sh3bb.ld
libgloss/sh/sh3lcevb.ld
libgloss/sparc/Makefile.in
libgloss/sparc/aclocal.m4
libgloss/sparc/asm.h
libgloss/sparc/cache.c
libgloss/sparc/configure
libgloss/sparc/configure.in
libgloss/sparc/crt0-701.S
libgloss/sparc/crt0.S
libgloss/sparc/cygmon-crt0.S
libgloss/sparc/cygmon-salib.c
libgloss/sparc/cygmon-sparc64-ld.src
libgloss/sparc/cygmon.ld.src
libgloss/sparc/dtor.C
libgloss/sparc/elfsim.ld
libgloss/sparc/erc32-crt0.S
libgloss/sparc/erc32-io.c
libgloss/sparc/erc32-stub.c
libgloss/sparc/erc32.ld
libgloss/sparc/ex930.ld
libgloss/sparc/ex931.ld
libgloss/sparc/ex934.ld
libgloss/sparc/fixctors.c
libgloss/sparc/libsys/Makefile.in
libgloss/sparc/libsys/_exit.S
libgloss/sparc/libsys/aclocal.m4
libgloss/sparc/libsys/cerror.S
libgloss/sparc/libsys/configure
libgloss/sparc/libsys/configure.in
libgloss/sparc/libsys/isatty.c
libgloss/sparc/libsys/libsys-crt0.S
libgloss/sparc/libsys/sbrk.S
libgloss/sparc/libsys/syscall.h
libgloss/sparc/libsys/syscallasm.h
libgloss/sparc/libsys/template.S
libgloss/sparc/libsys/template_r.S
libgloss/sparc/salib-701.c
libgloss/sparc/salib.c
libgloss/sparc/slite.h
libgloss/sparc/sparc-stub.c
libgloss/sparc/sparc86x.ld
libgloss/sparc/sparcl-stub.c
libgloss/sparc/sparclet-stub.c
libgloss/sparc/sparclite.h
libgloss/sparc/sysc-701.c
libgloss/sparc/syscalls.c
libgloss/sparc/test.c
libgloss/sparc/traps.S
libgloss/sparc/tsc701.ld
libgloss/spu/Makefile.in
libgloss/spu/access.c
libgloss/spu/aclocal.m4
libgloss/spu/chdir.c
libgloss/spu/chmod.c
libgloss/spu/chown.c
libgloss/spu/close.c
libgloss/spu/configure
libgloss/spu/configure.in
libgloss/spu/conv_stat.c
libgloss/spu/crt0.S
libgloss/spu/crti.S
libgloss/spu/crtn.S
libgloss/spu/dirfuncs.c
libgloss/spu/dup.c
libgloss/spu/dup2.c
libgloss/spu/exit.c
libgloss/spu/fchdir.c
libgloss/spu/fchmod.c
libgloss/spu/fchown.c
libgloss/spu/fdatasync.c
libgloss/spu/fstat.c
libgloss/spu/fsync.c
libgloss/spu/ftruncate.c
libgloss/spu/getcwd.c
libgloss/spu/getitimer.c
libgloss/spu/getpagesize.c
libgloss/spu/getpid.c
libgloss/spu/gettimeofday.c
libgloss/spu/isatty.c
libgloss/spu/jsre.h
libgloss/spu/kill.c
libgloss/spu/lchown.c
libgloss/spu/link.c
libgloss/spu/linux_getpid.c
libgloss/spu/linux_gettid.c
libgloss/spu/linux_syscalls.c
libgloss/spu/lockf.c
libgloss/spu/lseek.c
libgloss/spu/lstat.c
libgloss/spu/mkdir.c
libgloss/spu/mknod.c
libgloss/spu/mkstemp.c
libgloss/spu/mktemp.c
libgloss/spu/mmap_eaddr.c
libgloss/spu/mremap_eaddr.c
libgloss/spu/msync_eaddr.c
libgloss/spu/munmap_eaddr.c
libgloss/spu/nanosleep.c
libgloss/spu/open.c
libgloss/spu/pread.c
libgloss/spu/pwrite.c
libgloss/spu/read.c
libgloss/spu/readlink.c
libgloss/spu/readv.c
libgloss/spu/rmdir.c
libgloss/spu/sbrk.c
libgloss/spu/sched_yield.c
libgloss/spu/setitimer.c
libgloss/spu/shm_open.c
libgloss/spu/shm_unlink.c
libgloss/spu/stat.c
libgloss/spu/symlink.c
libgloss/spu/sync.c
libgloss/spu/syscalls.c
libgloss/spu/times.c
libgloss/spu/truncate.c
libgloss/spu/umask.c
libgloss/spu/unlink.c
libgloss/spu/utime.c
libgloss/spu/utimes.c
libgloss/spu/write.c
libgloss/spu/writev.c
libgloss/stat.c
libgloss/syscall.h
libgloss/testsuite/Makefile.in
libgloss/testsuite/config/hppa.mt
libgloss/testsuite/config/m68k.mt
libgloss/testsuite/config/mips.mt
libgloss/testsuite/config/support.c
libgloss/testsuite/configure.in
libgloss/testsuite/lib/libgloss.exp
libgloss/testsuite/libgloss.all/.gdbinit
libgloss/testsuite/libgloss.all/Makefile.in
libgloss/testsuite/libgloss.all/array.c
libgloss/testsuite/libgloss.all/configure.in
libgloss/testsuite/libgloss.all/div.c
libgloss/testsuite/libgloss.all/double.c
libgloss/testsuite/libgloss.all/float.c
libgloss/testsuite/libgloss.all/func.c
libgloss/testsuite/libgloss.all/io.c
libgloss/testsuite/libgloss.all/math.c
libgloss/testsuite/libgloss.all/memory.c
libgloss/testsuite/libgloss.all/misc.c
libgloss/testsuite/libgloss.all/printf.c
libgloss/testsuite/libgloss.all/struct.c
libgloss/testsuite/libgloss.all/varargs.c
libgloss/testsuite/libgloss.all/varargs2.c
libgloss/unlink.c
libgloss/v850/sys/syscall.h
libgloss/wince/Makefile.am
libgloss/wince/Makefile.in
libgloss/wince/aclocal.m4
libgloss/wince/configure
libgloss/wince/configure.in
libgloss/write.c
libgloss/xc16x/Makefile.in
libgloss/xc16x/aclocal.m4
libgloss/xc16x/close.S
libgloss/xc16x/configure
libgloss/xc16x/configure.in
libgloss/xc16x/create.c
libgloss/xc16x/crt0.S
libgloss/xc16x/fstat.S
libgloss/xc16x/getchar1.c
libgloss/xc16x/isatty.c
libgloss/xc16x/lseek.c
libgloss/xc16x/mem-layout.c
libgloss/xc16x/misc.c
libgloss/xc16x/open.c
libgloss/xc16x/read.c
libgloss/xc16x/sbrk.c
libgloss/xc16x/sys/syscall.h
libgloss/xc16x/syscalls.c
libgloss/xc16x/trap_handle.c
libgloss/xc16x/write.c
libgloss/xc16x/xc16x.mt
libgloss/xstormy16/Makefile.in
libgloss/xstormy16/aclocal.m4
libgloss/xstormy16/close.c
libgloss/xstormy16/configure
libgloss/xstormy16/configure.in
libgloss/xstormy16/crt0.s
libgloss/xstormy16/crt0_stub.s
libgloss/xstormy16/crti.s
libgloss/xstormy16/crtn.s
libgloss/xstormy16/eva_app.c
libgloss/xstormy16/eva_app.ld
libgloss/xstormy16/eva_stub.ld
libgloss/xstormy16/fstat.c
libgloss/xstormy16/getpid.c
libgloss/xstormy16/isatty.c
libgloss/xstormy16/kill.c
libgloss/xstormy16/lseek.c
libgloss/xstormy16/open.c
libgloss/xstormy16/sim_high.ld
libgloss/xstormy16/sim_malloc_start.s
libgloss/xstormy16/sim_rom.ld
libgloss/xstormy16/stat.c
libgloss/xstormy16/syscalls.S
libgloss/xstormy16/syscalls.m4
libgloss/xstormy16/unlink.c
libgloss/xstormy16/xstormy16_stub.c
texinfo/texinfo.tex
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/ChangeLog | 131 | ||||
-rw-r--r-- | winsup/cygwin/dtable.cc | 10 | ||||
-rw-r--r-- | winsup/cygwin/fhandler.cc | 120 | ||||
-rw-r--r-- | winsup/cygwin/fhandler.h | 53 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_fifo.cc | 5 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_tty.cc | 64 | ||||
-rw-r--r-- | winsup/cygwin/include/sys/strace.h | 3 | ||||
-rw-r--r-- | winsup/cygwin/nlsfuncs.cc | 27 | ||||
-rw-r--r-- | winsup/cygwin/pipe.cc | 14 | ||||
-rw-r--r-- | winsup/cygwin/select.cc | 145 | ||||
-rw-r--r-- | winsup/cygwin/select.h | 7 | ||||
-rw-r--r-- | winsup/cygwin/sigproc.cc | 1 | ||||
-rw-r--r-- | winsup/cygwin/strace.cc | 3 | ||||
-rw-r--r-- | winsup/cygwin/syscalls.cc | 2 | ||||
-rw-r--r-- | winsup/doc/ChangeLog | 11 | ||||
-rw-r--r-- | winsup/doc/cygwinenv.sgml | 2 | ||||
-rw-r--r-- | winsup/doc/effectively.sgml | 10 | ||||
-rw-r--r-- | winsup/doc/faq-using.xml | 10 | ||||
-rw-r--r-- | winsup/doc/setup-net.sgml | 5 |
19 files changed, 427 insertions, 196 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 3224cf62e..b2c9203a9 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,127 @@ +2010-04-02 Christopher Faylor <me+cygwin@cgf.cx> + + * fhandler.h (fhandler_base::has_ongoing_io): Declare virtual method. + * select.cc (peek_pipe): Reorganize slightly. Don't attempt to check a + handle if it has ongoing I/O. + (select_pipe_info::select_pipe_info): Delete definition. + (select_pipe_info::~select_pipe_info): Delete definition. + (thread_pipe): Get rid of WFMO call. Reorganize loop. + (pipe_cleanup): Remove dependence on destructor. + (thread_serial): Reorganize loop. + * select.h (select_pipe_info): Empty this class since it no longer has + any special requirements (for now). + + * syscalls.cc (readv): Remove an unneeded debug printf. + +2010-04-02 Christopher Faylor <me+cygwin@cgf.cx> + + * fhandler.h (fhandler_base::setup_overlapped): Delete virtual + declaration. + (fhandler_base::destroy_overlapped): Ditto. + (fhandler_base_overlapped): Remove now-unneeded friend. + (fhandler_base_overlapped::setup_overlapped): Return int, remove + parameter. + (fhandler_base_overlapped::get_overlapped): Return reference. + (fhandler_base_overlapped::fhandler_base_overlapped): Be more assertive + about zeroing everything. + (fhandler_base_overlapped::fixup_after_fork): Declare new function. + (fhandler_base_overlapped::fixup_after_exec): Ditto. + (fhandler_base_overlapped::dup): Ditto. + (fhandler_base_overlapped::close): Ditto. + * fhandler_fifo.cc (fhandler_fifo::dup): Call + fhandler_base_overlapped::dup rather than fhandler_base::dup. + * pipe.cc (fhandler_pipe::dup): Ditto. + (fhandler_pipe::init): Accommodate change in setup_overlapped arguments + for "opened_properly" case. + +2010-04-02 Christopher Faylor <me+cygwin@cgf.cx> + + * fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Properly initialize + overlapped part of this class. + +2010-04-02 Corinna Vinschen <corinna@vinschen.de> + + * fhandler_tty.cc (fhandler_tty_slave::close): Revert previous change. + +2010-04-02 Christopher Faylor <me+cygwin@cgf.cx> + + * select.h (select_pipe_info::add_watch_handle): Delete declaration. + * select.cc (select_pipe_info::add_watch_handle): Delete definition. + (fhandler_pipe::select_read): Delete call to add_watch_handle. + (fhandler_pipe::select_write): Ditto. + (fhandler_pipe::select_except): Ditto. + +2010-04-02 Christopher Faylor <me+cygwin@cgf.cx> + + * dtable.cc (dtable::init_std_file_from_handle): Avoid adding fh to + fdtab until we know that it is good. + * fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Handle + error conditions more consistently. Avoid handle leakage on error. + +2010-04-02 Corinna Vinschen <corinna@vinschen.de> + + * fhandler_tty.cc (fhandler_tty_slave::close): Avoid potential crash + if former open call has been unsuccessful. + +2010-04-01 Corinna Vinschen <corinna@vinschen.de> + + * nlsfuncs.cc: Fix indentation. + +2010-04-01 Corinna Vinschen <corinna@vinschen.de> + + * nlsfuncs.cc (rebase_locale_buf): New helper function to rebase + function pointers in locale structures. Explain why this is necessary. + (__set_lc_time_from_win): Use rebase_locale_buf after realloc. + (__set_lc_numeric_from_win): Ditto. + (__set_lc_monetary_from_win): Ditto. + +2010-03-31 Christopher Faylor <me+cygwin@cgf.cx> + + * sigproc.cc (wait_sig): Make sure that strace is activated on + __SIGSTRACE by calling new strace::activate function. + * strace.cc (strace::activate): Rename from strace::strace. + * strace.h (strace::activate): Define new function. + (strace::strace): Call activate. + +2010-03-31 Christopher Faylor <me+cygwin@cgf.cx> + + * fhandler.h (fhandler_base_overlapped): Temporarily (?) make + select_pipe_info a friend until the fhandler_tty intertangling can be + worked out. + * select.cc (select_pipe_info::add_watch_handle): Don't inspect the + overlapped event if we're not waiting for I/O. + (fhandler_tty_common::select_*): Change to standard function. Don't do + kludgy fhandler_pipe coercion. + +2010-03-31 Christopher Faylor <me+cygwin@cgf.cx> + + * fhandler.cc (fhandler_base::dup): Call setup_overlapped + unconditionally. + (fhandler_base::fork_fixup): Ditto. + (fhandler_base::fixup_after_fork): Ditto. + (fhandler_base::fixup_after_exec): Ditto. + (fhandler_base_overlapped::setup_overlapped): Move to this class from + fhandler_base. + (handler_base_overlapped::destroy_overlapped): Ditto. + (fhandler_base_overlapped::wait_overlapped): Ditto. Track when we + expect pending I/O. + (fhandler_base_overlapped::read_overlapped): Move to this class from + fhandler_base. Return error if ongoing I/O. + (fhandler_base_overlapped::write_overlapped): Ditto. + (fhandler_base_overlapped::has_ongoing_io): Semi-reinstate previous + function. + * fhandler.h (fhandler_base::wait_overlapped): Move to + fhandler_base_overlapped class. + (fhandler_base::write_overlapped): Ditto. + (fhandler_base::get_overlapped): Ditto. + (fhandler_base::get_overlapped_buffer): Ditto. + (fhandler_base_overlapped): New class. + (fhandler_pipe): Inherit from fhandler_base_overlapped. Remove + overlapped stuff as a result. + (fhandler_fifo): Ditto. + * pipe.cc (fhandler_pipe::fhandler_pipe): Initialize fhandler_base_overlapped. + (pipe): Put a descriptive name in the fhandler. + 2010-03-30 Corinna Vinschen <corinna@vinschen.de> * fhandler_socket.cc (fhandler_socket::wait_for_events): Remove call to @@ -5,11 +129,12 @@ 2010-03-30 Thomas Wolff <towo@towo.net> - * fhandler.h (class dev_console): Drop vt100_graphics_mode_active. - Add flags vt100_graphics_mode_G0, vt100_graphics_mode_G1 and - iso_2022_G1. + * fhandler.h (class dev_console): Drop vt100_graphics_mode_active. Add + flags vt100_graphics_mode_G0, vt100_graphics_mode_G1 and iso_2022_G1. * fhandler_console.cc: Throughout, tune VT100 graphics mode switching to follow ISO 2022 strictly. + (fhandler_console::write) Reset VT100 graphic mode flags on terminal + full reset (ESC c). 2010-03-30 Corinna Vinschen <corinna@vinschen.de> diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index f0738adc2..2076ac998 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -350,9 +350,6 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle) else fh = build_fh_name (name); - if (fh) - cygheap->fdtab[fd] = fh; - if (name[0]) { bin = fh->pc_binmode (); @@ -389,11 +386,12 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle) This needs further investigation but the workaround not to close the handles will have a marginal hit of three extra handles per process at most. */ - if (fh->init (dev == FH_CONSOLE && wincap.has_console_handle_problem () + if (!fh->init (dev == FH_CONSOLE && wincap.has_console_handle_problem () ? INVALID_HANDLE_VALUE : handle, access, bin)) - set_std_handle (fd); - else api_fatal ("couldn't initialize fd %d for %s", fd, fh->get_name ()); + + cygheap->fdtab[fd] = fh; + set_std_handle (fd); paranoid_printf ("fd %d, handle %p", fd, handle); } } diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 0e0981fdc..714c46ad0 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -1037,10 +1037,17 @@ fhandler_base::close () __seterrno (); } - destroy_overlapped (); return res; } + +int +fhandler_base_overlapped::close () +{ + destroy_overlapped (); + return fhandler_base::close (); +} + int fhandler_base::ioctl (unsigned int cmd, void *buf) { @@ -1162,11 +1169,17 @@ fhandler_base::dup (fhandler_base *child) VerifyHandle (nh); child->set_io_handle (nh); } - if (get_overlapped ()) - child->setup_overlapped (); return 0; } +int +fhandler_base_overlapped::dup (fhandler_base *child) +{ + int res = fhandler_base::dup (child) || + ((fhandler_base_overlapped *) child)->setup_overlapped (); + return res; +} + int fhandler_base::fcntl (int cmd, void *arg) { int res; @@ -1335,8 +1348,6 @@ fhandler_base::fork_fixup (HANDLE parent, HANDLE &h, const char *name) VerifyHandle (h); res = true; } - if (get_overlapped ()) - setup_overlapped (); return res; } @@ -1355,22 +1366,31 @@ fhandler_base::fixup_after_fork (HANDLE parent) debug_printf ("inheriting '%s' from parent", get_name ()); if (!nohandle ()) fork_fixup (parent, io_handle, "io_handle"); - if (get_overlapped ()) - setup_overlapped (); /* POSIX locks are not inherited across fork. */ if (unique_id) del_my_locks (after_fork); } void +fhandler_base_overlapped::fixup_after_fork (HANDLE parent) +{ + setup_overlapped (); + fhandler_base::fixup_after_fork (parent); +} + +void fhandler_base::fixup_after_exec () { debug_printf ("here for '%s'", get_name ()); - if (get_overlapped ()) - setup_overlapped (); if (unique_id && close_on_exec ()) del_my_locks (after_exec); } +void +fhandler_base_overlapped::fixup_after_exec () +{ + setup_overlapped (); + fhandler_base::fixup_after_exec (); +} bool fhandler_base::is_nonblocking () @@ -1644,27 +1664,18 @@ fhandler_base::fpathconf (int v) /* Overlapped I/O */ -bool -fhandler_base::setup_overlapped (bool doit) +int +fhandler_base_overlapped::setup_overlapped () { OVERLAPPED *ov = get_overlapped_buffer (); memset (ov, 0, sizeof (*ov)); - bool res; - if (doit) - { - set_overlapped (ov); - res = !!(ov->hEvent = CreateEvent (&sec_none_nih, true, true, NULL)); - } - else - { - set_overlapped (NULL); - res = false; - } - return res; + set_overlapped (ov); + ov->hEvent = CreateEvent (&sec_none_nih, true, true, NULL); + return ov->hEvent ? 0 : -1; } void -fhandler_base::destroy_overlapped () +fhandler_base_overlapped::destroy_overlapped () { OVERLAPPED *ov = get_overlapped (); if (ov && ov->hEvent) @@ -1672,10 +1683,26 @@ fhandler_base::destroy_overlapped () CloseHandle (ov->hEvent); ov->hEvent = NULL; } + io_pending = false; + get_overlapped () = NULL; +} + +bool +fhandler_base_overlapped::has_ongoing_io () +{ + if (!io_pending) + return false; + if (WaitForSingleObject (get_overlapped ()->hEvent, 0) != WAIT_OBJECT_0) + { + set_errno (EAGAIN); + return true; + } + io_pending = false; + return false; } int -fhandler_base::wait_overlapped (bool inres, bool writing, DWORD *bytes, DWORD len) +fhandler_base_overlapped::wait_overlapped (bool inres, bool writing, DWORD *bytes, DWORD len) { if (!get_overlapped ()) return inres; @@ -1687,6 +1714,7 @@ fhandler_base::wait_overlapped (bool inres, bool writing, DWORD *bytes, DWORD le { if (inres || err == ERROR_IO_PENDING) { + io_pending = err == ERROR_IO_PENDING; if (writing && !inres) *bytes = len; /* This really isn't true but it seems like this is a corner-case for linux's @@ -1758,32 +1786,38 @@ fhandler_base::wait_overlapped (bool inres, bool writing, DWORD *bytes, DWORD le } void __stdcall -fhandler_base::read_overlapped (void *ptr, size_t& len) +fhandler_base_overlapped::read_overlapped (void *ptr, size_t& len) { DWORD nbytes; - while (1) - { - bool res = ReadFile (get_handle (), ptr, len, &nbytes, - get_overlapped ()); - int wres = wait_overlapped (res, false, &nbytes); - if (wres || !_my_tls.call_signal_handler ()) - break; - } + if (has_ongoing_io ()) + nbytes = (DWORD) -1; + else + while (1) + { + bool res = ReadFile (get_handle (), ptr, len, &nbytes, + get_overlapped ()); + int wres = wait_overlapped (res, false, &nbytes); + if (wres || !_my_tls.call_signal_handler ()) + break; + } len = (size_t) nbytes; } ssize_t __stdcall -fhandler_base::write_overlapped (const void *ptr, size_t len) +fhandler_base_overlapped::write_overlapped (const void *ptr, size_t len) { DWORD nbytes; - while (1) - { - bool res = WriteFile (get_output_handle (), ptr, len, &nbytes, - get_overlapped ()); - int wres = wait_overlapped (res, true, &nbytes, (size_t) len); - if (wres || !_my_tls.call_signal_handler ()) - break; - } + if (has_ongoing_io ()) + nbytes = (DWORD) -1; + else + while (1) + { + bool res = WriteFile (get_output_handle (), ptr, len, &nbytes, + get_overlapped ()); + int wres = wait_overlapped (res, true, &nbytes, (size_t) len); + if (wres || !_my_tls.call_signal_handler ()) + break; + } debug_printf ("returning %u", nbytes); return nbytes; } diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index 3d1b46bf4..26a7585d7 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -150,9 +150,6 @@ class fhandler_base void del_my_locks (del_lock_called_from); HANDLE read_state; - int wait_overlapped (bool, bool, DWORD *, DWORD = 0) __attribute__ ((regparm (3))); - bool setup_overlapped (bool doit = true) __attribute__ ((regparm (2))); - void destroy_overlapped () __attribute__ ((regparm (1))); public: class fhandler_base *archetype; @@ -310,9 +307,7 @@ class fhandler_base virtual int fcntl (int cmd, void *); virtual char const *ttyname () { return get_name (); } virtual void __stdcall read (void *ptr, size_t& len) __attribute__ ((regparm (3))); - virtual void __stdcall read_overlapped (void *ptr, size_t& len) __attribute__ ((regparm (3))); virtual ssize_t __stdcall write (const void *ptr, size_t len); - virtual ssize_t __stdcall write_overlapped (const void *ptr, size_t len); virtual ssize_t __stdcall readv (const struct iovec *, int iovcnt, ssize_t tot = -1); virtual ssize_t __stdcall writev (const struct iovec *, int iovcnt, ssize_t tot = -1); virtual ssize_t __stdcall pread (void *, size_t, _off64_t) __attribute__ ((regparm (3))); @@ -354,9 +349,6 @@ class fhandler_base virtual void __stdcall raw_read (void *ptr, size_t& ulen); virtual ssize_t __stdcall raw_write (const void *ptr, size_t ulen); - virtual OVERLAPPED *get_overlapped () {return NULL;} - virtual OVERLAPPED *get_overlapped_buffer () {return NULL;} - virtual void set_overlapped (OVERLAPPED *) {} /* Virtual accessor functions to hide the fact that some fd's have two handles. */ @@ -394,6 +386,7 @@ class fhandler_base bool issymlink () {return pc.issymlink ();} bool device_access_denied (int) __attribute__ ((regparm (2))); int fhaccess (int flags, bool) __attribute__ ((regparm (3))); + virtual bool has_ongoing_io () {return false;} }; class fhandler_mailslot : public fhandler_base @@ -558,18 +551,41 @@ class fhandler_socket: public fhandler_base bool is_slow () {return true;} }; -class fhandler_pipe: public fhandler_base +class fhandler_base_overlapped: public fhandler_base { -private: - pid_t popen_pid; +protected: + bool io_pending; OVERLAPPED io_status; OVERLAPPED *overlapped; public: - fhandler_pipe (); - - OVERLAPPED *get_overlapped () {return overlapped;} + int wait_overlapped (bool, bool, DWORD *, DWORD = 0) __attribute__ ((regparm (3))); + int setup_overlapped () __attribute__ ((regparm (1))); + void destroy_overlapped () __attribute__ ((regparm (1))); + void __stdcall read_overlapped (void *ptr, size_t& len) __attribute__ ((regparm (3))); + ssize_t __stdcall write_overlapped (const void *ptr, size_t len); + OVERLAPPED *&get_overlapped () {return overlapped;} OVERLAPPED *get_overlapped_buffer () {return &io_status;} void set_overlapped (OVERLAPPED *ov) {overlapped = ov;} + fhandler_base_overlapped (): io_pending (false), overlapped (NULL) + { + memset (&io_status, 0, sizeof io_status); + } + bool has_ongoing_io (); + + void fixup_after_fork (HANDLE); + void fixup_after_exec (); + + int close (); + int dup (fhandler_base *child); +}; + +class fhandler_pipe: public fhandler_base_overlapped +{ +private: + pid_t popen_pid; +public: + fhandler_pipe (); + bool ispipe() const { return true; } @@ -595,7 +611,7 @@ public: friend class fhandler_fifo; }; -class fhandler_fifo: public fhandler_base +class fhandler_fifo: public fhandler_base_overlapped { enum fifo_state { @@ -611,7 +627,6 @@ class fhandler_fifo: public fhandler_base fifo_state wait_state; HANDLE dummy_client; HANDLE open_nonserver (const char *, unsigned, LPSECURITY_ATTRIBUTES); - OVERLAPPED io_status; bool wait (bool) __attribute__ ((regparm (1))); char *fifo_name (char *) __attribute__ ((regparm (2))); public: @@ -624,8 +639,6 @@ public: bool isfifo () const { return true; } void set_close_on_exec (bool val); int __stdcall fstatvfs (struct statvfs *buf) __attribute__ ((regparm (2))); - OVERLAPPED *get_overlapped () {return &io_status;} - OVERLAPPED *get_overlapped_buffer () {return &io_status;} select_record *select_read (select_stuff *); select_record *select_write (select_stuff *); select_record *select_except (select_stuff *); @@ -906,7 +919,9 @@ class dev_console unsigned rarg; bool saw_question_mark; bool saw_greater_than_sign; - bool vt100_graphics_mode_active; + bool vt100_graphics_mode_G0; + bool vt100_graphics_mode_G1; + bool iso_2022_G1; bool alternate_charset_active; bool metabit; diff --git a/winsup/cygwin/fhandler_fifo.cc b/winsup/cygwin/fhandler_fifo.cc index b4a78d422..92394dabf 100644 --- a/winsup/cygwin/fhandler_fifo.cc +++ b/winsup/cygwin/fhandler_fifo.cc @@ -22,9 +22,8 @@ #include "shared_info.h" fhandler_fifo::fhandler_fifo (): - wait_state (fifo_unknown), dummy_client (NULL) + fhandler_base_overlapped (), wait_state (fifo_unknown), dummy_client (NULL) { - get_overlapped ()->hEvent = NULL; need_fork_fixup (true); } @@ -305,7 +304,7 @@ fhandler_fifo::close () int fhandler_fifo::dup (fhandler_base *child) { - int res = fhandler_base::dup (child); + int res = fhandler_base_overlapped::dup (child); fhandler_fifo *fifo_child = (fhandler_fifo *) child; if (res == 0 && dummy_client) { diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 4e4dc5338..7e8254c3c 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -450,6 +450,20 @@ fhandler_tty_slave::fhandler_tty_slave () int fhandler_tty_slave::open (int flags, mode_t) { + HANDLE tty_owner, from_master_local, to_master_local; + HANDLE *handles[] = + { + &from_master_local, &input_available_event, &input_mutex, &inuse, + &ioctl_done_event, &ioctl_request_event, &output_done_event, + &output_mutex, &to_master_local, &tty_owner, + NULL + }; + + const char *errmsg = NULL; + + for (HANDLE **h = handles; *h; h++) + **h = NULL; + if (get_device () == FH_TTY) dev().tty_to_real_device (); fhandler_tty_slave *arch = (fhandler_tty_slave *) cygheap->fdtab.find_archetype (pc.dev); @@ -480,22 +494,19 @@ fhandler_tty_slave::open (int flags, mode_t) if (!(output_mutex = get_ttyp ()->open_output_mutex ())) { - termios_printf ("open output mutex failed, %E"); - __seterrno (); - return 0; + errmsg = "open output mutex failed, %E"; + goto err; } if (!(input_mutex = get_ttyp ()->open_input_mutex ())) { - termios_printf ("open input mutex failed, %E"); - __seterrno (); - return 0; + errmsg = "open input mutex failed, %E"; + goto err; } shared_name (buf, INPUT_AVAILABLE_EVENT, get_unit ()); if (!(input_available_event = OpenEvent (EVENT_ALL_ACCESS, TRUE, buf))) { - termios_printf ("open input event failed, %E"); - __seterrno (); - return 0; + errmsg = "open input event failed, %E"; + goto err; } /* The ioctl events may or may not exist. See output_done_event, @@ -515,30 +526,26 @@ fhandler_tty_slave::open (int flags, mode_t) if (!get_ttyp ()->from_master || !get_ttyp ()->to_master) { - termios_printf ("tty handles have been closed"); + errmsg = "tty handles have been closed"; set_errno (EACCES); - return 0; + goto err_no_errno; } - HANDLE from_master_local; - HANDLE to_master_local; - from_master_local = to_master_local = NULL; - if (cygserver_running == CYGSERVER_UNAVAIL || !cygserver_attach_tty (&from_master_local, &to_master_local)) { if (get_ttyp ()->master_pid < 0) { + errmsg = "*** master is closed"; set_errno (EAGAIN); - termios_printf ("*** master is closed"); - return 0; + goto err_no_errno; } pinfo p (get_ttyp ()->master_pid); if (!p) { + errmsg = "*** couldn't find tty master"; set_errno (EAGAIN); - termios_printf ("*** couldn't find tty master"); - return 0; + goto err_no_errno; } termios_printf ("cannot dup handles via server. using old method."); HANDLE tty_owner = OpenProcess (PROCESS_DUP_HANDLE, FALSE, @@ -548,7 +555,7 @@ fhandler_tty_slave::open (int flags, mode_t) termios_printf ("can't open tty (%d) handle process %d", get_unit (), get_ttyp ()->master_pid); __seterrno (); - return 0; + goto err_no_msg; } if (!DuplicateHandle (tty_owner, get_ttyp ()->from_master, @@ -558,7 +565,7 @@ fhandler_tty_slave::open (int flags, mode_t) termios_printf ("can't duplicate input from %u/%p, %E", get_ttyp ()->master_pid, get_ttyp ()->from_master); __seterrno (); - return 0; + goto err_no_msg; } VerifyHandle (from_master_local); @@ -566,9 +573,8 @@ fhandler_tty_slave::open (int flags, mode_t) GetCurrentProcess (), &to_master_local, 0, TRUE, DUPLICATE_SAME_ACCESS)) { - termios_printf ("can't duplicate output, %E"); - __seterrno (); - return 0; + errmsg = "can't duplicate output, %E"; + goto err; } VerifyHandle (to_master_local); CloseHandle (tty_owner); @@ -601,6 +607,16 @@ out: myself->set_ctty (get_ttyp (), flags, arch); return 1; + +err: + __seterrno (); +err_no_errno: + termios_printf (errmsg); +err_no_msg: + for (HANDLE **h = handles; *h; h++) + if (**h && **h != INVALID_HANDLE_VALUE) + CloseHandle (**h); + return 0; } int diff --git a/winsup/cygwin/include/sys/strace.h b/winsup/cygwin/include/sys/strace.h index 683cde0a6..376cf7ac6 100644 --- a/winsup/cygwin/include/sys/strace.h +++ b/winsup/cygwin/include/sys/strace.h @@ -39,7 +39,8 @@ class strace void write (unsigned category, const char *buf, int count); unsigned char _active; public: - strace (); + void activate (); + strace () {activate ();} int microseconds (); int version; int lmicrosec; diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 3f2279a18..498b36008 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -325,6 +325,21 @@ locale_cmp (const void *a, const void *b) return strcmp (*la, *lb); } +/* Helper function to workaround reallocs which move blocks even if they shrink. + Cygwin's realloc is not doing this, but tcsh's, for instance. All lc_foo + structures consist entirely of pointers so they are practically pointer + arrays. What we do here is just treat the lc_foo pointers as char ** and + rebase all char * pointers within, up to the given size of the structure. */ +static void +rebase_locale_buf (const void *ptrv, const char *newbase, const char *oldbase, + const void *ptrvend) +{ + const char **ptrs = (const char **) ptrv; + const char **ptrsend = (const char **) ptrvend; + while (ptrs < ptrsend) + *ptrs++ += newbase - oldbase; +} + static char * __getlocaleinfo (LCID lcid, LCTYPE type, char **ptr, size_t size, wctomb_p f_wctomb, const char *charset) @@ -625,6 +640,9 @@ __set_lc_time_from_win (const char *name, struct lc_time_T *_time_locale, era = NULL; else { + if (tmp != new_lc_time_buf) + rebase_locale_buf (_time_locale, tmp, new_lc_time_buf, + _time_locale + 1); lc_time_ptr = tmp + (lc_time_ptr - new_lc_time_buf); new_lc_time_buf = tmp; lc_time_end = new_lc_time_buf + len; @@ -674,6 +692,9 @@ __set_lc_time_from_win (const char *name, struct lc_time_T *_time_locale, free (new_lc_time_buf); return -1; } + if (tmp != new_lc_time_buf) + rebase_locale_buf (_time_locale, tmp, new_lc_time_buf, + _time_locale + 1); if (*lc_time_buf) free (*lc_time_buf); *lc_time_buf = tmp; @@ -717,6 +738,9 @@ __set_lc_numeric_from_win (const char *name, free (new_lc_numeric_buf); return -1; } + if (tmp != new_lc_numeric_buf) + rebase_locale_buf (_numeric_locale, tmp, new_lc_numeric_buf, + _numeric_locale + 1); if (*lc_numeric_buf) free (*lc_numeric_buf); *lc_numeric_buf = tmp; @@ -816,6 +840,9 @@ __set_lc_monetary_from_win (const char *name, free (new_lc_monetary_buf); return -1; } + if (tmp != new_lc_monetary_buf) + rebase_locale_buf (_monetary_locale, tmp, new_lc_monetary_buf, + _monetary_locale + 1); if (*lc_monetary_buf) free (*lc_monetary_buf); *lc_monetary_buf = tmp; diff --git a/winsup/cygwin/pipe.cc b/winsup/cygwin/pipe.cc index 5194856bc..29bd73205 100644 --- a/winsup/cygwin/pipe.cc +++ b/winsup/cygwin/pipe.cc @@ -24,7 +24,7 @@ details. */ #include "shared_info.h" fhandler_pipe::fhandler_pipe () - : fhandler_base (), popen_pid (0), overlapped (NULL) + : fhandler_base_overlapped (), popen_pid (0) { need_fork_fixup (true); uninterruptible_io (true); @@ -54,7 +54,10 @@ fhandler_pipe::init (HANDLE f, DWORD a, mode_t mode) a &= ~FILE_CREATE_PIPE_INSTANCE; fhandler_base::init (f, a, mode); close_on_exec (mode & O_CLOEXEC); - setup_overlapped (opened_properly); + if (opened_properly) + setup_overlapped (); + else + destroy_overlapped (); return 1; } @@ -185,7 +188,7 @@ fhandler_pipe::dup (fhandler_base *child) ftp->set_popen_pid (0); int res; - if (get_handle () && fhandler_base::dup (child)) + if (get_handle () && fhandler_base_overlapped::dup (child)) res = -1; else res = 0; @@ -378,6 +381,11 @@ pipe (int filedes[2]) { cygheap_fdnew fdin; cygheap_fdnew fdout (fdin, false); + char buf[sizeof ("/dev/fd/pipe:[2147483647]")]; + __small_sprintf (buf, "/dev/fd/pipe:[%d]", (int) fdin); + fhs[0]->pc.set_normalized_path (buf); + __small_sprintf (buf, "pipe:[%d]", (int) fdout); + fhs[1]->pc.set_normalized_path (buf); fdin = fhs[0]; fdout = fhs[1]; filedes[0] = fdin; diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index e1906cb14..41636d179 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -1,7 +1,7 @@ /* select.cc Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009 Red Hat, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Red Hat, Inc. This file is part of Cygwin. @@ -429,12 +429,17 @@ no_verify (select_record *, fd_set *, fd_set *, fd_set *) static int peek_pipe (select_record *s, bool from_select) { + HANDLE h; + set_handle_or_return_if_not_open (h, s); + int n = 0; int gotone = 0; - fhandler_base *fh = s->fh; + fhandler_base *fh = (fhandler_base *) s->fh; - HANDLE h; - set_handle_or_return_if_not_open (h, s); + /* Don't check if this is a non-blocking fd and I/O is still active. + That could give a false-positive with peek_pipe and friends. */ + if (fh->has_ongoing_io ()) + return 0; /* Don't perform complicated tests if we don't need to. */ if (!s->read_selected && !s->except_selected) @@ -577,72 +582,35 @@ out: static int start_thread_pipe (select_record *me, select_stuff *stuff); -select_pipe_info::select_pipe_info () -{ - n = 1; - w4[0] = CreateEvent (&sec_none_nih, true, false, NULL); -} - -select_pipe_info::~select_pipe_info () -{ - if (thread) - { - SetEvent (w4[0]); - stop_thread = true; - thread->detach (); - } - ForceCloseHandle (w4[0]); -} - -void -select_pipe_info::add_watch_handle (fhandler_pipe *fh) -{ - if (fh->get_overlapped () && fh->get_overlapped ()->hEvent) - w4[n++] = fh->get_overlapped ()->hEvent; -} - static DWORD WINAPI thread_pipe (void *arg) { select_pipe_info *pi = (select_pipe_info *) arg; - bool gotone = false; DWORD sleep_time = 0; + bool looping = true; - for (;;) + while (looping) { - select_record *s = pi->start; - if (pi->n > 1) - switch (WaitForMultipleObjects (pi->n, pi->w4, false, INFINITE)) - { - case WAIT_OBJECT_0: - goto out; - default: - break; - } - while ((s = s->next)) + for (select_record *s = pi->start; (s = s->next); ) if (s->startup == start_thread_pipe) { if (peek_pipe (s, true)) - gotone = true; + looping = false; if (pi->stop_thread) { select_printf ("stopping"); - goto out; + looping = false; + break; } } - /* Paranoid check */ - if (pi->stop_thread) - { - select_printf ("stopping from outer loop"); - break; - } - if (gotone) + if (!looping) break; Sleep (sleep_time >> 3); if (sleep_time < 80) ++sleep_time; + if (pi->stop_thread) + break; } -out: return 0; } @@ -667,9 +635,12 @@ start_thread_pipe (select_record *me, select_stuff *stuff) static void pipe_cleanup (select_record *, select_stuff *stuff) { - if (stuff->device_specific_pipe) + select_pipe_info *pi = (select_pipe_info *) stuff->device_specific_pipe; + if (pi && pi->thread) { - delete stuff->device_specific_pipe; + pi->stop_thread = true; + pi->thread->detach (); + delete pi; stuff->device_specific_pipe = NULL; } } @@ -691,7 +662,6 @@ fhandler_pipe::select_read (select_stuff *ss) if (!ss->device_specific_pipe && (ss->device_specific_pipe = new select_pipe_info) == NULL) return NULL; - ss->device_specific_pipe->add_watch_handle (this); select_record *s = ss->start.next; s->startup = start_thread_pipe; @@ -709,7 +679,6 @@ fhandler_pipe::select_write (select_stuff *ss) if (!ss->device_specific_pipe && (ss->device_specific_pipe = new select_pipe_info) == NULL) return NULL; - ss->device_specific_pipe->add_watch_handle (this); select_record *s = ss->start.next; s->startup = start_thread_pipe; s->peek = peek_pipe; @@ -726,7 +695,6 @@ fhandler_pipe::select_except (select_stuff *ss) if (!ss->device_specific_pipe && (ss->device_specific_pipe = new select_pipe_info) == NULL) return NULL; - ss->device_specific_pipe->add_watch_handle (this); select_record *s = ss->start.next; s->startup = start_thread_pipe; s->peek = peek_pipe; @@ -906,19 +874,50 @@ fhandler_console::select_except (select_stuff *ss) select_record * fhandler_tty_common::select_read (select_stuff *ss) { - return ((fhandler_pipe *) this)->fhandler_pipe::select_read (ss); + if (!ss->device_specific_pipe + && (ss->device_specific_pipe = new select_pipe_info) == NULL) + return NULL; + + select_record *s = ss->start.next; + s->startup = start_thread_pipe; + s->peek = peek_pipe; + s->verify = verify_ok; + s->cleanup = pipe_cleanup; + s->read_selected = true; + s->read_ready = false; + return s; } select_record * fhandler_tty_common::select_write (select_stuff *ss) { - return ((fhandler_pipe *) this)->fhandler_pipe::select_write (ss); + if (!ss->device_specific_pipe + && (ss->device_specific_pipe = new select_pipe_info) == NULL) + return NULL; + select_record *s = ss->start.next; + s->startup = start_thread_pipe; + s->peek = peek_pipe; + s->verify = verify_ok; + s->cleanup = pipe_cleanup; + s->write_selected = true; + s->write_ready = false; + return s; } select_record * fhandler_tty_common::select_except (select_stuff *ss) { - return ((fhandler_pipe *) this)->fhandler_pipe::select_except (ss); + if (!ss->device_specific_pipe + && (ss->device_specific_pipe = new select_pipe_info) == NULL) + return NULL; + select_record *s = ss->start.next; + s->startup = start_thread_pipe; + s->peek = peek_pipe; + s->verify = verify_ok; + s->cleanup = pipe_cleanup; + s->except_selected = true; + s->except_ready = false; + return s; } static int @@ -1098,25 +1097,23 @@ static DWORD WINAPI thread_serial (void *arg) { select_serial_info *si = (select_serial_info *) arg; - bool gotone = false; + bool looping = true; - for (;;) - { - select_record *s = si->start; - while ((s = s->next)) - if (s->startup == start_thread_serial) - { - if (peek_serial (s, true)) - gotone = true; - } - if (si->stop_thread) + while (looping) + for (select_record *s = si->start; (s = s->next); ) + if (s->startup != start_thread_serial) + continue; + else { - select_printf ("stopping"); - break; + if (peek_serial (s, true)) + looping = false; + if (si->stop_thread) + { + select_printf ("stopping"); + looping = false; + break; + } } - if (gotone) - break; - } select_printf ("exiting"); return 0; diff --git a/winsup/cygwin/select.h b/winsup/cygwin/select.h index 743222ebd..8734b1e04 100644 --- a/winsup/cygwin/select.h +++ b/winsup/cygwin/select.h @@ -1,7 +1,7 @@ /* select.h Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009 Red Hat, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Red Hat, Inc. This file is part of Cygwin. @@ -49,11 +49,6 @@ struct select_info struct select_pipe_info: public select_info { - DWORD n; - HANDLE w4[MAXIMUM_WAIT_OBJECTS]; - select_pipe_info (); - ~select_pipe_info (); - void add_watch_handle (fhandler_pipe *); }; struct select_socket_info: public select_info diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index cb70568fa..74e96ce30 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1224,6 +1224,7 @@ wait_sig (VOID *) talktome (&pack.si); break; case __SIGSTRACE: + strace.activate (); strace.hello (); break; case __SIGPENDING: diff --git a/winsup/cygwin/strace.cc b/winsup/cygwin/strace.cc index fb62e29dc..beba5b335 100644 --- a/winsup/cygwin/strace.cc +++ b/winsup/cygwin/strace.cc @@ -31,7 +31,8 @@ class strace NO_COPY strace; #ifndef NOSTRACE -strace::strace () +void +strace::activate () { if (!dynamically_loaded && !_active && being_debugged ()) { diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 96cf16dde..65bab2b10 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -913,7 +913,7 @@ readv (int fd, const struct iovec *const iov, const int iovcnt) fd, iov, iovcnt, wait ? "" : "non", sigcatchers); if (wait && (!cfd->is_slow () || cfd->uninterruptible_io ())) - debug_printf ("no need to call ready_for_read"); + /* no need to call ready_for_read */; else if (!cfd->ready_for_read (fd, wait)) { res = -1; diff --git a/winsup/doc/ChangeLog b/winsup/doc/ChangeLog index 10a0f2286..d8f31aafc 100644 --- a/winsup/doc/ChangeLog +++ b/winsup/doc/ChangeLog @@ -1,3 +1,14 @@ +2010-04-01 Charles Wilson <cygwin@cwilson.fastmail.fm> + + * setup-net.sgml: Remove more mentions of rxvt. + +2010-03-31 Christopher Faylor <me+cygwin@cgf.cx> + + * cygwinenv.sgml: Remove/deprecate mention of rxvt. + * effectively.sgml: Ditto. + * faq-using.xml: Ditto. + * setup-net.sgml: Ditto. + 2010-03-29 Corinna Vinschen <corinna@vinschen.de> * new-features.sgml (ov-new1.7.3): New section. diff --git a/winsup/doc/cygwinenv.sgml b/winsup/doc/cygwinenv.sgml index 23e4d64fc..ea1f0747f 100644 --- a/winsup/doc/cygwinenv.sgml +++ b/winsup/doc/cygwinenv.sgml @@ -97,7 +97,7 @@ Note that this has been changed such that ^D works as expected instead of ^Z, and is settable via <command>stty</command>. This option must be specified before starting a Cygwin shell and it cannot be changed in the shell. It should not be set when using -other terminals (i.e., rxvt or xterm). +other terminals (i.e., mintty or xterm). </para> </listitem> diff --git a/winsup/doc/effectively.sgml b/winsup/doc/effectively.sgml index 945414b6a..73d9d2847 100644 --- a/winsup/doc/effectively.sgml +++ b/winsup/doc/effectively.sgml @@ -87,10 +87,12 @@ Windows programs, use a DOS prompt, running only the occasional Cygwin command or script. Next would be to run <command>bash</command> within a default DOS box. To make Cygwin more Unix compatible in this case, set <envar>CYGWIN=tty</envar> (see <xref linkend="using-cygwinenv"></xref>). -Alternatively, the optional <systemitem>rxvt</systemitem> package provides -a native-Windows version of the popular X11 terminal emulator (it is not -necessary to set <envar>CYGWIN=tty</envar> with <command>rxvt</command>). -Using <command>rxvt.exe</command> provides the most Unix-like environment, +Alternatively, the optional <systemitem>mintty</systemitem> package +provides a terminal emulator similar to such X11 programs as +<command>xterm</command> (it is not necessary to set +<envar>CYGWIN=tty</envar> with <command>mintty</command> nor is it +necessary to be running <systemitem>/Cygwin/X</systemitem>). Using +<command>mintty.exe</command> provides the most Unix-like environment, but expect some compatibility problems with Windows programs. </para> diff --git a/winsup/doc/faq-using.xml b/winsup/doc/faq-using.xml index d8fbcf382..f013703b0 100644 --- a/winsup/doc/faq-using.xml +++ b/winsup/doc/faq-using.xml @@ -580,8 +580,8 @@ for more details. <question><para>How can I copy and paste into Cygwin console windows?</para></question> <answer> -<para>First, consider using rxvt or mintty instead of the standard console -window. In rxvt/mintty, selecting with the left-mouse also copies, +<para>First, consider using mintty instead of the standard console +window. In mintty, selecting with the left-mouse also copies, and middle-mouse pastes. It couldn't be easier! </para> <para>In Windows's console window, open the properties dialog. @@ -946,9 +946,9 @@ Emacs or XEmacs from Cygwin Setup. <question><para>Is there a better alternative to the standard console window?</para></question> <answer> -<para>Yes! Use rxvt or mintty instead. Both are optional packages in -Cygwin Setup. You can use rxvt with or without X11, while mintty is a -Cygwin application providing a native GUI. +<para>Yes! Use <command>mintty</command> instead. <command>mintty</command> is an optional packages in +Cygwin Setup. <command>mintty</command> is a Cygwin application providing a native GUI without +the need of X11. </para> </answer></qandaentry> diff --git a/winsup/doc/setup-net.sgml b/winsup/doc/setup-net.sgml index 55099ff09..6c224dc77 100644 --- a/winsup/doc/setup-net.sgml +++ b/winsup/doc/setup-net.sgml @@ -215,8 +215,9 @@ shows progress bars for the current task and total remaining disk space. <para> You may choose to install shortcuts on the Desktop and/or Start Menu to start a <literal>bash</literal> shell. If you prefer to use a different -shell or the native Windows version of <literal>rxvt</literal>, you can -use these shortcuts as a guide to creating your own. +shell or terminal emulator such as <literal>mintty</literal> or +<literal>xterm</literal>, you can use these shortcuts as a guide to +creating your own. </para> </sect2> |