2009-02-04 Corinna Vinschen * fhandler_proc.cc (proc_tab): Add entry for mounts symlink. (format_proc_mounts): New function to implement mounts symlink. * fhandler_process.cc (process_tab): Add entry for mounts file. (format_process_mounts): New function to implement mounts file. 2009-02-04 Corinna Vinschen * security.cc (alloc_sd): Disable generating default permission entries for directories. 2009-01-29 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::readdir): Fix inode number evaluation for faked "." entry. * mount.cc (fs_info::update): Move setting of is_cdrom after checking for caseinsensitivity. Recognize UDF in is_cdrom case and set caseinsensitive flag according to UDF brokenness determined by OS. Add comment to explain why. * mount.h (class fs_info): Add is_udf status flag. * path.cc (symlink_info::check): Add workaround for UDF bug in terms of casesensitivity on certain OSes. * wincap.h (wincaps::has_broken_udf): New element. (wincaps::has_broken_udf): New element 2009-01-27 Christopher Faylor * fhandler.cc (fhandler_base::wait_overlapped): Set bytes to -1 on EINTR or real error. (fhandler_base::write_overlapped): Assume that bytes_written will contain proper error value. * pipe.cc (fhandler_pipe::fhandler_pipe): Set uninterruptible_io since signals are handled by pipe functions now. 2009-01-26 Corinna Vinschen * shared.cc (shared_name): New function for WCHAR names. (open_shared): Take name parameter as WCHAR. Accommodate throughout. * shared_info.h ((CURR_SHARED_MAGIC): Redefine. (shared_name): Add declaration for function taking a WCHAR name. (open_shared): Change declaration according to above change. * pinfo.cc (pinfo::init) : Accommodate above change. 2009-01-26 Corinna Vinschen * grp.cc (getgrgid_r): Simplify code by using stpcpy. (getgrnam_r): Ditto. * passwd.cc (getpwuid_r32): Simplify code by using stpcpy. (getpwnam_r): Ditto. 2009-01-26 Corinna Vinschen * uinfo.cc (pwdgrp::load): Open file with FILE_OPEN_FOR_BACKUP_INTENT flag. 2009-01-24 Corinna Vinschen * mount.cc (mount_info::from_fstab): Open fstab file with FILE_OPEN_FOR_BACKUP_INTENT flag. 2009-01-23 Corinna Vinschen * smallprint.cc (__small_vsprintf): Use already available buffer tmp in wfillin case. 2009-01-22 Christopher Faylor * select.cc (peek_serial): Add hack to allow proper operation with com0com driver. 2009-01-21 Corinna Vinschen Remove USE_SERVER define. Accommodate throughout. * configure.in: Remove --enable-server option. * configure: Regenerate. * environ.cc: Remove CYGWIN=server setting. 2009-01-20 Corinna Vinschen * fhandler_procnet.cc: Reorganize global procnet content data into a new struct virt_tab_t. Accommodate throughout. * fhandler.h: Fix copyright dates. * fhandler_process.cc: Ditto. * fhandler_registry.cc: Ditto. 2009-01-20 Corinna Vinschen * devices.h (FH_PROCESSFD): New device type. * dtable.cc (build_fh_pc): Add case for FH_PROCESSFD. * fhandler.h (class fhandler_virtual): Drop bufalloc member. * fhandler_virtual.h: New header. * fhandler_proc.cc: Remove types proc_type_t and proc_tab_t in favor of types virt_type_t and virt_tab_t from fhandler_virtual.h. Change prototypes of format_XXX functions accordingly. (proc_tab): Drop size member info. (fhandler_proc::fill_filebuf): Don't allocate filebuf here. Allocate it in the format_XXX functions. * fhandler_process.cc: Reorganize global process content data into a new struct virt_tab_t. Accommodate throughout. (format_process_winexename): New function. (format_process_winpid): New function. (format_process_exename): New function. (format_process_root): New function. (format_process_cwd): New function. (format_process_cmdline): New function. (format_process_ppid): New function. (format_process_uid): New function. (format_process_pgid): New function. (format_process_sid): New function. (format_process_gid): New function. (format_process_ctty): New function. (format_process_fd): New function. * fhandler_procnet.cc (fhandler_procnet::fill_filebuf): Don't use bufalloc. * fhandler_registry.cc (fhandler_registry::fill_filebuf): Define bufalloc locally. * fhandler_virtual.cc (fhandler_virtual::fhandler_virtual): Drop initialization of bufalloc. (fhandler_virtual::dup): Drop copying bufalloc. 2009-01-20 Corinna Vinschen * thread.h (struct pthread_rwlock::RWLOCK_READER): Add counter n. * thread.cc (pthread_rwlock::rdlock): If a thread already owns a read lock, just count the number of locks for it, per SUSv4. (pthread_rwlock::tryrdlock): Ditto. (pthread_rwlock::unlock): If a thread has more than one concurrent read locks, just count down. 2009-01-20 Corinna Vinschen * autoload.cc (WSAIoctl): Reintroduce. (WSASendMsg): Define. * fhandler.h (class fhandler_socket): Change definition of recv_internal and send_internal to take WSAMSG pointer as parameter. * fhandler_socket.cc (WSAID_WSARECVMSG): Define. (LPFN_WSARECVMSG): Define. (WSASendMsg): Declare. (get_ext_funcptr): New function to fetch address of WSARecvMsg. (fhandler_socket::recv_internal): Take just a LPWSAMSG parameter. Change code accordingly. If control information is requested, fetch address of WSARecvMsg and use that instead of WSARecvFrom. (fhandler_socket::recvfrom): Change return type to ssize_t as declared in fhandler.h. Accommodate changes to recv_internal. (fhandler_socket::recvmsg): Ditto. Make sure that control information is only requested if system, address family, and socket type support it. (fhandler_socket::send_internal): Take just a LPWSAMSG parameter and the flags. Change code accordingly. If control information is provided, use WSASendMsg instead of WSASendTo. (fhandler_socket::sendto): Drop useless comment. Accommodate changes to send_internal. (fhandler_socket::sendmsg): Ditto. Make sure that control information is only provided if system, address family, and socket type support it. * wincap.h (wincaps::has_recvmsg): New element. (wincaps::has_sendmsg): New element * wincap.cc: Implement above elements throughout. * include/cygwin/socket.h (CMSG_ALIGN): Phrase in terms of alignment of type struct cmsghdr. 2009-01-17 Corinna Vinschen * mmap.cc (mmap64): Fix condition checking if anonymous mapping beyond EOF is required. 2009-01-17 Corinna Vinschen * fhandler_proc.cc: Reorganize global proc content data into a new struct proc_tab_t. Accommodate throughout. (format_proc_version): New function. (format_proc_loadavg): New function. (format_proc_self): New function. * resource.cc (getrlimit): Return correct rlim_max value for RLIMIT_NOFILE. 2009-01-16 Corinna Vinschen * Fix copyright dates. 2009-01-13 Corinna Vinschen * libc/getopt.c (parse_long_options): Use fix from NetBSD's getopt to avoid false ambiguities. 2009-01-12 Corinna Vinschen * syscalls.cc (enum bin_status): New type. (try_to_bin): Return bin_status. Rename win32_path to pc. Rename h to fh. Rename fh to tmp_fh. Add code to set delete dispostion and more code to replace file moved to bin by another, temporary file. Add comments to explain why. (unlink_nt): Replace move_to_bin with bin_stat. Only set bin_stat to move_to_bin for non-remote files. As a last resort, call try_to_bin if setting delete-on-close failed. Only re-set R/O DOS attribute and only close handle if it's still valid. 2009-01-11 Corinna Vinschen * errno.cc (errmap): Set errno to ENOENT instead of ENOSHARE throughout. * path.cc (path_conv::check): Set to and check for ENOENT instead of ENOSHARE. * path.cc (symlink_info::check): Fix Samba 3.2.x comment. 2009-01-09 Corinna Vinschen * mount.cc (mount_info::from_fstab_line): Always convert drive letter in native path to uppercase. * path.cc (normalize_win32_path): Ditto. (path_prefix_p): Revert previous patch. * path.cc (symlink_info::check): Check for STATUS_INVALID_PARAMETER return code to circumvent weird behaviour of Samba 3.2.x shares. 2009-01-09 Christopher Faylor * include/sys/cygwin.h (CW_SETERRNO): Define. * external.cc (CW_SETERRNO): Implement. * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 192 to reflect the above change. * path.cc (path_prefix_p): Treat X: as equivalent to x:. * mkglobals_h: Remove unneeded #define. * spawn.cc (spawn_guts): Avoid overly wordy initialization to zero. 2009-01-08 Corinna Vinschen * libc/fts.c (fts_build): Use DT_DIR case on Cygwin. (fts_ufslinks): Fix using wrong structure member in Cygwin-specific code. 2009-01-07 Corinna Vinschen * ntdll.h: Reorder NT status flags. Fix a case difference. Add STATUS_CANNOT_DELETE flag. * syscalls.cc (unlink_nt): Change initial NtOpenFile to request FILE_SHARE_DELETE sharing mode. Change comment accordingly. If setting delete disposition failed with STATUS_CANNOT_DELETE, try to delete using delete-on-close. Explain why. Rearrange setting R/O DOS attribute after trying to delete. Simplify comment. 2009-01-07 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::link): Only add .exe if original file has .exe as well. * path.cc (path_conv::is_binary): Only recognize Windows 32 and 64 bit apps as binaries. 2009-01-02 Christopher Faylor Remove unneeded header files from source files throughout. Update copyrights where appropriate. * globals.cc: New file for generic global variables. * mkglobals_h: New script to generate globals.h. * mkstatic: New script used to build a (currently non-working) static libcygwin_s.a. * Makefile.in: Add unused rule to build a non-working libcygwin_s.a. (DLL_OFILES): Add globals.o. Make all objects rely on globals.h. (globals.h): New target. Generate globals.h. * cygtls.h: Honor new CYGTLS_HANDLE define to control when the HANDLE operator is allowed in _cygtls. * dcrt0.cc: Move most globals to globals.cc. * init.cc: Ditto. * environ.cc (strip_title_path): Remove now-unneeded extern. * fhandler_serial.cc (fhandler_serial::open): Ditto. * pinfo.cc: Ditto. (commune_process): Ditto. * shared.cc: Ditto. * glob.cc: Ditto. * strace.cc: Ditto. * exceptions.cc: Define CYGTLS_HANDLE before including winsup.h. * path.cc (stat_suffixes): Move here. * security.h: Add forward class path_conv declaration. * smallprint.cc (__small_vsprintf): Make a true c++ function. (__small_sprintf): Ditto. (small_printf): Ditto. (console_printf): Ditto. (__small_vswprintf): Ditto. (__small_swprintf): Ditto. * spawn.cc (spawn_guts): Remove _stdcall decoration in favor of regparm. (hExeced): Move to globals.cc * strfuncs.cc (current_codepage): Ditto. (active_codepage): Ditto. * sync.cc (lock_process::locker): Move here from dcrt0.cc. * syscalls.cc (stat_suffixes): Move to path.cc. * tty.cc (tty::create_master): Uncapitalize fatal warning for consistency. * winsup.h: Include globals.h to declare most of the grab bag list of globals which were previously defined here. * mount.h: Move USER_* defines back to shared_info.h. * speclib: Force temporary directory cleanup. 2009-01-02 Christopher Faylor * speclib: Rewrite completely in perl. Avoid multiple nm calls.