sh: Add stsavestr(), like savestr() but allocates using stalloc().

This commit is contained in:
Jilles Tjoelker 2015-02-15 21:41:29 +00:00
parent 51492908f9
commit a4652c280b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=278818
4 changed files with 16 additions and 12 deletions

View File

@ -182,7 +182,6 @@ cdlogical(char *dest)
struct stat statb;
int first;
int badstat;
size_t len;
/*
* Check each component of the path. If we find a symlink or
@ -190,9 +189,7 @@ cdlogical(char *dest)
* next time we get the value of the current directory.
*/
badstat = 0;
len = strlen(dest);
cdcomppath = stalloc(len + 1);
memcpy(cdcomppath, dest, len + 1);
cdcomppath = stsavestr(dest);
STARTSTACKSTR(p);
if (*dest == '/') {
STPUTC('/', p);
@ -277,7 +274,6 @@ findcwd(char *dir)
{
char *new;
char *p;
size_t len;
/*
* If our argument is NULL, we don't know the current directory
@ -286,9 +282,7 @@ findcwd(char *dir)
*/
if (dir == NULL || curdir == NULL)
return getpwd2();
len = strlen(dir);
cdcomppath = stalloc(len + 1);
memcpy(cdcomppath, dir, len + 1);
cdcomppath = stsavestr(dir);
STARTSTACKSTR(new);
if (*dir != '/') {
STPUTS(curdir, new);

View File

@ -1284,11 +1284,8 @@ addfname(char *name)
{
char *p;
struct strlist *sp;
size_t len;
len = strlen(name);
p = stalloc(len + 1);
memcpy(p, name, len + 1);
p = stsavestr(name);
sp = (struct strlist *)stalloc(sizeof *sp);
sp->text = p;
*exparg.lastp = sp;

View File

@ -180,6 +180,18 @@ stunalloc(pointer p)
}
char *
stsavestr(const char *s)
{
char *p;
size_t len;
len = strlen(s);
p = stalloc(len + 1);
memcpy(p, s, len + 1);
return p;
}
void
setstackmark(struct stackmark *mark)

View File

@ -52,6 +52,7 @@ void ckfree(pointer);
char *savestr(const char *);
pointer stalloc(int);
void stunalloc(pointer);
char *stsavestr(const char *);
void setstackmark(struct stackmark *);
void popstackmark(struct stackmark *);
char *growstackstr(void);