|
Packit Service |
ff689b |
/*
|
|
Packit Service |
ff689b |
* Copyright (c) 2007, Novell Inc.
|
|
Packit Service |
ff689b |
*
|
|
Packit Service |
ff689b |
* This program is licensed under the BSD license, read LICENSE.BSD
|
|
Packit Service |
ff689b |
* for further information
|
|
Packit Service |
ff689b |
*/
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
/*
|
|
Packit Service |
ff689b |
* util.h
|
|
Packit Service |
ff689b |
*
|
|
Packit Service |
ff689b |
*/
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
#ifndef LIBSOLV_TOOLS_UTIL_H
|
|
Packit Service |
ff689b |
#define LIBSOLV_TOOLS_UTIL_H
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
static inline Id
|
|
Packit Service |
ff689b |
makeevr(Pool *pool, const char *s)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
if (!strncmp(s, "0:", 2) && s[2])
|
|
Packit Service |
ff689b |
s += 2;
|
|
Packit Service |
ff689b |
return pool_str2id(pool, s, 1);
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
/**
|
|
Packit Service |
ff689b |
* split a string
|
|
Packit Service |
ff689b |
*/
|
|
Packit Service |
ff689b |
#ifndef DISABLE_SPLIT
|
|
Packit Service |
ff689b |
static int
|
|
Packit Service |
ff689b |
split(char *l, char **sp, int m)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
int i;
|
|
Packit Service |
ff689b |
for (i = 0; i < m;)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
while (*l == ' ')
|
|
Packit Service |
ff689b |
l++;
|
|
Packit Service |
ff689b |
if (!*l)
|
|
Packit Service |
ff689b |
break;
|
|
Packit Service |
ff689b |
sp[i++] = l;
|
|
Packit Service |
ff689b |
while (*l && *l != ' ')
|
|
Packit Service |
ff689b |
l++;
|
|
Packit Service |
ff689b |
if (!*l)
|
|
Packit Service |
ff689b |
break;
|
|
Packit Service |
ff689b |
*l++ = 0;
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
return i;
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
#endif
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
#ifndef DISABLE_JOIN2
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
struct joindata {
|
|
Packit Service |
ff689b |
char *tmp;
|
|
Packit Service |
ff689b |
int tmpl;
|
|
Packit Service |
ff689b |
};
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
/* this join does not depend on parsedata */
|
|
Packit Service |
ff689b |
static char *
|
|
Packit Service |
ff689b |
join2(struct joindata *jd, const char *s1, const char *s2, const char *s3)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
int l = 1;
|
|
Packit Service |
ff689b |
char *p;
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
if (s1)
|
|
Packit Service |
ff689b |
l += strlen(s1);
|
|
Packit Service |
ff689b |
if (s2)
|
|
Packit Service |
ff689b |
l += strlen(s2);
|
|
Packit Service |
ff689b |
if (s3)
|
|
Packit Service |
ff689b |
l += strlen(s3);
|
|
Packit Service |
ff689b |
if (l > jd->tmpl)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
jd->tmpl = l + 256;
|
|
Packit Service |
ff689b |
jd->tmp = solv_realloc(jd->tmp, jd->tmpl);
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
p = jd->tmp;
|
|
Packit Service |
ff689b |
if (s1)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
strcpy(p, s1);
|
|
Packit Service |
ff689b |
p += strlen(s1);
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
if (s2)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
strcpy(p, s2);
|
|
Packit Service |
ff689b |
p += strlen(s2);
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
if (s3)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
strcpy(p, s3);
|
|
Packit Service |
ff689b |
p += strlen(s3);
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
*p = 0;
|
|
Packit Service |
ff689b |
return jd->tmp;
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
static inline char *
|
|
Packit Service |
ff689b |
join_dup(struct joindata *jd, const char *s)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
return s ? join2(jd, s, 0, 0) : 0;
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
static inline void
|
|
Packit Service |
ff689b |
join_freemem(struct joindata *jd)
|
|
Packit Service |
ff689b |
{
|
|
Packit Service |
ff689b |
if (jd->tmp)
|
|
Packit Service |
ff689b |
free(jd->tmp);
|
|
Packit Service |
ff689b |
jd->tmp = 0;
|
|
Packit Service |
ff689b |
jd->tmpl = 0;
|
|
Packit Service |
ff689b |
}
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
#endif
|
|
Packit Service |
ff689b |
|
|
Packit Service |
ff689b |
#endif /* LIBSOLV_TOOLS_UTIL_H */
|