Eliminate splitString() and freeSplitString()

- use ARGV_t instead, it does the same and more...
This commit is contained in:
Panu Matilainen 2008-04-17 21:56:54 +03:00
parent 7800911bb0
commit 94ff22b129
5 changed files with 22 additions and 75 deletions

View File

@ -1746,7 +1746,8 @@ static rpmRC processPackageFiles(rpmSpec spec, Package pkg,
{
HGE_t hge = (HGE_t)headerGetEntryMinMemory;
struct FileList_s fl;
char *s, **files, **fp;
char *s, **fp;
ARGV_t files = NULL;
const char *fileName;
char buf[BUFSIZ];
struct AttrRec_s arbuf;
@ -1851,7 +1852,7 @@ static rpmRC processPackageFiles(rpmSpec spec, Package pkg,
fl.fileListRecsUsed = 0;
s = getStringBuf(pkg->fileList);
files = splitString(s, strlen(s), '\n');
argvSplit(&files, s, "\n");
for (fp = files; *fp != NULL; fp++) {
s = *fp;
@ -1955,7 +1956,7 @@ static rpmRC processPackageFiles(rpmSpec spec, Package pkg,
specialDoc = _free(specialDoc);
}
freeSplitString(files);
argvFree(files);
if (fl.processingFailed)
goto exit;
@ -2057,7 +2058,8 @@ int processSourceFiles(rpmSpec spec)
StringBuf sourceFiles;
int x, isSpec = 1;
struct FileList_s fl;
char *s, **files, **fp;
char *s, **fp;
ARGV_t files = NULL;
Package pkg;
static char *_srcdefattr;
static int oneshot;
@ -2135,7 +2137,7 @@ int processSourceFiles(rpmSpec spec)
fl.buildRoot = NULL;
s = getStringBuf(sourceFiles);
files = splitString(s, strlen(s), '\n');
argvSplit(&files, s, "\n");
/* The first source file is the spec file */
x = 0;
@ -2197,7 +2199,7 @@ int processSourceFiles(rpmSpec spec)
x++;
}
fl.fileListRecsUsed = x;
freeSplitString(files);
argvFree(files);
if (! fl.processingFailed) {
if (spec->sourceHeader != NULL)

View File

@ -536,7 +536,8 @@ int parsePrep(rpmSpec spec)
{
int nextPart, res, rc;
StringBuf sb;
char **lines, **saveLines;
char **lines;
ARGV_t saveLines = NULL;
if (spec->prep != NULL) {
rpmlog(RPMLOG_ERR, _("line %d: second %%prep\n"), spec->lineNum);
@ -566,7 +567,7 @@ int parsePrep(rpmSpec spec)
return rc;
}
saveLines = splitString(getStringBuf(sb), strlen(getStringBuf(sb)), '\n');
argvSplit(&saveLines, getStringBuf(sb), "\n");
for (lines = saveLines; *lines; lines++) {
res = 0;
if (! strncmp(*lines, "%setup", sizeof("%setup")-1)) {
@ -577,13 +578,13 @@ int parsePrep(rpmSpec spec)
appendLineStringBuf(spec->prep, *lines);
}
if (res && !spec->force) {
freeSplitString(saveLines);
argvFree(saveLines);
sb = freeStringBuf(sb);
return res;
}
}
freeSplitString(saveLines);
argvFree(saveLines);
sb = freeStringBuf(sb);
return nextPart;

View File

@ -11,6 +11,7 @@
#include <rpm/rpmds.h>
#include <rpm/rpmfileutil.h>
#include <rpm/rpmstring.h>
#include <rpm/argv.h>
#include "rpmdb/rpmdb_internal.h" /* XXX for dbiIndexSetCount */
#include "rpmdb/fprint.h"
@ -643,8 +644,8 @@ static void skipFiles(const rpmts ts, rpmfi fi)
rpm_color_t FColor;
int noConfigs = (rpmtsFlags(ts) & RPMTRANS_FLAG_NOCONFIGS);
int noDocs = (rpmtsFlags(ts) & RPMTRANS_FLAG_NODOCS);
char ** netsharedPaths = NULL;
char ** languages;
ARGV_t netsharedPaths = NULL;
ARGV_t languages = NULL;
const char * dn, * bn;
size_t dnlen, bnlen;
char * s;
@ -657,8 +658,9 @@ static void skipFiles(const rpmts ts, rpmfi fi)
noDocs = rpmExpandNumeric("%{_excludedocs}");
{ char *tmpPath = rpmExpand("%{_netsharedpath}", NULL);
if (tmpPath && *tmpPath != '%')
netsharedPaths = splitString(tmpPath, strlen(tmpPath), ':');
if (tmpPath && *tmpPath != '%') {
argvSplit(&netsharedPaths, tmpPath, ":");
}
tmpPath = _free(tmpPath);
}
@ -666,7 +668,7 @@ static void skipFiles(const rpmts ts, rpmfi fi)
if (!(s && *s != '%'))
s = _free(s);
if (s) {
languages = splitString(s, strlen(s), ':');
argvSplit(&languages, s, ":");
s = _free(s);
} else
languages = NULL;
@ -845,11 +847,11 @@ static void skipFiles(const rpmts ts, rpmfi fi)
}
}
if (netsharedPaths) freeSplitString(netsharedPaths);
if (netsharedPaths) argvFree(netsharedPaths);
#ifdef DYING /* XXX freeFi will deal with this later. */
fi->flangs = _free(fi->flangs);
#endif
if (languages) freeSplitString((char **)languages);
if (languages) argvFree(languages);
}
/**

View File

@ -26,49 +26,6 @@ char * stripTrailingChar(char * s, char c)
return s;
}
char ** splitString(const char * str, size_t length, char sep)
{
const char * source;
char * s, * dest;
char ** list;
int i;
int fields;
s = xmalloc(length + 1);
fields = 1;
for (source = str, dest = s, i = 0; i < length; i++, source++, dest++) {
*dest = *source;
if (*dest == sep) fields++;
}
*dest = '\0';
list = xmalloc(sizeof(*list) * (fields + 1));
dest = s;
list[0] = dest;
i = 1;
while (i < fields) {
if (*dest == sep) {
list[i++] = dest + 1;
*dest = 0;
}
dest++;
}
list[i] = NULL;
/* FIX: list[i] is NULL */
return list;
}
void freeSplitString(char ** list)
{
list[0] = _free(list[0]);
list = _free(list);
}
StringBuf newStringBuf(void)
{
StringBuf sb = xmalloc(sizeof(*sb));

View File

@ -136,21 +136,6 @@ char *rstrscat(char **dest, const char *arg, ...) RPM_GNUC_NULL_TERMINATED;
*/
size_t rstrlcpy(char *dest, const char *src, size_t n);
/** \ingroup rpmstring
* Split string into fields separated by a character.
* @param str string
* @param length length of string
* @param sep separator character
* @return (malloc'd) argv array
*/
char ** splitString(const char * str, size_t length, char sep);
/** \ingroup rpmstring
* Free split string argv array.
* @param list argv array
*/
void freeSplitString( char ** list);
/** \ingroup rpmstring
* Remove occurences of trailing character from string.
* @param s string