the prefix len in it.
(check_path): Take length parameter. Use this length insetad of
calling strlen. Allow PATH_MAX length paths.
(ipc_mutex_init): Use MAX_PATH instead of CYG_MAX_PATH.
(ipc_cond_init): Ditto.
(shm_open): Allocate local name buffer not bigger than necessary. Call
check_path with additional length argument.
(shm_unlink): Ditto.
(mq_open): Ditto.
(mq_unlink): Ditto.
(sem_open): Ditto.
(sem_unlink): Ditto.
cmalloced linked lists throughout.
(class mmap_record): Add LIST_ENTRY element.
(mmap_record::match): New method, taking over match algorithm from
list::search_record.
(class mmap_list): Rename from class list. Add LIST_ENTRY. Convert
recs to a LIST_HEAD. Drop nrecs and maxrecs members.
(mmap_list::get_record): Drop entirely.
(mmap_list::free_recs): Drop entirely.
(mmap_list::del_record): Take mmap_record to delete as parameter.
(mmap_list::search_record): Convert to mmap_record::match.
(class mmap_areas): Rename from class map. Convert lists to LIST_HEAD.
(mmap_areas::get_list): Drop entirely.
(mmap_areas::del_list): Take mmap_list to delete as parameter.
(mprotect): Fix indentation.
(struct shm_shmid_list): Add ref_count member.
(struct shm_attached_list): Remove hdl and size members. Add a parent
member pointing to referenced shm_shmid_list entry.
(shm_guard): New muto.
(SLIST_LOCK): Define.
(SLIST_UNLOCK): Define.
(fixup_shms_after_fork): Use hdl and size members of parent
shm_shmid_list entry.
(shmat): Access sequential bookkeeping lists in a thread safe way.
Accommodate change in list element layout. Align comments.
(shmctl): Ditto.
(shmdt): Ditto.
(shmget): Ditto.
bool parameter.
* cygserver.conf: Add a description for the kern.ipc.shm_allow_removed
parameter.
* sysv_shm.cc (shminit): Set shm_allow_removed variable according to
kern.ipc.shm_allow_removed setting.
(get_cygdrive_prefixes): Remove.
(cygwin_internal): Call get_cygdrive_info with NULL flag parameters
instead of get_cygdrive_prefixes.
* path.cc (mount_info::get_cygdrive_info): Allow NULL flag parameters.
get_initial, and fixup_after_exec declarations.
Convert win32 to UNICODE_STRING.
(cwdstuff::get_drive): Convert win32 path in current codepage.
(cwdstuff::set): Take native NT path.
* ntdll.h (struct _TEB): Typedef.
* path.cc (mount_info::conv_to_posix_path): Add variant taking
wide char DOS paths.
(symlink_info::posixify): Simplify concatenating cwd and relative path.
(hash_path_name): Drop special relative path handling.
(chdir): Drop special "drive only" handling. Call cwdstuff::set with
native path.
(cwdstuff::get_hash): Remove.
(windows_system_directory): Remove.
(_upp): Remove.
(get_user_proc_parms): Make inline. Get PEB pointer by calling
NtCurrentTeb.
(cwdstuff::init): Simplify.
(cwdstuff::set): Rework to handle incoming native NT path. Workaround
a Vista problem with CWD handle in the user process parameter block.
(cwdstuff::get): Simplify locking. Accommodate type change of win32.
* shared_info.h (mount_info): Add declaration for new conv_to_posix_path
method.
* strfuncs.cc (sys_wcstombs): Return correct length of created
multi-byte string.
(off_current): New static variable.
(off_append): Ditto.
(fhandler_base::raw_write): Use NtWriteFile. Accommodate O_APPEND here.
(fhandler_base::write): Drop O_APPEND hack. Use NT functions.
(fhandler_base::lseek): Rewrite using NT functions.
* fhandler_disk_file.cc (fhandler_disk_file::fstatvfs): Add space in
debug output.
(fhandler_disk_file::ftruncate): Ditto.
* ntdll.h (STATUS_DISK_FULL): Define.
(FILE_USE_FILE_POINTER_POSITION): Define.
(FILE_WRITE_TO_END_OF_FILE): Define.
* path.cc (symlink_info::check_shortcut): Use NT function to get file
size. Reintroduce checking file size before reading it. Eliminiate
close_it label.
(symlink_info::check_sysfile): Check for EOF condition.
be able to keep SYMLINK_MAX sized strings.
(symlink_worker): Rework for long path names. When writing windows
shortcuts, store pathname additionally "hidden" after the actual
shortcut data to workaround size limitations of the description field.
(symlink_info::check_shortcut): Drop file name parameter. Drop max
file size check. Use NT functions. Use appended full path if
available, description otherwise. Check symlink string length for
not exceeding SYMLINK_MAX. Don't close file here.
(symlink_info::check_sysfile): Drop file name parameter. Use NT
functions. Check symlink string length for not exceeding SYMLINK_MAX.
Don't close file here.
(symlink_info::check_reparse_point): Drop file name parameter. Drop
useless length checks. Allow SYMLINK_MAX length symlink strings.
Don't close file here.
(symlink_info::posixify): Allow SYMLINK_MAX length symlink strings.
(symlink_info::check): Turn around checking for symlink file attributes.
Use NT functions. Close symlink file here.
* include/limits.h (PATH_MAX): Define as 32760. Change comment.
(SYMLINK_MAX): Define as PATH_MAX - 1.
too. Don't write to file and especially don't close handle if file
couldn't be created. Set delete disposition if writing failed,
instead of calling unlink_nt.
* include/io.h (__finddata64_t, __wfinddata64_t): changed member 'size'
from '_fsize_t' to '__int64' to be consistent with the other ...64
structures and the value set there is 8 bytes not 4. Add guard for both
as the are only used by functions available from 6.1 on.
* include/malloc.h (_HEAP_MAXREQ): Define.
(_aligned_offset_recalloc): Define.
(_aligned_recalloc()): Define.
* include/math.h: fixed a typo in a comment.
(atanhf): Fixed declaration.
* include/wchar.h (__wfinddata64_t): changed member 'size' from '_fsize_t'
to '__int64' to be consistent with the other ...64 structures and the value
set there is 8 bytes not 4. Added guard as this function is only used by
functions available from 6.1 on.
* include/sys/stat.h: some members of 'stat' were declared with types with
a prefixed underscore, while the ones without the underscore should have
been used. Added guard to '__stat64' as it is only used by functions
available from 6.1 on. Added the wide character versions of the
exec()/spawn() family for completion
(_stati64): changed the type of the 'st_mode' member from 'unsigned int' to
'_mode_t'
* include/sys/timeb.h (timeb, _timb): changed the type of the 'time' member
from 'long' to 'time_t'
(__timeb64): moved declaration of structure directly before the declaration
of the function '_ftime64()', so it is guarded as well
* include/sys/utime.h (__utimbuf64): moved declaration of structure directly
before the declaration of the functions using it, so it is guarded as well
2007-09-24 David C. Daeschler <daveregs@rsaisp.com>
* mingwex/gdtoa/mingw_snprintf.c (x_sprintf): Correct LEN_L typo in 'l'
case. Add missing break in 's'/LEN_S case.
(mmap64): ...define as local pointer to make mmap thread-safe.
Accommodate throughout. Only initialize fh_disk_file after file could
be opened with GENERIC_EXECUTE access. Call fstat_by_handle instead of
fstat to avoid overhead.