Commit Graph

4097 Commits

Author SHA1 Message Date
Corinna Vinschen a7b6c156de * postinstall: Fix copy/paste bug. 2008-04-14 14:09:00 +00:00
Corinna Vinschen 949caed8f7 * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Fix
thinko in UNC path handling.
	* path.cc (symlink_worker): Fix typo in comment.  Fix UNC path handling.
2008-04-14 09:15:35 +00:00
Corinna Vinschen 9bf7c7e96c * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Simplify
code which checks for symlinks.  Fix problem with UNC paths.

	* environ.cc (struct parse_thing): Remove transparent_exe option.
	* syscalls.cc (transparent_exe): Remove.
	(unlink): Always add stat_suffixes, drop transparent_exe check.
	(open): Ditto.
	(link): Ditto.
	(pathconf): Ditto.
	* fhandler_disk_file.cc (fhandler_disk_file::link): Ditto.
	* fhandler_process.cc (fhandler_process::fill_filebuf): Always remove
	.exe suffix.
	* path.cc (realpath): Never attach known_suffix.
2008-04-13 16:47:21 +00:00
Corinna Vinschen acbc84739f * cygwin.din (wprintf): Remove.
(_wprintf): Ditto.
	* syscalls.cc (wprintf): Ditto.
	* include/cygwin/version.h: Add FIXME comment.
2008-04-10 09:27:58 +00:00
Corinna Vinschen 9794095354 * mount.cc (mount_info::from_fstab): Read user fstab files from
/etc/fstab.d/$USER to avoid user write access to /etc.
	* postinstall: Use variables for filenames.  Create /etc/fstab.d dir
	with 01777 permissions.
2008-04-08 16:12:24 +00:00
Corinna Vinschen bffffaf652 * postinstall: Disable adding registry mounts to /etc/fstab for now. 2008-04-08 07:58:12 +00:00
Christopher Faylor b13e6864f5 Remove unneeded header files from source files throughout. 2008-04-07 18:45:59 +00:00
Corinna Vinschen f471ca85e1 * postinstall: Add function print_flags and call where appropriate.
Omit system and cygdrive flag when testing cygdrive flags.
2008-04-07 16:37:20 +00:00
Christopher Faylor ade47a3430 Add miscfuncs.h to files as needed throughout.
* mount.cc: New file.
* path.cc: Move mount-specific stuff into mount.cc.  Move common stuff into
miscfuncs.cc.  Remove unneeded includes.
* miscfuncs.cc: Move some common path functions here.
* miscfuncs.h: New file.
* winsup.h: Move miscelleneous functions to miscfuncs.h.
* dcrt0.cc: Remove unneeded includes.
* Makefile.in (DLL_OFILES): Add mount.o.
* include/cygwin/config.h: Fix a minor typo.
2008-04-07 16:15:45 +00:00
Corinna Vinschen 6c74e7d7fc * postinstall: Set IFS to LF only. Change while loop in subshell to
for loop in parent shell.  Add code to read system mount points and
	system cygdrive prefix from registry and append them to /etc/fstab.
2008-04-07 14:09:22 +00:00
Corinna Vinschen 93c5415116 * path.cc (struct opt): Rename "system" to "nouser".
* postinsatll: Ditto.
2008-04-06 09:56:42 +00:00
Corinna Vinschen ac6f159cd7 * postinstall: New script.
* Makefile.in (sysconfdir): Define.
	(install): Create $(sysconfdir)/postinstall dir.  Install postinstall
	script into it.

	* path.cc: Add temorary comments to note later function removal.
	(conv_fstab_spaces): New inline function to handle \040 to space
	conversion.
	(struct opt): Add "system" and "user" mount options.
	(mount_info::from_fstab_line): Only allow # to start a comment at
	the beginning of the line.  Call conv_fstab_spaces on native_path and
	posix_path fields.  Don't enforce system mounts in /etc/fstab.
	Drop last argument in call to add_item.
	(mount_info::from_fstab): Create a default cygdrive entry.  Load
	user mount points from fstab.<username> instead of fstab.<sid>.
	(mount_info::read_mounts): Drop last argument in call to add_item.
	(mount_info::add_reg_mount): Remove.
	(mount_info::del_reg_mount): Remove.
	(mount_info::write_cygdrive_info): Rename from
	mount_info::write_cygdrive_info_to_registry.  Don't write to registry.
	Disallow to overwrite a system cygdrive prefix.
	(mount_info::remove_cygdrive_info_from_registry): Remove.
	(mount_info::get_cygdrive_info): Just fetch current cygdrive prefix and
	flags.
	(mount_info::add_item): Drop last argument.  Don't write to registry.
	Disallow to overwrite a system mount point.
	(mount_info::del_item): Drop last argument.  Don't write to registry.
	Disallow to remove a system mount point.
	(mount): Enforce user mount.
	(cygwin_umount): Ditto.
	* shared_info.h (mount_info::add_item): Drop last argument.
	(mount_info::del_item): Ditto.
	(mount_info::add_reg_mount): Remove.
	(mount_info::del_reg_mount): Remove.
	(mount_info::write_cygdrive_info): Rename from
	mount_info::write_cygdrive_info_to_registry.
	(mount_info::remove_cygdrive_info_from_registry): Remove.
2008-04-05 09:30:06 +00:00
Corinna Vinschen d94be84665 Fix ChangeLog entry. 2008-04-03 18:23:59 +00:00
Corinna Vinschen b7ca762d3f * path.cc (mount_info::from_fstab_line): Simplify.
(mount_info::from_fstab): Create a default root dir.
2008-04-03 18:20:54 +00:00
Corinna Vinschen 023266aac8 * dcrt0.cc (insert_file): Fix potential buffer overflow. 2008-04-03 16:00:14 +00:00
Corinna Vinschen 0c273f5ac3 * path.cc (mount_info::from_fstab): Get module path name of the Cygwin
DLL, not the path of the application.
2008-04-03 15:44:18 +00:00
Corinna Vinschen ba047ace14 Cleanup.
* exceptions.cc (windows_system_directory): Make static.  Convert to
	WCHAR.
	(_cygtls::inside_kernel): Accommodate above change.  Check module
	path name for leading \\?\ and skip, if so.
	(try_to_debug): Call GetEnvironmentStringsW and convert evaluation to
	WCHAR to avoid truncated environment problem.
	(has_visible_window_station): Call GetUserObjectInformationW.
	(events_init): Accommodate above conversion of windows_system_directory.
	* init.cc (respawn_wow64_process): Use WCHAR functions to start new
	process.
	* net.cc (__dup_ent): Drop Windows 9x consideration.
	(load_ipv6_funcs): Use WCHAR functions to load IPv6 libs.
	* syscalls.cc (syscalls.cc): Remove call to GetDiskFreeSpace.
2008-04-03 15:28:03 +00:00
Corinna Vinschen 85340bc03d * path.cc (mount_info::init): First try to fetch mount points from
fstab files.  Fallback to registry if none exists.
	(skip_ws): New inline function.
	(find_ws): Ditto.
	(struct opt): New structure for mount options.
	(read_flags): New static function to convert a mount flags string into
	a flag value.
	(mount_info::from_fstab_line): New method to create a mount table
	entry from a fstab line.
	(mount_info::from_fstab): New method to read fstab file.
	* shared_info.h (mount_info::from_fstab_line): Declare.
	(mount_info::from_fstab): Declare.
2008-04-02 17:45:32 +00:00
Corinna Vinschen c8cd2f2255 * path.cc (enum symlink_t): Rename from shortcut_t. 2008-04-02 11:45:14 +00:00
Corinna Vinschen 3d0192def9 * path.cc (symlink_info::check_reparse_point): Use NtFsControlFile
to read reparse points.
	(enum shortcut_t): New type.
	(symlink_info::check): Convert sym_check to shortcut_t.  Use shortcut_t
	enum values throughout.  Check reparse point before checking for
	sysfile shortcut.  Open reparse points with READ_CONTROL only to
	accommodate special Vista reparse points.  Add comments.
2008-04-02 11:35:10 +00:00
Corinna Vinschen 5cb524ee7d * flock.cc (get_lock_parent_dir): Drop call to NtOpenDirectoryObject
and utilize OBJ_OPENIF flag in call to NtCreateDirectoryObject.
	(inode_t::inode_t): Ditto.  Same for NtOpenMutant/NtCreateMutant.
2008-04-02 10:53:55 +00:00
Corinna Vinschen 682cf99346 * posix.sgml: Change lockf to being implemented. 2008-04-02 10:48:08 +00:00
Corinna Vinschen 8c4fc35ecb * dcrt0.cc (insert_file): Convert filename to WCHAR and call
CreateFileW to allow UTF-8 filenames.
2008-04-02 10:34:17 +00:00
Corinna Vinschen a7d2cc16e2 * Fix copyright dates. 2008-04-01 13:22:47 +00:00
Corinna Vinschen fabfb1a1ee Throughout, call fcntl64 instead of fcntl or fcntl_worker.
* fcntl.cc (fcntl_worker): Remove.
	(fcntl64): Add fault handler.  Move fcntl_worker stuff here.  Add case
	for locking and call fhandler's lock method directly.  Make sure that
	F_FLOCK flag isn't set in lock call.
	(_fcntl): Add fault handler.
	* fhandler.cc (fhandler_base::fcntl): Drop lock cases.
	* flock.cc (flock): Add fault handler.  Simplify code.  Call fhandlers
	lock method directly instead of fcntl_worker.  Add debug output.
	(lockf): Add fault handler.  Call fhandlers lock method directly
	instead of fcntl_worker.  Add debug output.
	* winsup.h (fcntl_worker): Drop declaration.
	(fcntl64): Declare.
2008-04-01 10:22:33 +00:00
Corinna Vinschen 636c94d853 * smallprint.cc (__small_vswprintf): Fix uninitialized usage of `w'.
Revamp advisory file locking to avoid cross reference pointers as well
	as to allow BSD flock semantics.  More agressively delete unused nodes
	and sync objects.
	* fhandler.h (fhandler_base::ino): Rename from namehash.  Fix comment.
	(fhandler_base::node): Remove.
	(fhandler_base::unique_id): Add.
	(fhandler_base::del_my_locks): New method.
	(get_ino): Rename from get_namehash.  Change usage throughout Cygwin.
	(get_unique_id): New method.
	* fhandler.cc (fhandler_base::close): Call own del_my_locks method.
	Fix comment.
	(fhandler_base::fhandler_base): Accommodate new and changed members.
	(fhandler_base::fixup_after_fork): Call del_my_locks.
	(fhandler_base::fixup_after_exec): Ditto for files with close-on-exec
	flag set.
	* fhandler_disk_file.cc (get_ino_by_handle): Rename from
	readdir_get_ino_by_handle.  Accommodate throughout.
	(fhandler_base::open_fs): Fill ino with inode number if FS has good
	inodes.  Allocate a LUID and store in unique_id to recognize file
	descriptors referencing the same file object.
	* flock.cc: Drop flock TODO comments.  Use explicit types __dev32_t
	and __ino64_t instead of dev_t and ino_t.
	(LOCK_OBJ_NAME_LEN): Change to reflect longer lf_id length.
	(get_obj_handle_count): New method.
	(lockf_t::lf_id): Change type to long long.
	(inode_t::get_lock_obj_handle_count): Drop in favor of static function
	get_obj_handle_count.
	(inode_t::del_locks): Remove.
	(inode_t::get): Add create_if_missing flag argument.
	(inode_t::del_my_locks): Reimplement to handle POSIX and BSD flock
	locks.  Return if node can be deleted or not.
	(inode_t::~inode_t): Ditto.  Close handles to i_dir and i_mtx.
	(fixup_lockf_after_fork): Remove.
	(fhandler_base::del_my_locks): New method.
	(fixup_lockf_after_exec): Check if node can be deleted.
	(inode_t::get): Only create node if create_if_missing is set.  Lock
	the returned node here before unlocking the node list.
	(inode_t::get_all_locks_list): Accommodate new lf_id length.
	(inode_t::create_lock_obj): Ditto.
	(lockf_t::open_lock_obj): Ditto.  Change return type to bool.  De-const.
	Set lf_obj instead of returning a handle.
	(lockf_t::del_lock_obj): Call SetEvent only if new incoming parameters
	allow it.  Explain how it's supposed to work.
	(fhandler_disk_file::lock): Only fetch file length in SEEK_END case.
	Use NtQueryInformationFile(FileStandardInformation) instead of
	calling fstat_by_handle.  Always unlock node before returning.
	Use fhandler's unique id to create lf_id for BSD flock locks.
	Rely on node lock from inode_t::get.  Call del_lock_obj on removed
	locks here to allow explicit unlocking.  Delete node if no lock exists
	on the file anymore.
	(lf_setlock): Get file handle as additional parameter.  Handle the fact
	that lf_getblock now always opens the attached event object.  Reactivate
	erroneously applied patch which deactivates setting thread priority.
	Additionally handle blocking on BSD flock locks.
	(lf_clearlock): Get file handle as additional parameter.
	(lf_getlock): Close event handle opened by lf_getblock.
	(lf_getblock): Open potentially blocking event object here and check
	its signal state if it's a BSD flock lock.
	(lf_wakelock): Get file handle as additional parameter.
	* fork.cc (frok::child): Drop call to fixup_lockf_after_fork.
	* ntdll.h (struct _EVENT_BASIC_INFORMATION): Define.
	(enum _EVENT_INFORMATION_CLASS): Define.
	(NtQueryEvent): Declare.

	* fhandler.h (fhandler_base::fs_flags): Remove.
	(fhandler_base::set_fs_flags): Remove.
	(fhandler_base::get_fs_flags): Remove.
	* fhandler.cc (fhandler_base::write): Check for sparse file using
	pc.fs_flags().
	* fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Ditto.

	The return of the volume serial number in fs_info.
	* fhandler.h (get_dev): New method.
	* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Drop call to
	NtQueryVolumeInformationFile(FileFsVolumeInformation).  Just use
	get_dev() method.
	* fhandler_fifo.cc (fhandler_fifo::open) Use device ID and inode number
	to generate fifo name.
	* path.h (fs_info::sernum): New member.
	(fs_info::serial_number): New method.
	(path_conv::fs_serial_number): New method.
	* path.cc (fs_info::update): Fetch volume serial number and store in
	sernum.
2008-03-31 18:03:25 +00:00
Corinna Vinschen 31390e4ca6 * flock.cc (lockf_t::operator new): Add operator taking a pointer. Call
cmalloc instead of ccalloc in the default operator.  Add comments.
	(inode_t::operator new): Call cmalloc instead of ccalloc.
	(inode_t::get_all_locks_list): Return lockf_t pointer.
	(inode_t::del_all_locks_list): Delete.  Remove calls throughout.
	(inode_t::get): Handle failing new gracefully.
	(MAX_LOCKF_CNT): Define.
	(inode_t::get_all_locks_list): Use pre-allocated buffer in i_all_lf
	instead of allocating every lock.  Return pointer to start of linked
	list of locks.
	(lockf_t::open_lock_obj): Create event object non-inheritable.
	(fhandler_disk_file::lock): Handle failing new gracefully.
	(lf_setlock): Allocate temporary buffer for node->i_all_lf from TLS.
	Remove erroneous NtClose call.
	(lf_getlock): Allocate temporary buffer for node->i_all_lf from TLS.
	(lf_getblock): Set lf to return value of get_all_locks_list.
2008-03-28 12:36:19 +00:00
Corinna Vinschen c46d7be9a6 * flock.cc (FLOCK_PARENT_DIR_ACCESS): Define.
(FLOCK_INODE_DIR_ACCESS): Define.
	(FLOCK_MUTANT_ACCESS): Define.
	(FLOCK_EVENT_ACCESS): Define.
	(SD_MIN_SIZE): Define.
	(everyone_sd): Define to simplify calling _everyone_sd.
	(_everyone_sd): Replace everyone_sync_sd.  Take SECURITY_DESCRIPTOR as
	argument and allow to specify access mask.
	(get_lock_parent_dir): Open/Create parent dir with
	FLOCK_PARENT_DIR_ACCESS.  Add text to api_fatal message.
	(inode_t::inode_t): Open/Create dir with FLOCK_INODE_DIR_ACCESS.
	Open/Create mutant with FLOCK_MUTANT_ACCESS.  Add text to api_fatal
	message.
	(lockf_t::create_lock_obj): Create event with FLOCK_EVENT_ACCESS.
	Add text to api_fatal message.
	(lockf_t::open_lock_obj): Open event with FLOCK_EVENT_ACCESS.
	On failure, just return NULL pointer instead of calling api_fatal.
	(lockf_t::get_lock_obj_handle_count): Replace call to small_printf
	with call to debug_printf.
	(lf_setlock): Handle a failure to open the lock event object as
	EDEADLK.  Call system_printf if opening sync objects fail.
	* ntdll.h (DIRECTORY_TRAVERSE): Define.
	(DIRECTORY_CREATE_OBJECT): Define.
	(DIRECTORY_CREATE_SUBDIRECTORY): Define.
	(EVENT_QUERY_STATE): Define.
2008-03-27 20:03:32 +00:00
Christopher Faylor b5f9c24f7e add credit 2008-03-27 17:00:54 +00:00
Corinna Vinschen 124d4c5010 * syscalls.cc (rename): Fix setting errno in case of trailing "/." 2008-03-27 13:02:07 +00:00
Corinna Vinschen e21ac1ebdb * fhandler_socket.cc: Create shared objects session local throughout.
* shared.cc (shared_name): Add argument to allow opening session
	local shared memory.
	* shared_info.h (shared_name): Change declaration accordingly.
2008-03-27 10:43:14 +00:00
Christopher Faylor 93d606f60a * hookapi.cc (find_first_notloaded_dll): New function.
* pinfo.cc (status_exit): New function.  Issue message when dll not found.  Use
find_first_notloaded_dll to find a nonexistent dll.
(pinfo::maybe_set_exit_code_from_windows): Call status_exit when exit code >=
0xc0000000UL.
* sigproc.cc (child_info::proc_retry): Return exit code when
STATUS_DLL_NOT_FOUND.
* spawn.cc (spawn_guts): Minor cleanup.
* syscalls.cc (close_all_files): Don't actually close stderr filehandle.  Just
make it noninheritable.
* winsup.h (find_first_notloaded_dll): Declare new function.
* ntdll.h: Add several missing NTSTATUS defines.
2008-03-27 01:50:40 +00:00
Corinna Vinschen 072030c3c5 * flock.cc (inode_t::get_all_locks_list): Don't allow F_WAIT flag
in lock event object name.
	(lockf_t::create_lock_obj): Ditto.
	(lockf_t::open_lock_obj): Ditto.
	(lf_setlock): Only check POSIX locks for deadlock condition.
	(lf_findoverlap): Don't let POSIX and flock locks interact.
2008-03-24 20:11:55 +00:00
Corinna Vinschen b9e2579c0f * flock.cc: Clarify a couple of comments.
(lf_setlock): Treat not being able to sync on a process as a potential
	deadlock situation.  Close process handle using CloseHandle.
2008-03-24 15:36:17 +00:00
Corinna Vinschen 7f25a29df4 * flock.cc: Fix typo in comment. 2008-03-24 15:12:24 +00:00
Corinna Vinschen a998dd7055 * fhandler.cc (fhandler_base::dup): Drop setting flags in the parent.
Implement advisory file locking.
	* cygheap.h (struct init_cygheap): Add inode_list member.
	* cygwin.din (lockf): Export.
	* dcrt0.cc (child_info_spawn::handle_spawn): Call
	fixup_lockf_after_exec.
	* dtable.h (class dtable): Add fhandler_disk_file as friend class.
	* fhandler.cc (fhandler_base::close): Call del_my_locks if node is set.
	(fhandler_base::fhandler_base): Initialize node to NULL.
	(fhandler_base::fixup_after_fork): Ditto.
	* fhandler.h (class fhandler_base): Add member node.
	* fhandler_disk_file.cc (fhandler_disk_file::lock): Delete.
	* flock.cc: Implement all advisory file locking here.
	(fhandler_disk_file::lock): Implement here.
	(flock): Call fcntl with F_FLOCK bit set.  Remove test main function.
	(lockf): New function.
	* fork.cc (frok::child): Call fixup_lockf_after_fork.
	* ntdll.h (DIRECTORY_ALL_ACCESS): Define.
	(struct _OBJECT_BASIC_INFORMATION): Define.
	(enum _EVENT_TYPE): Define.
	(NtCreateDirectoryObject): Declare.
	(NtCreateEvent): Declare.
	(NtCreateMutant): Declare.
	(NtOpenEvent): Declare.
	(NtOpenMutant): Declare.
	* include/cygwin/version.h: Bump API minor number.
2008-03-24 14:48:58 +00:00
Christopher Faylor 88f0dc31d1 * dtable.cc (handle_to_fn): Modify to return true if handle represents a cygwin
tty.
(dtable::init_std_file_from_handle): Detect when we've seen a cygwin pipe and
use it in overlapped mode by default.
(decode_tty): Make static.
2008-03-22 21:27:05 +00:00
Christopher Faylor 1ffe3e67b1 * dtable.cc: Define various device-related string constants as wide character
constants.
(dtable::init_std_file_from_handle): Reorganize pipe handling to try to catch
special tty case.
(build_fh_name_worker): Declare for common use.
(build_fh_name): Define char version.
(build_fh_name): Define (currently unused) UNICODE_STRING version.
(decode_tty): Detect if pipe is actually a cygwin tty, returning the tty name
in the buffer.
(handle_to_fn): Reorganize to use wide characters.
* dtable.h (build_fh_name): Declare (currently unused) UNICODE_STRING version.
* fhandler_tty.cc (fhandler_pty_master::setup): Use
fhandler_pipe::create_selectable to create a pipe with a given name.
* pipe.cc (pipe_handler): Make returned handle inheritable.
(fhandler_pipe::create_selectable): Take an optional name.  Use a standard
cygwin introducer for the name.
* path.cc (path_conv::check): Make first argument const.
* path.h (path_conv::check): Ditto for declaration.
(path_conv::path_conv): Ditto for UNICODE_STRING version.
2008-03-22 21:04:16 +00:00
Corinna Vinschen 00103b7f5e * include/sys/cygwin.h: Revert erroneous move of `#ifdef WINVER' to
another location.
2008-03-18 09:57:33 +00:00
Corinna Vinschen d63c2da552 * fcntl.cc (fcntl_worker): Protect with a 'myfault'.
* path.cc (normalize_posix_path): Treat X:/ as Win32 path, too.

	* smallprint.cc (__wrn): New static function.
	(__small_vswprintf): New function to generate WCHAR strings.
	(__small_swprintf): Ditto.
	* winsup.h (__small_swprintf): Declare.
	(__small_vswprintf): Declare.
2008-03-14 20:43:28 +00:00
Corinna Vinschen 7d5d232b50 * path.sgml: Remove documentation for old path API. Add documentation
for new path API.
	* security.sgml: New file to document cygwin_set_impersonation_token
	and cygwin_logon_user with only eight years of delay.
	* shared.sgml: Remove file.
	* include/sys/cygwin.h (cygwin32_attach_handle_to_fd): Move declaration
	into fully deprecated function block.
	(cygwin_logon_user): Move declaration down to declaration of
	cygwin_set_impersonation_token.
2008-03-13 15:18:10 +00:00
Corinna Vinschen 0f7ac147bd * syscalls.cc (rename): Just return with 0 if filenames are identical,
per POSIX.  Drop comment added in previous patch.
2008-03-12 18:54:24 +00:00
Corinna Vinschen 48726c8a06 * syscalls.cc (rename): Handle a special case of trying to rename a
mount point.
2008-03-12 18:46:10 +00:00
Corinna Vinschen a66789a0c0 * environ.h: Fix comment.
* winsup.h: Ditto.  Reflect the fact that CYG_MAX_PATH is deprecated.
2008-03-12 17:04:10 +00:00
Corinna Vinschen 495571e5fc * pipe.cc (fhandler_pipe::create_selectable): Use MAX_PATH instead of
CYG_MAX_PATH.
	* tty.cc (tty_list::init_session): Ditto.
	(tty::alive): Ditto.
	(tty::open_mutex): Ditto.
	(tty::create_inuse): Ditto.
	(tty::get_event): Ditto.
2008-03-12 16:55:42 +00:00
Corinna Vinschen 414dcf5f83 Fix typo. 2008-03-12 16:16:31 +00:00
Corinna Vinschen b0717aae02 * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Disable
munging.  Convert all chars in the 0xf0xx area to it's ascii equivalent.
	* path.cc (normalize_posix_path): Don't treat "X:foo" as windows path,
	only "a:\foo".
	(tfx_chars): New transformation table for special DOS chars.
	(tfx_chars_managed): Ditto, plus transformation of uppercase ASCII
	chars.
	(transform_chars): New function.
	(get_nt_native_path): Make static.  Call transform_chars for all valid
	FS paths.  Get additional flag if file is managed or not.  Accommodate
	throughout.
	(getfileattr): Get additional flag if file is managed or not.
	Accommodate throughout.
	(path_conv::check): Disable special handling for trailing dots and
	spaces.
	(mount_item::build_win32): Disable code for managed paths.
	(mount_info::conv_to_posix_path): Ditto.
	* path.h (get_nt_native_path): Remove declaration.
2008-03-12 16:07:04 +00:00
Corinna Vinschen 31812fc0bc * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Don't
copy filename twice in the non-managed case.
2008-03-12 15:04:06 +00:00
Corinna Vinschen edab6053a2 * winsup.h (NT_MAX_PATH): Revert ill-advised change to 32767.
Accommodate change throughout.

	* cygwin.din (cygwin_conv_path): Export.
	(cygwin_conv_path_list): Export.
	(cygwin_create_path): Export.
	* dcrt0.cc (dll_crt0_1): Use cygwin_conv_path.
	* dtable.cc (handle_to_fn): Ditto.  Don't expect UNICODE_STRING being
	0-terminated.
	* environ.cc (env_plist_to_posix): New helper function.
	(env_plist_to_win32): Ditto.
	(env_path_to_posix): Ditto.
	(env_path_to_win32): Ditto.
	(return_MAX_PATH): Remove.
	(conv_envvars): Use new helper functions.  Drop removed members.
	(win_env::operator =): Accommodate removal of path length functions.
	(win_env::add_cache): Accommodate new env helper function API.
	(posify): Ditto.
	* environ.h (struct win_env): Ditto. Remove path length function
	pointers since they are unused.
	* path.cc (warn_msdos): Use cygwin_conv_path.
	(getfileattr): Use new tmp_pathbuf::u_get method.
	(fillout_mntent): Ditto.
	(symlink_info::check): Ditto.
	(path_conv::check): Use sizeof (WCHAR) instead of constant 2.
	(symlink_info::check_reparse_point): Ditto.
	(conv_path_list): Get max size of target string as argument.  Call
	cygwin_conv_path as helper function.
	(cygwin_conv_path): New function.
	(cygwin_create_path): New function.
	(cygwin_conv_to_win32_path): Just call cygwin_conv_path with size set
	to MAX_PATH.
	(cygwin_conv_to_full_win32_path): Ditto.
	(cygwin_conv_to_posix_path): Ditto.
	(cygwin_conv_to_full_posix_path): Ditto.
	(conv_path_list_buf_size): Add FIXME comment.
	(env_PATH_to_posix): Rename from env_win32_to_posix_path_list.
	Add size argument as required for env helper functions.
	(cygwin_win32_to_posix_path_list): Call conv_path_list with size set to
	MAX_PATH.
	(cygwin_posix_to_win32_path_list): Ditto.
	(cygwin_conv_path_list): New function.
	(cwdstuff::get): Fix length argument in call to sys_wcstombs.
	* spawn.cc (find_exec): Use cygwin_conv_path_list.
	* tls_pbuf.h (tmp_pathbuf::u_get: New method.
	* uinfo.cc (cygheap_user::ontherange): Allocate temporary path buffers
	using tmp_pathbuf.  Use cygwin_conv_path.
	* winf.cc (av::unshift): Use cygwin_conv_path.
	* include/cygwin/version.h: Bump API minor number.
	* include/sys/cygwin.h: Comment out old cygwin32_XXX API.
	Mark old path handling API as deprecated.
	(cygwin_conv_path_t): Typedef.  Define values.
	(cygwin_conv_path): Declare.
	(cygwin_create_path): Declare.
	(cygwin_conv_path_list): Declare.
2008-03-12 12:41:50 +00:00
Corinna Vinschen 0c4cb56009 * dlfcn.cc (get_full_path_of_dll): Allow paths up to PATH_MAX.
(dlopen): Call get_full_path_of_dll with path buffer allocate by
	tmp_pathbuf.
2008-03-11 13:35:55 +00:00