diff options
author | Eric S. Raymond <esr@thyrsus.com> | 1999-08-01 06:47:46 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 1999-08-01 06:47:46 +0000 |
commit | 31a766b10679534993eada1bdeb9a6f7cb5585c0 (patch) | |
tree | dd1dc17b0f54bc566779db30408caa97c2d9bec5 | |
parent | bb524b27a4d0e3e1ba42f2a66326faa5ac671f65 (diff) | |
download | fetchmail-31a766b10679534993eada1bdeb9a6f7cb5585c0.tar.gz fetchmail-31a766b10679534993eada1bdeb9a6f7cb5585c0.tar.bz2 fetchmail-31a766b10679534993eada1bdeb9a6f7cb5585c0.zip |
Split in rightmost @
svn path=/trunk/; revision=2529
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | uid.c | 13 |
2 files changed, 13 insertions, 2 deletions
@@ -18,6 +18,8 @@ fetchmail-5.0.6 (): `username' or `password' keyword, courtesy of Brian Boutel. * Interface option fix from Bill Currie. * 554 added to default antispam vaklues (for Postfix). +* In UID files, split on *rightmost* @ as some dialups actually embed + @ in usernames. Warning: CompuServe changed their POP3 system on 31 July 1999. In doing so, they broke fetchmail's RPA support. Nobody has sent me either code that @@ -84,8 +84,17 @@ void initialize_saved_lists(struct query *hostlist, const char *idfile) while (fgets(buf, POPBUFSIZE, tmpfp) != (char *)NULL) { - /* possible lossage here with very old versions of sscanf(3)... */ - if ((st = sscanf(buf, "%[^@]@%s %s\n", user, host, id)) == 3) + /* + * This inelegant hack was brought to you by the fact that + * some dial-up resellers actually use account names with + * @ in them. So we need to split on the rightmost @... + */ + char *atsign = strrchr(buf, '@'); + + if (atsign) + *atsign = ' '; + + if ((st = sscanf(buf, "%s %s %s\n", user, host, id)) == 3) { for (ctl = hostlist; ctl; ctl = ctl->next) { |