Commit Graph

7976 Commits

Author SHA1 Message Date
Chris Sutcliffe 9cd6116e56 2009-13-09 Jan Nijtmans <nijtmans@users.sourceforge.net>
* include/winuser.h (SendMessageTimeoutA, SendMessageTimeoutW): Correct
        definition.
2009-11-13 23:29:26 +00:00
Chris Sutcliffe 344af4f708 2009-11-09 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
* include/winnt.h (PROCESS_SUSPEND_RESUME): Define.
2009-11-13 21:36:34 +00:00
Corinna Vinschen ab36239578 * net.cc (fdsock): Fill _rmem and _wmem with valid values returned
from getsockopt if setsockopt with desired values failed.
2009-11-13 12:35:53 +00:00
Corinna Vinschen 4ade241445 * new-features.sgml (ov-new1.7-os): Mention Windows 7 and 2008 R2.
(ov-new1.7-device): Add API get_avphys_pages, get_nprocs,
	get_nprocs_conf, and get_phys_pages.
2009-11-12 14:41:12 +00:00
Corinna Vinschen 339682e6de * sysconf.cc (get_nprocs): New function.
(get_nprocs_conf): Ditto.
	(get_avphys_pages): Ditto.
	(get_phys_pages): Ditto.
	* cygwin.din: Export them.
	* include/sys/sysinfo.h: New header, decalre above new functions.
	* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
	* posix.sgml: Mention them as GNU extensions.
2009-11-12 14:40:48 +00:00
Corinna Vinschen c08f09ab78 * fhandler.h (class fhandler_mailslot): Declare new private method
get_object_attr.
	* fhandler_mailslot.cc (fhandler_mailslot::get_object_attr): Implement.
	(fhandler_mailslot::open): Replace calls to path_conv::get_object_attr
	with calls to fhandler_mailslot::get_object_attr.
2009-11-11 18:16:57 +00:00
Corinna Vinschen afb7f5666d * getfacl.c (print_version): Fix copyright.
(main): Don't reuse local variables confusingly.  Don't print any file
	information if acl() fails.  Improve error message.  Always print a
	trailing empty line.  Set return code to 2 if accessing some file fails.
2009-11-11 10:12:35 +00:00
Corinna Vinschen 03c48ee2e0 * fhandler_console.cc (fhandler_console::read): Revert change from
2009-11-09.
2009-11-10 20:02:20 +00:00
Corinna Vinschen 3aec0f00b1 * fhandler_disk_file.cc (is_volume_mountpoint): Align check with
symlink_info::check_reparse_point().
	* path.cc (symlink_info::check_reparse_point): Rearrange slightly.
	Add code path for unrecognized repare point types.  Add comment.
2009-11-10 08:54:24 +00:00
Corinna Vinschen 16a72f7e4b * path.cc (symlink_info::check_reparse_point): Always check
SubstituteName for volume string to recognize volume mount points.
	Reuse subst when calling sys_wcstombs.
	* syscalls.cc (rename): Set errno to EBUSY when trying to rename
	volume mount points.  Explain why.
2009-11-09 19:46:36 +00:00
Corinna Vinschen ed66791aba * fhandler_console.cc (fhandler_console::read): Restrict generating
META key sequences to singlebyte input chars.
2009-11-09 15:38:36 +00:00
Corinna Vinschen aa9681ec35 * fhandler_disk_file.cc (fhandler_base::fstat_helper): Drop all "other"
permissions from st_mode, if the reading the file's security descriptor
	failed.  Explain why.
2009-11-08 10:22:28 +00:00
Corinna Vinschen b36d8c46e5 * globals.cc (ro_u_scr): New R/O unicode string.
(ro_u_sys): Ditto.
	* syscalls.cc (nt_path_has_suffix): Replace with ...
	(nt_path_has_executable_suffix): New function checking for explicit
	executable suffixes.
	(rename): Call nt_path_has_executable_suffix instead of
	nt_path_has_suffix.  Check oldpath for nt_path_has_executable_suffix
	as well to set old_explicit_suffix.
2009-11-06 20:51:03 +00:00
Corinna Vinschen 1636ce3b32 * transport_pipes.cc (transport_layer_pipes::transport_layer_pipes):
Check cygwin_internal for returning 0 rather than for != 0.
	(transport_layer_pipes::accept): Add debug output.
	(transport_layer_pipes::connect): Ditto.
2009-11-06 13:11:52 +00:00
Corinna Vinschen 74ad9cc012 * shared.cc (inst_root_inited): New static bool variable.
(init_installation_root): Set inst_root_inited to true.
	(memory_init): Print installation root debug output only if
	inst_root_inited is true.
2009-11-06 13:06:36 +00:00
Corinna Vinschen ac4ad8bffc * syscalls.cc (nt_path_has_suffix): New function.
(rename): Don't append .exe suffix if binary target name has any suffix
	at all.
2009-11-05 14:44:12 +00:00
Corinna Vinschen e807aacea9 * spawn.cc (dll_suffixes): Disable. Explain why.
(perhaps_suffix): Use stat_suffixes instead of dll_suffixes.
2009-11-05 09:59:18 +00:00
Corinna Vinschen 13e8e14ab5 * path.cc (read_mounts): Skip unnecessary test if path has been
fetched from loaded cygwin1.dll.
2009-11-04 17:09:32 +00:00
Corinna Vinschen b5f48aa961 * cygcheck.cc (cygwin_dll_path): New global variable.
(load_cygwin): Fetch cygwin DLL path and store in cygwin_dll_path.
	* strace.cc: Full ditto.
	* path.cc (read_mounts): First use the path stored in cygwin_dll_path,
	if available.  Then fall back to fetching own path.  Add comment.
	Drop printing warnings since they look funny in strace output.
2009-11-04 17:00:45 +00:00
Corinna Vinschen 44a019897f * path.cc (read_mounts): First get installation path from own path.
Check if cygwin1.dll exists in same directory.  Only if not, try to
	get installation path from setup registry key.  Add ample warnings.
2009-11-04 15:47:29 +00:00
Corinna Vinschen 73f2ecd19d * Makefile.in (cygpath.exe): Add -fno-threadsafe-statics to CXXFLAGS. 2009-11-04 14:14:52 +00:00
Corinna Vinschen 18f7c50401 * security.cc (alloc_sd): Re-introduce setting the SE_DACL_PROTECTED
flag.  Remove INHERITED_ACE flag from all inherited ACEs.  Add comment.
	Fix ace_off counter in unrelated ACE loop.
	* wincap.cc: Re-add has_dacl_protect throughout.
	* wincap.h: Ditto.
2009-11-03 09:31:45 +00:00
Corinna Vinschen 1bb3825949 * security.cc (alloc_sd): Re-enable generating default permission
entries for directories.
2009-11-02 20:50:15 +00:00
Corinna Vinschen df95867087 * dlfcn.cc (get_full_path_of_dll): Drop enforcing a .dll suffix.
(dlopen): If last path component has no dot, append one to override
	automatic .dll suffix in LoadLibrary.
2009-11-02 14:39:08 +00:00
Charles Wilson 599b80fc86 Final sync of pseudo-reloc.c with mingw64 and cygwin 2009-11-02 12:16:21 +00:00
Corinna Vinschen a657970571 * miscfuncs.h (transform_chars): Declare. Define inline variation here.
* mount.cc (mount_info::from_fstab): Remove extern declaration of
	transform_chars.
	* path.cc (tfx_chars): Move to strfuncs.cc.
	(transform_chars): Ditto.
	* strfunc.cc (tfx_chars): Moved here from path.cc.
	(transform_chars): Ditto.
	(sys_cp_wcstombs): Make UNICODE private use area conversion roundtrip
	save for all characters.
	(sys_cp_mbstowcs): Ditto, by removing special case for UTF-8 sequences
	representing U+f0XX UNICODE chars.  Fix typo in comment.
2009-11-02 11:42:04 +00:00
Corinna Vinschen 9725900d86 path.cc 2009-11-02 10:07:26 +00:00
Corinna Vinschen 0055caee0f * path.cc (tfx_chars): Constify. 2009-11-02 09:49:30 +00:00
Christopher Faylor 8a9358d0f7 * Makefile.in: Use utils mingw front-end to generate non-cygwin binary. 2009-11-01 17:22:44 +00:00
Corinna Vinschen 0de153c586 * new-features.sgml (ov-new1.7-misc): Add installation-specific
unique object names description.
2009-10-31 13:28:13 +00:00
Corinna Vinschen 34861325a5 * cygcheck.cc: Include cygprops.h.
(del_orphaned_reg): New option variable.
	(unique_object_name_opt): Ditto.
	(handle_reg_installation): New function.
	(print_reg_installations): Ditto.
	(del_orphaned_reg_installations): Ditto.
	(memmem): Ditto.
	(handle_unique_object_name): Ditto.
	(dump_sysinfo): Call print_reg_installations from here.
	(usage): Add usage for new options --delete-orphaned-installation-keys,
	--enable-unique-object-names, --disable-unique-object-names, and
	--show-unique-object-names.
	(longopts): Add new options --delete-orphaned-installation-keys,
	--enable-unique-object-names, --disable-unique-object-names, and
	--show-unique-object-names.
	(main): Handle new options.
	* utils.sgml (cygcheck): Change documentaion accordingly.
2009-10-31 13:26:37 +00:00
Corinna Vinschen b079a89e25 * transport_pipes.h (PIPE_NAME_PREFIX): New define.
(PIPE_NAME_SUFFIX): Ditto.
	(class transport_layer_pipes): Convert _pipe_name from char pointer
	to wchar_t array.
	* transport_pipes.cc (transport_layer_pipes::transport_layer_pipes):
	Accommodate the fact that _pipe_name is a wchar_t array, rather than
	a char pointer.
	(transport_layer_pipes::transport_layer_pipes): Initialize _pipe_name
	with variable pipe name based in installation key fetched from Cygwin
	DLL.
	(transport_layer_pipes::accept): Call CreateNamedPipeW explicitely.
	(transport_layer_pipes::connect): Call CreateFileW and WaitNamedPipeW
	explicitely.
2009-10-31 13:24:43 +00:00
Corinna Vinschen 526b0fbca3 * cygprops.h: New file.
* dtable.cc (handle_to_fn): Add check for correct installation_key
	string in object name for pipes and ttys.
	* external.cc (cygwin_internal): Add CW_GET_INSTKEY to allow fetching
	the installation_key from cygserver.
	* fhandler_fifo.cc (fhandler_fifo::fifo_name): Add installation_key
	to fifo name.
	* globals.cc: Include cygprops.h.
	(_RDATA): Move slightly and add comment.
	(cygwin_props): Define.
	* mount.cc (mount_info::init): Accommodate the fact that
	installation_root is now a global variable in DLL common shared memory,
	rather than a member of cygwin_shared.
	* pipe.cc (fhandler_pipe::create_selectable): Add installation_key to
	pipe name.
	* shared.cc (installation_root): Define here for storage in DLL
	common shared memory.
	(installation_key): Ditto.
	(installation_key_buf): Ditto.
	(init_installation_root): Convert from shared_info method to ordinary
	function.  Add initializing installation_key.  Invalidate
	installation_key depending of value of disable_key property.  Add
	comment to explain.
	(get_shared_parent_dir): Add installation_key to directory name.
	(get_session_parent_dir): Ditto.
	(shared_info::initialize): Move call to init_installation_root from
	here...
	(memory_init): ...to here.  Add debug output to print installation root
	and installation key.  Add comment to explain why.
	* shared_info.h (SHARED_INFO_CB): Recalculate.
	(CURR_SHARED_MAGIC): Ditto.
	(class shared_info): Remove definition of installation_root and
	declaration of init_installation_root.
	(init_installation_root): Declare.
	(installation_root): Declare.
	(installation_key): Declare.
	* uinfo.cc (pwdgrp::load): Accommodate the fact that installation_root
	is now a global variable in DLL common shared memory.
	* include/cygwin/version.h: Bump API minor number.
	(CYGWIN_INFO_INSTALLATIONS_NAME): Add.
	* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_GET_INSTKEY.
2009-10-31 13:24:06 +00:00
Corinna Vinschen 7c16c02dbb * sec_helper.cc (security_descriptor::realloc): Call free first if
current security desriptor has been allocated by GetSecurityInfo.
2009-10-31 09:31:47 +00:00
Corinna Vinschen b42441d32b * sec_helper.cc (security_descriptor::free): If sd_size is 0, call
LocalFree instead of ::free.

	* sec_acl.cc: Throughout replace old ACE flag definitions with current
	definitions as used in MSDN man pages.
	* security.cc: Ditto.

	* fhandler.cc (fhandler_base::open): Make sure file has really been
	just created before fixing file permissions.  Add S_JUSTCREATED
	attribute to set_file_attribute call.
	* fhandler_disk_file.cc (fhandler_disk_file::mkdir): Always create dir
	with default security descriptor and fix descriptor afterwards.
	Add S_JUSTCREATED flag to set_file_attribute call.
	* fhandler_socket.cc (fhandler_socket::bind): Ditto for AF_LOCAL
	socket files.
	* path.cc (symlink_worker): Ditto for symlinks.
	* security.cc (get_file_sd): Call GetSecurityInfo rather than
	NtQuerySecurityObject.  Explain why.  Change error handling accordingly.
	(alloc_sd): Skip non-inherited, non-standard entries in ACL if
	S_JUSTCREATED attribute is set.  Explain why.  Minor format fixes.
	* security.h (S_JUSTCREATED): New define.
	(security_descriptor::operator=): New operator.
2009-10-30 19:58:53 +00:00
Corinna Vinschen 53be6f3df6 * fhandler_random.cc (fhandler_dev_random::lseek): Revert change from
2009-10-23.
2009-10-30 10:53:54 +00:00
Corinna Vinschen 460af5f9c0 * smallprint.cc (hex_str): New const string.
(__rn): Drop str and use hex_str instead.
	(__small_vsprintf): If 'l' modifier has been found, print subsequent
	multibyte or wide char string using the s, S, or W options in extended
	hex value layout.

	* fhandler_disk_file.cc (fhandler_disk_file::readdir): Print WCHAR
	and resulting multibyte filename in extended hex value layout in
	debug output.
2009-10-30 09:02:30 +00:00
Charles Wilson c16cd85665 Honor DESTDIR for winsup/mingw and winsup/w32api 2009-10-29 21:53:47 +00:00
Corinna Vinschen d952e44c44 * cygcheck.cc (pretty_id): Drop arguments. Don't change CYGWIN
environment variable.
	(dump_sysinfo): Don't tweak CYGWIN environment variable, just call
	pretty_id once.
2009-10-28 11:41:27 +00:00
Corinna Vinschen 757ee9af8b * pathnames.sgml: Add limitation of case sensitivity with CreateProcess. 2009-10-28 10:11:22 +00:00
Corinna Vinschen 641ba32982 * new-features.sgml (ov-new1.7-posix): Mention UTF-8 as "C" default
and the default locale "C.UTF-8".
	* setup2.sgml (setup-locale-ov): Ditto.
2009-10-28 10:09:54 +00:00
Charles Wilson 73ddc92062 Correct pseudo-reloc size bug wrt error messages 2009-10-26 14:50:09 +00:00
Charles Wilson 654d34dda5 Sync pseudo-reloc.c with mingw64 2009-10-26 13:47:13 +00:00
Christopher Faylor bfead37df4 * faq-setup.xml: Fix clean_setup.pl reference. 2009-10-26 11:57:33 +00:00
Christopher Faylor b8263d5874 * faq-setup.xml: Change clean_setup.pl reference. 2009-10-26 11:25:16 +00:00
Charles Wilson 15c59df67f Sync pseudo-reloc.c with mingw64 2009-10-25 23:37:48 +00:00
Corinna Vinschen e83fef9d35 * fhandler.cc (fhandler_base::open): Remove unused variables sa and sd. 2009-10-24 08:40:15 +00:00
Corinna Vinschen 1647bf67c1 * fhandler.cc (fhandler_base::open): Always create file with default
security descriptor and fix descriptor afterwards.  Change comment to
	explain why.
	* security.cc (alloc_sd): Drop setting the SE_DACL_PROTECTED flag.
	* wincap.cc: Remove has_dacl_protect throughout.
	* wincap.h: Ditto.
2009-10-24 08:26:01 +00:00
Charles Wilson 060a658fe1 Sync pseudo-reloc.c with cygwin/lib/ 2009-10-23 22:19:42 +00:00
Corinna Vinschen 959684bf05 * fhandler_random.cc (fhandler_dev_random::lseek): Allow negative
dummy file positions as on Linux.
2009-10-23 09:22:14 +00:00
Corinna Vinschen aa0937c308 * cygcheck.cc (dump_sysinfo): Update with latest NT 6.1 versions. 2009-10-20 15:26:33 +00:00
Corinna Vinschen a4f31f1b1b * registry.cc (reg_key::get_int): Add alternative implementation
taking WCHAR strings.
	(reg_key::set_int): Ditto.
	(reg_key::get_string): Ditto.
	(reg_key::set_string): Ditto.
	* registry.h (struct reg_key): Add prototypes for added methods.
2009-10-20 14:54:47 +00:00
Corinna Vinschen c94a1006c6 * smallprint.cc (__small_vsprintf): Simplify UNICODE string handling
and allow empty strings.
2009-10-20 14:52:43 +00:00
Corinna Vinschen cbea3f7d93 * fhandler_disk_file.cc (fhander_disk_file::readdir): Handle a status
code STATUS_NOT_SUPPORTED.  Add matching comment.
2009-10-20 10:12:05 +00:00
Corinna Vinschen 8d648dc555 * syscalls.cc (internal_setlocale): Only convert $PATH if there is a
$PATH.
2009-10-19 19:47:15 +00:00
Corinna Vinschen b3f5fb3718 * spawn.cc (av::fixup): Treat non-readable, but executable files as
Cygwin executables.
2009-10-19 08:33:00 +00:00
Corinna Vinschen a6f3658d44 * uinfo.cc (uinfo_init): Deimpersonate, don't reimpersonate, if
not in a setuid condition.
2009-10-18 09:07:13 +00:00
Corinna Vinschen 175e39bb7f * cygpath.cc (get_special_folder): Fetch path as WCHAR and convert
using my_wcstombs.
	(get_user_folder): Remove.
	(do_sysfolders): Use get_special_folder instead of get_user_folder.
	Fetch system paths as WCHAR and convert using my_wcstombs.
2009-10-15 11:40:02 +00:00
Corinna Vinschen e710872955 * faq-setup.xml (faq.setup.disk-space): Fix URL pointing to
clean_setup.pl script.
2009-10-15 08:46:58 +00:00
Eric Blake 4cd31fc8f9 Consistently use va_end.
* external.cc (cygwin_internal): Use va_end.
* fork.cc (child_copy): Likewise.
* libc/bsdlib.cc (warn, warnx, err, errx): Likewise.
* pinfo.cc (commune_request): Likewise.
* strace.cc (strace::prntf, strace_printf): Likewise.
2009-10-14 04:17:05 +00:00
Corinna Vinschen bc3aedd061 * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. 2009-10-13 12:08:22 +00:00
Corinna Vinschen 0191627a26 * include/sys/cygwin.h: Add new cygwin_getinfo_type
CW_SET_EXTERNAL_TOKEN.
	Add new enum CW_TOKEN_IMPERSONATION, CW_TOKEN_RESTRICTED.
	* cygheap.h (cyguser): New flags ext_token_is_restricted,
	curr_token_is_restricted and setuid_to_restricted.
	* external.cc (cygwin_internal): Add CW_SET_EXTERNAL_TOKEN.
	* sec_auth.cc (set_imp_token): New function.
	(cygwin_set_impersonation_token): Call set_imp_token ().
	* security.h (set_imp_token): New prototype.
	* spawn.cc (spawn_guts): Use CreateProcessAsUserW if restricted token
	was enabled by setuid().  Do not create new window station in this case.
	* syscalls.cc (seteuid32): Add handling of restricted external tokens.
	Set HANDLE_FLAG_INHERIT for primary token.
	(setuid32): Set setuid_to_restricted flag.
	* uinfo.cc (uinfo_init): Do not reimpersonate if restricted token was
	enabled by setuid ().  Initialize user.*_restricted flags.
2009-10-13 10:23:31 +00:00
Eric Blake b8a35083c6 Improve clock_gettime and utimensat resolution.
* hires.h (hires_ms): Change initime_us to initime_ns, with 10x
more resolution.
(hires_ms::nsecs): New prototype.
(hires_ms::usecs, hires_ms::msecs, hires_ms::uptime): Adjust.
* times.cc (systime_ns): New helper function.
(hires_ms::prime): Use it for more resolution.
(hires_ms::usecs): Change to...
(hires_ms::nsecs): ...with more resolution.
(clock_gettime): Use more resolution.
(systime): Rewrite in terms of systime_ns.
(timespec_to_filetime): Rewrite math to reflect true operation.
* fhandler_disk_file.cc (utimens_fs): Use higher resolution.
2009-10-13 02:26:33 +00:00
Corinna Vinschen 2fc007681e * external.cc (cygwin_internal): Return 0 in CW_SET_DOS_FILE_WARNING
and CW_SETERRNO cases.
2009-10-12 19:26:08 +00:00
Corinna Vinschen 9e278ffd2c * kill.cc (main): Skip to PID loop on invalid option to handle
negative pids there.
2009-10-12 16:01:44 +00:00
Corinna Vinschen d358c9e9b0 * fhandler_disk_file.cc (fhandler_disk_file::link): Only append .lnk
if the original device had one, too.  Add comment.

	* fhandler_socket.cc (fhandler_socket::fstat): Always return a size of
	0 on sockets.
2009-10-12 11:57:29 +00:00
Corinna Vinschen 220f363d20 * pathnames.sgml (pathnames-specialchars): Add control chars to the
list.  Explain backslash exception.
2009-10-09 11:19:18 +00:00
Corinna Vinschen 9fa1c6420b * path.cc (tfx_chars): Convert all ASCII control characters except
ASCII NUL as well.  Change layout to make the conversions more clear.
	Add comment.
2009-10-09 11:17:17 +00:00
Corinna Vinschen 1441f6a3d1 * include/cygwin/config.h (DEFAULT_LOCALE): Define as "C.UTF-8". 2009-10-09 08:36:21 +00:00
Christopher Faylor 5391a40c89 * exceptions.cc (_cygtls::signal_exit): There's no need to set signal_arrived
if we're exiting.
2009-10-08 15:56:14 +00:00
Eric Blake 80636211bc * fhandler_disk_file.cc (utimens_fs): Plug fd leak on EINVAL. 2009-10-08 11:13:45 +00:00
Charles Wilson dc4e4aabba Support pseudo-reloc version 2 2009-10-07 15:47:38 +00:00
Corinna Vinschen dfbf36f8db * syscalls.cc (seteuid32): Call set_cygwin_privileges on primary token
as well.
2009-10-07 08:20:49 +00:00
Corinna Vinschen b4311a9067 * fhandler.h (fhandler_pty_master::tcgetpgrp): Declare.
* fhandler_termios.cc (fhandler_termios::tcgetpgrp): Only return
	valid pgid if tty is controlling tty.  Set errno to ENOTTY and
	return -1 otherwise.
	(fhandler_pty_master::tcgetpgrp): New function.  Return 0 for
	master side of pty if it's not the controlling tty of the process.
2009-10-07 07:52:30 +00:00
Charles Wilson c8ee587a8e Add cygwin wrapper for ExitProcess and TerminateProcess. 2009-10-06 21:51:17 +00:00
Christopher Faylor a12518a37c * exceptions.cc: Move global variable sigExeced...
* globals.cc: here.
* pinfo.cc (pinfo::maybe_set_exit_code_from_windows): Remove now unneeded
declaration.
2009-10-06 03:39:38 +00:00
Dave Korn 3772467948 * Makefile.in (CFLAGS): Add -mno-use-libstdc-wrappers. 2009-10-04 17:48:05 +00:00
Corinna Vinschen ef35acca22 * include/winbase.h (CreateRestrictedToken): Declare for >= Win 2000.
_WIN32_WINNT >= 0x0500.
	(DISABLE_MAX_PRIVILEGE, SANDBOX_INERT, LUA_TOKEN,
	WRITE_RESTRICTED): Define.
	(IsTokenRestricted): Declare for >= Win 2000.
2009-10-04 12:28:08 +00:00
Corinna Vinschen 960624f47e * syscalls.cc (internal_setlocale): Add comment. 2009-10-04 11:32:07 +00:00
Dave Korn 26f19ec1ad * faq-using.xml (faq.using.bloda): Add Lenovo IPS Core Service. 2009-10-03 13:33:18 +00:00
Corinna Vinschen 0ca6c6b802 * dcrt0.cc (dll_crt0_1): Drop calls to setlocale/_setlocale_r. Just
call initial_setlocale from here.
	* syscalls.cc (initial_setlocale): Set internal charset and revert
	application locale to "C".
	(setlocale): Don't set Cygwin's internal charset here.
2009-10-02 14:58:10 +00:00
Christopher Faylor a37e07482c * mkpasswd.c: Properly define __progname as __declspec(dllimport).
* mkgroup.c: Ditto.
2009-10-02 13:49:39 +00:00
Corinna Vinschen 45162575d2 * setup2.sgml (setup-locale-ov): Fix typo in C+charset example.
Rephrase how the locale environment variables are evaluated.
2009-10-02 12:35:52 +00:00
Christopher Faylor 284c5ea0a5 * dcrt0.cc (dll_crt0_1): Move cxx_malloc reset kluge from here.
(check_sanity_and_sync): to here.
* path.cc (has_dot_last_component): Rewrite to detect some corner cases that
were previously uncaught.
2009-10-02 06:04:57 +00:00
Corinna Vinschen ffca4d278e * new-features.sgml (ov-new1.7-file): Ctrl-X, not Ctrl-N.
* pathnames.sgml (pathnames-unusual): Ditto.
	* setup2.sgml (setup-locale-ov): Change description according to
	latest changes.
	(setup-locale-how): Rewrite.
	(setup-locale-console): Enable section again.  Change to reflect
	recent changes.
	(setup-locale-problems): Change to reflect recent changes.
2009-09-30 09:45:01 +00:00
Corinna Vinschen 4180b64df4 * fhandler_console.cc (beep): Move up to avoid forward declaration.
(fhandler_console::read): Just beep on characters invalid in current
	charset.  Add comment.
2009-09-30 09:23:45 +00:00
Eric Blake 1c0909882c * syscalls.cc (rename): Fix regression in rename("dir","d/"). 2009-09-30 02:11:05 +00:00
Keith Marshall e97ad66a84 Make MinGW printf() "%p" format compatible with MSVCRT scanf(). 2009-09-29 20:43:50 +00:00
Corinna Vinschen 4abcdf2717 * fhandler_socket.cc (fhandler_socket::recv_internal): Always call
WSARecv on SOCK_STREAM sockets.
2009-09-29 08:46:29 +00:00
Corinna Vinschen 587b75f7bd * fhandler.h (class dev_console): Constify charset parameter of
str_to_con.
	* fhandler_console.cc (dev_console::con_to_str): Simplify.  Always
	default to the current internal locale.
	(dev_console::get_console_cp): Always use codepage 437 for alternate
	charset.
	(dev_console::str_to_con): Constify charset parameter.
	(fhandler_console::write_normal): Always use codepage 437 for alternate
	charset.  Otherwise always default to the current internal locale.
	Replace ASCII SO with ASCII CAN.
	* strfuncs.cc: Tweka comments according to below changes.
	(sys_cp_wcstombs): Constify charset parameter.  Convert all wchar_t
	values in the Unicode private use area U+F0xx to the singlebyte
	counterpart.  Drop special handling creating ASCII SO sequence from
	U+DCxx value.  Rearrange for performance.  Replace ASCII SO with
	ASCII CAN.
	(sys_cp_mbstowcs): Constify charset parameter.  Replace ASCII SO with
	ASCII CAN.  Drop special case for U+DCxx ASCII SO sequences.  Always
	create a replacement from the Unicode private use area U+F0xx for
	invalid byte values in a multibyte sequence.  Do the same for wchar_t
	values from the U+F0xx range to make them roundtrip safe.
	* wchar.h (sys_cp_wcstombs): Constify charset parameter.
	(sys_cp_mbstowcs): Ditto.
2009-09-28 12:10:32 +00:00
Corinna Vinschen d856640e1c * cygheap.cc (cygheap_init): Default locale.charset to "UTF-8".
* dcrt0.cc (dll_crt0_1): Call setlocale (LC_CTYPE, "") here, just
	before resetting application locale to "C".
	* environ.cc (environ_init): Drop code setting locale here.
	* syscalls.cc (check_codepage): Break out check for required codepage
	from internal_setlocale.
	(internal_setlocale): Just convert CWD and $PATH from old charset to
	new charset and set internal charset.
	(setlocale): Change accordingly.  Don't require LC_ALL or LC_CTYPE to
	store old locale value.  Always call internal_setlocale if charset
	changed due to locale environment changes.
2009-09-28 10:43:49 +00:00
Eric Blake 7677a6b206 * new-features.sgml (ov-new1.7-file): Mention fexecve, execvpe. 2009-09-26 21:01:59 +00:00
Eric Blake 15e9ecd14a Add fexecve, execvpe.
* exec.cc (fexecve): New function.
* cygwin.din (execvpe, fexecve): Export new fexecve and existing
execvpe.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
* posix.sgml: Mention them.
2009-09-26 21:01:10 +00:00
Eric Blake 52dba6a5c4 Fix some POSIX-compliance bugs in link, rename, mkdir.
* syscalls.cc (link): Delete obsolete comment.  Reject directories
and missing source up front.
(rename): Use correct errno for trailing '.'.  Detect empty
strings.  Allow trailing slash to newpath iff oldpath is
directory.
* dir.cc (mkdir): Reject dangling symlink with trailing slash.
* fhandler_disk_file.cc (fhandler_disk_file::link): Reject
trailing slash.
* fhandler.cc (fhandler_base::link): Match Linux errno.
2009-09-26 15:51:53 +00:00
Eric Blake 76fe91b90b * new-features.sgml (ov-new1.7-file): Mention eaccess, euidaccess,
canonicalize_file_name, and document change in access semantics.
2009-09-25 23:56:18 +00:00
Eric Blake 2bf78f0928 Provide euidaccess, canonicalize_file_name; fix fchmodat.
* syscalls.cc (fchmodat): lchmod is not yet implemented.
(euidaccess): New function.
* path.cc (realpath): Update comment.
(canonicalize_file_name): New function.
* include/cygwin/stdlib.h (canonicalize_file_name): Declare it.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
* cygwin.din: Export canonicalize_file_name, eaccess, euidaccess.
* posix.sgml: Mention them.
2009-09-25 23:55:00 +00:00
Corinna Vinschen 5ceb291210 * setup2.sgml (setup-locale-problems): Fix charset names of codepages
936 and 949.
2009-09-25 16:42:36 +00:00
Eric Blake 3dbe243afa Fix faccessat(,0) and access() semantics.
* fhandler.h (fhandler_base::fhaccess): Add parameter.
* security.h (check_file_access, check_registry_access): Likewise.
* security.cc (check_file_access, check_registry_access)
(check_access): Implement new parameter.
* fhandler.cc (fhandler_base::fhaccess): Likewise.
(device_access_denied): Update caller.
* syscalls.cc (access, faccessat): Update callers.
* spawn.cc (find_exec, fixup): Likewise.
2009-09-25 13:44:45 +00:00
Eric Blake 5386cd8ecc * setup2.sgml (setup-locale-problems): Document how to install
non-default charsets.
2009-09-25 12:27:46 +00:00
Corinna Vinschen 599d462dfa * posix_ipc.cc (mq_open): Avoid closing the same descriptor twice in
case of errors.
	(sem_open): Ditto.
2009-09-24 09:25:35 +00:00
Corinna Vinschen 1c23aff7a3 * kernel32.cc (CreateMutexW): Use correct access mask.
(CreateSemaphoreW): Ditto.
2009-09-24 09:09:45 +00:00
Corinna Vinschen 8e3607fcee * strfuncs.cc (__set_charset_from_codepage): Fetch current ANSI
codepage if cp is 0.
2009-09-23 17:13:55 +00:00
Corinna Vinschen 565d6ede3f Fix typo. 2009-09-23 12:01:42 +00:00
Corinna Vinschen e664429d77 * strfuncs.cc (sys_cp_wcstombs): Convert lone surrogate pair
second halves to unambiguous ASCII SO sequence.  When converting
	chars invalid in current codepage to ASCII SO sequence, make
	sure to check for surrogate pair second half only if ct least
	one wide characters is left.  Decrement nwc if valid second half has
	been converted.
	(sys_cp_mbstowcs): Improve ASCII SO handling.  Never break from loop
	if invalid character has been found.  Recognize ASCII SO sequence
	representing originally invalid mulitbyte char converted into a
	lone surrogate pair second half.  Convert accordingly.
2009-09-23 11:31:00 +00:00
Corinna Vinschen 5e8d7527af * autoload.cc (WSARecv): Define.
* fhandler_socket.cc (fhandler_socket::recv_internal): Call WSARecv
	instead of WSARecvFrom if no name parameter is given.  Explain why.
2009-09-22 14:27:57 +00:00
Eric Blake 74a67d01a5 Make *at functions more like Linux.
* syscalls.cc (faccessat): Fix typo, reject bad flags.
(fchmodat, fchownat, fstatat, utimensat, linkat, unlinkat): Reject
bad flags.
2009-09-22 12:13:53 +00:00
Corinna Vinschen abe6b5a3e2 * strfuncs.cc (sys_cp_mbstowcs): Reset shift state after handling
invalid multibyte sequence.
2009-09-22 09:44:32 +00:00
Corinna Vinschen 4401b147bb * path.cc (symlink_worker): Rework error handling to generate Linux
compatible errno in case of trailing slash in newpath.
2009-09-22 09:24:30 +00:00
Eric Blake 29bca9bb0c Match dup2 and fcntl error values to POSIX.
* dtable.h (OPEN_MAX_MAX): New macro.
* resource.cc (getrlimit) [RLIMIT_NOFILE]: Use it.
* dtable.cc (dtable::extend): Likewise.
* fcntl.cc (fcntl64): Obey POSIX rule with too-large F_DUPFD.
* syscalls.cc (dup2): Likewise.
2009-09-22 04:09:03 +00:00
Eric Blake a7b24e14d7 * ChangeLog-2002: Fix typo.
* ChangeLog-2008: Likewise.
2009-09-22 02:49:15 +00:00
Corinna Vinschen ee42ccd3a2 * cygheap.h (cwdstuff::get_posix): Convert to const inline method just
returning pointer to posix path.
	(cwdstuff::reset_posix): Convert to non-inline method taking a wchar_t
	pointer.
	* path.cc (cwdstuff::set): Revert change from 2009-05-13.  Set posix
	to valid incoming path again.
	(cwdstuff::reset_posix): New implementation setting posix path from
	incoming wchar_t path.  Explain usage.
	(cwdstuff::get_posix): Drop implementation.
	(cwdstuff::get): Drop special case to handle empty posix path.
	* syscalls.cc (internal_setlocale): Store old posix cwd as wide char
	path.  Restore posix cwd using new charset.  Explain why.
2009-09-21 19:29:16 +00:00
Corinna Vinschen 8fd422fe4e * new-features.sgml (ov-new1.7-file): Add new hardlink behaviour on
filesystems not supporting hardlinks.
	* overview2.sgml (ov-hi-files): Change descripton accordingly.
2009-09-21 11:01:19 +00:00
Corinna Vinschen 6cabe044dd * fhandler_disk_file.cc (fhandler_disk_file::link): Drop faking hardlink
creation on filesystems not supporting hardlinks.
2009-09-21 10:56:50 +00:00
Christopher Faylor 92c4330f5b * dcrt0.cc (dll_crt0_1): Add another hack to REALLY make sure that cxx_malloc
is always set to the cygwin version.
2009-09-21 02:32:06 +00:00
Christopher Faylor adfbdcdb07 * external.cc (cygwin_internal): Add hack to always reset cxx_malloc to proper
value.
* lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Relocate wayward comment.
2009-09-21 02:19:31 +00:00
Christopher Faylor 50a8741474 * exceptions.cc (sigpacket::process): Explicitly set thread-specific handler
function to zero to avoid transferring to incorrect location.
(_cygtls::call_signal_handler): Don't transfer to handler if there is no
handler to transfer to.
2009-09-19 15:34:19 +00:00
Christopher Faylor 7b9f3ce02c * exceptions.cc (sigpacket::process): Give sigwait() processing precedence even
when a handler is present.
* syscalls.cc (getpagesize): Change return to 'int'.
2009-09-18 21:27:02 +00:00
Christopher Faylor a7f0112577 * ntea.c (write_ea): Don't abort if not-samba. 2009-09-16 16:23:51 +00:00
Keith Marshall 532032a874 Avoid multiple link time definitions of _printf() for C++ 2009-09-01 20:41:55 +00:00
Christopher Faylor d984eb88db * select.cc (peek_console): Always check window size when there is ANY keyboard
activity.
2009-09-01 14:25:10 +00:00
Chris Sutcliffe 89b883512d 2009-08-30 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
* include/wtsapi32.h (WTSQuerySessionInformationA,
        WTSQuerySessionInformationW, WTSQuerySessionInformation, WTSFreeMemory):
        Moved to (_WIN32_WINNT >= 0x0500) guard.
        (thanks to Pierre Ossman)
2009-08-30 23:20:52 +00:00
Corinna Vinschen 2671595b4a * path.h (INTERIX_SYMLINK_COOKIE): Define.
* path.cc (symlink_info::check_sysfile): Read Interix symlinks as well.
2009-08-26 20:32:35 +00:00
Corinna Vinschen 50bd7b0bb6 * fhandler.cc (fhandler_base::open): Only set R/O attribute if ACLs
are not used.
2009-08-26 19:37:34 +00:00
Corinna Vinschen 1f14755fd2 * new-features.sgml (ov-new1.7-posix): Add "KOI8-R" and "KOI8-U"
charsets.
2009-08-26 08:15:49 +00:00
Corinna Vinschen c177980e75 * mount.cc (fs_info::update): Add comment.
* path.cc (symlink_info::check_reparse_point): Return -1 for volume
	mount points.  Explain why.
	(symlink_info::check): Call fs.update again for volume mount points.
	Explain why.
2009-08-25 11:27:03 +00:00
Corinna Vinschen 11788f8ce0 * globals.cc (ro_u_volume): New R/O unicode string.
* path.cc (symlink_info::check_reparse_point): Fix check for volume
	mount points to work on Vista and later as well.
2009-08-24 11:14:30 +00:00
Christopher Faylor f3b6fef631 * cygwin/strfuncs.cc (__set_charset_from_codepage): Add codepages 20866
(KOI8-R) and 21866 (KOI8-U).

* doc/setup2.sgml (setup-locale-charsetlist): Add KOI8-R and KOI8-U to list of
supported charsets.
2009-08-22 15:01:03 +00:00
Corinna Vinschen d90dc552ac * setup2.sgml (setup-locale-charsetlist): Add description of
case-insensitivity of charsets.  Fix a typo.  Add "UTF8" to the list.
2009-08-22 08:44:04 +00:00
Christopher Faylor 6282fe16dd * dll_init.h (has_dtors): New flag.
(run_dtors): New wrapper function which avoids calling dtors more than once.
* dll_init.cc (dll_global_dtors): Use dll.run_dtors wrapper.
(dll_list::detach): Ditto.
(dll_list::alloc): Set has_dtors flag.
2009-08-21 21:32:06 +00:00
Christopher Faylor e41f43a1a6 * fcntl.cc (fcntl64): Detect negative fd as error. 2009-08-21 21:19:45 +00:00
Corinna Vinschen a2c5f4b4e4 * mmap.cc (mmap64): Allocate fh_disk_file on cygheap. Delete
explicitely before returning.
2009-08-21 08:47:59 +00:00
Corinna Vinschen 1c1b04b84c * dtable.cc (build_fh_dev): Take additional bool parameter indicating
whether set_name should be called or not.
	(dtable::dup_worker): Call build_fh_pc with new second parameter set
	to false.  Explain why.  If fhandler's dup failed, delete rather than
	cfree newfh and set newfh to NULL to indicate failure correctly.
	* dtable.h (build_fh_pc): Change declaration according to above change.
	Default set_name parameter to true.
	* mmap.cc (mmap_record::free_fh): Delete rather than cfree fh.
2009-08-20 08:34:21 +00:00
Christopher Faylor 421ba492fa * dtable.cc (dtable::fixup_after_exec): Close any popen'ed file handles here.
* fhandler.h (fhandler_*::ispipe): New function.
(fhandler_base::get_popen_pid): Define virtual function.
(fhandler_*::isdevice): Make const.
(fhandler_*::isfifo): Ditto.
2009-08-18 15:21:47 +00:00
Corinna Vinschen 4db8460fdb * Makefile.in (CXXFLAGS): Allow override. 2009-08-18 08:37:23 +00:00
Christopher Faylor 4315703af7 * syscalls.cc (popen): Reorganize slightly for clarity. Fix a comment. 2009-08-18 01:51:35 +00:00
Christopher Faylor d5c44ae231 * syscalls.cc (popen): Rewrite to accommodate situations where stdin, stdout,
or stderr are closed.
2009-08-18 01:40:46 +00:00
Christopher Faylor 28c054b720 * pipe.cc (fhandler_pipe::create_selectable): Add -pipe to default pipe names.
* lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Use bool/true/false for
what is actually a boolean variable.
2009-08-17 12:45:51 +00:00
Chris Sutcliffe 22fa213129 2009-08-14 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
* include/_mingw.h: Increment version to 3.16.
2009-08-15 02:50:19 +00:00
Corinna Vinschen 719ffe8792 * fhandler_disk_file.cc (fhandler_disk_file::readdir): Fix length
check for ".." dir.
2009-08-14 18:27:18 +00:00
Corinna Vinschen e684ace44e * fhandler_disk_file.cc (fhandler_disk_file::readdir): Change comment
to be fair.
2009-08-14 14:10:31 +00:00
Corinna Vinschen e575678945 * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Remove
ill-advised attempt to optimize "." and ".." handling by checking for
	specific position in directory listing.  Explain why.
	(fhandler_disk_file.cc (fhandler_disk_file::readdir): Ditto.
	Special-case opening file on NFS to fetch inode number and add longish
	comment to explain why.
2009-08-14 13:39:07 +00:00
Corinna Vinschen c1999c4b0c * (fhandler_socket::getsockname): Fix length returned for unbound
AF_LOCAL sockets.
	(fhandler_socket::getpeername): Ditto.
	* net.cc (socketpair): Don't set sun_path and peer_sun_path to
	make sure getsockname and getpeername return the correct values
	for AF_LOCAL sockets.
2009-08-14 06:58:44 +00:00
Corinna Vinschen 95a1cc7024 * fhandler_socket.cc (fhandler_socket::accept): Use sizeof rather
then constant size.  Truncate returned data, but return full address
	length as per POSIX.
	(fhandler_socket::getsockname): Truncate returned data, but return full
	address length as per POSIX.
	(fhandler_socket::getpeername): Ditto.
2009-08-13 15:44:29 +00:00
Corinna Vinschen d3d4aa96aa * fhandler.h (class fhandler_socket): Add peer_sun_path member.
(fhandler_socket::set_peer_sun_path): New method.
	(fhandler_socket::get_peer_sun_path): New method.
	* fhandler_socket.cc (fhandler_socket::fhandler_socket): Initialize
	peer_sun_path to NULL.
	(fhandler_socket::~fhandler_socket): Free peer_sun_path if necessary.
	(fhandler_socket::dup): Duplicate peer_sun_path.
	(fhandler_socket::accept): Ditto.  Return fake unbound peer content
	and len in case of AF_LOCAL sockets.
	(fhandler_socket::getsockname): Always use local sockaddr_storage to
	store socket address and copy over to incoming address.  Handle every
	namelen correctly per POSIX.
	(fhandler_socket::getpeername): Ditto.  Add code path to return
	correct value for AF_LOCAL sockets.
	(fhandler_socket::set_peer_sun_path): New method.
	* net.cc (socketpair): Set peer_sun_path to empty string, just like
	sun_path.
2009-08-13 10:26:42 +00:00
Corinna Vinschen ce5eb135a2 * cxx.cc (default_cygwin_cxx_malloc): Enhance commenting.
* dll_init.cc (dll_dllcrt0_1): Likewise.
	* dlfcn.cc (dlopen): Prevent dlopen()'d DLL from installing any
	cxx malloc overrides.
	* include/cygwin/cygwin_dll.h (__dynamically_loaded): New variable.
	* lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Check it and only
	install cxx malloc overrides when statically loaded.  Extend comments.
2009-08-13 07:35:50 +00:00
Dave Korn ee47ad3213 * faq-using.xml (faq.using.bloda): Typofix MacAfee -> McAfee. 2009-08-12 22:03:18 +00:00
Corinna Vinschen a73a3f438b * fhandler_socket.cc (fhandler_socket::accept): Always use local
sockaddr_storage to store peer address and copy over to incoming
	peer address if available.  Truncate data as necessary according
	to POSIX.
2009-08-12 14:48:16 +00:00
Corinna Vinschen 91dd009e81 * mkgroup.c (enum_local_groups): Avoid error message if given group
name isn't found and return 0 to allow searching to proceed.  Always
	return 0 or 1, not -1.
	(enum_groups): Avoid error message if given group name isn't found.
	* mkpasswd.c (enum_users): Ditto.
2009-08-11 08:59:50 +00:00
Corinna Vinschen b1ce1770ea * include/limits.h (NGROUPS_MAX): Set to a more sane value.
* include/sys/param.h (NGROUPS): Ditto.
2009-08-11 07:28:22 +00:00
Corinna Vinschen 9043b49e63 * spawn.cc (av::fixup): Check shell scripts for executability only on
filesystems/mounts supporting real permissions.
2009-08-10 18:36:28 +00:00
Corinna Vinschen 019fc8d880 * dtable.cc (DEV_SOCKET): New static WCHAR string. Name of
the native NT socket device.
	(dtable::init_std_file_from_handle): Remove unused tmp_pathbuf
	variable.  Move check for sockets into FILE_TYPE_PIPE clause.
	Rely on handle_to_fn having recognized socket, or check if
	getsockopt works to accommodate NT4 shortcoming.
	(handle_to_fn): Use tmp_pathbuf for OBJECT_NAME_INFORMATION
	buffer and simplify code due to that.  Check name returned by
	NtQueryObject for socket device.
2009-08-10 15:38:37 +00:00
Christopher Faylor 78d959ce6f * fhandler_console.cc (create_invisible_console_workaround): Fix size of cmd in
the way originally intended.
2009-08-10 15:25:58 +00:00
Corinna Vinschen 264ae244af * fhandler_console.cc (create_invisible_console_workaround): Fix
size of cmd to take spaces into account.
2009-08-10 08:54:51 +00:00
Dave Korn 4f2e34d821 * mingw: Add fallbacks to search for MinGW components in standard
install locations if not found in compiler's $prefix.
2009-08-10 01:55:14 +00:00
Corinna Vinschen 29222c4d6a * mount.cc (do_mount): Don't exit, just return. 2009-08-09 14:13:53 +00:00
Corinna Vinschen ca695f2193 * include/winnls.h (IS_HIGH_SURROGATE, IS_LOW_SURROGATE,
IS_SURROGATE_PAIR): Define.
2009-08-09 12:25:47 +00:00
Corinna Vinschen 7be107ce24 * dtable.cc (dtable::init_std_file_from_handle): Fix comment to
document change in the Windows 7 workaround.
	* wincap.cc (wincapc::init): Don't set has_console_handle_problem
	to false on 32 bit systems.
2009-08-08 20:24:54 +00:00
Chris Sutcliffe 75bf04114e 2009-08-08 Danny Smith <dannysmith@users.sourceforge.net>
* include/math.h (__fpclassifyl, __isnan, __isnanf, isnanl, __signbit,
        __signbitf, __signbitl, sinhf, tanhf, expf, frexpf, ldexpf, hypotf, powf,
        __fp_unordered_compare): Add prototypes.
        * include/stdio.h (vsnwprintf): Add prototype.
        * include/wchar.h (vsnwprintf): Add prototype.
        * include/unistd.h (ftruncate): Move prototype out of __NO_INLINE__ guard.
2009-08-08 13:26:11 +00:00
Corinna Vinschen 19753e1dbf * net.cc (cygwin_getnameinfo): Force setting NI_NUMERICSERV only
on Windows 2003 and earlier, only if the port number doesn't
	resolve to a well-known service.  Change comment accordingly.
2009-08-06 14:55:49 +00:00
Christopher Faylor a99345591f * cygheap.h (cygheap_debug::endh): Delete.
* debug.cc (lock_debug::acquired): Delete.
(lock_debug::lock_debug): Simplify.
(lock_debug::unlock): Ditto.
(find_handle): Don't set endh here.
(add_handle): Add new handle to beginning of the list rather than trying to
maintain an end list pointer.
(delete_handle): Minor optimization.
(mark_closed): Make logic clearer.
(verify_handle): Lock handle list before scanning.
(setclexec): Ditto.
(modify_handle): Ditto.
(newh): Don't lock handle list here.  Assume caller did this.
(mark_closed): Ditto.
(close_handle): Remove unneeded #if.
* dtable.cc (dtable::dup2): Tweak debug output.
2009-08-05 04:44:27 +00:00
Christopher Faylor 7f01964f06 * path.cc (patch_conv::check): Zero path before setting it. 2009-08-05 03:18:48 +00:00
Christopher Faylor 631681619e * fhandler_socket.cc (fhandler_socket::send_internal): Just use wmem size if
the length exceeds it.
* net.cc (fdsock): Use 65535 as window size, just like the comment says or we
run into problems with DuplicateHandle.
* path.cc (patch_conv::check): Use set_path to set invalid filename.
* path.h (path_conv::path_conv): Ditto.
2009-08-04 22:35:35 +00:00
Christopher Faylor 3b689b97bd * fhandler.h (pdrive_buf): Defensively allocate one extra byte. 2009-08-04 04:31:08 +00:00
Christopher Faylor 824d851859 * fhandler.h (fhandler_cygdrive:DRVSZ): New enum.
(pdrive_buf): New place to hold information about cygdrive.
* fhandler_disk_file.cc (fhandler_cygdrive::set_drives): Store drive info in
pdrive_buf since get_win32_name() could now be too small to hold everything.
(fhandler_cygdrive::rewinddir): Reset pdrive to pdrive_buf.
(fhandler_cygdrive::closedir): Ditto.
* pipe.cc (fhandler_pipe::init): Be more defensive when referencing
get_win32_name().  Rework logic which made a copy of the POSIX path and then
never used it.
2009-08-04 04:20:36 +00:00
Christopher Faylor ff7b364c12 * sigproc.cc (stopped_or_terminated): Don't return a match when stopsig ==
SIGCONT and not WCONTINUED.
* termios.cc (tcsetpgrp): Improve debugging output.
2009-08-02 21:38:40 +00:00
Christopher Faylor fafbf75509 * cygheap_malloc.h: New file.
* cygheap.h: Remove stuff now included in cygheap_malloc.h and include that
file.  Make cygheap_init a standard c++ function.  Remove unneeded child_info
declaration.
* path.h: Include cygheap_malloc.h.  Remove extra cstrdup declaration.
(path_conv): Reorganize to group variables together.
(path_conv::path): Make const char *.
(path_conv::known_suffix): Ditto.
(path_conv::normalized_path): Ditto.
(path_conv::path_conv): Reorganize initializers to reflect new element
ordering.
(path_conv::get_win32): Change return value to const char *.
(path_conv::set_path): Move back here from spawn.cc.
(parh_conv::modifiable_path): New function.
* path.cc (path_conv::add_ext_from_sym): Accommodate const'ness of
known_suffixes.
(path_conv::set_normalized_path): Ditto for normalized_path.
(path_conv::check): Use modifiable_path whereever we need to modify the path
element.  Use set_path to set the path.
(path_conv::~path_conv): Accommodate new const'ness.
* spawn.cc (perhaps_suffix): Declare ext as const since that's what is being
returned.
(path_conv::set_path): Move back to path.h.
* winf.f (linebuf): Perform minor cleanup.
(linebuf::fromargv): Change second parameter to const.
* winf.cc (linebuf::fromargv): Ditto.
2009-08-01 19:52:46 +00:00
Christopher Faylor 8cc84a8ce3 * path.h (path_conv::set_path): Change return value.
* spawn.cc (path_conv::set_path): Return newly set value.
(find_exec): Set retval to newly set value when calling set_path.
2009-08-01 17:55:58 +00:00
Christopher Faylor a3a060b596 * spawn.cc (find_exec): Fix one more path where retval was not set. 2009-08-01 03:36:44 +00:00
Christopher Faylor 5f297dc330 * spawn.cc (find_exec): Stop relying on the ability to set retval to a fixed
path_conv buffer and set it on the fly instead.
2009-08-01 03:27:51 +00:00
Corinna Vinschen eeb6806f87 * path.h (cstrdup): Fix declaration. 2009-07-30 20:19:54 +00:00
Corinna Vinschen 900f20710f * globals.cc (enum exit_states::ES_GLOBAL_DTORS): Delete.
* dcrt0.cc (__main): Schedule dll_global_dtors to run
	atexit before global dtors.
	(do_exit): Delete test for ES_GLOBAL_DTORS and call to
	dll_global_dtors.
2009-07-30 15:48:51 +00:00
Corinna Vinschen 0986989f6a * path.h (class path_conv): Convert path from char array to char *.
Initialize to NULL in constructors.  Drop normalized_path_size member.
	(path_conv::size): Remove.
	(path_conv::operator =): Always copy with sizeof path_conv.  Always
	duplicate path on cygheap.
	(path_conv::set_path): Move implementation to spawn.cc.
	* path.cc (path_conv::set_normalized_path): Always allocate
	normalized_path on cygheap.
	(path_conv::check): Don't work on path, rather allocate THIS_path in
	TLS and use it throughout.  When finished, allocate path on cygheap
	and copy over.  Defer tacking on extension after having copied path.
	* spawn.cc (path_conv::set_path): Implement here.
2009-07-30 08:56:57 +00:00
Chris Sutcliffe 7d3c3d30e7 Fix formatting issue with last entry 2009-07-30 01:55:44 +00:00
Keith Marshall 0c27cfc9b0 Correct disposition of wchar_t output in printf(). 2009-07-29 07:22:51 +00:00
Corinna Vinschen 8d641a5b46 * mount.h (enum fs_info_type): New type.
(IMPLEMENT_FS_FLAG): New define.
	(class fs_info): Convert filesystem type status flags into an enum
	fs_info_type.  Add cifs FS.  Revert change to has_buggy_open and
	has_buggy_fileid_dirinfo.  Make them normal; status flags again.
	Implement is_FS functions using IMPLEMENT_FS_FLAG.
	* mount.cc (fs_info::update): Define MINIMAL_WIN_NTFS_FLAGS and
	FS_IS_WINDOWS_NTFS.  Add comment.  Only test remote filesystems
	for "NTFS" once.  Add is_cifs check using FS_IS_WINDOWS_NTFS.
	Set has_buggy_open flag for SUNWNFS.  Set has_buggy_fileid_dirinfo
	flag for UNIXFS and all cifs type filesystems.  Only check for
	caseinsensitivity once.
	(fillout_mntent): Create locale fs_names array.  Use for setting
	_my_tls.locals.mnt_type.
2009-07-28 10:39:55 +00:00
Chris Sutcliffe d826cbf322 2009-07-27 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
* mingwex/stdio/pformat.c: Implement better fix for type punned warning.
2009-07-28 01:28:22 +00:00
Keith Marshall b70cd7bca1 Convert to monolithic configuration procedure. 2009-07-27 20:27:09 +00:00
Corinna Vinschen 5e2b7ea949 * include/winnt.h (FILE_SUPPORTS_HARD_LINKS,
FILE_SUPPORTS_EXTENDED_ATTRIBUTES, FILE_SUPPORTS_OPEN_BY_FILE_ID,
	FILE_SUPPORTS_USN_JOURNALS): Define.  Add comment.
	* include/ddk/ntifs.h: Ditto.
	(FILE_SEQUENTIAL_WRITE_ONCE, FILE_SUPPORTS_TRANSACTIONS): Define.
2009-07-27 11:40:26 +00:00
Corinna Vinschen 8171ddb73f * posix.sgml (std-notes): Remove obsolete reference to CYGWIN=server. 2009-07-27 08:05:47 +00:00
Corinna Vinschen 4d670aabf6 * posix.sgml (std-notes): Add flock restriction. 2009-07-26 09:34:35 +00:00
Corinna Vinschen 6359951b47 * fhandler_console.cc (set_console_title): Set buffer size to
TITLESIZE + 1.  Call sys_mbstowcs with correct destination length.
2009-07-25 08:27:10 +00:00
Christopher Faylor 43c23d4b82 * sigproc.h (wait_for_sigthread): Eliminate parameter.
* sigproc.cc (wait_for_sigthread): Ditto.  Don't synchronize with wait_sig
after receiving an event that it is ready to go.
(init_sig_pipe): New function.
(wait_sig): Call init_sig_pipe to create pipes for communicating signals to
this process.  Don't send sigCONT signal when initializing.
* fork.cc (frok::child): Accommodate wait_for_sigpipe parameter change.
* fhandler.h (fhandler_*::write): Make ssize_t/__stdcall.
(fhandler_*::write_overlapped): Ditto.
(fhandler_*::raw_write): Ditto.
(fhandler_*::readv): Ditto.
(fhandler_*::writev): Ditto.
(fhandler_*::raw_read): Make __stdcall.
* fhandler: Accommodate changes to read/write functions throughout.
* fhandler_clipboard.cc: Ditto.
* fhandler_console.cc: Ditto.
* fhandler_dsp.cc: Ditto.
* fhandler_fifo.cc: Ditto.
* fhandler_mailslot.cc: Ditto.
* fhandler_mem.cc: Ditto.
* fhandler_mem.cc: Ditto.
* fhandler_random.cc: Ditto.
* fhandler_tape.cc: Ditto.
* fhandler_tty.cc: Ditto.
* fhandler_virtual.cc: Ditto.
* fhandler_windows.cc: Ditto.
* fhandler_zero.cc: Ditto.
* syscalls.cc (readv): Use ssize_t as temp variable.
* fhandler.cc (fhandler_base::read): Coerce returned len to signed or it will
never be treated as < 0.
(fhandler_base::wait_overlapped): Minimize calls to GetLastError.  Remove
duplicate debugging test.  Fix error return.
* fhandler.h (fhandler_fifo::fifo_name): Declare new function.
(fhandler_fifo::close): Ditto.
(fhandler_fifo::dup): Ditto.
(fhandler_fifo::close_on_exec): Ditto.
* fhandler.cc (fhandler_fifo::fifo_name): Define new function.
(FIFO_BUF_SIZE): New define.
(cnp): Ditto.
(fhandler_fifo::open): Rework.  Use cnp to open named pipe.  Always open write
side as a client.  Open dummy client when writing and can't connect.
(wait): Rework.  Implement fifo_wait_for_next_client.  Handle signals during
connect better.  Add new fifo_wait_for_server code which polls
(sigh) waiting for server.
(fhandler_fifo::raw_read): Handle transition states when one client closes and
another is available.
(fhandler_fifo::close): Define.
(fhandler_fifo::dup): Ditto.
(fhandler_fifo::close_on_exec): Ditto.
2009-07-24 20:54:33 +00:00
Corinna Vinschen f8cb4b4916 * syscalls.cc (internal_setlocale): Fix typo in GBK codepage. 2009-07-24 18:24:57 +00:00
Corinna Vinschen 92d816d492 * syscalls.cc (unlink_nt): Ignore sharing violation on NFS. Align
comments.
2009-07-24 14:13:44 +00:00
Chris Sutcliffe 6922bae9a1 2009-07-23 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
* msvcrt.def.in: disable time symbol for libmsvcr90.a and libmsvcr90d.a due
        to complaints that it causes issues.
2009-07-24 01:29:38 +00:00
Chris Sutcliffe 4d07e72514 2009-07-23 Jacky Lai <crazyjacky@users.sourceforge.net>
* mingwex/math/fminf.c: switch to using __isnanf() as opposed to _isnan().
2009-07-24 01:21:27 +00:00
Corinna Vinschen a6131454a5 * mount.h (fs_info::fsn): New member.
(fs_info::clear): Clear fsn.
	(fs_info::fsname): New read accessor for fsn.
	* mount.cc (fs_info::update): Fill in fsn member with lowercased
	filesystem name if filesystem is not well-known.  Fall back to
	"unknown" if filesystem name is missing.
	(fillout_mntent): Print filesystem name retrieved in fs_info::update
	rather than static string "unknown".
2009-07-23 11:46:06 +00:00
Corinna Vinschen 8b1e0815ab * cygcheck.cc (dump_sysinfo): Add missing "Server Foundation" to
products array.
2009-07-23 09:12:18 +00:00
Corinna Vinschen 07271a4b02 * faq-using.xml (faq.using.ipv6): Try to clarify OS specific support.
* faq-what.xml (faq.what.supported): Add Windows 7 and 2008 R2.
	* new-features.sgml: Add "and later" to rcmd news.
2009-07-23 08:49:06 +00:00
Corinna Vinschen 4a77fa092c * mount.cc (fs_info::update): Revert to open filesystem with access set
to READ_CONTROL.  If that fails, try additionally with FILE_READ_DATA.
2009-07-23 07:51:55 +00:00
Eric Blake 3f6f9155c9 * exceptions.cc (handle_exceptions): Set si_addr according to
POSIX for SIGSEGV.
2009-07-23 02:47:17 +00:00
Corinna Vinschen d974d420d4 * mount.cc (fs_info::update): Open filesystem with access set to 0.
Explain why.
2009-07-22 18:49:48 +00:00
Corinna Vinschen c9b8019225 * mount.cc: Revert accidental checkin. 2009-07-22 18:27:47 +00:00
Corinna Vinschen c45871c9c5 * path.cc (symlink_info::check): Handle STATUS_NOT_SUPPORTED from
NtCreateFile just like STATUS_EAS_NOT_SUPPORTED.
2009-07-22 18:21:09 +00:00
Corinna Vinschen 3955529c8b * mount.cc (do_mount): Replace --no-executable flag with notexec
mount option in hint for remote filesystems.
	* path.cc (getmntent): Fix typo (noexec -> notexec).
2009-07-22 16:24:17 +00:00
Corinna Vinschen 6c188691db * mount.cc (fillout_mntent): Fix typo (noexec -> notexec). 2009-07-22 16:21:33 +00:00
Corinna Vinschen ffea27fc8d * path.cc (symlink_info::check): Fix typo in comment. 2009-07-22 15:55:47 +00:00
Corinna Vinschen 4a77aea071 * fhandler.h (enum del_lock_called_from): New enumeration.
(fhandler_base::del_my_locks): Declare taking a del_lock_called_from
	as argument.
	* fhandler.cc (fhandler_base::close): Call del_my_locks with "on_close".
	(fhandler_base::fixup_after_fork): Call del_my_locks with "after_fork".
	(fhandler_base::fixup_after_exec): Call del_my_locks with "after_exec".
	* flock.cc (fhandler_base::del_my_locks): Take del_lock_called_from
	as argument.  Call node->del_my_locks with NULL handle in after_exec
	case.  Explain why.
2009-07-22 15:46:36 +00:00
Corinna Vinschen 1e497ebd33 * Makefile.in (path-mount.o): Add a rule to build stripped down version
of path.cc for usage in mount.
	(mount.exe): Add dependency to path-mount.o.
	* mount.cc (force): Convert to bool value.  Accommodate throughout.
	(from_fstab): New function.
	(do_mount_from_fstab): New function.
	(longopts): Add --all option.
	(opts): Add -a option.
	(usage): Document -a/--all option.
	(main): Handle -a option as well as single parameter.
	* path.cc: Add FSTAB_ONLY conditional to allow building path-mount.o.
	(mount_table): Remove static storage class.
	(max_mount_entry): Ditto.
	(root_here): Unused.  Remove.
	(from_fstab_line): Remove static.
	* path.h (struct mnt_t): Define here rather than in path.cc.
	(from_fstab_line): Declare.
	(mount_table): Declare.
	(max_mount_entry): Declare.
	* utils.sgml (mount): Document -a/--all option and mounting of single
	path from fstab files.
2009-07-22 10:20:26 +00:00
Corinna Vinschen a7b11fec84 * dtable.cc (dup2): Correct return value for no-op. 2009-07-21 13:29:00 +00:00