Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2006-02-10 20:22:34 +0300
committerChristopher Faylor <me@cgf.cx>2006-02-10 20:22:34 +0300
commit9a08fd5a50ae8a34abe8db0b8983d86d74491665 (patch)
treefe2c6e75e31b670d1e740fd2d7f502dae0e0b2f7
parent2bf61bfe9b48cedfa558483f08891ede634b4dce (diff)
* external.cc (sync_winenv): Rename from "setup_winenv". Use same mechanism as
spawn to determine environment variables which should be converted back to windows form. (cygwin_internal): Reflect setup_winenv -> sync_winenv name change. * include/sys/cygwin.h: Ditto.
-rw-r--r--winsup/cygwin/ChangeLog30
-rw-r--r--winsup/cygwin/external.cc38
-rw-r--r--winsup/cygwin/include/sys/cygwin.h2
3 files changed, 45 insertions, 25 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 20260ddcd..824de565e 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,11 @@
+2006-02-10 Christopher Faylor <cgf@timesys.com>
+
+ * external.cc (sync_winenv): Rename from "setup_winenv". Use same
+ mechanism as spawn to determine environment variables which should be
+ converted back to windows form.
+ (cygwin_internal): Reflect setup_winenv -> sync_winenv name change.
+ * include/sys/cygwin.h: Ditto.
+
2006-02-09 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Only set
@@ -6,21 +14,21 @@
2006-02-07 Corinna Vinschen <corinna@vinschen.de>
- * dtable.cc (handle_to_fn): Accomodate new argument order in call to
+ * dtable.cc (handle_to_fn): Accommodate new argument order in call to
sys_wcstombs.
* fhandler_disk_file.cc (fhandler_disk_file::readdir): Call sys_wcstombs
- instead of just wcstombs to accomodate OEM codepages.
+ instead of just wcstombs to accommodate OEM codepages.
* miscfuncs.cc (sys_wcstombs): Split len argument in source and target
length. Always 0-terminate result in target string.
* security.cc (lsa2wchar): Remove unused function.
(lsa2str): Ditto.
(get_lsa_srv_inf): Ditto.
- (get_logon_server): Accomodate new argument order in call to
+ (get_logon_server): Accommodate new argument order in call to
sys_wcstombs.
(get_user_groups): Ditto.
(get_user_local_groups): Ditto.
(get_priv_list): Call sys_wcstombs directly instead of lsa2str.
- * uinfo.cc (cygheap_user::ontherange): Accomodate new argument order
+ * uinfo.cc (cygheap_user::ontherange): Accommodate new argument order
in call to sys_wcstombs.
* winsup.h (sys_wcstombs): Change prototype to match new argument order.
@@ -75,19 +83,19 @@
2006-02-05 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (struct parse_thing): Add transparent_exe option.
- * fhandler_disk_file.cc (fhandler_disk_file::link): Accomodate
+ * fhandler_disk_file.cc (fhandler_disk_file::link): Accommodate
transparent_exe option. Add .exe suffix for links to executable files,
if transparent_exe is set.
* fhandler_process.cc (fhandler_process::fill_filebuf): Remove .exe
suffix if transparent_exe option is set.
- * path.cc (symlink_worker): Accomodate transparent_exe option.
+ * path.cc (symlink_worker): Accommodate transparent_exe option.
(realpath): Don't tack on .exe suffix if transparent_exe is set.
* syscalls.cc (transparent_exe): New global variable.
- (unlink): Accomodate transparent_exe option.
+ (unlink): Accommodate transparent_exe option.
(open): Ditto.
(link): Ditto.
(rename): Ditto. Maybe add .exe suffix when renaming executable files.
- (pathconf): Accomodate transparent_exe option.
+ (pathconf): Accommodate transparent_exe option.
* winsup.h: Declare transparent_exe.
2006-02-05 Christopher Faylor <cgf@timesys.com>
@@ -284,7 +292,7 @@
and readdir_9x.
* fhandler_disk_file.cc (path_conv::hasgood_inode): New method to
evaluate if a filesystem has reliable inode numbers.
- (fhandler_base::fstat_by_handle): Accomodate structure member name
+ (fhandler_base::fstat_by_handle): Accommodate structure member name
change from IndexNumber to FileId.
(fhandler_base::fstat_helper): Call hasgood_inode here.
(fhandler_disk_file::opendir): Call fhaccess only for real files.
@@ -299,7 +307,7 @@
(fhandler_disk_file::readdir): Move old functionality to readdir_9x.
Call readdir_9x when on 9x/Me. Implement NT specific readdir here.
(fhandler_disk_file::readdir_9x): Move 9x specific readdir here.
- (fhandler_disk_file::seekdir): Accomodate new NT readdir method.
+ (fhandler_disk_file::seekdir): Accommodate new NT readdir method.
(fhandler_disk_file::closedir): Ditto.
(fhandler_cygdrive::fstat): Set d_ino to namehash. Add comment.
(fhandler_cygdrive::opendir): Call get_namehash to prepare later
@@ -320,7 +328,7 @@
* wincap.cc: Implement above element throughout.
* winsup.h (readdir_get_ino): Add declaration.
* include/sys/dirent.h (struct dirent): Slightly rename structure
- members to accomodate changes.
+ members to accommodate changes.
Remove __USE_EXPENSIVE_CYGWIN_D_INO handling and declaration of
__opendir_with_d_ino.
diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc
index 3e593e418..71b790c50 100644
--- a/winsup/cygwin/external.cc
+++ b/winsup/cygwin/external.cc
@@ -137,21 +137,33 @@ check_ntsec (const char *filename)
/* Copy cygwin environment variables to the Windows environment. */
static void
-setup_winenv ()
+sync_winenv ()
{
- char **envp = __cygwin_environ;
- char *var, *val;
- char dummy;
+ int unused_envc;
+ char *envblock = NULL;
+ char **envp = build_env (__cygwin_environ, envblock, unused_envc, false);
+ char *p = envblock;
- while (envp && *envp)
+ if (envp)
{
- var = strdup (*envp++);
- val = strchr (var, '=');
- *val++ = '\0';
- if (!GetEnvironmentVariable (var, &dummy, 1))
- SetEnvironmentVariable (var, val);
- free (var);
+ for (char **e = envp; *e; e++)
+ cfree (*e);
+ cfree (envp);
}
+ if (!p)
+ return;
+ while (*p)
+ {
+ char *eq = strchr (p, '=');
+ if (eq)
+ {
+ *eq = '\0';
+ SetEnvironmentVariable (p, ++eq);
+ p = eq;
+ }
+ p = strchr (p, '\0') + 1;
+ }
+ free (envblock);
}
extern "C" unsigned long
@@ -333,8 +345,8 @@ cygwin_internal (cygwin_getinfo_types t, ...)
error_start_init (va_arg (arg, const char *));
try_to_debug ();
break;
- case CW_SETUP_WINENV:
- setup_winenv ();
+ case CW_SYNC_WINENV:
+ sync_winenv ();
return 0;
default:
break;
diff --git a/winsup/cygwin/include/sys/cygwin.h b/winsup/cygwin/include/sys/cygwin.h
index 0e177e9a0..1380194fb 100644
--- a/winsup/cygwin/include/sys/cygwin.h
+++ b/winsup/cygwin/include/sys/cygwin.h
@@ -86,7 +86,7 @@ typedef enum
CW_ARGV,
CW_ENVP,
CW_DEBUG_SELF,
- CW_SETUP_WINENV
+ CW_SYNC_WINENV
} cygwin_getinfo_types;
#define CW_NEXTPID 0x80000000 /* or with pid to get next one */