mirror of git://git.code.sf.net/p/zsh/code
30351 + 30352: metafy strings on import into zsh variables
This commit is contained in:
parent
afa112474c
commit
a76c8de44c
|
@ -1,3 +1,9 @@
|
|||
2012-03-13 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 30351 changed as in 30352: Src/params.c, Src/utils.c: metafy
|
||||
scalar and array parameter values as they are imported from
|
||||
strings defined outside zsh.
|
||||
|
||||
2012-03-07 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* users/16865: Doc/Zsh/cond.yo: note that -eq and friends are
|
||||
|
@ -16094,5 +16100,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.5607 $
|
||||
* $Revision: 1.5608 $
|
||||
*****************************************************
|
||||
|
|
34
Src/params.c
34
Src/params.c
|
@ -698,16 +698,18 @@ createparamtable(void)
|
|||
* So allow the user to set it in the special cases where it's
|
||||
* useful.
|
||||
*/
|
||||
setsparam("TMPPREFIX", ztrdup(DEFAULT_TMPPREFIX));
|
||||
setsparam("TIMEFMT", ztrdup(DEFAULT_TIMEFMT));
|
||||
setsparam("WATCHFMT", ztrdup(default_watchfmt));
|
||||
setsparam("TMPPREFIX", ztrdup_metafy(DEFAULT_TMPPREFIX));
|
||||
setsparam("TIMEFMT", ztrdup_metafy(DEFAULT_TIMEFMT));
|
||||
setsparam("WATCHFMT", ztrdup_metafy(default_watchfmt));
|
||||
|
||||
hostnam = (char *)zalloc(256);
|
||||
gethostname(hostnam, 256);
|
||||
setsparam("HOST", ztrdup(hostnam));
|
||||
setsparam("HOST", ztrdup_metafy(hostnam));
|
||||
zfree(hostnam, 256);
|
||||
|
||||
setsparam("LOGNAME", ztrdup((str = getlogin()) && *str ? str : cached_username));
|
||||
setsparam("LOGNAME",
|
||||
ztrdup_metafy((str = getlogin()) && *str ?
|
||||
str : cached_username));
|
||||
|
||||
#if !defined(HAVE_PUTENV) && !defined(USE_SET_UNSET_ENV)
|
||||
/* Copy the environment variables we are inheriting to dynamic *
|
||||
|
@ -778,22 +780,22 @@ createparamtable(void)
|
|||
if(uname(&unamebuf)) setsparam("CPUTYPE", ztrdup("unknown"));
|
||||
else
|
||||
{
|
||||
machinebuf = ztrdup(unamebuf.machine);
|
||||
machinebuf = ztrdup_metafy(unamebuf.machine);
|
||||
setsparam("CPUTYPE", machinebuf);
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
setsparam("CPUTYPE", ztrdup("unknown"));
|
||||
setsparam("CPUTYPE", ztrdup_metafy("unknown"));
|
||||
#endif
|
||||
setsparam("MACHTYPE", ztrdup(MACHTYPE));
|
||||
setsparam("OSTYPE", ztrdup(OSTYPE));
|
||||
setsparam("TTY", ztrdup(ttystrname));
|
||||
setsparam("VENDOR", ztrdup(VENDOR));
|
||||
setsparam("ZSH_NAME", ztrdup(zsh_name));
|
||||
setsparam("ZSH_VERSION", ztrdup(ZSH_VERSION));
|
||||
setsparam("ZSH_PATCHLEVEL", ztrdup(ZSH_PATCHLEVEL));
|
||||
setsparam("MACHTYPE", ztrdup_metafy(MACHTYPE));
|
||||
setsparam("OSTYPE", ztrdup_metafy(OSTYPE));
|
||||
setsparam("TTY", ztrdup_metafy(ttystrname));
|
||||
setsparam("VENDOR", ztrdup_metafy(VENDOR));
|
||||
setsparam("ZSH_NAME", ztrdup_metafy(zsh_name));
|
||||
setsparam("ZSH_VERSION", ztrdup_metafy(ZSH_VERSION));
|
||||
setsparam("ZSH_PATCHLEVEL", ztrdup_metafy(ZSH_PATCHLEVEL));
|
||||
setaparam("signals", sigptr = zalloc((SIGCOUNT+4) * sizeof(char *)));
|
||||
for (t = sigs; (*sigptr++ = ztrdup(*t++)); );
|
||||
for (t = sigs; (*sigptr++ = ztrdup_metafy(*t++)); );
|
||||
|
||||
noerrs = 0;
|
||||
}
|
||||
|
|
22
Src/utils.c
22
Src/utils.c
|
@ -4012,6 +4012,28 @@ metafy(char *buf, int len, int heap)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* Duplicate a string, metafying it as we go.
|
||||
*
|
||||
* Typically, this is used only for strings imported from outside
|
||||
* zsh, as strings internally are either already metafied or passed
|
||||
* around with an associated length.
|
||||
*/
|
||||
/**/
|
||||
mod_export char *
|
||||
ztrdup_metafy(const char *s)
|
||||
{
|
||||
/* To mimic ztrdup() behaviour */
|
||||
if (!s)
|
||||
return NULL;
|
||||
/*
|
||||
* metafy() does lots of different things, so the pointer
|
||||
* isn't const. Using it with META_DUP should be safe.
|
||||
*/
|
||||
return metafy((char *)s, -1, META_DUP);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Take a null-terminated, metafied string in s into a literal
|
||||
* representation by converting in place. The length is in *len
|
||||
|
|
Loading…
Reference in New Issue