Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcvs2svn <>2014-04-07 15:41:52 +0400
committercvs2svn <>2014-04-07 15:41:52 +0400
commit1c5568e1a4d8b2c8ae072bd66f78fbf611b1ebe2 (patch)
tree842647b5f8be4a8a7ac022fb473feffaec7b2d49 /winsup/cygwin/fhandler_console.cc
parentabbe1f5320881ec7da114a4e0b6d17045d6b5500 (diff)
This commit was manufactured by cvs2svn to create tag 'cygwin-cygwin-1_7_29-release
1_7_29-release'. Sprout from master 2014-02-06 20:38:35 UTC Corinna Vinschen <corinna@vinschen.de> ' * fhandler_disk_file.cc (fhandler_disk_file::fchown): Fix typo in' Cherrypick from master 2014-03-21 21:27:29 UTC Jeff Johnston <jjohnstn@redhat.com> '': newlib/ChangeLog newlib/configure newlib/libc/include/grp.h newlib/libc/include/machine/_default_types.h newlib/libc/include/pwd.h newlib/libc/include/stdlib.h newlib/libc/include/time.h newlib/libc/machine/nds32/Makefile.am newlib/libc/machine/nds32/Makefile.in newlib/libc/machine/nds32/configure newlib/libc/machine/nds32/configure.in newlib/libc/machine/nds32/setjmp.S newlib/libc/stdio/open_memstream.c newlib/libc/stdlib/gd_qnan.h newlib/libc/stdlib/ldtoa.c newlib/libc/stdlib/strtold.c newlib/libc/sys/arm/syscalls.c newlib/libm/common/s_nan.c newlib/libm/common/sf_nan.c newlib/libm/complex/complex.tex newlib/libm/math/math.tex winsup/ChangeLog winsup/Makefile.in winsup/utils/Makefile.in Cherrypick from master 2014-02-09 12:23:13 UTC Jon TURNEY <jon.turney@dronecode.org.uk> '2014-02-07 Jon TURNEY <jon.turney@dronecode.org.uk>': winsup/utils/utils.xml Cherrypick from cygwin-1_7_29-release-branchpoint 2014-04-07 11:41:51 UTC Corinna Vinschen <corinna@vinschen.de> 'release/1.7.29': winsup/cygserver/ChangeLog winsup/cygserver/bsd_helper.cc winsup/cygserver/bsd_mutex.cc winsup/cygserver/client.cc winsup/cygserver/cygserver.cc winsup/cygserver/process.cc winsup/cygserver/setpwd.cc winsup/cygserver/threaded_queue.cc winsup/cygserver/transport_pipes.cc winsup/cygwin/ChangeLog winsup/cygwin/DevNotes winsup/cygwin/cygheap.cc winsup/cygwin/cygheap_malloc.h winsup/cygwin/cygserver_ipc.h winsup/cygwin/cygwin.sc.in winsup/cygwin/dcrt0.cc winsup/cygwin/dir.cc winsup/cygwin/environ.cc winsup/cygwin/exception.h winsup/cygwin/exceptions.cc winsup/cygwin/external.cc winsup/cygwin/fhandler.h winsup/cygwin/fhandler_console.cc winsup/cygwin/fhandler_dsp.cc winsup/cygwin/flock.cc winsup/cygwin/gendef winsup/cygwin/grp.cc winsup/cygwin/include/cygwin/config.h winsup/cygwin/include/cygwin/socket.h winsup/cygwin/include/cygwin/version.h winsup/cygwin/include/sys/cygwin.h winsup/cygwin/libc/strptime.cc winsup/cygwin/localtime.cc winsup/cygwin/ntea.cc winsup/cygwin/pinfo.cc winsup/cygwin/release/1.7.29 winsup/cygwin/sec_auth.cc winsup/cygwin/setlsapwd.cc winsup/cygwin/shm.cc winsup/cygwin/sigproc.cc winsup/cygwin/sigproc.h winsup/cygwin/tlsoffsets.h winsup/cygwin/tlsoffsets64.h winsup/doc/ChangeLog winsup/doc/new-features.xml winsup/utils/ChangeLog winsup/utils/minidumper.cc Cherrypick from cygnus 1999-05-03 07:29:06 UTC Richard Henderson <rth@redhat.com> '19990502 sourceware import': README config/mt-d30v 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/coff/sym.h makefile.vms Delete: djunpack.bat libgloss/ChangeLog libgloss/Makefile.in libgloss/README libgloss/aarch64/Makefile.in libgloss/aarch64/_exit.c libgloss/aarch64/_kill.c libgloss/aarch64/aclocal.m4 libgloss/aarch64/configure libgloss/aarch64/configure.in libgloss/aarch64/cpu-init/Makefile.in libgloss/aarch64/cpu-init/aclocal.m4 libgloss/aarch64/cpu-init/configure libgloss/aarch64/cpu-init/configure.in libgloss/aarch64/cpu-init/rdimon-aem-el3.S libgloss/aarch64/crt0.S libgloss/aarch64/elf-aem-validation.specs libgloss/aarch64/elf-aem-ve.specs libgloss/aarch64/elf-rdimon.specs libgloss/aarch64/ftruncate.c libgloss/aarch64/libcfunc.c libgloss/aarch64/svc.h libgloss/aarch64/syscalls.c libgloss/aarch64/truncate.c libgloss/acinclude.m4 libgloss/aclocal.m4 libgloss/arm/Makefile.in libgloss/arm/_exit.c libgloss/arm/_kill.c libgloss/arm/aclocal.m4 libgloss/arm/arm.h 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/cpu-init/Makefile.in libgloss/arm/cpu-init/rdimon-aem.S libgloss/arm/crt0.S libgloss/arm/elf-aprofile-validation.specs libgloss/arm/elf-aprofile-ve.specs 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/ftruncate.c 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/arm/truncate.c libgloss/bfin/Makefile.in libgloss/bfin/_exit.c libgloss/bfin/aclocal.m4 libgloss/bfin/basiccrt.S libgloss/bfin/bf504.ld libgloss/bfin/bf506.ld 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/bf592.ld libgloss/bfin/bf606.ld libgloss/bfin/bf606c0.ld libgloss/bfin/bf606c1.ld libgloss/bfin/bf606m.ld libgloss/bfin/bf607.ld libgloss/bfin/bf607c0.ld libgloss/bfin/bf607c1.ld libgloss/bfin/bf607m.ld libgloss/bfin/bf608.ld libgloss/bfin/bf608c0.ld libgloss/bfin/bf608c1.ld libgloss/bfin/bf608m.ld libgloss/bfin/bf609.ld libgloss/bfin/bf609c0.ld libgloss/bfin/bf609c1.ld libgloss/bfin/bf609m.ld libgloss/bfin/bfin-common-mc.ld libgloss/bfin/bfin-common-mc0.ld libgloss/bfin/bfin-common-sc.ld libgloss/bfin/clear_cache_range.c libgloss/bfin/configure libgloss/bfin/configure.in libgloss/bfin/crt0.S libgloss/bfin/include/blackfin.h libgloss/bfin/include/builtins.h libgloss/bfin/include/ccblkfn.h libgloss/bfin/include/cdefBF504.h libgloss/bfin/include/cdefBF504F.h libgloss/bfin/include/cdefBF506F.h libgloss/bfin/include/cdefBF50x_base.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/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/cdefBF592-A.h libgloss/bfin/include/cdefBF59x_base.h libgloss/bfin/include/cdefBF606.h libgloss/bfin/include/cdefBF607.h libgloss/bfin/include/cdefBF608.h libgloss/bfin/include/cdefBF609.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/defBF504.h libgloss/bfin/include/defBF504F.h libgloss/bfin/include/defBF506F.h libgloss/bfin/include/defBF50x_base.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/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/defBF592-A.h libgloss/bfin/include/defBF59x_base.h libgloss/bfin/include/defBF606.h libgloss/bfin/include/defBF607.h libgloss/bfin/include/defBF608.h libgloss/bfin/include/defBF609.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/config/xc16x.mt libgloss/configure libgloss/configure.in libgloss/cr16/Makefile.in libgloss/cr16/_exit.c libgloss/cr16/_getenv.c libgloss/cr16/_rename.c libgloss/cr16/aclocal.m4 libgloss/cr16/close.c libgloss/cr16/configure libgloss/cr16/configure.in libgloss/cr16/crt1.S libgloss/cr16/crti.S libgloss/cr16/crtn.S libgloss/cr16/dvz_hndl.c libgloss/cr16/flg_hndl.c libgloss/cr16/fstat.c libgloss/cr16/getpid.c libgloss/cr16/iad_hndl.c libgloss/cr16/intable.c libgloss/cr16/isatty.c libgloss/cr16/kill.c libgloss/cr16/lseek.c libgloss/cr16/open.c libgloss/cr16/putnum.c libgloss/cr16/read.c libgloss/cr16/sbrk.c libgloss/cr16/sim.ld libgloss/cr16/stat.c libgloss/cr16/svc_hndl.c libgloss/cr16/sys/syscall.h libgloss/cr16/time.c libgloss/cr16/und_hndl.c libgloss/cr16/unlink.c libgloss/cr16/write.c 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/epiphany/Makefile.in libgloss/epiphany/_exit.S libgloss/epiphany/_exit.c libgloss/epiphany/_isatty.c libgloss/epiphany/access.c libgloss/epiphany/aclocal.m4 libgloss/epiphany/close.c libgloss/epiphany/config.h.in libgloss/epiphany/configure libgloss/epiphany/configure.in libgloss/epiphany/crt0.S libgloss/epiphany/environ.c libgloss/epiphany/epiphany-config.h libgloss/epiphany/epiphany-ivthandlers.S libgloss/epiphany/epiphany-syscalls.c libgloss/epiphany/epiphany-syscalls.h libgloss/epiphany/execve.c libgloss/epiphany/fork.c libgloss/epiphany/fstat.c libgloss/epiphany/getpid.c libgloss/epiphany/gettimeofday.c libgloss/epiphany/kill.c libgloss/epiphany/link.c libgloss/epiphany/lseek.c libgloss/epiphany/open.c libgloss/epiphany/read.c libgloss/epiphany/sbrk.c libgloss/epiphany/stat.c libgloss/epiphany/times.c libgloss/epiphany/unlink.c libgloss/epiphany/wait.c libgloss/epiphany/write.c 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/nosys.specs 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/elf-gloss-linux.ld libgloss/microblaze/elf-gloss-linux.specs libgloss/microblaze/linux-crt0.S libgloss/microblaze/linux-inbyte.c libgloss/microblaze/linux-outbyte.c libgloss/microblaze/linux-syscalls-wrap.c libgloss/microblaze/linux-syscalls.S libgloss/microblaze/linux-syscalls.h 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_printf.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/mti32.ld libgloss/mips/mti64.ld libgloss/mips/mti64_64.ld libgloss/mips/mti64_n32.ld libgloss/mips/nullmon.c libgloss/mips/nullmon.ld libgloss/mips/pmon.S libgloss/mips/pmon.ld libgloss/mips/regs.S libgloss/mips/sde32.ld libgloss/mips/sde64.ld 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/msp430/Makefile.in libgloss/msp430/cio.c libgloss/msp430/cio.h libgloss/msp430/configure libgloss/msp430/configure.in libgloss/msp430/crt0.S libgloss/msp430/crt_bss.S libgloss/msp430/crt_movedata.S libgloss/msp430/crtn.S libgloss/msp430/gcrt0.S libgloss/msp430/intr_vectors.ld libgloss/msp430/memmodel.h libgloss/msp430/msp430-sim.ld libgloss/msp430/msp430.ld libgloss/msp430/msp430F5438A-l.ld libgloss/msp430/msp430F5438A-s.ld libgloss/msp430/msp430xl-sim.ld libgloss/msp430/nosyscalls.S libgloss/msp430/sbrk.c libgloss/msp430/syscalls.S libgloss/msp430/write.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/nds32/Makefile.in libgloss/nds32/aclocal.m4 libgloss/nds32/configure libgloss/nds32/configure.in libgloss/nds32/crt0.S libgloss/nds32/crt1.S libgloss/nds32/syscall_argv.S libgloss/nds32/syscall_argvlen.S libgloss/nds32/syscall_chdir.S libgloss/nds32/syscall_chmod.S libgloss/nds32/syscall_close.S libgloss/nds32/syscall_exit.S libgloss/nds32/syscall_extra.h libgloss/nds32/syscall_fstat.S libgloss/nds32/syscall_getpid.S libgloss/nds32/syscall_gettimeofday.S libgloss/nds32/syscall_isatty.S libgloss/nds32/syscall_kill.S libgloss/nds32/syscall_link.S libgloss/nds32/syscall_lseek.S libgloss/nds32/syscall_open.S libgloss/nds32/syscall_read.S libgloss/nds32/syscall_rename.S libgloss/nds32/syscall_sbrk.S libgloss/nds32/syscall_stat.S libgloss/nds32/syscall_system.S libgloss/nds32/syscall_time.S libgloss/nds32/syscall_times.S libgloss/nds32/syscall_unlink.S libgloss/nds32/syscall_utime.S libgloss/nds32/syscall_write.S 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/rl78/Makefile.in libgloss/rl78/abort.S libgloss/rl78/argv.S libgloss/rl78/argvlen.S libgloss/rl78/chdir.S libgloss/rl78/chmod.S libgloss/rl78/close.S libgloss/rl78/configure libgloss/rl78/configure.in libgloss/rl78/crt0.S libgloss/rl78/crtn.S libgloss/rl78/exit.S libgloss/rl78/fstat.S libgloss/rl78/gcrt0.S libgloss/rl78/getpid.S libgloss/rl78/gettimeofday.S libgloss/rl78/isatty.S libgloss/rl78/kill.S libgloss/rl78/link.S libgloss/rl78/lseek.S libgloss/rl78/mcount.c libgloss/rl78/open.S libgloss/rl78/read.S libgloss/rl78/rl78-sim.ld libgloss/rl78/rl78-sys.h libgloss/rl78/rl78.ld libgloss/rl78/sbrk.c libgloss/rl78/stat.S libgloss/rl78/time.S libgloss/rl78/times.S libgloss/rl78/unlink.S libgloss/rl78/utime.S libgloss/rl78/write.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/sim-times.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/sparc_leon/Makefile.in libgloss/sparc_leon/_exit.c libgloss/sparc_leon/aclocal.m4 libgloss/sparc_leon/amba.c libgloss/sparc_leon/amba_dbg.c libgloss/sparc_leon/amba_driver.c libgloss/sparc_leon/amba_scan.c libgloss/sparc_leon/asm-leon/amba.h libgloss/sparc_leon/asm-leon/asmmacro.h libgloss/sparc_leon/asm-leon/clock.h libgloss/sparc_leon/asm-leon/contextswitch.h libgloss/sparc_leon/asm-leon/elfmacro.h libgloss/sparc_leon/asm-leon/head.h libgloss/sparc_leon/asm-leon/irq.h libgloss/sparc_leon/asm-leon/jiffies.h libgloss/sparc_leon/asm-leon/lambapp.h libgloss/sparc_leon/asm-leon/lambapp_devs.h libgloss/sparc_leon/asm-leon/leon.h libgloss/sparc_leon/asm-leon/leon3.h libgloss/sparc_leon/asm-leon/leonbare_debug.h libgloss/sparc_leon/asm-leon/leonbare_kernel.h libgloss/sparc_leon/asm-leon/leonbare_kernel_queue.h libgloss/sparc_leon/asm-leon/leoncompat.h libgloss/sparc_leon/asm-leon/leondbg.h libgloss/sparc_leon/asm-leon/leonstack.h libgloss/sparc_leon/asm-leon/liblocks.h libgloss/sparc_leon/asm-leon/linkage.h libgloss/sparc_leon/asm-leon/param.h libgloss/sparc_leon/asm-leon/queue.h libgloss/sparc_leon/asm-leon/spinlock.h libgloss/sparc_leon/asm-leon/stack.h libgloss/sparc_leon/asm-leon/time.h libgloss/sparc_leon/asm-leon/timer.h libgloss/sparc_leon/asm-leon/types.h libgloss/sparc_leon/asm-leon/winmacros.h libgloss/sparc_leon/bdinit.S libgloss/sparc_leon/busscan.S libgloss/sparc_leon/cacheA.S libgloss/sparc_leon/catch_interrupt.c libgloss/sparc_leon/catch_interrupt_mvt.c libgloss/sparc_leon/catch_interrupt_pending.c libgloss/sparc_leon/catch_interrupt_svt.c libgloss/sparc_leon/configure libgloss/sparc_leon/configure.in libgloss/sparc_leon/console.c libgloss/sparc_leon/console_dbg.c libgloss/sparc_leon/console_init.c libgloss/sparc_leon/contextswitch.c libgloss/sparc_leon/contextswitch_asm.S libgloss/sparc_leon/crt0.S libgloss/sparc_leon/crti.S libgloss/sparc_leon/crtn.S libgloss/sparc_leon/etrap.S libgloss/sparc_leon/etrap_fast.S libgloss/sparc_leon/fpu.S libgloss/sparc_leon/gettimeofday.c libgloss/sparc_leon/initcalls.c libgloss/sparc_leon/io.c libgloss/sparc_leon/irqinstall.S libgloss/sparc_leon/irqtrap.S libgloss/sparc_leon/irqtrap_fast.S libgloss/sparc_leon/jiffies.c libgloss/sparc_leon/kernel.c libgloss/sparc_leon/kernel_context.S libgloss/sparc_leon/kernel_debug.c libgloss/sparc_leon/kernel_debug_var.c libgloss/sparc_leon/kernel_mm.c libgloss/sparc_leon/kernel_mutex.c libgloss/sparc_leon/kernel_queue.c libgloss/sparc_leon/kernel_sched.c libgloss/sparc_leon/kernel_thread.c libgloss/sparc_leon/lcpuinit.S libgloss/sparc_leon/locore.S libgloss/sparc_leon/locore_atexit.c libgloss/sparc_leon/locore_clean.S libgloss/sparc_leon/locore_mvt.S libgloss/sparc_leon/locore_mvt_reset.S libgloss/sparc_leon/locore_svt.S libgloss/sparc_leon/locore_svt_reset.S libgloss/sparc_leon/locore_svtdisp.S libgloss/sparc_leon/locore_var.S libgloss/sparc_leon/locore_var_svt.S libgloss/sparc_leon/mmu_asm.S libgloss/sparc_leon/mutex.c libgloss/sparc_leon/nocache.S libgloss/sparc_leon/pnpinit.c libgloss/sparc_leon/pnpinit_malloc.c libgloss/sparc_leon/pnpinit_simple.c libgloss/sparc_leon/regwin.S libgloss/sparc_leon/regwin_patch.c libgloss/sparc_leon/regwin_slow.S libgloss/sparc_leon/regwinflush.S libgloss/sparc_leon/rtc.c libgloss/sparc_leon/rtrap.S libgloss/sparc_leon/rtrap_fast.S libgloss/sparc_leon/stop.S libgloss/sparc_leon/timer.c libgloss/sparc_leon/times.c 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/tic6x/Makefile.in libgloss/tic6x/aclocal.m4 libgloss/tic6x/configure libgloss/tic6x/configure.in libgloss/tic6x/crt0.S libgloss/tic6x/getpid.c libgloss/tic6x/kill.c libgloss/tic6x/sbrk.c libgloss/tic6x/syscalls.c libgloss/unlink.c libgloss/v850/Makefile.in libgloss/v850/_exit.c libgloss/v850/access.c libgloss/v850/aclocal.m4 libgloss/v850/chmod.c libgloss/v850/chown.c libgloss/v850/close.c libgloss/v850/configure libgloss/v850/configure.in libgloss/v850/creat.c libgloss/v850/crt0.S libgloss/v850/crt1.c libgloss/v850/execv.c libgloss/v850/execve.c libgloss/v850/fork.c libgloss/v850/fstat.c libgloss/v850/getpid.c libgloss/v850/gettime.c libgloss/v850/isatty.c libgloss/v850/kill.c libgloss/v850/link.c libgloss/v850/lseek.c libgloss/v850/open.c libgloss/v850/pipe.c libgloss/v850/read.c libgloss/v850/sbrk.c libgloss/v850/sim.ld libgloss/v850/stat.c libgloss/v850/sys/syscall.h libgloss/v850/time.c libgloss/v850/times.c libgloss/v850/trap.S libgloss/v850/unlink.c libgloss/v850/utime.c libgloss/v850/wait.c libgloss/v850/write.c 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/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/cygwin/fhandler_console.cc')
-rw-r--r--winsup/cygwin/fhandler_console.cc848
1 files changed, 444 insertions, 404 deletions
diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc
index caaf5eae2..7a97fc461 100644
--- a/winsup/cygwin/fhandler_console.cc
+++ b/winsup/cygwin/fhandler_console.cc
@@ -42,9 +42,9 @@ details. */
#define ALT_PRESSED (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED)
#define CTRL_PRESSED (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED)
-#define dev_state (shared_console_info->dev_state)
-#define srTop (dev_state.info.winTop + dev_state.scroll_region.Top)
-#define srBottom ((dev_state.scroll_region.Bottom < 0) ? dev_state.info.winBottom : dev_state.info.winTop + dev_state.scroll_region.Bottom)
+#define con (shared_console_info->con)
+#define srTop (con.b.srWindow.Top + con.scroll_region.Top)
+#define srBottom ((con.scroll_region.Bottom < 0) ? con.b.srWindow.Bottom : con.b.srWindow.Top + con.scroll_region.Bottom)
const char *get_nonascii_key (INPUT_RECORD&, char *);
@@ -172,17 +172,16 @@ fhandler_console::setup ()
{
if (set_unit ())
{
-
- dev_state.scroll_region.Bottom = -1;
- dev_state.dwLastCursorPosition.X = -1;
- dev_state.dwLastCursorPosition.Y = -1;
- dev_state.dwLastMousePosition.X = -1;
- dev_state.dwLastMousePosition.Y = -1;
- dev_state.dwLastButtonState = 0; /* none pressed */
- dev_state.last_button_code = 3; /* released */
- dev_state.underline_color = FOREGROUND_GREEN | FOREGROUND_BLUE;
- dev_state.dim_color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
- dev_state.meta_mask = LEFT_ALT_PRESSED;
+ con.scroll_region.Bottom = -1;
+ con.dwLastCursorPosition.X = -1;
+ con.dwLastCursorPosition.Y = -1;
+ con.dwLastMousePosition.X = -1;
+ con.dwLastMousePosition.Y = -1;
+ con.dwLastButtonState = 0; /* none pressed */
+ con.last_button_code = 3; /* released */
+ con.underline_color = FOREGROUND_GREEN | FOREGROUND_BLUE;
+ con.dim_color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
+ con.meta_mask = LEFT_ALT_PRESSED;
/* Set the mask that determines if an input keystroke is modified by
META. We set this based on the keyboard layout language loaded
for the current thread. The left <ALT> key always generates
@@ -193,9 +192,9 @@ fhandler_console::setup ()
these keyboards right <ALT> (called AltGr) is used to produce the
shell symbols and should not be interpreted as META. */
if (PRIMARYLANGID (LOWORD (GetKeyboardLayout (0))) == LANG_ENGLISH)
- dev_state.meta_mask |= RIGHT_ALT_PRESSED;
- dev_state.set_default_attr ();
- dev_state.backspace_keycode = CERASE;
+ con.meta_mask |= RIGHT_ALT_PRESSED;
+ con.set_default_attr ();
+ con.backspace_keycode = CERASE;
shared_console_info->tty_min_state.is_console = true;
}
}
@@ -239,39 +238,35 @@ dev_console::str_to_con (mbtowc_p f_mbtowc, const char *charset,
bool
fhandler_console::set_raw_win32_keyboard_mode (bool new_mode)
{
- bool old_mode = dev_state.raw_win32_keyboard_mode;
- dev_state.raw_win32_keyboard_mode = new_mode;
- syscall_printf ("raw keyboard mode %sabled", dev_state.raw_win32_keyboard_mode ? "en" : "dis");
+ bool old_mode = con.raw_win32_keyboard_mode;
+ con.raw_win32_keyboard_mode = new_mode;
+ syscall_printf ("raw keyboard mode %sabled", con.raw_win32_keyboard_mode ? "en" : "dis");
return old_mode;
};
void
fhandler_console::set_cursor_maybe ()
{
- CONSOLE_SCREEN_BUFFER_INFO now;
-
- if (!GetConsoleScreenBufferInfo (get_output_handle (), &now))
- return;
-
- if (dev_state.dwLastCursorPosition.X != now.dwCursorPosition.X ||
- dev_state.dwLastCursorPosition.Y != now.dwCursorPosition.Y)
+ con.fillin (get_output_handle ());
+ if (con.dwLastCursorPosition.X != con.b.dwCursorPosition.X ||
+ con.dwLastCursorPosition.Y != con.b.dwCursorPosition.Y)
{
- SetConsoleCursorPosition (get_output_handle (), now.dwCursorPosition);
- dev_state.dwLastCursorPosition = now.dwCursorPosition;
+ SetConsoleCursorPosition (get_output_handle (), con.b.dwCursorPosition);
+ con.dwLastCursorPosition = con.b.dwCursorPosition;
}
}
void
fhandler_console::send_winch_maybe ()
{
- SHORT y = dev_state.info.dwWinSize.Y;
- SHORT x = dev_state.info.dwWinSize.X;
- dev_state.fillin_info (get_output_handle ());
+ SHORT y = con.dwWinSize.Y;
+ SHORT x = con.dwWinSize.X;
+ con.fillin (get_output_handle ());
- if (y != dev_state.info.dwWinSize.Y || x != dev_state.info.dwWinSize.X)
+ if (y != con.dwWinSize.Y || x != con.dwWinSize.X)
{
- dev_state.scroll_region.Top = 0;
- dev_state.scroll_region.Bottom = -1;
+ con.scroll_region.Top = 0;
+ con.scroll_region.Bottom = -1;
get_ttyp ()->kill_pgrp (SIGWINCH);
}
}
@@ -280,7 +275,7 @@ fhandler_console::send_winch_maybe ()
bool
fhandler_console::mouse_aware (MOUSE_EVENT_RECORD& mouse_event)
{
- if (!dev_state.use_mouse)
+ if (!con.use_mouse)
return 0;
/* Adjust mouse position by window scroll buffer offset
@@ -290,17 +285,17 @@ fhandler_console::mouse_aware (MOUSE_EVENT_RECORD& mouse_event)
/* Cannot adjust position by window scroll buffer offset */
return 0;
- dev_state.dwMousePosition.X = mouse_event.dwMousePosition.X - now.srWindow.Left;
- dev_state.dwMousePosition.Y = mouse_event.dwMousePosition.Y - now.srWindow.Top;
+ con.dwMousePosition.X = mouse_event.dwMousePosition.X - now.srWindow.Left;
+ con.dwMousePosition.Y = mouse_event.dwMousePosition.Y - now.srWindow.Top;
return ((mouse_event.dwEventFlags == 0 || mouse_event.dwEventFlags == DOUBLE_CLICK)
- && mouse_event.dwButtonState != dev_state.dwLastButtonState)
+ && mouse_event.dwButtonState != con.dwLastButtonState)
|| mouse_event.dwEventFlags == MOUSE_WHEELED
|| (mouse_event.dwEventFlags == MOUSE_MOVED
- && (dev_state.dwMousePosition.X != dev_state.dwLastMousePosition.X
- || dev_state.dwMousePosition.Y != dev_state.dwLastMousePosition.Y)
- && ((dev_state.use_mouse >= 2 && mouse_event.dwButtonState)
- || dev_state.use_mouse >= 3));
+ && (con.dwMousePosition.X != con.dwLastMousePosition.X
+ || con.dwMousePosition.Y != con.dwLastMousePosition.Y)
+ && ((con.use_mouse >= 2 && mouse_event.dwButtonState)
+ || con.use_mouse >= 3));
}
void __reg3
@@ -372,7 +367,7 @@ fhandler_console::read (void *pv, size_t& buflen)
#define virtual_key_code (input_rec.Event.KeyEvent.wVirtualKeyCode)
#define control_key_state (input_rec.Event.KeyEvent.dwControlKeyState)
- dev_state.nModifiers = 0;
+ con.nModifiers = 0;
#ifdef DEBUGGING
/* allow manual switching to/from raw mode via ctrl-alt-scrolllock */
@@ -381,12 +376,12 @@ fhandler_console::read (void *pv, size_t& buflen)
((control_key_state & (LEFT_ALT_PRESSED | LEFT_CTRL_PRESSED)) == (LEFT_ALT_PRESSED | LEFT_CTRL_PRESSED))
)
{
- set_raw_win32_keyboard_mode (!dev_state.raw_win32_keyboard_mode);
+ set_raw_win32_keyboard_mode (!con.raw_win32_keyboard_mode);
continue;
}
#endif
- if (dev_state.raw_win32_keyboard_mode)
+ if (con.raw_win32_keyboard_mode)
{
__small_sprintf (tmp, "\033{%u;%u;%u;%u;%u;%luK",
input_rec.Event.KeyEvent.bKeyDown,
@@ -419,22 +414,22 @@ fhandler_console::read (void *pv, size_t& buflen)
continue;
if (control_key_state & SHIFT_PRESSED)
- dev_state.nModifiers |= 1;
+ con.nModifiers |= 1;
if (control_key_state & RIGHT_ALT_PRESSED)
- dev_state.nModifiers |= 2;
+ con.nModifiers |= 2;
if (control_key_state & CTRL_PRESSED)
- dev_state.nModifiers |= 4;
+ con.nModifiers |= 4;
if (control_key_state & LEFT_ALT_PRESSED)
- dev_state.nModifiers |= 8;
+ con.nModifiers |= 8;
/* Allow Backspace to emit ^? and escape sequences. */
if (input_rec.Event.KeyEvent.wVirtualKeyCode == VK_BACK)
{
- char c = dev_state.backspace_keycode;
+ char c = con.backspace_keycode;
nread = 0;
if (control_key_state & ALT_PRESSED)
{
- if (dev_state.metabit)
+ if (con.metabit)
c |= 0x80;
else
tmp[nread++] = '\e';
@@ -455,14 +450,14 @@ fhandler_console::read (void *pv, size_t& buflen)
toadd = get_nonascii_key (input_rec, tmp);
if (!toadd)
{
- dev_state.nModifiers = 0;
+ con.nModifiers = 0;
continue;
}
nread = strlen (toadd);
}
else
{
- nread = dev_state.con_to_str (tmp + 1, 59, wch);
+ nread = con.con_to_str (tmp + 1, 59, wch);
/* Determine if the keystroke is modified by META. The tricky
part is to distinguish whether the right Alt key should be
recognized as Alt, or as AltGr. */
@@ -486,7 +481,7 @@ fhandler_console::read (void *pv, size_t& buflen)
else
toadd = tmp + 1;
}
- else if (dev_state.metabit)
+ else if (con.metabit)
{
tmp[1] |= 0x80;
toadd = tmp + 1;
@@ -497,7 +492,7 @@ fhandler_console::read (void *pv, size_t& buflen)
tmp[1] = cyg_tolower (tmp[1]);
toadd = tmp;
nread++;
- dev_state.nModifiers &= ~4;
+ con.nModifiers &= ~4;
}
}
#undef ich
@@ -551,34 +546,34 @@ fhandler_console::read (void *pv, size_t& buflen)
if (mouse_event.dwEventFlags == MOUSE_MOVED)
{
- b = dev_state.last_button_code;
+ b = con.last_button_code;
}
- else if (mouse_event.dwButtonState < dev_state.dwLastButtonState && !dev_state.ext_mouse_mode6)
+ else if (mouse_event.dwButtonState < con.dwLastButtonState && !con.ext_mouse_mode6)
{
b = 3;
strcpy (sz, "btn up");
}
- else if ((mouse_event.dwButtonState & 1) != (dev_state.dwLastButtonState & 1))
+ else if ((mouse_event.dwButtonState & 1) != (con.dwLastButtonState & 1))
{
b = 0;
strcpy (sz, "btn1 down");
}
- else if ((mouse_event.dwButtonState & 2) != (dev_state.dwLastButtonState & 2))
+ else if ((mouse_event.dwButtonState & 2) != (con.dwLastButtonState & 2))
{
b = 2;
strcpy (sz, "btn2 down");
}
- else if ((mouse_event.dwButtonState & 4) != (dev_state.dwLastButtonState & 4))
+ else if ((mouse_event.dwButtonState & 4) != (con.dwLastButtonState & 4))
{
b = 1;
strcpy (sz, "btn3 down");
}
- if (dev_state.ext_mouse_mode6 /* distinguish release */
- && mouse_event.dwButtonState < dev_state.dwLastButtonState)
+ if (con.ext_mouse_mode6 /* distinguish release */
+ && mouse_event.dwButtonState < con.dwLastButtonState)
mode6_term = 'm';
- dev_state.last_button_code = b;
+ con.last_button_code = b;
if (mouse_event.dwEventFlags == MOUSE_MOVED)
{
@@ -588,46 +583,46 @@ fhandler_console::read (void *pv, size_t& buflen)
else
{
/* Remember the modified button state */
- dev_state.dwLastButtonState = mouse_event.dwButtonState;
+ con.dwLastButtonState = mouse_event.dwButtonState;
}
}
/* Remember mouse position */
- dev_state.dwLastMousePosition.X = dev_state.dwMousePosition.X;
- dev_state.dwLastMousePosition.Y = dev_state.dwMousePosition.Y;
+ con.dwLastMousePosition.X = con.dwMousePosition.X;
+ con.dwLastMousePosition.Y = con.dwMousePosition.Y;
/* Remember the modifiers */
- dev_state.nModifiers = 0;
+ con.nModifiers = 0;
if (mouse_event.dwControlKeyState & SHIFT_PRESSED)
- dev_state.nModifiers |= 0x4;
+ con.nModifiers |= 0x4;
if (mouse_event.dwControlKeyState & ALT_PRESSED)
- dev_state.nModifiers |= 0x8;
+ con.nModifiers |= 0x8;
if (mouse_event.dwControlKeyState & CTRL_PRESSED)
- dev_state.nModifiers |= 0x10;
+ con.nModifiers |= 0x10;
/* Indicate the modifiers */
- b |= dev_state.nModifiers;
+ b |= con.nModifiers;
/* We can now create the code. */
- if (dev_state.ext_mouse_mode6)
+ if (con.ext_mouse_mode6)
{
__small_sprintf (tmp, "\033[<%d;%d;%d%c", b,
- dev_state.dwMousePosition.X + 1,
- dev_state.dwMousePosition.Y + 1,
+ con.dwMousePosition.X + 1,
+ con.dwMousePosition.Y + 1,
mode6_term);
nread = strlen (tmp);
}
- else if (dev_state.ext_mouse_mode15)
+ else if (con.ext_mouse_mode15)
{
__small_sprintf (tmp, "\033[%d;%d;%dM", b + 32,
- dev_state.dwMousePosition.X + 1,
- dev_state.dwMousePosition.Y + 1);
+ con.dwMousePosition.X + 1,
+ con.dwMousePosition.Y + 1);
nread = strlen (tmp);
}
- else if (dev_state.ext_mouse_mode5)
+ else if (con.ext_mouse_mode5)
{
- unsigned int xcode = dev_state.dwMousePosition.X + ' ' + 1;
- unsigned int ycode = dev_state.dwMousePosition.Y + ' ' + 1;
+ unsigned int xcode = con.dwMousePosition.X + ' ' + 1;
+ unsigned int ycode = con.dwMousePosition.Y + ' ' + 1;
__small_sprintf (tmp, "\033[M%c", b + ' ');
nread = 4;
@@ -654,8 +649,8 @@ fhandler_console::read (void *pv, size_t& buflen)
}
else
{
- unsigned int xcode = dev_state.dwMousePosition.X + ' ' + 1;
- unsigned int ycode = dev_state.dwMousePosition.Y + ' ' + 1;
+ unsigned int xcode = con.dwMousePosition.X + ' ' + 1;
+ unsigned int ycode = con.dwMousePosition.Y + ' ' + 1;
if (xcode >= 256)
xcode = 0;
if (ycode >= 256)
@@ -665,8 +660,8 @@ fhandler_console::read (void *pv, size_t& buflen)
nread = 6; /* tmp may contain NUL bytes */
}
syscall_printf ("mouse: %s at (%d,%d)", sz,
- dev_state.dwMousePosition.X,
- dev_state.dwMousePosition.Y);
+ con.dwMousePosition.X,
+ con.dwMousePosition.Y);
toadd = tmp;
}
@@ -674,7 +669,7 @@ fhandler_console::read (void *pv, size_t& buflen)
break;
case FOCUS_EVENT:
- if (dev_state.use_focus)
+ if (con.use_focus)
{
if (input_rec.Event.FocusEvent.bSetFocus)
__small_sprintf (tmp, "\033[I");
@@ -734,82 +729,79 @@ fhandler_console::set_input_state ()
}
bool
-dev_console::fillin_info (HANDLE h)
+dev_console::fillin (HANDLE h)
{
bool ret;
- CONSOLE_SCREEN_BUFFER_INFO linfo;
- if ((ret = GetConsoleScreenBufferInfo (h, &linfo)))
+ if ((ret = GetConsoleScreenBufferInfo (h, &b)))
{
- info.winTop = linfo.srWindow.Top;
- info.winBottom = linfo.srWindow.Bottom;
- info.dwWinSize.Y = 1 + linfo.srWindow.Bottom - linfo.srWindow.Top;
- info.dwWinSize.X = 1 + linfo.srWindow.Right - linfo.srWindow.Left;
- info.dwBufferSize = linfo.dwSize;
- info.dwCursorPosition = linfo.dwCursorPosition;
- info.wAttributes = linfo.wAttributes;
+ dwWinSize.Y = 1 + b.srWindow.Bottom - b.srWindow.Top;
+ dwWinSize.X = 1 + b.srWindow.Right - b.srWindow.Left;
+ if (b.dwSize.Y != b.dwSize.Y || b.dwSize.X != b.dwSize.X)
+ dwEnd.X = dwEnd.Y = 0;
+ if (b.dwCursorPosition.Y > dwEnd.Y
+ || (b.dwCursorPosition.Y >= dwEnd.Y && b.dwCursorPosition.X > dwEnd.X))
+ dwEnd = b.dwCursorPosition;
}
else
{
- memset (&info, 0, sizeof info);
- info.dwWinSize.Y = 25;
- info.dwWinSize.X = 80;
- info.winBottom = 24;
+ memset (&b, 0, sizeof (b));
+ dwWinSize.Y = 25;
+ dwWinSize.X = 80;
+ b.srWindow.Bottom = 24;
+ b.srWindow.Right = 79;
}
return ret;
}
+void __reg3
+dev_console::scroll_buffer (HANDLE h, int x1, int y1, int x2, int y2, int xn, int yn)
+{
/* Scroll the screen context.
x1, y1 - ul corner
x2, y2 - dr corner
xn, yn - new ul corner
Negative values represents current screen dimensions
*/
-void
-fhandler_console::scroll_screen (int x1, int y1, int x2, int y2, int xn, int yn)
-{
SMALL_RECT sr1, sr2;
CHAR_INFO fill;
COORD dest;
-
- dev_state.fillin_info (get_output_handle ());
- sr1.Left = x1 >= 0 ? x1 : dev_state.info.dwWinSize.X - 1;
- if (y1 == 0)
- sr1.Top = dev_state.info.winTop;
- else
- sr1.Top = y1 > 0 ? y1 : dev_state.info.winBottom;
- sr1.Right = x2 >= 0 ? x2 : dev_state.info.dwWinSize.X - 1;
- if (y2 == 0)
- sr1.Bottom = dev_state.info.winTop;
- else
- sr1.Bottom = y2 > 0 ? y2 : dev_state.info.winBottom;
- sr2.Top = srTop;
+ fill.Char.AsciiChar = ' ';
+ fill.Attributes = current_win32_attr;
+
+ fillin (h);
+ sr1.Left = x1 >= 0 ? x1 : dwWinSize.X - 1;
+ sr1.Top = y1 >= 0 ? y1 : b.srWindow.Bottom;
+ sr1.Right = x2 >= 0 ? x2 : dwWinSize.X - 1;
+ sr1.Bottom = y2 >= 0 ? y2 : b.srWindow.Bottom;
+ sr2.Top = b.srWindow.Top + scroll_region.Top;
sr2.Left = 0;
- sr2.Bottom = srBottom;
- sr2.Right = dev_state.info.dwWinSize.X - 1;
+ sr2.Bottom = (scroll_region.Bottom < 0) ? b.srWindow.Bottom : b.srWindow.Top + scroll_region.Bottom;
+ sr2.Right = dwWinSize.X - 1;
if (sr1.Bottom > sr2.Bottom && sr1.Top <= sr2.Bottom)
sr1.Bottom = sr2.Bottom;
- dest.X = xn >= 0 ? xn : dev_state.info.dwWinSize.X - 1;
- if (yn == 0)
- dest.Y = dev_state.info.winTop;
- else
- dest.Y = yn > 0 ? yn : dev_state.info.winBottom;
- fill.Char.AsciiChar = ' ';
- fill.Attributes = dev_state.current_win32_attr;
- ScrollConsoleScreenBuffer (get_output_handle (), &sr1, &sr2, dest, &fill);
+ dest.X = xn >= 0 ? xn : dwWinSize.X - 1;
+ dest.Y = yn >= 0 ? yn : b.srWindow.Bottom;
+ ScrollConsoleScreenBuffer (h, &sr1, &sr2, dest, &fill);
+}
-#if 0 /* CGF: 2014-01-04 Assuming that we don't need this anymore */
- /* ScrollConsoleScreenBuffer on Windows 95 is buggy - when scroll distance
- * is more than half of screen, filling doesn't work as expected */
+inline void
+fhandler_console::scroll_buffer (int x1, int y1, int x2, int y2, int xn, int yn)
+{
+ con.scroll_buffer (get_output_handle (), x1, y1, x2, y2, xn, yn);
+}
- if (sr1.Top == sr1.Bottom)
- /* nothing to do */;
- else if (dest.Y <= sr1.Top) /* forward scroll */
- clear_screen (0, 1 + dest.Y + sr1.Bottom - sr1.Top, sr2.Right, sr2.Bottom);
- else /* reverse scroll */
- clear_screen (0, sr1.Top, sr2.Right, dest.Y - 1);
-#endif
+inline void
+fhandler_console::scroll_buffer_screen (int x1, int y1, int x2, int y2, int xn, int yn)
+{
+ if (y1 >= 0)
+ y1 += con.b.srWindow.Top;
+ if (y2 >= 0)
+ y1 += con.b.srWindow.Top;
+ if (yn >= 0)
+ yn += con.b.srWindow.Top;
+ con.scroll_buffer (get_output_handle (), x1, y1, x2, y2, xn, yn);
}
int
@@ -860,12 +852,12 @@ fhandler_console::open (int flags, mode_t)
}
set_output_handle (h);
- if (dev_state.fillin_info (get_output_handle ()))
+ if (con.fillin (get_output_handle ()))
{
- dev_state.current_win32_attr = dev_state.info.wAttributes;
- if (!dev_state.default_color)
- dev_state.default_color = dev_state.info.wAttributes;
- dev_state.set_default_attr ();
+ con.current_win32_attr = con.b.wAttributes;
+ if (!con.default_color)
+ con.default_color = con.b.wAttributes;
+ con.set_default_attr ();
}
get_ttyp ()->rstcons (false);
@@ -912,13 +904,13 @@ fhandler_console::ioctl (unsigned int cmd, void *arg)
case TIOCGWINSZ:
int st;
- st = dev_state.fillin_info (get_output_handle ());
+ st = con.fillin (get_output_handle ());
if (st)
{
/* *not* the buffer size, the actual screen size... */
/* based on Left Top Right Bottom of srWindow */
- ((struct winsize *) arg)->ws_row = dev_state.info.dwWinSize.Y;
- ((struct winsize *) arg)->ws_col = dev_state.info.dwWinSize.X;
+ ((struct winsize *) arg)->ws_row = con.dwWinSize.Y;
+ ((struct winsize *) arg)->ws_col = con.dwWinSize.X;
syscall_printf ("WINSZ: (row=%d,col=%d)",
((struct winsize *) arg)->ws_row,
((struct winsize *) arg)->ws_col);
@@ -935,13 +927,13 @@ fhandler_console::ioctl (unsigned int cmd, void *arg)
bg_check (SIGTTOU);
return 0;
case KDGKBMETA:
- *(int *) arg = (dev_state.metabit) ? K_METABIT : K_ESCPREFIX;
+ *(int *) arg = (con.metabit) ? K_METABIT : K_ESCPREFIX;
return 0;
case KDSKBMETA:
if ((intptr_t) arg == K_METABIT)
- dev_state.metabit = TRUE;
+ con.metabit = TRUE;
else if ((intptr_t) arg == K_ESCPREFIX)
- dev_state.metabit = FALSE;
+ con.metabit = FALSE;
else
{
set_errno (EINVAL);
@@ -951,7 +943,7 @@ fhandler_console::ioctl (unsigned int cmd, void *arg)
case TIOCLINUX:
if (*(unsigned char *) arg == 6)
{
- *(unsigned char *) arg = (unsigned char) dev_state.nModifiers;
+ *(unsigned char *) arg = (unsigned char) con.nModifiers;
return 0;
}
set_errno (EINVAL);
@@ -1189,52 +1181,98 @@ dev_console::set_default_attr ()
}
int
-dev_console::console_attrs::set_cl_x (cltype x)
+dev_console::set_cl_x (cltype x)
{
if (x == cl_disp_beg || x == cl_buf_beg)
return 0;
if (x == cl_disp_end)
return dwWinSize.X - 1;
if (x == cl_buf_end)
- return dwBufferSize.X - 1;
- return dwCursorPosition.X;
+ return b.dwSize.X - 1;
+ return b.dwCursorPosition.X;
}
int
-dev_console::console_attrs::set_cl_y (cltype y)
+dev_console::set_cl_y (cltype y)
{
if (y == cl_buf_beg)
return 0;
if (y == cl_disp_beg)
- return winTop;
+ return b.srWindow.Top;
if (y == cl_disp_end)
- return winBottom;
+ return b.srWindow.Bottom;
if (y == cl_buf_end)
- return dwBufferSize.Y - 1;
- return dwCursorPosition.Y;
+ return b.dwSize.Y - 1;
+ return b.dwCursorPosition.Y;
}
-
+
+bool
+dev_console::scroll_window (HANDLE h, int x1, int y1, int x2, int y2)
+{
+ if (save_buf || x1 != 0 || x2 != dwWinSize.X - 1 || y1 != b.srWindow.Top
+ || y2 != b.srWindow.Bottom || b.dwSize.Y <= dwWinSize.Y)
+ return false;
+
+ SMALL_RECT sr;
+ int toscroll = 2 + dwEnd.Y - b.srWindow.Top;
+ int shrink = 1 + toscroll + b.srWindow.Bottom - b.dwSize.Y;
+ sr.Left = sr.Right = dwEnd.X = 0;
+ /* Can't increment dwEnd yet since we may not have space in
+ the buffer. */
+ SetConsoleCursorPosition (h, dwEnd);
+ if (shrink > 0)
+ {
+ COORD c = b.dwSize;
+ c.Y = dwEnd.Y - shrink;
+ SetConsoleScreenBufferSize (h, c);
+ SetConsoleScreenBufferSize (h, b.dwSize);
+ dwEnd.Y = 0;
+ fillin (h);
+ toscroll = 2 + dwEnd.Y - b.srWindow.Top;
+ }
+
+ sr.Top = sr.Bottom = toscroll;
+
+ SetConsoleWindowInfo (h, FALSE, &sr);
+
+ dwEnd.Y++;
+ SetConsoleCursorPosition (h, dwEnd);
+
+ fillin (h);
+ return true;
+}
+
/*
* Clear the screen context from x1/y1 to x2/y2 cell.
* Negative values represents current screen dimensions
*/
-void
+void __reg3
fhandler_console::clear_screen (cltype xc1, cltype yc1, cltype xc2, cltype yc2)
{
+ HANDLE h = get_output_handle ();
+ con.fillin (h);
+
+ int x1 = con.set_cl_x (xc1);
+ int y1 = con.set_cl_y (yc1);
+ int x2 = con.set_cl_x (xc2);
+ int y2 = con.set_cl_y (yc2);
+
+ /* Detect special case - scroll the screen if we have a buffer in order to
+ preserve the buffer. */
+ if (!con.scroll_window (h, x1, y1, x2, y2))
+ con.clear_screen (h, x1, y1, x2, y2);
+}
+
+void __reg3
+dev_console::clear_screen (HANDLE h, int x1, int y1, int x2, int y2)
+{
COORD tlc;
DWORD done;
int num;
- dev_state.fillin_info (get_output_handle ());
-
- int x1 = dev_state.info.set_cl_x (xc1);
- int y1 = dev_state.info.set_cl_y (yc1);
- int x2 = dev_state.info.set_cl_x (xc2);
- int y2 = dev_state.info.set_cl_y (yc2);
+ num = abs (y1 - y2) * b.dwSize.X + abs (x1 - x2) + 1;
- num = abs (y1 - y2) * dev_state.info.dwBufferSize.X + abs (x1 - x2) + 1;
-
- if ((y2 * dev_state.info.dwBufferSize.X + x2) > (y1 * dev_state.info.dwBufferSize.X + x1))
+ if ((y2 * b.dwSize.X + x2) > (y1 * b.dwSize.X + x1))
{
tlc.X = x1;
tlc.Y = y1;
@@ -1244,42 +1282,35 @@ fhandler_console::clear_screen (cltype xc1, cltype yc1, cltype xc2, cltype yc2)
tlc.X = x2;
tlc.Y = y2;
}
- FillConsoleOutputCharacterA (get_output_handle (), ' ',
- num,
- tlc,
- &done);
- FillConsoleOutputAttribute (get_output_handle (),
- dev_state.current_win32_attr,
- num,
- tlc,
- &done);
+ FillConsoleOutputCharacterA (h, ' ', num, tlc, &done);
+ FillConsoleOutputAttribute (h, current_win32_attr, num, tlc, &done);
}
-void
+void __reg3
fhandler_console::cursor_set (bool rel_to_top, int x, int y)
{
COORD pos;
- dev_state.fillin_info (get_output_handle ());
+ con.fillin (get_output_handle ());
#if 0
- /* Setting y to the current winBottom here is the reason that the window
+ /* Setting y to the current b.srWindow.Bottom here is the reason that the window
isn't scrolled back to the current cursor position like it's done in
any other terminal. Rather, the curser is forced to the bottom of the
currently scrolled region. This breaks the console buffer content if
output is generated while the user had the window scrolled back. This
behaviour is very old, it has no matching ChangeLog entry.
Just disable for now but keep the code in for future reference. */
- if (y > dev_state.info.winBottom)
- y = dev_state.info.winBottom;
+ if (y > con.b.srWindow.Bottom)
+ y = con.b.srWindow.Bottom;
else
#endif
if (y < 0)
y = 0;
else if (rel_to_top)
- y += dev_state.info.winTop;
+ y += con.b.srWindow.Top;
- if (x > dev_state.info.dwWinSize.X)
- x = dev_state.info.dwWinSize.X - 1;
+ if (x > con.dwWinSize.X)
+ x = con.dwWinSize.X - 1;
else if (x < 0)
x = 0;
@@ -1288,21 +1319,21 @@ fhandler_console::cursor_set (bool rel_to_top, int x, int y)
SetConsoleCursorPosition (get_output_handle (), pos);
}
-void
+void __reg3
fhandler_console::cursor_rel (int x, int y)
{
- dev_state.fillin_info (get_output_handle ());
- x += dev_state.info.dwCursorPosition.X;
- y += dev_state.info.dwCursorPosition.Y;
+ con.fillin (get_output_handle ());
+ x += con.b.dwCursorPosition.X;
+ y += con.b.dwCursorPosition.Y;
cursor_set (false, x, y);
}
-void
+void __reg3
fhandler_console::cursor_get (int *x, int *y)
{
- dev_state.fillin_info (get_output_handle ());
- *y = dev_state.info.dwCursorPosition.Y;
- *x = dev_state.info.dwCursorPosition.X;
+ con.fillin (get_output_handle ());
+ *y = con.b.dwCursorPosition.Y;
+ *x = con.b.dwCursorPosition.X;
}
/* VT100 line drawing graphics mode maps `abcdefghijklmnopqrstuvwxyz{|}~ to
@@ -1344,9 +1375,9 @@ static const wchar_t __vt100_conv[31] = {
inline
bool fhandler_console::write_console (PWCHAR buf, DWORD len, DWORD& done)
{
- if (dev_state.iso_2022_G1
- ? dev_state.vt100_graphics_mode_G1
- : dev_state.vt100_graphics_mode_G0)
+ if (con.iso_2022_G1
+ ? con.vt100_graphics_mode_G1
+ : con.vt100_graphics_mode_G0)
for (DWORD i = 0; i < len; i ++)
if (buf[i] >= (unsigned char) '`' && buf[i] <= (unsigned char) '~')
buf[i] = __vt100_conv[buf[i] - (unsigned char) '`'];
@@ -1395,7 +1426,7 @@ delta (SHORT first, SHORT second)
needed until it succeeds in reading the entire screen buffer. */
static BOOL
ReadConsoleOutputWrapper (HANDLE h, PCHAR_INFO buf, COORD bufsiz,
- SMALL_RECT& region)
+ SMALL_RECT region)
{
COORD coord = {};
SHORT width = delta (region.Left, region.Right);
@@ -1419,6 +1450,61 @@ ReadConsoleOutputWrapper (HANDLE h, PCHAR_INFO buf, COORD bufsiz,
return success;
}
+void
+dev_console::save_restore (HANDLE h, char c)
+{
+ if (c == 'h') /* save */
+ {
+ fillin (h);
+ save_bufsize.X = b.dwSize.X;
+ if ((save_bufsize.Y = dwEnd.Y + 2) > b.dwSize.Y)
+ save_bufsize.X = b.dwSize.Y;
+
+ if (save_buf)
+ cfree (save_buf);
+ size_t screen_size = sizeof (CHAR_INFO) * save_bufsize.X * save_bufsize.Y;
+ save_buf = (PCHAR_INFO) cmalloc_abort (HEAP_1_BUF, screen_size);
+
+ save_cursor = b.dwCursorPosition; /* Remember where we were. */
+
+ SMALL_RECT now = {}; /* Read the whole buffer */
+ now.Bottom = save_bufsize.Y - 1;
+ now.Right = save_bufsize.X - 1;
+ if (!ReadConsoleOutputWrapper (h, save_buf, save_bufsize, now))
+ debug_printf ("ReadConsoleOutputWrapper(h, ...) failed during save, %E");
+
+ /* Position at top of buffer */
+ COORD cob = {};
+ if (!SetConsoleCursorPosition (h, cob))
+ debug_printf ("SetConsoleCursorInfo(%p, ...) failed during save, %E", h);
+
+ /* Clear entire buffer */
+ clear_screen (h, 0, 0, now.Right, now.Bottom);
+ b.dwCursorPosition.X = b.dwCursorPosition.Y = dwEnd.X = dwEnd.Y = 0;
+ }
+ else if (save_buf)
+ {
+ COORD cob = {};
+ SMALL_RECT now = {};
+ now.Bottom = save_bufsize.Y - 1;
+ now.Right = save_bufsize.X - 1;
+ /* Restore whole buffer */
+ BOOL res = WriteConsoleOutputW (h, save_buf, save_bufsize, cob, &now);
+ if (!res)
+ debug_printf ("WriteConsoleOutputW failed, %E");
+
+ cfree (save_buf);
+ save_buf = NULL;
+
+ /* Position where we were previously */
+ if (!SetConsoleCursorPosition (h, save_cursor))
+ debug_printf ("SetConsoleCursorInfo(%p, ...) failed during restore, %E", h);
+ /* Get back correct version of buffer information */
+ dwEnd.X = dwEnd.Y = 0;
+ fillin (h);
+ }
+}
+
#define BAK 1
#define ESC 2
#define NOR 0
@@ -1474,118 +1560,118 @@ static const char base_chars[256] =
void
fhandler_console::char_command (char c)
{
- int x, y;
+ int x, y, n;
char buf[40];
switch (c)
{
case 'm': /* Set Graphics Rendition */
- for (int i = 0; i <= dev_state.nargs_; i++)
- switch (dev_state.args_[i])
+ for (int i = 0; i <= con.nargs; i++)
+ switch (con.args[i])
{
case 0: /* normal color */
- dev_state.set_default_attr ();
+ con.set_default_attr ();
break;
case 1: /* bold */
- dev_state.intensity = INTENSITY_BOLD;
+ con.intensity = INTENSITY_BOLD;
break;
case 2: /* dim */
- dev_state.intensity = INTENSITY_DIM;
+ con.intensity = INTENSITY_DIM;
break;
case 4: /* underlined */
- dev_state.underline = 1;
+ con.underline = 1;
break;
case 5: /* blink mode */
- dev_state.blink = true;
+ con.blink = true;
break;
case 7: /* reverse */
- dev_state.reverse = true;
+ con.reverse = true;
break;
case 8: /* invisible */
- dev_state.intensity = INTENSITY_INVISIBLE;
+ con.intensity = INTENSITY_INVISIBLE;
break;
case 10: /* end alternate charset */
- dev_state.alternate_charset_active = false;
+ con.alternate_charset_active = false;
break;
case 11: /* start alternate charset */
- dev_state.alternate_charset_active = true;
+ con.alternate_charset_active = true;
break;
case 22:
case 28:
- dev_state.intensity = INTENSITY_NORMAL;
+ con.intensity = INTENSITY_NORMAL;
break;
case 24:
- dev_state.underline = false;
+ con.underline = false;
break;
case 25:
- dev_state.blink = false;
+ con.blink = false;
break;
case 27:
- dev_state.reverse = false;
+ con.reverse = false;
break;
case 30: /* BLACK foreground */
- dev_state.fg = 0;
+ con.fg = 0;
break;
case 31: /* RED foreground */
- dev_state.fg = FOREGROUND_RED;
+ con.fg = FOREGROUND_RED;
break;
case 32: /* GREEN foreground */
- dev_state.fg = FOREGROUND_GREEN;
+ con.fg = FOREGROUND_GREEN;
break;
case 33: /* YELLOW foreground */
- dev_state.fg = FOREGROUND_RED | FOREGROUND_GREEN;
+ con.fg = FOREGROUND_RED | FOREGROUND_GREEN;
break;
case 34: /* BLUE foreground */
- dev_state.fg = FOREGROUND_BLUE;
+ con.fg = FOREGROUND_BLUE;
break;
case 35: /* MAGENTA foreground */
- dev_state.fg = FOREGROUND_RED | FOREGROUND_BLUE;
+ con.fg = FOREGROUND_RED | FOREGROUND_BLUE;
break;
case 36: /* CYAN foreground */
- dev_state.fg = FOREGROUND_BLUE | FOREGROUND_GREEN;
+ con.fg = FOREGROUND_BLUE | FOREGROUND_GREEN;
break;
case 37: /* WHITE foreg */
- dev_state.fg = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED;
+ con.fg = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED;
break;
case 39:
- dev_state.fg = dev_state.default_color & FOREGROUND_ATTR_MASK;
+ con.fg = con.default_color & FOREGROUND_ATTR_MASK;
break;
case 40: /* BLACK background */
- dev_state.bg = 0;
+ con.bg = 0;
break;
case 41: /* RED background */
- dev_state.bg = BACKGROUND_RED;
+ con.bg = BACKGROUND_RED;
break;
case 42: /* GREEN background */
- dev_state.bg = BACKGROUND_GREEN;
+ con.bg = BACKGROUND_GREEN;
break;
case 43: /* YELLOW background */
- dev_state.bg = BACKGROUND_RED | BACKGROUND_GREEN;
+ con.bg = BACKGROUND_RED | BACKGROUND_GREEN;
break;
case 44: /* BLUE background */
- dev_state.bg = BACKGROUND_BLUE;
+ con.bg = BACKGROUND_BLUE;
break;
case 45: /* MAGENTA background */
- dev_state.bg = BACKGROUND_RED | BACKGROUND_BLUE;
+ con.bg = BACKGROUND_RED | BACKGROUND_BLUE;
break;
case 46: /* CYAN background */
- dev_state.bg = BACKGROUND_BLUE | BACKGROUND_GREEN;
+ con.bg = BACKGROUND_BLUE | BACKGROUND_GREEN;
break;
case 47: /* WHITE background */
- dev_state.bg = BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED;
+ con.bg = BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED;
break;
case 49:
- dev_state.bg = dev_state.default_color & BACKGROUND_ATTR_MASK;
+ con.bg = con.default_color & BACKGROUND_ATTR_MASK;
break;
}
- dev_state.set_color (get_output_handle ());
+ con.set_color (get_output_handle ());
break;
case 'q': /* Set cursor style (DECSCUSR) */
- if (dev_state.saw_space)
+ if (con.saw_space)
{
CONSOLE_CURSOR_INFO console_cursor_info;
GetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
- switch (dev_state.args_[0])
+ switch (con.args[0])
{
case 0: /* blinking block */
case 1: /* blinking block (default) */
@@ -1599,7 +1685,7 @@ fhandler_console::char_command (char c)
SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
break;
default: /* use value as percentage */
- console_cursor_info.dwSize = dev_state.args_[0];
+ console_cursor_info.dwSize = con.args[0];
SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
break;
}
@@ -1607,18 +1693,18 @@ fhandler_console::char_command (char c)
break;
case 'h':
case 'l':
- if (!dev_state.saw_question_mark)
+ if (!con.saw_question_mark)
{
- switch (dev_state.args_[0])
+ switch (con.args[0])
{
case 4: /* Insert mode */
- dev_state.insert_mode = (c == 'h') ? true : false;
- syscall_printf ("insert mode %sabled", dev_state.insert_mode ? "en" : "dis");
+ con.insert_mode = (c == 'h') ? true : false;
+ syscall_printf ("insert mode %sabled", con.insert_mode ? "en" : "dis");
break;
}
break;
}
- switch (dev_state.args_[0])
+ switch (con.args[0])
{
case 25: /* Show/Hide Cursor (DECTCEM) */
{
@@ -1632,84 +1718,39 @@ fhandler_console::char_command (char c)
break;
}
case 47: /* Save/Restore screen */
- if (c == 'h') /* save */
- {
- CONSOLE_SCREEN_BUFFER_INFO now;
-
- if (!GetConsoleScreenBufferInfo (get_output_handle (), &now))
- break;
-
- /* Assume starting from 0/0 */
- dev_state.savebufsiz.X = 1 + now.srWindow.Right;
- dev_state.savebufsiz.Y = 1 + now.srWindow.Bottom;
-
- if (dev_state.savebuf)
- cfree (dev_state.savebuf);
- size_t screen_size = sizeof (CHAR_INFO) * dev_state.savebufsiz.X * dev_state.savebufsiz.Y;
- dev_state.savebuf = (PCHAR_INFO) cmalloc_abort (HEAP_1_BUF, screen_size);
-
- BOOL res = ReadConsoleOutputWrapper (get_output_handle (),
- dev_state.savebuf,
- dev_state.savebufsiz,
- now.srWindow);
- if (!res)
- debug_printf ("ReadConsoleOutputWrapper failed, %E");
- }
- else /* restore */
- {
- if (!dev_state.savebuf)
- break;
-
- CONSOLE_SCREEN_BUFFER_INFO now;
- COORD cob = { 0, 0 };
-
- if (!GetConsoleScreenBufferInfo (get_output_handle (), &now))
- {
- debug_printf ("GetConsoleScreenBufferInfo(%y, %y), %E", get_output_handle (), &now);
- break;
- }
-
- BOOL res = WriteConsoleOutputW (get_output_handle (), dev_state.savebuf,
- dev_state.savebufsiz, cob, &now.srWindow);
- if (!res)
- debug_printf ("WriteConsoleOutputW failed, %E");
-
- cfree (dev_state.savebuf);
- dev_state.savebuf = NULL;
- dev_state.savebufsiz.X = dev_state.savebufsiz.Y = 0;
- }
+ con.save_restore (get_output_handle (), c);
break;
case 67: /* DECBKM ("DEC Backarrow Key Mode") */
- dev_state.backspace_keycode = (c == 'h' ? CTRL('H') : CERASE);
+ con.backspace_keycode = (c == 'h' ? CTRL('H') : CERASE);
break;
case 1000: /* Mouse tracking */
- dev_state.use_mouse = (c == 'h') ? 1 : 0;
+ con.use_mouse = (c == 'h') ? 1 : 0;
break;
case 1002: /* Mouse button event tracking */
- dev_state.use_mouse = (c == 'h') ? 2 : 0;
+ con.use_mouse = (c == 'h') ? 2 : 0;
break;
case 1003: /* Mouse any event tracking */
- dev_state.use_mouse = (c == 'h') ? 3 : 0;
+ con.use_mouse = (c == 'h') ? 3 : 0;
break;
case 1004: /* Focus in/out event reporting */
- dev_state.use_focus = (c == 'h') ? true : false;
+ con.use_focus = (c == 'h') ? true : false;
break;
case 1005: /* Extended mouse mode */
- dev_state.ext_mouse_mode5 = c == 'h';
+ con.ext_mouse_mode5 = c == 'h';
break;
case 1006: /* SGR extended mouse mode */
- dev_state.ext_mouse_mode6 = c == 'h';
+ con.ext_mouse_mode6 = c == 'h';
break;
case 1015: /* Urxvt extended mouse mode */
- dev_state.ext_mouse_mode15 = c == 'h';
+ con.ext_mouse_mode15 = c == 'h';
break;
case 2000: /* Raw keyboard mode */
@@ -1717,23 +1758,23 @@ fhandler_console::char_command (char c)
break;
default: /* Ignore */
- syscall_printf ("unknown h/l command: %d", dev_state.args_[0]);
+ syscall_printf ("unknown h/l command: %d", con.args[0]);
break;
}
break;
case 'J':
- switch (dev_state.args_[0])
+ switch (con.args[0])
{
case 0: /* Clear to end of screen */
clear_screen (cl_curr_pos, cl_curr_pos, cl_disp_end, cl_disp_end);
break;
case 1: /* Clear from beginning of screen to cursor */
- cursor_get (&x, &y);
clear_screen (cl_disp_beg, cl_disp_beg, cl_curr_pos, cl_curr_pos);
break;
case 2: /* Clear screen */
+ cursor_get (&x, &y);
clear_screen (cl_disp_beg, cl_disp_beg, cl_disp_end, cl_disp_end);
- cursor_set (true, 0, 0);
+ cursor_set (false, x, y);
break;
default:
goto bad_escape;
@@ -1741,19 +1782,19 @@ fhandler_console::char_command (char c)
break;
case 'A':
- cursor_rel (0, -(dev_state.args_[0] ? dev_state.args_[0] : 1));
+ cursor_rel (0, -(con.args[0] ?: 1));
break;
case 'B':
- cursor_rel (0, dev_state.args_[0] ? dev_state.args_[0] : 1);
+ cursor_rel (0, con.args[0] ?: 1);
break;
case 'C':
- cursor_rel (dev_state.args_[0] ? dev_state.args_[0] : 1, 0);
+ cursor_rel (con.args[0] ?: 1, 0);
break;
case 'D':
- cursor_rel (-(dev_state.args_[0] ? dev_state.args_[0] : 1),0);
+ cursor_rel (-(con.args[0] ?: 1),0);
break;
case 'K':
- switch (dev_state.args_[0])
+ switch (con.args[0])
{
case 0: /* Clear to end of line */
clear_screen (cl_curr_pos, cl_curr_pos, cl_disp_end, cl_curr_pos);
@@ -1770,78 +1811,78 @@ fhandler_console::char_command (char c)
break;
case 'H':
case 'f':
- cursor_set (true, (dev_state.args_[1] ? dev_state.args_[1] : 1) - 1,
- (dev_state.args_[0] ? dev_state.args_[0] : 1) - 1);
+ cursor_set (true, (con.args[1] ?: 1) - 1,
+ (con.args[0] ?: 1) - 1);
break;
case 'G': /* hpa - position cursor at column n - 1 */
cursor_get (&x, &y);
- cursor_set (false, (dev_state.args_[0] ? dev_state.args_[0] - 1 : 0), y);
+ cursor_set (false, (con.args[0] ? con.args[0] - 1 : 0), y);
break;
case 'd': /* vpa - position cursor at line n */
cursor_get (&x, &y);
- cursor_set (true, x, (dev_state.args_[0] ? dev_state.args_[0] - 1 : 0));
+ cursor_set (true, x, (con.args[0] ? con.args[0] - 1 : 0));
break;
case 's': /* Save cursor position */
- cursor_get (&dev_state.savex, &dev_state.savey);
- dev_state.savey -= dev_state.info.winTop;
+ cursor_get (&con.savex, &con.savey);
+ con.savey -= con.b.srWindow.Top;
break;
case 'u': /* Restore cursor position */
- cursor_set (true, dev_state.savex, dev_state.savey);
+ cursor_set (true, con.savex, con.savey);
break;
case 'I': /* TAB */
cursor_get (&x, &y);
cursor_set (false, 8 * (x / 8 + 1), y);
break;
case 'L': /* AL - insert blank lines */
- dev_state.args_[0] = dev_state.args_[0] ? dev_state.args_[0] : 1;
+ n = con.args[0] ?: 1;
cursor_get (&x, &y);
- scroll_screen (0, y, -1, -1, 0, y + dev_state.args_[0]);
+ scroll_buffer (0, y, -1, -1, 0, y + n);
break;
case 'M': /* DL - delete lines */
- dev_state.args_[0] = dev_state.args_[0] ? dev_state.args_[0] : 1;
+ n = con.args[0] ?: 1;
cursor_get (&x, &y);
- scroll_screen (0, y + dev_state.args_[0], -1, -1, 0, y);
+ scroll_buffer (0, y + n, -1, -1, 0, y);
break;
case '@': /* IC - insert chars */
- dev_state.args_[0] = dev_state.args_[0] ? dev_state.args_[0] : 1;
+ n = con.args[0] ?: 1;
cursor_get (&x, &y);
- scroll_screen (x, y, -1, y, x + dev_state.args_[0], y);
+ scroll_buffer (x, y, -1, y, x + n, y);
break;
case 'P': /* DC - delete chars */
- dev_state.args_[0] = dev_state.args_[0] ? dev_state.args_[0] : 1;
+ n = con.args[0] ?: 1;
cursor_get (&x, &y);
- scroll_screen (x + dev_state.args_[0], y, -1, y, x, y);
+ scroll_buffer (x + n, y, -1, y, x, y);
break;
case 'S': /* SF - Scroll forward */
- dev_state.args_[0] = dev_state.args_[0] ? dev_state.args_[0] : 1;
- scroll_screen (0, dev_state.args_[0], -1, -1, 0, 0);
+ n = con.args[0] ?: 1;
+ scroll_buffer_screen (0, n, -1, -1, 0, 0);
break;
case 'T': /* SR - Scroll down */
- dev_state.fillin_info (get_output_handle ());
- dev_state.args_[0] = dev_state.args_[0] ? dev_state.args_[0] : 1;
- scroll_screen (0, 0, -1, -1, 0, dev_state.info.winTop + dev_state.args_[0]);
+ con.fillin (get_output_handle ());
+ n = con.b.srWindow.Top + con.args[0] ?: 1;
+ scroll_buffer_screen (0, 0, -1, -1, 0, n);
break;
case 'X': /* ec - erase chars */
- dev_state.args_[0] = dev_state.args_[0] ? dev_state.args_[0] : 1;
+ n = con.args[0] ?: 1;
cursor_get (&x, &y);
- scroll_screen (x + dev_state.args_[0], y, -1, y, x, y);
- scroll_screen (x, y, -1, y, x + dev_state.args_[0], y);
+ scroll_buffer (x + n, y, -1, y, x, y);
+ scroll_buffer (x, y, -1, y, x + n, y);
break;
case 'Z': /* Back tab */
cursor_get (&x, &y);
cursor_set (false, ((8 * (x / 8 + 1)) - 8), y);
break;
case 'b': /* Repeat char #1 #2 times */
- if (dev_state.insert_mode)
+ if (con.insert_mode)
{
cursor_get (&x, &y);
- scroll_screen (x, y, -1, y, x + dev_state.args_[1], y);
+ scroll_buffer (x, y, -1, y, x + con.args[1], y);
}
- while (dev_state.args_[1]--)
- WriteFile (get_output_handle (), &dev_state.args_[0], 1, (DWORD *) &x, 0);
+ while (con.args[1]--)
+ WriteFile (get_output_handle (), &con.args[0], 1, (DWORD *) &x, 0);
break;
case 'c': /* u9 - Terminal enquire string */
- if (dev_state.saw_greater_than_sign)
+ if (con.saw_greater_than_sign)
/* Generate Secondary Device Attribute report, using 67 = ASCII 'C'
to indicate Cygwin (convention used by Rxvt, Urxvt, Screen, Mintty),
and cygwin version for terminal version. */
@@ -1854,12 +1895,12 @@ fhandler_console::char_command (char c)
puts_readahead (buf);
break;
case 'n':
- switch (dev_state.args_[0])
+ switch (con.args[0])
{
case 6: /* u7 - Cursor position request */
cursor_get (&x, &y);
- y -= dev_state.info.winTop;
- /* x -= dev_state.info.winLeft; // not available yet */
+ y -= con.b.srWindow.Top;
+ /* x -= con.b.srWindow.Left; // not available yet */
__small_sprintf (buf, "\033[%d;%dR", y + 1, x + 1);
puts_readahead (buf);
break;
@@ -1868,8 +1909,8 @@ fhandler_console::char_command (char c)
}
break;
case 'r': /* Set Scroll region */
- dev_state.scroll_region.Top = dev_state.args_[0] ? dev_state.args_[0] - 1 : 0;
- dev_state.scroll_region.Bottom = dev_state.args_[1] ? dev_state.args_[1] - 1 : -1;
+ con.scroll_region.Top = con.args[0] ? con.args[0] - 1 : 0;
+ con.scroll_region.Bottom = con.args[1] ? con.args[1] - 1 : -1;
cursor_set (true, 0, 0);
break;
case 'g': /* TAB set/clear */
@@ -1901,7 +1942,7 @@ fhandler_console::write_normal (const unsigned char *src,
const unsigned char *found = src;
size_t ret;
mbstate_t ps;
- UINT cp = dev_state.get_console_cp ();
+ UINT cp = con.get_console_cp ();
const char *charset;
mbtowc_p f_mbtowc;
@@ -1951,7 +1992,7 @@ fhandler_console::write_normal (const unsigned char *src,
/* Valid multibyte sequence? Process. */
if (nfound)
{
- buf_len = dev_state.str_to_con (f_mbtowc, charset, write_buf,
+ buf_len = con.str_to_con (f_mbtowc, charset, write_buf,
(const char *) trunc_buf.buf,
nfound - trunc_buf.buf);
if (!write_console (write_buf, buf_len, done))
@@ -1997,7 +2038,7 @@ do_print:
if (found != src)
{
DWORD len = found - src;
- buf_len = dev_state.str_to_con (f_mbtowc, charset, write_buf,
+ buf_len = con.str_to_con (f_mbtowc, charset, write_buf,
(const char *) src, len);
if (!buf_len)
{
@@ -2007,11 +2048,11 @@ do_print:
return 0;
}
- if (dev_state.insert_mode)
+ if (con.insert_mode)
{
int x, y;
cursor_get (&x, &y);
- scroll_screen (x, y, -1, y, x + buf_len, y);
+ scroll_buffer (x, y, -1, y, x + buf_len, y);
}
if (!write_console (write_buf, buf_len, done))
@@ -2032,26 +2073,26 @@ do_print:
switch (base_chars[*found])
{
case SO: /* Shift Out: Invoke G1 character set (ISO 2022) */
- dev_state.iso_2022_G1 = true;
+ con.iso_2022_G1 = true;
break;
case SI: /* Shift In: Invoke G0 character set (ISO 2022) */
- dev_state.iso_2022_G1 = false;
+ con.iso_2022_G1 = false;
break;
case BEL:
beep ();
break;
case ESC:
- dev_state.state_ = gotesc;
+ con.state = gotesc;
break;
case DWN:
cursor_get (&x, &y);
if (y >= srBottom)
{
- if (y >= dev_state.info.winBottom && !dev_state.scroll_region.Top)
+ if (y >= con.b.srWindow.Bottom && !con.scroll_region.Top)
WriteConsoleW (get_output_handle (), L"\n", 1, &done, 0);
else
{
- scroll_screen (0, srTop + 1, -1, srBottom, 0, srTop);
+ scroll_buffer (0, srTop + 1, -1, srBottom, 0, srTop);
y--;
}
}
@@ -2123,8 +2164,8 @@ fhandler_console::write (const void *vsrc, size_t len)
while (src < end)
{
- paranoid_printf ("char %0c state is %d", *src, dev_state.state_);
- switch (dev_state.state_)
+ paranoid_printf ("char %0c state is %d", *src, con.state);
+ switch (con.state)
{
case normal:
src = write_normal (src, end);
@@ -2134,112 +2175,111 @@ fhandler_console::write (const void *vsrc, size_t len)
case gotesc:
if (*src == '[') /* CSI Control Sequence Introducer */
{
- dev_state.state_ = gotsquare;
- dev_state.saw_question_mark = false;
- dev_state.saw_greater_than_sign = false;
- dev_state.saw_space = false;
- for (dev_state.nargs_ = 0; dev_state.nargs_ < MAXARGS; dev_state.nargs_++)
- dev_state.args_[dev_state.nargs_] = 0;
- dev_state.nargs_ = 0;
+ con.state = gotsquare;
+ con.saw_question_mark = false;
+ con.saw_greater_than_sign = false;
+ con.saw_space = false;
+ for (con.nargs = 0; con.nargs < MAXARGS; con.nargs++)
+ con.args[con.nargs] = 0;
+ con.nargs = 0;
}
else if (*src == ']') /* OSC Operating System Command */
{
- dev_state.rarg = 0;
- dev_state.my_title_buf[0] = '\0';
- dev_state.state_ = gotrsquare;
+ con.rarg = 0;
+ con.my_title_buf[0] = '\0';
+ con.state = gotrsquare;
}
else if (*src == '(') /* Designate G0 character set */
{
- dev_state.state_ = gotparen;
+ con.state = gotparen;
}
else if (*src == ')') /* Designate G1 character set */
{
- dev_state.state_ = gotrparen;
+ con.state = gotrparen;
}
else if (*src == 'M') /* Reverse Index (scroll down) */
{
- dev_state.fillin_info (get_output_handle ());
- scroll_screen (0, 0, -1, -1, 0, dev_state.info.winTop + 1);
- dev_state.state_ = normal;
+ con.fillin (get_output_handle ());
+ scroll_buffer_screen (0, 0, -1, -1, 0, 1);
+ con.state = normal;
}
else if (*src == 'c') /* RIS Full Reset */
{
- dev_state.set_default_attr ();
- dev_state.vt100_graphics_mode_G0 = false;
- dev_state.vt100_graphics_mode_G1 = false;
- dev_state.iso_2022_G1 = false;
+ con.set_default_attr ();
+ con.vt100_graphics_mode_G0 = false;
+ con.vt100_graphics_mode_G1 = false;
+ con.iso_2022_G1 = false;
cursor_set (false, 0, 0);
clear_screen (cl_buf_beg, cl_buf_beg, cl_buf_end, cl_buf_end);
- dev_state.state_ = normal;
+ con.state = normal;
}
else if (*src == '8') /* DECRC Restore cursor position */
{
- cursor_set (true, dev_state.savex, dev_state.savey);
- dev_state.state_ = normal;
+ cursor_set (false, con.savex, con.savey);
+ con.state = normal;
}
else if (*src == '7') /* DECSC Save cursor position */
{
- cursor_get (&dev_state.savex, &dev_state.savey);
- dev_state.savey -= dev_state.info.winTop;
- dev_state.state_ = normal;
+ cursor_get (&con.savex, &con.savey);
+ con.state = normal;
}
else if (*src == 'R') /* ? */
- dev_state.state_ = normal;
+ con.state = normal;
else
{
- dev_state.state_ = normal;
+ con.state = normal;
}
src++;
break;
case gotarg1:
if (isdigit (*src))
{
- dev_state.args_[dev_state.nargs_] = dev_state.args_[dev_state.nargs_] * 10 + *src - '0';
+ con.args[con.nargs] = con.args[con.nargs] * 10 + *src - '0';
src++;
}
else if (*src == ';')
{
src++;
- dev_state.nargs_++;
- if (dev_state.nargs_ >= MAXARGS)
- dev_state.nargs_--;
+ con.nargs++;
+ if (con.nargs >= MAXARGS)
+ con.nargs--;
}
else if (*src == ' ')
{
src++;
- dev_state.saw_space = true;
- dev_state.state_ = gotcommand;
+ con.saw_space = true;
+ con.state = gotcommand;
}
else
- dev_state.state_ = gotcommand;
+ con.state = gotcommand;
break;
case gotcommand:
char_command (*src++);
- dev_state.state_ = normal;
+ con.state = normal;
break;
case gotrsquare:
if (isdigit (*src))
- dev_state.rarg = dev_state.rarg * 10 + (*src - '0');
- else if (*src == ';' && (dev_state.rarg == 2 || dev_state.rarg == 0))
- dev_state.state_ = gettitle;
+ con.rarg = con.rarg * 10 + (*src - '0');
+ else if (*src == ';' && (con.rarg == 2 || con.rarg == 0))
+ con.state = gettitle;
else
- dev_state.state_ = eattitle;
+ con.state = eattitle;
src++;
break;
case eattitle:
case gettitle:
{
- int n = strlen (dev_state.my_title_buf);
+ int n = strlen (con.my_title_buf);
if (*src < ' ')
{
- if (*src == '\007' && dev_state.state_ == gettitle)
- set_console_title (dev_state.my_title_buf);
- dev_state.state_ = normal;
+ if (*src == '\007' && con.state == gettitle)
+ set_console_title (con.my_title_buf);
+ con.state = normal;
}
else if (n < TITLESIZE)
{
- dev_state.my_title_buf[n++] = *src;
- dev_state.my_title_buf[n] = '\0';
+ con.my_title_buf[n++] = *src;
+ con.my_title_buf[n] = '\0';
}
src++;
break;
@@ -2247,38 +2287,38 @@ fhandler_console::write (const void *vsrc, size_t len)
case gotsquare:
if (*src == ';')
{
- dev_state.state_ = gotarg1;
- dev_state.nargs_++;
+ con.state = gotarg1;
+ con.nargs++;
src++;
}
else if (isalpha (*src))
- dev_state.state_ = gotcommand;
+ con.state = gotcommand;
else if (*src != '@' && !isalpha (*src) && !isdigit (*src))
{
if (*src == '?')
- dev_state.saw_question_mark = true;
+ con.saw_question_mark = true;
else if (*src == '>')
- dev_state.saw_greater_than_sign = true;
+ con.saw_greater_than_sign = true;
/* ignore any extra chars between [ and first arg or command */
src++;
}
else
- dev_state.state_ = gotarg1;
+ con.state = gotarg1;
break;
case gotparen: /* Designate G0 Character Set (ISO 2022) */
if (*src == '0')
- dev_state.vt100_graphics_mode_G0 = true;
+ con.vt100_graphics_mode_G0 = true;
else
- dev_state.vt100_graphics_mode_G0 = false;
- dev_state.state_ = normal;
+ con.vt100_graphics_mode_G0 = false;
+ con.state = normal;
src++;
break;
case gotrparen: /* Designate G1 Character Set (ISO 2022) */
if (*src == '0')
- dev_state.vt100_graphics_mode_G1 = true;
+ con.vt100_graphics_mode_G1 = true;
else
- dev_state.vt100_graphics_mode_G1 = false;
- dev_state.state_ = normal;
+ con.vt100_graphics_mode_G1 = false;
+ con.state = normal;
src++;
break;
}