* dcrt0.cc (dll_crt0_1): Translate command line to OEM if current codepage is
OEM.
* environ.cc: Add new option 'codepage' to CYGWIN environment variable.
* fhandler_clipboard.cc (fhandler_clipboard::read): Read clipboard in OEM mode
if current codepage is OEM.
* fhandler_console.cc (fhandler_console::read): Only translate console input if
current codepage is ANSI.
* fhandler_console.cc (fhandler_console::write_normal): Translate output data
if current codepage is ANSI.
* pinfo.cc (codepage_init): New function. Setup current codepage from CYGWIN
environment variable and set codepage for file APIs.
* security.cc (read_sd): Translate file name to it if current codepage is OEM.
* winsup.h: (sys_wcstombs,sys_mbstowcs): Use current codepage for translations
between multibyte and widechar string and vice versa.
beginning of a path. These should be treated specially regardless of whether
they are UNC paths or old-style //a paths. Avoid adding cwd to a path if the
path already begins with '/'.
Always check for MAX_PATH overrun. Avoid adding one too many backslashes when
src path begins with a slash. From Corinna Vinschen.
* winsup.h: Force demangling for dll_crt0 for newer compilers.
can't be found in user registry. Allow user to override
that with command line arg.
(longopts): Fix typo in `local-groups' option.
(main): Initialize `passed_home_path' before first usage.
Always build crt1.o, dllcrt1.o, crt2.o and dllcrt2.o.
Create a libcoldname.a for the oldname library for CRTDLL.
Restrict libmoldname.a for the oldname library for MSVCRT.
* configure.in: eliminate setting RUNTIME and CRT_ID variables.
Restructure the $target_os case logic.
Always name the MinGW thread dll helper mingwm.
Change Cygwin's HEADER_SUBDIR value from mingw32 to mingw.
* configure: regenerate.
condition.
* path.cc (path_conv::check): Get file system type in call to
GetVolumeInformation to check for file systems with buggy CreateFile.
* path.h (enum path_types): Add PATH_HASBUGGYOPEN.
(class path_conv): Add methods `has_buggy_open' and
`set_has_buggy_open'.
(fhandler_base::raw_read): Detect special case where last error ==
ERROR_NOACCESS but the file is at EOF. Most UNIXes do not consider this to be
an error.
Add variables and targets to control binary and source distributions.
Add variables and targets to control snapshot distribution.
* profile/gmon.h: Add missing #endif for #ifndef.
* profile/ChangeLog: Merge entries here and remove.
* profile/Makefile.in: Add variables and targets to control
distribution.
* README: Add.
* TODO: ditto.
* config.guess: ditto.
* config.sub: ditto.
* mkinstalldirs: ditto.
* install-sh: ditto.
* configure: regenerate.
* profile/configure: ditto.
(fillin_info): Set `dwBufferSize' to the size of the console buffer.
(clear_screen): Use width of console buffer to calculate how many spaces to
clear.
* exceptions.cc (interrupt_setup): Don't set signal mask here or races occur
with main thread. Set it in sigdelayed instead.
(sigreturn): Reflect change in stack order of ebp and flags.
(sigdelayed): Set stack frame correctly. Call set_process_mask here with flags
for last trapped signal.
(signal_dispatch): Add newmask.
* sigproc.cc (wait_sig): Eliminate ill-considered attempt to halt looping
signal processors.
* child_info.h (child_info): Eliminate parent_alive.
* dcrt0.cc (dll_crt0_1): Call fork_init for debugging pid creation.
* fork.cc (fork_child): Reflect change to fixup_mmaps_after_fork arguments.
(slow_pid_reuse): New function to grab last 'n' pids to prevent pid reuse.
(fork_parent): Move last_fork_proc into slow_pid_reuse. Handle fork_pids
debugging. Eliminate unnecessary call to set_child_mmap_ptr.
(fork_init): New debugging function.
* mmap.cc (fixup_mmaps_after_fork): Renamed from recreate_mmaps_after_fork.
Rely on copied data after a fork.
(set_child_mmap_ptr): Eliminate.
* pinfo.h (_pinfo): Eliminate parent_alive, mmap_ptr and reflect above changes.
* spawn.cc (spawn_guts): Eliminate vestiges of "old way" of sending new hProc
to parent process.
(cygheap_root::~cygheap_root): Ditto.
(cygheap_root::operator=): Ditto.
(cygheap_user::~cygheap_user): Ditto.
(cygheap_user::set_name): Ditto.
(cygheap_user::set_logsrv): Ditto.
(cygheap_user::set_domain): Ditto.
(cygheap_user::set_sid): Ditto.
* cygheap.h (cygheap_root): New class.
(cygheap_user): Ditto.
(init_cygheap): Change type of `root' member to cygheap_root.
Add `user' member.
* dir.cc (opendir): Use new `cygheap_root' class.
* dcrt0.cc (dll_crt0_1): Use new `cygheap_user' class.
* fork.cc (fork_parent): Ditto.
* grp.cc (getgroups): Ditto.
* passwd.cc (search_for): Ditto.
* path.cc: Use new `cygheap_root' class throughout.
* pinfo.h (_pinfo): Remove `use_psid'. Move `username', `psid',
`logsrv', `domain', `orig_{uid,gid}' and `real_{uid,gid}' to
cygheap_user class.
* security.cc: Use new `cygheap_user' class throughout.
* shared.cc (sec_user): Ditto.
* sigproc.cc (proc_subproc): Remove copy statements for user
related information moved to `cygheap_user' class.
* spawn.cc (spawn_guts): Invalidate current chroot settings
when creating Windows environment. Use new `cygheap_user' class.
* syscalls.cc: Use new `cygheap_user' class throughout.
* uinfo.cc: Ditto.
* uinfo.cc (internal_getlogin): Change parameters to reflect the
move of user information to cygheap.
heap.
* child_info.h (child_info): Change pointer type of cygheap to init_cygheap.
* cygheap.cc (init_cheap): Point cygheap_max after contents of cygheap. Move
some stuff into cygheap.h.
* dir.cc (opendir): Change to use root and rootlen in cygheap rather than in
myself.
(mkdir): Change to use umask in cygheap rather than in myself.
* path.cc: Ditto, throughout.
* syscalls.cc (_open): Ditto. Change to use umask in cygheap rather than in
myself.
(chroot): Change to allocate root dir on the cygwin heap.
(umask): Change to use umask in cygheap rather than in myself.
(cygwin_bind): Ditto.
* sigproc.cc (proc_subproc): Don't copy umask or root stuff as this happens
automatically now.
* pinfo.h (_pinfo): Migrate stuff out of here and into init_cheap.
* dcrt0.cc (dll_crt0_1): Call cygheap_init later in startup for first cygwin
process.
(dll_crt0_1): Disable case-insensitive globbing before calling `main'.
* environ.cc (glob_init): New static function to set or clear
`ignore_case_with_glob'.
(known): Changed "glob" entry to call `glob_init'.
* glob.c (match): Use case-insensitive globbing if needed.
* mount.cc (show_cygdrive_prefixes): Remove function.
* mount.cc (show_cygdrive_info): New function. Actually, show_cygdrive_info is
really an enhanced version of show_cygdrive_prefixes renamed to
show_cygdrive_info that also displays the user and system flags.
conjunction with older binaries.
(environ_init): Ditto.
* external.cc (get_cygdrive_info): New function.
* external.cc (get_cygdrive_prefixes): Change to use get_cygdrive_info but toss
the user and system flags.
* external.cc (cygwin_internal): Add new CW_GET_CYGDRIVE_INFO case.
* path.cc (mount_info::get_cygdrive_prefixes): Remove method.
* path.cc (mount_info::get_cygdrive_info): New method. Actually,
get_cygdrive_info is really an enhanced version of get_cygdrive_prefixes
renamed to get_cygdrive_info that also gets the user and system flags.
* shared_info.h (get_cygdrive_prefixes): Remove method.
* shared_info.h (get_cygdrive_info): New method.
* include/cygwin/version.h: Bump minor API version due to adding
CW_GET_CYGDRIVE_INFO to cygwin_internal.
* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_GET_CYGDRIVE_INFO.
dynamically so that mkgroup works on 9x/ME as well.
Use corresponding function pointers throughout.
(usage): Change to `int'. Change text to be conformant to mkpasswd.
(main): Use `getlongopt' to process options.
Special handling to create a group entry on 9x/ME.
* mkpasswd.c (load_netapi): New function to load netapi32.dll functions
dynamically so that mkpasswd works on 9x/ME as well.
Use corresponding function pointers throughout.
(usage): Change to `int'. Change text to be conformant to mkgroup.
(main): Use `getlongopt' to process options.
Special handling to create a passwd entry on 9x/ME.
Change conditional to create an entry for the local administrators
group when appropriate.
(dll_crt0_1): Move sigthread lock initialization to earlier in startup.
* exceptions.cc (interrupt_on_return): Remove previous kludgy attempt to detect
an invalid frame.
(call_handler): Eliminate inner for loop. Grab signal critical section lock
where appropriate.
* sigproc.cc (proc_subproc): Restore uid setting.
* sigproc.h (sigthread): Reinstitute sigthread lock as a critical section.
(sigframe): Grab the sigthread lock before clearing frame to avoid having the
signal thread use an invalid frame.
(dist:) Rename to srcdist. Create new dist target to call
srcdist and bindist targets.
(srcdist:) New target.
(clean-top:) add call to mostlyclean-top and add rm of distribution
tarballs.
* lib/Makefile.in: (uninstall:) modify to remove files from the
new w32api subdirectory and to remove w32api subdirectory.
(xuninstall:) Ditto.
TODO: Add a task to redo the clean targets of Makefile.in