X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/5dd14f0c3388f69932d521915e039e32b9e6d970..ee1c00fea8647356e403368fad9ad4c909e9ef08:/token.c diff --git a/token.c b/token.c index 08c1190d..838f8c97 100644 --- a/token.c +++ b/token.c @@ -3,7 +3,7 @@ * * Copyright (C) 1996 Andrew Tridgell * Copyright (C) 1996 Paul Mackerras - * Copyright (C) 2003-2008 Wayne Davison + * Copyright (C) 2003-2009 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -45,12 +45,12 @@ static void add_suffix(struct suffix_tree **prior, char ltr, const char *str) if (ltr == '[') { const char *after = strchr(str, ']'); - /* Just skip bogus character classes. */ - if (!after++) + /* Treat "[foo" and "[]" as having a literal '['. */ + if (after && after++ != str+1) { + while ((ltr = *str++) != ']') + add_suffix(prior, ltr, after); return; - while ((ltr = *str++) != ']') - add_suffix(prior, ltr, after); - return; + } } for (node = *prior; node; prior = &node->sibling, node = node->sibling) { @@ -100,7 +100,6 @@ static void add_nocompress_suffixes(const char *str) } while (*++f != '/' && *f); *t++ = '\0'; - fprintf(stderr, "adding `%s'\n", buf); add_suffix(&suftree, *buf, buf+1); }