/
opt
/
php_with_imap_client
/
include
/
/opt/php_with_imap_client/include
mkdir
upload
Name
Size
Mode
Actions
c-client.h
1687
0644
edit
dl
rm
dummy.h
1524
0644
edit
dl
rm
env.h
1507
0644
edit
dl
rm
env_unix.h
2933
0644
edit
dl
rm
fdstring.h
1071
0644
edit
dl
rm
flockcyg.h
1377
0644
edit
dl
rm
flocksim.h
4388
0644
edit
dl
rm
flstring.h
799
0644
edit
dl
rm
fs.h
905
0644
edit
dl
rm
ftl.h
825
0644
edit
dl
rm
imap4r1.h
8202
0644
edit
dl
rm
linkage.h
541
0644
edit
dl
rm
mail.h
68408
0644
edit
dl
rm
misc.h
3351
0644
edit
dl
rm
netmsg.h
987
0644
edit
dl
rm
newsrc.h
1486
0644
edit
dl
rm
nl.h
939
0644
edit
dl
rm
nntp.h
1618
0644
edit
dl
rm
osdep.h
1481
0644
edit
dl
rm
os_a32.h
1230
0644
edit
dl
rm
os_a41.h
1230
0644
edit
dl
rm
os_a52.h
1296
0644
edit
dl
rm
os_aix.h
1122
0644
edit
dl
rm
os_aos.h
1292
0644
edit
dl
rm
os_art.h
2061
0644
edit
dl
rm
os_asv.h
1960
0644
edit
dl
rm
os_aux.h
1213
0644
edit
dl
rm
os_bsd.h
1359
0644
edit
dl
rm
os_bsf.h
1077
0644
edit
dl
rm
os_bsi.h
1059
0644
edit
dl
rm
os_cvx.h
1113
0644
edit
dl
rm
os_cyg.h
1634
0644
edit
dl
rm
os_d-g.h
1379
0644
edit
dl
rm
os_do4.h
1261
0644
edit
dl
rm
os_drs.h
1451
0644
edit
dl
rm
os_dyn.h
1531
0644
edit
dl
rm
os_hpp.h
1392
0644
edit
dl
rm
os_isc.h
1722
0644
edit
dl
rm
os_lnx.h
1481
0644
edit
dl
rm
os_lyn.h
1058
0644
edit
dl
rm
os_mct.h
1071
0644
edit
dl
rm
os_mnt.h
1205
0644
edit
dl
rm
os_nto.h
1680
0644
edit
dl
rm
os_nxt.h
1211
0644
edit
dl
rm
os_os4.h
1199
0644
edit
dl
rm
os_osf.h
1199
0644
edit
dl
rm
os_osx.h
1294
0644
edit
dl
rm
os_ptx.h
1738
0644
edit
dl
rm
os_pyr.h
1457
0644
edit
dl
rm
os_qnx.h
1452
0644
edit
dl
rm
os_s40.h
957
0644
edit
dl
rm
os_sc5.h
1761
0644
edit
dl
rm
os_sco.h
1807
0644
edit
dl
rm
os_sgi.h
1396
0644
edit
dl
rm
os_shp.h
1392
0644
edit
dl
rm
os_slx.h
1481
0644
edit
dl
rm
os_soln.h
1981
0644
edit
dl
rm
os_solo.h
1949
0644
edit
dl
rm
os_sos.h
1199
0644
edit
dl
rm
os_sua.h
1185
0644
edit
dl
rm
os_sun.h
1307
0644
edit
dl
rm
os_sv2.h
2979
0644
edit
dl
rm
os_sv4.h
1838
0644
edit
dl
rm
os_ult.h
1036
0644
edit
dl
rm
os_vu2.h
2396
0644
edit
dl
rm
pseudo.h
838
0644
edit
dl
rm
rfc822.h
5421
0644
edit
dl
rm
smtp.h
2538
0644
edit
dl
rm
sslio.h
2309
0644
edit
dl
rm
tcp.h
1775
0644
edit
dl
rm
tcp_unix.h
1224
0644
edit
dl
rm
unix.h
6711
0644
edit
dl
rm
utf8.h
22967
0644
edit
dl
rm
utf8aux.h
1529
0644
edit
dl
rm
Edit:
/opt/php_with_imap_client/include/unix.h
(6711B)
/* ======================================================================== * Copyright 1988-2006 University of Washington * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * * ======================================================================== */ /* * Program: UNIX mail routines * * Author: Mark Crispin * Networks and Distributed Computing * Computing & Communications * University of Washington * Administration Building, AG-44 * Seattle, WA 98195 * Internet: MRC@CAC.Washington.EDU * * Date: 20 December 1989 * Last Edited: 30 August 2006 */ /* DEDICATION * * This file is dedicated to my dog, Unix, also known as Yun-chan and * Unix J. Terwilliker Jehosophat Aloysius Monstrosity Animal Beast. Unix * passed away at the age of 11 1/2 on September 14, 1996, 12:18 PM PDT, after * a two-month bout with cirrhosis of the liver. * * He was a dear friend, and I miss him terribly. * * Lift a leg, Yunie. Luv ya forever!!!! */ /* Validate line * Accepts: pointer to candidate string to validate as a From header * return pointer to end of date/time field * return pointer to offset from t of time (hours of ``mmm dd hh:mm'') * return pointer to offset from t of time zone (if non-zero) * Returns: t,ti,zn set if valid From string, else ti is NIL */ #define VALID(s,x,ti,zn) { \ ti = 0; \ if ((*s == 'F') && (s[1] == 'r') && (s[2] == 'o') && (s[3] == 'm') && \ (s[4] == ' ')) { \ for (x = s + 5; *x && *x != '\012'; x++); \ if (*x) { \ if (x[-1] == '\015') --x; \ if (x - s >= 41) { \ for (zn = -1; x[zn] != ' '; zn--); \ if ((x[zn-1] == 'm') && (x[zn-2] == 'o') && (x[zn-3] == 'r') && \ (x[zn-4] == 'f') && (x[zn-5] == ' ') && (x[zn-6] == 'e') && \ (x[zn-7] == 't') && (x[zn-8] == 'o') && (x[zn-9] == 'm') && \ (x[zn-10] == 'e') && (x[zn-11] == 'r') && (x[zn-12] == ' '))\ x += zn - 12; \ } \ if (x - s >= 27) { \ if (x[-5] == ' ') { \ if (x[-8] == ':') zn = 0,ti = -5; \ else if (x[-9] == ' ') ti = zn = -9; \ else if ((x[-11] == ' ') && ((x[-10]=='+') || (x[-10]=='-'))) \ ti = zn = -11; \ } \ else if (x[-4] == ' ') { \ if (x[-9] == ' ') zn = -4,ti = -9; \ } \ else if (x[-6] == ' ') { \ if ((x[-11] == ' ') && ((x[-5] == '+') || (x[-5] == '-'))) \ zn = -6,ti = -11; \ } \ if (ti && !((x[ti - 3] == ':') && \ (x[ti -= ((x[ti - 6] == ':') ? 9 : 6)] == ' ') && \ (x[ti - 3] == ' ') && (x[ti - 7] == ' ') && \ (x[ti - 11] == ' '))) ti = 0; \ } \ } \ } \ } /* You are not expected to understand this macro, but read the next page if * you are not faint of heart. * * Known formats to the VALID macro are: * From user Wed Dec 2 05:53 1992 * BSD From user Wed Dec 2 05:53:22 1992 * SysV From user Wed Dec 2 05:53 PST 1992 * rn From user Wed Dec 2 05:53:22 PST 1992 * From user Wed Dec 2 05:53 -0700 1992 * emacs From user Wed Dec 2 05:53:22 -0700 1992 * From user Wed Dec 2 05:53 1992 PST * From user Wed Dec 2 05:53:22 1992 PST * From user Wed Dec 2 05:53 1992 -0700 * Solaris From user Wed Dec 2 05:53:22 1992 -0700 * * Plus all of the above with `` remote from xxx'' after it. Thank you very * much, smail and Solaris, for making my life considerably more complicated. */ /* * What? You want to understand the VALID macro anyway? Alright, since you * insist. Actually, it isn't really all that difficult, provided that you * take it step by step. * * Line 1 Initializes the return ti value to failure (0); * Lines 2-3 Validates that the 1st-5th characters are ``From ''. * Lines 4-6 Validates that there is an end of line and points x at it. * Lines 7-14 First checks to see if the line is at least 41 characters long. * If so, it scans backwards to find the rightmost space. From * that point, it scans backwards to see if the string matches * `` remote from''. If so, it sets x to point to the space at * the start of the string. * Line 15 Makes sure that there are at least 27 characters in the line. * Lines 16-21 Checks if the date/time ends with the year (there is a space * five characters back). If there is a colon three characters * further back, there is no timezone field, so zn is set to 0 * and ti is set in front of the year. Otherwise, there must * either to be a space four characters back for a three-letter * timezone, or a space six characters back followed by a + or - * for a numeric timezone; in either case, zn and ti become the * offset of the space immediately before it. * Lines 22-24 Are the failure case for line 14. If there is a space four * characters back, it is a three-letter timezone; there must be a * space for the year nine characters back. zn is the zone * offset; ti is the offset of the space. * Lines 25-28 Are the failure case for line 20. If there is a space six * characters back, it is a numeric timezone; there must be a * space eleven characters back and a + or - five characters back. * zn is the zone offset; ti is the offset of the space. * Line 29-32 If ti is valid, make sure that the string before ti is of the * form www mmm dd hh:mm or www mmm dd hh:mm:ss, otherwise * invalidate ti. There must be a colon three characters back * and a space six or nine characters back (depending upon * whether or not the character six characters back is a colon). * There must be a space three characters further back (in front * of the day), one seven characters back (in front of the month), * and one eleven characters back (in front of the day of week). * ti is set to be the offset of the space before the time. * * Why a macro? It gets invoked a *lot* in a tight loop. On some of the * newer pipelined machines it is faster being open-coded than it would be if * subroutines are called. * * Why does it scan backwards from the end of the line, instead of doing the * much easier forward scan? There is no deterministic way to parse the * ``user'' field, because it may contain unquoted spaces! Yes, I tested it to * see if unquoted spaces were possible. They are, and I've encountered enough * evil mail to be totally unwilling to trust that ``it will never happen''. */ /* Build parameters */ #define KODRETRY 15 /* kiss-of-death retry in seconds */ #define LOCKTIMEOUT 5 /* lock timeout in minutes */
Save
cmd:
run