Commit Graph

4377 Commits

Author SHA1 Message Date
Corinna Vinschen ff488124ff * syscalls.cc (sync): Use MAX_PATH rather than CYG_MAX_PATH. 2008-03-11 11:12:09 +00:00
Corinna Vinschen 949c0ec28c * fhandler.h (class fhandler_console): Add write_buf as pointer to
temporary buffer space.
	* fhandler_console.cc (CONVERT_LIMIT): Define as NT_MAX_PATH.  Add
	comment.
	(fhandler_console::write_normal): Use write_buf throughout.
	(fhandler_console::write): Use tmp_pathbuf to allocate write_buf.
2008-03-10 17:23:50 +00:00
Corinna Vinschen f37e220e86 * fhandler_console.cc (fhandler_console::write_normal): Don't print
chars marked as ERR chars.
2008-03-10 16:48:56 +00:00
Corinna Vinschen 3e148838af * fhandler.h (dev_console::con_to_str): Declare returning DWORD.
* fhandler_console.cc (dev_console::con_to_str): Return number of
	multibyte char bytes.
	(fhandler_console::read): Set nread to number of multibyte char bytes
	returned from con_to_str.
	(fhandler_console::write_normal): Reorder trunc buffer preocessing.
	Return after writing valid multibyte sequence out of trunc buffer.
	Change comments slightly.
2008-03-10 16:22:38 +00:00
Corinna Vinschen ca6fd6300a * fhandler_disk_file.cc (DIR_BUF_SIZE): Define required space for file
name in terms of sizeof(WCHAR).
	(fhandler_disk_file::readdir_helper): Convert *all* of fname.
	* path.cc (fillout_mntent): Use tmp_pathbuf for path buffer.
	(symlink_worker): Ditto.
	(SCAN_JUSTCHECKTHIS): New state for suffix_scan to define
	that only the actual name gets cheked and a suffix is never attached.
	(suffix_scan::has): If filename + suffix would be > NAME_MAX, start
	in SCAN_JUSTCHECKTHIS state.
	(suffix_scan::next): Add case for SCAN_JUSTCHECKTHIS.
	(symlink_info::check): Use tmp_pathbuf for path buffer.  Goto
	file_not_symlink in case of invalid file name.
	(realpath): Use tmp_pathbuf for path buffer.
2008-03-08 17:28:40 +00:00
Brian Dessent 23c6ed0394 * dtable.cc (handle_to_fn): Null-terminate posix_fn in the case
of justslash = true.
2008-03-08 03:28:34 +00:00
Brian Dessent 244191b6a9 * fhandler.cc (fhandler_base::open): Use %S for PUNICODE_STRING.
* syscalls.cc (setmode): Ditto.
2008-03-08 01:33:22 +00:00
Corinna Vinschen 360b05b451 * fhandler_socket.cc (fhandler_socket::sendto): Never send more than
64K.  Add comment to explain why.
	(fhandler_socket::sendmsg): Ditto.
2008-03-07 14:47:48 +00:00
Corinna Vinschen 752b16ce35 * Makefile.in (DLL_OFILES): Add tls_pbuf.o.
* autoload.cc (CreateDesktopW): Replace CreateDesktopA.
	(CreateWindowStationW): Replace CreateWindowStationA.
	(GetUserObjectInformationW): Replace GetUserObjectInformationA.
	* cygheap.h (cwdstuff::get): Assume default buffer size NT_MAX_PATH.
	* cygtls.cc (_cygtls::remove): Free temporary TLS path buffers.
	* cygtls.h (TP_NUM_C_BUFS): Define.
	(TP_NUM_W_BUFS): Define.
	(class tls_pathbuf): New class to store pointers to thread local
	temporary path buffers.
	(_local_storage::pathbufs): New member.
	* environ.cc (win_env::add_cache): Use temporary TLS path buffer instead
	of stack based buffer.
	(posify): Get temporary outenv buffer from calling function.
	(environ_init): Create temporary TLS path buffer for posify.
	(build_env): Create Windows environment block as WCHAR buffer.
	* environ.h (build_env): Change declaration accordingly.
	* external.cc (sync_winenv): Accommodate build_env change.
	* fhandler_console.cc (fhandler_console::need_invisible): Use
	GetUserObjectInformationW and CreateWindowStationW.
	* fhandler_process.cc (format_process_maps): Use temporary TLS path
	buffer instead of stack based buffer.
	* fork.cc (frok::parent): Convert to use CreateProcessW.
	* path.cc: Throughout use temporary TLS path buffers instead of stack
	based buffer.  Replace checks for CYG_MAX_PATH by checks for
	NT_MAX_PATH.
	(getfileattr): New function to replace GetFileAttributesA.
	(normalize_win32_path): Remove Win32 and NT long path prefixes.
	(getwd): Assume PATH_MAX + 1 buffer per SUSv3.
	* path.h (class path_conv): Set path buffer to size NT_MAX_PATH.
	(iswdrive): Define.
	* pinfo.cc (commune_process): Use temporary TLS path buffer instead of
	stack based buffer.
	* registry.cc (get_registry_hive_path): Ditto.
	(load_registry_hive): Ditto.
	* spawn.cc (spawn_guts): Convert to use CreateProcessW and
	CreateProcessAsUserW.
	(av::fixup): Open/close file using NtOpenFile/NtClose.
	* syscalls.cc (mknod_worker): Allow PATH_MAX file name.
	(mknod32): Ditto.
	(getusershell): Ditto.
	* tls_pbuf.cc: New file implementing tls_pathbuf and tmp_pathbuf
	methods.
	* tls_pbuf.h: New header for files using tmp_pathbuf.
	* tlsoffsets.h: Regenerate.
	* winsup.h (NT_MAX_PATH): Define as 32767 to avoid USHORT overflow.
2008-03-07 11:24:51 +00:00
Corinna Vinschen 90c9a0de5f * child_info.h (CURR_CHILD_INFO_MAGIC): Reset. 2008-03-06 10:30:50 +00:00
Corinna Vinschen 1b16e9d89c * fhandler.cc (fhandler_base::open_): Add missing test for O_CREAT.
Fix comment.
2008-03-06 10:16:07 +00:00
Corinna Vinschen 9ab254e09b s/open/create/ 2008-03-06 10:01:33 +00:00
Corinna Vinschen 8a889eff57 * child_info.h (~child_info_spawn): Check moreinfo->myself_pinfo for
NULL before closing.
	* spawn.cc (spawn_guts): Don't close moreinfo->myself_pinfo explicitely
	in case of failing CloseProcess.

	* fhandler.cc (fhandler_base::open_): Return EISDIR when trying to
	create a directory.
	* path.cc (path_conv::check): If input path had a trailing dir
	separator, tack it on to the native path if directory doesn't exist.
2008-03-05 18:31:09 +00:00
Christopher Faylor 003b55e3de fix typo 2008-03-02 23:11:00 +00:00
Christopher Faylor 6452eb1f2a * cygtls.cc (_cygtls::init_exception_handler): Semi-revert to making only
ourselves the exception handler and nothing else.
* exceptions.cc (open_stackdumpfile): Use correct format specifiers for unicode
when printing nameof stackdump file.
(stack_info::walk): Stop walking if ebp points into cygwin itself.
(_cygtls::handle_exceptions): Detect when signal is masked and treat as if it
was not caught.  Reinitialize exception handler to known state to avoid
subsequent attempts to call Windows exception handlers if an exception occurs
in a signal handler.  Revert to a 'return 0' rather than using a goto.
* strfuncs.cc (sys_wcstombs_alloc): Minor formatting tweak.
* winsup.h: Fix comment typo.
2008-03-02 22:51:19 +00:00
Christopher Faylor 1264c4d4fa * smallprint.cc (__small_vsprintf): Free allocated buffer rather than pointer
into the buffer.
2008-03-02 22:25:07 +00:00
Christopher Faylor da061b9cd2 Update ChangeLog. 2008-03-01 14:55:07 +00:00
Christopher Faylor 2d80b55b4e * cygtls.h (_cygtls::handle_threadlist_exception): Eliminate.
(_cygtls::init_threadlist_exceptions): Ditto.
* cygtls.cc (_cygtls::handle_threadlist_exception): Eliminate.
(_cygtls::init_threadlist_exceptions): Ditto.
(_cygtls::find_tls): Use myfault handling to deal with errors caused by
nonexistent threads.
2008-03-01 14:53:44 +00:00
Christopher Faylor f78f85ce6d * cygtls.cc (_cygtls::init_exception_handler): Just return. 2008-03-01 13:19:08 +00:00
Christopher Faylor 813767de3d * exceptions.cc (_cygtls::handle_exceptions): Only call rtl_unwind when
exiting.  Just return, don't set thread context.
* gendef (_setjmp): Store %fs:0 in jmp_buf.
(_sjfault): Ditto.
(_ljfault): Restore %fs:0 from jmp_buf.
(_longjmp): Ditto.
2008-03-01 13:18:22 +00:00
Corinna Vinschen 86a4b0c733 * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Call close_fs
instead of close to avoid calling close from wrong class when changing
	a file system based device node.
	(fhandler_disk_file::fchown): Ditto.
	(fhandler_disk_file::facl): Ditto.
2008-02-29 16:38:51 +00:00
Corinna Vinschen 83082b6a68 * exceptions.cc (_cygtls::handle_exceptions): When being debugged,
leave through SetThreadContext, too, to keep exception handler stack
	intact.
2008-02-28 17:57:42 +00:00
Corinna Vinschen 5003a3d1c5 * exceptions.cc (open_stackdumpfile): Add comments. 2008-02-28 17:09:34 +00:00
Corinna Vinschen 6965e46961 * exceptions.cc (open_stackdumpfile): Use NtCreateFile to create
stackdump file.
2008-02-28 15:50:51 +00:00
Corinna Vinschen 3998e2f8e6 * exceptions.cc (stack_info::walk): Fix typo. 2008-02-27 18:08:52 +00:00
Corinna Vinschen a04a25195e * cygtls.cc (_cygtls::init_exception_handler): Fix comment. 2008-02-27 17:57:14 +00:00
Corinna Vinschen b23bf2fbf9 Fix date 2008-02-27 17:53:39 +00:00
Corinna Vinschen bad25c125b * (struct __DIR_cache): Switch order of members so that the buffer
given to NtQueryDirectoryFile is 8 byte aligned.
2008-02-27 17:52:33 +00:00
Christopher Faylor 8ba248a94b * cygtls.cc (_cygtls::handle_threadlist_exception): Make it clear that the
function never actually returns.
* exceptions.cc (_cygtls::handle_exceptions): Jump out of function rather than
returning to avoid meddling by previously installed exception handlers.
2008-02-27 17:16:46 +00:00
Corinna Vinschen 5ab0b5cf52 * dcrt0.cc (initial_env): Only use local buffer "buf" if DEBUGGING is
enabled.  Replace calls to GetEnvironmentVariable by calls to
	GetEnvironmentVariableA for clarity.  Call GetEnvironmentVariableA
	with NULL buffer.
	(cygbench): Ditto, drop local buffer.
	* environ.cc (getearly): Call GetEnvironmentVariableA.
	(environ_init): Retrieve unicode environment and convert to current
	codepage locally.
	(getwinenveq): Ditto.
	* exceptions.cc (try_to_debug): Accommodate new sys_mbstowcs calling
	convention.
	* fhandler_clipboard.cc (set_clipboard): Call sys_mbstowcs to retrieve
	required buffer length.
	* fork.cc (frok::child): Call GetEnvironmentVariableA.
	* miscfuncs.cc: Accommodate changed arguments in calls to sys_mbstowcs.
	* sec_auth.cc: Ditto.
	* strfuncs.cc (sys_wcstombs_alloc): Fix formatting.
	(sys_mbstowcs): Change arguments to allow specifying a source string
	length.
	(sys_mbstowcs_alloc): Ditto.
	* uinfo.cc (cygheap_user::ontherange): Accommodate changed arguments in
	calls to sys_mbstowcs.
	* winsup.h (sys_mbstowcs): Adjust declaration.
	(sys_mbstowcs_alloc): Ditto.
2008-02-25 18:32:23 +00:00
Corinna Vinschen 44464b0156 * path.cc (cwdstuff::set): Revert error handling change in case
DuplicateHandle fails, because it breaks Vista/Longhorn workaround.
2008-02-20 14:42:29 +00:00
Christopher Faylor 9feffba7d9 * sigproc.cc (sig_send): Use sigmask of target thread if it is specified
otherwise default to main sigmask.
2008-02-19 21:42:48 +00:00
Corinna Vinschen e2108ce092 * fhandler.cc (fhandler_base::fpathconf): Fix _PC_NAME_MAX and
_PC_PATH_MAX cases.
2008-02-16 09:43:19 +00:00
Corinna Vinschen 9d342d561e * include/sys/cygwin.h (__INT_MAX_PATH): Remove.
(external_pinfo): Convert program_long to pointer.
	* external.cc (fillout_pinfo): Add buffer for program_long value.
2008-02-16 09:37:58 +00:00
Corinna Vinschen a5c1103914 * include/sys/cygwin.h (__INT_MAX_PATH): Define to 32K.
(external_pinfo): Set size to __INT_MAX_PATH.
2008-02-15 20:11:06 +00:00
Christopher Faylor e5f8ee9e61 * include/sys/cygwin.h (external_pinfo): Define program_long size using
external buffer size rather than cygwin-internal buffer size.
2008-02-15 18:07:07 +00:00
Christopher Faylor 70300fdb1c Perform whitespace cleanup throughout.
* dcrt0.cc (signal_shift_subtract): Eliminate ancient backwards compatibility.
(check_sanity_and_sync): Ditto.
* winsup.h (SIGTOMASK): Ditto.  Just use constant in signal calculation.
* include/cygwin/version: Remove backwards signal mask compatibility define.
* path.cc (symlink_info::check_sysfile): Cosmetic change.
* registry.cc (get_registry_hive_path): Remove unneeded variable.
* exceptions.cc (handle_sigsuspend): Eliminate thread signal mask and use
either main sigmask or current thread sigmask.
(set_process_mask): Ditto.
(sighold): Ditto.
(sigrelse): Ditto.
(sigset): Ditto.
(set_process_mask_delta): Ditto.
(_cygtls::call_signal_handler): Ditto.
* fhandler_process.cc (format_process_status): Ditto.
* fhandler_termios.cc (fhandler_termios::bg_check): Ditto.
* pinfo.h (class pinfo): Ditto.
* select.cc (pselect): Ditto.
* signal.cc (sigprocmask): Ditto.
(abort): Ditto.
(sigpause): Ditto.
(sigsend): Ditto.
(wait_sig): Ditto.
* thread.h (pthread::parent_tls): New member.
* thread.cc (pthread::pthread): Record parent_tls here.
(pthread::thread_init_wrapper): Initialize sigmask from parent thread.
2008-02-15 17:53:11 +00:00
Corinna Vinschen 7b4b41ab3e * cygheap.cc (cwcsdup): New function.
(cwcsdup1): New function.
	* cygheap.h (cygheap_user::get_windows_id): New method returning PWCHAR.
	(cwcsdup): Declare.
	(cwcsdup1): Declare.
	* registry.cc (get_registry_hive_path): Use WCHAR instead of char
	throughout.
	(load_registry_hive): Ditto.
	* registry.h (get_registry_hive_path): Change declaration accordingly.
	(load_registry_hive): Ditto.
	* sec_helper.cc (cygpsid::string): New method returning PWCHAR.
	* security.h (cygpsid::string): Declare.
	* syscalls.cc (seteuid32): Convert local name var to WCHAR.
	* uinfo.cc (cygheap_user::env_userprofile): Convert local name buffers
	to WCHAR.  Call sys_wcstombs_alloc to generate puserprof buffer.

	* winsup.h: Fix comment.
	(NT_MAX_PATH): New definition for maximum internal path length.
	Use throughout where appropriate.
	* include/limits.h (PATH_MAX): Set to 4096 as on Linux.
2008-02-14 16:47:11 +00:00
Christopher Faylor 4616253751 * configure.in: Remove non-working options.
* configure: Regenerate.
2008-02-14 00:49:47 +00:00
Christopher Faylor b40597cb2e * syscalls.cc (_isatty): Define as an alias to isatty to override newlib
version.
* thread.cc (pthread_kill): Deal with signal 0 as per POSIX and also avoid
manipulating an invalid thread.
2008-02-13 17:21:05 +00:00
Corinna Vinschen a9414ca6d8 * posix.sgml: Move llrint, llrintf, llrintl, lrintl, rintl, wcstol,
wcstoll, wcstoul, wcstoull, wcsxfrm from unimplemented to implemented
	POSIX interfaces.
	Change headline of "GNU extensions" to "GNU and Linux extensions".
	Add fgetxattr, flistxattr, fremovexattr, fsetxattr, getxattr, lgetxattr,
	listxattr, llistxattr, lremovexattr, lsetxattr, removexattr, setxattr,
	wcpcpy and wcpncpy to list of implemented GNU functions.
2008-02-13 14:50:39 +00:00
Corinna Vinschen 5cb998e66c * cygtls.cc (_cygtls::init_exception_handler): Revert patch
from 2005-12-02.
        * exceptions.cc (stack_info::walk): Add workaround for NT 5.2
        64 bit OSes.
        * wincap.h (wincaps::has_restricted_stack_args): New element.
        * wincap.cc: Implement above element throughout.
        (wincapc::init): Reset has_restricted_stack_args if not running
        under WOW64.
2008-02-13 09:42:22 +00:00
Corinna Vinschen dbc81478fa * fhandler_disk_file.cc (fhandler_disk_file::fgetxattr): Remove unused
attr.
	(fhandler_disk_file::fsetxattr): Ditto.
	* include/attr/xattr.h: New file.
2008-02-11 19:03:36 +00:00
Corinna Vinschen 6542ddc3be * dcrt0.cc (dll_crt0_1): Fix typo in call to sys_wcstombs.
* miscfuncs.cc (next_char): Initialize ret to keep gcc happy.
2008-02-11 16:39:06 +00:00
Corinna Vinschen 8eb981a37c Fix ChangeLog entry. 2008-02-10 15:44:12 +00:00
Corinna Vinschen 50450dcc5f * Makefile.in (DLL_OFILES): Add ntea.o.
* cygwin.din (getxattr, listxattr, removexattr, setxattr, lgetxattr,
	llistxattr, lremovexattr, lsetxattr, fgetxattr, flistxattr,
	fremovexattr, fsetxattr): Export Linux extended attribute functions.
	Sort.
	* errno.cc (errmap): Add mappings for ERROR_EAS_DIDNT_FIT,
	ERROR_EAS_NOT_SUPPORTED, ERROR_EA_LIST_INCONSISTENT,
	ERROR_EA_TABLE_FULL, ERROR_FILE_CORRUPT, ERROR_INVALID_EA_NAME.
	* fhandler.h (class fhandler_base): Declare new fgetxattr and
	fsetxattr methods.
	(class fhandler_disk_file): Ditto.
	* fhandler.cc (fhandler_base::fgetxattr): New method.
	(fhandler_base::fsetxattr): New method.
	* fhandler_disk_file.cc (fhandler_disk_file::fgetxattr): New method.
	(fhandler_disk_file::fsetxattr): New method.
	* ntdll.h (STATUS_EA_TOO_LARGE): Define.
	(STATUS_NONEXISTENT_EA_ENTRY): Define.
	(STATUS_NO_EAS_ON_FILE): Define.
	* ntea.cc (read_ea): Rewrite for long pathnames and for using with
	Linux extended attribute functions.
	(write_ea): Ditto.
	(getxattr_worker): New static function.
	(getxattr): New function.
	(lgetxattr): New function.
	(fgetxattr): New function.
	(listxattr): New function.
	(llistxattr): New function.
	(flistxattr): New function.
	(setxattr_worker): New static function.
	(setxattr): New function.
	(lsetxattr): New function.
	(fsetxattr): New function.
	(removexattr): New function.
	(lsetxattr): New function.
	(fsetxattr): New function.
	* security.h (read_ea): Change declaration according to above changes.
	(write_ea): Ditto.
	* include/cygwin/version.h: Bump API minor version.
2008-02-10 15:43:04 +00:00
Corinna Vinschen bebb25961c * libc/ftw.cc (ftw): Allow nfds < 0 for glibc compatibility.
* libc/nftw.c (nftw): Ditto.
2008-02-10 15:19:08 +00:00
Corinna Vinschen 30bd87b827 Fix typo in latest ChangeLog entry. 2008-02-07 20:38:39 +00:00
Corinna Vinschen 4248960e2f * dtable.cc (dtable::init_std_file_from_handle): Set access to
read/write of handle is connected to a tty or console.
	* fhandler_dsp.cc (fhandler_dev_dsp::dup): Set open flags correctly
	after duplicating from archetype.
	* fhandler_tty.cc (fhandler_tty_slave::dup): Ditto.
	(fhandler_pty_master::dup): Ditto.
2008-02-07 18:59:40 +00:00
Corinna Vinschen 93591f4200 * miscfuncs.cc (next_char): Fix typos in comment.
* strfuncs.cc: Remove cygserver guards.
2008-02-06 22:04:16 +00:00