From 31a766b10679534993eada1bdeb9a6f7cb5585c0 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 1 Aug 1999 06:47:46 +0000 Subject: Split in rightmost @ svn path=/trunk/; revision=2529 --- uid.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'uid.c') diff --git a/uid.c b/uid.c index 09ea5684..8c5040f2 100644 --- a/uid.c +++ b/uid.c @@ -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) { -- cgit v1.2.3