summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dcrt0.cc
Commit message (Collapse)AuthorAgeFilesLines
...
* * acconfig.h: Add support for NEWVFORK.Christopher Faylor2000-07-161-1/+6
| | | | | | | | | * config.h.in: Ditto. * configure.in: Add --enable-vfork option. * configure: Regenerate. * dcrt0.cc (quoted): Detect and fix up quoted backslashes. * sigproc.cc (proc_subproc): Correctly name handle of newly added child process to avoid erroneous debugging messages about closing the wrong handle.
* * spawn.cc (spawn_guts): Use \ for quoting '"'.Christopher Faylor2000-07-161-12/+18
| | | | * dcrt0.cc (quoted): Understand \ quoting for '"'.
* Slightly more efficient version of previous change.Christopher Faylor2000-07-161-1/+1
|
* * dcrt0.cc (build_argv): Strip quotes from argv[0] since it should never beChristopher Faylor2000-07-161-1/+1
| | | | globified.
* * hinfo.cc (hinfo::linearize_fd_array): Make max_used_fd an int so that we canChristopher Faylor2000-07-151-19/+17
| | | | | | | | | | | | | | | | | | | | detect when there are no fds to pass. * dcrt0.cc (host_dependent_constants::init): Revert Sat Mar 18 01:32:04 2000 change. (dll_crt0_1): Set "cygwin_finished_initializing" flag. (dll_crt0): Don't perform memcpy if uptr is already set to internal structure. (_dll_crt0): Remember location of programs envptr. * dll_init.h (per_module, dll, dll_list): Revamp. * dll_init.cc: Revamp. Use new classes. * fork.cc (fork): Use new revamped dll, dll_list, and per_module stuff. * environ.cc: Use __cygwin_environ throughout rather than the user_data->envptr. * exec.cc: Ditto. * spawn.cc: Ditto. * winsup.h: Declare update_envptrs, cygwin_finished_initializing. * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Revert previous change. * lib/cygwin_attach_dll.cc (cygwin_attach_dll): Always pass in own per_process structure or we end up overwriting information from the main program.
* * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Don't reset environ ifChristopher Faylor2000-07-121-1/+1
| | | | already set.
* * dcrt0.cc (__cygwin_user_data): Initialize.Christopher Faylor2000-07-051-35/+40
| | | | | | | | | | | | | | | | | | | | | (dll_crt0_1): Eliminate user_data initialization. (dll_crt0): Set up impure_ptr_ptr for older executables. (cygwin_dll_init): Eliminate user_data initializations. (__api_fatal): Don't check for user_data initialization. * dll_init.cc (struct dll): Store entire contents of per_process rather than just a pointer. (add): Ditto. (initOneDll): Don't check for user_data initialization. (DllList::recordDll): Store contents of per_process argument. (DllList::detachDll): Pass address of per_process field. (DllList::initAll): Ditto. (DllList::doGlobalDestructorsOfDlls): Ditto. (DllListIterator::operator *): Ditto. (dll_dllcrt0): Default to __cygwin_user_data if arg is NULL. * include/sys/cygwin.h: Reorganize per_process to eliminate obsolete fields and accomodate new way of initializing. * lib/_cygwin_crt0_common: Initialize _impure_ptr from __cygwin_user_data.impure_ptr.
* * dcrt0.cc (dll_crt0_1): Eliminate SetFileApisToOEM and CharToOem.Christopher Faylor2000-07-041-13/+2
| | | | | | | | | | * (dummy_autoload): Add functions used in fhandler_console. * fhandler_console.cc (fhandler_console::read): Use ENCHANCED_KEY flag to distinguish extended keys. Translate an input character from the OEM code page to the ANSI code page. * (fhandler_console::write_normal): Translate output characters from the ANSI code page to the OEM code page. * syscalls.cc (_link): Use MultiByteToWideChar instead of OemToCharW.
* Revert errnoneous commit.Christopher Faylor2000-07-031-3/+3
|
* * exceptions.cc (stack_info::walk): Use method to find offset.Christopher Faylor2000-07-031-3/+3
| | | | | | | | (handle_exceptions): Be more assertive in finding ebp for use under W2K. Create a dummy stack frame for cases where program is dying and a stack dump is being output. (sig_handle): Fill out a GetThreadContext for use with a user-generated "core dump".
* * dcrt0.cc (user32_init): Add primitive guard against concurrent attempts toChristopher Faylor2000-07-031-3/+25
| | | | | | call this function. Also add temporary debugging code to display a message if the function is called multiple times. (api32_init): Ditto.
* * dcrt0.cc (_dll_crt0): Renamed from dll_crt0 ().Christopher Faylor2000-07-011-3/+3
| | | | | | * winsup.h: Accomodate above change. * cygwin.din: Ditto. * lib/cygwin_crt0.c: Ditto.
* * Makefile.in: Use variables rather than configure constructs whereChristopher Faylor2000-07-011-14/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | appropriate. (LIBCOS): Find additional stub library stuff in their own subdirectory. * dcrt0.cc: Convert user_data pointer to static __cygwin_user_data area. (do_global_ctors): Check magic_bisquit for initialization. (dll_crt0_1): First group of premain functions prior to fd initialization. Run second group before calling main. (dll_crt0 ()): New function, called from new initialization code. (dll_crt0 (per_process *uptr)): Call new dll_crt0 () function on initialization. * debug.cc (thread_stub): Initialize bottom of stack with per-thread info. * environ.cc (parse_thing): Use binmode global to control CYGWIN=binmode behavior. * fhandler.cc (fhandler_base::open): Allow explicit setting of __fmode to O_BINARY or O_TEXT to override disk mount settings. * libcmain.cc: Move to lib subdirectory. * libccrt0.cc: Ditto. * dll_main.cc: Ditto. * dll_entry.cc: Ditto. * getopt.c: Ditto. * thread.cc (thread_init_wrapper): Call ExitThread explicitly rather than returning, as a preliminary step towards placing per thread info at the bottom of the stack. * winsup.h: Move per_process class to include/sys/cygwin.h. Declare new dll_crt0(). * include/cygwin/version.h: Bump API minor version. * binmode.c: New file. * textmode.c: Ditto. * lib/_cygwin_crt0_common.cc: Ditto. * lib/crt0.h: Ditto. * lib/cygwin_attach_dll.c: Ditto. * lib/cygwin_crt0.c: Ditto. * lib/dll_entry.cc: Ditto. * lib/dll_main.cc: Ditto. * lib/getopt.c: Ditto. * lib/libcmain.c: Ditto. * lib/premain0.c: Ditto. * lib/premain1.c: Ditto. * lib/premain2.c: Ditto. * lib/premain3.c: Ditto.
* * dcrt0.cc: Add load statements for `GetSidIdentifierAuthority'Corinna Vinschen2000-06-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | and `RegLoadKeyA'. * registry.cc (get_registry_hive_path): New function. (load_registry_hive): Ditto. * security.cc (convert_sid_to_string_sid): New function. (get_ssid): Renamed to `convert_string_sid_to_sid'. (get_pw_sid): Call `convert_string_sid_to_sid' instead of `get_ssid'. (get_gr_sid): Ditto. (get_admin_sid): Ditto. (get_system_sid): Ditto. (get_creator_owner_sid): Ditto. (get_world_sid): Ditto. * shared.h: New prototypes for `get_registry_hive_path' and `load_registry_hive'. * spawn.cc (spawn_guts): Set child->psid to NULL to force calling `internal_getlogin' from child process in case of changing user context. Call `load_registry_hive' in case of changing user context. (_spawnve): Copy user infos only if user context remains the same. * uinfo.cc: Add load statement for `NetUserGetInfo'. Remove load statement for `NetGetDCName'. (internal_getlogin): Rewrite to speed up process startup and to correct user environment in case user context changes. (uinfo_init): Call internal_getlogin only if myself->psid is NULL, that is user context changes. * winsup.h: Add prototypes for `convert_sid_to_string_sid', `convert_string_sid_to_sid' and `get_pw_sid'.
* * cygwin.din: Define symbols for `cygwin_logon_user' andCorinna Vinschen2000-06-161-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `cygwin_set_impersonation_token'. * dcrt0.cc (dll_crt0_1): Eliminate superfluous conditional statements. Add load statements for `ImpersonateLoggedOnUser', `LogonUserA' and `RevertToSelf'. * fork.cc (fork): Care for correct impersonation of parent and child process. * security.cc (cygwin_set_impersonation_token): New function. (cygwin_logon_user): Ditto. shared.h (class pinfo): New members `orig_uid', `orig_gid', `real_uid' nad `real_gid'. spawn.cc (spawn_guts): Care for impersonation when starting child process in a different user context. * syscalls.cc (setgid): Call `setegid' now. Set real_gid. (setuid): Call `seteuid' now. Set real_uid. (seteuid): Functionality moved from setuid to here. Care for correct impersonation. (setegid): Functionality moved from setgid to here. * uinfo.cc (uinfo_init): Initialization of additional pinfo members. (getuid): Return real uid. (getgid): Return real gid. (geteuid): Return effective uid. (getegid): Return effective gid. include/sys/cygwin.h: Add prototypes for `cygwin_logon_user' and `cygwin_set_impersonation_token'. include/cygwin/version.h: Bumb API minor version to 22.
* * cygwin.din: add cygwin_dll_initDJ Delorie2000-06-081-0/+44
| | | | | | * dcrt0.cc (cygwin_dll_init): new (dll_crt0_1): short circuit if manually loaded * path.cc (mount_info::init): don't init if manually loaded
* * exceptions.cc: Remove unneeded include.Christopher Faylor2000-06-011-13/+18
| | | | | | * dcrt0.cc: Wrap LoadDLLfunc stuff in dummy function. * init.cc: Ditto. * uinfo.cc: Ditto.
* * dcrt0.cc: Use LoadDLLfuncEx for loading Crypto API functionsCorinna Vinschen2000-05-311-3/+3
| | | | with parameter `notimp' set to 1.
* * Makefile.in: Remove libadvapi32.a.Christopher Faylor2000-05-301-38/+116
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * autoload.h: Add additional field to autoload block for handling unimplemented functions. (LoadDLLfuncEx): New function which accepts additional parameter for controlling unimplemented function behavior. (LoadDLLfunc): Use LoadDLLfuncEx. * dcrt0.cc: Use new arguments for LoadDLLfunc. Add advapi32 routines. (noload): Rewrite in assembler. Handle new unimplemented function type. * exceptions.cc: Eliminate another vestige of StackWalk stuff. * net.cc: Use new arguments for LoadDLLfunc. * uinfo.cc: Ditto. * config.h.in: Remove obsolete define. * path.h (isdrive): New macro. * dcrt0.cc (globify): Use new macro to determine if a string refers to an MS-DOS drive. * environ.cc (winenv): Ditto. * spawn.cc (find_exec): Ditto. * path.cc (get_raw_device_number): Ditto. (mount_info::conv_to_posix_path): Ditto. (chdir): Ditto. (cygwin_posix_path_list_p): Ditto. (cygwin_split_path): Ditto. (path_conv::check): Move tmp_buf to beginning of function since it can be used earlier in the loop. Use tmp_buf rather than 'root' to hold root information. (mount_info::conv_to_win32_path): Add trailing slash to end of mount path when it translates to a drive. Add defensive code to avoid writing beyond the end of 'dst'.
* * dcrt0.cc (dll_crt0_1): Move uinfo_init call to before sigproc_init to avoid aChristopher Faylor2000-05-221-12/+10
| | | | | | | race. (noload): Add an extra argument for debugging. * uinfo.cc (uinfo_init): Eliminate test for multiple calls. (getlogin): Assume that uinfo_init has already been called.
* * Makefile.in: Remove external.h dependency.Christopher Faylor2000-05-181-0/+7
| | | | | * dcrt0.cc (sigthread::init): Move here from sigproc.h. * sigproc.h (sigthread): Move init to dcrt0.cc.
* * dcrt0.cc (dll_crt0_1): Initialize mainthread stuff here before anything needsChristopher Faylor2000-05-181-0/+5
| | | | | | | | it. * sigproc.cc (sigproc_init): Move mainthread initialization out of here. * sigproc.h (sigthread): Add init() method. (sigframe): Don't try to initialize muto. * sync.cc: Undef WaitForSingleObject to avoid recursion.
* * path.cc (mount_info::cygdrive_posix_path): Don't add trailing slash ifChristopher Faylor2000-05-171-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | referring to something like c:\. * dcrt0.cc (dll_crt0_1): Move uinfo initialization prior to sig_send initialization to give signal thread a chance to finish. * debug.cc (WFSO): Move to sigproc.cc (WFMO): Ditto. * exceptions.cc (interruptible): Allocate slightly more space for directory just for paranoia's sake. (call_handler): Eliminate nonmain argument. Determine if main thread has set a frame pointer and use it if so. (sig_handle): Eliminate nonmain argument. * net.cc: Record frame information in appropriate routines throughout. * select.cc (select): Ditto. * sigproc.cc: Use sigthread structure to record mainthread id throughout. (sig_send): Record frame information for signal handler. (wait_sig): Reflect argument change in sig_handle. (WFSO): Move here and record frame information for signal handler. (WFMO): Ditto. * sigproc.h: Implement new "sigthread" class. Implement "sigframe" class for manipulating signal frame info. * thread.cc (__pthread_kill): Use standard _kill() function rather than calling sig_send directly. * winsup.h: Eliminate ebp element from signal_dispatch class.
* * dcrt0.cc (build_argv): Remove unneeded variable.Christopher Faylor2000-05-131-1/+0
| | | | | | | | * select.cc (peek_pipe): Don't check for "ready" if it's already set. (peek_console): Ditto. (peek_serial): Ditto. (peek_socket): Ditto. (peek_windows): Ditto.
* * dcrt0.cc (insert_file): Eliminate unused parameter.Christopher Faylor2000-05-071-2/+2
| | | | | | | | | | (build_argv): Ditto. * exceptions.cc (stack): Eliminate unused parameters. (stackdump): Ditto. (cygwin_stackdump): Reflect above changes. (sig_handle): Ditto. * fhandler.cc (fhandler_base::set_inheritance): Use kludge to avoid unused parameter warning.
* * dcrt0.cc: Add dynamic load code for `OemToCharA' from user32.dll.Corinna Vinschen2000-05-021-0/+1
| | | | | * security.cc (read_sd): Call `OemToCharA' to make `GetFileSecurity' happy on filenames with umlauts.
* * dcrt0.cc (globify): Don't use \ quoting when apparently quoting a DOS pathChristopher Faylor2000-04-181-3/+1
| | | | spec, even within a quoted string.
* * dcrt0.cc (globify): Don't use \ quoting when apparently quoting a DOS pathChristopher Faylor2000-04-181-1/+7
| | | | spec.
* * dcrt0.cc (insert_file): Avoid freeing previously allocated argument list.Christopher Faylor2000-04-131-8/+3
| | | | | | | | | | * path.cc (symlink_info::check): Rename from symlink_check_one. Use new symlink_info struct for communication. (path_conv::path_conv): Use symlink_info structure for communication with symlink_info::check. Fix typo which resulted in symbolic links always being resolved. (readlink): Use stat_suffixes array when resolving a link. * syscalls.cc (stat_suffixes): Make global.
* * Makefile.in: Use default rules when compiling cygrun.o.Christopher Faylor2000-03-281-0/+2
| | | | | | | | * dcrt0.cc (host_dependent_constants::init): Limit non-NT platforms to 32K chunks when copying regions during a fork. * path.cc (symlink_check_one): Add temporary debugging output. Simplify PATH_EXEC test. * syscalls.cc (stat_suffixes): Null terminate this list.
* * environ.cc: Add TMPDIR to the list of environment variables which areChristopher Faylor2000-03-251-1/+1
| | | | | | converted to POSIX format. * sigproc.cc (proc_terminate): Don't attempt to delete when a muto pointer is NULL.
* * dcrt0.cc (host_dependent_constants::init): Eliminate DELETE flag from sharedChristopher Faylor2000-03-181-1/+1
| | | | constant.
* * security.cc (set_process_privileges): Removed `static'.Corinna Vinschen2000-03-161-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (get_nt_attribute): Returns uid and gid additionally. Removed call to set_process_privileges(). (get_file_attribute): Returns uid and gid additionally. Don't call ntea if ntsec is ON. (set_nt_attribute): Removed call to set_process_privileges(). Don't call ntea if ntsec is ON. (acl): Removed call to set_process_privileges(). * dcrt0.cc (dll_crt0_1): Calls set_process_privileges() now. * winsup.h: New prototype for set_process_privileges(), changed prototype for get_file_attribute(). * fhandler.cc (get_file_owner): Discarded. (get_file_group): Ditto. (fhandler_disk_file::fstat): Discard calls to get_file_owner() and get_file_group(). * path.cc (path_conv::path_conv): Added debugging output for result of GetVolumeInformation(). (mount_info::conv_to_win32_path): Call backslashify() with pathbuf instead of src_path. * syscalls.cc (chown): Reformatted. (chmod): Replace get_file_owner() and get_file_group() calls by a call to get_file_attribute(). Discard local variable has_acls. Slightly reformatted. (stat_worker): Replaced idiot's (it's me) root dir check by call to rootdir(). Don't call num_entries() on remote drives. Discard local variable has_acls.
* * dcrt0.cc (set_os_type): Record OS name string.Christopher Faylor2000-02-281-44/+22
| | | | | | | | | | | | | | | | | | (getprogname): Eliminate obsolete function. (dll_crt0_1): Move initial strace initialization output to set_myself. * exceptions.cc (interruptible): Add debugging output. (interrupt_setup): New function. (interrupt_now): Use interrupt_setup to set up common interrupt handler stuff. (interrupt_on_return): Ditto. (call_handler): Move signal_arrived arm and clear threads to region where signalled thread is suspended or suffer races. * pinfo.cc (set_myself): Output interesting information when strace is first initialized. Initialize progname here. * sigproc.cc (sig_dispatch_pending): Modify to ensure that flush signal are sent synchronously. * strace.cc (strace_vsprintf): Move code into strace program. * uname.cc (uname): Use 'osname' global to construct cygwin name + Windows type + version.
* Respond to a multitude of g++ warnings.Christopher Faylor2000-02-211-7/+7
|
* import winsup-2000-02-17 snapshotChristopher Faylor2000-02-171-0/+1063