aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2008-10-01 03:41:33 +0000
committerRoger Dingledine <arma@torproject.org>2008-10-01 03:41:33 +0000
commitc7af43a62497fb3e10c8de9a5bb8cc8113efb99c (patch)
tree847f11b6f733a3aa4af359b8d77b56f359327bc2
parent914086628776bf915f7359a6486427c74391134a (diff)
downloadtor-c7af43a62497fb3e10c8de9a5bb8cc8113efb99c.tar
tor-c7af43a62497fb3e10c8de9a5bb8cc8113efb99c.tar.gz
Now NodeFamily and MyFamily config options allow spaces in
identity fingerprints, so it's easier to paste them in. Suggested by Lucky Green. svn:r17021
-rw-r--r--ChangeLog7
-rw-r--r--src/common/container.c22
-rw-r--r--src/common/container.h1
-rw-r--r--src/or/config.c7
-rw-r--r--src/or/router.c2
-rw-r--r--src/or/routerlist.c2
6 files changed, 30 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index b48463dbf..ff7a0e02f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Changes in version 0.2.1.7-alpha - 2008-10-xx
+ o Minor features:
+ - Now NodeFamily and MyFamily config options allow spaces in
+ identity fingerprints, so it's easier to paste them in.
+ Suggested by Lucky Green.
+
+
Changes in version 0.2.1.6-alpha - 2008-09-30
o Major features:
- Implement proposal 121: make it possible to build hidden services
diff --git a/src/common/container.c b/src/common/container.c
index 8021bd19c..060615d1c 100644
--- a/src/common/container.c
+++ b/src/common/container.c
@@ -324,12 +324,17 @@ smartlist_insert(smartlist_t *sl, int idx, void *val)
/**
* Split a string <b>str</b> along all occurrences of <b>sep</b>,
- * adding the split strings, in order, to <b>sl</b>. If
- * <b>flags</b>&amp;SPLIT_SKIP_SPACE is true, remove initial and
- * trailing space from each entry. If
- * <b>flags</b>&amp;SPLIT_IGNORE_BLANK is true, remove any entries of
- * length 0. If max>0, divide the string into no more than <b>max</b>
- * pieces. If <b>sep</b> is NULL, split on any sequence of horizontal space.
+ * adding the split strings, in order, to <b>sl</b>.
+ *
+ * If <b>flags</b>&amp;SPLIT_SKIP_SPACE is true, remove initial and
+ * trailing space from each entry.
+ * If <b>flags</b>&amp;SPLIT_IGNORE_BLANK is true, remove any entries
+ * of length 0.
+ * If <b>flags</b>&amp;SPLIT_STRIP_SPACE is true, strip spaces from each
+ * split string.
+ *
+ * If max>0, divide the string into no more than <b>max</b> pieces. If
+ * <b>sep</b> is NULL, split on any sequence of horizontal space.
*/
int
smartlist_split_string(smartlist_t *sl, const char *str, const char *sep,
@@ -375,7 +380,10 @@ smartlist_split_string(smartlist_t *sl, const char *str, const char *sep,
--end;
}
if (end != cp || !(flags&SPLIT_IGNORE_BLANK)) {
- smartlist_add(sl, tor_strndup(cp, end-cp));
+ char *string = tor_strndup(cp, end-cp);
+ if (flags&SPLIT_STRIP_SPACE)
+ tor_strstrip(string, " ");
+ smartlist_add(sl, string);
++n;
}
if (!next)
diff --git a/src/common/container.h b/src/common/container.h
index 0a790ea4a..b4ca35828 100644
--- a/src/common/container.h
+++ b/src/common/container.h
@@ -121,6 +121,7 @@ void smartlist_pqueue_assert_ok(smartlist_t *sl,
#define SPLIT_SKIP_SPACE 0x01
#define SPLIT_IGNORE_BLANK 0x02
+#define SPLIT_STRIP_SPACE 0x04
int smartlist_split_string(smartlist_t *sl, const char *str, const char *sep,
int flags, int max);
char *smartlist_join_strings(smartlist_t *sl, const char *join, int terminate,
diff --git a/src/or/config.c b/src/or/config.c
index c288e7f80..d21e248d1 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3740,7 +3740,7 @@ get_default_conf_file(void)
#endif
}
-/** Verify whether lst is a string containing valid-looking space-separated
+/** Verify whether lst is a string containing valid-looking comma-separated
* nicknames, or NULL. Return 0 on success. Warn and return -1 on failure.
*/
static int
@@ -3752,7 +3752,10 @@ check_nickname_list(const char *lst, const char *name, char **msg)
if (!lst)
return 0;
sl = smartlist_create();
- smartlist_split_string(sl, lst, ",", SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
+
+ smartlist_split_string(sl, lst, ",",
+ SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK|SPLIT_STRIP_SPACE, 0);
+
SMARTLIST_FOREACH(sl, const char *, s,
{
if (!is_legal_nickname_or_hexdigest(s)) {
diff --git a/src/or/router.c b/src/or/router.c
index 29b930bbc..c3dc9867d 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1313,7 +1313,7 @@ router_rebuild_descriptor(int force)
family = smartlist_create();
ri->declared_family = smartlist_create();
smartlist_split_string(family, options->MyFamily, ",",
- SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
+ SPLIT_SKIP_SPACE|SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
SMARTLIST_FOREACH(family, char *, name,
{
routerinfo_t *member;
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index be38cc569..4ea307d91 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1324,7 +1324,7 @@ router_nickname_is_in_list(routerinfo_t *router, const char *list)
nickname_list = smartlist_create();
smartlist_split_string(nickname_list, list, ",",
- SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
+ SPLIT_SKIP_SPACE|SPLIT_STRIP_SPACE|SPLIT_IGNORE_BLANK, 0);
SMARTLIST_FOREACH(nickname_list, const char *, cp,
if (router_nickname_matches(router, cp)) {v=1;break;});
SMARTLIST_FOREACH(nickname_list, char *, cp, tor_free(cp));