2002-06-04 Christopher Faylor Remove fcntl.h includes throughout. * fhandler.h: Move fcntl.h include here. (fhandler_base::set_flags): Accept supplied_bin argument. Make non-inlined. * dtable.cc (dtable::init_std_file_from_handle): Just use binmode from pc. (reset_to_open_binmode): Use set_flags. * cygwin.din (open): Avoid newlib wrapper. (read): Ditto. (unlink): Ditto. (write): Ditto. * fhandler.cc (fhandler_base::set_flags): Accept supplied_bin argument. Make binmode decisions here. (fhandler_base::open): Avoid using pc if it is NULL. Eliminate binmode logic. Just call set_flags with binmode argument. (fhandler_base::init): Call set_flags with binmode argument. * fhandler_clipboard.cc (fhandler_dev_clipboard::open): Ditto. * fhandler_console.cc (fhandler_console::open): Ditto. (fhandler_console::init): Force binary on open. * fhandler_disk_file.cc (fhandler_disk_file::open): Don't set binmode here. Let it happen in base class. * fhandler_dsp.cc (fhandler_dev_dsp::open): Force binmode open. Set return value appropriately if unable to open. * fhandler_proc.cc (fhandler_proc::open): Make sure flags are set before open_status. * fhandler_process.cc (fhandler_process::open): Ditto. * fhandler_registry.cc (fhandler_registry::open): Ditto. * fhandler_random.cc (fhandler_dev_random::fhandler_dev_random): Ditto. * fhandler_raw.cc (fhandler_dev_raw::open): Force O_BINARY by default. * fhandler_serial.cc (fhandler_serial::init): Ditto. * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. (fhandler_pty_master::open): Ditto. * fhandler_virtual.cc (fhandler_virtual::open): Ditto. * fhandler_windows.cc (fhandler_windows::open): Ditto. * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. * net.cc (fdsock): Ditto. * path.cc (path_conv::check): Avoid checking for executable extension when directory. (Suggested by Pavel Tsekov) (set_flags): Set PATH_TEXT explicitly, when appropriate. (mount_info::conv_to_win32_path): Use set_flags() to set path flags. * path.h (PATH_TEXT): New enum. (path_conv::binmode): Return appropriate constant based on binmode. * pipe.cc (make_pipe): Set binmode to O_TEXT xor O_BINARY. * syscalls.cc (setmode_helper): Make debugging message a little clearer. (setmode): Set binmode via set_flags. 2002-06-04 Corinna Vinschen * fhandler.h (class fhandler_socket): Add private method fixup_after_fork (bool, HANDLE). * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Move functionality to new private method. Add closing parent socket if not called from dup(). Create method new calling private method with appropriate parameter. (fhandler_socket::fixup_after_exec): Call private method fixup_after_fork with appropriate parameter. (fhandler_socket::dup): Ditto. 2002-06-04 Corinna Vinschen * fhandler_dsp.cc (fhandler_dev_dsp::open): Set errno to EACCES if requested mode isn't supported. 2002-06-03 Christopher Faylor * fhandler.cc (fhandler_base::open): Don't set binmode if already set. Don't check for file. Files should already be set. Report on binary mode for debugging. (fhandler_base::fhandler_base): Don't set default binmode here. That's for later. * fhandler_console.cc (fhandler_console::output_tcsetattr): Don't set binmode, ever, for console. * fhandler_disk_file.cc (fhandler_disk_file::open): Always set the binary mode to the value derived from mount table. * path.cc (mount_info::conv_to_win32_path): Default to binmode if path does not translate into anything in the mount table. 2002-06-03 Corinna Vinschen * external.cc (cygwin_internal): Add CW_EXTRACT_DOMAIN_AND_USER handling to call extract_nt_dom_user() from applications. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_EXTRACT_DOMAIN_AND_USER. 2002-06-03 Corinna Vinschen * syscalls.cc (stat64_to_stat32): Transform st_dev correctly. (fstat64): Add evaluating st_ino and st_dev. (stat_worker): Evaluate st_dev as 32 bit value. * include/cygwin/stat.h: Use new dev_t definition throughout. * include/cygwin/types.h: Define __dev16_t and __dev32_t. Define dev_t according to __CYGWIN_USE_BIG_TYPES__ setting. * include/sys/sysmacros.h: Define major, minor and makedev according to __CYGWIN_USE_BIG_TYPES__ setting. 2002-06-03 Pierre Humblet * syscalls.cc (setegid32): Verify the correctness of the gid of the group returned by getgrgid32. 2002-06-03 Pierre Humblet * security.cc (lsa2wchar): Suppressed. (get_lsa_srv_inf): Suppressed. (get_logon_server_and_user_domain): Suppressed. (get_logon_server): Essentially new. (get_user_groups): Add "domain" argument. Only lookup the designated server and use "domain" in LookupAccountName. (is_group_member): Simplify the arguments. (get_user_local_groups): Simplify the arguments. Do only a local lookup. Use "BUILTIN" and local domain in LookupAccountName. (get_user_primary_group). Only lookup the designated server. (get_group_sidlist): Remove logonserver argument. Do not lookup any server for the SYSTEM account. (create_token): Delete logonserver and call to get_logon_server. Adjust arguments of get_group_sidlist, see above. * security.h: Delete declaration of get_logon_server_and_user_domain and add declaration of get_logon_server. * uinfo.cc (internal_get_login): Call get_logon_server instead of get_logon_server_and_user_domain. 2002-06-02 Christopher Faylor * dtable.cc (handle_to_fn): Use largest match for device. Correctly (?) deal with remote drive weirdness. 2002-06-02 Christopher Faylor * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_name): Check specifically for non-existent file, first. (fhandler_disk_file::fstat): Perform fd open on files with funny characters. 2002-06-02 Christopher January * fhandler_process.cc (fhandler_process::open): Set fileid. 2002-06-02 Christopher Faylor Remove unneeded sigproc.h includes throughout. * fhandler.h (fhandler_proc::fill_filebuf): Take a pinfo argument. * fhandler_proc.cc (fhandler_proc::get_proc_fhandler): Simplify search for given pid. (fhandler_proc::readdir): Assume that pid exists if it shows up in the winpid list. * fhandler_process.cc (fhandler_process::open): Simplify search for given pid. Call fill_filebuf with pinfo argument. (fhandler_process::fill_filebuf): Pass pinfo here and assume that it exists. * pinfo.h (pinfo::remember): Define differently if sigproc.h is not included. 2002-06-02 Christopher Faylor * dll_init.cc (dll_list::detach): Don't run destructor on exit. 2002-06-01 Christopher Faylor * fhandler.cc (fhandler_base::fstat): Move dev and ino calculation into caller. * syscalls.cc (stat_worker): Calculate dev and ino calculation here, if zero. * fhandler_proc.cc (fhandler_proc::fhandler_proc): Minor reorg for debugging. * fhandler_process.cc (fhandler_process::exists): Return 0 on nonexistence. (fhandler_process::fstat): Simplify pid logic. * fhandler_tape.cc (fhandler_dev_tape::fstat): Minor reformatting. 2002-06-01 Christopher Faylor * path.cc (chdir): Don't allow cd'ing to a non-directory virtual path. 2002-05-31 Christopher Faylor * fhandler_disk_file.cc (readdir): Move inode calculation into caller. (fhandler_cygdrive::readdir): Add "." and "..". * dir.cc (readdir): Move inode calculation here so that fhandler readdirs can benefit. 2002-05-31 Christopher Faylor * fhandler_console.cc (fhandler_console::open): Reinstate setting of flags. * dtable.cc (dtable::init_std_file_from_handle): Default to using binmode derived from path_conv, when required. * fhandler.h (fhandler_base::get_w_binary): Default to binmode if nothing else is specified. * fhandler.h (fhandler_base::get_r_binary): Ditto. * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_handle): Work around g++ warning. * path.cc (path_conv::check): Remove a debugging statement. 2002-05-31 Christopher Faylor * fhandler_console.cc (fhandler_console::open): Always default to binmode. (fhandler_console::write_normal): Don't honor binmode setting. There is already a termios setting for this. (fhandler_console::init): Correct argument order in init call. 2002-05-31 Christopher Faylor * fhandler.cc (fhandler_base::open): Make default open mode == binmode. (fhandler_base::init): Set open flags based on derived binmode argument. 2002-05-31 Christopher Faylor * dll_init.cc (dll_list::init): Eliminate unneeded debugging statement. 2002-05-31 Christopher Faylor * fhandler_proc.cc (fhandler_proc::readdir): Set errno when no more files. * fhandler_process.cc (fhandler_process::readdir): Ditto. * fhandler_registry.cc (fhandler_registry::readdir): Ditto. 2002-05-30 Christopher Faylor * path.cc (path_conv::check): Set fileattr to INVALID_FILE_ATTRIBUTES for nonexistent virtual device path. (chdir): Set correct errno when attempt is made to cd to nonexistent virtual device path. 2002-05-30 Christopher Faylor * fhandler_disk_file.cc (fhandler_disk_file::fstat): Always call fstat_by_name if fd is not opened to allow fstat_by_name to properly set errno. 2002-05-30 Corinna Vinschen * autoload.cc: Replace autoload statments for ZwXXX by NtXXX. Drop ZwQuerySystemInformation since NtQuerySystemInformation was already available. * fhandler_proc.cc (format_proc_uptime): Replace call to ZwQuerySystemInformation by call to NtQuerySystemInformation. (format_proc_stat): Ditto. * fhandler_process.cc (format_process_stat): Replace call to ZwQueryInformationProcess by call to NtQueryInformationProcess. (get_process_state): Ditto. (get_mem_values): Ditto. Replace call to ZwQueryVirtualMemory by call to NtQueryVirtualMemory. * ntdll.h: Cleanup. Drop ZwQuerySystemInformation since NtQuerySystemInformation was already available. Replace declarations of ZwXXX functions by declarations of NtXXX. * pinfo.cc (winpids::enumNT): Replace call to ZwQuerySystemInformation by call to NtQuerySystemInformation. 2002-05-29 Christopher Faylor * fhandler.cc (binmode): Default to binmode when mode is not known. 2002-05-29 Christopher Faylor * include/sys/cygwin.h (EXTERNAL_PINFO_VERSION): Reinstate. * external.cc (fillout_pinfo): Use it. 2002-05-29 Corinna Vinschen * external.cc (fillout_pinfo): Use new version define. * include/sys/cygwin.h (external_pinfo): Define EXTERNAL_PINFO_VERSION_16_BIT and EXTERNAL_PINFO_VERSION_32_BIT instead of just EXTERNAL_PINFO_VERSION. 2002-05-29 Christopher Faylor * external.cc (fillout_pinfo): Set new version field in external_pinfo structure. * include/sys/cygwin.h (external_pinfo): Replace strace_file with version field. 2002-05-29 Corinna Vinschen Change internal uid datatype from __uid16_t to __uid32_t throughout. * cygwin.din: Export new symbols getpwuid32, getpwuid_r32, getuid32, geteuid32, setuid32, seteuid32. * passwd.cc (getpwuid32): New function. (getpwuid_r32): Ditto. * syscalls.cc (seteuid32): Ditto. (setuid32): Ditto. * uinfo.cc (getuid32): Ditto. (geteuid32): Ditto. * winsup.h (uid16touid32): New macro, correct casting from __uid16_t to __uid32_t. (gid16togid32): Ditto fir gids. (getuid32): Declare. (geteuid32): Ditto. (getpwuid32): Ditto. * include/sys/cygwin.h (struct external_pinfo): Add members uid32 and gid32. 2002-05-29 Corinna Vinschen * include/cygwin/socket.h: Protect some symbols against multiple definition. * include/netinet/ip.h: Ditto. * include/netinet/tcp.h: Ditto. 2002-05-29 Wu Yongwei * include/netinet/ip.h: Replace by BSD derived version of the file. * include/netinet/tcp.h: Ditto. * include/netinet/udp.h: New file. * include/cygwin/ip.h: Remove. 2002-05-29 Christopher Faylor * dtable.cc (dtable::init_std_file_from_handle): Attempt stronger detection of invalid handle. (handle_to_fn): Detect pathological condition where NT resets the buffer pointer to NULL on an invalid handle. 2002-05-28 Christopher Faylor * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Properly check for whether we should be opening the file to search for #! characters. Set path_conv structure execability, too, when appropriate. 2002-05-28 Corinna Vinschen * security.cc (set_security_attribute): Call getegid32() instead of getegid(). * include/cygwin/grp.h: Declare getegid32(). 2002-05-28 Corinna Vinschen Change internal gid datatype from __gid16_t to __gid32_t throughout. * cygwin.din: Export new symbols chown32, fchown32, getegid32, getgid32, getgrgid32, getgrnam32, getgroups32, initgroups32, lchown32, setgid32, setegid32, getgrent32. * grp.cc (grp32togrp16): New static function. (getgrgid32): New function. (getgrnam32): Ditto. (getgrent32): Ditto. (getgroups32): Change name of internal function from getgroups. (getgroups32): New function. (initgroups32): Ditto. * syscalls.cc (chown32): Ditto. (lchown32): Ditto. (fchown32): Ditto. (setegid32): Ditto. (setgid32): Ditto. * uinfo.cc (getgid32): Ditto. (getegid32): Ditto. * include/cygwin/grp.h: Remove declaration of getgrgid() and getgrnam(). Declare getgrgid32() and getgrnam32() instead. Declare getgid32(). 2002-05-27 Christopher Faylor * autoload.cc (noload): Properly mask low order word for determining number of bytes to pop. 2002-05-27 Christopher Faylor * fhandler_disk_file.cc (fhandler_disk_file::fstat): Minor logic cleanup. 2002-05-27 Christopher Faylor * autoload.cc (LoadFuncEx): Define via new LoadFuncEx2 macro. (LoadFuncEx2): Adapted from LoadFuncEx. Provides control of return value for nonexistent function. (NtQueryObject): Declare. (IsDebuggerPresent): Declare via LoadFuncEx2 and always return true if not available. * debug.h (being_debugged): Just rely on IsDebuggerPresent return value. * dtable.cc (handle_to_fn): New function. (dtable::init_std_file_from_handle): Attempt to derive std handle's name via handle_to_fn. (dtable::build_fhandler_from_name): Fill in what we can in path_conv structure when given a handle and path doesn't exist. * fhandler.cc (fhandler_base::open): Don't set the file pointer here. Use pc->exists () to determine if file exists rather than calling GetFileAttributes again. * fhandler.h (fhandler_base::exec_state_isknown): New method. (fhandler_base::fstat_helper): Add extra arguments to declaration. (fhandler_base::fstat_by_handle): Declare new method. (fhandler_base::fstat_by_name): Declare new method. * fhandler_disk_file (num_entries): Make __stdcall. (fhandler_base::fstat_by_handle): Define new method. (fhandler_base::fstat_by_name): Define new method. (fhandler_base:fstat): Call fstat_by_{handle,name} as appropriate. (fhandler_disk_file::fstat_helper): Accept extra arguments for filling out stat structure. Move handle or name specific stuff to new methods above. (fhandler_disk_file::open): Use real_path->exists rather than calling GetFileAttributes again. * ntdll.h (FILE_NAME_INFORMATION): Define new structure. (OBJECT_INFORMATION_CLASS): Partially define new enum. (OBJECT_NAME_INFORMATION): Define new structure. (NtQueryInformationFile): New declaration. (NtQueryObject): New declaration. * path.cc (path_conv::fillin): Define new method. * path.h (path_conv::fillin): Declare new method. (path_conv::drive_thpe): Rename from 'get_drive_type'. (path_conv::volser): Declare new method. (path_conv::volname): Declare new method. (path_conv::root_dir): Declare new method. * syscalls.cc (fstat64): Send real path_conv to fstat as second argument. 2002-05-24 Pierre Humblet * security.cc (lsa2str): New function. (get_priv_list): Call lsa2str instead of sys_wcstombs. 2002-05-22 Pierre Humblet * syscalls.cc (seteuid): Do not take allow_ntsec into account. Attempt to use an existing or new token even when the uid matches orig_uid, but the gid is not in the process token. Major reorganization after several incremental changes. (setegid): Do not take allow_ntsec into account. Minor reorganization after several incremental changes. 2002-05-26 Christopher Faylor * debug.h (being_debugged): New macro. * dtable.cc (dtable::extend): Use new macro. * exceptions.cc (try_to_debug): Ditto. * strace.cc (strace::hello): Only output debugging info when we think we're being debugged. 2002-05-25 Robert Collins * winsup.h: Remove duplicate declarations of malloc_lock and malloc_unlock. 2002-05-24 Christopher Faylor Remove unneeded sync.h, where appropriate, throughout. Remove unneeded heap.h, where appropriate, throughout. Remove unneeded exceptions.h, where appropriate, throughout. Remove unneeded perprocess.h, where appropriate, throughout. 2002-05-22 Pierre Humblet * security.cc (create_token): Call __sec_user() instead of sec_user() to remove dependence on allow_ntsec. Verify that the returned sd is non-null. 2002-05-25 Robert Collins * gmon.c (fake_sbrk): Correctly return -1 on failed malloc's. 2002-05-24 Christopher Faylor * dtable.cc (dtable::build_fhandler_from_name): Just pass posix path along to set_name via return_and_clear_normalized_path. (dtable::build_fhandler): New method with const char * argument. (dtable::reset_unix_path_name): Eliminate. (dtable::dup_worker): Use correct build_fhandler method. * mmap.cc (mmap_record::alloc_fh): Ditto. * dtable.h (dtable::build_fhandler): New method. (dtable::reset_unix_path_name): Eliminate. * fhandler.cc (fhandler_base::set_name): Assume that unix_name has already been cmalloced. (fhandler_base::reset_unix_path_name): Eliminate. (fhandler_base::~fhandler_base): Coercion for cfree. * fhandler.h (fhandler_base::unix_path_name): Make const char *. (fhandler_base::win32_path_name): Ditto. (fhandler_base::reset_unix_path_name): Eliminate. * fhandler_disk_file.cc (fhandler_cygdrive::set_drives): Accommodate const char *ness of win32_path_name. * fhandler_socket.cc (fhandler_socket::fstat): Accommodate new set_name requirements. * path.cc (path_conv::return_and_clear_normalized_path): New method. (path_conv::clear_normalized_path): Eliminate. (path_conv::~path_conv): Ditto. (path_conv::check): Accommodate new build_fhandler method. * path.h (path_conv::~path_conv): Eliminate. (path_conv::clear_normalized_path): Ditto. (path_conv::return_and_clear_normalized_path): Declare new method. 2002-05-23 Christopher Faylor * path.cc (path_conv::check): Make sure any trailing path component is part of potential normalized posix path. 2002-05-23 Christopher Faylor * smallprint.c (__small_vsprintf): Implement '%o' after all these years. 2002-05-22 Christopher Faylor * fhandler.h (fhandler_virtual::exists): Eliminate path argument. (fhandler_proc::exists): Ditto. (fhandler_registry::exists): Ditto. (fhandler_process::exists): Ditto. * fhandler_proc.cc (fhandler_proc::exists): Ditto. Use built-in name. * fhandler_process.cc (fhandler_process::exists): Ditto. (fstat): Ditto. * fhandler_registry.cc (fhandler_registry::exists): Ditto. (fhandler_registry::fstat): Ditto. * fhandler_virtual.cc (fhandler_virtual::opendir): Ditto. * path.cc (path_conv::check): Ditto. Add debugging. 2002-05-22 Christopher Faylor * syscalls.cc (dup): Always call dup2 for error handling. 2002-05-22 Corinna Vinschen * include/cygwin/types.h: Revert previous patch. 2002-05-22 Corinna Vinschen * include/cygwin/types.h: Define pthread stuff only if _POSIX_THREADS is defined. 2002-05-19 Pierre Humblet * security.cc (open_local_policy): Initialize lsa to INVALID_HANDLE_VALUE instead of NULL. (get_logon_server_and_user_domain): Test for INVALID_HANDLE_VALUE instead of NULL. (create_token): Both of the above. 2002-05-18 Christopher Faylor * fhandler_disk_file.cc (fhandler_disk_file::fstat): Make handling of nlink consistent for remote files. 2002-05-18 Christopher Faylor * path.cc (path_conv::check): Always set executable bit for executable extension. 2002-05-17 Christopher Faylor * fhandler.cc (fhandler_base::lseek): Avoid calling SetFilePointer with high order part of 64 bit address on OS's which do not support that kind of operation. Otherwise Windows 95 will become confused. 2002-05-16 Pierre Humblet * fhandler_raw.cc (fhandler_dev_raw::open): Replace set_errno() by __seterrno_from_win_error(). * security.cc (open_local_policy): Ditto. (get_lsa_srv_inf): Ditto. (get_user_groups): Ditto. (get_user_primary_group): Ditto. (create_token): Ditto. (subauth): Ditto. 2002-05-17 Corinna Vinschen * times.cc (utimes): Use FILE_WRITE_ATTRIBUTES even on 9x/Me when opening file for writing timestamp. * wincap.cc: Remove flag has_specific_access_rights. * wincap.h: Ditto. 2002-05-13 Pierre Humblet * syscalls.cc (seteuid): Set default dacl in process token. Replace in-line code by call to verify_token(). (setegid): Reverse change from 2002-01-21. Add call to RevertToSelf and set primary group in impersonation token. * security.cc (create_token): Store pgrpsid in token security descriptor, except if it already appears in my_grps. Use sec_acl() in place of get_dacl(). (verify_token): Create from code in seteuid(), with tighter checks. (get_dacl) Deleted. (get_group_sidlist): Add argument to indicate if pgrpsid is already in the groups. * security.h: Define verify_token(). * autoload.cc: Load GetKernelObjectSecurity(). 2002-05-13 Mark Bradshaw * cygwin.din: Add strlcat and strlcpy. * include/cygwin/version.h: Increment API minor version number. 2002-05-09 Pierre Humblet * shared.cc (__sec_user): Split into sec_acl() and call orig_sid(). (sec_acl): Create from part of __sec_user(), except creator/owner. * security.h: Define sec_acl() and MAX_DACL_LEN. 2002-05-12 Christopher Faylor * fhandler_disk_file.cc (fhandler_disk_file::open): Avoid using O_DIROPEN when OS doesn't support it. Return proper errno in that case. 2002-05-12 Christopher Faylor * syscalls.cc (_read): Change error to EBADF if attempt to read from a non-readable fd. 2002-05-11 Christopher Faylor * fhandler.h (executable_states): For now, make dont_care_if_executable equivalent to not_executable. * sys/mount.h: Define MOUNT_NOTEXEC. * path.h (fs_info): New class. (path_conv): Move fs-specific fields to new 'fs' structure. (path_conv::update_fs_info): Move to fs_info and rename to just 'update'. * path.cc (fs_info::update): Ditto. Return 'true' if successful. (fillout_mntent): Add ',noexec' to list of reported options. 2002-05-11 Christopher Faylor * fhandler_virtual.cc (fhandler_virtual::close): Quiet a compiler warning. 2002-05-10 Christopher January * autoload.cc: Add dynamic load statements for 'ZwQueryInformationProcess' and 'ZwQueryVirtualMemory'. * fhandler.h: Change type of bufalloc and filesize members of fhandler_virtual from int to size_t. Change type of position member from __off32_t to __off64_t. Add new fileid member to fhandler_virtual class. Make seekdir take an __off64_t argument. Make lseek take an __off64_t argument. Add fill_filebuf method to fhandler_virtual. Add fill_filebuf method to fhandler_proc. Add fill_filebuf method to fhandler_registry. Add fill_filebuf method to fhandler_process. Add saved_pid and saved_p members to fhandler_process. * fhandler_proc.cc (proc_listing_array): Add 'loadavg', 'meminfo', and 'stat'. (proc_fhandlers array): Ditto. (fhandler_proc::open): Use fill_filebuf to flesh out the file contents. (fhandler_proc::fill_filebuf): New method. (fhandler_proc::format_proc_meminfo): Ditto. (fhandler_proc::format_proc_stat): Ditto. (fhandler_proc::format_proc_uptime): Ditto. * fhandler_process.cc (process_listing): Add 'stat' and 'statm'. (fhandler_process::fstat): Find the _pinfo structure for the process named in the filename. Return ENOENT if the process is no longer around. Set the gid and uid fields of the stat structure. (fhandler_process::open): Store pid and pointer to _pinfo structure in saved_pid and saved_p respectively. Use fill_filebuf to flesh out file contents. (fhandler_proc::fill_filebuf): New method. (format_process_stat): New function. (format_process_status): Ditto. (format_process_statm): Ditto. (get_process_state): Ditto. (get_mem_values): Ditto. * fhandler_registry.cc (fhandler_registry::seekdir): Change argument type from __off32_t to __off64_t. (fhandler_registry::fill_filebuf): New method. * fhandler_virtual.cc (fhandler_virtual::seekdir): Change argument type from __off32_t to __off64_t. (fhandler_virtual::lseek): Ditto. (fhandler_virtual::fill_filebuf): New method. (fhandler_virtual::fhandler_virtual): Initialise fileid to -1. * wincap.cc: Set flag has_process_io_counters appropriately. * wincap.h: Add flag has_process_io_counters. 2002-05-09 Christopher Faylor * syscalls.cc (_write): Change error to EBADF if attempt to write to a non-writeable fd. 2002-05-08 Corinna Vinschen * cygheap.h (class cygheap_user): Add member `orig_psid'. Add method `orig_sid()'. * cygheap.cc (cygheap_user::set_sid): Maintain orig_psid. 2002-04-28 Norbert Schulze * localtime.cc (tzsetwall): Use wildabbr if generated timezone name length < 3. 2002-05-05 Pierre Humblet * spawn.cc (spawn_guts): Move call to set_process_privilege() to load_registry_hive(). * registry.cc (load_registry_hive): ditto. * fork.cc (fork_parent): Call sec_user_nih() only once. 2002-05-04 Christopher January * path.h (path_conv::path_conv): Initialise normalized_path to NULL. 2002-05-03 Christopher Faylor * net.cc (getdomainname): Change second argument of getdomainname to size_t. 2002-05-03 Christopher January * fhandler_proc.cc (proc_listing): Add '.' and '..' to directory listing. (fhandler_proc::open): Change use of mode to flags. If the file does not exist already, fail with EROFS if O_CREAT flag is set. Change EROFS error to EACCES error when writing to a file. Use cmalloc to allocate memory for filebuf. (fhandler_proc::close): Use cfree to free filebuf. (fhandler_proc::get_proc_fhandler): Properly detect attempts to access unknown subdir. * fhandler_process.cc (process_listing): Add '.' and '..' to directory listing. (fhandler_process::open): Use cmalloc to allocate memory for filebuf. (fhandler_process::close): Use cfree to free filebuf. * fhandler_registry.cc (registry_listing): Add . and '..' to directory listing. (fhandler_registry::open): Move check for open for writing before open_key. Use cmalloc to allocate memory for filebuf. (fhandler_registry::close): Use cfree to free filebuf. (fhandler_registry::telldir): Use lower 16 bits of __d_position as position in directory. (fhandler_registry::seekdir): Ditto. * fhandler_virtual.cc (fhandler_virtual::write): Change EROFS error to EACCES error. (fhandler_virtual::open): Set the NOHANDLE flag. (fhandler_virtual::dup): Add call to fhandler_base::dup. Allocate child's filebuf using cmalloc. Copy filebuf from parent to child. (fhandler_virtual::close): Use cfree to free filebuf. (fhandler_virtual::~fhandler_virtual): Ditto. (from Chris Faylor ). (fhandler_registry::readdir): Add support for '.' and '..' files in subdirectories of /proc/registry. * path.cc (path_conv::check): Do not return ENOENT if a file is not found in /proc. 2002-05-02 Christopher Faylor * fhandler_proc.cc (fhandler_proc::fstat): Use fhandler name rather than path_conv name. (fhandler_proc::open): Ditto. * fhandler_process.cc (fhandler_process::fstat): Use fhandler name rather than path_conv name. (fhandler_process::open): Ditto. * fhandler_registry.cc (fhandler_registry::fstat): Use fhandler name rather than path_conv name. (fhandler_registry::open): Ditto. * path.cc (path_conv::check): Don't copy posix path when virtual. (mount_info::conv_to_win32_path): Don't zero string when isproc. Just derive normal windows path. * path.h (path_conv::clear_normalized_path): Declare new method. * path.cc (path_conv::clear_normalized_path): Define new method. * dtable.cc (build_fhandler_from_name): Clear normalized path when finished to conserve space. 2002-05-02 Christopher Faylor * fhandler_proc.cc (fhandler_proc::fstat): Prime with information from fhandler_base::fstat. Use defines rather than constants for permission settings. 2002-04-30 Eric Blake * path.cc (hash_path_name): Improve hash function strength. 2002-05-02 Robert Collins * thread.cc (__pthread_cond_dowait): Fix a race on signalling from a thread woken by the same condition variable it's signalling on. Thanks to Michael Beach for the report and test case. 2002-05-02 Christopher Faylor * path.h (pathconv_arg): Add PC_POSIX. (path_conv): Add normalized_path field. * path.cc (path_conv::~path_conv): New destructor. (path_conv::check): Set normalized_path, where appropriate. * dtable.cc (build_fhandler_from_name): Use normalized path from path_conv. * syscalls.cc (chroot): Ditto. * cygheap.h: Remove path_prefix_p declaration. 2002-02-26 Christopher January Christopher Faylor (minor fixups) * Makefile.in: Add fhandler_proc.o, fhandler_registry.o, fhandler_process.o and fhandler_virtual.o. * dtable.cc (dtable::build_fhandler): Add entries for FH_PROC, FH_REGISTRY and FH_PROCESS. Set unix_name to the normalized posix path. * fhandler.h: Add constants for FH_PROC, FH_REGISTRY and FH_PROCESS. Add class declarations for fhandler_virtual, fhandler_proc, fhandler_registry and fhandler_virtual. Update fhandler_union accordingly. * fhandler_proc.cc: New file. Add implementation for fhandler_proc. * fhandler_virtual.cc: New file. Add implementation for fhandler_virtual. * fhandler_process.cc: New file. Add implementation for fhandler_process. * fhandler_registry.cc: New file. Add implementation for fhandler_registry. * path.cc (isproc): New macro. (isvirtual_dev): Ditto. * path.cc (path_conv::check): Add check for virtual devices. * path.cc (mount_info::conv_to_win32_path): Convert paths in /proc to empty Win32 paths. * path.cc (chdir): Replace check for FH_CYGDRIVE with more generic isvirtual_dev macro. Force setting of posix path for virtual fhandlers. * path.h (path_prefix_p): Declare. Wed May 1 16:06:02 2002 Jason Tishler * include/cygwin/types.h: Include . Wed Apr 17 11:27:04 2002 Jason Tishler * security.cc (get_lsa_srv_inf): Prevent extraneous backslashes for the NT Domain case. 2002-04-12 Corinna Vinschen * net.cc (cygwin_accept): Set socket type for accepted socket. (socketpair): Set socket type for both sockets. 2002-04-12 Egor Duda * fhandler.h (class fhandler_socket): New member to store socket type. (fhandler_socket::get_socket_type): Access it. (fhandler_socket::set_socket_type): Ditto. * net.cc (cygwin_socket): Store socket type. (cygwin_connect): Disable security checks for connectionless sockets. (cygwin_accept): Ditto. 2002-04-09 Mark Bradshaw * cygwin.din: Add strptime. * include/cygwin/version.h: Increment API version number. 2002-04-09 Corinna Vinschen * fork.cc (fork_child): Call fixup_mmaps_after_fork() somewhat earlier. 2002-04-09 Corinna Vinschen * fhandler.cc (fhandler_base::open): Set read-only bit in file_attributes when adequate. 2002-03-28 Christopher Faylor * times.cc (gettimeofday): Fix typo in previous patch. 2002-03-27 Wu Yongwei * times.cc (gettimeofday): Revert to setting timezone info if tz != NULL. 2002-03-21 Christopher Faylor * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Always set st_[ug]id to value derived from get_file_attributes. 2002-03-21 Christopher Faylor * spawn.cc (find_exec): Return input if file not found. 2002-03-19 Boris Schaeling * poll.cc (poll): Add support for invalid descriptors. 2002-03-15 Robert Collins * fhandler.h (fhandler_termios::lseek): Override lseek. * fhandler_termios.cc (fhandler_termios::lseek): Implement this. 2002-03-15 Christopher Faylor * cygserver.cc: Include stdlib.h for exit declaration. * threaded_queue.cc: Ditto. 2002-03-15 Christopher Faylor * pinfo.cc (pinfo::init): Use PID_ALLPIDS flag to control when a redirected block should be marked as nonexistent. (winpids::add): Use PID_ALLPIDS when looking for all pids. * cygwin.h (PID_ALLPIDS): New enum element. 2002-03-15 Corinna Vinschen * glob.c (stat32_to_STAT): New function. (g_lstat): Call user space functions always with 32 bit struct stat as a workaround. (g_stat): Ditto. * include/glob.h (struct glob): Don't prototype function pointers when compiling Cygwin. 2002-03-14 Christopher Faylor * pinfo.cc (pinfo::init): Properly handle execed process stub when PID_NOREDIR is specified. 2002-03-13 Boris Schaeling * poll.cc (poll): Remove variable open_fds. Rearrange and add code to fix settings of revents. 2002-03-13 Corinna Vinschen * mmap.cc (mmap_record::map_map): Return -1 if VirtualProtect fails. (list::erase): New method with no argument. Erase latest record added. (mmap64): Fail if map_map() fails. 2002-03-12 Corinna Vinschen * sysconf.cc (sysconf): Fix condition. 2002-03-11 Corinna Vinschen * mmap.cc (msync): Check area given by addr and len for being a contigeous mmap'd region. 2002-03-11 Corinna Vinschen * fork.cc (fork_child): Call fixup_mmaps_after_fork() before closing parent process handle. Call fixup_mmaps_after_fork() with parent process handle as parameter. * mmap.cc (mmap_record::access): New method. (fixup_mmaps_after_fork): Take process handle as parameter. In case of FILE_MAP_COPY access, copy valid memory regions to child. * pinfo.h (fixup_mmaps_after_fork): Change prototype accordingly. 2002-03-07 Corinna Vinschen * autoload.cc (NetGetDCName): Add symbol. (NetServerEnum): Remove symbol. * security.cc (get_lsa_srv_inf): Call NetGetDCName() instead of NetServerEnum() since it's faster. Don't call it at all if machine is not a domain member. 2002-03-06 Christopher Faylor * path.cc (normalize_posix_path): Avoid runs of '.'s > 2. 2002-03-05 Christopher Faylor * errno.cc: Change EPERM associated text to "Operation not permitted" throughout. 2002-03-05 Christopher Faylor * fhandler_socket.cc (fhandler_socket::close): Respond to signals while looping, waiting for socket to close. Superstitiously clear last error when WSAEWOULDBLOCK. 2002-03-05 Robert Collins * cygserver_transport_pipes.cc (transport_layer_pipes::transport_layer_pipes): Always init - until static members work correctly. * shm.cc (shmget): Initialize the security descriptor - thanks Corinna! * include/sys/ipc.h: Make the ipc control constants partitioned off from the sem control constants. 2002-03-04 Christian Lestrade * include/sys/termios.h: Define _POSIX_VDISABLE. Define CCEQ macro. * fhandler_termios.cc: Include . (line_edit): Recognize disabled c_cc[] chars. Ignore VDISCARD when not in ICANON mode. 2002-03-04 Dmitry Timoshkov * syscalls.cc (truncate64): Use ftruncate64 directly to not lose upper 32 bits. 2002-03-04 Robert Collins * cygserver_shm.cc (delete_shmnode): New function. (client_request_shm::serve): Use it. 2002-03-04 Robert Collins * cygserver_shm.cc (client_request_shm::serve): Implement SHM_DETACH. * shm.cc (shmdt): Implement. 2002-03-04 Robert Collins * cygserver_shm.cc: Run indent. (deleted_head): New global for storing shm id's pending deletion. (client_request_shm::serve): Return ENOSYS for invalid request types. Implement SHM_DEL - delete a shm id. * cygserver_shm.h (SHM_DEL): New type value. * shm.cc (delete_inprocess_shmds): New function, does what it's name implies. (shmctl): Implement shm_rmid control type. 2002-03-04 Robert Collins * Makefile.in (install): Remove install-bin to allow make install to work. 2002-03-03 Robert Collins * shm.cc (shmat): Prevent a compile error. (shmdt): Set errno as this function is incomplete. 2002-02-28 Christopher Faylor * times.cc: Remove if 0'd code. Clean up slightly. 2002-02-28 Robert Collins * Merged cygwin_daemon into head minus the new shm and ipc exports. 2002-02-28 Robert Collins * fhandler_tty.cc (fhandler_tty_slave::open): More debugging. (fhandler_tty_slave::read): Fix printf type for the handle. * tty.cc (tty::common_init): Add a FIXME for security. 2002-01-29 Robert Collins * Makefile.in (OBJS): Remove duplicate localtime.o. 2002-01-17 Robert Collins * cygserver.cc (check_and_dup_handle): Consolidate the two variants for simplicity. Add Some basic debug output. (client_request_attach_tty::serve): Use the new debug_printf for clarity. Mark the duplicated handles as inheritable - fixup_after_fork() doesn't reopen tty's. 2002-01-16 Robert Collins * cygserver.cc (transport): Correct scope. (client_request_attach_tty::serve): Add more debug information. Fix erroneous use of transport instead of conn. * cygserver_transport_pipes.cc (transport_layer_pipes::close): More debug. (transport_layer_pipes::read): Ditto. (transport_layer_pipes::write): Ditto. (transport_layer_pipes::impersonate_client): Ditto. Mon Oct 8 7:41:00 2001 Robert Collins * cygserver.cc (server_request::process): Rename client_request_shm_get to client_request_shm. * cygserver_process.cc (process_cache::add): Rename to add_task. Use process_cleanup instead of process_request. (process_cache::remove_process): New method. (process::process): Initialize new members. (process::~process): New member. (process::cleanup): New method. (process::add_cleanup_routine): New method. (process_request::process): Rename to process_cleanup. Call the process object's cleanup method and then delete it. (process_process_param::request_loop): Remove the signalling process. * cygserver_shm.cc: Globally rename client_request_shm_get to client_request_shm. (client_request_shm_get::serve): Handle attach request counting. * cygserver_shm.h: Globally rename client_request_shm_get to client_request_shm. (class shm_cleanup): New class. * shm.cc: Globally rename client_request_shm_get to client_request_shm. (client_request_shm::client_request_shm): New constructor for attach requests. (shmat): Use it. * include/cygwin/cygserver_process.h (class process_request): Rename to process_cleanup. (class cleanup_routine): New class. (class process): New members and methods to allow calling back when the process terminates. Thu Oct 4 14:12:00 2001 Robert Collins * cygserver.cc (request_loop): Make static. (main): Use new cache constructor syntax. Start cache worker threads. Cleanup the cache at shutdown. * cygserver_process.cc: Run indent. (process_cache::process_cache): Add a trigger to use when adding a process. (process_cache::process): Move process_entry to process. Insert at the end of the list. Trigger the request loop when new process's inserted. (process_cache::process_requests): Do it. (process_cache::add): New method. (process_cache::handle_snapshot): New method. (process::process): Merge in the process_entry fields. (process::handle): Make a stub function. (process::exit_code): New method. (process_request::process): New method. (process_process_param::request_loop): New method. * cygserver_shm.cc: New header dependency - threaded_queue.h. * threaded_queue.cc (threaded_queue::cleanup): Clearer messages. (queue_process_param::stop): Short spinlock on interruptible threads. * threaded_queue.h (class threaded_queue): New constructor. * include/cygwin/cygserver_process.h (process_request): New class. (process_entry): Remove. (process): Merge in process_entry. (process_cache): Inherit from threaded_queue. Tue Oct 2 23:24:00 2001 Robert Collins * cygserver.cc (class server_process_param): Use new constructor syntax. * cygserver_process.cc (process_cache::~process_cache): New function. * threaded_queue.cc: Define condition debug_printf. Run indent. (threaded_queue::cleanup): Move queue_process_param guts to a method. (threaded_queue::process_requests): Ditto. (queue_process_param::queue_process_param): New method. (queue_process_param::~queue_process_param): Ditto. (queue_process_param::start): Ditto. (queue_process_param::stop): Ditto. * threaded_queue.h (class queue_process_param): Add support for interruptible request loops. * cygwin/include/cygwin/cygserver_process.h (class process_cache): Add destructor. Tue Oct 2 23:24:00 2001 Robert Collins * cygserver_client.cc: New flag allow_daemon to disable the daemon completely. (cygserver_request): Check it. (cygserver_init): Ditto. * environ.cc (parse_thing): Add (no)daemon option. Tue Oct 2 23:00:00 2001 Robert Collins * shm.cc: Update to handle include changes from HEAD. Tue Oct 2 16:06:00 2001 Robert Collins * Makefile.in: Remove cygserver_shm.o from cygwin1.dll. Rename cygserver_shm_outside.o to cygserver_shm.o. * cygserver.cc (server_request::process): Use the new client_request constructor. * cygserver_client.cc: Remove the #ifdef's stubs for the server method within cygwin. (client_request_attach_tty::client_request_attach_tty): Use the new client_request constructor. (client_request_shutdown::client_request_shutdown): Ditto. (client_request::client_request): Ditto. * cygserver_shm.cc (client_request_shm_get::serve): Remove the #ifdef'd stub for in-cygwin builds. (client_request_shm_get::client_request_shm_get): Use the new client_request constructor, and remove the in-cygwin variants. * cygserver_shm.h (class client_request_shm_get): #ifndef test the serve method - it's only used in cygserver. * shm.cc (client_request_shm_get::client_request_shm_get): New function. * include/cygwin/cygserver.h (request_header): New constructor. (class client_request): Use it. New constructor accepting the header size. #ifndef test the server method - it's only used within cygserver. (client_request_get_version): #ifdef test the server method. (client_request_shutdown): Ditto. (client_request_attach_tty): Ditto. Tue Oct 2 9:57:00 2001 Robert Collins * Makefile.in: add threaded_queue.o to cygserver.exe. * cygserver.cc: Include threaded_queue.h (class server_request): Inherit from queue_request. (class server_process_param): Inherit from queue_process_param. (class server_request_queue): Inherit from threaded_queue. (request_loop): Adjust for new types. (server_request_queue::process_requests): Remove guts to threaded_queue::process_requests. (server_request::server_request): Adjust for new types. (worker_function): Delete. (server_request_queue::create_workers): Delete. (server_request_queue::cleanup): Delete. (server_request_queue::add): Move guts to threaded_queue::add. * threaded_queue.cc: New file. * threaded_queue.h: New file. Mon Oct 1 12:38:00 2001 Robert Collins * cygserver.cc (client_request::serve): New function. * cygserver_process.cc: Inlude for pthread_once. (process_cache::process_cache): Initialise a crtiical section for write access. (process_cache::process): Use the critical section. Also add missing entries to the cache. (do_process_init): New function to initalise class process static variables. (process::process): Ensure that the process access critical section is initialised. (process::handle): Close the handle of old process's when they have terminated and we are returning the handle for a process with the same pid. * cygserver_shm.cc: Run indent. Include cygserver_process.h to allow process cache functionality. (client_request_shm_get::serve): New parameter for process cache support. Use the process cache, not OpenProcess to get a handle to the originating process. Fix a handle leak with token_handle. * cygserver_shm.h (class client_request_shm_get): Update ::serve for process cache support. * cygserver_transport_pipes.cc: Redefine debug_printf to be conditional on DEBUG. * include/cygwin/cygserver.h: Do not implement client_request::serve in the header. * include/cygwin/cygserver_process.h (class process_cache): Add a write access critical section to prevent races when requests from a multithreaded application arrive. Sun Sep 30 23:41:00 2001 Robert Collins * Makefile.in: Add cygserver_process.o to cygserver.exe. * cygserver.cc: Include signal.h and cygwin_version.h. Define debug_printf as a macro. Define DEBUG to a value. (client_request_attach_tty::serve): Add beginning of process cache support. Change from #ifdef DEBUG to work with new DEBUG style. (client_request_get_version::serve): Add beginning of process cache support. (class server_request): New prototype for support of process cache. (class queue_process_param): New class to allow request loop threading. (class server_request_queue): Add beginning of process cache support. Allow request loop threading. (request_loop): Thread function for request loops. (server_request_queue::process_requests): Initiator for threaded request loops. (client_request_shutdown::serve): Add beginning of process cache support. (server_request::server_request): Ditto. (server_request::process): Use debug_printf. Add beginning of process cache support. (server_request_queue::cleanup): Kill off any request loop threads. (server_request_queue::add): Add beginning of process cache support. (handle_signal): Trigger a shutdown. (main): Print out some useful info at startup - version, date time. Add process cache support. Spawn a separate thread for the transport request loop, thus allowing concurrent support for multiple transports. * cygserver_client.cc (client_request_get_version::serve): Add process cache support. (client_request_attach_tty::serve): Add process cache support. (client_request_shutdown::serve): Add process cache support. * cygsserver_process.cc: New file with the process cache support. * cygserver_shm.cc: Redefine debug_printf to allow conditional output. * cygwin.din: Export shmdt(). * shm.cc: Run indent. Update FIXME's. (shmdt): New function. * include/cygwin/cygserver.h (class client_request): Add process cache support. (class client_request_get_version): Ditto. (class client_request_shutdown): Ditto. (class client_request_attach_tty): Ditto. * include/cygwin/cygserver_process.h: New header for process cache support. Sun Sep 30 8:52:00 2001 Robert Collins * include/cygwin/cygserver_transport.h: Add copyright header. * include/cygwin/cygserver_transport_pipes.h: Ditto. * include/cygwin/cygserver_transport_sockets.h: Ditto. Sat Sep 29 20:40:00 2001 Robert Collins * Makefile.in: Add cygserver_transport_sockets.o to DLL_OFILES. Add cygserver_transport_sockets_outside.o to cygserver.exe. * cygserver.cc: Include new include files. * cygserver_client.cc: Ditto. * cygserver_shm.h: No need to include now. * cygerver_transport.cc: Include new include files. (transport_layer_base::transport_layer_base): Strip back to a stub. (transport_layer_base::listen): Ditto. (transport_layer_base::accept): Ditto. (transport_layer_base::close): Ditto. (transport_layer_base::read): Ditto. (transport_layer_base::write): Ditto. (transport_layer_base::connect): Ditto. * cygserver_transport_pipes.cc: Include new header "cygwin/cygserver_transport_pipes.h". * cygserver_transport_sockets.cc: New file. * dcrt0.cc: No need to include now. * fhandler_tty.cc: Ditto. * tty.cc: Ditto. * include/cygwin/cygserver_transport.h: Strip the base class to a stub. Remove the cygserver_transport_pipes class. * include/cygwin/cygserver_transport_pipes.h: New file. * include/cygwin/cygserver_transport_sockets.h: New file. Tue Sep 25 16:22:00 2001 Robert Collins * autoload.cc: Add dynamic load statement for 'ImpersonateNamedPipeClient'. * Makefile.in: Add new object files, and build instructions for cygserver.exe. * cygwin.din: Export ftok, shmat, shmctl and shmget. * dcrt0.cc: Additional includes for cygserver support. (dll_crt0_1): Initialise the cygserver client. * fhandler.h (fhandler_tty): New method cygserver_attach_tty. * fhandler_tty.cc: Additional includes for cygserver support. (fhandler_tty_slave::open): Attempt to use the cygserver when obtaining handles from the parent process. On failure or 9x use the current method. (fhandler_tty_slave::cygserver_attach_tty): New function. * fork.cc (fork_child): Fixup shm memory mapped areas. * pinfo.h: Declare fixup_shms_after_fork(). * security.h: Declare alloc_sd(). * tty.cc: Additonal includes to support cygserver. (tty::common_init): Don't allow others to open us if the cygserver is running. * winsup.h: Declare cygserver_running. * cygserver.cc: New file. * cygserver_client.cc: New file. * cygserver_shm.cc: New file. * cygserver_shm.h: New file. * cygserver_transport.cc: New file. * cygserver_transport_pipes.cc: New file. * ipc.cc: New file. * shm.cc: New file. * include/cygwin/cygserver.h: New file. * include/cygwin/cygserver_transport.h: New file. * include/sys/ipc.h: New file. * include/sys/shm.h: New file. 2002-02-28 Robert Collins * thread.cc (semaphore::TryWait): Set errno as required by posix 1003.1. (__sem_wait): Ditto. (__sem_trywait): Ditto. 2002-02-27 Christopher Faylor * include/cygwin/version.h: Bump DLL minor number. 2002-02-23 Corinna Vinschen * cygwin.din (fstat64): New symbol. (ftruncate64): Ditto. (lseek64): Ditto. (lstat64): Ditto. (mmap64): Ditto. (seekdir64): Ditto. (stat64): Ditto. (telldir64): Ditto. (truncate64): Ditto. * dir.cc (telldir64): New function. (telldir): Call telldir64(). (seekdir64): New function. (seekdir): Call seekdir64(). * fhandler.h: Redefine all methods using __off32_t to use __off64_t. * fhandler.cc: Use __off64_t and struct __stat64 throughout. * fhandler_clipboard.cc: Ditto. * fhandler_disk_file.cc: Ditto. * fhandler_dsp.cc: Ditto. * fhandler_floppy.cc: Ditto. * fhandler_mem.cc: Ditto. * fhandler_random.cc: Ditto. * fhandler_socket.cc: Ditto. * fhandler_tape.cc: Ditto. * fhandler_zero.cc: Ditto. * pipe.cc: Ditto. * glob.c: Ditto, call lstat64 and stat64 in Cygwin. * mmap.cc: Use __off64_t throughout. (mmap64): New function. * sec_acl.cc (acl_worker): Use struct __stat64, call stat64 and lstat64. * syscalls.cc (lseek64): New function. (stat64_to_stat32): Ditto. (fstat64): Ditto. (stat64): Ditto. (lstat64): Ditto. (ftruncate64): Ditto. (truncate64): Ditto. (_fstat): Call fstat64. (_stat): Call stat64. (cygwin_lstat): Rename to avoid declaration problem. Call lstat64. (stat_worker): Use struct __stat64. (access): Ditto. (ftruncate): Call ftruncate64. (truncate): Call truncate64. * wincap.cc: Set flag has_64bit_file_access appropriately. * wincap.h: Add flag has_64bit_file_access. * winsup.h (ILLEGAL_SEEK): Define as __off64_t. (stat_dev): Declare using struct __stat64. (stat_worker): Ditto. * include/cygwin/stat.h (struct __stat32): Define if compiling Cygwin. (struct __stat64): Ditto. (struct stat): Revert definition with explicitly sized datatypes. Eliminate sized field names. * include/cygwin/types.h (blksize_t): New type. (__blkcnt32_t): Ditto. (__blkcnt64_t): Ditto. (blkcnt_t): Ditto. 2002-02-22 Christopher Faylor * sync.h (new_muto): Just accept an argument which denotes the name of the muto. Use this argument to construct static storage. * cygheap.cc (cygheap_init): Reflect above change. * exceptions.cc (events_init): Ditto. * malloc.cc (malloc_init): Ditto. * path.cc (cwdstuff::init): Ditto. * cygheap.h (cwdstuff): Change name of lock element to make it less generic. * path.cc (cwdstuff::get_hash): Ditto. (cwdstuff::get_initial): Ditto. (cwdstuff::set): Ditto. (cwdstuff::get): Ditto. * sigproc.cc (proc_subproc): Ditto. * debug.cc (lock_debug): Change to method. Use method rather than macro throughout. * tty.h (tty_min::kill_pgrp): Declare new method. * fhandler_termios.cc (tty_min::kill_pgrp): New method. (fhandler_termios::line_edit): Use new method for killing process. * dcrt0.cc (do_exit): Ditto. * dtable.cc (dtable::get_debugger_info): New method for inheriting dtable info from a debugger. * tty.cc (tty_init): Attempt to grab file handle info from parent debugger, if appropriate. # dtable.cc (dtable::stdio_init): Make this a method. (dtable::init_std_file_from_handle): Don't set fd unless it's not open. (dtable::build_fhandler_from_name): Move name setting to dtable::build_fhandler. (dtable::build_fhandler): Add win32 name parameter. * dcrt0.cc (dll_crt0_1): Change to use dtable stdio_init. * dtable.h (dtable): Reflect build_fhandler parameter change. * mmap.cc (mmap_record::alloc_fh): Don't set name parameter in build_fhandler. * net.cc (fdsock): Remove set_name call since it is now handled by build_fhandler. * sigproc.cc (proc_subproc): Release muto as early as possible. 2001-02-22 Corinna Vinschen * smallprint.c (rn): Allow long long values. (__small_vsprintf): Add 'D', 'U' and 'X' formats for long long parameters. 2002-02-19 Christopher Faylor * fhandler.cc (fhandler_base::puts_readahead): Remove default parameter setting. Newer gcc's complain about this. (fhandler_base::set_readahead_valid): Ditto. * fhandler_dsp.cc (Audio::open): Ditto. (fhandler_dev_dsp::open): Ditto. 2002-02-19 Christopher Faylor * fork.cc (fork_parent): Use sec_user_nih to control process/thread inheritance/permission. * spawn.cc (spawn_guts): Ditto. * security.cc (create_token): Initialize token so that it is not tested for bogus value later. Use sec_user to control process/thread creation. * security.h (__sec_user): Rename declaration from sec_user. (sec_user_nih): Declare here as inline function wrapper for __sec_user. (sec_user): Ditto. * sigproc.cc (czombies): Allocate a character array for zombies to avoid constructor overhead (extremely hackish, I know). (cpchildren): Ditto. (pchildren): New define. (zombies): Ditto. (getsem): Use sec_user_nih to control semaphore inheritance/permission. 2002-02-16 Christopher Faylor * times.cc (hires::prime): Restore thread priority on failure condition. * uinfo.cc (uinfo_init): Use more robust method for determining if process was invoked from a non-cygwin process. * sync.h (muto::init): Eliminate "inheritance" parameter. (new_muto): Reflect removal of parameter. * sync.cc (muto::init): Ditto. * cygheap.cc (cygheap_init): Ditto. * debug.cc (threadname_init): Ditto. * exceptions.cc (events_init): Ditto. * malloc.cc (malloc_init): Ditto. * path.cc (cwdstuff::init): Ditto. * sigproc.cc (sigproc_init): Ditto. * grp.cc (group_lock): Use different method for locking with static member. (read_etc_group): REALLY ensure that read lock mutex is released. * passwd.cc (passwd_lock): Use different method for locking with static member. (read_etc_passwd): REALLY ensure that read lock mutex is released. * shared.cc (sec_user): Correct reversed inheritance test. 2002-02-15 Christopher Faylor * hires.h (hires::usecs): Rename from utime. Accept an argument. * strace.cc (strace::microseconds): Use hires class for calculating times. * sync.h (new_muto): Use NO_COPY explicitly in declaration. * times.cc (gettimeofday): Reflect change in usecs argument. (hires::usecs): Ditto. Changed name from utime. * winsup.h (NO_COPY): Add nocommon attribute to force setting aside space for variable. * regcomp.c (REQUIRE): Add a void cast to bypass a warning. 2002-02-15 Christopher Faylor * hires.h: New file. * times.cc (gettimeofday): Use hires class for calculating current time. (hires::prime): New method. (hires::utime): Ditto. 2002-02-14 Christopher Faylor * include/sys/cygwin.h (cygwin_getinfo_types): New CW_STRACE_ACTIVE. * external.cc (cygwin_internal): Handle CW_STRACE_ACTIVE. 2002-02-14 Christopher Faylor * exceptions.cc (unused_sig_wrapper): Eliminate unused parameter to asm. * external.cc (cygwin_internal): Change CW_STRACE_ON to CW_STRACE_TOGGLE. * strace.cc (strace::hello): Toggle strace on and off. * sync.cc (muto::init): Renamed from constructor. * sync.h (muto::new): Delete. (muto::delete): Ditto. (new_muto): Simplify. Use muto.init for nearly everything. * uinfo.cc (uinfo_init): Avoid closing a NULL handle. * include/sys/cygwin.h (cygwin_getinfo_types): Rename CW_STRACE_OFF to CW_STRACE_TOGGLE. Delete CW_STRACE_OFF. * include/sys/strace.h (strace): Add "inited" field. 2001-02-12 Corinna Vinschen * include/cygwin/acl.h: Fix definition of aclent_t. 2002-02-10 Christopher Faylor * Makefile.in (DLL_OFILES): Consolidate object files. 2002-02-10 Corinna Vinschen * child_info.h, cygheap.h, fhandler_clipboard.cc, fhandler_dsp.cc, fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc, fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc, pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc, security.h, thread.h, uinfo.cc, include/cygwin/acl.h: Fix copyright. 2002-02-10 Corinna Vinschen * child_info.h, cygheap.h, dcrt0.cc, dir.cc, fhandler.cc, fhandler.h, fhandler_clipboard.cc, fhandler_disk_file.cc, fhandler_dsp.cc, fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc, fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc, pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc, security.h, spawn.cc, syscalls.cc, thread.h, uinfo.cc, winsup.h: Change usage of uid_t to __uid16_t, gid_t to __gid16_t and off_t to __off32_t throughout. Use INVALID_UID, INVALID_GID and INVALID_SEEK instead casting -1 to the appropriate type. * winsup.h: Define INVALID_UID, INVALID_GID and INVALID_SEEK. * include/cygwin/acl.h: Define internal __aclent16_t and __aclent32_t types. Don't declare acl functions when compiling Cygwin. * include/cygwin/grp.h: Declare getgrgid() and getgrnam() with correct types for internal usage. 2002-02-10 Corinna Vinschen Patch suggested by Pierre A. Humblet : * uinfo.cc (internal_getlogin): Try evaluating user by SID even if ntsec is off. (uinfo_init): Set primary group even if ntsec is off. 2002-02-09 Corinna Vinschen * include/cygwin/grp.h: New file. * include/cygwin/stat.h: Ditto. * include/cygwin/types.h: Add definitions for __off32_t, __off64_t, off_t, __uid16_t, __uid32_t, uid_t, __gid16_t, __gid32_t and gid_t. * include/sys/cygwin.h: Use correct uid and gid types. 2002-02-09 Corinna Vinschen * dtable.cc (dtable::dup2): Revert previous patch. * fhandler.h: Ditto. (fhandler_socket::recv): Define new method. (fhandler_socket::send): Ditto. * fhandler_socket.cc (fhandler_socket::recv): New method. (fhandler_socket::send): Ditto. (fhandler_socket::read): Call fhandler_socket::recv() now. (fhandler_socket::write): Call fhandler_socket::send() now. * net.cc (class wsock_event): Move definition to wsock_event.h. (fdsock): Revert previous patch. (cygwin_recv): Move implementation to fhandler_socket::recv(). (cygwin_send): Move implementation to fhandler_socket::send(). * wsock_event.h: New file. 2002-02-06 Alexander Gottwald * net.cc (get_2k_ifconf): Create interface entries for tokenring cards. 2002-02-08 Corinna Vinschen * dtable.cc (dtable::dup2): Store fd for fhandler_socket. * fhandler.h (fhandler_base::set_fd): New virtual method. (fhandler_base::get_fd): Ditto. (fhandler_socket::set_fd): Ditto. (fhandler_socket::get_fd): Ditto. * fhandler_socket.cc (fhandler_socket::read): Call cygwin_recv instead of native Winsock recv. (fhandler_socket::write): Call cygwin_send instead of native Winsock send. * net.cc (fdsock): Store fd in fhandler_socket. 2002-02-07 Corinna Vinschen * net.cc (cygwin_getsockname): Fix handling of NULL sun_path. 2002-01-29 Corinna Vinschen * net.cc (getdomainname): Fix registry key for 9x systems, too. 2002-01-29 Corinna Vinschen * net.cc (getdomainname): Fix registry key for NT systems. 2002-01-28 Christopher Faylor * external.cc (cygwin_internal): Initialize various internal settings if required to allow use of some things from user loaded DLL. (CW_STRACE_ON): Add new feature. (CW_CYGWIN_PID_TO_WINPID): Ditto. * pinfo.cc (set_myself): Call "strace.hello" to initiate possible strace session. (pinfo::init): Guard against dereferencing uninitialized myself. * sigproc.cc (wait_sig): Call strace.hello() when __SIGTRACE "signal" received. * strace.cc (strace::hello): New method. * wincap.cc (wincapc::init): Avoid initializing if already initialized. * wincap.h (wincapc::wincapc): New method. * include/sys/cygwin.h: Add new CW_ enums. Kludge typedefs of {g,u}id_t if required. * strace.h (strace::hello): Declare new method. 2002-01-28 Earnie Boyd * include/sys/strace.h (_STRACE_ON): Define. (_STRACE_OFF): Ditto. 2002-01-24 Christopher Faylor * speclib: Ensure that temporary def file is removed. 2002-01-23 Christopher Faylor * speclib: Use rm -f to remove temp file just to quiet any potential warnings. 2002-01-23 Corinna Vinschen * security.cc (create_token): Use sec_user() to create SECURITY_ATTRIBUTES structure for primary token. Use MAXIMUM_ALLOWED access rights instead of TOKEN_ALL_ACCESS. 2002-01-23 Corinna Vinschen * path.cc (symlink): Fix check for already existing file. 2002-01-21 Christopher Faylor * cygmagic: Suppress error output when figuring out if sum takes an option. 2002-01-21 Christopher Faylor * cygmagic: Attempt to figure out if sum takes an option. 2002-01-21 DJ Delorie * Makefile.in (libpthread.a): Pass the assembler also. (libm.a): Ditto. (libc.a): Ditto. * speclib: Specify the assembler to dlltool. 2002-01-21 Christopher Faylor * include/cygwin/version.h: Bump DLL minor number. 2002-01-21 Corinna Vinschen * grp.cc (getgrgid): Don't return default gid entry when ntsec is on. * syscalls.cc (setegid): Don't set primary group in process token. 2002-01-21 Christopher Faylor * speclib: Don't use /dev/null as DLL name. Just default to what's already in .def file. 2002-01-21 Christopher Faylor * exceptions.cc (sig_handle): Remove last vestiges of SA_NOCLDSTOP code which caused SIGCHLD to be ignored. 2002-01-20 Christopher Faylor * include/cygwin/version.h: Bump DLL minor number. 2002-01-20 Christopher Faylor * syscalls.cc (regfree): Make dll_export. 2002-01-20 Christopher Faylor * exceptions.cc (ctrl_c_handler): Convert windows pid to cygwin pid when detecting if we should actually handle CTRL-C. 2002-01-19 Christopher Faylor * Makefile.in (new-cygwin1.dll): Revert previous change. libsupc++.a is only available in libstdc++-v3. 2002-01-19 Christopher Faylor * exceptions.cc (sig_handle_tty_stop): Don't send SIGCHLD if parent doesn't want it. (sig_handle): Don't check for SA_NOCLDSTOP here. We don't have enough information. 2002-01-19 Christopher Faylor * include/cygwin/version.h: Bump DLL minor number. 2002-01-19 Christopher Faylor * Makefile.in (new-cygwin1.dll): Just use -lsupc++ for link. * sigproc.cc (proc_exists): Change existence criteria. * sync.h (new_muto): Add volatile to definition to avoid gcc optimization problems. 2002-01-19 Corinna Vinschen * include/cygwin/version.h: Bump API minor version to 51. 2002-01-19 Mark Bradshaw * cygwin.din: Add recvmsg and sendmsg. * net.cc: Add cygwin_recvmsg and cygwin_sendmsg. * /usr/include/sys/socket.h: Add recvmsg and sendmsg. 2002-01-19 Corinna Vinschen * security.cc (create_token): Close processes token handle as soon as it's not used anymore. 2002-01-17 Corinna Vinschen * Makefile.in: Add fnmatch.o to DLL_OFILES. * cygwin.din: Add fnmatch export symbol. * fnmatch.c: New file. * include/fnmatch.h: Ditto. * include/cygwin/version.h: Bump API minor version to 50. 2002-01-15 Corinna Vinschen * path.cc (fchdir): Call chdir with full windows path. 2002-01-14 Corinna Vinschen * dir.cc: Use INVALID_FILE_ATTRIBUTES instead of "(DWORD) -1" for file attributes throughout. * fhandler.cc: Ditto. * fhandler_disk_file.cc: Ditto. * path.cc: Ditto. * path.h: Ditto. * syscalls.cc: Ditto. * times.cc (utimes): Use path_conv::isdir() instead of explicit GetFileAttributes() call. 2002-01-13 Christopher Faylor * dcrt0.cc (multiple_cygwin_problem): Clarify logic and make CYGWIN_MISMATCH_OK more powerful. 2002-01-10 Christopher Faylor * exceptions.cc (sig_handle): Accept a second argument indicating whether the signal came from this process or not. * sigproc.h: Reflect sig_handle arg change. * signal.cc (kill_pgrp): Add sigframe info. (abort): New function. Eliminates newlib function of same name. * sigproc.cc (wait_sig): Pass "signal from this process" value as arg 2. 2002-01-10 Corinna Vinschen * syscalls.cc (pathconf): Guard _PC_PATH_MAX branch against invalid file parameter. 2002-01-09 Christopher Faylor Robert Collins * exceptions.cc (early_stuff_init): Rename from misnamed set_console_handler. (ctrl_c_handler): Attempt to work around potential signal duplication during process startup. (sig_handle): Ignore SIGINT when we're just an "exec stub". * spawn.cc (spawn_guts): Store pid of spawned process in global for use by ctrl_c_handler. * dcrt0.cc (dll_crt0_1): Call renamed initialization function. * winsup.h: Reflect function name change. 2002-01-08 Corinna Vinschen * net.cc (cygwin_accept): Set sun_path for newly connected socket. 2002-01-07 Ralf Habacker * Makefile.in: Add uninstall target. 2002-01-07 Christopher Faylor * sigproc.cc (getsem): Clean up debugging output. 2002-01-07 Christopher Faylor * sigproc.cc (getsem): Set errno when unable to create own semaphore. Reorganize to make clearer that error should only come from initial creation of process semaphore. 2002-01-06 Christopher Faylor * dtable.cc (dtable::init_std_file_from_handle): Add some defensive code to invalid handle case. 2002-01-06 Corinna Vinschen * ioctl.cc (ioctl): Make third argument optional. * include/sys/ioctl.h: Ditto in declaration. * dtable.cc (dtable::init_std_file_from_handle): Revert previous bogus patch. * window.cc (WndProc): Raise SIGURG instead of SIGIO in case of FD_OOB message. 2002-01-05 Christopher Faylor * dir.cc (opendir): Guarantee release of alloced fhandler structure on error. 2002-01-05 Corinna Vinschen * exceptions.cc (sig_handle): Set default action for SIGURG to SIG_IGN. 2002-01-05 Corinna Vinschen * dtable.cc (dtable::init_std_file_from_handle): Don't treat NULL handle as errorneous. 2002-01-04 Christopher Faylor * cygmagic: Change logic for equality test. 2002-01-04 Christopher Faylor * dir.cc (opendir): Don't attempt to call sub-opendir if ENOENT. 2002-01-04 Corinna Vinschen * net.cc: Replace usage of AF_UNIX by Posix compliant AF_LOCAL throughout. (socketpair): Explicitly allow SOCK_STREAM and SOCK_DGRAM socket types in families AF_UNIX and AF_LOCAL. Explicitly allow PF_UNSPEC, PF_LOCAL and PF_INET protocols. Return error otherwise. Implement datagram socketpairs. 2002-01-01 Christopher Faylor * speclib: Remove temp files automatically. 2002-01-01 Corinna Vinschen * fhandler.h (fhandler_socket::sun_path): New private member. (fhandler_socket::set_sun_path): New method. (fhandler_socket::get_sun_path): Ditto. * fhandler_socket.cc (fhandler_socket::fhandler_socket): Initialize sun_path to NULL. (fhandler_socket::~fhandler_socket): Free sun_path if needed. (fhandler_socket::set_sun_path): New method. * net.cc (cygwin_bind): Set sun_path to path of local socket file. (cygwin_getsockname): Add code to return correct sockaddr for unix domain sockets.