version 1.5, 1997/11/14 00:23:48 |
version 1.6, 2001/01/19 04:11:28 |
|
|
* 'a' A lower case char |
* 'a' A lower case char |
* ' ' A space |
* ' ' A space |
* '0' A digit |
* '0' A digit |
* 'O' An optional digit or space |
* 'O' A digit or space |
|
* 'p' A punctuation char |
|
* 'P' A punctuation char or space |
* ':' A colon |
* ':' A colon |
* 'N' A new line |
* 'N' A new line |
*/ |
*/ |
char ctype[] = "Aaa Aaa O0 00:00:00 0000"; |
|
char tmztype[] = "Aaa Aaa O0 00:00:00 AAA 0000"; |
|
/* |
/* |
* Yuck. If the mail file is created by Sys V (Solaris), |
* Yuck. If the mail file is created by Sys V (Solaris), |
* there are no seconds in the time... |
* there are no seconds in the time... |
*/ |
*/ |
char SysV_ctype[] = "Aaa Aaa O0 00:00 0000"; |
|
char SysV_tmztype[] = "Aaa Aaa O0 00:00 AAA 0000"; |
|
|
|
|
/* |
|
* If the mail is created by another program such as imapd, it might |
|
* have timezone as <-|+>nnnn (-0800 for instance) at the end. |
|
*/ |
|
|
|
static char *date_formats[] = { |
|
"Aaa Aaa O0 00:00:00 0000", /* Mon Jan 01 23:59:59 2001 */ |
|
"Aaa Aaa O0 00:00:00 AAA 0000", /* Mon Jan 01 23:59:59 PST 2001 */ |
|
"Aaa Aaa O0 00:00:00 0000 p0000", /* Mon Jan 01 23:59:59 2001 -0800 */ |
|
"Aaa Aaa O0 00:00 0000", /* Mon Jan 01 23:59 2001 */ |
|
"Aaa Aaa O0 00:00 AAA 0000", /* Mon Jan 01 23:59 PST 2001 */ |
|
"Aaa Aaa O0 00:00 0000 p0000", /* Mon Jan 01 23:59 2001 -0800 */ |
|
"" |
|
}; |
|
|
int |
int |
isdate(date) |
isdate(date) |
char date[]; |
char date[]; |
{ |
{ |
|
int i; |
|
|
return(cmatch(date, ctype) || cmatch(date, tmztype) |
for(i = 0; *date_formats[i]; i++) { |
|| cmatch(date, SysV_tmztype) || cmatch(date, SysV_ctype)); |
if (cmatch(date, date_formats[i])) |
|
return 1; |
|
} |
|
return 0; |
} |
} |
|
|
/* |
/* |
|
|
break; |
break; |
case 'O': |
case 'O': |
if (*cp != ' ' && !isdigit(*cp)) |
if (*cp != ' ' && !isdigit(*cp)) |
|
return(0); |
|
cp++; |
|
break; |
|
case 'p': |
|
if (!ispunct(*cp++)) |
|
return(0); |
|
break; |
|
case 'P': |
|
if (*cp != ' ' && !ispunct(*cp)) |
return(0); |
return(0); |
cp++; |
cp++; |
break; |
break; |