- add pool_tmpjoin and sat_dupjoin helpers
authorMichael Schroeder <mls@suse.de>
Wed, 24 Jun 2009 11:53:30 +0000 (13:53 +0200)
committerMichael Schroeder <mls@suse.de>
Wed, 24 Jun 2009 11:53:30 +0000 (13:53 +0200)
src/pool.c
src/pool.h
src/util.c
src/util.h

index ec87a4b..9155c2f 100644 (file)
@@ -1173,6 +1173,35 @@ pool_alloctmpspace(Pool *pool, int len)
   return pool->tmpspacebuf[n];
 }
 
+char *
+pool_tmpjoin(Pool *pool, const char *str1, const char *str2, const char *str3)
+{
+  int l1, l2, l3;
+  char *s, *str;
+  l1 = str1 ? strlen(str1) : 0;
+  l2 = str2 ? strlen(str2) : 0;
+  l3 = str3 ? strlen(str3) : 0;
+  s = str = pool_alloctmpspace(pool, l1 + l2 + l3 + 1);
+  if (l1)
+    {
+      strcpy(s, str1);
+      s += l1;
+    }
+  if (l2)
+    {
+      strcpy(s, str2);
+      s += l2;
+    }
+  if (l3)
+    {
+      strcpy(s, str3);
+      s += l3;
+    }
+  *s = 0;
+  return str;
+}
+
+
 /*******************************************************************/
 
 struct mptree {
index 47e12cc..3df007b 100644 (file)
@@ -176,6 +176,7 @@ extern void pool_free(Pool *pool);
 extern void pool_debug(Pool *pool, int type, const char *format, ...) __attribute__((format(printf, 3, 4)));
 
 extern char *pool_alloctmpspace(Pool *pool, int len);
+extern char *pool_tmpjoin(Pool *pool, const char *str1, const char *str2, const char *str3);
 
 extern void pool_set_installed(Pool *pool, struct _Repo *repo);
 
index cde01f4..7dea6aa 100644 (file)
@@ -108,3 +108,31 @@ sat_sort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, cons
 {
   qsort_r(base, nmemb, size, compar, compard);
 }
+
+char *
+sat_dupjoin(const char *str1, const char *str2, const char *str3)
+{
+  int l1, l2, l3;
+  char *s, *str;
+  l1 = str1 ? strlen(str1) : 0;
+  l2 = str2 ? strlen(str2) : 0;
+  l3 = str3 ? strlen(str3) : 0;
+  s = str = sat_malloc(l1 + l2 + l3 + 1);
+  if (l1)
+    {
+      strcpy(s, str1);
+      s += l1;
+    }
+  if (l2)
+    {
+      strcpy(s, str2);
+      s += l2;
+    }
+  if (l3)
+    {
+      strcpy(s, str3);
+      s += l3;
+    }
+  *s = 0;
+  return str;
+}
index e578faf..6191d43 100644 (file)
@@ -29,6 +29,7 @@ extern void *sat_free(void *);
 extern void sat_oom(size_t, size_t);
 extern unsigned int sat_timems(unsigned int subtract);
 extern void sat_sort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *compard);
+extern char *sat_dupjoin(const char *str1, const char *str2, const char *str3);
 
 static inline void *sat_extend(void *buf, size_t len, size_t nmemb, size_t size, size_t block)
 {