Commit Graph

564 Commits

Author SHA1 Message Date
Egor Duda 79409dc0a2 * fhandler.h (fhandler_termios::fhandler_termios): Enable fixup
after fork.
* fhandler_console.cc (fhandler_console::fhandler_console): Fixup
after fork is now enabled in the base class constructor.
2001-03-12 20:39:40 +00:00
Christopher Faylor 2b777e2e94 * mkvers.sh: Include config.h so that DEBUGGING is correctly defined. 2001-03-12 16:20:30 +00:00
Christopher Faylor 941fa5ad96 * spawn.cc (spawn_guts): Don't set EXIT_REPARENTING if parent process is not a
cygwin process (suggested by Jason Gouger <cygwin@jason-gouger.com>).
2001-03-12 14:49:29 +00:00
Christopher Faylor d0909d913a * child_info.h: Bump magic number for fork/exec/spawn. 2001-03-11 21:05:49 +00:00
Christopher Faylor 2116a17508 * autoload.cc (noload): Use proper method for multiline strings or newer gcc's
complain.
* exceptions.cc (unused_sig_wrapper): Ditto.
* fhandler.h (fhandler_base): Make get_io_handle and friends return self.
* fhandler_tty.cc (fhandler_pty_common::close_on_exec): Accomodate DEBUGGING
flag to avoid spurious warnings when inheritance is set.
2001-03-11 01:58:23 +00:00
Christopher Faylor 7cf3b655ec * shortcut.c (PATH_ALL_EXEC): Add parentheses to avoid a compiler warning.
* exceptions.cc (setup_handler): Clarify debugging message.
* sigproc.cc (proc_subproc): Remove PROC_CHILDSTOPPED test.  It is handled by
normal PROC_CLEARWAIT case.
(wait_sig): Eliminate "dispatched" tracking.  Remove __SIGCHILDSTOPPED test.
Decrement counter again before jumping out of InterlockedDecrement loop so that
subsequent InterlockedIncrement will keep the counter at the correctly
decremented value and also detect when there are pending signals.
* sigproc.h: Remove __SIGCHILDSTOPPED element.
(procstuff): Remove PROC_CHILDSTOPPED element.
2001-03-10 23:37:50 +00:00
Christopher Faylor e2f2a27ee8 * syscalls.cc (_rename): Set errno to ENOENT when an old path doesn't exist
(from Kazuhiro Fujieda <fujieda@jaist.ac.jp>).  Also set EACCES when directory
is not writable.
2001-03-10 20:25:19 +00:00
Christopher Faylor 6ebccdc110 * syscalls.cc (_read): Change definition to return ssize_t to be consistent
with read.
(_write): Change definition to return ssize_t to be consistent with write.
2001-03-07 20:52:33 +00:00
Christopher Faylor efd76e4140 * sigproc.h (sigthread): Declare new methods. Create new winapi_lock field.
(sigframe:;set): Call get_winapi_lock after frame is set so that signal handler
thread knows not to call SuspendThread.
(sigframe::~sigframe): Release winapi_lock.
* exceptions.cc (sigthread::get_winapi_lock): New method.
(sigthread::release_winapi_lock): New method.
(setup_handler): Use get_winapi_lock to ensure that signalled thread is not
blocked in a Windows API.
* path.h (path_types): Avoid broken GCC warning.
2001-03-07 06:19:34 +00:00
Corinna Vinschen bf11a54f54 * path.cc (suffix_scan::has): Change order of conditionals
to allow checking for .lnk suffixes even if in_suffixes is empty.
2001-03-06 13:05:56 +00:00
Corinna Vinschen 7cdc9feea1 * autoload.c (cygwin_premain0): Add missing parameter.
* binmode.c (cygwin_premain0): Ditto.
        * textmode.c (cygwin_premain0): Ditto.

Patch contributed by Jason Tiller <jtiller@sjm.com> :
        * auto_load.cc: Add "GetKeyboardLayout" entry in the list of
        Win32 User32.DLL exports to provide.
        * fhandler.h (class fhandler_console): Add meta_mask private
        member to remember which keystroke modifiers should generate
        META.
        * fhandler_console.cc (fhandler_console::read): Modify code that
        tests a keystroke for a META-escaped key to use the 'meta_mask'
        variable.
        (fhandler_console::fhandler_console): Add definition for
        variable "meta_mask" used to determine if a keystroke should be
        preceded by META in the client console stream.  Set meta_mask
        based on whether or not user's keyboard language is English -
        non-English keyboards pass AltGr (right <ALT>) unmolested,
        whereas English keyboards now interpret left- and right-<ALT>
        as META.
2001-03-06 12:05:45 +00:00
Corinna Vinschen a887211b00 * include/a.out.h: Add copyright hint.
* include/fcntl.h: Ditto.
        * include/lastlog.h: Ditto.
        * include/memory.h: Ditto.
        * include/mntent.h: Ditto.
        * include/paths.h: Ditto.
        * include/poll.h: Ditto.
        * include/syslog.h: Ditto.
        * include/termio.h: Ditto.
        * include/tzfile.h: Ditto.
        * include/arpa/inet.h: Ditto.
        * include/asm/byteorder.h: Ditto.
        * include/asm/socket.h: Ditto.
        * include/asm/types.h: Ditto.
        * include/cygwin/if.h: Ditto.
        * include/cygwin/mtio.h: Ditto.
        * include/cygwin/rdevio.h: Ditto.
        * include/cygwin/socket.h: Ditto.
        * include/net/if.h: Ditto.
        * include/netinet/in.h: Ditto.
        * include/netinet/in_systm.h: Ditto.
        * include/netinet/ip.h: Ditto.
        * include/netinet/ip_icmp.h: Ditto.
        * include/netinet/tcp.h: Ditto.
        * include/sys/cdefs.h: Ditto.
        * include/sys/cygwin.h: Ditto.
        * include/sys/ioctl.h: Ditto.
        * include/sys/mman.h: Ditto.
        * include/sys/mount.h: Ditto.
        * include/sys/mtio.h: Ditto.
        * include/sys/procfs.h: Ditto.
        * include/sys/resource.h: Ditto.
        * include/sys/smallprint.h: Ditto.
        * include/sys/socket.h: Ditto.
        * include/sys/strace.h: Ditto.
        * include/sys/syslog.h: Ditto.
        * include/sys/sysmacros.h: Ditto.
        * include/sys/termio.h: Ditto.
        * include/sys/termios.h: Ditto.
        * include/sys/uio.h: Ditto.
        * include/sys/un.h: Ditto.
        * include/sys/utsname.h: Ditto.
        * include/sys/vfs.h: Ditto.
        * include/sys/wait.h: Ditto.
        * regexp/regerror.c: Ditto.
        * regexp/regexp.h: Ditto.
        * regexp/regmagic.h: Ditto.
2001-03-05 21:29:24 +00:00
Christopher Faylor 95a8465ba0 * dlopen.c (dlopen): Return NULL when name is NULL (suggested by
chrisiasci@aol.com).
* cygwin.din: Add a new, internally used export - _check_for_executable.
* dcrt0.cc (dll_crt0_1): Set _check_for_executable for older binaries.  Pass
user_data to premain functions.
* fhandler.cc (fhandler_disk_file::open): Only check for executable if the
linked program is intereested in the executable bit.
(fhandler_disk_file::check_execable_p): Delete.
* fhandler.h (executable_states): New enumeration of various states of
executable bit caring.
(fhandler_base::set_execable_p): New method.
* fhandler_termios.cc (fhandler_termios::line_edit): Flag when a signal has
been sent to the tty.  Return -1 when this is so.
* fhandler_console.cc (fhandler_console::read): Return -1 when signal sending
character encountered.
* path.cc (path_conv::check): Record when path refers to a disk device.  Move
executable extension check here.
(check_sysfile): Accomodate new EXEC path states.
(has_suffix): Remove.
(next_suffix): Remove.
(class suffix_scan): New clas.
(suffix_scan::has): New method.
(suffix_scan:next): New method.
(symlink_info::check): Use suffix_scan method to control for scanning for
suffixes.
* path.h (path_conv::exec_state): New method.
* perprocess.h: Make "C" friendly.
* include/cygwin/version.h: Define CYGWIN_VERSION_CHECK_FOR_S_IEXEC.  Bump
CYGWIN_VERSION_API_MINOR.
* include/sys/cygwin.h: Change premain declarations.
* winsup.h: Move __cplusplus test to after builtin defines.
2001-03-05 06:28:25 +00:00
Egor Duda 306c4b6737 * fhandler.h (class fhandler_tty_common): New mutex and event to
syncronize input on master tty with slave tty.
* fhandler_tty.cc (fhandler_pty_master::accept_input): Use them to
syncronize with slave.
* fhandler_tty.cc (fhandler_tty_slave::read): Use input mutex and
event to syncronize with master. Do not limit amount of data read
from master to vmin value. Interrupt on signal and return already
read data, if any.
* fhandler_tty.cc (fhandler_tty_slave::open): Handle input mutex and
event.
* fhandler_tty.cc (fhandler_tty_common::close): Ditto.
* fhandler_tty.cc (fhandler_tty_common::set_close_on_exec): Ditto.
* fhandler_tty.cc (fhandler_tty_common::fixup_after_fork): Ditto.
* fhandler_tty.cc (fhandler_tty_common::dup): Ditto.
* tty.h (tty::open_input_mutex): New function.
* tty.cc (tty::common_init): Create input mutex and event.
2001-03-04 15:34:25 +00:00
Corinna Vinschen ed94def22d * dir.cc (readdir): Fix creating path in symlink check. 2001-03-02 12:33:50 +00:00
Corinna Vinschen e03f5f7338 * dir.cc (readdir): Fix shortcut==symlink condition.
* environ.cc: Add extern decl for `allow_winsymlinks'.
        (struct parse_thing): Add entry for `[no]winsymlinks'.
        * path.cc (symlink): Change to be able to create both,
        symlink==shortcut and symlink==systemfile, dependent of
        the setting of `allow_winsymlinks'.
        * security.cc (cygwin_logon_user): Add debug output.
        * shortcut.c: Add defines from path.h.
        (has_exec_chars): Copy from path.h.
        (check_shortcut): Check for executable file condition if not a
        shortcut.
2001-03-02 11:41:09 +00:00
Christopher Faylor 903c330dbe * exceptions.cc (sig_handle_tty_stop): Ignore attempts to suspend a process if
started by non-cygwin parent.
2001-03-02 02:09:40 +00:00
Christopher Faylor d80999a1c4 * select.cc (peek_console): Don't report read_ready on mouse events unless we
are looking for mouse events.
* fhandler.h (fhandler_console::mouse_aware): New method.
2001-03-02 01:55:21 +00:00
Corinna Vinschen 2de7601434 * uinfo.cc: Eliminate `#include <wchar.h>'. 2001-02-28 14:14:03 +00:00
Egor Duda 739db26a31 * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Determine
drive geometry or partition size to allow seeking from the end of
raw floppy device. Don't allow positioning past the end of media or
to offsets bigger then max off_t.
2001-02-28 09:59:54 +00:00
Egor Duda a53136cc46 * fhandler.h (class fhandler_console): Make all variables that
describe "state" of console to be members of fhandler_console.
default_color is now the color which is set when console recieves
reset command.
* fhandler_console.cc (fhandler_console::fhandler_console): Turn
mouse handling and raw keyboard mode off by default. Initialize
state information.
* fhandler.cc (fhandler_console::set_raw_win32_keyboard_mode): New
function.
* fhandler_console.cc (fhandler_console::set_default_attr): New
function. Reset console attributes to default values.
* fhandler_console.cc (fhandler_console::open): Reset attributes.
* fhandler_console.cc (fhandler_console::get_win32_attr): New function.
Calculate win32-style console attribute based on terminal attributes.
* fhandler_console.cc (fhandler_console::set_cursor_maybe): Use
member variable.
* fhandler_console.cc (fhandler_console::read): If in raw-win32
keyboard mode, encode win32 keyboard events in \033{x;y;z;t;u;wK
sequences.
* fhandler_console.cc (fhandler_console::dup): Copy all state
information to the dup()ed handle.
* fhandler_console.cc (fhandler_console::scroll_screen): Use current
fill-in	attribute.
* fhandler_console.cc (fhandler_console::clear_screen): Ditto.
* fhandler_console.cc (fhandler_console::char_command): Check if we
saw '?' symbol by member variable. Set terminal	attributes on \033[Xm
commands. \033[24m - turn off underline mode, \033[27m - turn off
reverse mode, \033[39m - restore default foreground color.
\033[49m - restore default background color. \033[2000h - turn on raw
keyboard mode, \033[2000l - turn off raw keyboard mode.
* fhandler_console.cc (fhandler_console::write): Set attribues to
default values on reset command.
2001-02-27 09:14:35 +00:00
Christopher Faylor 5b331f1ef1 * times.cc (settimeofday): Replace function stub with working code. 2001-02-26 22:36:09 +00:00
Corinna Vinschen 88429768bb * strace.cc (strace::vprntf): Move prntf functionality to this function
adding an va_list interface to strace.
        (strace::printf): Calls strace::vprntf now.
        (strace_printf): New function providing an extern "C" interface to
        trace output.
        * include/sys/strace.h: Make plain C clean.
        (class strace): Add `vprntf' method.
2001-02-26 09:50:24 +00:00
Corinna Vinschen 6626ebfef7 * shortcut.c: Remove #include <sys/strace.h>. 2001-02-25 23:14:52 +00:00
Corinna Vinschen 649033a811 * path.cc (symlink): Add a ".lnk" suffix regardless. Add a comment. 2001-02-25 09:34:00 +00:00
Corinna Vinschen 80ed95f2eb * shortcut.c: Change symlink condition. 2001-02-25 09:19:35 +00:00
Corinna Vinschen 675412e9d6 * mmap.cc (fhandler_disk_file::mmap): Use `addr' correctly.
* fhandler_mem.cc (fhandler_dev_mem::mmap): Ditto.
2001-02-23 09:49:19 +00:00
Corinna Vinschen 659b480b8a * path.cc (symlink): Keep relative paths relative in the DOS
path inside of a shortcut. If that's impossible or the target
        path is already absolute save an absolute path.
2001-02-22 16:26:13 +00:00
Corinna Vinschen ff413a9894 * path.cc (symlink): Keep relative paths relative in the DOS
path inside of a shortcut. If that's impossible for some
        reason, save an absolute path.
2001-02-22 16:14:59 +00:00
Corinna Vinschen c5a4eacc69 * cygerrno.h: Revert previous patch.
* errno.cc: Ditto.
        * dir.cc: Eliminate `dir_suffixes'.
        (opendir): Remove usage of `dir_suffixes'.
        (rmdir): Ditto.
        * fhandler.cc (fhandler_disk_file::open): Remove usage of
        `inner_suffixes'.
        * path.cc: Rename `inner_suffixes' to `lnk_suffixes'.
        (path_conv::check): Remove usage of `inner_suffixes'.
        (symlink): Ditto.
        (symlink_info::check): Handle checking for `.lnk' in path_conv
        exclusively here.
        (chdir): Remove usage of `dir_suffixes'.
        * shortcut.c: Eliminate debug_printf lines.
        (check_shortcut): Don't set error except on failing ReadFile.
        * spawn.cc: Remove ".lnk" from `std_suffixes'.
        * syscalls.cc (_unlink): Remove usage of `inner_suffixes'.
        Remove ".lnk" from `stat_suffixes'.
        (_rename): Add check for renaming a symlink to keep the ".lnk"
        suffix after renaming.
2001-02-22 14:51:16 +00:00
Corinna Vinschen 79e56091c9 * shortcut.c: New file. Provides a C interface to reading of
Windows shortcuts to avoid compiler flag `-fvtable-thunks'.
        * shortcut.h: Ditto.
        * Makefile.in: Add shortcut.o to DLL_OFILES.
        * cygerrno.h: Provide a C interface to `geterrno_from_win_error' for
        using in shortcut.c.
        * errno.cc (geterrno_from_win_error): Define as extern "C".
        * path.cc (struct symlink_info): Remove methods `check_shortcut' and
        `check_sysfile'.
        (shortcut_header): Move to shortcut.c.
        (shortcut_initalized): Ditto.
        (create_shortcut_header): Ditto.
        (cmp_shortcut_header): Ditto.
        (symlink_info::check_shortcut): Ditto. Reorganize as a plain C function.
        (symlink_info::check_sysfile): Redefine as a global function using the
        same parameter list as `check_shortcut' for clearness.
        (symlink_info::check): Change parameter list for calls to
        `check_shortcut' and `check_sysfile'.
2001-02-22 12:56:36 +00:00
Corinna Vinschen 87e6b0981f * fhandler.cc (fhandler_disk_file::open): Use `inner_suffixes' when
resolving real_path.
        * path.cc (symlink): Ditto for win32_topath.
2001-02-22 11:06:25 +00:00
Corinna Vinschen 10b06c5ee0 * Makefile.in: Add `-lshell32 -luuid' to link pass for new-cygwin1.dll.
* autoload.cc: Add LoadDLLinitfunc for ole32.dll.
        Add LoadDLLfuncEx statements for CoInitialize@4, CoUninitialize@0
        and CoCreateInstance@20.
        * dir.cc (dir_suffixes): New datastructure.
        (readdir): Check for R/O *.lnk files to hide the suffix.
        (opendir): Use `dir_suffixes' in path conversion.
        (rmdir): Ditto.
        * fhandler.cc (fhandler_disk_file::fstat): Add S_IFLNK flag
        before calling `get_file_attribute'. Take FILE_ATTRIBUTE_READONLY
        into account only if the file is no symlink.
        * path.cc (inner_suffixes): New datastructure.
        (SYMLINKATTR): Eliminated.
        (path_conv::check): Use `inner_suffixes' on inner path components.
        (shortcut_header): New global static variable.
        (shortcut_initalized): Ditto.
        (create_shortcut_header): New function.
        (cmp_shortcut_header): Ditto.
        (symlink): Create symlinks by creating windows shortcuts. Preserve
        the old code.
        (symlink_info::check_shortcut): New method.
        (symlink_info::check_sysfile): Ditto.
        (symlink_info::check): Check for shortcuts. Move code reading
        old system attribute symlinks into symlink_info::check_sysfile().
        (chdir): Use `dir_suffixes' in path conversion.
        * security.cc (get_file_attribute): Check for S_IFLNK flag.
        Force 0777 permissions then.
        * spawn.cc (std_suffixes): Add ".lnk" suffix.
        * syscalls.cc (_unlink): Use `inner_suffixes' in path conversion.
        Check for shortcut symlinks to eliminate R/O attribute before
        calling DeleteFile().
        (stat_suffixes): Add ".lnk" suffix.
        (stat_worker): Force 0777 permissions if file is a symlink.
2001-02-21 21:49:37 +00:00
Egor Duda 0917ed5950 * sigproc.cc (getsem): Make semaphore always non-inheritable. 2001-02-21 11:40:22 +00:00
Christopher Faylor 441d7aeef1 * dcrt0.cc (locale_init): Remove. 2001-02-20 03:28:01 +00:00
Christopher Faylor f97e7d754c * cygwin.din: Export rand48 functions.
* thread.cc (MTinterface::Init): Remove the initialization of `reent_data'.
* dcrt0.cc: Add the initalizer to the declaration of `reent_data'.
* include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 35.
2001-02-20 02:53:55 +00:00
Egor Duda fc68bf34bb * signal.cc (signal): Prohibit setting handlers for SIGKILL and SIGSTOP
* signal.cc (sigaction): Ditto
* syscalls.cc (_lseek): Return EINVAL on invalid input
2001-02-16 18:49:20 +00:00
Christopher Faylor ee2c7251d0 * dlfcn.cc (dlopen): Do not call LoadLibrary with a NULL pointer, when the
library is not found
2001-02-14 23:45:56 +00:00
Christopher Faylor 8f8e7442bb * fhandler_console.cc (fhandler_console::char_command): Ignore unknown
rendition codes in \033[xx;yym control sequences
2001-02-14 22:00:09 +00:00
Christopher Faylor cde0c2fbca * fork.cc (fork_parent): Return EAGAIN when can't record pid.
* pinfo.h (pinfo::remember): Return value of call to proc_subproc.
* sigproc.cc (proc_subproc): Return error if can't record pid.
2001-02-10 04:20:52 +00:00
Christopher Faylor c41482c7ee * syscalls.cc (mknod): Add valid parameters. 2001-02-09 17:17:34 +00:00
Corinna Vinschen 889109ab1f * mmap.cc (mmap): Check for reusing a mapping only on MAP_SHARED
and on MAP_PRIVATE|MAP_ANON in the special case of offset 0.
2001-02-08 21:10:45 +00:00
Corinna Vinschen db49d0b530 * mmap.cc (class list): Add member `hash'.
(list::list): Initialize `hash'.
        (list::get_list_by_fd): Use filepath hash value to get the correct
        mapping list if it's not an anonymous mapping.
        (map::add_list): Initialize `hash' with filepath hash value.
        (mmap): Check for reusing a mapping only on MAP_SHARED.
2001-02-08 21:02:36 +00:00
Christopher Faylor 91d385fed3 * signal.cc (killpg): Correct first argument. 2001-02-07 23:48:09 +00:00
Corinna Vinschen 9182099c10 * autoload.cc: Add LoadDLLinitfunc for iphlpapi.dll.
Add LoadDLLfuncEx statements for GetIfTable@12 and GetIpAddrTable@12.
        * fhandler_socket.cc (fhandler_socket::ioctl): Move variable
        definitions to the beginning of the function to allow better debugging.
        Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC and SIOCGIFMTU.
        * net.cc: Include iphlpapi.h.
        (get_2k_ifconf): Rewritten. Uses IP Helper API now.
        (get_nt_ifconf): Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC
        and SIOCGIFMTU.
        (get_95_ifconf): Ditto. Renamed from `get_9x_ifconf'.
        (get_ifconf): Name loopback `lo' instead of `lo0' as in Linux.
        Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC and SIOCGIFMTU.
        Call `get_95_ifconf' only on Windows 95, `get_nt_ifconf' only
        on Windows NT < Service Pack 3, `get_2k_ifconf otherwise.
        * include/asm/socket.h: Add defines for SIOCGIFHWADDR, SIOCGIFMETRIC
        and SIOCGIFMTU.
        * include/cygwin/if.h: Add `ifr_hwaddr', `ifr_metric' and `ifr_mtu'.
        (struct ifreq): Add `ifru_hwaddr'.
2001-02-07 22:50:50 +00:00
Corinna Vinschen d7ed877ba3 * syscalls.cc (stat_worker): Add a check for the special case when
a process creates a file using mode 000 using ntsec.
2001-02-06 14:07:02 +00:00
Corinna Vinschen ae9b22c69b * fhandler.cc (fhandler_base::open): Always add GENERIC_READ access
when opening raw disk devices.
        * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Implement bytewise
        access.
        * fhandler_raw.cc (fhandler_dev_raw::open): Always open raw disk device
        binary.
        (fhandler_dev_raw::raw_write): Don't drop read buffer content when
        writing after read.
2001-02-05 16:10:06 +00:00
Corinna Vinschen cada03f92f * mmap.cc (mmap_record::fixup_map): New method to duplicate
the memory protection in a just forked child.
        (mmap): Realign gran_len to page boundary only on anonymous
        mapping before saving in the mmap_record.
        (munmap): Cleanup code.
        (msync): Ditto.
        (fixup_mmaps_after_fork): Ditto. Call mmap_record::fixup_map now.
2001-02-05 12:36:41 +00:00
Christopher Faylor 47f810920a * cygheap.cc (creturn): Correctly calculate cygheap_max. 2001-02-02 04:32:02 +00:00
Christopher Faylor f8da150758 * shared.cc (shared_info::initialize): Reduce size of heap. 2001-01-31 15:06:06 +00:00