aboutsummaryrefslogtreecommitdiffstats
path: root/NEWS
Commit message (Expand)AuthorAgeFilesLines
...
* Dave Bodenstab's error-message corrections.Eric S. Raymond1997-02-181-0/+2
* Janos Farkas's fixes.Eric S. Raymond1997-02-181-0/+12
* Version bump.Eric S. Raymond1997-02-171-1/+5
* Lose the `received' option; we now say `no envelope'.Eric S. Raymond1997-02-171-0/+5
* Use Return-Path.Eric S. Raymond1997-02-171-0/+3
* First post-3.5 changes.Eric S. Raymond1997-02-161-0/+11
* Fix this.Eric S. Raymond1997-02-151-1/+1
* Ready to ship 3.5.Eric S. Raymond1997-02-151-1/+1
* Ready to ship 3.5Eric S. Raymond1997-02-151-0/+6
* Add warning.Eric S. Raymond1997-02-151-0/+7
* Aded the `received' option.Eric S. Raymond1997-02-141-0/+3
* Tony Nugent's fixes.Eric S. Raymond1997-02-131-0/+5
* Allow the smtphost option to set the host queried for by ETRN.Eric S. Raymond1997-02-131-0/+7
* Deal with headerless mail.Eric S. Raymond1997-02-131-1/+3
* Version bump.Eric S. Raymond1997-02-121-2/+5
* Trivalent options.Eric S. Raymond1997-02-111-0/+3
* Added RFC1985 ETRN support.Eric S. Raymond1997-02-101-0/+2
* Various minor bugfixes.Eric S. Raymond1997-02-101-0/+18
* Fix stripcr and password-stripping.Eric S. Raymond1997-02-031-0/+3
* Dave Bodenstab's fixes.Eric S. Raymond1997-02-021-0/+6
* This finishes off 3.3.Eric S. Raymond1997-02-021-2/+2
* Shroud password lengths.Eric S. Raymond1997-01-301-1/+3
* Fix Johan Vromans's bug.Eric S. Raymond1997-01-301-0/+3
* Add stripcr option.Eric S. Raymond1997-01-301-0/+3
* Better documentation of .fetchmailrc lexing.Eric S. Raymond1997-01-301-0/+4
* Correct length calculation.Eric S. Raymond1997-01-281-0/+7
* Ready to ship.Eric S. Raymond1997-01-271-1/+5
* CR-strip fix.Eric S. Raymond1997-01-271-0/+6
* Bug fix.Eric S. Raymond1997-01-251-0/+2
* Handle long address lists.Eric S. Raymond1997-01-241-0/+7
* Ready to ship.Eric S. Raymond1997-01-241-2/+2
* Clarification.Eric S. Raymond1997-01-241-1/+2
* Make this aware of RFC2060.Eric S. Raymond1997-01-231-0/+2
* Remove obsolete caveat.Eric S. Raymond1997-01-221-1/+1
* ESMTP SIZE option support.Eric S. Raymond1997-01-221-0/+6
* Support for EHLO and 8BITMIME extension.Eric S. Raymond1997-01-221-0/+15
* Bump the contact-list count.Eric S. Raymond1997-01-221-1/+1
* Handle zero-length messages.Eric S. Raymond1997-01-211-1/+3
* Ready to ship.Eric S. Raymond1997-01-211-2/+2
* RPOP support is back.Eric S. Raymond1997-01-201-2/+4
* Added dns/nodns.Eric S. Raymond1997-01-181-0/+6
* Ready to ship to George Sipe.Eric S. Raymond1997-01-171-1/+1
* Philippe de Muyter's Motorola fixes.Eric S. Raymond1997-01-161-5/+5
* New feature announcement.Eric S. Raymond1997-01-161-0/+2
* About ready to ship.Eric S. Raymond1997-01-151-1/+10
* The batchlimit option is now per user.Eric S. Raymond1997-01-141-0/+7
* Change `interface' and `monitor' options to per-server.Eric S. Raymond1997-01-141-5/+4
* Expunge fix.Eric S. Raymond1997-01-141-0/+3
* Arrange not to save user params after a statement.Eric S. Raymond1997-01-141-0/+3
* Start 2.9 update.Eric S. Raymond1997-01-131-2/+4
class="mi">1; } /* invalid character */ return 0; } static int word(unsigned char const **x) { if (**x == '"') return quotedstring(x); return atom(x); } static int domain_literal(unsigned char const **x) { if (**x != '[') return 0; ++ *x; for(;;) { switch (* *x) { case '\0': case '\r': case '[': return 0; case ']': ++ *x; return 1; case '\\': if (quotedpair(x) == 0) return 0; continue; } if ((int)* *x > 127) return 0; ++ *x; } } static int subdomain(unsigned char const **x) { if (* *x == '[') return domain_literal(x); return atom(x); } int rfc822_valid_msgid(const unsigned char *x) { /* expect "<" */ if (*x != '<') return 0; ++ x; /* expect local-part = word *("." word) * where * word = atom/quoted-string * atom = 1*ATOMCHAR * quoted-string = <"> *(qtext/quoted-pair) <"> * qtext = CHAR except ", \, CR * quoted-pair = "\" CHAR */ for(;;) { if (word(&x) == 0) return 0; if (*x == '.') { ++x; continue; } if (*x == '@') break; return 0; } /* expect "@" */ if (*x != '@') return 0; ++ x; /* expect domain = sub-domain *("." sub-domain) * sub-domain = domain-ref/domain-literal * domain-ref = atom * domain-literal = "[" *(dtext/quoted-pair) "]" */ for(;;) { if (subdomain(&x) == 0) return 0; if (*x == '.') { ++x; continue; } if (*x == '>') break; return 0; } if (*x != '>') return 0; return 1; } #ifdef TEST #include <stdio.h> int main(int argc, char **argv) { int i; for (i = 1; i < argc; i++) { printf("%s: %s\n", argv[i], rfc822_valid_msgid((unsigned char *)argv[i]) ? "OK" : "INVALID"); } return 0; } #endif