summaryrefslogtreecommitdiff
path: root/rpmio
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2012-09-13 08:48:56 +0300
committerPanu Matilainen <pmatilai@redhat.com>2012-09-13 09:01:30 +0300
commit1e2c2fece25adad725261089ca47108937067088 (patch)
treed9b3a035c768228a7d50f2490e207845294ebd45 /rpmio
parentb6c794362aa9b3b2552f32bd13775a127febc17d (diff)
downloadlibrpm-tizen-1e2c2fece25adad725261089ca47108937067088.tar.gz
librpm-tizen-1e2c2fece25adad725261089ca47108937067088.tar.bz2
librpm-tizen-1e2c2fece25adad725261089ca47108937067088.zip
Add a string equality check function to string pool API
- As a special case, two strings (ids) from the same pool can be tested for equality in constant time (integer comparison). If the pools differ, a regular string comparison is needed.
Diffstat (limited to 'rpmio')
-rw-r--r--rpmio/rpmstrpool.c9
-rw-r--r--rpmio/rpmstrpool.h4
2 files changed, 13 insertions, 0 deletions
diff --git a/rpmio/rpmstrpool.c b/rpmio/rpmstrpool.c
index 55fc0e0bd..799136b01 100644
--- a/rpmio/rpmstrpool.c
+++ b/rpmio/rpmstrpool.c
@@ -173,3 +173,12 @@ size_t rpmstrPoolStrlen(rpmstrPool pool, rpmsid sid)
}
return slen;
}
+
+int rpmstrPoolStreq(rpmstrPool poolA, rpmsid sidA,
+ rpmstrPool poolB, rpmsid sidB)
+{
+ if (poolA == poolB)
+ return (sidA == sidB);
+ else
+ return rstreq(rpmstrPoolStr(poolA, sidA), rpmstrPoolStr(poolB, sidB));
+}
diff --git a/rpmio/rpmstrpool.h b/rpmio/rpmstrpool.h
index 67e162056..5794032a1 100644
--- a/rpmio/rpmstrpool.h
+++ b/rpmio/rpmstrpool.h
@@ -36,6 +36,10 @@ const char * rpmstrPoolStr(rpmstrPool sidpool, rpmsid sid);
/* get a strings length by its id (in constant time) */
size_t rpmstrPoolStrlen(rpmstrPool pool, rpmsid sid);
+/* pool string equality comparison (constant time if within same pool) */
+int rpmstrPoolStreq(rpmstrPool poolA, rpmsid sidA,
+ rpmstrPool poolB, rpmsid sidB);
+
#ifdef __cplusplus
}
#endif