Commit Graph

477 Commits

Author SHA1 Message Date
Corinna Vinschen 1f0f8e127c * cygheap.cc (cygheap_root::cygheap_root): New function.
(cygheap_root::~cygheap_root): Ditto.
        (cygheap_root::operator=): Ditto.
        (cygheap_user::~cygheap_user): Ditto.
        (cygheap_user::set_name): Ditto.
        (cygheap_user::set_logsrv): Ditto.
        (cygheap_user::set_domain): Ditto.
        (cygheap_user::set_sid): Ditto.
        * cygheap.h (cygheap_root): New class.
        (cygheap_user): Ditto.
        (init_cygheap): Change type of `root' member to cygheap_root.
        Add `user' member.
        * dir.cc (opendir): Use new `cygheap_root' class.
        * dcrt0.cc (dll_crt0_1): Use new `cygheap_user' class.
        * fork.cc (fork_parent): Ditto.
        * grp.cc (getgroups): Ditto.
        * passwd.cc (search_for): Ditto.
        * path.cc: Use new `cygheap_root' class throughout.
        * pinfo.h (_pinfo): Remove `use_psid'. Move `username', `psid',
        `logsrv', `domain', `orig_{uid,gid}' and `real_{uid,gid}' to
        cygheap_user class.
        * security.cc: Use new `cygheap_user' class throughout.
        * shared.cc (sec_user): Ditto.
        * sigproc.cc (proc_subproc): Remove copy statements for user
        related information moved to `cygheap_user' class.
        * spawn.cc (spawn_guts): Invalidate current chroot settings
        when creating Windows environment. Use new `cygheap_user' class.
        * syscalls.cc: Use new `cygheap_user' class throughout.
        * uinfo.cc: Ditto.
        * uinfo.cc (internal_getlogin): Change parameters to reflect the
        move of user information to cygheap.
2000-11-15 00:13:09 +00:00
Corinna Vinschen fe8c097112 * dir.cc (rewinddir): Always set __d_position = 0, so next
call to readdir() will restart the directory scan.
2000-11-14 16:06:52 +00:00
Christopher Faylor a4785603b8 * cygheap.h (init_cygheap): New struct holding values that live in the Cygwin
heap.
* child_info.h (child_info): Change pointer type of cygheap to init_cygheap.
* cygheap.cc (init_cheap): Point cygheap_max after contents of cygheap.  Move
some stuff into cygheap.h.
* dir.cc (opendir): Change to use root and rootlen in cygheap rather than in
myself.
(mkdir): Change to use umask in cygheap rather than in myself.
* path.cc: Ditto, throughout.
* syscalls.cc (_open): Ditto.  Change to use umask in cygheap rather than in
myself.
(chroot): Change to allocate root dir on the cygwin heap.
(umask): Change to use umask in cygheap rather than in myself.
(cygwin_bind): Ditto.
* sigproc.cc (proc_subproc): Don't copy umask or root stuff as this happens
automatically now.
* pinfo.h (_pinfo): Migrate stuff out of here and into init_cheap.
* dcrt0.cc (dll_crt0_1): Call cygheap_init later in startup for first cygwin
process.
2000-11-14 05:53:32 +00:00
Christopher Faylor 70a11195b9 * path.cc (get_device_number): Allow /dev/ttySn to designate a com port. 2000-11-13 04:06:41 +00:00
Christopher Faylor 49421cd9c5 * path.h: Add __attribute__ ((regparm(x))) to commonly used functions.
* pinfo.h: Ditto.
* sigproc.h: Ditto.
* sync.h: Ditto.
2000-11-12 04:57:41 +00:00
Christopher Faylor 6ccb6bcf3d * dcrt0.cc: New global variable `ignore_case_with_glob'.
(dll_crt0_1): Disable case-insensitive globbing before calling `main'.
* environ.cc (glob_init): New static function to set or clear
`ignore_case_with_glob'.
(known): Changed "glob" entry to call `glob_init'.
* glob.c (match): Use case-insensitive globbing if needed.
2000-11-11 05:36:34 +00:00
Christopher Faylor 466ebd61d3 remove include/rapi.h 2000-11-09 18:07:16 +00:00
Corinna Vinschen edd7573015 * dir.cc (readdir): Avoid reading from the beginning when
readdir is called after a previous call has returned NULL.
2000-11-09 13:32:33 +00:00
Christopher Faylor 3aae15c9ba Increase cygwin heap size. 2000-11-09 02:39:45 +00:00
Christopher Faylor c5d03f3dca * select.cc (peek_pipe): Deal with pending newline in pty_master. 2000-11-09 02:03:33 +00:00
Christopher Faylor 9bc846bd3d * environ.cc (_addenv): malloc space for setenv if cygwin1.dll is used in
conjunction with older binaries.
(environ_init): Ditto.
* external.cc (get_cygdrive_info): New function.
* external.cc (get_cygdrive_prefixes): Change to use get_cygdrive_info but toss
the user and system flags.
* external.cc (cygwin_internal): Add new CW_GET_CYGDRIVE_INFO case.
* path.cc (mount_info::get_cygdrive_prefixes): Remove method.
* path.cc (mount_info::get_cygdrive_info): New method.  Actually,
get_cygdrive_info is really an enhanced version of get_cygdrive_prefixes
renamed to get_cygdrive_info that also gets the user and system flags.
* shared_info.h (get_cygdrive_prefixes): Remove method.
* shared_info.h (get_cygdrive_info): New method.
* include/cygwin/version.h: Bump minor API version due to adding
CW_GET_CYGDRIVE_INFO to cygwin_internal.
* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_GET_CYGDRIVE_INFO.
2000-11-08 20:36:37 +00:00
Corinna Vinschen 4c25744f86 * autoload.cc: Add autoload statement for `WSASetLastError'.
* net.cc (cygwin_connect): Change error code to WSAEINPROGRESS
        when connect returns WSAEWOULDBLOCK.
2000-11-07 20:01:09 +00:00
Christopher Faylor 64ef9db779 Fix typos. 2000-11-07 19:00:02 +00:00
Christopher Faylor 442a3c7821 Update copyright. 2000-11-07 02:21:33 +00:00
Christopher Faylor c0188ae7cb * dcrt0.cc (sigthread::init): Reinstitute sigthread lock as a critical section.
(dll_crt0_1): Move sigthread lock initialization to earlier in startup.
* exceptions.cc (interrupt_on_return): Remove previous kludgy attempt to detect
an invalid frame.
(call_handler): Eliminate inner for loop.  Grab signal critical section lock
where appropriate.
* sigproc.cc (proc_subproc): Restore uid setting.
* sigproc.h (sigthread): Reinstitute sigthread lock as a critical section.
(sigframe): Grab the sigthread lock before clearing frame to avoid having the
signal thread use an invalid frame.
2000-11-06 23:12:05 +00:00
Christopher Faylor a98b1584c2 * path.cc (mount_info::read_cygdrive_info_from_registry): Use
CYGWIN_INFO_CYGDRIVE_PREFIX, CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX, and
CYGWIN_INFO_CYGDRIVE_FLAGS.
* path.cc (mount_info::write_cygdrive_info_to_registry): Use
CYGWIN_INFO_CYGDRIVE_PREFIX and CYGWIN_INFO_CYGDRIVE_FLAGS.
* path.cc (mount_info::remove_cygdrive_info_from_registry): Ditto.
* path.cc (mount_info::get_cygdrive_prefixes): Use CYGWIN_INFO_CYGDRIVE_PREFIX.
* include/cygwin/version.h: Add CYGWIN_INFO_CYGDRIVE_FLAGS,
CYGWIN_INFO_CYGDRIVE_PREFIX, and CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX.
2000-11-06 16:40:29 +00:00
Christopher Faylor df664bc1a8 * errno.cc (strerror): Change EAGAIN case to return "Resource temporarily
unavailable" instead of "No more processes".
2000-11-06 16:13:44 +00:00
Christopher Faylor f8038d021f Fix typo. 2000-11-06 06:38:21 +00:00
Christopher Faylor dd11f11fae * child_info.h (child_info): Add pppid_handle for closing the parent's of the
parent handle.
* dcrt0.cc (_dll_crt0): Close parent's parent handle when spawned or forked.
* debug.cc (add_handle): Correct erroneous reference to handle structure when
printing warning.
* exceptions.cc (interrupt_now): Always return 1.
(interrupt_on_return): Accept a sigthread argument.  Check to see if this
argument has been trashed prior to setting up the stack return.
(call_handler): Add a loop around attempts to dispatch signals to detect case
where interrupt_on_return fails.
(_sigdelayed): Set up a temporary frame pointer prior to calling stuff that
could trigger an interrupt or the stack walking code will be very confused.
* fork.cc (fork_parent): Move a lot of the setup of the child process into
proc_subproc.
* spawn.cc (spawn_guts): Ditto.  Use ppid_handle to contact logical parent when
reparenting.
* pinfo.h (_pinfo): Remember the logical handle of the parent process.
* sigproc.cc (proc_subproc): Record most stuff necessary for the _pinfo
structure that is inferrable from myself when adding children.
(wait_sig): Always set 'pending_signals' flag when about to kick off the signal
scanning loop.  Reset it only if there are no pending signals.
2000-11-06 06:36:32 +00:00
Christopher Faylor 95101076e5 * pinfo (wait_subproc): Son of neverending debug tweaking. 2000-11-05 18:47:28 +00:00
Christopher Faylor 914f7bf565 * pinfo (wait_subproc): Neverending debug tweaking. 2000-11-05 16:47:00 +00:00
Christopher Faylor 0c9ae85d56 * pinfo.cc (winpids:add): New method.
(winpids::enumNT): New method renamed from EnumProcessesNT.  Use add method to
add elements to the lists.
(winpids::enum9x): New method renamed from EnumProcesses9x.  Use add method to
add elements to the lists.
(winpids::enum_init): Accept 'winpid' parameter to control whether to add all
windows pids to the list.
(winpids::release): New method.
* pinfo.h (winpids): Reflect above changes.
* signal.cc (kill_pgrp): Ditto.
* external.cc (fillout_pinfo): Ditto.
2000-11-05 06:42:23 +00:00
Christopher Faylor 7edb836a68 * exceptions.cc (handle_sigsuspend): Record frame here for signalling.
(set_process_mask): Ditto.
2000-11-05 03:08:39 +00:00
Christopher Faylor 1ae469adf4 * sigproc.cc (wait_subproc): Still more debugging cleanup. 2000-11-04 19:25:55 +00:00
Christopher Faylor e46db834d9 * pinfo.cc (EnumProcessesNT): Avoid 0 pids.
(EnumProcesses9x): Ditto.
* sigproc.cc (remove_childe): Eliminate.
(proc_subproc): Move remove_child stuff here.
(wait_subproc): Synchronize with proc_subproc when error occurs.  Add more
debugging info.
* sigproc.h (procstuff): Add an entry.
* spawn.cc (spawn_guts): Add sigframe here.
2000-11-04 05:54:57 +00:00
Christopher Faylor c2445f2abc * sigproc.cc (wait_subproc): Refine debug output. 2000-11-04 01:08:23 +00:00
Christopher Faylor bb5d559a73 * pinfo.cc (pinfo::init): Reverse order of setting status and pid info in an
execed process to avoid a race.
* sigproc.cc (wait_subproc): Print more info when a WFSO error occurs.
* automode.c: New file.
* syscalls.cc (close_all_files): Streamline slightly.
* cygheap.cc (ccalloc): Clear *entire* allocated array.
2000-11-03 04:27:03 +00:00
Christopher Faylor ed15374b49 * ntdll.h: Remove IO_COUNTERS definition since it is now in winnt.h. 2000-11-02 06:59:07 +00:00
Christopher Faylor 6d87f7d7c4 * pinfo.cc (EnumProcessesNT): New function. Eliminates dependence on psapi.h.
(EnumProcesses9x): Rename from EnumProcessesW95.  Change arguments to be more
useful for cygwin.
(winpids::init): Accomodate argument changes.
(enum_init): Ditto.
* pinfo.h (winpids): Make pidlist dynamically extendable by storing it as a
pointer and remembering the size.
* ntdll.h: Add extra definitions needed for EnumProcessesNT.  Reformat via
'indent'.
2000-11-02 05:25:56 +00:00
Christopher Faylor e2fa502354 * exceptions.cc (interruptible): Remove obsolete tests.
(sigreturn): Construct pseudo-frame-pointer so that signal handler can figure
out where to put return address when signals are coming in quickly.
* path.cc (cwdstuff::get): Allow length 0 buffer length when buffer when NULL.
2000-11-02 02:15:02 +00:00
Christopher Faylor b12796a06d * path.h (has_exec_chars): Standard function for checking for executable magic
numbers.
* path.cc (symlink_info::check): Use the above function.
* fhandler.cc (fhandler_disk_file::open): Ditto.
2000-10-31 23:14:29 +00:00
Christopher Faylor 772e2322bd * path.cc (_readlink): Return ENOENT when file does not exist. 2000-10-31 23:01:21 +00:00
Corinna Vinschen 0f34137539 * fhandler.h (fhandler_dev_raw): Add method `fixup_after_exec'. 2000-10-31 22:38:00 +00:00
Corinna Vinschen 7cccedf8de * fhandler.h (fhandler_dev_raw): Add definition for method
`fixup_after_fork'.
        * fhandler_raw.cc (fhandler_dev_raw::fhandler_dev_raw): Add
        `set_need_fixup_after_fork' call.
        (fhandler_dev_raw::~fhandler_dev_raw): Revert to user space
        allocation.
        (fhandler_dev_raw::open): Ditto.
        (fhandler_dev_raw::dup): Ditto. Reset buffer pointer.
        (fhandler_dev_raw::fixup_after_fork): New function.
        * fhandler_tape.cc (fhandler_dev_tape::open): Revert to user space
        memory allocation.
        (fhandler_dev_tape::ioctl): Ditto. Change behaviour on MTSETBLK when
        new size is 1.
2000-10-31 22:20:59 +00:00
Corinna Vinschen 8e32a18e79 * fhandler_tape.cc (fhandler_dev_tape::open): Fix memory allocation.
Use Cygwin heap instead of user heap.
        (fhandler_dev_tape::ioctl): Ditto.
2000-10-31 19:59:16 +00:00
Christopher Faylor dd07a42567 * pinfo.cc (enum_init): Don't suffer silently if we can't load the process
enumerators.
2000-10-31 17:01:56 +00:00
Christopher Faylor d50d220655 * signal.cc (kill_pgrp): Revert 25-Oct change.
(kill_worker): Ditto.
2000-10-30 23:19:45 +00:00
Christopher Faylor f745abc7a0 * include/cygwin/version.h: Bump DLL minor version number to 6. 2000-10-30 01:53:02 +00:00
Christopher Faylor 75a57bf04a Whitespace cleanup.
* configure.in: Eliminate subdir stuff.
* configure: Regenerate.
* include/getopt.h (option): Make name field 'const'.
2000-10-28 05:41:44 +00:00
Corinna Vinschen a5cc215f75 * autoload.cc: New file keeping all autoload stuff.
* Makefile.in: Add autoload.o to dependencies.
        * dcrt0.cc: Move all autoload stuff to autoload.cc.
        * fhandler_mem.cc: Ditto.
        * net.cc: Ditto.
        * uinfo.cc: Ditto.
2000-10-27 18:53:56 +00:00
Christopher Faylor 018a91fa2e * sigproc.cc (wait_sig): Add braces to avoid confusion. 2000-10-27 15:38:32 +00:00
Corinna Vinschen afd5033d83 * fhandler_socket.cc: New file.
* Makefile.in: Add fhandler_socket.o to dependencies.
        * fhandler.h: Change comment.
        * net.cc Move all fhandler_socket methods to fhandler_socket.cc.
        * winsup.h: Add declaration for `ws2_32_handle'.
2000-10-27 09:50:33 +00:00
Corinna Vinschen dd4f0b2343 * dtable.cc (dtable::release): Check for socket. Change
cnt_need_fixup_before accordingly.
        (dtable::dup2): Ditto.
        (dtable::fixup_before_fork): New method.
        (dtable::fixup_before_exec): Ditto.
        * dtable.h (class dtable): Add member `cnt_need_fixup_before'. Add
        definition for methods `dec_need_fixup_before', `inc_need_fixup_before',
        `need_fixup_before', `fixup_before_exec' and `fixup_before_fork'.
        * fhandler.h (class fhandler_base): Slight rearrangements. Add
        definitions for methods `fixup_before_fork_exec'.
        (class fhandler_socket): Eliminate superfluous constructor.
        Add member `prot_info_ptr'. Add destructor. Add definitions for
        methods `dup', `fixup_before_fork_exec', `fixup_after_fork' and
        `fixup_after_exec'.
        * fork.cc (fork_parent): Care for file types which need a fixup
        before fork. Start child in suspended state then.
        * net.cc: New global variable `ws2_32_handle' and `wsadata'.
        (fdsock): Check for Winsock version. Call `set_socket_inheritance'
        only if Winsock version < 2.0. Care for `need_fixup' count in fdtab.
        (cygwin_socket): Eliminate call to `set_socket_inheritance'.
        (cygwin_accept): Ditto.
        (cygwin_rcmd): Ditto.
        (cygwin_rresvport): Ditto.
        (cygwin_rexec): Ditto.
        (socketpair): Ditto.
        (fhandler_socket::fhandler_socket): Set `need_fork_fixup'. Allocate
        space for the WSAPROTOCOL_INFOA struct used in fixup.
        (fhandler_socket::~fhandler_socket): New destructor.
        (fhandler_socket::fixup_before_fork_exec): New method.
        (fhandler_socket::fixup_after_fork): Ditto.
        (fhandler_socket::dup): Ditto.
        (wsock_init): New static function.
        (LoadDLLinitfunc (wsock32)): Rearranged.
        (LoadDLLinitfunc (ws2_32)): New function.
        (dummy_autoload): Add autoload statemants for `WSADuplicateSocketA'
        and `WSASocketA'.
        * spawn.cc (spawn_guts): Care for file types which need a fixup
        before exec. Start child in suspended state then.
2000-10-26 10:13:41 +00:00
Christopher Faylor e21fa1ebb4 * signal.cc (kill_pgrp): Don't limit sending of signals to stopped processes
when sig < 0.
(kill_worker): Only send SIGCONT to stopped processes when sendSIGCONT.
2000-10-26 00:51:50 +00:00
Christopher Faylor cffaf20bf3 * exceptions.cc (sig_handle): Just make sure that wait_sig loops when receiving
a SIGCONT.  Don't block waiting for completion that will never occur.
2000-10-25 17:57:43 +00:00
Christopher Faylor 45a7e9572f Add comment. 2000-10-25 14:18:56 +00:00
Christopher Faylor 2e78b61dca * dtable.cc (dtable::fixup_after_exec): Use variable rather than constantly
indexing into fds array.
(dtable::fixup_after_fork): Ditto.
2000-10-25 14:17:27 +00:00
Corinna Vinschen 2f7356f39b * fhandler.cc (fhandler_base::fcntl): Treat O_NONBLOCK and OLD_O_NDELAY
as exactly the same. If one is set, both are set.
	* net.cc (fhandler_socket::fcntl): Ditto.
2000-10-25 08:47:23 +00:00
Christopher Faylor d220f0b21c * dcrt0.cc (do_exit): Remove debugging statement. 2000-10-25 03:59:07 +00:00
Christopher Faylor f8f9b12e6c * dcrt0.cc (do_exit): Don't bother looking for pgrp children to send SIGHUP if
process has never created any children.
* fork.cc (fork): Set flag indicating that there is another process with our
process group.
* spawn.cc (spawn_guts): Ditto.
* pinfo.h (set_has_pgid_children): New methods for setting when process has
children in its process group.
* syscalls.cc (setpgid): Clear has_gid_children if pgid changes.
2000-10-25 03:54:50 +00:00