Hello, This is my first post to the rsync list so forgive me (and correct me please) if this is the wrong forum in which to post this issue. But here goes: I was wondering if anyone has seen this before... I'm using Rsync 2.6.8, under cwrsync on Windows 2000 Professional. I have a small exclude file that has a really long file name in one include rule. The exclude file looks like this: + /cygdrive/D/.ben/ + /cygdrive/D/.ben/This is a really really really long name for a file that has to be beyond 250 bytes in length the reason I am doing this is to test rsync transfers of extra long file names cause rsync should only allow a 256 byte file and path len which is bogus.txt - /cygdrive/D/.ben/test1.txt I'm backing up the ".ben" directory as the base of the backup. The ".ben" directory is in the root of my D drive. So, I'm including ".ben", and including the really really long file, and excluding one other. When I run the backup, rsync goes into an infinite loop, saying "discarding over-long filter" over and over again. Here's the whole message that repeats forever: discarding over-long filter: /cygdrive/D/.ben/This is a really really really long name for a file that has to be beyond 256 bytes in length the reason I am doing this is to test rsync transfers of extra long file names cause rsync should only allow a 256 byte file and path len which is bogus.txt In doing google searches for the problem, I stumbled across the exclude.c source, and noticed that in the exclude.c file, in the "parse_rule" function, there's this loop... //********************************************************************************** void parse_rule(struct filter_list_struct *listp, const char *pattern, uint32 mflags, int xflags) { unsigned int pat_len; uint32 new_mflags; const char *cp, *p; if (!pattern) return; while (1) { /* Remember that the returned string is NOT '\0' terminated! */ cp = parse_rule_tok(pattern, mflags, xflags, &pat_len, &new_mflags); if (!cp) break; if (pat_len >= MAXPATHLEN) { rprintf(FERROR, "discarding over-long filter: %s\n", cp); continue; } pattern = cp + pat_len;<and it goes on from there...> //********************************************************************************** Notice the "if (pat_len >= MAXPATHLEN) ... continue;" code... I'm wondering if my exclude rule (excluding a file name which is longer than MAXPATHLEN) is not being "consumed" properly (inside parse_rule_tok() ???) and so when "continue" is hit, it just keeps on looping forever. Has anyone else seen this happen and/or know of a solution? (i.e., how do I stop the infinite loop from happening other than not having long file names in my exclude/include files? (Or, am I just off-base here and missing something?) Thanks much, Ben Anderson |
-- To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html