mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-02 10:01:11 +02:00
12846: moved simple string manipulation functions to string.c
This commit is contained in:
parent
3ce3caeec6
commit
946085efa5
6 changed files with 141 additions and 108 deletions
|
@ -1,5 +1,9 @@
|
||||||
2000-09-19 Clint Adams <schizo@debian.org>
|
2000-09-19 Clint Adams <schizo@debian.org>
|
||||||
|
|
||||||
|
* 12846: Src/.distfiles, Src/mem.c, Src/string.c, Src/utils.c,
|
||||||
|
Src/zsh.mdd: Move dupstring(), ztrdup(), tricat(), zhtricat(),
|
||||||
|
dyncat(), dupstrpfx(), ztrduppfx(), and appstr() to string.c.
|
||||||
|
|
||||||
* 12845: Src/Modules/files.c: dynamically allocate pbuf in domove().
|
* 12845: Src/Modules/files.c: dynamically allocate pbuf in domove().
|
||||||
|
|
||||||
2000-09-18 Andrej Borsenkow <Andrej.Borsenkow@mow.siemens.ru>
|
2000-09-18 Andrej Borsenkow <Andrej.Borsenkow@mow.siemens.ru>
|
||||||
|
|
|
@ -7,7 +7,7 @@ DISTFILES_SRC='
|
||||||
hist.c init.c input.c jobs.c lex.c linklist.c loop.c main.c makepro.awk
|
hist.c init.c input.c jobs.c lex.c linklist.c loop.c main.c makepro.awk
|
||||||
math.c mem.c mkbltnmlst.sh mkmakemod.sh mkmodindex.sh
|
math.c mem.c mkbltnmlst.sh mkmakemod.sh mkmodindex.sh
|
||||||
module.c options.c params.c parse.c pattern.c prompt.c prototypes.h
|
module.c options.c params.c parse.c pattern.c prompt.c prototypes.h
|
||||||
signals.c signals.h subst.c system.h text.c utils.c
|
signals.c signals.h string.c subst.c system.h text.c utils.c
|
||||||
watch.c xmods.conf zsh.h zsh.mdd ztype.h
|
watch.c xmods.conf zsh.h zsh.mdd ztype.h
|
||||||
zsh.rc zsh.ico
|
zsh.rc zsh.ico
|
||||||
'
|
'
|
||||||
|
|
26
Src/mem.c
26
Src/mem.c
|
@ -506,32 +506,6 @@ zrealloc(void *ptr, size_t size)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**/
|
|
||||||
mod_export char *
|
|
||||||
dupstring(const char *s)
|
|
||||||
{
|
|
||||||
char *t;
|
|
||||||
|
|
||||||
if (!s)
|
|
||||||
return NULL;
|
|
||||||
t = (char *) zhalloc(strlen((char *)s) + 1);
|
|
||||||
strcpy(t, s);
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**/
|
|
||||||
mod_export char *
|
|
||||||
ztrdup(const char *s)
|
|
||||||
{
|
|
||||||
char *t;
|
|
||||||
|
|
||||||
if (!s)
|
|
||||||
return NULL;
|
|
||||||
t = (char *)zalloc(strlen((char *)s) + 1);
|
|
||||||
strcpy(t, s);
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**/
|
/**/
|
||||||
#ifdef ZSH_MEM
|
#ifdef ZSH_MEM
|
||||||
|
|
||||||
|
|
135
Src/string.c
Normal file
135
Src/string.c
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
/*
|
||||||
|
* string.c - string manipulation
|
||||||
|
*
|
||||||
|
* This file is part of zsh, the Z shell.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2000 Peter Stephenson
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, without written agreement and without
|
||||||
|
* license or royalty fees, to use, copy, modify, and distribute this
|
||||||
|
* software and to distribute modified versions of this software for any
|
||||||
|
* purpose, provided that the above copyright notice and the following
|
||||||
|
* two paragraphs appear in all copies of this software.
|
||||||
|
*
|
||||||
|
* In no event shall Peter Stephenson or the Zsh Development Group be liable
|
||||||
|
* to any party for direct, indirect, special, incidental, or consequential
|
||||||
|
* damages arising out of the use of this software and its documentation,
|
||||||
|
* even if Peter Stephenson and the Zsh Development Group have been advised of
|
||||||
|
* the possibility of such damage.
|
||||||
|
*
|
||||||
|
* Peter Stephenson and the Zsh Development Group specifically disclaim any
|
||||||
|
* warranties, including, but not limited to, the implied warranties of
|
||||||
|
* merchantability and fitness for a particular purpose. The software
|
||||||
|
* provided hereunder is on an "as is" basis, and Peter Stephenson and the
|
||||||
|
* Zsh Development Group have no obligation to provide maintenance,
|
||||||
|
* support, updates, enhancements, or modifications.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "zsh.mdh"
|
||||||
|
|
||||||
|
/**/
|
||||||
|
mod_export char *
|
||||||
|
dupstring(const char *s)
|
||||||
|
{
|
||||||
|
char *t;
|
||||||
|
|
||||||
|
if (!s)
|
||||||
|
return NULL;
|
||||||
|
t = (char *) zhalloc(strlen((char *)s) + 1);
|
||||||
|
strcpy(t, s);
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**/
|
||||||
|
mod_export char *
|
||||||
|
ztrdup(const char *s)
|
||||||
|
{
|
||||||
|
char *t;
|
||||||
|
|
||||||
|
if (!s)
|
||||||
|
return NULL;
|
||||||
|
t = (char *)zalloc(strlen((char *)s) + 1);
|
||||||
|
strcpy(t, s);
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* concatenate s1, s2, and s3 in dynamically allocated buffer */
|
||||||
|
|
||||||
|
/**/
|
||||||
|
mod_export char *
|
||||||
|
tricat(char const *s1, char const *s2, char const *s3)
|
||||||
|
{
|
||||||
|
/* This version always uses permanently-allocated space. */
|
||||||
|
char *ptr;
|
||||||
|
size_t l1 = strlen(s1);
|
||||||
|
size_t l2 = strlen(s2);
|
||||||
|
|
||||||
|
ptr = (char *)zalloc(l1 + l2 + strlen(s3) + 1);
|
||||||
|
strcpy(ptr, s1);
|
||||||
|
strcpy(ptr + l1, s2);
|
||||||
|
strcpy(ptr + l1 + l2, s3);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**/
|
||||||
|
mod_export char *
|
||||||
|
zhtricat(char const *s1, char const *s2, char const *s3)
|
||||||
|
{
|
||||||
|
char *ptr;
|
||||||
|
size_t l1 = strlen(s1);
|
||||||
|
size_t l2 = strlen(s2);
|
||||||
|
|
||||||
|
ptr = (char *)zhalloc(l1 + l2 + strlen(s3) + 1);
|
||||||
|
strcpy(ptr, s1);
|
||||||
|
strcpy(ptr + l1, s2);
|
||||||
|
strcpy(ptr + l1 + l2, s3);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* concatenate s1 and s2 in dynamically allocated buffer */
|
||||||
|
|
||||||
|
/**/
|
||||||
|
mod_export char *
|
||||||
|
dyncat(char *s1, char *s2)
|
||||||
|
{
|
||||||
|
/* This version always uses space from the current heap. */
|
||||||
|
char *ptr;
|
||||||
|
size_t l1 = strlen(s1);
|
||||||
|
|
||||||
|
ptr = (char *)zhalloc(l1 + strlen(s2) + 1);
|
||||||
|
strcpy(ptr, s1);
|
||||||
|
strcpy(ptr + l1, s2);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**/
|
||||||
|
mod_export char *
|
||||||
|
dupstrpfx(const char *s, int len)
|
||||||
|
{
|
||||||
|
char *r = zhalloc(len + 1);
|
||||||
|
|
||||||
|
memcpy(r, s, len);
|
||||||
|
r[len] = '\0';
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**/
|
||||||
|
mod_export char *
|
||||||
|
ztrduppfx(const char *s, int len)
|
||||||
|
{
|
||||||
|
char *r = zalloc(len + 1);
|
||||||
|
|
||||||
|
memcpy(r, s, len);
|
||||||
|
r[len] = '\0';
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Append a string to an allocated string, reallocating to make room. */
|
||||||
|
|
||||||
|
/**/
|
||||||
|
mod_export char *
|
||||||
|
appstr(char *base, char const *append)
|
||||||
|
{
|
||||||
|
return strcat(realloc(base, strlen(base) + strlen(append) + 1), append);
|
||||||
|
}
|
80
Src/utils.c
80
Src/utils.c
|
@ -3437,86 +3437,6 @@ strsfx(char *s, char *t)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**/
|
|
||||||
mod_export char *
|
|
||||||
dupstrpfx(const char *s, int len)
|
|
||||||
{
|
|
||||||
char *r = zhalloc(len + 1);
|
|
||||||
|
|
||||||
memcpy(r, s, len);
|
|
||||||
r[len] = '\0';
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**/
|
|
||||||
mod_export char *
|
|
||||||
ztrduppfx(const char *s, int len)
|
|
||||||
{
|
|
||||||
char *r = zalloc(len + 1);
|
|
||||||
|
|
||||||
memcpy(r, s, len);
|
|
||||||
r[len] = '\0';
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Append a string to an allocated string, reallocating to make room. */
|
|
||||||
|
|
||||||
/**/
|
|
||||||
mod_export char *
|
|
||||||
appstr(char *base, char const *append)
|
|
||||||
{
|
|
||||||
return strcat(realloc(base, strlen(base) + strlen(append) + 1), append);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* concatenate s1, s2, and s3 in dynamically allocated buffer */
|
|
||||||
|
|
||||||
/**/
|
|
||||||
mod_export char *
|
|
||||||
tricat(char const *s1, char const *s2, char const *s3)
|
|
||||||
{
|
|
||||||
/* This version always uses permanently-allocated space. */
|
|
||||||
char *ptr;
|
|
||||||
size_t l1 = strlen(s1);
|
|
||||||
size_t l2 = strlen(s2);
|
|
||||||
|
|
||||||
ptr = (char *)zalloc(l1 + l2 + strlen(s3) + 1);
|
|
||||||
strcpy(ptr, s1);
|
|
||||||
strcpy(ptr + l1, s2);
|
|
||||||
strcpy(ptr + l1 + l2, s3);
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**/
|
|
||||||
mod_export char *
|
|
||||||
zhtricat(char const *s1, char const *s2, char const *s3)
|
|
||||||
{
|
|
||||||
char *ptr;
|
|
||||||
size_t l1 = strlen(s1);
|
|
||||||
size_t l2 = strlen(s2);
|
|
||||||
|
|
||||||
ptr = (char *)zhalloc(l1 + l2 + strlen(s3) + 1);
|
|
||||||
strcpy(ptr, s1);
|
|
||||||
strcpy(ptr + l1, s2);
|
|
||||||
strcpy(ptr + l1 + l2, s3);
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* concatenate s1 and s2 in dynamically allocated buffer */
|
|
||||||
|
|
||||||
/**/
|
|
||||||
mod_export char *
|
|
||||||
dyncat(char *s1, char *s2)
|
|
||||||
{
|
|
||||||
/* This version always uses space from the current heap. */
|
|
||||||
char *ptr;
|
|
||||||
size_t l1 = strlen(s1);
|
|
||||||
|
|
||||||
ptr = (char *)zhalloc(l1 + strlen(s2) + 1);
|
|
||||||
strcpy(ptr, s1);
|
|
||||||
strcpy(ptr + l1, s2);
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**/
|
/**/
|
||||||
static int
|
static int
|
||||||
upchdir(int n)
|
upchdir(int n)
|
||||||
|
|
|
@ -8,7 +8,7 @@ alwayslink=1
|
||||||
objects="builtin.o compat.o cond.o exec.o glob.o hashtable.o \
|
objects="builtin.o compat.o cond.o exec.o glob.o hashtable.o \
|
||||||
hist.o init.o input.o jobs.o lex.o linklist.o loop.o math.o \
|
hist.o init.o input.o jobs.o lex.o linklist.o loop.o math.o \
|
||||||
mem.o module.o options.o params.o parse.o pattern.o prompt.o signals.o \
|
mem.o module.o options.o params.o parse.o pattern.o prompt.o signals.o \
|
||||||
signames.o subst.o text.o utils.o watch.o"
|
signames.o string.o subst.o text.o utils.o watch.o"
|
||||||
|
|
||||||
headers="../config.h system.h zsh.h sigcount.h signals.h \
|
headers="../config.h system.h zsh.h sigcount.h signals.h \
|
||||||
prototypes.h hashtable.h ztype.h"
|
prototypes.h hashtable.h ztype.h"
|
||||||
|
|
Loading…
Reference in a new issue