[tor-commits] [tor/master] Turn streq_opt into a generic strcmp_opt.
nickm at torproject.org
nickm at torproject.org
Wed Jul 20 00:44:03 UTC 2011
commit 94f85f216ae4b6196d2a3438bfaf328375ebaad6
Author: Nick Mathewson <nickm at torproject.org>
Date: Tue Jul 19 02:36:11 2011 -0400
Turn streq_opt into a generic strcmp_opt.
---
src/common/util.c | 17 +++++++++++++++++
src/common/util.h | 1 +
src/or/config.c | 7 +------
3 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/src/common/util.c b/src/common/util.c
index bf0bbe0..15b6e71 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -521,6 +521,23 @@ tor_strisnonupper(const char *s)
return 1;
}
+/** As strcmp, except that either string may be NULL. The NULL string is
+ * considered to be before any non-NULL string. */
+int
+strcmp_opt(const char *s1, const char *s2)
+{
+ if (!s1) {
+ if (!s2)
+ return 0;
+ else
+ return -1;
+ } else if (!s2) {
+ return 1;
+ } else {
+ return strcmp(s1, s2);
+ }
+}
+
/** Compares the first strlen(s2) characters of s1 with s2. Returns as for
* strcmp.
*/
diff --git a/src/common/util.h b/src/common/util.h
index de06c3c..9935587 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -175,6 +175,7 @@ void tor_strlower(char *s) ATTR_NONNULL((1));
void tor_strupper(char *s) ATTR_NONNULL((1));
int tor_strisprint(const char *s) ATTR_PURE ATTR_NONNULL((1));
int tor_strisnonupper(const char *s) ATTR_PURE ATTR_NONNULL((1));
+int strcmp_opt(const char *s1, const char *s2) ATTR_PURE;
int strcmpstart(const char *s1, const char *s2) ATTR_PURE ATTR_NONNULL((1,2));
int strcmp_len(const char *s1, const char *s2, size_t len)
ATTR_PURE ATTR_NONNULL((1,2));
diff --git a/src/or/config.c b/src/or/config.c
index 86ccb92..cc1561b 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3864,12 +3864,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
static int
opt_streq(const char *s1, const char *s2)
{
- if (!s1 && !s2)
- return 1;
- else if (s1 && s2 && !strcmp(s1,s2))
- return 1;
- else
- return 0;
+ return 0 == strcmp_opt(s1, s2);
}
/** Check if any of the previous options have changed but aren't allowed to. */
More information about the tor-commits
mailing list