mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-01 11:14:55 +00:00
Fix the MS-Windows build after 2011-02-26T05:54:36Z!eggert@cs.ucla.edu.
emacsclient.c (xstrdup) [WINDOWSNT]: Function added back. (w32_getenv): Use xstrdup to return all values in malloc'ed storage.
This commit is contained in:
parent
ae3f8fbfc3
commit
a54af40e14
@ -1,3 +1,9 @@
|
||||
2011-02-26 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* emacsclient.c (xstrdup) [WINDOWSNT]: Function added back.
|
||||
(w32_getenv): Use xstrdup to return all values in malloc'ed
|
||||
storage.
|
||||
|
||||
2011-02-26 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* ebrowse.c (parse_qualified_param_ident_or_type): Make it clear
|
||||
|
@ -293,6 +293,20 @@ get_current_dir_name (void)
|
||||
|
||||
#ifdef WINDOWSNT
|
||||
|
||||
/* Like strdup but get a fatal error if memory is exhausted. */
|
||||
|
||||
char *
|
||||
xstrdup (const char *s)
|
||||
{
|
||||
char *result = strdup (s);
|
||||
if (result == NULL)
|
||||
{
|
||||
perror ("strdup");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#define REG_ROOT "SOFTWARE\\GNU\\Emacs"
|
||||
|
||||
/* Retrieve an environment variable from the Emacs subkeys of the registry.
|
||||
@ -328,9 +342,11 @@ w32_get_resource (HKEY predefined, char *key, LPDWORD type)
|
||||
/*
|
||||
getenv wrapper for Windows
|
||||
|
||||
This is needed to duplicate Emacs's behavior, which is to look for environment
|
||||
variables in the registry if they don't appear in the environment.
|
||||
*/
|
||||
Value is allocated on the heap, and can be free'd.
|
||||
|
||||
This is needed to duplicate Emacs's behavior, which is to look for
|
||||
environment variables in the registry if they don't appear in the
|
||||
environment. */
|
||||
char *
|
||||
w32_getenv (char *envvar)
|
||||
{
|
||||
@ -338,15 +354,16 @@ w32_getenv (char *envvar)
|
||||
DWORD dwType;
|
||||
|
||||
if (value = getenv (envvar))
|
||||
/* Found in the environment. */
|
||||
return value;
|
||||
/* Found in the environment. strdup it, because values returned
|
||||
by getenv cannot be free'd. */
|
||||
return xstrdup (value);
|
||||
|
||||
if (! (value = w32_get_resource (HKEY_CURRENT_USER, envvar, &dwType)) &&
|
||||
! (value = w32_get_resource (HKEY_LOCAL_MACHINE, envvar, &dwType)))
|
||||
{
|
||||
/* "w32console" is what Emacs on Windows uses for tty-type under -nw. */
|
||||
if (strcmp (envvar, "TERM") == 0)
|
||||
return "w32console";
|
||||
return xstrdup ("w32console");
|
||||
/* Found neither in the environment nor in the registry. */
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user