home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume17 / calentool / part11 < prev    next >
SHell self-extracting ARchive  |  1991-04-06  |  54.6 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: SHell self-extracting ARchive (archive/shar).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news or mail text default
99% file C source, ASCII text default
100% TrID E-Mail message (Var. 2) default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime message/rfc822 default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 3a 20 62 69 | 6c 6c 72 40 73 61 61 62 |From: bi|llr@saab|
|00000010| 2e 43 4e 41 2e 54 45 4b | 2e 43 4f 4d 20 28 42 69 |.CNA.TEK|.COM (Bi|
|00000020| 6c 6c 20 52 61 6e 64 6c | 65 29 0a 4e 65 77 73 67 |ll Randl|e).Newsg|
|00000030| 72 6f 75 70 73 3a 20 63 | 6f 6d 70 2e 73 6f 75 72 |roups: c|omp.sour|
|00000040| 63 65 73 2e 6d 69 73 63 | 0a 53 75 62 6a 65 63 74 |ces.misc|.Subject|
|00000050| 3a 20 76 31 37 69 30 39 | 32 3a 20 20 63 61 6c 65 |: v17i09|2: cale|
|00000060| 6e 74 6f 6f 6c 20 2d 20 | 64 61 79 2f 77 65 65 6b |ntool - |day/week|
|00000070| 2f 6d 6f 6e 74 68 2f 79 | 65 61 72 2d 61 74 2d 61 |/month/y|ear-at-a|
|00000080| 2d 67 6c 61 6e 63 65 20 | 53 75 6e 56 69 65 77 20 |-glance |SunView |
|00000090| 74 6f 6f 6c 2c 20 50 61 | 72 74 31 31 2f 32 33 0a |tool, Pa|rt11/23.|
|000000a0| 4d 65 73 73 61 67 65 2d | 49 44 3a 20 3c 31 39 39 |Message-|ID: <199|
|000000b0| 31 41 70 72 36 2e 30 32 | 33 39 33 39 2e 31 37 31 |1Apr6.02|3939.171|
|000000c0| 36 37 40 73 70 61 72 6b | 79 2e 49 4d 44 2e 53 74 |67@spark|y.IMD.St|
|000000d0| 65 72 6c 69 6e 67 2e 43 | 4f 4d 3e 0a 44 61 74 65 |erling.C|OM>.Date|
|000000e0| 3a 20 36 20 41 70 72 20 | 39 31 20 30 32 3a 33 39 |: 6 Apr |91 02:39|
|000000f0| 3a 33 39 20 47 4d 54 0a | 41 70 70 72 6f 76 65 64 |:39 GMT.|Approved|
|00000100| 3a 20 6b 65 6e 74 40 73 | 70 61 72 6b 79 2e 69 6d |: kent@s|parky.im|
|00000110| 64 2e 73 74 65 72 6c 69 | 6e 67 2e 63 6f 6d 0a 58 |d.sterli|ng.com.X|
|00000120| 2d 43 68 65 63 6b 73 75 | 6d 2d 53 6e 65 66 72 75 |-Checksu|m-Snefru|
|00000130| 3a 20 39 33 63 33 31 63 | 63 62 20 32 61 66 35 62 |: 93c31c|cb 2af5b|
|00000140| 38 64 65 20 33 66 33 31 | 65 66 32 36 20 36 37 31 |8de 3f31|ef26 671|
|00000150| 64 32 65 38 66 0a 0a 53 | 75 62 6d 69 74 74 65 64 |d2e8f..S|ubmitted|
|00000160| 2d 62 79 3a 20 42 69 6c | 6c 20 52 61 6e 64 6c 65 |-by: Bil|l Randle|
|00000170| 20 3c 62 69 6c 6c 72 40 | 73 61 61 62 2e 43 4e 41 | <billr@|saab.CNA|
|00000180| 2e 54 45 4b 2e 43 4f 4d | 3e 0a 50 6f 73 74 69 6e |.TEK.COM|>.Postin|
|00000190| 67 2d 6e 75 6d 62 65 72 | 3a 20 56 6f 6c 75 6d 65 |g-number|: Volume|
|000001a0| 20 31 37 2c 20 49 73 73 | 75 65 20 39 32 0a 41 72 | 17, Iss|ue 92.Ar|
|000001b0| 63 68 69 76 65 2d 6e 61 | 6d 65 3a 20 63 61 6c 65 |chive-na|me: cale|
|000001c0| 6e 74 6f 6f 6c 2f 70 61 | 72 74 31 31 0a 0a 23 21 |ntool/pa|rt11..#!|
|000001d0| 20 2f 62 69 6e 2f 73 68 | 0a 23 20 54 68 69 73 20 | /bin/sh|.# This |
|000001e0| 69 73 20 61 20 73 68 65 | 6c 6c 20 61 72 63 68 69 |is a she|ll archi|
|000001f0| 76 65 2e 20 20 52 65 6d | 6f 76 65 20 61 6e 79 74 |ve. Rem|ove anyt|
|00000200| 68 69 6e 67 20 62 65 66 | 6f 72 65 20 74 68 69 73 |hing bef|ore this|
|00000210| 20 6c 69 6e 65 2c 20 74 | 68 65 6e 20 75 6e 70 61 | line, t|hen unpa|
|00000220| 63 6b 0a 23 20 69 74 20 | 62 79 20 73 61 76 69 6e |ck.# it |by savin|
|00000230| 67 20 69 74 20 69 6e 74 | 6f 20 61 20 66 69 6c 65 |g it int|o a file|
|00000240| 20 61 6e 64 20 74 79 70 | 69 6e 67 20 22 73 68 20 | and typ|ing "sh |
|00000250| 66 69 6c 65 22 2e 20 20 | 54 6f 20 6f 76 65 72 77 |file". |To overw|
|00000260| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 0a 23 20 |rite exi|sting.# |
|00000270| 66 69 6c 65 73 2c 20 74 | 79 70 65 20 22 73 68 20 |files, t|ype "sh |
|00000280| 66 69 6c 65 20 2d 63 22 | 2e 20 20 59 6f 75 20 63 |file -c"|. You c|
|00000290| 61 6e 20 61 6c 73 6f 20 | 66 65 65 64 20 74 68 69 |an also |feed thi|
|000002a0| 73 20 61 73 20 73 74 61 | 6e 64 61 72 64 20 69 6e |s as sta|ndard in|
|000002b0| 70 75 74 20 76 69 61 0a | 23 20 75 6e 73 68 61 72 |put via.|# unshar|
|000002c0| 2c 20 6f 72 20 62 79 20 | 74 79 70 69 6e 67 20 22 |, or by |typing "|
|000002d0| 73 68 20 3c 66 69 6c 65 | 22 2c 20 65 2e 67 2e 2e |sh <file|", e.g..|
|000002e0| 20 20 49 66 20 74 68 69 | 73 20 61 72 63 68 69 76 | If thi|s archiv|
|000002f0| 65 20 69 73 20 63 6f 6d | 70 6c 65 74 65 2c 20 79 |e is com|plete, y|
|00000300| 6f 75 0a 23 20 77 69 6c | 6c 20 73 65 65 20 74 68 |ou.# wil|l see th|
|00000310| 65 20 66 6f 6c 6c 6f 77 | 69 6e 67 20 6d 65 73 73 |e follow|ing mess|
|00000320| 61 67 65 20 61 74 20 74 | 68 65 20 65 6e 64 3a 0a |age at t|he end:.|
|00000330| 23 09 09 22 45 6e 64 20 | 6f 66 20 61 72 63 68 69 |#.."End |of archi|
|00000340| 76 65 20 31 31 20 28 6f | 66 20 32 33 29 2e 22 0a |ve 11 (o|f 23).".|
|00000350| 23 20 43 6f 6e 74 65 6e | 74 73 3a 20 20 63 61 6c |# Conten|ts: cal|
|00000360| 32 63 74 2e 63 20 64 61 | 74 65 73 2f 65 76 65 6e |2ct.c da|tes/even|
|00000370| 74 73 20 65 78 70 69 72 | 65 2e 63 20 74 6f 6f 6c |ts expir|e.c tool|
|00000380| 2e 63 0a 23 20 57 72 61 | 70 70 65 64 20 62 79 20 |.c.# Wra|pped by |
|00000390| 62 69 6c 6c 72 40 73 61 | 61 62 20 6f 6e 20 54 68 |billr@sa|ab on Th|
|000003a0| 75 20 4d 61 72 20 32 38 | 20 30 38 3a 33 38 3a 32 |u Mar 28| 08:38:2|
|000003b0| 32 20 31 39 39 31 0a 50 | 41 54 48 3d 2f 62 69 6e |2 1991.P|ATH=/bin|
|000003c0| 3a 2f 75 73 72 2f 62 69 | 6e 3a 2f 75 73 72 2f 75 |:/usr/bi|n:/usr/u|
|000003d0| 63 62 20 3b 20 65 78 70 | 6f 72 74 20 50 41 54 48 |cb ; exp|ort PATH|
|000003e0| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 63 61 6c |.if test| -f 'cal|
|000003f0| 32 63 74 2e 63 27 20 2d | 61 20 22 24 7b 31 7d 22 |2ct.c' -|a "${1}"|
|00000400| 20 21 3d 20 22 2d 63 22 | 20 3b 20 74 68 65 6e 20 | != "-c"| ; then |
|00000410| 0a 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 57 69 |. echo |shar: Wi|
|00000420| 6c 6c 20 6e 6f 74 20 63 | 6c 6f 62 62 65 72 20 65 |ll not c|lobber e|
|00000430| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 20 5c 22 27 |xisting |file \"'|
|00000440| 63 61 6c 32 63 74 2e 63 | 27 5c 22 0a 65 6c 73 65 |cal2ct.c|'\".else|
|00000450| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 45 78 74 72 |.echo sh|ar: Extr|
|00000460| 61 63 74 69 6e 67 20 5c | 22 27 63 61 6c 32 63 74 |acting \|"'cal2ct|
|00000470| 2e 63 27 5c 22 20 5c 28 | 31 31 33 37 39 20 63 68 |.c'\" \(|11379 ch|
|00000480| 61 72 61 63 74 65 72 73 | 5c 29 0a 73 65 64 20 22 |aracters|\).sed "|
|00000490| 73 2f 5e 58 2f 2f 22 20 | 3e 27 63 61 6c 32 63 74 |s/^X//" |>'cal2ct|
|000004a0| 2e 63 27 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 46 49 |.c' <<'E|ND_OF_FI|
|000004b0| 4c 45 27 0a 58 2f 2a 0a | 58 20 2a 20 24 48 65 61 |LE'.X/*.|X * $Hea|
|000004c0| 64 65 72 3a 20 63 61 6c | 32 63 74 2e 63 2c 76 20 |der: cal|2ct.c,v |
|000004d0| 32 2e 34 20 39 31 2f 30 | 33 2f 32 37 20 31 36 3a |2.4 91/0|3/27 16:|
|000004e0| 34 34 3a 35 34 20 62 69 | 6c 6c 72 20 45 78 70 20 |44:54 bi|llr Exp |
|000004f0| 24 0a 58 20 2a 2f 0a 58 | 2f 2a 0a 58 20 2a 20 63 |$.X */.X|/*.X * c|
|00000500| 61 6c 32 63 74 20 2d 20 | 63 6f 6e 76 65 72 74 20 |al2ct - |convert |
|00000510| 63 61 6c 65 6e 64 61 72 | 20 72 65 6d 69 6e 64 65 |calendar| reminde|
|00000520| 72 20 66 69 6c 65 73 20 | 74 6f 20 63 61 6c 65 6e |r files |to calen|
|00000530| 74 6f 6f 6c 20 73 74 79 | 6c 65 20 66 69 6c 65 73 |tool sty|le files|
|00000540| 0a 58 20 2a 0a 58 20 2a | 20 41 75 74 68 6f 72 3a |.X *.X *| Author:|
|00000550| 20 42 69 6c 6c 20 52 61 | 6e 64 6c 65 2c 20 54 65 | Bill Ra|ndle, Te|
|00000560| 6b 74 72 6f 6e 69 78 2c | 20 49 6e 63 2e 20 3c 62 |ktronix,| Inc. <b|
|00000570| 69 6c 6c 72 40 73 61 61 | 62 2e 43 4e 41 2e 54 45 |illr@saa|b.CNA.TE|
|00000580| 4b 2e 43 4f 4d 3e 0a 58 | 20 2a 0a 58 20 2a 20 43 |K.COM>.X| *.X * C|
|00000590| 6f 70 79 72 69 67 68 74 | 20 28 43 29 20 31 39 38 |opyright| (C) 198|
|000005a0| 39 2c 20 31 39 39 31 20 | 54 65 6b 74 72 6f 6e 69 |9, 1991 |Tektroni|
|000005b0| 78 2c 20 49 6e 63 2e 20 | 20 41 6c 6c 20 52 69 67 |x, Inc. | All Rig|
|000005c0| 68 74 73 20 52 65 73 65 | 72 76 65 64 0a 58 20 2a |hts Rese|rved.X *|
|000005d0| 0a 58 20 2a 20 50 65 72 | 6d 69 73 73 69 6f 6e 20 |.X * Per|mission |
|000005e0| 69 73 20 68 65 72 65 62 | 79 20 67 72 61 6e 74 65 |is hereb|y grante|
|000005f0| 64 20 74 6f 20 75 73 65 | 20 61 6e 64 20 6d 6f 64 |d to use| and mod|
|00000600| 69 66 79 20 74 68 69 73 | 20 63 6f 64 65 20 69 6e |ify this| code in|
|00000610| 20 73 6f 75 72 63 65 0a | 58 20 2a 20 6f 72 20 62 | source.|X * or b|
|00000620| 69 6e 61 72 79 20 66 6f | 72 6d 20 61 73 20 6c 6f |inary fo|rm as lo|
|00000630| 6e 67 20 61 73 20 69 74 | 20 69 73 20 6e 6f 74 20 |ng as it| is not |
|00000640| 73 6f 6c 64 20 66 6f 72 | 20 70 72 6f 66 69 74 20 |sold for| profit |
|00000650| 61 6e 64 20 74 68 69 73 | 20 63 6f 70 79 72 69 67 |and this| copyrig|
|00000660| 68 74 0a 58 20 2a 20 6e | 6f 74 69 63 65 20 72 65 |ht.X * n|otice re|
|00000670| 6d 61 69 6e 73 20 69 6e | 74 61 63 74 2e 0a 58 20 |mains in|tact..X |
|00000680| 2a 2f 0a 58 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |*/.X.X#i|nclude "|
|00000690| 63 74 2e 68 22 0a 58 23 | 69 6e 63 6c 75 64 65 20 |ct.h".X#|include |
|000006a0| 3c 73 74 64 69 6f 2e 68 | 3e 0a 58 23 69 6e 63 6c |<stdio.h|>.X#incl|
|000006b0| 75 64 65 20 3c 63 74 79 | 70 65 2e 68 3e 0a 58 23 |ude <cty|pe.h>.X#|
|000006c0| 69 6e 63 6c 75 64 65 20 | 3c 73 79 73 2f 74 69 6d |include |<sys/tim|
|000006d0| 65 2e 68 3e 0a 58 0a 58 | 73 74 72 75 63 74 20 61 |e.h>.X.X|struct a|
|000006e0| 70 70 74 5f 65 6e 74 72 | 79 20 61 70 70 74 73 2c |ppt_entr|y appts,|
|000006f0| 20 2a 61 70 74 72 3b 0a | 58 63 68 61 72 20 66 69 | *aptr;.|Xchar fi|
|00000700| 6c 65 6e 61 6d 65 5b 31 | 32 38 5d 2c 20 2a 66 69 |lename[1|28], *fi|
|00000710| 6c 65 2c 20 2a 6f 66 69 | 6c 65 3b 0a 58 46 49 4c |le, *ofi|le;.XFIL|
|00000720| 45 20 2a 66 70 3b 0a 58 | 73 74 72 75 63 74 20 74 |E *fp;.X|struct t|
|00000730| 6d 20 63 75 72 72 65 6e | 74 2c 20 73 74 61 72 74 |m curren|t, start|
|00000740| 2c 20 74 6f 64 61 79 2c | 20 2a 6c 6f 63 61 6c 74 |, today,| *localt|
|00000750| 69 6d 65 28 29 3b 0a 58 | 73 74 72 75 63 74 20 74 |ime();.X|struct t|
|00000760| 69 6d 65 76 61 6c 20 74 | 70 3b 0a 58 69 6e 74 20 |imeval t|p;.Xint |
|00000770| 72 75 6e 5f 64 61 79 73 | 20 3d 20 2d 31 2c 20 75 |run_days| = -1, u|
|00000780| 73 65 5f 64 61 74 65 20 | 3d 20 30 3b 0a 58 69 6e |se_date |= 0;.Xin|
|00000790| 74 20 64 61 79 5f 66 69 | 72 73 74 20 3d 20 46 41 |t day_fi|rst = FA|
|000007a0| 4c 53 45 3b 0a 58 76 6f | 69 64 20 65 72 72 5f 72 |LSE;.Xvo|id err_r|
|000007b0| 70 74 28 29 3b 0a 58 0a | 58 65 78 74 65 72 6e 20 |pt();.X.|Xextern |
|000007c0| 63 68 61 72 20 2a 67 65 | 74 65 6e 76 28 29 3b 0a |char *ge|tenv();.|
|000007d0| 58 65 78 74 65 72 6e 20 | 69 6e 74 20 6f 70 74 69 |Xextern |int opti|
|000007e0| 6e 64 3b 0a 58 65 78 74 | 65 72 6e 20 63 68 61 72 |nd;.Xext|ern char|
|000007f0| 20 2a 6f 70 74 61 72 67 | 3b 0a 58 0a 58 6d 61 69 | *optarg|;.X.Xmai|
|00000800| 6e 28 61 72 67 63 2c 20 | 61 72 67 76 29 0a 58 69 |n(argc, |argv).Xi|
|00000810| 6e 74 20 61 72 67 63 3b | 0a 58 63 68 61 72 20 2a |nt argc;|.Xchar *|
|00000820| 61 72 67 76 5b 5d 3b 0a | 58 7b 0a 58 09 69 6e 74 |argv[];.|X{.X.int|
|00000830| 20 66 6c 61 67 3b 0a 58 | 0a 58 09 67 65 74 74 69 | flag;.X|.X.getti|
|00000840| 6d 65 6f 66 64 61 79 28 | 26 74 70 2c 20 4e 55 4c |meofday(|&tp, NUL|
|00000850| 4c 29 3b 0a 58 09 63 75 | 72 72 65 6e 74 20 3d 20 |L);.X.cu|rrent = |
|00000860| 74 6f 64 61 79 20 3d 20 | 2a 6c 6f 63 61 6c 74 69 |today = |*localti|
|00000870| 6d 65 28 26 74 70 2e 74 | 76 5f 73 65 63 29 3b 0a |me(&tp.t|v_sec);.|
|00000880| 58 09 6f 66 69 6c 65 20 | 3d 20 4e 55 4c 4c 3b 0a |X.ofile |= NULL;.|
|00000890| 58 09 77 68 69 6c 65 20 | 28 28 66 6c 61 67 20 3d |X.while |((flag =|
|000008a0| 20 67 65 74 6f 70 74 28 | 61 72 67 63 2c 20 61 72 | getopt(|argc, ar|
|000008b0| 67 76 2c 20 22 64 3a 66 | 3a 72 3a 65 45 22 29 29 |gv, "d:f|:r:eE"))|
|000008c0| 20 21 3d 20 45 4f 46 29 | 0a 58 09 09 73 77 69 74 | != EOF)|.X..swit|
|000008d0| 63 68 20 28 66 6c 61 67 | 29 20 7b 0a 58 09 09 09 |ch (flag|) {.X...|
|000008e0| 63 61 73 65 20 27 64 27 | 3a 20 20 2f 2a 20 73 74 |case 'd'|: /* st|
|000008f0| 61 72 74 69 6e 67 20 64 | 61 74 65 20 2a 2f 0a 58 |arting d|ate */.X|
|00000900| 09 09 09 09 2f 2a 20 75 | 70 64 61 74 65 73 20 22 |..../* u|pdates "|
|00000910| 63 75 72 72 65 6e 74 22 | 20 2a 2f 0a 58 09 09 09 |current"| */.X...|
|00000920| 09 28 76 6f 69 64 29 70 | 61 72 73 65 5f 64 61 74 |.(void)p|arse_dat|
|00000930| 65 28 6f 70 74 61 72 67 | 2c 20 54 52 55 45 29 3b |e(optarg|, TRUE);|
|00000940| 0a 58 09 09 09 09 75 73 | 65 5f 64 61 74 65 2b 2b |.X....us|e_date++|
|00000950| 3b 0a 58 09 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |;.X....b|reak;.X.|
|00000960| 09 09 63 61 73 65 20 27 | 65 27 3a 0a 58 09 09 09 |..case '|e':.X...|
|00000970| 63 61 73 65 20 27 45 27 | 3a 20 20 2f 2a 20 45 75 |case 'E'|: /* Eu|
|00000980| 72 6f 70 65 61 6e 20 73 | 74 79 6c 65 20 64 61 74 |ropean s|tyle dat|
|00000990| 65 73 20 2a 2f 0a 58 09 | 09 09 09 64 61 79 5f 66 |es */.X.|...day_f|
|000009a0| 69 72 73 74 20 3d 20 54 | 52 55 45 3b 0a 58 09 09 |irst = T|RUE;.X..|
|000009b0| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 09 63 61 73 |..break;|.X...cas|
|000009c0| 65 20 27 66 27 3a 20 20 | 2f 2a 20 6f 75 74 70 75 |e 'f': |/* outpu|
|000009d0| 74 20 66 69 6c 65 20 2a | 2f 0a 58 09 09 09 09 6f |t file *|/.X....o|
|000009e0| 66 69 6c 65 20 3d 20 6f | 70 74 61 72 67 3b 0a 58 |file = o|ptarg;.X|
|000009f0| 09 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 09 09 63 |....brea|k;.X...c|
|00000a00| 61 73 65 20 27 72 27 3a | 20 20 2f 2a 20 6e 75 6d |ase 'r':| /* num|
|00000a10| 62 65 72 20 6f 66 20 64 | 61 79 73 20 74 6f 20 70 |ber of d|ays to p|
|00000a20| 72 6f 63 65 73 73 20 2a | 2f 0a 58 09 09 09 09 72 |rocess *|/.X....r|
|00000a30| 75 6e 5f 64 61 79 73 20 | 3d 20 61 74 6f 69 28 6f |un_days |= atoi(o|
|00000a40| 70 74 61 72 67 29 3b 0a | 58 09 09 09 09 62 72 65 |ptarg);.|X....bre|
|00000a50| 61 6b 3b 0a 58 09 09 09 | 64 65 66 61 75 6c 74 3a |ak;.X...|default:|
|00000a60| 20 20 2f 2a 20 75 6e 6b | 6e 6f 77 6e 20 6f 70 74 | /* unk|nown opt|
|00000a70| 69 6f 6e 20 2a 2f 0a 58 | 09 09 09 09 66 70 72 69 |ion */.X|....fpri|
|00000a80| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 75 73 61 |ntf(stde|rr, "usa|
|00000a90| 67 65 3a 20 63 61 6c 32 | 63 74 20 5b 2d 64 20 64 |ge: cal2|ct [-d d|
|00000aa0| 61 74 65 5d 20 5b 2d 72 | 20 64 61 79 73 5d 20 5b |ate] [-r| days] [|
|00000ab0| 2d 65 5d 20 5b 2d 66 20 | 6f 75 74 66 69 6c 65 5d |-e] [-f |outfile]|
|00000ac0| 20 5b 66 69 6c 65 5d 5c | 6e 22 29 3b 0a 58 09 09 | [file]\|n");.X..|
|00000ad0| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 7d 0a 58 0a |..break;|.X..}.X.|
|00000ae0| 58 09 73 74 61 72 74 20 | 3d 20 63 75 72 72 65 6e |X.start |= curren|
|00000af0| 74 3b 0a 58 09 69 66 20 | 28 6f 70 74 69 6e 64 20 |t;.X.if |(optind |
|00000b00| 3c 20 61 72 67 63 29 0a | 58 09 09 66 69 6c 65 20 |< argc).|X..file |
|00000b10| 3d 20 61 72 67 76 5b 6f | 70 74 69 6e 64 5d 3b 0a |= argv[o|ptind];.|
|00000b20| 58 09 65 6c 73 65 20 7b | 0a 58 09 09 73 74 72 63 |X.else {|.X..strc|
|00000b30| 70 79 28 66 69 6c 65 6e | 61 6d 65 2c 20 67 65 74 |py(filen|ame, get|
|00000b40| 65 6e 76 28 22 48 4f 4d | 45 22 29 29 3b 0a 58 09 |env("HOM|E"));.X.|
|00000b50| 09 73 74 72 63 61 74 28 | 66 69 6c 65 6e 61 6d 65 |.strcat(|filename|
|00000b60| 2c 20 22 2f 63 61 6c 65 | 6e 64 61 72 22 29 3b 0a |, "/cale|ndar");.|
|00000b70| 58 09 09 66 69 6c 65 20 | 3d 20 66 69 6c 65 6e 61 |X..file |= filena|
|00000b80| 6d 65 3b 0a 58 09 7d 0a | 58 0a 58 09 69 66 20 28 |me;.X.}.|X.X.if (|
|00000b90| 28 66 70 20 3d 20 66 6f | 70 65 6e 28 66 69 6c 65 |(fp = fo|pen(file|
|00000ba0| 2c 20 22 72 22 29 29 20 | 3d 3d 20 4e 55 4c 4c 29 |, "r")) |== NULL)|
|00000bb0| 20 7b 0a 58 09 09 66 70 | 72 69 6e 74 66 28 73 74 | {.X..fp|rintf(st|
|00000bc0| 64 65 72 72 2c 20 22 63 | 61 6e 27 74 20 6f 70 65 |derr, "c|an't ope|
|00000bd0| 6e 20 63 61 6c 65 6e 64 | 61 72 20 66 69 6c 65 20 |n calend|ar file |
|00000be0| 66 6f 72 20 72 65 61 64 | 69 6e 67 5c 6e 22 29 3b |for read|ing\n");|
|00000bf0| 0a 58 09 09 65 78 69 74 | 28 31 29 3b 0a 58 09 7d |.X..exit|(1);.X.}|
|00000c00| 0a 58 09 69 66 20 28 21 | 72 65 61 64 5f 63 61 6c |.X.if (!|read_cal|
|00000c10| 5f 66 69 6c 65 28 29 29 | 20 7b 0a 58 09 09 66 70 |_file())| {.X..fp|
|00000c20| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 6e |rintf(st|derr, "n|
|00000c30| 6f 20 72 65 6d 69 6e 64 | 65 72 73 20 72 65 61 64 |o remind|ers read|
|00000c40| 20 66 72 6f 6d 20 25 73 | 5c 6e 22 2c 20 66 69 6c | from %s|\n", fil|
|00000c50| 65 29 3b 0a 58 09 09 65 | 78 69 74 28 31 29 3b 0a |e);.X..e|xit(1);.|
|00000c60| 58 09 7d 0a 58 09 66 63 | 6c 6f 73 65 28 66 70 29 |X.}.X.fc|lose(fp)|
|00000c70| 3b 0a 58 09 69 66 20 28 | 6f 66 69 6c 65 29 0a 58 |;.X.if (|ofile).X|
|00000c80| 09 09 73 74 72 63 70 79 | 28 66 69 6c 65 6e 61 6d |..strcpy|(filenam|
|00000c90| 65 2c 20 6f 66 69 6c 65 | 29 3b 0a 58 09 65 6c 73 |e, ofile|);.X.els|
|00000ca0| 65 20 7b 0a 58 09 09 73 | 74 72 63 70 79 28 66 69 |e {.X..s|trcpy(fi|
|00000cb0| 6c 65 6e 61 6d 65 2c 20 | 67 65 74 65 6e 76 28 22 |lename, |getenv("|
|00000cc0| 48 4f 4d 45 22 29 29 3b | 0a 58 09 09 73 74 72 63 |HOME"));|.X..strc|
|00000cd0| 61 74 28 66 69 6c 65 6e | 61 6d 65 2c 20 22 2f 2e |at(filen|ame, "/.|
|00000ce0| 61 70 70 6f 69 6e 74 6d | 65 6e 74 73 22 29 3b 0a |appointm|ents");.|
|00000cf0| 58 09 7d 0a 58 09 69 66 | 20 28 28 66 70 20 3d 20 |X.}.X.if| ((fp = |
|00000d00| 66 6f 70 65 6e 28 66 69 | 6c 65 6e 61 6d 65 2c 20 |fopen(fi|lename, |
|00000d10| 22 77 22 29 29 20 3d 3d | 20 4e 55 4c 4c 29 20 7b |"w")) ==| NULL) {|
|00000d20| 0a 58 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |.X..fpri|ntf(stde|
|00000d30| 72 72 2c 20 22 63 61 6e | 27 74 20 6f 70 65 6e 20 |rr, "can|'t open |
|00000d40| 61 70 70 6f 69 6e 74 6d | 65 6e 74 73 20 66 69 6c |appointm|ents fil|
|00000d50| 65 20 66 6f 72 20 77 72 | 69 74 69 6e 67 5c 6e 22 |e for wr|iting\n"|
|00000d60| 29 3b 0a 58 09 09 65 78 | 69 74 28 31 29 3b 0a 58 |);.X..ex|it(1);.X|
|00000d70| 09 7d 0a 58 09 77 72 69 | 74 65 5f 63 74 5f 66 69 |.}.X.wri|te_ct_fi|
|00000d80| 6c 65 28 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 0a 58 |le();.X}|.X.X/*.X|
|00000d90| 20 2a 20 72 65 61 64 20 | 64 61 74 65 73 20 66 72 | * read |dates fr|
|00000da0| 6f 6d 20 63 61 6c 65 6e | 64 61 72 20 66 69 6c 65 |om calen|dar file|
|00000db0| 20 61 6e 64 20 73 74 75 | 66 66 20 69 6e 74 6f 20 | and stu|ff into |
|00000dc0| 61 70 70 74 73 20 73 74 | 72 75 63 74 0a 58 20 2a |appts st|ruct.X *|
|00000dd0| 2f 0a 58 72 65 61 64 5f | 63 61 6c 5f 66 69 6c 65 |/.Xread_|cal_file|
|00000de0| 28 29 0a 58 7b 0a 58 09 | 63 68 61 72 20 2a 66 67 |().X{.X.|char *fg|
|00000df0| 65 74 73 28 29 3b 0a 58 | 09 63 68 61 72 20 62 75 |ets();.X|.char bu|
|00000e00| 66 5b 35 31 32 5d 3b 0a | 58 09 73 74 72 75 63 74 |f[512];.|X.struct|
|00000e10| 20 61 70 70 74 5f 65 6e | 74 72 79 20 2a 6f 70 74 | appt_en|try *opt|
|00000e20| 72 3b 0a 58 0a 58 09 61 | 70 74 72 20 3d 20 26 61 |r;.X.X.a|ptr = &a|
|00000e30| 70 70 74 73 3b 0a 58 09 | 77 68 69 6c 65 20 28 66 |ppts;.X.|while (f|
|00000e40| 67 65 74 73 28 62 75 66 | 2c 20 35 31 32 2c 20 66 |gets(buf|, 512, f|
|00000e50| 70 29 20 21 3d 20 4e 55 | 4c 4c 29 20 7b 0a 58 09 |p) != NU|LL) {.X.|
|00000e60| 09 61 70 74 72 2d 3e 72 | 65 70 65 61 74 20 3d 20 |.aptr->r|epeat = |
|00000e70| 61 70 74 72 2d 3e 6c 6f | 6f 6b 61 68 65 61 64 20 |aptr->lo|okahead |
|00000e80| 3d 20 30 3b 0a 58 09 09 | 61 70 74 72 2d 3e 77 61 |= 0;.X..|aptr->wa|
|00000e90| 72 6e 20 3d 20 31 30 3b | 0a 58 09 09 61 70 74 72 |rn = 10;|.X..aptr|
|00000ea0| 2d 3e 66 6c 61 67 73 20 | 3d 20 41 5f 4e 4f 54 45 |->flags |= A_NOTE|
|00000eb0| 3b 0a 58 09 09 61 70 74 | 72 2d 3e 6e 65 78 74 20 |;.X..apt|r->next |
|00000ec0| 3d 20 4e 55 4c 4c 3b 0a | 58 09 09 69 66 20 28 70 |= NULL;.|X..if (p|
|00000ed0| 61 72 73 65 5f 63 61 6c | 5f 64 61 74 65 28 62 75 |arse_cal|_date(bu|
|00000ee0| 66 29 29 0a 58 09 09 09 | 63 6f 6e 74 69 6e 75 65 |f)).X...|continue|
|00000ef0| 3b 0a 58 09 09 61 70 74 | 72 2d 3e 6e 65 78 74 20 |;.X..apt|r->next |
|00000f00| 3d 20 28 73 74 72 75 63 | 74 20 61 70 70 74 5f 65 |= (struc|t appt_e|
|00000f10| 6e 74 72 79 20 2a 29 6d | 61 6c 6c 6f 63 28 73 69 |ntry *)m|alloc(si|
|00000f20| 7a 65 6f 66 28 73 74 72 | 75 63 74 20 61 70 70 74 |zeof(str|uct appt|
|00000f30| 5f 65 6e 74 72 79 29 29 | 3b 0a 58 09 09 69 66 20 |_entry))|;.X..if |
|00000f40| 28 61 70 74 72 2d 3e 6e | 65 78 74 20 3d 3d 20 4e |(aptr->n|ext == N|
|00000f50| 55 4c 4c 29 20 7b 0a 58 | 09 09 09 66 70 72 69 6e |ULL) {.X|...fprin|
|00000f60| 74 66 28 73 74 64 65 72 | 72 2c 20 22 6f 75 74 20 |tf(stder|r, "out |
|00000f70| 6f 66 20 6d 65 6d 6f 72 | 79 5c 6e 22 29 3b 0a 58 |of memor|y\n");.X|
|00000f80| 09 09 09 72 65 74 75 72 | 6e 3b 0a 58 09 09 7d 0a |...retur|n;.X..}.|
|00000f90| 58 09 09 6f 70 74 72 20 | 3d 20 61 70 74 72 3b 0a |X..optr |= aptr;.|
|00000fa0| 58 09 09 61 70 74 72 20 | 3d 20 61 70 74 72 2d 3e |X..aptr |= aptr->|
|00000fb0| 6e 65 78 74 3b 0a 58 09 | 7d 0a 58 09 69 66 20 28 |next;.X.|}.X.if (|
|00000fc0| 61 70 74 72 20 3d 3d 20 | 26 61 70 70 74 73 29 0a |aptr == |&appts).|
|00000fd0| 58 09 09 72 65 74 75 72 | 6e 28 30 29 3b 09 2f 2a |X..retur|n(0);./*|
|00000fe0| 20 6e 6f 74 68 69 6e 67 | 20 72 65 61 64 20 2a 2f | nothing| read */|
|00000ff0| 0a 58 09 2f 2a 20 64 6f | 6e 27 74 20 6e 65 65 64 |.X./* do|n't need|
|00001000| 20 74 68 65 20 6c 61 73 | 74 20 6f 6e 65 20 2a 2f | the las|t one */|
|00001010| 0a 58 09 66 72 65 65 28 | 61 70 74 72 29 3b 0a 58 |.X.free(|aptr);.X|
|00001020| 09 6f 70 74 72 2d 3e 6e | 65 78 74 20 3d 20 4e 55 |.optr->n|ext = NU|
|00001030| 4c 4c 3b 0a 58 09 72 65 | 74 75 72 6e 28 31 29 3b |LL;.X.re|turn(1);|
|00001040| 0a 58 7d 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 77 72 |.X}.X.X/|*.X * wr|
|00001050| 69 74 65 20 6f 75 74 20 | 74 68 65 20 6e 65 77 20 |ite out |the new |
|00001060| 2e 61 70 70 6f 69 6e 74 | 6d 65 6e 74 73 20 66 69 |.appoint|ments fi|
|00001070| 6c 65 0a 58 20 2a 2f 0a | 58 77 72 69 74 65 5f 63 |le.X */.|Xwrite_c|
|00001080| 74 5f 66 69 6c 65 28 29 | 0a 58 7b 0a 58 09 61 70 |t_file()|.X{.X.ap|
|00001090| 74 72 20 3d 20 26 61 70 | 70 74 73 3b 0a 58 09 66 |tr = &ap|pts;.X.f|
|000010a0| 70 75 74 73 28 48 45 41 | 44 45 52 2c 20 66 70 29 |puts(HEA|DER, fp)|
|000010b0| 3b 0a 58 09 77 68 69 6c | 65 20 28 61 70 74 72 29 |;.X.whil|e (aptr)|
|000010c0| 20 7b 0a 58 09 09 69 66 | 20 28 70 75 74 5f 61 65 | {.X..if| (put_ae|
|000010d0| 6e 74 72 79 28 66 70 2c | 20 61 70 74 72 29 29 20 |ntry(fp,| aptr)) |
|000010e0| 7b 0a 58 09 09 09 66 70 | 72 69 6e 74 66 28 73 74 |{.X...fp|rintf(st|
|000010f0| 64 65 72 72 2c 20 22 65 | 72 72 6f 72 20 77 72 69 |derr, "e|rror wri|
|00001100| 74 69 6e 67 20 61 70 70 | 6f 69 6e 74 6d 65 6e 74 |ting app|ointment|
|00001110| 73 20 66 69 6c 65 5c 6e | 22 29 3b 0a 58 09 09 09 |s file\n|");.X...|
|00001120| 72 65 74 75 72 6e 3b 0a | 58 09 09 7d 0a 58 09 09 |return;.|X..}.X..|
|00001130| 61 70 74 72 20 3d 20 61 | 70 74 72 2d 3e 6e 65 78 |aptr = a|ptr->nex|
|00001140| 74 3b 0a 58 09 7d 0a 58 | 7d 0a 58 0a 58 63 68 61 |t;.X.}.X|}.X.Xcha|
|00001150| 72 20 2a 64 61 79 6e 61 | 6d 65 5b 37 5d 20 3d 20 |r *dayna|me[7] = |
|00001160| 7b 22 53 55 22 2c 20 22 | 4d 4f 22 2c 20 22 54 55 |{"SU", "|MO", "TU|
|00001170| 22 2c 20 22 57 45 22 2c | 20 22 54 48 22 2c 20 22 |", "WE",| "TH", "|
|00001180| 46 52 22 2c 20 22 53 41 | 22 7d 3b 0a 58 63 68 61 |FR", "SA|"};.Xcha|
|00001190| 72 20 2a 6d 6f 6e 74 68 | 6e 61 6d 65 5b 31 32 5d |r *month|name[12]|
|000011a0| 20 3d 20 7b 22 4a 41 4e | 22 2c 20 22 46 45 42 22 | = {"JAN|", "FEB"|
|000011b0| 2c 20 22 4d 41 52 22 2c | 20 22 41 50 52 22 2c 20 |, "MAR",| "APR", |
|000011c0| 22 4d 41 59 22 2c 20 22 | 4a 55 4e 22 2c 0a 58 09 |"MAY", "|JUN",.X.|
|000011d0| 22 4a 55 4c 22 2c 20 22 | 41 55 47 22 2c 20 22 53 |"JUL", "|AUG", "S|
|000011e0| 45 50 22 2c 20 22 4f 43 | 54 22 2c 20 22 4e 4f 56 |EP", "OC|T", "NOV|
|000011f0| 22 2c 20 22 44 45 43 22 | 7d 3b 0a 58 0a 58 2f 2a |", "DEC"|};.X.X/*|
|00001200| 0a 58 20 2a 20 70 61 72 | 73 65 20 74 68 65 20 64 |.X * par|se the d|
|00001210| 61 74 65 20 69 6e 20 74 | 68 65 20 62 75 66 66 65 |ate in t|he buffe|
|00001220| 72 20 61 6e 64 20 72 65 | 73 65 74 20 74 68 65 20 |r and re|set the |
|00001230| 22 63 75 72 72 65 6e 74 | 22 0a 58 20 2a 20 64 61 |"current|".X * da|
|00001240| 74 65 20 74 6f 20 72 65 | 66 6c 65 63 74 20 74 68 |te to re|flect th|
|00001250| 61 74 20 64 61 74 65 2e | 20 54 68 65 20 64 61 74 |at date.| The dat|
|00001260| 65 20 6d 61 79 20 74 61 | 6b 65 20 74 68 65 20 66 |e may ta|ke the f|
|00001270| 6f 72 6d 20 6f 66 20 61 | 0a 58 20 2a 20 6d 6f 6e |orm of a|.X * mon|
|00001280| 74 68 20 61 6e 64 20 64 | 61 79 20 77 68 65 72 65 |th and d|ay where|
|00001290| 20 74 68 65 20 6d 6f 6e | 74 68 20 6d 61 79 20 62 | the mon|th may b|
|000012a0| 65 20 73 70 65 6c 6c 65 | 64 20 6f 72 20 6e 75 6d |e spelle|d or num|
|000012b0| 65 72 69 63 2c 20 65 2e | 67 2e 3a 0a 58 20 2a 20 |eric, e.|g.:.X * |
|000012c0| 46 65 62 20 32 37 2c 20 | 66 65 62 20 32 37 2c 20 |Feb 27, |feb 27, |
|000012d0| 32 2f 32 37 2e 20 54 68 | 65 20 6d 6f 6e 74 68 20 |2/27. Th|e month |
|000012e0| 6d 61 79 20 62 65 20 61 | 20 60 2a 27 20 74 6f 20 |may be a| `*' to |
|000012f0| 72 65 66 65 72 20 74 6f | 20 61 6e 79 0a 58 20 2a |refer to| any.X *|
|00001300| 20 6d 6f 6e 74 68 2c 20 | 65 2e 67 2e 20 22 2a 20 | month, |e.g. "* |
|00001310| 32 37 22 20 6f 72 20 22 | 2a 20 2f 32 37 22 2e 0a |27" or "|* /27"..|
|00001320| 58 20 2a 20 4c 69 6d 69 | 74 61 74 69 6f 6e 3a 20 |X * Limi|tation: |
|00001330| 74 68 65 20 64 61 74 65 | 20 69 73 20 65 78 70 65 |the date| is expe|
|00001340| 63 74 65 64 20 74 6f 20 | 73 74 61 72 74 20 61 74 |cted to |start at|
|00001350| 20 74 68 65 20 62 65 67 | 69 6e 69 6e 67 20 6f 66 | the beg|ining of|
|00001360| 0a 58 20 2a 20 74 68 65 | 20 6c 69 6e 65 2e 20 28 |.X * the| line. (|
|00001370| 63 61 6c 65 6e 64 61 72 | 20 61 6c 6c 6f 77 73 20 |calendar| allows |
|00001380| 69 74 20 61 6e 79 77 68 | 65 72 65 20 69 6e 20 74 |it anywh|ere in t|
|00001390| 68 65 20 6c 69 6e 65 2e | 29 0a 58 20 2a 2f 0a 58 |he line.|).X */.X|
|000013a0| 70 61 72 73 65 5f 63 61 | 6c 5f 64 61 74 65 28 73 |parse_ca|l_date(s|
|000013b0| 74 72 29 0a 58 63 68 61 | 72 20 2a 73 74 72 3b 0a |tr).Xcha|r *str;.|
|000013c0| 58 7b 0a 58 09 63 68 61 | 72 20 63 5b 34 5d 3b 0a |X{.X.cha|r c[4];.|
|000013d0| 58 09 69 6e 74 20 69 2c | 20 6d 20 3d 20 2d 31 2c |X.int i,| m = -1,|
|000013e0| 20 64 20 3d 20 2d 31 3b | 0a 58 09 76 6f 69 64 20 | d = -1;|.X.void |
|000013f0| 66 69 78 5f 63 75 72 72 | 65 6e 74 5f 64 61 79 28 |fix_curr|ent_day(|
|00001400| 29 3b 0a 58 0a 58 09 63 | 75 72 72 65 6e 74 20 3d |);.X.X.c|urrent =|
|00001410| 20 73 74 61 72 74 3b 09 | 2f 2a 20 73 74 61 72 74 | start;.|/* start|
|00001420| 20 77 69 74 68 20 74 68 | 69 73 20 6d 6f 6e 74 68 | with th|is month|
|00001430| 2c 20 64 61 79 2c 20 79 | 65 61 72 20 2a 2f 0a 58 |, day, y|ear */.X|
|00001440| 09 77 68 69 6c 65 20 28 | 69 73 73 70 61 63 65 28 |.while (|isspace(|
|00001450| 2a 73 74 72 29 29 0a 58 | 09 09 2b 2b 73 74 72 3b |*str)).X|..++str;|
|00001460| 0a 58 0a 58 09 69 66 20 | 28 69 73 64 69 67 69 74 |.X.X.if |(isdigit|
|00001470| 28 2a 73 74 72 29 29 20 | 7b 0a 58 09 09 2f 2a 20 |(*str)) |{.X../* |
|00001480| 6d 75 73 74 20 62 65 20 | 61 20 6d 2f 64 20 64 61 |must be |a m/d da|
|00001490| 74 65 20 2a 2f 0a 58 09 | 09 2f 2a 20 61 73 73 75 |te */.X.|./* assu|
|000014a0| 6d 65 20 69 74 27 73 20 | 61 20 6d 6f 6e 74 68 20 |me it's |a month |
|000014b0| 66 69 72 73 74 20 2a 2f | 0a 58 09 09 6d 20 3d 20 |first */|.X..m = |
|000014c0| 2a 73 74 72 2b 2b 20 2d | 20 27 30 27 3b 0a 58 09 |*str++ -| '0';.X.|
|000014d0| 09 69 66 20 28 69 73 64 | 69 67 69 74 28 2a 73 74 |.if (isd|igit(*st|
|000014e0| 72 29 29 0a 58 09 09 09 | 6d 20 3d 20 6d 2a 31 30 |r)).X...|m = m*10|
|000014f0| 20 2b 20 2a 73 74 72 2b | 2b 20 2d 20 27 30 27 3b | + *str+|+ - '0';|
|00001500| 0a 58 09 09 2d 2d 6d 3b | 20 2f 2a 20 6d 61 6b 65 |.X..--m;| /* make|
|00001510| 20 69 74 20 7a 65 72 6f | 20 62 61 73 65 64 20 2a | it zero| based *|
|00001520| 2f 0a 58 09 09 69 66 20 | 28 2a 73 74 72 20 21 3d |/.X..if |(*str !=|
|00001530| 20 27 2f 27 29 20 7b 0a | 58 09 09 09 2f 2a 20 6e | '/') {.|X.../* n|
|00001540| 6f 20 6d 6f 72 65 20 63 | 68 61 72 73 20 3d 3e 20 |o more c|hars => |
|00001550| 62 61 64 20 66 6f 72 6d | 61 74 20 2a 2f 0a 58 09 |bad form|at */.X.|
|00001560| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00001570| 2c 20 22 62 61 64 6c 79 | 20 66 6f 72 6d 65 64 20 |, "badly| formed |
|00001580| 64 61 74 65 3a 20 25 73 | 5c 6e 22 2c 20 73 74 72 |date: %s|\n", str|
|00001590| 2d 32 29 3b 0a 58 09 09 | 09 72 65 74 75 72 6e 28 |-2);.X..|.return(|
|000015a0| 31 29 3b 0a 58 09 09 7d | 20 65 6c 73 65 20 7b 0a |1);.X..}| else {.|
|000015b0| 58 09 09 09 2b 2b 73 74 | 72 3b 0a 58 09 09 09 69 |X...++st|r;.X...i|
|000015c0| 66 20 28 69 73 64 69 67 | 69 74 28 2a 73 74 72 29 |f (isdig|it(*str)|
|000015d0| 29 20 7b 0a 58 09 09 09 | 09 64 20 3d 20 2a 73 74 |) {.X...|.d = *st|
|000015e0| 72 2b 2b 20 2d 20 27 30 | 27 3b 0a 58 09 09 09 09 |r++ - '0|';.X....|
|000015f0| 77 68 69 6c 65 20 28 69 | 73 64 69 67 69 74 28 2a |while (i|sdigit(*|
|00001600| 73 74 72 29 29 0a 58 09 | 09 09 09 09 64 20 3d 20 |str)).X.|....d = |
|00001610| 64 2a 31 30 20 2b 20 2a | 73 74 72 2b 2b 20 2d 20 |d*10 + *|str++ - |
|00001620| 27 30 27 3b 0a 58 09 09 | 09 7d 20 65 6c 73 65 20 |'0';.X..|.} else |
|00001630| 7b 0a 58 09 09 09 09 66 | 70 72 69 6e 74 66 28 73 |{.X....f|printf(s|
|00001640| 74 64 65 72 72 2c 20 22 | 62 61 64 6c 79 20 66 6f |tderr, "|badly fo|
|00001650| 72 6d 65 64 20 64 61 74 | 65 3a 20 25 73 5c 6e 22 |rmed dat|e: %s\n"|
|00001660| 2c 20 73 74 72 2d 32 29 | 3b 0a 58 09 09 09 09 72 |, str-2)|;.X....r|
|00001670| 65 74 75 72 6e 28 31 29 | 3b 0a 58 09 09 09 7d 0a |eturn(1)|;.X...}.|
|00001680| 58 09 09 7d 0a 58 09 7d | 20 65 6c 73 65 20 69 66 |X..}.X.}| else if|
|00001690| 20 28 2a 73 74 72 20 3d | 3d 20 27 2a 27 29 20 7b | (*str =|= '*') {|
|000016a0| 0a 58 09 09 61 70 74 72 | 2d 3e 66 6c 61 67 73 20 |.X..aptr|->flags |
|000016b0| 7c 3d 20 41 4c 4c 5f 4d | 4f 4e 54 48 53 3b 0a 58 ||= ALL_M|ONTHS;.X|
|000016c0| 09 09 2b 2b 73 74 72 3b | 0a 58 09 09 77 68 69 6c |..++str;|.X..whil|
|000016d0| 65 20 28 69 73 73 70 61 | 63 65 28 2a 73 74 72 29 |e (isspa|ce(*str)|
|000016e0| 20 7c 7c 20 2a 73 74 72 | 20 3d 3d 20 27 2f 27 29 | || *str| == '/')|
|000016f0| 0a 58 09 09 09 2b 2b 73 | 74 72 3b 0a 58 09 09 64 |.X...++s|tr;.X..d|
|00001700| 20 3d 20 2a 73 74 72 2b | 2b 20 2d 20 27 30 27 3b | = *str+|+ - '0';|
|00001710| 0a 58 09 09 77 68 69 6c | 65 20 28 69 73 64 69 67 |.X..whil|e (isdig|
|00001720| 69 74 28 2a 73 74 72 29 | 29 0a 58 09 09 09 64 20 |it(*str)|).X...d |
|00001730| 3d 20 64 2a 31 30 20 2b | 20 2a 73 74 72 2b 2b 20 |= d*10 +| *str++ |
|00001740| 2d 20 27 30 27 3b 0a 58 | 09 7d 20 65 6c 73 65 20 |- '0';.X|.} else |
|00001750| 7b 0a 58 09 09 2f 2a 20 | 6d 6f 6e 74 68 20 6e 61 |{.X../* |month na|
|00001760| 6d 65 20 2a 2f 0a 58 09 | 09 63 5b 30 5d 20 3d 20 |me */.X.|.c[0] = |
|00001770| 69 73 6c 6f 77 65 72 28 | 2a 73 74 72 29 20 3f 20 |islower(|*str) ? |
|00001780| 74 6f 75 70 70 65 72 28 | 2a 73 74 72 29 20 3a 20 |toupper(|*str) : |
|00001790| 2a 73 74 72 3b 0a 58 09 | 09 2b 2b 73 74 72 3b 0a |*str;.X.|.++str;.|
|000017a0| 58 09 09 63 5b 31 5d 20 | 3d 20 69 73 6c 6f 77 65 |X..c[1] |= islowe|
|000017b0| 72 28 2a 73 74 72 29 20 | 3f 20 74 6f 75 70 70 65 |r(*str) |? touppe|
|000017c0| 72 28 2a 73 74 72 29 20 | 3a 20 2a 73 74 72 3b 0a |r(*str) |: *str;.|
|000017d0| 58 09 09 69 66 20 28 2a | 2b 2b 73 74 72 29 20 7b |X..if (*|++str) {|
|000017e0| 0a 58 09 09 09 63 5b 32 | 5d 20 3d 20 69 73 6c 6f |.X...c[2|] = islo|
|000017f0| 77 65 72 28 2a 73 74 72 | 29 20 3f 20 74 6f 75 70 |wer(*str|) ? toup|
|00001800| 70 65 72 28 2a 73 74 72 | 29 20 3a 20 2a 73 74 72 |per(*str|) : *str|
|00001810| 3b 0a 58 09 09 09 63 5b | 33 5d 20 3d 20 27 5c 30 |;.X...c[|3] = '\0|
|00001820| 27 3b 0a 58 09 09 7d 20 | 65 6c 73 65 0a 58 09 09 |';.X..} |else.X..|
|00001830| 09 63 5b 32 5d 20 3d 20 | 27 5c 30 27 3b 0a 58 09 |.c[2] = |'\0';.X.|
|00001840| 09 77 68 69 6c 65 20 28 | 21 69 73 73 70 61 63 65 |.while (|!isspace|
|00001850| 28 2a 73 74 72 29 29 0a | 58 09 09 09 2b 2b 73 74 |(*str)).|X...++st|
|00001860| 72 3b 0a 58 09 09 2f 2a | 20 63 68 65 63 6b 20 6d |r;.X../*| check m|
|00001870| 6f 6e 74 68 20 6e 61 6d | 65 73 20 2a 2f 0a 58 09 |onth nam|es */.X.|
|00001880| 09 66 6f 72 20 28 69 3d | 30 3b 20 69 3c 31 32 3b |.for (i=|0; i<12;|
|00001890| 20 69 2b 2b 29 20 7b 0a | 58 09 09 09 69 66 20 28 | i++) {.|X...if (|
|000018a0| 21 73 74 72 63 6d 70 28 | 63 2c 20 6d 6f 6e 74 68 |!strcmp(|c, month|
|000018b0| 6e 61 6d 65 5b 69 5d 29 | 29 20 7b 0a 58 09 09 09 |name[i])|) {.X...|
|000018c0| 09 6d 20 3d 20 69 3b 0a | 58 09 09 09 09 62 72 65 |.m = i;.|X....bre|
|000018d0| 61 6b 3b 3b 0a 58 09 09 | 09 7d 0a 58 09 09 7d 0a |ak;;.X..|.}.X..}.|
|000018e0| 58 09 09 69 66 20 28 6d | 20 3e 3d 20 30 29 20 7b |X..if (m| >= 0) {|
|000018f0| 0a 58 09 09 09 2f 2a 20 | 6d 61 74 63 68 20 66 6f |.X.../* |match fo|
|00001900| 75 6e 64 20 2a 2f 0a 58 | 09 09 09 77 68 69 6c 65 |und */.X|...while|
|00001910| 20 28 21 69 73 73 70 61 | 63 65 28 2a 73 74 72 29 | (!isspa|ce(*str)|
|00001920| 29 0a 58 09 09 09 09 2b | 2b 73 74 72 3b 0a 58 09 |).X....+|+str;.X.|
|00001930| 09 09 64 20 3d 20 2a 2b | 2b 73 74 72 20 2d 20 27 |..d = *+|+str - '|
|00001940| 30 27 3b 0a 58 09 09 09 | 2b 2b 73 74 72 3b 0a 58 |0';.X...|++str;.X|
|00001950| 09 09 09 77 68 69 6c 65 | 20 28 69 73 64 69 67 69 |...while| (isdigi|
|00001960| 74 28 2a 73 74 72 29 29 | 0a 58 09 09 09 09 64 20 |t(*str))|.X....d |
|00001970| 3d 20 64 2a 31 30 20 2b | 20 2a 73 74 72 2b 2b 20 |= d*10 +| *str++ |
|00001980| 2d 20 27 30 27 3b 0a 58 | 09 09 7d 20 65 6c 73 65 |- '0';.X|..} else|
|00001990| 20 7b 0a 58 09 09 09 66 | 70 72 69 6e 74 66 28 73 | {.X...f|printf(s|
|000019a0| 74 64 65 72 72 2c 20 22 | 62 61 64 6c 79 20 66 6f |tderr, "|badly fo|
|000019b0| 72 6d 65 64 20 64 61 74 | 65 3a 20 25 73 5c 6e 22 |rmed dat|e: %s\n"|
|000019c0| 2c 20 73 74 72 2d 32 29 | 3b 0a 58 09 09 09 72 65 |, str-2)|;.X...re|
|000019d0| 74 75 72 6e 28 31 29 3b | 0a 58 09 09 7d 0a 58 09 |turn(1);|.X..}.X.|
|000019e0| 7d 0a 58 09 63 75 72 72 | 65 6e 74 2e 74 6d 5f 6d |}.X.curr|ent.tm_m|
|000019f0| 6f 6e 20 3d 20 6d 3b 0a | 58 09 63 75 72 72 65 6e |on = m;.|X.curren|
|00001a00| 74 2e 74 6d 5f 6d 64 61 | 79 20 3d 20 64 3b 0a 58 |t.tm_mda|y = d;.X|
|00001a10| 09 69 66 20 28 75 73 65 | 5f 64 61 74 65 20 7c 7c |.if (use|_date |||
|00001a20| 20 72 75 6e 5f 64 61 79 | 73 20 3e 3d 20 30 29 20 | run_day|s >= 0) |
|00001a30| 7b 0a 58 09 09 69 66 20 | 28 21 72 75 6e 5f 64 61 |{.X..if |(!run_da|
|00001a40| 79 73 29 20 7b 0a 58 09 | 09 09 69 66 20 28 79 6d |ys) {.X.|..if (ym|
|00001a50| 64 5f 63 6f 6d 70 61 72 | 65 28 63 75 72 72 65 6e |d_compar|e(curren|
|00001a60| 74 2c 20 73 74 61 72 74 | 29 20 21 3d 20 30 29 0a |t, start|) != 0).|
|00001a70| 58 09 09 09 09 72 65 74 | 75 72 6e 28 31 29 3b 0a |X....ret|urn(1);.|
|00001a80| 58 09 09 7d 20 65 6c 73 | 65 20 69 66 20 28 72 75 |X..} els|e if (ru|
|00001a90| 6e 5f 64 61 79 73 20 3e | 20 30 29 20 7b 0a 58 09 |n_days >| 0) {.X.|
|00001aa0| 09 09 69 66 20 28 79 6d | 64 5f 63 6f 6d 70 61 72 |..if (ym|d_compar|
|00001ab0| 65 28 63 75 72 72 65 6e | 74 2c 20 73 74 61 72 74 |e(curren|t, start|
|00001ac0| 29 20 3e 3d 20 30 29 20 | 7b 0a 58 09 09 09 09 73 |) >= 0) |{.X....s|
|00001ad0| 74 72 75 63 74 20 74 6d | 20 53 61 76 65 3b 0a 58 |truct tm| Save;.X|
|00001ae0| 0a 58 09 09 09 09 53 61 | 76 65 20 3d 20 63 75 72 |.X....Sa|ve = cur|
|00001af0| 72 65 6e 74 3b 0a 58 09 | 09 09 09 63 75 72 72 65 |rent;.X.|...curre|
|00001b00| 6e 74 20 3d 20 73 74 61 | 72 74 3b 0a 58 09 09 09 |nt = sta|rt;.X...|
|00001b10| 09 63 75 72 72 65 6e 74 | 2e 74 6d 5f 6d 64 61 79 |.current|.tm_mday|
|00001b20| 20 2b 3d 20 72 75 6e 5f | 64 61 79 73 3b 0a 58 09 | += run_|days;.X.|
|00001b30| 09 09 09 66 69 78 5f 63 | 75 72 72 65 6e 74 5f 64 |...fix_c|urrent_d|
|00001b40| 61 79 28 29 3b 0a 58 09 | 09 09 09 69 66 20 28 79 |ay();.X.|...if (y|
|00001b50| 6d 64 5f 63 6f 6d 70 61 | 72 65 28 53 61 76 65 2c |md_compa|re(Save,|
|00001b60| 20 63 75 72 72 65 6e 74 | 29 20 3e 20 30 29 0a 58 | current|) > 0).X|
|00001b70| 09 09 09 09 09 72 65 74 | 75 72 6e 28 31 29 3b 0a |.....ret|urn(1);.|
|00001b80| 58 09 09 09 09 63 75 72 | 72 65 6e 74 20 3d 20 53 |X....cur|rent = S|
|00001b90| 61 76 65 3b 0a 58 09 09 | 09 7d 20 65 6c 73 65 0a |ave;.X..|.} else.|
|00001ba0| 58 09 09 09 09 72 65 74 | 75 72 6e 28 31 29 3b 0a |X....ret|urn(1);.|
|00001bb0| 58 09 09 7d 20 65 6c 73 | 65 20 69 66 20 28 79 6d |X..} els|e if (ym|
|00001bc0| 64 5f 63 6f 6d 70 61 72 | 65 28 63 75 72 72 65 6e |d_compar|e(curren|
|00001bd0| 74 2c 20 73 74 61 72 74 | 29 20 3c 20 30 29 0a 58 |t, start|) < 0).X|
|00001be0| 09 09 09 72 65 74 75 72 | 6e 28 31 29 3b 0a 58 09 |...retur|n(1);.X.|
|00001bf0| 7d 0a 58 09 77 68 69 6c | 65 20 28 69 73 73 70 61 |}.X.whil|e (isspa|
|00001c00| 63 65 28 2a 73 74 72 29 | 29 0a 58 09 09 2b 2b 73 |ce(*str)|).X..++s|
|00001c10| 74 72 3b 0a 58 09 73 74 | 72 63 70 79 28 61 70 74 |tr;.X.st|rcpy(apt|
|00001c20| 72 2d 3e 73 74 72 2c 20 | 73 74 72 29 3b 0a 58 09 |r->str, |str);.X.|
|00001c30| 61 70 74 72 2d 3e 79 65 | 61 72 20 3d 20 63 75 72 |aptr->ye|ar = cur|
|00001c40| 72 65 6e 74 2e 74 6d 5f | 79 65 61 72 3b 0a 58 09 |rent.tm_|year;.X.|
|00001c50| 61 70 74 72 2d 3e 6d 6f | 6e 74 68 20 3d 20 63 75 |aptr->mo|nth = cu|
|00001c60| 72 72 65 6e 74 2e 74 6d | 5f 6d 6f 6e 3b 0a 58 09 |rrent.tm|_mon;.X.|
|00001c70| 61 70 74 72 2d 3e 64 61 | 79 20 3d 20 63 75 72 72 |aptr->da|y = curr|
|00001c80| 65 6e 74 2e 74 6d 5f 6d | 64 61 79 3b 0a 58 09 72 |ent.tm_m|day;.X.r|
|00001c90| 65 74 75 72 6e 28 30 29 | 3b 0a 58 7d 0a 58 0a 58 |eturn(0)|;.X}.X.X|
|00001ca0| 2f 2a 0a 58 20 2a 09 52 | 65 73 65 74 20 73 6f 6d |/*.X *.R|eset som|
|00001cb0| 65 20 76 61 6c 75 65 73 | 20 69 6e 20 63 75 72 72 |e values| in curr|
|00001cc0| 65 6e 74 20 74 6d 20 73 | 74 72 75 63 74 75 72 65 |ent tm s|tructure|
|00001cd0| 2e 20 59 65 61 72 2c 20 | 6d 6f 6e 74 68 20 61 6e |. Year, |month an|
|00001ce0| 64 0a 58 20 2a 09 64 61 | 79 2d 6f 66 2d 6d 6f 6e |d.X *.da|y-of-mon|
|00001cf0| 74 68 20 61 72 65 20 76 | 61 6c 69 64 20 62 75 74 |th are v|alid but|
|00001d00| 20 64 61 79 20 61 6e 64 | 2f 6f 72 20 6d 6f 6e 74 | day and|/or mont|
|00001d10| 68 20 6d 61 79 20 62 65 | 20 3c 20 30 20 6f 72 0a |h may be| < 0 or.|
|00001d20| 58 20 2a 09 67 72 65 61 | 74 65 72 20 74 68 61 6e |X *.grea|ter than|
|00001d30| 20 74 68 65 20 6d 61 78 | 69 6d 75 6d 20 76 61 6c | the max|imum val|
|00001d40| 75 65 2c 20 69 6e 20 77 | 68 69 63 68 20 63 61 73 |ue, in w|hich cas|
|00001d50| 65 20 74 68 65 79 20 61 | 72 65 20 61 64 6a 75 73 |e they a|re adjus|
|00001d60| 74 65 64 0a 58 20 2a 09 | 61 63 63 6f 72 64 69 6e |ted.X *.|accordin|
|00001d70| 67 6c 79 2e 20 44 61 79 | 2d 6f 66 2d 79 65 61 72 |gly. Day|-of-year|
|00001d80| 20 61 6e 64 20 64 61 79 | 2d 6f 66 2d 77 65 65 6b | and day|-of-week|
|00001d90| 20 61 72 65 20 74 68 65 | 6e 20 72 65 63 61 6c 63 | are the|n recalc|
|00001da0| 75 6c 61 74 65 64 2e 0a | 58 20 2a 2f 0a 58 76 6f |ulated..|X */.Xvo|
|00001db0| 69 64 0a 58 66 69 78 5f | 63 75 72 72 65 6e 74 5f |id.Xfix_|current_|
|00001dc0| 64 61 79 28 29 0a 58 7b | 0a 58 09 69 6e 74 20 6d |day().X{|.X.int m|
|00001dd0| 6f 6e 74 68 2c 20 74 6f | 74 64 61 79 73 20 3d 20 |onth, to|tdays = |
|00001de0| 30 3b 0a 58 09 73 74 72 | 75 63 74 20 74 6d 20 66 |0;.X.str|uct tm f|
|00001df0| 72 6f 6d 2c 20 74 6f 3b | 0a 58 0a 58 09 69 66 20 |rom, to;|.X.X.if |
|00001e00| 28 63 75 72 72 65 6e 74 | 2e 74 6d 5f 6d 6f 6e 20 |(current|.tm_mon |
|00001e10| 3c 20 4a 41 4e 29 20 7b | 0a 58 09 09 63 75 72 72 |< JAN) {|.X..curr|
|00001e20| 65 6e 74 2e 74 6d 5f 6d | 6f 6e 20 3d 20 44 45 43 |ent.tm_m|on = DEC|
|00001e30| 3b 0a 58 09 09 63 75 72 | 72 65 6e 74 2e 74 6d 5f |;.X..cur|rent.tm_|
|00001e40| 79 65 61 72 2d 2d 3b 0a | 58 09 7d 20 65 6c 73 65 |year--;.|X.} else|
|00001e50| 20 69 66 20 28 63 75 72 | 72 65 6e 74 2e 74 6d 5f | if (cur|rent.tm_|
|00001e60| 6d 6f 6e 20 3e 20 44 45 | 43 29 20 7b 0a 58 09 09 |mon > DE|C) {.X..|
|00001e70| 63 75 72 72 65 6e 74 2e | 74 6d 5f 6d 6f 6e 20 3d |current.|tm_mon =|
|00001e80| 20 4a 41 4e 3b 0a 58 09 | 09 63 75 72 72 65 6e 74 | JAN;.X.|.current|
|00001e90| 2e 74 6d 5f 79 65 61 72 | 2b 2b 3b 0a 58 09 7d 0a |.tm_year|++;.X.}.|
|00001ea0| 58 09 69 66 20 28 63 75 | 72 72 65 6e 74 2e 74 6d |X.if (cu|rrent.tm|
|00001eb0| 5f 6d 64 61 79 20 3c 20 | 31 29 20 7b 0a 58 09 09 |_mday < |1) {.X..|
|00001ec0| 63 75 72 72 65 6e 74 2e | 74 6d 5f 6d 6f 6e 2d 2d |current.|tm_mon--|
|00001ed0| 3b 0a 58 09 09 69 66 20 | 28 63 75 72 72 65 6e 74 |;.X..if |(current|
|00001ee0| 2e 74 6d 5f 6d 6f 6e 20 | 3c 20 4a 41 4e 29 20 7b |.tm_mon |< JAN) {|
|00001ef0| 0a 58 09 09 09 63 75 72 | 72 65 6e 74 2e 74 6d 5f |.X...cur|rent.tm_|
|00001f00| 6d 6f 6e 20 3d 20 44 45 | 43 3b 0a 58 09 09 09 63 |mon = DE|C;.X...c|
|00001f10| 75 72 72 65 6e 74 2e 74 | 6d 5f 79 65 61 72 2d 2d |urrent.t|m_year--|
|00001f20| 3b 0a 58 09 09 7d 0a 58 | 09 09 63 75 72 72 65 6e |;.X..}.X|..curren|
|00001f30| 74 2e 74 6d 5f 6d 64 61 | 79 20 2b 3d 20 6d 6f 6e |t.tm_mda|y += mon|
|00001f40| 74 68 6c 65 6e 67 74 68 | 28 63 75 72 72 65 6e 74 |thlength|(current|
|00001f50| 2e 74 6d 5f 6d 6f 6e 29 | 3b 0a 58 09 7d 20 65 6c |.tm_mon)|;.X.} el|
|00001f60| 73 65 20 69 66 20 28 63 | 75 72 72 65 6e 74 2e 74 |se if (c|urrent.t|
|00001f70| 6d 5f 6d 64 61 79 20 3e | 20 6d 6f 6e 74 68 6c 65 |m_mday >| monthle|
|00001f80| 6e 67 74 68 28 63 75 72 | 72 65 6e 74 2e 74 6d 5f |ngth(cur|rent.tm_|
|00001f90| 6d 6f 6e 29 29 20 7b 0a | 58 09 09 63 75 72 72 65 |mon)) {.|X..curre|
|00001fa0| 6e 74 2e 74 6d 5f 6d 64 | 61 79 20 2d 3d 20 6d 6f |nt.tm_md|ay -= mo|
|00001fb0| 6e 74 68 6c 65 6e 67 74 | 68 28 63 75 72 72 65 6e |nthlengt|h(curren|
|00001fc0| 74 2e 74 6d 5f 6d 6f 6e | 29 3b 0a 58 09 09 63 75 |t.tm_mon|);.X..cu|
|00001fd0| 72 72 65 6e 74 2e 74 6d | 5f 6d 6f 6e 2b 2b 3b 0a |rrent.tm|_mon++;.|
|00001fe0| 58 09 09 69 66 20 28 63 | 75 72 72 65 6e 74 2e 74 |X..if (c|urrent.t|
|00001ff0| 6d 5f 6d 6f 6e 20 3e 20 | 44 45 43 29 20 7b 0a 58 |m_mon > |DEC) {.X|
|00002000| 09 09 09 63 75 72 72 65 | 6e 74 2e 74 6d 5f 6d 6f |...curre|nt.tm_mo|
|00002010| 6e 20 3d 20 4a 41 4e 3b | 0a 58 09 09 09 63 75 72 |n = JAN;|.X...cur|
|00002020| 72 65 6e 74 2e 74 6d 5f | 79 65 61 72 2b 2b 3b 0a |rent.tm_|year++;.|
|00002030| 58 09 09 7d 0a 58 09 7d | 0a 58 09 63 75 72 72 65 |X..}.X.}|.X.curre|
|00002040| 6e 74 2e 74 6d 5f 79 64 | 61 79 20 3d 20 63 75 72 |nt.tm_yd|ay = cur|
|00002050| 72 65 6e 74 2e 74 6d 5f | 6d 64 61 79 20 2d 20 31 |rent.tm_|mday - 1|
|00002060| 3b 0a 58 09 66 6f 72 20 | 28 6d 6f 6e 74 68 20 3d |;.X.for |(month =|
|00002070| 20 30 3b 20 6d 6f 6e 74 | 68 20 3c 20 63 75 72 72 | 0; mont|h < curr|
|00002080| 65 6e 74 2e 74 6d 5f 6d | 6f 6e 3b 20 6d 6f 6e 74 |ent.tm_m|on; mont|
|00002090| 68 2b 2b 29 20 7b 0a 58 | 09 09 63 75 72 72 65 6e |h++) {.X|..curren|
|000020a0| 74 2e 74 6d 5f 79 64 61 | 79 20 2b 3d 20 6d 6f 6e |t.tm_yda|y += mon|
|000020b0| 74 68 6c 65 6e 67 74 68 | 28 6d 6f 6e 74 68 29 3b |thlength|(month);|
|000020c0| 0a 58 09 7d 0a 58 09 69 | 66 20 28 28 63 75 72 72 |.X.}.X.i|f ((curr|
|000020d0| 65 6e 74 2e 74 6d 5f 79 | 65 61 72 20 3c 20 74 6f |ent.tm_y|ear < to|
|000020e0| 64 61 79 2e 74 6d 5f 79 | 65 61 72 29 0a 58 09 09 |day.tm_y|ear).X..|
|000020f0| 7c 7c 20 28 28 63 75 72 | 72 65 6e 74 2e 74 6d 5f ||| ((cur|rent.tm_|
|00002100| 79 65 61 72 20 3d 3d 20 | 74 6f 64 61 79 2e 74 6d |year == |today.tm|
|00002110| 5f 79 65 61 72 29 0a 58 | 09 09 26 26 20 28 63 75 |_year).X|..&& (cu|
|00002120| 72 72 65 6e 74 2e 74 6d | 5f 79 64 61 79 20 3c 20 |rrent.tm|_yday < |
|00002130| 74 6f 64 61 79 2e 74 6d | 5f 79 64 61 79 29 29 29 |today.tm|_yday)))|
|00002140| 20 7b 0a 58 09 09 66 72 | 6f 6d 20 3d 20 63 75 72 | {.X..fr|om = cur|
|00002150| 72 65 6e 74 3b 0a 58 09 | 09 74 6f 20 3d 20 74 6f |rent;.X.|.to = to|
|00002160| 64 61 79 3b 0a 58 09 7d | 20 65 6c 73 65 20 7b 0a |day;.X.}| else {.|
|00002170| 58 09 09 66 72 6f 6d 20 | 3d 20 74 6f 64 61 79 3b |X..from |= today;|
|00002180| 0a 58 09 09 74 6f 20 3d | 20 63 75 72 72 65 6e 74 |.X..to =| current|
|00002190| 3b 0a 58 09 7d 0a 58 09 | 69 66 20 28 66 72 6f 6d |;.X.}.X.|if (from|
|000021a0| 2e 74 6d 5f 79 65 61 72 | 20 21 3d 20 74 6f 2e 74 |.tm_year| != to.t|
|000021b0| 6d 5f 79 65 61 72 29 20 | 7b 0a 58 09 09 66 6f 72 |m_year) |{.X..for|
|000021c0| 20 28 74 6f 74 64 61 79 | 73 20 3d 20 30 3b 20 66 | (totday|s = 0; f|
|000021d0| 72 6f 6d 2e 74 6d 5f 79 | 65 61 72 20 3c 20 74 6f |rom.tm_y|ear < to|
|000021e0| 2e 74 6d 5f 79 65 61 72 | 3b 20 66 72 6f 6d 2e 74 |.tm_year|; from.t|
|000021f0| 6d 5f 79 65 61 72 2b 2b | 29 0a 58 09 09 09 74 6f |m_year++|).X...to|
|00002200| 74 64 61 79 73 20 2b 3d | 20 64 79 73 69 7a 65 28 |tdays +=| dysize(|
|00002210| 66 72 6f 6d 2e 74 6d 5f | 79 65 61 72 20 2b 20 31 |from.tm_|year + 1|
|00002220| 39 30 30 29 3b 0a 58 09 | 7d 0a 58 09 74 6f 74 64 |900);.X.|}.X.totd|
|00002230| 61 79 73 20 2b 3d 20 74 | 6f 2e 74 6d 5f 79 64 61 |ays += t|o.tm_yda|
|00002240| 79 20 2d 20 66 72 6f 6d | 2e 74 6d 5f 79 64 61 79 |y - from|.tm_yday|
|00002250| 3b 0a 58 09 69 66 20 28 | 28 63 75 72 72 65 6e 74 |;.X.if (|(current|
|00002260| 2e 74 6d 5f 79 65 61 72 | 20 3c 20 74 6f 64 61 79 |.tm_year| < today|
|00002270| 2e 74 6d 5f 79 65 61 72 | 29 0a 58 09 09 7c 7c 20 |.tm_year|).X..|| |
|00002280| 28 28 63 75 72 72 65 6e | 74 2e 74 6d 5f 79 65 61 |((curren|t.tm_yea|
|00002290| 72 20 3d 3d 20 74 6f 64 | 61 79 2e 74 6d 5f 79 65 |r == tod|ay.tm_ye|
|000022a0| 61 72 29 0a 58 09 09 26 | 26 20 28 63 75 72 72 65 |ar).X..&|& (curre|
|000022b0| 6e 74 2e 74 6d 5f 79 64 | 61 79 20 3c 20 74 6f 64 |nt.tm_yd|ay < tod|
|000022c0| 61 79 2e 74 6d 5f 79 64 | 61 79 29 29 29 0a 58 09 |ay.tm_yd|ay))).X.|
|000022d0| 09 74 6f 74 64 61 79 73 | 20 3d 20 2d 74 6f 74 64 |.totdays| = -totd|
|000022e0| 61 79 73 3b 0a 58 09 63 | 75 72 72 65 6e 74 2e 74 |ays;.X.c|urrent.t|
|000022f0| 6d 5f 77 64 61 79 20 3d | 0a 58 09 09 28 28 74 6f |m_wday =|.X..((to|
|00002300| 74 64 61 79 73 20 25 20 | 37 29 20 2b 20 37 20 2b |tdays % |7) + 7 +|
|00002310| 20 74 6f 64 61 79 2e 74 | 6d 5f 77 64 61 79 29 20 | today.t|m_wday) |
|00002320| 25 20 37 3b 0a 58 7d 0a | 58 0a 58 69 6e 74 0a 58 |% 7;.X}.|X.Xint.X|
|00002330| 6d 6f 6e 74 68 6c 65 6e | 67 74 68 28 6d 6f 6e 74 |monthlen|gth(mont|
|00002340| 68 29 0a 58 69 6e 74 09 | 6d 6f 6e 74 68 3b 0a 58 |h).Xint.|month;.X|
|00002350| 7b 0a 58 09 73 74 61 74 | 69 63 20 69 6e 74 09 6d |{.X.stat|ic int.m|
|00002360| 6f 6e 74 68 6c 65 6e 67 | 74 68 73 5b 5d 20 3d 20 |onthleng|ths[] = |
|00002370| 7b 33 31 2c 32 38 2c 33 | 31 2c 33 30 2c 33 31 2c |{31,28,3|1,30,31,|
|00002380| 33 30 2c 33 31 2c 33 31 | 2c 33 30 2c 33 31 2c 33 |30,31,31|,30,31,3|
|00002390| 30 2c 33 31 7d 3b 0a 58 | 0a 58 09 69 66 20 28 6d |0,31};.X|.X.if (m|
|000023a0| 6f 6e 74 68 20 3d 3d 20 | 46 45 42 20 26 26 20 28 |onth == |FEB && (|
|000023b0| 64 79 73 69 7a 65 28 63 | 75 72 72 65 6e 74 2e 74 |dysize(c|urrent.t|
|000023c0| 6d 5f 79 65 61 72 20 2b | 20 31 39 30 30 29 20 3d |m_year +| 1900) =|
|000023d0| 3d 20 33 36 36 29 29 0a | 58 09 09 72 65 74 75 72 |= 366)).|X..retur|
|000023e0| 6e 28 32 39 29 3b 0a 58 | 09 65 6c 73 65 0a 58 09 |n(29);.X|.else.X.|
|000023f0| 09 72 65 74 75 72 6e 28 | 6d 6f 6e 74 68 6c 65 6e |.return(|monthlen|
|00002400| 67 74 68 73 5b 6d 6f 6e | 74 68 5d 29 3b 0a 58 7d |gths[mon|th]);.X}|
|00002410| 0a 58 0a 58 2f 2a 0a 58 | 20 2a 20 43 6f 6d 70 61 |.X.X/*.X| * Compa|
|00002420| 72 65 73 20 74 77 6f 20 | 73 65 74 73 20 6f 66 20 |res two |sets of |
|00002430| 79 65 61 72 2f 6d 6f 6e | 74 68 2f 64 61 79 2e 20 |year/mon|th/day. |
|00002440| 20 52 65 74 75 72 6e 73 | 20 2d 31 20 69 66 20 74 | Returns| -1 if t|
|00002450| 68 65 20 66 69 72 73 74 | 20 69 73 20 65 61 72 6c |he first| is earl|
|00002460| 69 65 72 20 74 68 61 6e | 0a 58 20 2a 20 74 68 65 |ier than|.X * the|
|00002470| 20 73 65 63 6f 6e 64 2c | 20 2b 31 20 69 66 20 6c | second,| +1 if l|
|00002480| 61 74 65 72 2c 20 30 20 | 69 66 20 74 68 65 79 20 |ater, 0 |if they |
|00002490| 61 72 65 20 74 68 65 20 | 73 61 6d 65 2e 0a 58 20 |are the |same..X |
|000024a0| 2a 2f 0a 58 79 6d 64 5f | 63 6f 6d 70 61 72 65 28 |*/.Xymd_|compare(|
|000024b0| 64 61 79 30 2c 20 64 61 | 79 31 29 0a 58 73 74 72 |day0, da|y1).Xstr|
|000024c0| 75 63 74 20 74 6d 20 64 | 61 79 30 2c 20 64 61 79 |uct tm d|ay0, day|
|000024d0| 31 3b 0a 58 7b 0a 58 20 | 20 20 20 20 20 20 20 69 |1;.X{.X | i|
|000024e0| 66 20 28 64 61 79 30 2e | 74 6d 5f 79 65 61 72 20 |f (day0.|tm_year |
|000024f0| 3e 20 64 61 79 31 2e 74 | 6d 5f 79 65 61 72 29 20 |> day1.t|m_year) |
|00002500| 72 65 74 75 72 6e 28 31 | 29 3b 0a 58 20 20 20 20 |return(1|);.X |
|00002510| 20 20 20 20 69 66 20 28 | 64 61 79 30 2e 74 6d 5f | if (|day0.tm_|
|00002520| 79 65 61 72 20 3c 20 64 | 61 79 31 2e 74 6d 5f 79 |year < d|ay1.tm_y|
|00002530| 65 61 72 29 20 72 65 74 | 75 72 6e 28 2d 31 29 3b |ear) ret|urn(-1);|
|00002540| 0a 58 20 20 20 20 20 20 | 20 20 69 66 20 28 64 61 |.X | if (da|
|00002550| 79 30 2e 74 6d 5f 6d 6f | 6e 20 3e 20 64 61 79 31 |y0.tm_mo|n > day1|
|00002560| 2e 74 6d 5f 6d 6f 6e 29 | 20 72 65 74 75 72 6e 28 |.tm_mon)| return(|
|00002570| 31 29 3b 0a 58 20 20 20 | 20 20 20 20 20 69 66 20 |1);.X | if |
|00002580| 28 64 61 79 30 2e 74 6d | 5f 6d 6f 6e 20 3c 20 64 |(day0.tm|_mon < d|
|00002590| 61 79 31 2e 74 6d 5f 6d | 6f 6e 29 20 72 65 74 75 |ay1.tm_m|on) retu|
|000025a0| 72 6e 28 2d 31 29 3b 0a | 58 20 20 20 20 20 20 20 |rn(-1);.|X |
|000025b0| 20 69 66 20 28 64 61 79 | 30 2e 74 6d 5f 6d 64 61 | if (day|0.tm_mda|
|000025c0| 79 20 3e 20 64 61 79 31 | 2e 74 6d 5f 6d 64 61 79 |y > day1|.tm_mday|
|000025d0| 29 20 72 65 74 75 72 6e | 28 31 29 3b 0a 58 20 20 |) return|(1);.X |
|000025e0| 20 20 20 20 20 20 69 66 | 20 28 64 61 79 30 2e 74 | if| (day0.t|
|000025f0| 6d 5f 6d 64 61 79 20 3c | 20 64 61 79 31 2e 74 6d |m_mday <| day1.tm|
|00002600| 5f 6d 64 61 79 29 20 72 | 65 74 75 72 6e 28 2d 31 |_mday) r|eturn(-1|
|00002610| 29 3b 0a 58 20 20 20 20 | 20 20 20 20 72 65 74 75 |);.X | retu|
|00002620| 72 6e 28 30 29 3b 0a 58 | 7d 0a 58 0a 58 2f 2a 0a |rn(0);.X|}.X.X/*.|
|00002630| 58 20 2a 20 70 61 72 73 | 65 20 74 68 65 20 64 61 |X * pars|e the da|
|00002640| 74 65 20 6f 6e 20 74 68 | 65 20 67 69 76 65 6e 20 |te on th|e given |
|00002650| 73 74 72 69 6e 67 20 61 | 6e 64 20 72 65 73 65 74 |string a|nd reset|
|00002660| 20 74 68 65 20 22 63 75 | 72 72 65 6e 74 22 0a 58 | the "cu|rrent".X|
|00002670| 20 2a 20 64 61 74 65 20 | 74 6f 20 72 65 66 6c 65 | * date |to refle|
|00002680| 63 74 20 74 68 61 74 20 | 64 61 74 65 2e 20 54 68 |ct that |date. Th|
|00002690| 65 20 64 61 74 65 20 6d | 61 79 20 74 61 6b 65 20 |e date m|ay take |
|000026a0| 74 68 65 20 66 6f 72 6d | 20 6f 66 20 61 0a 58 20 |the form| of a.X |
|000026b0| 2a 20 64 61 79 20 6e 61 | 6d 65 20 28 65 2e 67 2e |* day na|me (e.g.|
|000026c0| 20 54 75 2c 20 54 75 65 | 2c 20 54 75 65 73 64 61 | Tu, Tue|, Tuesda|
|000026d0| 79 29 20 6f 72 20 61 20 | 64 61 74 65 20 69 6e 20 |y) or a |date in |
|000026e0| 6d 2f 64 2f 79 20 66 6f | 72 6d 61 74 0a 58 20 2a |m/d/y fo|rmat.X *|
|000026f0| 20 77 68 65 72 65 20 74 | 68 65 20 6d 6f 6e 74 68 | where t|he month|
|00002700| 20 61 6e 64 2f 6f 72 20 | 79 65 61 72 20 6d 61 79 | and/or |year may|
|00002710| 20 62 65 20 6d 69 73 73 | 69 6e 67 20 28 65 2e 67 | be miss|ing (e.g|
|00002720| 2e 20 32 37 20 3d 20 32 | 37 74 68 0a 58 20 2a 20 |. 27 = 2|7th.X * |
|00002730| 6f 66 20 74 68 69 73 20 | 6d 6f 6e 74 68 2c 20 38 |of this |month, 8|
|00002740| 2f 32 37 20 3d 20 41 75 | 67 75 73 74 20 32 37 20 |/27 = Au|gust 27 |
|00002750| 6f 66 20 74 68 69 73 20 | 79 65 61 72 2c 20 38 2f |of this |year, 8/|
|00002760| 32 37 2f 38 39 20 3d 0a | 58 20 2a 20 41 75 67 75 |27/89 =.|X * Augu|
|00002770| 73 74 20 32 37 20 6f 66 | 20 31 39 38 39 2e 20 49 |st 27 of| 1989. I|
|00002780| 66 20 27 63 6d 64 6c 69 | 6e 65 27 20 69 73 20 74 |f 'cmdli|ne' is t|
|00002790| 72 75 65 2c 20 74 68 65 | 6e 20 74 68 65 20 73 74 |rue, the|n the st|
|000027a0| 72 69 6e 67 0a 58 20 2a | 20 63 61 6d 65 20 66 72 |ring.X *| came fr|
|000027b0| 6f 6d 20 74 68 65 20 63 | 6f 6d 6d 61 6e 64 20 6c |om the c|ommand l|
|000027c0| 69 6e 65 20 27 2d 64 27 | 20 6f 70 74 69 6f 6e 2e |ine '-d'| option.|
|000027d0| 0a 58 20 2a 20 49 66 20 | 74 68 65 20 66 69 72 73 |.X * If |the firs|
|000027e0| 74 20 63 68 61 72 61 63 | 74 65 72 20 6f 66 20 74 |t charac|ter of t|
|000027f0| 68 65 20 64 61 74 65 20 | 69 73 20 2b 20 6f 72 20 |he date |is + or |
|00002800| 2d 20 73 63 61 6e 20 74 | 68 65 20 6e 75 6d 62 65 |- scan t|he numbe|
|00002810| 72 20 61 6e 64 0a 58 20 | 2a 20 75 73 65 20 69 74 |r and.X |* use it|
|00002820| 20 61 73 20 61 6e 20 6f | 66 66 73 65 74 20 69 6e | as an o|ffset in|
|00002830| 20 64 61 79 73 20 66 72 | 6f 6d 20 74 68 65 20 63 | days fr|om the c|
|00002840| 75 72 72 65 6e 74 20 64 | 61 74 65 2e 20 20 54 68 |urrent d|ate. Th|
|00002850| 75 73 20 2d 31 20 62 65 | 63 6f 6d 65 73 0a 58 20 |us -1 be|comes.X |
|00002860| 2a 20 79 65 73 74 65 72 | 64 61 79 20 61 6e 64 20 |* yester|day and |
|00002870| 2b 31 20 62 65 63 6f 6d | 65 73 20 74 6f 6d 6f 72 |+1 becom|es tomor|
|00002880| 72 6f 77 2e 20 70 62 6d | 2e 0a 58 20 2a 2f 0a 58 |row. pbm|..X */.X|
|00002890| 69 6e 74 0a 58 70 61 72 | 73 65 5f 64 61 74 65 28 |int.Xpar|se_date(|
|000028a0| 73 74 72 2c 20 63 6d 64 | 6c 69 6e 65 29 0a 58 63 |str, cmd|line).Xc|
|000028b0| 68 61 72 20 2a 73 74 72 | 3b 0a 58 69 6e 74 20 63 |har *str|;.Xint c|
|000028c0| 6d 64 6c 69 6e 65 3b 0a | 58 7b 0a 58 09 63 68 61 |mdline;.|X{.X.cha|
|000028d0| 72 20 63 5b 34 5d 3b 0a | 58 09 69 6e 74 20 69 2c |r c[4];.|X.int i,|
|000028e0| 20 64 6f 77 20 3d 20 2d | 31 2c 20 6d 20 3d 20 2d | dow = -|1, m = -|
|000028f0| 31 2c 20 64 20 3d 20 2d | 31 2c 20 79 20 3d 20 2d |1, d = -|1, y = -|
|00002900| 31 3b 0a 58 0a 58 09 69 | 66 20 28 69 73 64 69 67 |1;.X.X.i|f (isdig|
|00002910| 69 74 28 2a 73 74 72 29 | 29 20 7b 0a 58 09 09 2f |it(*str)|) {.X../|
|00002920| 2a 20 6d 75 73 74 20 62 | 65 20 61 20 6d 2f 64 2f |* must b|e a m/d/|
|00002930| 79 20 64 61 74 65 20 2a | 2f 0a 58 09 09 2f 2a 20 |y date *|/.X../* |
|00002940| 61 73 73 75 6d 65 20 69 | 74 27 73 20 61 20 6d 6f |assume i|t's a mo|
|00002950| 6e 74 68 20 66 69 72 73 | 74 20 2a 2f 0a 58 09 09 |nth firs|t */.X..|
|00002960| 6d 20 3d 20 2a 73 74 72 | 2b 2b 20 2d 20 27 30 27 |m = *str|++ - '0'|
|00002970| 3b 0a 58 09 09 69 66 20 | 28 69 73 64 69 67 69 74 |;.X..if |(isdigit|
|00002980| 28 2a 73 74 72 29 29 0a | 58 09 09 09 6d 20 3d 20 |(*str)).|X...m = |
|00002990| 6d 2a 31 30 20 2b 20 2a | 73 74 72 2b 2b 20 2d 20 |m*10 + *|str++ - |
|000029a0| 27 30 27 3b 0a 58 09 09 | 69 66 20 28 21 2a 73 74 |'0';.X..|if (!*st|
|000029b0| 72 29 20 7b 0a 58 09 09 | 09 2f 2a 20 6e 6f 20 6d |r) {.X..|./* no m|
|000029c0| 6f 72 65 20 63 68 61 72 | 73 20 3d 3e 20 64 61 79 |ore char|s => day|
|000029d0| 20 6f 6e 6c 79 20 2a 2f | 0a 58 09 09 09 64 20 3d | only */|.X...d =|
|000029e0| 20 6d 3b 0a 58 09 09 09 | 6d 20 3d 20 2d 31 3b 0a | m;.X...|m = -1;.|
|000029f0| 58 09 09 7d 20 65 6c 73 | 65 20 69 66 20 28 2a 73 |X..} els|e if (*s|
|00002a00| 74 72 2b 2b 20 21 3d 20 | 27 2f 27 29 20 7b 0a 58 |tr++ != |'/') {.X|
|00002a10| 09 09 09 69 66 20 28 63 | 6d 64 6c 69 6e 65 29 0a |...if (c|mdline).|
|00002a20| 58 09 09 09 09 65 72 72 | 5f 72 70 74 28 22 62 61 |X....err|_rpt("ba|
|00002a30| 64 6c 79 20 66 6f 72 6d | 65 64 20 64 61 74 65 20 |dly form|ed date |
|00002a40| 66 6f 72 20 2d 64 20 6f | 70 74 69 6f 6e 20 28 69 |for -d o|ption (i|
|00002a50| 67 6e 6f 72 65 64 29 22 | 2c 20 4e 4f 4e 5f 46 41 |gnored)"|, NON_FA|
|00002a60| 54 41 4c 29 3b 0a 58 09 | 09 09 65 6c 73 65 0a 58 |TAL);.X.|..else.X|
|00002a70| 09 09 09 09 65 72 72 5f | 72 70 74 28 22 62 61 64 |....err_|rpt("bad|
|00002a80| 6c 79 20 66 6f 72 6d 65 | 64 20 64 61 74 65 20 2d |ly forme|d date -|
|00002a90| 20 70 6c 65 61 73 65 20 | 72 65 65 6e 74 65 72 22 | please |reenter"|
|00002aa0| 2c 20 4e 4f 4e 5f 46 41 | 54 41 4c 29 3b 0a 58 09 |, NON_FA|TAL);.X.|
|00002ab0| 09 09 72 65 74 75 72 6e | 28 31 29 3b 0a 58 09 09 |..return|(1);.X..|
|00002ac0| 7d 20 65 6c 73 65 20 7b | 0a 58 09 09 09 64 20 3d |} else {|.X...d =|
|00002ad0| 20 2a 73 74 72 2b 2b 20 | 2d 20 27 30 27 3b 0a 58 | *str++ |- '0';.X|
|00002ae0| 09 09 09 69 66 20 28 69 | 73 64 69 67 69 74 28 2a |...if (i|sdigit(*|
|00002af0| 73 74 72 29 29 0a 58 09 | 09 09 09 64 20 3d 20 64 |str)).X.|...d = d|
|00002b00| 2a 31 30 20 2b 20 2a 73 | 74 72 2b 2b 20 2d 20 27 |*10 + *s|tr++ - '|
|00002b10| 30 27 3b 0a 58 09 09 09 | 69 66 20 28 2a 73 74 72 |0';.X...|if (*str|
|00002b20| 2b 2b 20 3d 3d 20 27 2f | 27 29 20 7b 0a 58 09 09 |++ == '/|') {.X..|
|00002b30| 09 09 2f 2a 20 79 65 61 | 72 20 61 6c 73 6f 20 73 |../* yea|r also s|
|00002b40| 70 65 63 69 66 69 65 64 | 20 2a 2f 0a 58 09 09 09 |pecified| */.X...|
|00002b50| 09 79 20 3d 20 2a 73 74 | 72 2b 2b 20 2d 20 27 30 |.y = *st|r++ - '0|
|00002b60| 27 3b 0a 58 09 09 09 09 | 69 66 20 28 69 73 64 69 |';.X....|if (isdi|
|00002b70| 67 69 74 28 2a 73 74 72 | 29 29 20 7b 0a 58 09 09 |git(*str|)) {.X..|
|00002b80| 09 09 09 79 20 3d 20 79 | 2a 31 30 20 2b 20 2a 73 |...y = y|*10 + *s|
|00002b90| 74 72 2b 2b 20 2d 20 27 | 30 27 3b 0a 58 09 09 09 |tr++ - '|0';.X...|
|00002ba0| 09 09 69 66 20 28 2a 73 | 74 72 20 26 26 20 69 73 |..if (*s|tr && is|
|00002bb0| 64 69 67 69 74 28 2a 73 | 74 72 29 29 0a 58 09 09 |digit(*s|tr)).X..|
|00002bc0| 09 09 09 09 79 20 3d 20 | 79 2a 31 30 20 2b 20 2a |....y = |y*10 + *|
|00002bd0| 73 74 72 2b 2b 20 2d 20 | 27 30 27 3b 0a 58 09 09 |str++ - |'0';.X..|
|00002be0| 09 09 09 69 66 20 28 2a | 73 74 72 20 26 26 20 69 |...if (*|str && i|
|00002bf0| 73 64 69 67 69 74 28 2a | 73 74 72 29 29 0a 58 09 |sdigit(*|str)).X.|
|00002c00| 09 09 09 09 09 79 20 3d | 20 79 2a 31 30 20 2b 20 |.....y =| y*10 + |
|00002c10| 2a 73 74 72 2b 2b 20 2d | 20 27 30 27 3b 0a 58 09 |*str++ -| '0';.X.|
|00002c20| 09 09 09 7d 0a 58 09 09 | 09 7d 0a 58 09 09 7d 0a |...}.X..|.}.X..}.|
|00002c30| 58 09 09 69 66 20 28 79 | 20 3e 20 30 29 20 7b 0a |X..if (y| > 0) {.|
|00002c40| 58 09 09 09 69 66 20 28 | 79 20 3e 20 31 39 30 30 |X...if (|y > 1900|
|00002c50| 29 0a 58 09 09 09 09 79 | 20 2d 3d 20 31 39 30 30 |).X....y| -= 1900|
|00002c60| 3b 0a 58 09 09 09 63 75 | 72 72 65 6e 74 2e 74 6d |;.X...cu|rrent.tm|
|00002c70| 5f 79 65 61 72 20 3d 20 | 79 3b 0a 58 09 09 7d 0a |_year = |y;.X..}.|
|00002c80| 58 09 09 69 66 20 28 64 | 61 79 5f 66 69 72 73 74 |X..if (d|ay_first|
|00002c90| 29 20 7b 0a 58 09 09 09 | 69 66 20 28 6d 20 3e 20 |) {.X...|if (m > |
|00002ca0| 30 29 20 7b 0a 58 09 09 | 09 09 63 75 72 72 65 6e |0) {.X..|..curren|
|00002cb0| 74 2e 74 6d 5f 6d 6f 6e | 20 3d 20 64 20 2d 20 31 |t.tm_mon| = d - 1|
|00002cc0| 3b 0a 58 09 09 09 09 63 | 75 72 72 65 6e 74 2e 74 |;.X....c|urrent.t|
|00002cd0| 6d 5f 6d 64 61 79 20 3d | 20 6d 3b 0a 58 09 09 09 |m_mday =| m;.X...|
|00002ce0| 7d 20 65 6c 73 65 20 69 | 66 20 28 64 20 3e 20 30 |} else i|f (d > 0|
|00002cf0| 29 0a 58 09 09 09 09 63 | 75 72 72 65 6e 74 2e 74 |).X....c|urrent.t|
|00002d00| 6d 5f 6d 64 61 79 20 3d | 20 64 3b 0a 58 09 09 7d |m_mday =| d;.X..}|
|00002d10| 20 65 6c 73 65 20 7b 0a | 58 09 09 09 69 66 20 28 | else {.|X...if (|
|00002d20| 6d 20 3e 20 30 29 20 7b | 0a 58 09 09 09 09 63 75 |m > 0) {|.X....cu|
|00002d30| 72 72 65 6e 74 2e 74 6d | 5f 6d 6f 6e 20 3d 20 6d |rrent.tm|_mon = m|
|00002d40| 20 2d 20 31 3b 0a 58 09 | 09 09 09 63 75 72 72 65 | - 1;.X.|...curre|
|00002d50| 6e 74 2e 74 6d 5f 6d 64 | 61 79 20 3d 20 64 3b 0a |nt.tm_md|ay = d;.|
|00002d60| 58 09 09 09 7d 20 65 6c | 73 65 20 69 66 20 28 64 |X...} el|se if (d|
|00002d70| 20 3e 20 30 29 0a 58 09 | 09 09 09 63 75 72 72 65 | > 0).X.|...curre|
|00002d80| 6e 74 2e 74 6d 5f 6d 64 | 61 79 20 3d 20 64 3b 0a |nt.tm_md|ay = d;.|
|00002d90| 58 09 09 7d 0a 58 09 09 | 66 69 78 5f 63 75 72 72 |X..}.X..|fix_curr|
|00002da0| 65 6e 74 5f 64 61 79 28 | 29 3b 0a 58 09 7d 20 65 |ent_day(|);.X.} e|
|00002db0| 6c 73 65 20 69 66 20 28 | 2a 73 74 72 20 3d 3d 20 |lse if (|*str == |
|00002dc0| 27 2d 27 20 7c 7c 20 2a | 73 74 72 20 3d 3d 20 27 |'-' || *|str == '|
|00002dd0| 2b 27 29 20 7b 0a 58 09 | 09 2f 2a 0a 58 09 09 20 |+') {.X.|./*.X.. |
|00002de0| 2a 20 49 66 20 74 68 65 | 20 61 72 67 75 6d 65 6e |* If the| argumen|
|00002df0| 74 20 62 65 67 69 6e 73 | 20 77 69 74 68 20 61 20 |t begins| with a |
|00002e00| 2b 20 6f 72 20 2d 20 61 | 73 73 75 6d 65 20 74 68 |+ or - a|ssume th|
|00002e10| 61 74 20 69 74 20 69 73 | 20 61 6e 0a 58 09 09 20 |at it is| an.X.. |
|00002e20| 2a 20 6f 66 66 73 65 74 | 20 69 6e 20 64 61 79 73 |* offset| in days|
|00002e30| 20 66 72 6f 6d 20 74 68 | 65 20 63 75 72 72 65 6e | from th|e curren|
|00002e40| 74 20 64 61 74 65 2e 20 | 55 73 65 20 63 75 72 72 |t date. |Use curr|
|00002e50| 65 6e 74 20 64 61 74 65 | 20 69 66 20 74 68 65 0a |ent date| if the.|
|00002e60| 58 09 09 20 2a 20 6e 75 | 6d 62 65 72 20 64 6f 65 |X.. * nu|mber doe|
|00002e70| 73 6e 27 74 20 73 63 61 | 6e 20 61 66 74 65 72 20 |sn't sca|n after |
|00002e80| 74 68 65 20 2d 20 6f 72 | 20 2b 2e 20 70 62 6d 0a |the - or| +. pbm.|
|00002e90| 58 09 09 20 2a 2f 0a 58 | 09 09 69 66 20 28 73 73 |X.. */.X|..if (ss|
|00002ea0| 63 61 6e 66 28 73 74 72 | 2c 20 22 25 64 22 2c 20 |canf(str|, "%d", |
|00002eb0| 26 69 29 20 3d 3d 20 31 | 29 20 7b 0a 58 09 09 09 |&i) == 1|) {.X...|
|00002ec0| 63 75 72 72 65 6e 74 2e | 74 6d 5f 6d 64 61 79 20 |current.|tm_mday |
|00002ed0| 2b 3d 20 69 3b 0a 58 09 | 09 09 66 69 78 5f 63 75 |+= i;.X.|..fix_cu|
|00002ee0| 72 72 65 6e 74 5f 64 61 | 79 28 29 3b 0a 58 09 09 |rrent_da|y();.X..|
|00002ef0| 7d 0a 58 09 7d 20 65 6c | 73 65 20 7b 0a 58 09 09 |}.X.} el|se {.X..|
|00002f00| 2f 2a 20 64 61 79 20 6f | 66 20 77 65 65 6b 20 2a |/* day o|f week *|
|00002f10| 2f 0a 58 09 09 2f 2a 20 | 63 68 65 63 6b 20 66 6f |/.X../* |check fo|
|00002f20| 72 20 64 61 79 20 6e 61 | 6d 65 73 20 2a 2f 0a 58 |r day na|mes */.X|
|00002f30| 09 09 63 5b 30 5d 20 3d | 20 69 73 6c 6f 77 65 72 |..c[0] =| islower|
|00002f40| 28 2a 73 74 72 29 20 3f | 20 74 6f 75 70 70 65 72 |(*str) ?| toupper|
|00002f50| 28 2a 73 74 72 29 20 3a | 20 2a 73 74 72 3b 0a 58 |(*str) :| *str;.X|
|00002f60| 09 09 2b 2b 73 74 72 3b | 0a 58 09 09 63 5b 31 5d |..++str;|.X..c[1]|
|00002f70| 20 3d 20 69 73 6c 6f 77 | 65 72 28 2a 73 74 72 29 | = islow|er(*str)|
|00002f80| 20 3f 20 74 6f 75 70 70 | 65 72 28 2a 73 74 72 29 | ? toupp|er(*str)|
|00002f90| 20 3a 20 2a 73 74 72 3b | 0a 58 09 09 69 66 20 28 | : *str;|.X..if (|
|00002fa0| 2a 2b 2b 73 74 72 29 20 | 7b 0a 58 09 09 09 63 5b |*++str) |{.X...c[|
|00002fb0| 32 5d 20 3d 20 69 73 6c | 6f 77 65 72 28 2a 73 74 |2] = isl|ower(*st|
|00002fc0| 72 29 20 3f 20 74 6f 75 | 70 70 65 72 28 2a 73 74 |r) ? tou|pper(*st|
|00002fd0| 72 29 20 3a 20 2a 73 74 | 72 3b 0a 58 09 09 09 63 |r) : *st|r;.X...c|
|00002fe0| 5b 33 5d 20 3d 20 27 5c | 30 27 3b 0a 58 09 09 7d |[3] = '\|0';.X..}|
|00002ff0| 20 65 6c 73 65 0a 58 09 | 09 09 63 5b 32 5d 20 3d | else.X.|..c[2] =|
|00003000| 20 27 5c 30 27 3b 0a 58 | 09 09 66 6f 72 20 28 69 | '\0';.X|..for (i|
|00003010| 3d 30 3b 20 69 3c 37 3b | 20 69 2b 2b 29 20 7b 0a |=0; i<7;| i++) {.|
|00003020| 58 09 09 09 69 66 20 28 | 21 73 74 72 6e 63 6d 70 |X...if (|!strncmp|
|00003030| 28 63 2c 20 64 61 79 6e | 61 6d 65 5b 69 5d 2c 20 |(c, dayn|ame[i], |
|00003040| 32 29 29 20 7b 0a 58 09 | 09 09 09 64 6f 77 20 3d |2)) {.X.|...dow =|
|00003050| 20 69 3b 0a 58 09 09 09 | 09 62 72 65 61 6b 3b 0a | i;.X...|.break;.|
|00003060| 58 09 09 09 7d 0a 58 09 | 09 7d 0a 58 09 09 69 66 |X...}.X.|.}.X..if|
|00003070| 20 28 64 6f 77 20 3e 3d | 20 30 29 20 7b 0a 58 09 | (dow >=| 0) {.X.|
|00003080| 09 09 2f 2a 20 6d 61 74 | 63 68 20 66 6f 75 6e 64 |../* mat|ch found|
|00003090| 20 2a 2f 0a 58 09 09 09 | 63 75 72 72 65 6e 74 2e | */.X...|current.|
|000030a0| 74 6d 5f 6d 64 61 79 20 | 2b 3d 20 64 6f 77 20 2d |tm_mday |+= dow -|
|000030b0| 20 63 75 72 72 65 6e 74 | 2e 74 6d 5f 77 64 61 79 | current|.tm_wday|
|000030c0| 3b 0a 58 09 09 09 66 69 | 78 5f 63 75 72 72 65 6e |;.X...fi|x_curren|
|000030d0| 74 5f 64 61 79 28 29 3b | 0a 58 09 09 7d 20 65 6c |t_day();|.X..} el|
|000030e0| 73 65 20 69 66 20 28 21 | 73 74 72 63 6d 70 28 63 |se if (!|strcmp(c|
|000030f0| 2c 20 22 54 4f 4d 22 29 | 29 20 7b 0a 58 09 09 09 |, "TOM")|) {.X...|
|00003100| 2f 2a 20 74 6f 6d 6d 6f | 72 72 6f 77 20 2a 2f 0a |/* tommo|rrow */.|
|00003110| 58 09 09 09 63 75 72 72 | 65 6e 74 2e 74 6d 5f 6d |X...curr|ent.tm_m|
|00003120| 64 61 79 2b 2b 3b 0a 58 | 09 09 09 66 69 78 5f 63 |day++;.X|...fix_c|
|00003130| 75 72 72 65 6e 74 5f 64 | 61 79 28 29 3b 0a 58 09 |urrent_d|ay();.X.|
|00003140| 09 7d 20 65 6c 73 65 20 | 69 66 20 28 21 73 74 72 |.} else |if (!str|
|00003150| 63 6d 70 28 63 2c 20 22 | 59 45 53 22 29 29 20 7b |cmp(c, "|YES")) {|
|00003160| 0a 58 09 09 09 2f 2a 20 | 79 65 73 74 65 72 64 61 |.X.../* |yesterda|
|00003170| 79 20 2a 2f 0a 58 09 09 | 09 63 75 72 72 65 6e 74 |y */.X..|.current|
|00003180| 2e 74 6d 5f 6d 64 61 79 | 2d 2d 3b 0a 58 09 09 09 |.tm_mday|--;.X...|
|00003190| 66 69 78 5f 63 75 72 72 | 65 6e 74 5f 64 61 79 28 |fix_curr|ent_day(|
|000031a0| 29 3b 0a 58 09 09 7d 20 | 65 6c 73 65 20 69 66 20 |);.X..} |else if |
|000031b0| 28 73 74 72 63 6d 70 28 | 63 2c 20 22 54 4f 44 22 |(strcmp(|c, "TOD"|
|000031c0| 29 29 20 7b 0a 58 09 09 | 09 69 66 20 28 63 6d 64 |)) {.X..|.if (cmd|
|000031d0| 6c 69 6e 65 29 0a 58 09 | 09 09 09 65 72 72 5f 72 |line).X.|...err_r|
|000031e0| 70 74 28 22 62 61 64 6c | 79 20 66 6f 72 6d 65 64 |pt("badl|y formed|
|000031f0| 20 64 61 74 65 20 66 6f | 72 20 2d 64 20 6f 70 74 | date fo|r -d opt|
|00003200| 69 6f 6e 20 28 69 67 6e | 6f 72 65 64 29 22 2c 20 |ion (ign|ored)", |
|00003210| 4e 4f 4e 5f 46 41 54 41 | 4c 29 3b 0a 58 09 09 09 |NON_FATA|L);.X...|
|00003220| 65 6c 73 65 0a 58 09 09 | 09 09 65 72 72 5f 72 70 |else.X..|..err_rp|
|00003230| 74 28 22 62 61 64 6c 79 | 20 66 6f 72 6d 65 64 20 |t("badly| formed |
|00003240| 64 61 74 65 20 2d 20 70 | 6c 65 61 73 65 20 72 65 |date - p|lease re|
|00003250| 65 6e 74 65 72 22 2c 20 | 4e 4f 4e 5f 46 41 54 41 |enter", |NON_FATA|
|00003260| 4c 29 3b 0a 58 09 09 09 | 72 65 74 75 72 6e 28 31 |L);.X...|return(1|
|00003270| 29 3b 0a 58 09 09 7d 0a | 58 09 7d 0a 58 09 72 65 |);.X..}.|X.}.X.re|
|00003280| 74 75 72 6e 28 30 29 3b | 0a 58 7d 0a 58 0a 58 76 |turn(0);|.X}.X.Xv|
|00003290| 6f 69 64 0a 58 65 72 72 | 5f 72 70 74 28 73 74 72 |oid.Xerr|_rpt(str|
|000032a0| 2c 20 66 6c 61 67 29 0a | 58 63 68 61 72 20 2a 73 |, flag).|Xchar *s|
|000032b0| 74 72 3b 0a 58 69 6e 74 | 20 66 6c 61 67 3b 0a 58 |tr;.Xint| flag;.X|
|000032c0| 7b 0a 58 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |{.X.fpri|ntf(stde|
|000032d0| 72 72 2c 20 22 25 73 5c | 6e 22 2c 20 73 74 72 29 |rr, "%s\|n", str)|
|000032e0| 3b 0a 58 09 69 66 20 28 | 66 6c 61 67 20 3d 3d 20 |;.X.if (|flag == |
|000032f0| 46 41 54 41 4c 29 0a 58 | 09 09 65 78 69 74 28 31 |FATAL).X|..exit(1|
|00003300| 29 3b 0a 58 7d 0a 45 4e | 44 5f 4f 46 5f 46 49 4c |);.X}.EN|D_OF_FIL|
|00003310| 45 0a 69 66 20 74 65 73 | 74 20 31 31 33 37 39 20 |E.if tes|t 11379 |
|00003320| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 27 63 61 6c |-ne `wc |-c <'cal|
|00003330| 32 63 74 2e 63 27 60 3b | 20 74 68 65 6e 0a 20 20 |2ct.c'`;| then. |
|00003340| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 5c 22 27 | echo s|har: \"'|
|00003350| 63 61 6c 32 63 74 2e 63 | 27 5c 22 20 75 6e 70 61 |cal2ct.c|'\" unpa|
|00003360| 63 6b 65 64 20 77 69 74 | 68 20 77 72 6f 6e 67 20 |cked wit|h wrong |
|00003370| 73 69 7a 65 21 0a 66 69 | 0a 23 20 65 6e 64 20 6f |size!.fi|.# end o|
|00003380| 66 20 27 63 61 6c 32 63 | 74 2e 63 27 0a 66 69 0a |f 'cal2c|t.c'.fi.|
|00003390| 69 66 20 74 65 73 74 20 | 2d 66 20 27 64 61 74 65 |if test |-f 'date|
|000033a0| 73 2f 65 76 65 6e 74 73 | 27 20 2d 61 20 22 24 7b |s/events|' -a "${|
|000033b0| 31 7d 22 20 21 3d 20 22 | 2d 63 22 20 3b 20 74 68 |1}" != "|-c" ; th|
|000033c0| 65 6e 20 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |en . ec|ho shar:|
|000033d0| 20 57 69 6c 6c 20 6e 6f | 74 20 63 6c 6f 62 62 65 | Will no|t clobbe|
|000033e0| 72 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |r existi|ng file |
|000033f0| 5c 22 27 64 61 74 65 73 | 2f 65 76 65 6e 74 73 27 |\"'dates|/events'|
|00003400| 5c 22 0a 65 6c 73 65 0a | 65 63 68 6f 20 73 68 61 |\".else.|echo sha|
|00003410| 72 3a 20 45 78 74 72 61 | 63 74 69 6e 67 20 5c 22 |r: Extra|cting \"|
|00003420| 27 64 61 74 65 73 2f 65 | 76 65 6e 74 73 27 5c 22 |'dates/e|vents'\"|
|00003430| 20 5c 28 32 38 38 20 63 | 68 61 72 61 63 74 65 72 | \(288 c|haracter|
|00003440| 73 5c 29 0a 73 65 64 20 | 22 73 2f 5e 58 2f 2f 22 |s\).sed |"s/^X//"|
|00003450| 20 3e 27 64 61 74 65 73 | 2f 65 76 65 6e 74 73 27 | >'dates|/events'|
|00003460| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|00003470| 0a 58 23 20 43 61 6c 65 | 6e 54 6f 6f 6c 20 56 32 |.X# Cale|nTool V2|
|00003480| 2e 32 20 2d 20 6e 66 6c | 61 67 3d 31 20 72 61 6e |.2 - nfl|ag=1 ran|
|00003490| 67 65 3d 31 2c 31 32 20 | 20 2d 20 44 4f 20 4e 4f |ge=1,12 | - DO NO|
|000034a0| 54 20 52 45 4d 4f 56 45 | 20 54 48 49 53 20 4c 49 |T REMOVE| THIS LI|
|000034b0| 4e 45 0a 58 23 20 24 48 | 65 61 64 65 72 3a 20 65 |NE.X# $H|eader: e|
|000034c0| 76 65 6e 74 73 2c 76 20 | 31 2e 31 20 39 31 2f 30 |vents,v |1.1 91/0|
|000034d0| 33 2f 30 37 20 31 36 3a | 31 39 3a 30 32 20 62 69 |3/07 16:|19:02 bi|
|000034e0| 6c 6c 72 20 45 78 70 20 | 24 0a 58 23 20 43 6f 6d |llr Exp |$.X# Com|
|000034f0| 6d 6f 6e 20 69 6e 63 6c | 75 64 65 20 66 69 6c 65 |mon incl|ude file|
|00003500| 20 6a 75 73 74 20 69 6e | 63 6c 75 64 65 73 20 69 | just in|cludes i|
|00003510| 6e 64 69 76 69 64 75 61 | 6c 20 70 61 72 74 73 0a |ndividua|l parts.|
|00003520| 58 23 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 65 76 |X#.X#inc|lude <ev|
|00003530| 65 6e 74 73 31 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |ents1>.X|#include|
|00003540| 20 3c 65 76 65 6e 74 73 | 32 3e 0a 58 23 69 6e 63 | <events|2>.X#inc|
|00003550| 6c 75 64 65 20 3c 65 76 | 65 6e 74 73 33 3e 0a 58 |lude <ev|ents3>.X|
|00003560| 23 69 6e 63 6c 75 64 65 | 20 3c 65 76 65 6e 74 73 |#include| <events|
|00003570| 34 3e 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 65 76 |4>.X#inc|lude <ev|
|00003580| 65 6e 74 73 35 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |ents5>.X|#include|
|00003590| 20 3c 65 76 65 6e 74 73 | 36 3e 0a 45 4e 44 5f 4f | <events|6>.END_O|
|000035a0| 46 5f 46 49 4c 45 0a 69 | 66 20 74 65 73 74 20 32 |F_FILE.i|f test 2|
|000035b0| 38 38 20 2d 6e 65 20 60 | 77 63 20 2d 63 20 3c 27 |88 -ne `|wc -c <'|
|000035c0| 64 61 74 65 73 2f 65 76 | 65 6e 74 73 27 60 3b 20 |dates/ev|ents'`; |
|000035d0| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|000035e0| 61 72 3a 20 5c 22 27 64 | 61 74 65 73 2f 65 76 65 |ar: \"'d|ates/eve|
|000035f0| 6e 74 73 27 5c 22 20 75 | 6e 70 61 63 6b 65 64 20 |nts'\" u|npacked |
|00003600| 77 69 74 68 20 77 72 6f | 6e 67 20 73 69 7a 65 21 |with wro|ng size!|
|00003610| 0a 66 69 0a 23 20 65 6e | 64 20 6f 66 20 27 64 61 |.fi.# en|d of 'da|
|00003620| 74 65 73 2f 65 76 65 6e | 74 73 27 0a 66 69 0a 69 |tes/even|ts'.fi.i|
|00003630| 66 20 74 65 73 74 20 2d | 66 20 27 65 78 70 69 72 |f test -|f 'expir|
|00003640| 65 2e 63 27 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |e.c' -a |"${1}" !|
|00003650| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|00003660| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00003670| 20 6e 6f 74 20 63 6c 6f | 62 62 65 72 20 65 78 69 | not clo|bber exi|
|00003680| 73 74 69 6e 67 20 66 69 | 6c 65 20 5c 22 27 65 78 |sting fi|le \"'ex|
|00003690| 70 69 72 65 2e 63 27 5c | 22 0a 65 6c 73 65 0a 65 |pire.c'\|".else.e|
|000036a0| 63 68 6f 20 73 68 61 72 | 3a 20 45 78 74 72 61 63 |cho shar|: Extrac|
|000036b0| 74 69 6e 67 20 5c 22 27 | 65 78 70 69 72 65 2e 63 |ting \"'|expire.c|
|000036c0| 27 5c 22 20 5c 28 35 37 | 32 30 20 63 68 61 72 61 |'\" \(57|20 chara|
|000036d0| 63 74 65 72 73 5c 29 0a | 73 65 64 20 22 73 2f 5e |cters\).|sed "s/^|
|000036e0| 58 2f 2f 22 20 3e 27 65 | 78 70 69 72 65 2e 63 27 |X//" >'e|xpire.c'|
|000036f0| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|00003700| 0a 58 2f 2a 0a 58 20 2a | 20 24 48 65 61 64 65 72 |.X/*.X *| $Header|
|00003710| 3a 20 65 78 70 69 72 65 | 2e 63 2c 76 20 32 2e 33 |: expire|.c,v 2.3|
|00003720| 20 39 31 2f 30 33 2f 32 | 37 20 31 36 3a 34 35 3a | 91/03/2|7 16:45:|
|00003730| 33 39 20 62 69 6c 6c 72 | 20 45 78 70 20 24 0a 58 |39 billr| Exp $.X|
|00003740| 20 2a 0a 58 20 2a 20 65 | 78 70 69 72 65 2e 63 0a | *.X * e|xpire.c.|
|00003750| 58 20 2a 20 65 78 70 69 | 72 65 20 6f 75 74 64 61 |X * expi|re outda|
|00003760| 74 65 64 20 61 70 70 74 | 73 2c 20 69 2e 65 2e 20 |ted appt|s, i.e. |
|00003770| 72 65 6d 6f 76 65 20 74 | 68 65 6d 20 66 72 6f 6d |remove t|hem from|
|00003780| 20 74 68 65 20 61 70 70 | 74 73 20 66 69 6c 65 2c | the app|ts file,|
|00003790| 20 69 66 20 74 68 65 79 | 0a 58 20 2a 20 61 72 65 | if they|.X * are|
|000037a0| 20 6f 6c 64 65 72 20 74 | 68 61 6e 20 3c 6e 3e 20 | older t|han <n> |
|000037b0| 64 61 79 73 20 61 6e 64 | 20 73 74 6f 72 65 20 74 |days and| store t|
|000037c0| 68 65 6d 20 69 6e 20 2e | 61 70 70 6f 69 6e 74 6d |hem in .|appointm|
|000037d0| 65 6e 74 59 59 20 69 66 | 20 3c 73 61 76 65 5f 6f |entYY if| <save_o|
|000037e0| 6c 64 3e 2e 0a 58 20 2a | 0a 58 20 2a 20 43 6f 70 |ld>..X *|.X * Cop|
|000037f0| 79 72 69 67 68 74 20 28 | 43 29 20 31 39 38 39 2c |yright (|C) 1989,|
|00003800| 20 31 39 39 31 20 54 65 | 6b 74 72 6f 6e 69 78 2c | 1991 Te|ktronix,|
|00003810| 20 49 6e 63 2e 0a 58 20 | 2a 09 41 6c 6c 20 52 69 | Inc..X |*.All Ri|
|00003820| 67 68 74 73 20 52 65 73 | 65 72 76 65 64 0a 58 20 |ghts Res|erved.X |
|00003830| 2a 20 50 65 72 6d 69 73 | 73 69 6f 6e 20 69 73 20 |* Permis|sion is |
|00003840| 68 65 72 65 62 79 20 67 | 72 61 6e 74 65 64 20 74 |hereby g|ranted t|
|00003850| 6f 20 75 73 65 20 61 6e | 64 20 6d 6f 64 69 66 79 |o use an|d modify|
|00003860| 20 74 68 69 73 20 63 6f | 64 65 20 69 6e 20 73 6f | this co|de in so|
|00003870| 75 72 63 65 0a 58 20 2a | 20 6f 72 20 62 69 6e 61 |urce.X *| or bina|
|00003880| 72 79 20 66 6f 72 6d 20 | 61 73 20 6c 6f 6e 67 20 |ry form |as long |
|00003890| 61 73 20 69 74 20 69 73 | 20 6e 6f 74 20 73 6f 6c |as it is| not sol|
|000038a0| 64 20 66 6f 72 20 70 72 | 6f 66 69 74 20 61 6e 64 |d for pr|ofit and|
|000038b0| 20 74 68 69 73 20 63 6f | 70 79 72 69 67 68 74 0a | this co|pyright.|
|000038c0| 58 20 2a 20 6e 6f 74 69 | 63 65 20 72 65 6d 61 69 |X * noti|ce remai|
|000038d0| 6e 73 20 69 6e 74 61 63 | 74 2e 0a 58 20 2a 2f 0a |ns intac|t..X */.|
|000038e0| 58 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 74 64 |X.X#incl|ude <std|
|000038f0| 69 6f 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |io.h>.X#|include |
|00003900| 3c 73 79 73 2f 74 69 6d | 65 2e 68 3e 0a 58 23 69 |<sys/tim|e.h>.X#i|
|00003910| 6e 63 6c 75 64 65 20 3c | 73 79 73 2f 74 79 70 65 |nclude <|sys/type|
|00003920| 73 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |s.h>.X#i|nclude <|
|00003930| 73 79 73 2f 73 74 61 74 | 2e 68 3e 0a 58 23 69 6e |sys/stat|.h>.X#in|
|00003940| 63 6c 75 64 65 20 3c 73 | 79 73 2f 65 72 72 6e 6f |clude <s|ys/errno|
|00003950| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 22 63 |.h>.X#in|clude "c|
|00003960| 74 2e 68 22 0a 58 0a 58 | 65 78 74 65 72 6e 20 73 |t.h".X.X|extern s|
|00003970| 74 72 75 63 74 20 74 6d | 20 74 6f 64 61 79 2c 63 |truct tm| today,c|
|00003980| 75 72 72 65 6e 74 3b 0a | 58 65 78 74 65 72 6e 20 |urrent;.|Xextern |
|00003990| 63 68 61 72 20 61 70 74 | 73 5f 70 61 74 68 6e 61 |char apt|s_pathna|
|000039a0| 6d 65 5b 5d 2c 20 74 6d | 70 61 70 74 73 5f 70 61 |me[], tm|papts_pa|
|000039b0| 74 68 6e 61 6d 65 5b 5d | 3b 0a 58 65 78 74 65 72 |thname[]|;.Xexter|
|000039c0| 6e 20 63 68 61 72 20 69 | 6e 62 75 66 5b 5d 2c 20 |n char i|nbuf[], |
|000039d0| 61 70 74 73 5f 64 69 72 | 5b 5d 3b 0a 58 65 78 74 |apts_dir|[];.Xext|
|000039e0| 65 72 6e 20 69 6e 74 20 | 73 61 76 65 5f 6f 6c 64 |ern int |save_old|
|000039f0| 2c 72 65 61 64 5f 6f 6e | 6c 79 3b 0a 58 65 78 74 |,read_on|ly;.Xext|
|00003a00| 65 72 6e 20 69 6e 74 20 | 65 72 72 6e 6f 3b 0a 58 |ern int |errno;.X|
|00003a10| 65 78 74 65 72 6e 20 64 | 6f 75 62 6c 65 20 6a 75 |extern d|ouble ju|
|00003a20| 6c 69 61 6e 5f 64 61 79 | 28 29 3b 0a 58 65 78 74 |lian_day|();.Xext|
|00003a30| 65 72 6e 20 64 6f 75 62 | 6c 65 20 6e 74 68 5f 6d |ern doub|le nth_m|
|00003a40| 64 61 79 5f 6f 66 5f 6d | 6f 6e 74 68 28 29 3b 0a |day_of_m|onth();.|
|00003a50| 58 0a 58 2f 2a 0a 58 20 | 2a 20 53 63 61 6e 20 61 |X.X/*.X |* Scan a|
|00003a60| 70 70 6f 69 6e 74 6d 65 | 6e 74 73 20 66 69 6c 65 |ppointme|nts file|
|00003a70| 20 66 6f 72 20 6f 75 74 | 64 61 74 65 64 20 61 70 | for out|dated ap|
|00003a80| 70 6f 69 6e 74 6d 65 6e | 74 73 2e 20 49 66 20 3c |pointmen|ts. If <|
|00003a90| 73 61 76 65 5f 6f 6c 64 | 3e 20 69 73 0a 58 20 2a |save_old|> is.X *|
|00003aa0| 20 54 52 55 45 20 74 68 | 65 6e 20 73 61 76 65 20 | TRUE th|en save |
|00003ab0| 74 68 65 6d 20 74 6f 20 | 61 20 73 70 65 63 69 61 |them to |a specia|
|00003ac0| 6c 20 66 69 6c 65 20 6f | 66 20 74 68 65 20 66 6f |l file o|f the fo|
|00003ad0| 72 6d 20 22 2e 61 70 70 | 6f 69 6e 74 6d 65 6e 74 |rm ".app|ointment|
|00003ae0| 73 2e 59 59 22 2c 0a 58 | 20 2a 20 77 68 65 72 65 |s.YY",.X| * where|
|00003af0| 20 59 59 20 69 73 20 74 | 68 65 20 79 65 61 72 20 | YY is t|he year |
|00003b00| 6f 66 20 74 68 61 74 20 | 61 70 70 6f 69 6e 74 6d |of that |appointm|
|00003b10| 65 6e 74 2e 20 20 4f 75 | 74 64 61 74 65 64 20 61 |ent. Ou|tdated a|
|00003b20| 70 70 6f 69 6e 74 6d 65 | 6e 74 73 20 61 72 65 0a |ppointme|nts are.|
|00003b30| 58 20 2a 20 61 70 70 6f | 69 6e 74 6d 65 6e 74 73 |X * appo|intments|
|00003b40| 20 74 68 61 74 20 61 72 | 65 20 6f 6c 64 65 72 20 | that ar|e older |
|00003b50| 74 68 61 74 20 3c 65 64 | 61 79 73 3e 20 6f 6c 64 |that <ed|ays> old|
|00003b60| 2e 20 20 49 66 20 3c 65 | 64 61 79 73 3e 20 69 73 |. If <e|days> is|
|00003b70| 20 7a 65 72 6f 20 74 68 | 65 6e 0a 58 20 2a 20 4f | zero th|en.X * O|
|00003b80| 75 74 64 61 74 65 64 20 | 61 70 70 6f 69 6e 74 6d |utdated |appointm|
|00003b90| 65 6e 74 73 20 61 72 65 | 20 61 70 70 6f 69 6e 74 |ents are| appoint|
|00003ba0| 6d 65 6e 74 73 20 66 72 | 6f 6d 20 70 72 65 76 69 |ments fr|om previ|
|00003bb0| 6f 75 73 20 79 65 61 72 | 73 2e 20 49 66 20 3c 73 |ous year|s. If <s|
|00003bc0| 61 76 65 5f 6f 6c 64 3e | 0a 58 20 2a 20 69 73 20 |ave_old>|.X * is |
|00003bd0| 6e 6f 74 20 73 65 74 2c | 20 74 68 65 6e 20 4f 75 |not set,| then Ou|
|00003be0| 74 64 61 74 65 64 20 61 | 70 70 6f 69 6e 74 6d 65 |tdated a|ppointme|
|00003bf0| 6e 74 73 20 61 72 65 20 | 6a 75 73 74 20 64 65 6c |nts are |just del|
|00003c00| 65 74 65 64 2e 0a 58 20 | 2a 20 53 65 74 74 69 6e |eted..X |* Settin|
|00003c10| 67 20 3c 73 61 76 65 5f | 6f 6c 64 3e 20 54 52 55 |g <save_|old> TRU|
|00003c20| 45 20 28 2d 6f 29 20 61 | 6e 64 20 3c 65 64 61 79 |E (-o) a|nd <eday|
|00003c30| 73 3e 20 74 6f 20 30 20 | 28 2d 78 20 30 29 20 67 |s> to 0 |(-x 0) g|
|00003c40| 69 76 65 73 20 74 68 65 | 20 62 65 68 61 76 69 6f |ives the| behavio|
|00003c50| 72 0a 58 20 2a 20 64 65 | 73 63 72 69 62 65 64 20 |r.X * de|scribed |
|00003c60| 62 79 20 74 68 65 20 22 | 2d 6f 22 20 73 77 69 74 |by the "|-o" swit|
|00003c70| 63 68 2e 0a 58 20 2a 2f | 0a 58 65 78 70 69 72 65 |ch..X */|.Xexpire|
|00003c80| 28 65 64 61 79 73 29 0a | 58 69 6e 74 20 65 64 61 |(edays).|Xint eda|
|00003c90| 79 73 3b 0a 58 7b 0a 58 | 09 46 49 4c 45 20 2a 61 |ys;.X{.X|.FILE *a|
|00003ca0| 70 74 73 2c 20 2a 74 65 | 6d 70 5f 61 70 74 73 2c |pts, *te|mp_apts,|
|00003cb0| 20 2a 66 70 3b 0a 58 09 | 69 6e 74 20 72 65 61 64 | *fp;.X.|int read|
|00003cc0| 5f 73 74 61 74 3b 0a 58 | 09 69 6e 74 20 72 75 6e |_stat;.X|.int run|
|00003cd0| 6c 2c 20 77 65 65 6b 3b | 0a 58 09 63 68 61 72 20 |l, week;|.X.char |
|00003ce0| 73 61 76 65 5f 66 69 6c | 65 5b 31 32 38 5d 3b 0a |save_fil|e[128];.|
|00003cf0| 58 09 73 74 72 75 63 74 | 20 61 70 70 74 5f 65 6e |X.struct| appt_en|
|00003d00| 74 72 79 20 61 70 70 74 | 3b 0a 58 09 73 74 72 75 |try appt|;.X.stru|
|00003d10| 63 74 20 73 74 61 74 20 | 73 62 75 66 3b 0a 58 09 |ct stat |sbuf;.X.|
|00003d20| 73 74 72 75 63 74 20 74 | 6d 20 73 61 76 65 63 75 |struct t|m savecu|
|00003d30| 72 72 65 6e 74 3b 0a 58 | 09 69 6e 74 20 73 75 63 |rrent;.X|.int suc|
|00003d40| 63 65 73 73 66 75 6c 20 | 3d 20 31 3b 20 20 20 20 |cessful |= 1; |
|00003d50| 2f 2a 20 61 73 73 75 6d | 65 20 74 68 69 73 20 77 |/* assum|e this w|
|00003d60| 6f 72 6b 65 64 20 2a 2f | 0a 58 0a 58 09 2f 2a 0a |orked */|.X.X./*.|
|00003d70| 58 09 20 2a 20 6d 65 74 | 68 6f 64 3a 20 66 6f 72 |X. * met|hod: for|
|00003d80| 20 65 61 63 68 20 72 65 | 67 75 6c 61 72 20 61 70 | each re|gular ap|
|00003d90| 70 74 20 69 6e 20 74 68 | 65 20 66 69 6c 65 20 28 |pt in th|e file (|
|00003da0| 6f 72 20 6c 69 6d 69 74 | 65 64 0a 58 09 20 2a 20 |or limit|ed.X. * |
|00003db0| 64 75 72 61 74 69 6f 6e | 20 61 70 70 74 29 2c 20 |duration| appt), |
|00003dc0| 63 6f 6d 70 61 72 65 20 | 74 68 65 20 4a 75 6c 69 |compare |the Juli|
|00003dd0| 61 6e 20 64 61 74 65 20 | 6f 66 20 74 68 61 74 20 |an date |of that |
|00003de0| 61 70 70 74 0a 58 09 20 | 2a 20 61 6e 64 20 74 68 |appt.X. |* and th|
|00003df0| 65 20 4a 75 6c 69 61 6e | 20 64 61 74 65 20 6f 66 |e Julian| date of|
|00003e00| 20 74 6f 64 61 79 2c 20 | 6c 6f 6f 6b 69 6e 67 20 | today, |looking |
|00003e10| 66 6f 72 20 61 20 64 69 | 66 66 65 72 65 6e 63 65 |for a di|fference|
|00003e20| 0a 58 09 20 2a 20 67 72 | 65 61 74 65 72 20 74 68 |.X. * gr|eater th|
|00003e30| 61 6e 20 3c 65 64 61 79 | 73 3e 2e 0a 58 09 20 2a |an <eday|s>..X. *|
|00003e40| 2f 0a 58 09 69 66 20 28 | 72 65 61 64 5f 6f 6e 6c |/.X.if (|read_onl|
|00003e50| 79 29 20 2f 2a 20 77 65 | 20 63 61 6e 27 74 20 65 |y) /* we| can't e|
|00003e60| 78 70 69 72 65 20 66 72 | 6f 6d 20 61 20 63 61 6c |xpire fr|om a cal|
|00003e70| 65 6e 64 61 72 20 69 66 | 20 72 65 61 64 5f 6f 6e |endar if| read_on|
|00003e80| 6c 79 20 2a 2f 0a 58 09 | 09 72 65 74 75 72 6e 3b |ly */.X.|.return;|
|00003e90| 0a 58 09 69 66 20 28 28 | 61 70 74 73 20 3d 20 66 |.X.if ((|apts = f|
|00003ea0| 6f 70 65 6e 28 61 70 74 | 73 5f 70 61 74 68 6e 61 |open(apt|s_pathna|
|00003eb0| 6d 65 2c 20 22 72 22 29 | 29 20 3d 3d 20 4e 55 4c |me, "r")|) == NUL|
|00003ec0| 4c 29 0a 58 09 09 73 75 | 63 63 65 73 73 66 75 6c |L).X..su|ccessful|
|00003ed0| 20 3d 20 65 72 72 5f 72 | 70 74 28 22 63 61 6e 27 | = err_r|pt("can'|
|00003ee0| 74 20 6f 70 65 6e 20 61 | 70 70 6f 69 6e 74 6d 65 |t open a|ppointme|
|00003ef0| 6e 74 73 20 66 69 6c 65 | 2c 20 61 62 6f 72 74 69 |nts file|, aborti|
|00003f00| 6e 67 20 65 78 70 69 72 | 65 22 2c 20 4e 4f 4e 5f |ng expir|e", NON_|
|00003f10| 46 41 54 41 4c 29 3b 0a | 58 09 69 66 20 28 28 74 |FATAL);.|X.if ((t|
|00003f20| 65 6d 70 5f 61 70 74 73 | 20 3d 20 66 6f 70 65 6e |emp_apts| = fopen|
|00003f30| 28 74 6d 70 61 70 74 73 | 5f 70 61 74 68 6e 61 6d |(tmpapts|_pathnam|
|00003f40| 65 2c 20 22 77 22 29 29 | 20 3d 3d 20 4e 55 4c 4c |e, "w"))| == NULL|
|00003f50| 29 0a 58 09 09 73 75 63 | 63 65 73 73 66 75 6c 20 |).X..suc|cessful |
|00003f60| 3d 20 65 72 72 5f 72 70 | 74 28 22 63 61 6e 27 74 |= err_rp|t("can't|
|00003f70| 20 6f 70 65 6e 20 74 65 | 6d 70 20 66 69 6c 65 20 | open te|mp file |
|00003f80| 66 6f 72 20 77 72 69 74 | 69 6e 67 2c 20 61 62 6f |for writ|ing, abo|
|00003f90| 72 74 69 6e 67 20 65 78 | 70 69 72 65 22 2c 20 4e |rting ex|pire", N|
|00003fa0| 4f 4e 5f 46 41 54 41 4c | 29 3b 0a 58 09 2f 2a 0a |ON_FATAL|);.X./*.|
|00003fb0| 58 09 20 2a 20 6e 6f 77 | 20 67 6f 20 74 68 72 75 |X. * now| go thru|
|00003fc0| 20 74 68 65 20 61 70 70 | 6f 69 6e 74 6d 65 6e 74 | the app|ointment|
|00003fd0| 73 20 66 69 6c 65 0a 58 | 09 20 2a 2f 0a 58 09 73 |s file.X|. */.X.s|
|00003fe0| 61 76 65 63 75 72 72 65 | 6e 74 20 3d 20 63 75 72 |avecurre|nt = cur|
|00003ff0| 72 65 6e 74 3b 20 20 2f | 2a 20 73 61 76 65 20 73 |rent; /|* save s|
|00004000| 6f 20 63 61 6e 20 72 65 | 73 74 6f 72 65 20 61 66 |o can re|store af|
|00004010| 74 65 72 20 6c 6f 6f 70 | 20 2a 2f 0a 58 09 77 68 |ter loop| */.X.wh|
|00004020| 69 6c 65 20 28 73 75 63 | 63 65 73 73 66 75 6c 20 |ile (suc|cessful |
|00004030| 26 26 20 28 72 65 61 64 | 5f 73 74 61 74 3d 67 65 |&& (read|_stat=ge|
|00004040| 74 5f 61 65 6e 74 72 79 | 28 61 70 74 73 2c 20 26 |t_aentry|(apts, &|
|00004050| 61 70 70 74 2c 20 54 52 | 55 45 2c 20 30 2c 20 30 |appt, TR|UE, 0, 0|
|00004060| 29 29 20 21 3d 20 45 4f | 46 29 20 7b 0a 58 09 09 |)) != EO|F) {.X..|
|00004070| 69 66 20 28 72 65 61 64 | 5f 73 74 61 74 29 0a 58 |if (read|_stat).X|
|00004080| 09 09 09 63 6f 6e 74 69 | 6e 75 65 3b 09 2f 2a 20 |...conti|nue;./* |
|00004090| 72 65 61 64 20 65 72 72 | 6f 72 20 28 69 67 6e 6f |read err|or (igno|
|000040a0| 72 65 29 20 2a 2f 0a 58 | 09 09 69 66 20 28 61 70 |re) */.X|..if (ap|
|000040b0| 70 74 2e 66 6c 61 67 73 | 20 26 20 41 5f 43 4f 4d |pt.flags| & A_COM|
|000040c0| 4d 45 4e 54 29 20 7b 0a | 58 09 09 09 66 70 75 74 |MENT) {.|X...fput|
|000040d0| 73 28 69 6e 62 75 66 2c | 20 74 65 6d 70 5f 61 70 |s(inbuf,| temp_ap|
|000040e0| 74 73 29 3b 0a 58 09 09 | 09 63 6f 6e 74 69 6e 75 |ts);.X..|.continu|
|000040f0| 65 3b 0a 58 09 09 7d 0a | 58 09 09 63 75 72 72 65 |e;.X..}.|X..curre|
|00004100| 6e 74 2e 74 6d 5f 79 65 | 61 72 20 3d 20 61 70 70 |nt.tm_ye|ar = app|
|00004110| 74 2e 79 65 61 72 3b 0a | 58 09 09 63 75 72 72 65 |t.year;.|X..curre|
|00004120| 6e 74 2e 74 6d 5f 6d 6f | 6e 20 3d 20 61 70 70 74 |nt.tm_mo|n = appt|
|00004130| 2e 6d 6f 6e 74 68 3b 0a | 58 09 09 63 75 72 72 65 |.month;.|X..curre|
|00004140| 6e 74 2e 74 6d 5f 6d 64 | 61 79 20 3d 20 61 70 70 |nt.tm_md|ay = app|
|00004150| 74 2e 64 61 79 3b 0a 58 | 09 09 69 66 20 28 61 70 |t.day;.X|..if (ap|
|00004160| 70 74 2e 66 6c 61 67 73 | 20 26 20 41 4c 4c 5f 59 |pt.flags| & ALL_Y|
|00004170| 45 41 52 53 29 0a 58 09 | 09 09 2f 2a 20 66 6f 72 |EARS).X.|../* for|
|00004180| 63 65 20 74 68 69 73 20 | 74 6f 20 62 65 20 73 61 |ce this |to be sa|
|00004190| 76 65 64 20 2a 2f 0a 58 | 09 09 09 63 75 72 72 65 |ved */.X|...curre|
|000041a0| 6e 74 2e 74 6d 5f 79 65 | 61 72 20 3d 20 74 6f 64 |nt.tm_ye|ar = tod|
|000041b0| 61 79 2e 74 6d 5f 79 65 | 61 72 20 2b 20 31 3b 0a |ay.tm_ye|ar + 1;.|
|000041c0| 58 09 09 69 66 20 28 61 | 70 70 74 2e 66 6c 61 67 |X..if (a|ppt.flag|
|000041d0| 73 20 26 20 41 4c 4c 5f | 4d 4f 4e 54 48 53 29 0a |s & ALL_|MONTHS).|
|000041e0| 58 09 09 09 2f 2a 20 6d | 61 79 62 65 20 73 61 76 |X.../* m|aybe sav|
|000041f0| 65 64 2c 20 70 69 63 6b | 20 77 6f 72 73 65 20 63 |ed, pick| worse c|
|00004200| 61 73 65 20 2a 2f 0a 58 | 09 09 09 63 75 72 72 65 |ase */.X|...curre|
|00004210| 6e 74 2e 74 6d 5f 6d 6f | 6e 20 3d 20 44 45 43 3b |nt.tm_mo|n = DEC;|
|00004220| 0a 58 09 09 69 66 20 28 | 61 70 70 74 2e 66 6c 61 |.X..if (|appt.fla|
|00004230| 67 73 20 26 20 41 4c 4c | 5f 44 41 59 53 20 7c 7c |gs & ALL|_DAYS |||
|00004240| 20 61 70 70 74 2e 66 6c | 61 67 73 20 26 20 45 56 | appt.fl|ags & EV|
|00004250| 45 52 59 5f 4d 4f 4e 5f | 46 52 49 29 20 7b 0a 58 |ERY_MON_|FRI) {.X|
|00004260| 09 09 09 69 66 20 28 63 | 75 72 72 65 6e 74 2e 74 |...if (c|urrent.t|
|00004270| 6d 5f 79 65 61 72 20 3c | 20 74 6f 64 61 79 2e 74 |m_year <| today.t|
|00004280| 6d 5f 79 65 61 72 20 7c | 7c 0a 58 09 09 09 20 20 |m_year |||.X... |
|00004290| 20 28 63 75 72 72 65 6e | 74 2e 74 6d 5f 79 65 61 | (curren|t.tm_yea|
|000042a0| 72 20 3d 3d 20 74 6f 64 | 61 79 2e 74 6d 5f 79 65 |r == tod|ay.tm_ye|
|000042b0| 61 72 20 26 26 0a 58 09 | 09 09 20 20 20 20 63 75 |ar &&.X.|.. cu|
|000042c0| 72 72 65 6e 74 2e 74 6d | 5f 6d 6f 6e 20 3c 20 74 |rrent.tm|_mon < t|
|000042d0| 6f 64 61 79 2e 74 6d 5f | 6d 6f 6e 29 29 20 7b 0a |oday.tm_|mon)) {.|
|000042e0| 58 09 09 09 09 2f 2a 20 | 6d 61 79 62 65 20 73 61 |X..../* |maybe sa|
|000042f0| 76 65 64 2c 20 70 69 63 | 6b 20 77 6f 72 73 65 20 |ved, pic|k worse |
|00004300| 63 61 73 65 20 2a 2f 0a | 58 09 09 09 09 63 75 72 |case */.|X....cur|
|00004310| 72 65 6e 74 2e 74 6d 5f | 6d 64 61 79 20 3d 20 6d |rent.tm_|mday = m|
|00004320| 6f 6e 74 68 6c 65 6e 67 | 74 68 28 63 75 72 72 65 |onthleng|th(curre|
|00004330| 6e 74 2e 74 6d 5f 6d 6f | 6e 29 3b 0a 58 09 09 09 |nt.tm_mo|n);.X...|
|00004340| 09 66 69 78 5f 63 75 72 | 72 65 6e 74 5f 64 61 79 |.fix_cur|rent_day|
|00004350| 28 29 3b 0a 58 09 09 09 | 09 69 66 20 28 61 70 70 |();.X...|.if (app|
|00004360| 74 2e 66 6c 61 67 73 20 | 26 20 45 56 45 52 59 5f |t.flags |& EVERY_|
|00004370| 4d 4f 4e 5f 46 52 49 29 | 0a 58 09 09 09 09 09 77 |MON_FRI)|.X.....w|
|00004380| 68 69 6c 65 20 28 63 75 | 72 72 65 6e 74 2e 74 6d |hile (cu|rrent.tm|
|00004390| 5f 77 64 61 79 20 3d 3d | 20 53 41 54 0a 58 09 09 |_wday ==| SAT.X..|
|000043a0| 09 09 09 20 20 20 20 7c | 7c 20 63 75 72 72 65 6e |... ||| curren|
|000043b0| 74 2e 74 6d 5f 77 64 61 | 79 20 3d 3d 20 53 55 4e |t.tm_wda|y == SUN|
|000043c0| 29 20 7b 0a 58 09 09 09 | 09 09 09 63 75 72 72 65 |) {.X...|...curre|
|000043d0| 6e 74 2e 74 6d 5f 6d 64 | 61 79 2d 2d 3b 0a 58 09 |nt.tm_md|ay--;.X.|
|000043e0| 09 09 09 09 09 66 69 78 | 5f 63 75 72 72 65 6e 74 |.....fix|_current|
|000043f0| 5f 64 61 79 28 29 3b 0a | 58 09 09 09 09 09 7d 0a |_day();.|X.....}.|
|00004400| 58 09 09 09 7d 0a 58 09 | 09 7d 0a 58 09 09 69 66 |X...}.X.|.}.X..if|
|00004410| 20 28 61 70 70 74 2e 66 | 6c 61 67 73 20 26 20 45 | (appt.f|lags & E|
|00004420| 56 45 52 59 5f 53 4f 4d | 45 44 41 59 29 20 7b 0a |VERY_SOM|EDAY) {.|
|00004430| 58 09 09 09 69 66 20 28 | 28 61 70 70 74 2e 72 65 |X...if (|(appt.re|
|00004440| 70 65 61 74 20 26 20 41 | 4c 4c 5f 57 45 45 4b 53 |peat & A|LL_WEEKS|
|00004450| 29 20 3d 3d 20 41 4c 4c | 5f 57 45 45 4b 53 20 7c |) == ALL|_WEEKS ||
|00004460| 7c 20 61 70 70 74 2e 72 | 65 70 65 61 74 20 26 20 || appt.r|epeat & |
|00004470| 4c 41 53 54 5f 57 45 45 | 4b 20 7c 7c 0a 58 09 09 |LAST_WEE|K ||.X..|
|00004480| 09 20 20 20 20 61 70 70 | 74 2e 72 65 70 65 61 74 |. app|t.repeat|
|00004490| 20 26 20 57 45 45 4b 35 | 29 0a 58 09 09 09 09 77 | & WEEK5|).X....w|
|000044a0| 65 65 6b 20 3d 20 35 3b | 0a 58 09 09 09 65 6c 73 |eek = 5;|.X...els|
|000044b0| 65 20 69 66 20 28 61 70 | 70 74 2e 72 65 70 65 61 |e if (ap|pt.repea|
|000044c0| 74 20 26 20 57 45 45 4b | 34 29 0a 58 09 09 09 09 |t & WEEK|4).X....|
|000044d0| 77 65 65 6b 20 3d 20 34 | 3b 0a 58 09 09 09 65 6c |week = 4|;.X...el|
|000044e0| 73 65 20 69 66 20 28 61 | 70 70 74 2e 72 65 70 65 |se if (a|ppt.repe|
|000044f0| 61 74 20 26 20 57 45 45 | 4b 33 29 0a 58 09 09 09 |at & WEE|K3).X...|
|00004500| 09 77 65 65 6b 20 3d 20 | 33 3b 0a 58 09 09 09 65 |.week = |3;.X...e|
|00004510| 6c 73 65 20 69 66 20 28 | 61 70 70 74 2e 72 65 70 |lse if (|appt.rep|
|00004520| 65 61 74 20 26 20 57 45 | 45 4b 32 29 0a 58 09 09 |eat & WE|EK2).X..|
|00004530| 09 09 77 65 65 6b 20 3d | 20 32 3b 0a 58 09 09 09 |..week =| 2;.X...|
|00004540| 65 6c 73 65 20 69 66 20 | 28 61 70 70 74 2e 72 65 |else if |(appt.re|
|00004550| 70 65 61 74 20 26 20 57 | 45 45 4b 31 29 0a 58 09 |peat & W|EEK1).X.|
|00004560| 09 09 09 77 65 65 6b 20 | 3d 20 31 3b 0a 58 09 09 |...week |= 1;.X..|
|00004570| 09 63 75 72 72 65 6e 74 | 2e 74 6d 5f 6d 64 61 79 |.current|.tm_mday|
|00004580| 20 3d 20 28 69 6e 74 29 | 6e 74 68 5f 6d 64 61 79 | = (int)|nth_mday|
|00004590| 5f 6f 66 5f 6d 6f 6e 74 | 68 28 77 65 65 6b 2c 20 |_of_mont|h(week, |
|000045a0| 50 69 63 6b 64 61 79 28 | 61 70 70 74 2e 66 6c 61 |Pickday(|appt.fla|
|000045b0| 67 73 29 2c 20 63 75 72 | 72 65 6e 74 2e 74 6d 5f |gs), cur|rent.tm_|
|000045c0| 6d 6f 6e 2c 20 63 75 72 | 72 65 6e 74 2e 74 6d 5f |mon, cur|rent.tm_|
|000045d0| 79 65 61 72 2b 31 39 30 | 30 29 3b 0a 58 09 09 09 |year+190|0);.X...|
|000045e0| 69 66 20 28 63 75 72 72 | 65 6e 74 2e 74 6d 5f 6d |if (curr|ent.tm_m|
|000045f0| 64 61 79 20 3e 20 6d 6f | 6e 74 68 6c 65 6e 67 74 |day > mo|nthlengt|
|00004600| 68 28 63 75 72 72 65 6e | 74 2e 74 6d 5f 6d 6f 6e |h(curren|t.tm_mon|
|00004610| 29 29 0a 58 09 09 09 09 | 63 75 72 72 65 6e 74 2e |)).X....|current.|
|00004620| 74 6d 5f 6d 64 61 79 20 | 3d 20 28 69 6e 74 29 6e |tm_mday |= (int)n|
|00004630| 74 68 5f 6d 64 61 79 5f | 6f 66 5f 6d 6f 6e 74 68 |th_mday_|of_month|
|00004640| 28 77 65 65 6b 2d 31 2c | 20 50 69 63 6b 64 61 79 |(week-1,| Pickday|
|00004650| 28 61 70 70 74 2e 66 6c | 61 67 73 29 2c 20 63 75 |(appt.fl|ags), cu|
|00004660| 72 72 65 6e 74 2e 74 6d | 5f 6d 6f 6e 2c 20 63 75 |rrent.tm|_mon, cu|
|00004670| 72 72 65 6e 74 2e 74 6d | 5f 79 65 61 72 2b 31 39 |rrent.tm|_year+19|
|00004680| 30 30 29 3b 0a 58 09 09 | 09 69 66 20 28 61 70 70 |00);.X..|.if (app|
|00004690| 74 2e 66 6c 61 67 73 20 | 26 20 52 55 4e 29 20 7b |t.flags |& RUN) {|
|000046a0| 0a 58 09 09 09 09 63 75 | 72 72 65 6e 74 2e 74 6d |.X....cu|rrent.tm|
|000046b0| 5f 6d 64 61 79 20 2b 3d | 20 61 70 70 74 2e 72 75 |_mday +=| appt.ru|
|000046c0| 6e 6c 65 6e 67 74 68 3b | 0a 58 09 09 09 09 66 69 |nlength;|.X....fi|
|000046d0| 78 5f 63 75 72 72 65 6e | 74 5f 64 61 79 28 29 3b |x_curren|t_day();|
|000046e0| 0a 58 09 09 09 7d 0a 58 | 09 09 7d 20 65 6c 73 65 |.X...}.X|..} else|
|000046f0| 20 69 66 20 28 61 70 70 | 74 2e 66 6c 61 67 73 20 | if (app|t.flags |
|00004700| 26 20 52 45 50 45 41 54 | 29 20 7b 0a 58 09 09 09 |& REPEAT|) {.X...|
|00004710| 69 66 20 28 61 70 70 74 | 2e 66 6c 61 67 73 20 26 |if (appt|.flags &|
|00004720| 20 52 55 4e 29 0a 58 09 | 09 09 09 72 75 6e 6c 20 | RUN).X.|...runl |
|00004730| 3d 20 61 70 70 74 2e 72 | 75 6e 6c 65 6e 67 74 68 |= appt.r|unlength|
|00004740| 3b 0a 58 09 09 09 65 6c | 73 65 0a 58 09 09 09 09 |;.X...el|se.X....|
|00004750| 72 75 6e 6c 20 3d 20 31 | 3b 0a 58 09 09 09 77 68 |runl = 1|;.X...wh|
|00004760| 69 6c 65 20 28 79 6d 64 | 5f 63 6f 6d 70 61 72 65 |ile (ymd|_compare|
|00004770| 28 63 75 72 72 65 6e 74 | 2c 20 74 6f 64 61 79 29 |(current|, today)|
|00004780| 20 3c 20 30 20 26 26 20 | 72 75 6e 6c 29 20 7b 0a | < 0 && |runl) {.|
|00004790| 58 09 09 09 09 69 66 20 | 28 61 70 70 74 2e 66 6c |X....if |(appt.fl|
|000047a0| 61 67 73 20 26 20 52 55 | 4e 29 0a 58 09 09 09 09 |ags & RU|N).X....|
|000047b0| 09 2d 2d 72 75 6e 6c 3b | 0a 58 09 09 09 09 69 66 |.--runl;|.X....if|
|000047c0| 20 28 72 75 6e 6c 29 20 | 7b 0a 58 09 09 09 09 09 | (runl) |{.X.....|
|000047d0| 63 75 72 72 65 6e 74 2e | 74 6d 5f 6d 64 61 79 20 |current.|tm_mday |
|000047e0| 2b 3d 20 61 70 70 74 2e | 72 65 70 65 61 74 3b 0a |+= appt.|repeat;.|
|000047f0| 58 09 09 09 09 09 66 69 | 78 5f 63 75 72 72 65 6e |X.....fi|x_curren|
|00004800| 74 5f 64 61 79 28 29 3b | 0a 58 09 09 09 09 7d 0a |t_day();|.X....}.|
|00004810| 58 09 09 09 7d 0a 58 09 | 09 7d 0a 58 09 09 63 75 |X...}.X.|.}.X..cu|
|00004820| 72 72 65 6e 74 2e 74 6d | 5f 6d 64 61 79 20 2b 3d |rrent.tm|_mday +=|
|00004830| 20 65 64 61 79 73 3b 20 | 20 2f 2a 20 6f 66 66 73 | edays; | /* offs|
|00004840| 65 74 20 62 79 20 65 78 | 70 69 72 65 20 64 61 79 |et by ex|pire day|
|00004850| 73 20 2a 2f 0a 58 09 09 | 66 69 78 5f 63 75 72 72 |s */.X..|fix_curr|
|00004860| 65 6e 74 5f 64 61 79 28 | 29 3b 0a 58 09 09 69 66 |ent_day(|);.X..if|
|00004870| 20 28 28 28 65 64 61 79 | 73 20 3d 3d 20 30 29 20 | (((eday|s == 0) |
|00004880| 26 26 20 28 63 75 72 72 | 65 6e 74 2e 74 6d 5f 79 |&& (curr|ent.tm_y|
|00004890| 65 61 72 20 3e 3d 20 74 | 6f 64 61 79 2e 74 6d 5f |ear >= t|oday.tm_|
|000048a0| 79 65 61 72 29 29 20 7c | 7c 0a 58 09 09 20 20 20 |year)) |||.X.. |
|000048b0| 20 6a 75 6c 69 61 6e 5f | 64 61 79 28 28 64 6f 75 | julian_|day((dou|
|000048c0| 62 6c 65 29 63 75 72 72 | 65 6e 74 2e 74 6d 5f 6d |ble)curr|ent.tm_m|
|000048d0| 64 61 79 2c 20 63 75 72 | 72 65 6e 74 2e 74 6d 5f |day, cur|rent.tm_|
|000048e0| 6d 6f 6e 2c 20 63 75 72 | 72 65 6e 74 2e 74 6d 5f |mon, cur|rent.tm_|
|000048f0| 79 65 61 72 2b 31 39 30 | 30 29 20 3e 3d 0a 58 09 |year+190|0) >=.X.|
|00004900| 09 20 20 20 20 6a 75 6c | 69 61 6e 5f 64 61 79 28 |. jul|ian_day(|
|00004910| 28 64 6f 75 62 6c 65 29 | 74 6f 64 61 79 2e 74 6d |(double)|today.tm|
|00004920| 5f 6d 64 61 79 2c 20 74 | 6f 64 61 79 2e 74 6d 5f |_mday, t|oday.tm_|
|00004930| 6d 6f 6e 2c 20 74 6f 64 | 61 79 2e 74 6d 5f 79 65 |mon, tod|ay.tm_ye|
|00004940| 61 72 2b 31 39 30 30 29 | 29 20 7b 0a 58 09 09 09 |ar+1900)|) {.X...|
|00004950| 69 66 20 28 70 75 74 5f | 61 65 6e 74 72 79 28 74 |if (put_|aentry(t|
|00004960| 65 6d 70 5f 61 70 74 73 | 2c 20 26 61 70 70 74 29 |emp_apts|, &appt)|
|00004970| 29 20 7b 0a 58 09 09 09 | 09 2f 2a 20 77 72 69 74 |) {.X...|./* writ|
|00004980| 65 20 65 72 72 6f 72 20 | 2a 2f 0a 58 09 09 09 09 |e error |*/.X....|
|00004990| 62 72 65 61 6b 3b 0a 58 | 09 09 09 7d 0a 58 09 09 |break;.X|...}.X..|
|000049a0| 7d 20 65 6c 73 65 20 7b | 0a 58 09 09 09 69 66 20 |} else {|.X...if |
|000049b0| 28 73 61 76 65 5f 6f 6c | 64 29 20 7b 0a 58 09 09 |(save_ol|d) {.X..|
|000049c0| 09 09 2f 2a 20 70 72 65 | 70 65 6e 64 20 64 69 72 |../* pre|pend dir|
|000049d0| 65 63 74 6f 72 79 20 69 | 6e 66 6f 20 2a 2f 0a 58 |ectory i|nfo */.X|
|000049e0| 09 09 09 09 73 70 72 69 | 6e 74 66 28 73 61 76 65 |....spri|ntf(save|
|000049f0| 5f 66 69 6c 65 2c 20 22 | 25 73 2e 25 30 32 64 22 |_file, "|%s.%02d"|
|00004a00| 2c 0a 58 09 09 09 09 09 | 61 70 74 73 5f 70 61 74 |,.X.....|apts_pat|
|00004a10| 68 6e 61 6d 65 2c 20 61 | 70 70 74 2e 79 65 61 72 |hname, a|ppt.year|
|00004a20| 29 3b 0a 58 09 09 09 09 | 69 66 20 28 73 74 61 74 |);.X....|if (stat|
|00004a30| 28 73 61 76 65 5f 66 69 | 6c 65 2c 20 26 73 62 75 |(save_fi|le, &sbu|
|00004a40| 66 29 20 26 26 20 65 72 | 72 6e 6f 20 3d 3d 20 45 |f) && er|rno == E|
|00004a50| 4e 4f 45 4e 54 29 20 7b | 0a 58 09 09 09 09 09 2f |NOENT) {|.X...../|
|00004a60| 2a 20 6e 65 77 20 66 69 | 6c 65 2a 2f 0a 58 09 09 |* new fi|le*/.X..|
|00004a70| 09 09 09 69 66 20 28 28 | 66 70 20 3d 20 66 6f 70 |...if ((|fp = fop|
|00004a80| 65 6e 28 73 61 76 65 5f | 66 69 6c 65 2c 20 22 77 |en(save_|file, "w|
|00004a90| 22 29 29 20 3d 3d 20 4e | 55 4c 4c 29 0a 58 09 09 |")) == N|ULL).X..|
|00004aa0| 09 09 09 09 73 75 63 63 | 65 73 73 66 75 6c 20 3d |....succ|essful =|
|00004ab0| 20 65 72 72 5f 72 70 74 | 28 22 63 61 6e 27 74 20 | err_rpt|("can't |
|00004ac0| 6f 70 65 6e 20 73 61 76 | 65 20 66 69 6c 65 2c 20 |open sav|e file, |
|00004ad0| 61 62 6f 72 74 69 6e 67 | 20 65 78 70 69 72 65 22 |aborting| expire"|
|00004ae0| 2c 20 4e 4f 4e 5f 46 41 | 54 41 4c 29 3b 0a 58 09 |, NON_FA|TAL);.X.|
|00004af0| 09 09 09 09 66 70 75 74 | 73 28 48 45 41 44 45 52 |....fput|s(HEADER|
|00004b00| 2c 20 66 70 29 3b 0a 58 | 09 09 09 09 09 66 63 6c |, fp);.X|.....fcl|
|00004b10| 6f 73 65 28 66 70 29 3b | 0a 58 09 09 09 09 7d 0a |ose(fp);|.X....}.|
|00004b20| 58 09 09 09 09 69 66 20 | 28 28 66 70 20 3d 20 66 |X....if |((fp = f|
|00004b30| 6f 70 65 6e 28 73 61 76 | 65 5f 66 69 6c 65 2c 20 |open(sav|e_file, |
|00004b40| 22 61 2b 22 29 29 20 3d | 3d 20 4e 55 4c 4c 29 0a |"a+")) =|= NULL).|
|00004b50| 58 09 09 09 09 09 73 75 | 63 63 65 73 73 66 75 6c |X.....su|ccessful|
|00004b60| 20 3d 20 65 72 72 5f 72 | 70 74 28 22 63 61 6e 27 | = err_r|pt("can'|
|00004b70| 74 20 6f 70 65 6e 20 73 | 61 76 65 20 66 69 6c 65 |t open s|ave file|
|00004b80| 2c 20 61 62 6f 72 74 69 | 6e 67 20 65 78 70 69 72 |, aborti|ng expir|
|00004b90| 65 22 2c 20 4e 4f 4e 5f | 46 41 54 41 4c 29 3b 0a |e", NON_|FATAL);.|
|00004ba0| 58 09 09 09 09 65 6c 73 | 65 20 7b 0a 58 09 09 09 |X....els|e {.X...|
|00004bb0| 09 09 69 66 20 28 70 75 | 74 5f 61 65 6e 74 72 79 |..if (pu|t_aentry|
|00004bc0| 28 66 70 2c 20 26 61 70 | 70 74 29 29 0a 58 09 09 |(fp, &ap|pt)).X..|
|00004bd0| 09 09 09 09 73 75 63 63 | 65 73 73 66 75 6c 20 3d |....succ|essful =|
|00004be0| 20 65 72 72 5f 72 70 74 | 28 22 77 72 69 74 65 20 | err_rpt|("write |
|00004bf0| 74 6f 20 73 61 76 65 20 | 61 70 70 74 20 66 69 6c |to save |appt fil|
|00004c00| 65 20 66 61 69 6c 65 64 | 2c 20 61 62 6f 72 74 69 |e failed|, aborti|
|00004c10| 6e 67 20 65 78 70 69 72 | 65 22 2c 20 4e 4f 4e 5f |ng expir|e", NON_|
|00004c20| 46 41 54 41 4c 29 3b 0a | 58 09 09 09 09 09 66 63 |FATAL);.|X.....fc|
|00004c30| 6c 6f 73 65 28 66 70 29 | 3b 0a 58 09 09 09 09 7d |lose(fp)|;.X....}|
|00004c40| 0a 58 09 09 09 7d 0a 58 | 09 09 7d 0a 58 20 20 20 |.X...}.X|..}.X |
|00004c50| 20 20 20 20 20 7d 0a 58 | 09 69 66 20 28 66 65 72 | }.X|.if (fer|
|00004c60| 72 6f 72 28 74 65 6d 70 | 5f 61 70 74 73 29 29 0a |ror(temp|_apts)).|
|00004c70| 58 09 09 73 75 63 63 65 | 73 73 66 75 6c 20 3d 20 |X..succe|ssful = |
|00004c80| 65 72 72 5f 72 70 74 28 | 22 77 72 69 74 65 20 6f |err_rpt(|"write o|
|00004c90| 6e 20 74 65 6d 70 20 66 | 69 6c 65 20 66 61 69 6c |n temp f|ile fail|
|00004ca0| 65 64 22 2c 20 4e 4f 4e | 5f 46 41 54 41 4c 29 3b |ed", NON|_FATAL);|
|00004cb0| 0a 58 09 66 63 6c 6f 73 | 65 28 74 65 6d 70 5f 61 |.X.fclos|e(temp_a|
|00004cc0| 70 74 73 29 3b 0a 58 20 | 20 20 20 20 20 20 20 66 |pts);.X | f|
|00004cd0| 63 6c 6f 73 65 28 61 70 | 74 73 29 3b 0a 58 09 63 |close(ap|ts);.X.c|
|00004ce0| 75 72 72 65 6e 74 20 3d | 20 73 61 76 65 63 75 72 |urrent =| savecur|
|00004cf0| 72 65 6e 74 3b 20 20 20 | 2f 2a 20 72 65 73 74 6f |rent; |/* resto|
|00004d00| 72 65 20 63 75 72 72 65 | 6e 74 20 66 72 6f 6d 20 |re curre|nt from |
|00004d10| 74 65 6d 70 20 2a 2f 0a | 58 09 2f 2a 20 64 6f 6e |temp */.|X./* don|
|00004d20| 27 74 20 72 65 6e 61 6d | 65 20 7a 65 72 6f 20 6c |'t renam|e zero l|
|00004d30| 65 6e 67 74 68 20 66 69 | 6c 65 73 20 2a 2f 0a 58 |ength fi|les */.X|
|00004d40| 09 73 74 61 74 28 74 6d | 70 61 70 74 73 5f 70 61 |.stat(tm|papts_pa|
|00004d50| 74 68 6e 61 6d 65 2c 20 | 26 73 62 75 66 29 3b 0a |thname, |&sbuf);.|
|00004d60| 58 09 69 66 20 28 73 62 | 75 66 2e 73 74 5f 73 69 |X.if (sb|uf.st_si|
|00004d70| 7a 65 20 3d 3d 20 28 6f | 66 66 5f 74 29 20 30 29 |ze == (o|ff_t) 0)|
|00004d80| 0a 58 09 09 65 72 72 5f | 72 70 74 28 22 7a 65 72 |.X..err_|rpt("zer|
|00004d90| 6f 20 6c 65 6e 67 74 68 | 20 74 65 6d 70 20 66 69 |o length| temp fi|
|00004da0| 6c 65 20 2d 20 6e 6f 74 | 20 72 65 6e 61 6d 65 64 |le - not| renamed|
|00004db0| 22 2c 20 4e 4f 4e 5f 46 | 41 54 41 4c 29 3b 0a 58 |", NON_F|ATAL);.X|
|00004dc0| 09 65 6c 73 65 20 69 66 | 20 28 73 75 63 63 65 73 |.else if| (succes|
|00004dd0| 73 66 75 6c 29 0a 58 09 | 09 78 72 65 6e 61 6d 65 |sful).X.|.xrename|
|00004de0| 28 74 6d 70 61 70 74 73 | 5f 70 61 74 68 6e 61 6d |(tmpapts|_pathnam|
|00004df0| 65 2c 20 61 70 74 73 5f | 70 61 74 68 6e 61 6d 65 |e, apts_|pathname|
|00004e00| 29 3b 0a 58 7d 0a 58 0a | 45 4e 44 5f 4f 46 5f 46 |);.X}.X.|END_OF_F|
|00004e10| 49 4c 45 0a 69 66 20 74 | 65 73 74 20 35 37 32 30 |ILE.if t|est 5720|
|00004e20| 20 2d 6e 65 20 60 77 63 | 20 2d 63 20 3c 27 65 78 | -ne `wc| -c <'ex|
|00004e30| 70 69 72 65 2e 63 27 60 | 3b 20 74 68 65 6e 0a 20 |pire.c'`|; then. |
|00004e40| 20 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 5c 22 | echo |shar: \"|
|00004e50| 27 65 78 70 69 72 65 2e | 63 27 5c 22 20 75 6e 70 |'expire.|c'\" unp|
|00004e60| 61 63 6b 65 64 20 77 69 | 74 68 20 77 72 6f 6e 67 |acked wi|th wrong|
|00004e70| 20 73 69 7a 65 21 0a 66 | 69 0a 23 20 65 6e 64 20 | size!.f|i.# end |
|00004e80| 6f 66 20 27 65 78 70 69 | 72 65 2e 63 27 0a 66 69 |of 'expi|re.c'.fi|
|00004e90| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 74 6f 6f |.if test| -f 'too|
|00004ea0| 6c 2e 63 27 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |l.c' -a |"${1}" !|
|00004eb0| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|00004ec0| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00004ed0| 20 6e 6f 74 20 63 6c 6f | 62 62 65 72 20 65 78 69 | not clo|bber exi|
|00004ee0| 73 74 69 6e 67 20 66 69 | 6c 65 20 5c 22 27 74 6f |sting fi|le \"'to|
|00004ef0| 6f 6c 2e 63 27 5c 22 0a | 65 6c 73 65 0a 65 63 68 |ol.c'\".|else.ech|
|00004f00| 6f 20 73 68 61 72 3a 20 | 45 78 74 72 61 63 74 69 |o shar: |Extracti|
|00004f10| 6e 67 20 5c 22 27 74 6f | 6f 6c 2e 63 27 5c 22 20 |ng \"'to|ol.c'\" |
|00004f20| 5c 28 33 33 35 33 30 20 | 63 68 61 72 61 63 74 65 |\(33530 |characte|
|00004f30| 72 73 5c 29 0a 73 65 64 | 20 22 73 2f 5e 58 2f 2f |rs\).sed| "s/^X//|
|00004f40| 22 20 3e 27 74 6f 6f 6c | 2e 63 27 20 3c 3c 27 45 |" >'tool|.c' <<'E|
|00004f50| 4e 44 5f 4f 46 5f 46 49 | 4c 45 27 0a 58 2f 2a 0a |ND_OF_FI|LE'.X/*.|
|00004f60| 58 20 2a 20 24 48 65 61 | 64 65 72 3a 20 74 6f 6f |X * $Hea|der: too|
|00004f70| 6c 2e 63 2c 76 20 32 2e | 35 20 39 31 2f 30 33 2f |l.c,v 2.|5 91/03/|
|00004f80| 32 37 20 31 36 3a 34 36 | 3a 33 32 20 62 69 6c 6c |27 16:46|:32 bill|
|00004f90| 72 20 45 78 70 20 24 0a | 58 20 2a 2f 0a 58 2f 2a |r Exp $.|X */.X/*|
|00004fa0| 0a 58 20 2a 20 74 6f 6f | 6c 2e 63 0a 58 20 2a 0a |.X * too|l.c.X *.|
|00004fb0| 58 20 2a 20 41 75 74 68 | 6f 72 3a 20 50 68 69 6c |X * Auth|or: Phil|
|00004fc0| 69 70 20 48 65 6c 6c 65 | 72 2c 20 53 75 6e 20 4d |ip Helle|r, Sun M|
|00004fd0| 69 63 72 6f 73 79 73 74 | 65 6d 73 2e 20 49 6e 63 |icrosyst|ems. Inc|
|00004fe0| 2e 20 3c 74 65 72 72 61 | 70 69 6e 21 68 65 6c 6c |. <terra|pin!hell|
|00004ff0| 65 72 40 73 75 6e 2e 63 | 6f 6d 3e 0a 58 20 2a 0a |er@sun.c|om>.X *.|
|00005000| 58 20 2a 20 4f 72 69 67 | 69 6e 61 6c 20 73 6f 75 |X * Orig|inal sou|
|00005010| 72 63 65 20 43 6f 70 79 | 72 69 67 68 74 20 28 43 |rce Copy|right (C|
|00005020| 29 20 31 39 38 37 2c 20 | 53 75 6e 20 4d 69 63 72 |) 1987, |Sun Micr|
|00005030| 6f 73 79 73 74 65 6d 73 | 2c 20 49 6e 63 2e 0a 58 |osystems|, Inc..X|
|00005040| 20 2a 09 41 6c 6c 20 52 | 69 67 68 74 73 20 52 65 | *.All R|ights Re|
|00005050| 73 65 72 76 65 64 0a 58 | 20 2a 20 50 65 72 6d 69 |served.X| * Permi|
|00005060| 73 73 69 6f 6e 20 69 73 | 20 68 65 72 65 62 79 20 |ssion is| hereby |
|00005070| 67 72 61 6e 74 65 64 20 | 74 6f 20 75 73 65 20 61 |granted |to use a|
|00005080| 6e 64 20 6d 6f 64 69 66 | 79 20 74 68 69 73 20 70 |nd modif|y this p|
|00005090| 72 6f 67 72 61 6d 20 69 | 6e 20 73 6f 75 72 63 65 |rogram i|n source|
|000050a0| 0a 58 20 2a 20 6f 72 20 | 62 69 6e 61 72 79 20 66 |.X * or |binary f|
|000050b0| 6f 72 6d 20 61 73 20 6c | 6f 6e 67 20 61 73 20 69 |orm as l|ong as i|
|000050c0| 74 20 69 73 20 6e 6f 74 | 20 73 6f 6c 64 20 66 6f |t is not| sold fo|
|000050d0| 72 20 70 72 6f 66 69 74 | 20 61 6e 64 20 74 68 69 |r profit| and thi|
|000050e0| 73 20 63 6f 70 79 72 69 | 67 68 74 0a 58 20 2a 20 |s copyri|ght.X * |
|000050f0| 6e 6f 74 69 63 65 20 72 | 65 6d 61 69 6e 73 20 69 |notice r|emains i|
|00005100| 6e 74 61 63 74 2e 0a 58 | 20 2a 0a 58 20 2a 0a 58 |ntact..X| *.X *.X|
|00005110| 20 2a 20 43 68 61 6e 67 | 65 73 2f 61 64 64 69 74 | * Chang|es/addit|
|00005120| 69 6f 6e 73 20 62 79 3a | 20 42 69 6c 6c 20 52 61 |ions by:| Bill Ra|
|00005130| 6e 64 6c 65 2c 20 54 65 | 6b 74 72 6f 6e 69 78 2c |ndle, Te|ktronix,|
|00005140| 20 49 6e 63 2e 20 3c 62 | 69 6c 6c 72 40 73 61 61 | Inc. <b|illr@saa|
|00005150| 62 2e 43 4e 41 2e 54 45 | 4b 2e 43 4f 4d 3e 0a 58 |b.CNA.TE|K.COM>.X|
|00005160| 20 2a 0a 58 20 2a 20 43 | 68 61 6e 67 65 73 20 61 | *.X * C|hanges a|
|00005170| 6e 64 20 61 64 64 69 74 | 69 6f 6e 73 20 43 6f 70 |nd addit|ions Cop|
|00005180| 79 72 69 67 68 74 20 28 | 43 29 20 31 39 38 38 2c |yright (|C) 1988,|
|00005190| 20 31 39 38 39 2c 20 31 | 39 39 31 20 54 65 6b 74 | 1989, 1|991 Tekt|
|000051a0| 72 6f 6e 69 78 2c 20 49 | 6e 63 2e 0a 58 20 2a 09 |ronix, I|nc..X *.|
|000051b0| 41 6c 6c 20 52 69 67 68 | 74 73 20 52 65 73 65 72 |All Righ|ts Reser|
|000051c0| 76 65 64 0a 58 20 2a 20 | 50 65 72 6d 69 73 73 69 |ved.X * |Permissi|
|000051d0| 6f 6e 20 69 73 20 68 65 | 72 65 62 79 20 67 72 61 |on is he|reby gra|
|000051e0| 6e 74 65 64 20 74 6f 20 | 75 73 65 20 61 6e 64 20 |nted to |use and |
|000051f0| 6d 6f 64 69 66 79 20 74 | 68 65 20 6d 6f 64 69 66 |modify t|he modif|
|00005200| 69 63 61 74 69 6f 6e 73 | 20 69 6e 20 73 6f 75 72 |ications| in sour|
|00005210| 63 65 0a 58 20 2a 20 6f | 72 20 62 69 6e 61 72 79 |ce.X * o|r binary|
|00005220| 20 66 6f 72 6d 20 61 73 | 20 6c 6f 6e 67 20 61 73 | form as| long as|
|00005230| 20 74 68 65 79 20 61 72 | 65 20 6e 6f 74 20 73 6f | they ar|e not so|
|00005240| 6c 64 20 66 6f 72 20 70 | 72 6f 66 69 74 20 61 6e |ld for p|rofit an|
|00005250| 64 20 74 68 69 73 20 63 | 6f 70 79 72 69 67 68 74 |d this c|opyright|
|00005260| 0a 58 20 2a 20 6e 6f 74 | 69 63 65 20 72 65 6d 61 |.X * not|ice rema|
|00005270| 69 6e 73 20 69 6e 74 61 | 63 74 2e 0a 58 20 2a 2f |ins inta|ct..X */|
|00005280| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 64 69 |.X#inclu|de <stdi|
|00005290| 6f 2e 68 3e 09 2f 2a 20 | 66 6f 72 20 4e 55 4c 4c |o.h>./* |for NULL|
|000052a0| 20 2a 2f 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 | */.X#in|clude <s|
|000052b0| 75 6e 74 6f 6f 6c 2f 73 | 75 6e 76 69 65 77 2e 68 |untool/s|unview.h|
|000052c0| 3e 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 75 6e |>.X#incl|ude <sun|
|000052d0| 74 6f 6f 6c 2f 63 61 6e | 76 61 73 2e 68 3e 0a 58 |tool/can|vas.h>.X|
|000052e0| 23 69 6e 63 6c 75 64 65 | 20 3c 73 75 6e 74 6f 6f |#include| <suntoo|
|000052f0| 6c 2f 70 61 6e 65 6c 2e | 68 3e 0a 58 23 69 6e 63 |l/panel.|h>.X#inc|
|00005300| 6c 75 64 65 20 3c 73 75 | 6e 77 69 6e 64 6f 77 2f |lude <su|nwindow/|
|00005310| 64 65 66 61 75 6c 74 73 | 2e 68 3e 0a 58 23 69 6e |defaults|.h>.X#in|
|00005320| 63 6c 75 64 65 20 3c 73 | 79 73 2f 66 69 6c 65 2e |clude <s|ys/file.|
|00005330| 68 3e 0a 58 23 69 6e 63 | 6c 75 64 65 20 22 63 74 |h>.X#inc|lude "ct|
|00005340| 2e 68 22 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 64 65 |.h".X.X/|*.X * de|
|00005350| 66 69 6e 65 20 73 74 61 | 6e 64 61 72 64 20 42 2f |fine sta|ndard B/|
|00005360| 57 20 6d 6f 6e 6f 63 68 | 72 6f 6d 65 20 63 6f 6c |W monoch|rome col|
|00005370| 6f 72 73 20 61 73 20 64 | 65 66 61 75 6c 74 73 20 |ors as d|efaults |
|00005380| 69 6e 20 63 61 73 65 20 | 77 65 27 72 65 20 72 75 |in case |we're ru|
|00005390| 6e 6e 69 6e 67 0a 58 20 | 2a 20 6f 6e 20 61 20 63 |nning.X |* on a c|
|000053a0| 6f 6c 6f 72 20 73 79 73 | 74 65 6d 20 77 69 74 68 |olor sys|tem with|
|000053b0| 20 74 68 65 20 6d 6f 6e | 6f 63 68 72 6f 6d 65 20 | the mon|ochrome |
|000053c0| 63 6f 6c 6f 72 73 20 73 | 65 74 20 64 69 66 66 65 |colors s|et diffe|
|000053d0| 72 65 6e 74 6c 79 0a 58 | 20 2a 2f 0a 58 23 64 65 |rently.X| */.X#de|
|000053e0| 66 69 6e 65 20 46 47 5f | 44 45 46 41 55 4c 54 20 |fine FG_|DEFAULT |
|000053f0| 20 7b 20 30 2c 20 30 2c | 20 30 20 7d 20 20 20 20 | { 0, 0,| 0 } |
|00005400| 20 2f 2a 20 62 6c 61 63 | 6b 20 2a 2f 0a 58 23 64 | /* blac|k */.X#d|
|00005410| 65 66 69 6e 65 20 42 47 | 5f 44 45 46 41 55 4c 54 |efine BG|_DEFAULT|
|00005420| 20 20 7b 20 32 35 35 2c | 20 32 35 35 2c 20 32 35 | { 255,| 255, 25|
|00005430| 35 20 7d 20 20 20 2f 2a | 20 77 68 69 74 65 20 2a |5 } /*| white *|
|00005440| 2f 0a 58 0a 58 65 78 74 | 65 72 6e 20 69 6e 74 20 |/.X.Xext|ern int |
|00005450| 6d 6f 6e 64 61 79 5f 66 | 69 72 73 74 3b 0a 58 65 |monday_f|irst;.Xe|
|00005460| 78 74 65 72 6e 20 73 74 | 72 75 63 74 20 74 6d 20 |xtern st|ruct tm |
|00005470| 63 75 72 72 65 6e 74 3b | 0a 58 65 78 74 65 72 6e |current;|.Xextern|
|00005480| 20 46 72 61 6d 65 20 66 | 72 61 6d 65 3b 0a 58 65 | Frame f|rame;.Xe|
|00005490| 78 74 65 72 6e 20 69 6e | 74 20 77 6f 72 6b 69 6e |xtern in|t workin|
|000054a0| 67 5f 6d 73 67 3b 0a 58 | 65 78 74 65 72 6e 20 69 |g_msg;.X|extern i|
|000054b0| 6e 74 20 6e 5f 73 6c 6f | 74 73 3b 0a 58 65 78 74 |nt n_slo|ts;.Xext|
|000054c0| 65 72 6e 20 69 6e 74 20 | 75 73 65 72 5f 66 6f 6e |ern int |user_fon|
|000054d0| 74 3b 0a 58 43 61 6e 76 | 61 73 20 63 61 6e 76 61 |t;.XCanv|as canva|
|000054e0| 73 3b 0a 58 50 61 6e 65 | 6c 20 70 61 6e 65 6c 3b |s;.XPane|l panel;|
|000054f0| 0a 58 50 61 6e 65 6c 5f | 69 74 65 6d 20 74 6f 64 |.XPanel_|item tod|
|00005500| 61 79 62 75 74 74 6f 6e | 5f 70 69 2c 20 77 6f 72 |aybutton|_pi, wor|
|00005510| 6b 69 6e 67 5f 70 69 3b | 0a 58 50 61 6e 65 6c 5f |king_pi;|.XPanel_|
|00005520| 69 74 65 6d 20 6d 6f 6e | 74 68 6d 65 6e 75 5f 70 |item mon|thmenu_p|
|00005530| 69 2c 20 79 65 61 72 6d | 65 6e 75 5f 70 69 2c 20 |i, yearm|enu_pi, |
|00005540| 77 65 65 6b 62 75 74 74 | 6f 6e 5f 70 69 2c 20 64 |weekbutt|on_pi, d|
|00005550| 61 79 62 75 74 74 6f 6e | 5f 70 69 3b 0a 58 50 61 |aybutton|_pi;.XPa|
|00005560| 6e 65 6c 5f 69 74 65 6d | 20 70 72 65 76 69 6f 75 |nel_item| previou|
|00005570| 73 5f 70 69 2c 20 6e 65 | 78 74 5f 70 69 2c 20 63 |s_pi, ne|xt_pi, c|
|00005580| 75 72 72 65 6e 74 5f 70 | 69 2c 20 66 69 6c 65 62 |urrent_p|i, fileb|
|00005590| 75 74 74 6f 6e 5f 70 69 | 3b 0a 58 50 61 6e 65 6c |utton_pi|;.XPanel|
|000055a0| 5f 69 74 65 6d 20 63 6c | 6f 63 6b 5f 70 69 3b 0a |_item cl|ock_pi;.|
|000055b0| 58 50 61 6e 65 6c 5f 69 | 74 65 6d 20 72 75 6e 6c |XPanel_i|tem runl|
|000055c0| 5f 70 69 3b 0a 58 50 61 | 6e 65 6c 5f 69 74 65 6d |_pi;.XPa|nel_item|
|000055d0| 20 64 6f 6e 65 62 75 74 | 74 6f 6e 5f 70 69 3b 0a | donebut|ton_pi;.|
|000055e0| 58 23 69 66 6e 64 65 66 | 20 4e 4f 5f 50 52 49 4e |X#ifndef| NO_PRIN|
|000055f0| 54 45 52 0a 58 50 61 6e | 65 6c 5f 69 74 65 6d 20 |TER.XPan|el_item |
|00005600| 70 72 69 6e 74 62 75 74 | 74 6f 6e 5f 70 69 3b 0a |printbut|ton_pi;.|
|00005610| 58 23 65 6e 64 69 66 0a | 58 23 69 66 6e 64 65 66 |X#endif.|X#ifndef|
|00005620| 20 4e 4f 5f 53 55 4e 5f | 4d 4f 4f 4e 0a 58 50 61 | NO_SUN_|MOON.XPa|
|00005630| 6e 65 6c 5f 69 74 65 6d | 20 6d 6f 6f 6e 62 75 74 |nel_item| moonbut|
|00005640| 74 6f 6e 5f 70 69 2c 20 | 73 75 6e 62 75 74 74 6f |ton_pi, |sunbutto|
|00005650| 6e 5f 70 69 3b 0a 58 23 | 65 6e 64 69 66 0a 58 4d |n_pi;.X#|endif.XM|
|00005660| 65 6e 75 20 6e 65 78 74 | 5f 6d 65 6e 75 2c 20 70 |enu next|_menu, p|
|00005670| 72 65 76 69 6f 75 73 5f | 6d 65 6e 75 3b 0a 58 4d |revious_|menu;.XM|
|00005680| 65 6e 75 20 64 61 79 5f | 6d 65 6e 75 2c 20 77 65 |enu day_|menu, we|
|00005690| 65 6b 5f 6d 65 6e 75 2c | 20 6d 6f 6e 74 68 5f 6d |ek_menu,| month_m|
|000056a0| 65 6e 75 2c 20 79 65 61 | 72 5f 6d 65 6e 75 3b 0a |enu, yea|r_menu;.|
|000056b0| 58 4d 65 6e 75 20 64 61 | 79 5f 73 65 6c 5f 6d 65 |XMenu da|y_sel_me|
|000056c0| 6e 75 2c 20 63 75 72 72 | 65 6e 74 5f 6d 65 6e 75 |nu, curr|ent_menu|
|000056d0| 3b 0a 58 4d 65 6e 75 20 | 64 6f 6e 65 5f 6d 65 6e |;.XMenu |done_men|
|000056e0| 75 3b 0a 58 23 69 66 6e | 64 65 66 20 4e 4f 5f 50 |u;.X#ifn|def NO_P|
|000056f0| 52 49 4e 54 45 52 0a 58 | 4d 65 6e 75 20 70 72 69 |RINTER.X|Menu pri|
|00005700| 6e 74 5f 6d 65 6e 75 3b | 0a 58 23 65 6e 64 69 66 |nt_menu;|.X#endif|
|00005710| 0a 58 50 69 78 66 6f 6e | 74 20 2a 66 6f 6e 74 2c |.XPixfon|t *font,|
|00005720| 20 2a 62 69 67 66 6f 6e | 74 2c 20 2a 73 66 6f 6e | *bigfon|t, *sfon|
|00005730| 74 3b 0a 58 46 72 61 6d | 65 20 66 66 72 61 6d 65 |t;.XFram|e fframe|
|00005740| 20 3d 20 30 3b 0a 58 50 | 61 6e 65 6c 20 66 70 61 | = 0;.XP|anel fpa|
|00005750| 6e 65 6c 2c 20 66 63 70 | 61 6e 65 6c 3b 0a 58 46 |nel, fcp|anel;.XF|
|00005760| 72 61 6d 65 20 61 74 74 | 72 5f 66 72 61 6d 65 3b |rame att|r_frame;|
|00005770| 0a 58 50 61 6e 65 6c 20 | 61 74 74 72 5f 70 61 6e |.XPanel |attr_pan|
|00005780| 65 6c 3b 0a 58 50 61 6e | 65 6c 5f 69 74 65 6d 20 |el;.XPan|el_item |
|00005790| 72 65 70 65 61 74 5f 70 | 69 2c 20 72 65 6d 69 6e |repeat_p|i, remin|
|000057a0| 64 5f 70 69 2c 20 65 76 | 65 72 79 78 5f 70 69 2c |d_pi, ev|eryx_pi,|
|000057b0| 20 77 68 69 63 68 77 6b | 5f 70 69 2c 20 6d 61 72 | whichwk|_pi, mar|
|000057c0| 6b 65 64 5f 70 69 3b 0a | 58 50 61 6e 65 6c 5f 69 |ked_pi;.|XPanel_i|
|000057d0| 74 65 6d 20 61 64 76 77 | 5f 70 69 3b 0a 58 46 72 |tem advw|_pi;.XFr|
|000057e0| 61 6d 65 20 64 65 6c 5f | 66 72 61 6d 65 3b 0a 58 |ame del_|frame;.X|
|000057f0| 50 61 6e 65 6c 20 64 65 | 6c 5f 70 61 6e 65 6c 3b |Panel de|l_panel;|
|00005800| 0a 58 50 61 6e 65 6c 5f | 69 74 65 6d 20 64 65 6c |.XPanel_|item del|
|00005810| 5f 63 68 6f 69 63 65 5f | 70 69 3b 0a 58 46 72 61 |_choice_|pi;.XFra|
|00005820| 6d 65 20 77 6d 6f 72 65 | 5f 66 72 61 6d 65 3b 0a |me wmore|_frame;.|
|00005830| 58 50 61 6e 65 6c 20 77 | 6d 6f 72 65 5f 70 61 6e |XPanel w|more_pan|
|00005840| 65 6c 3b 0a 58 23 69 66 | 6e 64 65 66 20 4e 4f 5f |el;.X#if|ndef NO_|
|00005850| 53 55 4e 5f 4d 4f 4f 4e | 0a 58 46 72 61 6d 65 20 |SUN_MOON|.XFrame |
|00005860| 73 66 72 61 6d 65 20 3d | 20 30 2c 20 6d 66 72 61 |sframe =| 0, mfra|
|00005870| 6d 65 20 3d 20 30 3b 0a | 58 23 65 6e 64 69 66 0a |me = 0;.|X#endif.|
|00005880| 58 46 72 61 6d 65 20 66 | 69 6c 65 66 72 61 6d 65 |XFrame f|ileframe|
|00005890| 3b 0a 58 50 61 6e 65 6c | 20 66 69 6c 65 70 61 6e |;.XPanel| filepan|
|000058a0| 65 6c 3b 0a 58 50 61 6e | 65 6c 5f 69 74 65 6d 20 |el;.XPan|el_item |
|000058b0| 66 69 6c 65 6e 61 6d 65 | 5f 70 69 2c 20 66 69 6c |filename|_pi, fil|
|000058c0| 65 5f 72 6f 5f 70 69 3b | 0a 58 23 69 66 6e 64 65 |e_ro_pi;|.X#ifnde|
|000058d0| 66 20 4e 4f 5f 50 52 49 | 4e 54 45 52 0a 58 50 61 |f NO_PRI|NTER.XPa|
|000058e0| 6e 65 6c 5f 69 74 65 6d | 20 70 72 63 6d 64 5f 70 |nel_item| prcmd_p|
|000058f0| 69 3b 0a 58 50 61 6e 65 | 6c 5f 69 74 65 6d 20 70 |i;.XPane|l_item p|
|00005900| 72 66 69 6c 65 5f 70 69 | 3b 0a 58 69 6e 74 20 70 |rfile_pi|;.Xint p|
|00005910| 72 69 6e 74 5f 74 6f 5f | 66 69 6c 65 20 3d 20 30 |rint_to_|file = 0|
|00005920| 3b 0a 58 46 72 61 6d 65 | 20 70 72 66 72 61 6d 65 |;.XFrame| prframe|
|00005930| 3b 0a 58 23 65 6e 64 69 | 66 0a 58 23 69 66 6e 64 |;.X#endi|f.X#ifnd|
|00005940| 65 66 20 4e 4f 5f 53 55 | 4e 5f 4d 4f 4f 4e 0a 58 |ef NO_SU|N_MOON.X|
|00005950| 43 61 6e 76 61 73 20 73 | 63 61 6e 76 61 73 2c 20 |Canvas s|canvas, |
|00005960| 6d 63 61 6e 76 61 73 3b | 0a 58 50 61 6e 65 6c 5f |mcanvas;|.XPanel_|
|00005970| 69 74 65 6d 20 73 64 61 | 74 65 5f 70 69 2c 20 6d |item sda|te_pi, m|
|00005980| 64 61 74 65 5f 70 69 3b | 0a 58 73 74 61 74 69 63 |date_pi;|.Xstatic|
|00005990| 20 73 74 72 75 63 74 20 | 73 69 6e 67 6c 65 63 6f | struct |singleco|
|000059a0| 6c 6f 72 20 20 20 20 20 | 20 20 66 67 5f 64 65 66 |lor | fg_def|
|000059b0| 61 75 6c 74 20 3d 20 46 | 47 5f 44 45 46 41 55 4c |ault = F|G_DEFAUL|
|000059c0| 54 3b 0a 58 73 74 61 74 | 69 63 20 73 74 72 75 63 |T;.Xstat|ic struc|
|000059d0| 74 20 73 69 6e 67 6c 65 | 63 6f 6c 6f 72 20 20 20 |t single|color |
|000059e0| 20 20 20 20 62 67 5f 64 | 65 66 61 75 6c 74 20 3d | bg_d|efault =|
|000059f0| 20 42 47 5f 44 45 46 41 | 55 4c 54 3b 0a 58 23 65 | BG_DEFA|ULT;.X#e|
|00005a00| 6e 64 69 66 0a 58 46 72 | 61 6d 65 20 70 72 6f 6d |ndif.XFr|ame prom|
|00005a10| 70 74 5f 66 72 61 6d 65 | 20 3d 20 30 3b 0a 58 50 |pt_frame| = 0;.XP|
|00005a20| 69 78 72 65 63 74 20 2a | 6d 6f 72 65 62 75 74 74 |ixrect *|morebutt|
|00005a30| 6f 6e 3b 0a 58 73 74 61 | 74 69 63 20 43 75 72 73 |on;.Xsta|tic Curs|
|00005a40| 6f 72 20 70 61 6e 65 6c | 5f 63 75 72 73 6f 72 2c |or panel|_cursor,|
|00005a50| 20 63 61 6e 76 61 73 5f | 63 75 72 73 6f 72 3b 0a | canvas_|cursor;.|
|00005a60| 58 46 72 61 6d 65 20 64 | 61 74 65 5f 66 72 61 6d |XFrame d|ate_fram|
|00005a70| 65 3b 0a 58 50 61 6e 65 | 6c 5f 69 74 65 6d 20 73 |e;.XPane|l_item s|
|00005a80| 65 74 64 61 74 65 5f 70 | 69 3b 0a 58 46 72 61 6d |etdate_p|i;.XFram|
|00005a90| 65 20 63 75 74 5f 66 72 | 61 6d 65 3b 0a 58 50 61 |e cut_fr|ame;.XPa|
|00005aa0| 6e 65 6c 20 63 75 74 5f | 70 61 6e 65 6c 3b 0a 58 |nel cut_|panel;.X|
|00005ab0| 76 6f 69 64 20 6d 6f 6e | 74 68 6d 65 6e 75 5f 6e |void mon|thmenu_n|
|00005ac0| 6f 74 69 66 79 28 29 2c | 20 79 65 61 72 6d 65 6e |otify(),| yearmen|
|00005ad0| 75 5f 6e 6f 74 69 66 79 | 28 29 2c 20 77 65 65 6b |u_notify|(), week|
|00005ae0| 62 75 74 74 6f 6e 5f 6e | 6f 74 69 66 79 28 29 3b |button_n|otify();|
|00005af0| 0a 58 76 6f 69 64 20 6d | 6f 6e 74 68 5f 6d 65 6e |.Xvoid m|onth_men|
|00005b00| 75 5f 65 76 65 6e 74 28 | 29 2c 20 79 65 61 72 5f |u_event(|), year_|
|00005b10| 6d 65 6e 75 5f 65 76 65 | 6e 74 28 29 2c 20 77 65 |menu_eve|nt(), we|
|00005b20| 65 6b 5f 6d 65 6e 75 5f | 65 76 65 6e 74 28 29 3b |ek_menu_|event();|
|00005b30| 0a 58 76 6f 69 64 20 74 | 6f 64 61 79 62 75 74 74 |.Xvoid t|odaybutt|
|00005b40| 6f 6e 5f 6e 6f 74 69 66 | 79 28 29 2c 20 63 75 72 |on_notif|y(), cur|
|00005b50| 72 65 6e 74 62 75 74 74 | 6f 6e 5f 6e 6f 74 69 66 |rentbutt|on_notif|
|00005b60| 79 28 29 2c 20 64 61 79 | 62 75 74 74 6f 6e 5f 6e |y(), day|button_n|
|00005b70| 6f 74 69 66 79 28 29 3b | 0a 58 76 6f 69 64 20 66 |otify();|.Xvoid f|
|00005b80| 69 6c 65 62 75 74 74 6f | 6e 5f 6e 6f 74 69 66 79 |ilebutto|n_notify|
|00005b90| 28 29 2c 20 63 75 72 72 | 65 6e 74 5f 6d 65 6e 75 |(), curr|ent_menu|
|00005ba0| 5f 65 76 65 6e 74 28 29 | 3b 0a 58 76 6f 69 64 20 |_event()|;.Xvoid |
|00005bb0| 63 75 74 5f 64 6f 6e 65 | 28 29 2c 20 63 75 74 5f |cut_done|(), cut_|
|00005bc0| 61 62 6f 72 74 28 29 3b | 0a 58 76 6f 69 64 20 64 |abort();|.Xvoid d|
|00005bd0| 6f 6e 65 62 75 74 74 6f | 6e 5f 6e 6f 74 69 66 79 |onebutto|n_notify|
|00005be0| 28 29 2c 20 64 6f 6e 65 | 5f 6d 65 6e 75 5f 65 76 |(), done|_menu_ev|
|00005bf0| 65 6e 74 28 29 3b 0a 58 | 23 69 66 6e 64 65 66 20 |ent();.X|#ifndef |
|00005c00| 4e 4f 5f 53 55 4e 5f 4d | 4f 4f 4e 0a 58 76 6f 69 |NO_SUN_M|OON.Xvoi|
|00005c10| 64 20 6d 6f 6f 6e 62 75 | 74 74 6f 6e 5f 6e 6f 74 |d moonbu|tton_not|
|00005c20| 69 66 79 28 29 2c 20 73 | 75 6e 62 75 74 74 6f 6e |ify(), s|unbutton|
|00005c30| 5f 6e 6f 74 69 66 79 28 | 29 3b 0a 58 23 65 6e 64 |_notify(|);.X#end|
|00005c40| 69 66 0a 58 23 69 66 6e | 64 65 66 20 4e 4f 5f 50 |if.X#ifn|def NO_P|
|00005c50| 52 49 4e 54 45 52 0a 58 | 76 6f 69 64 20 70 72 69 |RINTER.X|void pri|
|00005c60| 6e 74 62 75 74 74 6f 6e | 5f 6e 6f 74 69 66 79 28 |ntbutton|_notify(|
|00005c70| 29 2c 20 70 72 69 6e 74 | 5f 6d 65 6e 75 5f 65 76 |), print|_menu_ev|
|00005c80| 65 6e 74 28 29 3b 0a 58 | 23 65 6e 64 69 66 0a 58 |ent();.X|#endif.X|
|00005c90| 76 6f 69 64 20 64 61 79 | 5f 6d 65 6e 75 5f 65 76 |void day|_menu_ev|
|00005ca0| 65 6e 74 28 29 3b 0a 58 | 76 6f 69 64 20 6d 61 69 |ent();.X|void mai|
|00005cb0| 6e 73 77 5f 73 65 6c 65 | 63 74 65 64 28 29 3b 0a |nsw_sele|cted();.|
|00005cc0| 58 76 6f 69 64 20 6e 65 | 78 74 5f 6d 65 6e 75 5f |Xvoid ne|xt_menu_|
|00005cd0| 65 76 65 6e 74 28 29 2c | 20 6e 65 78 74 62 75 74 |event(),| nextbut|
|00005ce0| 74 6f 6e 5f 6e 6f 74 69 | 66 79 28 29 3b 0a 58 76 |ton_noti|fy();.Xv|
|00005cf0| 6f 69 64 20 70 72 65 76 | 69 6f 75 73 5f 6d 65 6e |oid prev|ious_men|
|00005d00| 75 5f 65 76 65 6e 74 28 | 29 2c 20 70 72 65 76 69 |u_event(|), previ|
|00005d10| 6f 75 73 5f 6d 65 6e 75 | 5f 6e 6f 74 69 66 79 28 |ous_menu|_notify(|
|00005d20| 29 3b 0a 58 76 6f 69 64 | 20 6d 61 69 6e 73 77 5f |);.Xvoid| mainsw_|
|00005d30| 69 6e 70 75 74 65 76 65 | 6e 74 28 29 3b 0a 58 76 |inputeve|nt();.Xv|
|00005d40| 6f 69 64 20 66 64 6f 6e | 65 5f 70 72 6f 63 28 29 |oid fdon|e_proc()|
|00005d50| 2c 20 66 6b 65 65 70 5f | 70 72 6f 63 28 29 2c 20 |, fkeep_|proc(), |
|00005d60| 66 61 70 70 74 5f 6e 6f | 74 69 66 79 28 29 3b 0a |fappt_no|tify();.|
|00005d70| 58 76 6f 69 64 20 61 74 | 74 72 5f 61 63 63 65 70 |Xvoid at|tr_accep|
|00005d80| 74 28 29 2c 20 61 74 74 | 72 5f 61 62 6f 72 74 28 |t(), att|r_abort(|
|00005d90| 29 3b 0a 58 76 6f 69 64 | 20 64 65 6c 5f 64 6f 6e |);.Xvoid| del_don|
|00005da0| 65 28 29 3b 0a 58 23 69 | 66 6e 64 65 66 20 4e 4f |e();.X#i|fndef NO|
|00005db0| 5f 53 55 4e 5f 4d 4f 4f | 4e 0a 58 76 6f 69 64 20 |_SUN_MOO|N.Xvoid |
|00005dc0| 73 64 6f 6e 65 5f 70 72 | 6f 63 28 29 2c 20 6d 64 |sdone_pr|oc(), md|
|00005dd0| 6f 6e 65 5f 70 72 6f 63 | 28 29 3b 0a 58 76 6f 69 |one_proc|();.Xvoi|
|00005de0| 64 20 73 66 72 61 6d 65 | 5f 64 6f 6e 65 28 29 2c |d sframe|_done(),|
|00005df0| 20 6d 66 72 61 6d 65 5f | 64 6f 6e 65 28 29 3b 0a | mframe_|done();.|
|00005e00| 58 23 65 6e 64 69 66 0a | 58 76 6f 69 64 20 66 69 |X#endif.|Xvoid fi|
|00005e10| 6c 65 66 72 61 6d 65 5f | 64 6f 6e 65 28 29 2c 20 |leframe_|done(), |
|00005e20| 66 69 6c 65 5f 61 63 63 | 65 70 74 28 29 2c 20 66 |file_acc|ept(), f|
|00005e30| 69 6c 65 5f 72 65 73 65 | 74 28 29 2c 20 66 69 6c |ile_rese|t(), fil|
|00005e40| 65 5f 64 6f 6e 65 28 29 | 3b 0a 58 76 6f 69 64 20 |e_done()|;.Xvoid |
|00005e50| 66 69 6c 65 5f 73 61 76 | 65 28 29 3b 0a 58 76 6f |file_sav|e();.Xvo|
|00005e60| 69 64 20 70 72 6f 6d 70 | 74 5f 6e 6f 5f 6e 6f 74 |id promp|t_no_not|
|00005e70| 69 66 79 28 29 2c 20 70 | 72 6f 6d 70 74 5f 79 65 |ify(), p|rompt_ye|
|00005e80| 73 5f 6e 6f 74 69 66 79 | 28 29 3b 0a 58 76 6f 69 |s_notify|();.Xvoi|
|00005e90| 64 20 65 72 72 6f 72 5f | 65 76 65 6e 74 28 29 2c |d error_|event(),|
|00005ea0| 20 66 69 6c 65 5f 6f 72 | 69 67 28 29 3b 0a 58 76 | file_or|ig();.Xv|
|00005eb0| 6f 69 64 20 64 74 66 72 | 61 6d 65 5f 64 6f 6e 65 |oid dtfr|ame_done|
|00005ec0| 28 29 2c 20 64 74 64 6f | 6e 65 5f 70 72 6f 63 28 |(), dtdo|ne_proc(|
|00005ed0| 29 3b 0a 58 23 69 66 6e | 64 65 66 20 4e 4f 5f 50 |);.X#ifn|def NO_P|
|00005ee0| 52 49 4e 54 45 52 0a 58 | 76 6f 69 64 20 70 72 66 |RINTER.X|void prf|
|00005ef0| 72 61 6d 65 5f 64 6f 6e | 65 28 29 2c 20 70 72 64 |rame_don|e(), prd|
|00005f00| 6f 6e 65 5f 70 72 6f 63 | 28 29 3b 0a 58 23 65 6e |one_proc|();.X#en|
|00005f10| 64 69 66 0a 58 4e 6f 74 | 69 66 79 5f 76 61 6c 75 |dif.XNot|ify_valu|
|00005f20| 65 20 63 68 65 63 6b 5f | 63 6c 6f 73 65 28 29 3b |e check_|close();|
|00005f30| 0a 58 69 6e 74 20 6d 6f | 6e 74 68 6c 65 6e 67 74 |.Xint mo|nthlengt|
|00005f40| 68 28 29 3b 0a 58 63 68 | 61 72 20 79 65 61 72 5f |h();.Xch|ar year_|
|00005f50| 73 74 72 5b 4e 52 5f 59 | 45 41 52 53 5d 5b 35 5d |str[NR_Y|EARS][5]|
|00005f60| 3b 20 2f 2a 20 68 6f 6c | 64 73 20 73 74 72 69 6e |; /* hol|ds strin|
|00005f70| 67 73 20 66 6f 72 20 79 | 65 61 72 20 6d 65 6e 75 |gs for y|ear menu|
|00005f80| 20 2a 2f 0a 58 65 78 74 | 65 72 6e 20 50 69 78 77 | */.Xext|ern Pixw|
|00005f90| 69 6e 20 2a 6d 61 69 6e | 5f 70 69 78 77 69 6e 3b |in *main|_pixwin;|
|00005fa0| 0a 58 65 78 74 65 72 6e | 20 43 75 72 73 6f 72 20 |.Xextern| Cursor |
|00005fb0| 64 61 79 5f 63 75 72 73 | 6f 72 2c 20 77 61 69 74 |day_curs|or, wait|
|00005fc0| 5f 63 75 72 73 6f 72 3b | 0a 58 65 78 74 65 72 6e |_cursor;|.Xextern|
|00005fd0| 20 69 6e 74 20 64 61 79 | 5f 69 73 5f 6f 70 65 6e | int day|_is_open|
|00005fe0| 2c 20 6d 61 69 6e 73 77 | 5f 73 74 61 74 65 3b 0a |, mainsw|_state;.|
|00005ff0| 58 65 78 74 65 72 6e 20 | 63 68 61 72 20 63 6c 6f |Xextern |char clo|
|00006000| 63 6b 73 74 72 5b 5d 3b | 0a 58 65 78 74 65 72 6e |ckstr[];|.Xextern|
|00006010| 20 73 74 72 75 63 74 20 | 61 70 70 74 5f 65 6e 74 | struct |appt_ent|
|00006020| 72 79 20 66 75 74 75 72 | 65 5b 5d 3b 0a 58 65 78 |ry futur|e[];.Xex|
|00006030| 74 65 72 6e 20 69 6e 74 | 20 66 69 6e 64 65 78 3b |tern int| findex;|
|00006040| 0a 58 65 78 74 65 72 6e | 20 73 74 72 75 63 74 20 |.Xextern| struct |
|00006050| 64 61 79 73 6c 6f 74 20 | 2a 73 6c 6f 74 73 3b 0a |dayslot |*slots;.|
|00006060| 58 23 69 66 6e 64 65 66 | 20 4e 4f 5f 53 55 4e 5f |X#ifndef| NO_SUN_|
|00006070| 4d 4f 4f 4e 0a 58 65 78 | 74 65 72 6e 20 50 69 78 |MOON.Xex|tern Pix|
|00006080| 72 65 63 74 20 6d 6f 6f | 6e 5f 69 63 6f 6e 5f 70 |rect moo|n_icon_p|
|00006090| 72 2c 20 73 75 6e 5f 69 | 63 6f 6e 5f 70 72 3b 0a |r, sun_i|con_pr;.|
|000060a0| 58 23 65 6e 64 69 66 0a | 58 65 78 74 65 72 6e 20 |X#endif.|Xextern |
|000060b0| 63 68 61 72 20 70 72 69 | 6e 74 65 72 5b 5d 3b 0a |char pri|nter[];.|
|000060c0| 58 65 78 74 65 72 6e 20 | 69 6e 74 20 64 61 79 5f |Xextern |int day_|
|000060d0| 66 69 72 73 74 3b 0a 58 | 65 78 74 65 72 6e 20 69 |first;.X|extern i|
|000060e0| 6e 74 20 6c 6f 63 6b 65 | 64 3b 0a 58 0a 58 2f 2a |nt locke|d;.X.X/*|
|000060f0| 20 43 72 65 61 74 65 20 | 61 6e 64 20 69 6e 69 74 | Create |and init|
|00006100| 20 63 6f 6e 74 72 6f 6c | 20 70 61 6e 65 6c 20 2a | control| panel *|
|00006110| 2f 0a 58 63 72 65 61 74 | 65 5f 70 61 6e 65 6c 28 |/.Xcreat|e_panel(|
|00006120| 29 0a 58 7b 0a 58 09 69 | 6e 74 09 77 69 64 74 68 |).X{.X.i|nt.width|
|00006130| 3b 0a 58 0a 58 09 2f 2a | 20 43 72 65 61 74 65 20 |;.X.X./*| Create |
|00006140| 74 68 65 20 63 6f 6e 74 | 72 6f 6c 20 70 61 6e 65 |the cont|rol pane|
|00006150| 6c 2e 20 2a 2f 0a 58 09 | 70 61 6e 65 6c 20 3d 20 |l. */.X.|panel = |
|00006160| 77 69 6e 64 6f 77 5f 63 | 72 65 61 74 65 28 66 72 |window_c|reate(fr|
|00006170| 61 6d 65 2c 20 50 41 4e | 45 4c 2c 0a 58 09 09 09 |ame, PAN|EL,.X...|
|00006180| 20 20 57 49 4e 5f 48 45 | 49 47 48 54 2c 20 37 32 | WIN_HE|IGHT, 72|
|00006190| 2c 20 57 49 4e 5f 46 4f | 4e 54 2c 20 66 6f 6e 74 |, WIN_FO|NT, font|
|000061a0| 2c 0a 58 09 09 09 20 20 | 57 49 4e 5f 43 4f 4e 53 |,.X... |WIN_CONS|
|000061b0| 55 4d 45 5f 4b 42 44 5f | 45 56 45 4e 54 53 2c 0a |UME_KBD_|EVENTS,.|
|000061c0| 58 09 09 09 20 20 57 49 | 4e 5f 55 50 5f 45 56 45 |X... WI|N_UP_EVE|
|000061d0| 4e 54 53 2c 20 4b 45 59 | 5f 4c 45 46 54 28 37 29 |NTS, KEY|_LEFT(7)|
|000061e0| 2c 20 30 2c 0a 58 09 09 | 09 20 20 57 49 4e 5f 45 |, 0,.X..|. WIN_E|
|000061f0| 52 52 4f 52 5f 4d 53 47 | 2c 20 22 43 61 6e 27 74 |RROR_MSG|, "Can't|
|00006200| 20 63 72 65 61 74 65 20 | 6d 61 69 6e 20 70 61 6e | create |main pan|
|00006210| 65 6c 2e 22 2c 0a 58 09 | 09 09 20 20 30 29 3b 0a |el.",.X.|.. 0);.|
|00006220| 58 0a 58 09 2f 2a 20 43 | 72 65 61 74 65 20 74 68 |X.X./* C|reate th|
|00006230| 65 20 70 61 6e 65 6c 20 | 69 74 65 6d 73 20 61 6e |e panel |items an|
|00006240| 64 20 74 68 65 69 72 20 | 6d 65 6e 75 73 20 2a 2f |d their |menus */|
|00006250| 0a 58 09 64 6f 6e 65 5f | 6d 65 6e 75 20 3d 20 6d |.X.done_|menu = m|
|00006260| 65 6e 75 5f 63 72 65 61 | 74 65 28 4d 45 4e 55 5f |enu_crea|te(MENU_|
|00006270| 53 54 52 49 4e 47 53 2c | 0a 58 09 09 09 22 43 6c |STRINGS,|.X..."Cl|
|00006280| 6f 73 65 20 74 6f 20 49 | 63 6f 6e 22 2c 20 22 51 |ose to I|con", "Q|
|00006290| 75 69 74 20 54 6f 6f 6c | 22 2c 20 30 2c 0a 58 09 |uit Tool|", 0,.X.|
|000062a0| 09 09 30 29 3b 0a 58 0a | 58 09 64 6f 6e 65 62 75 |..0);.X.|X.donebu|
|000062b0| 74 74 6f 6e 5f 70 69 20 | 3d 20 70 61 6e 65 6c 5f |tton_pi |= panel_|
|000062c0| 63 72 65 61 74 65 5f 69 | 74 65 6d 28 70 61 6e 65 |create_i|tem(pane|
|000062d0| 6c 2c 20 50 41 4e 45 4c | 5f 42 55 54 54 4f 4e 2c |l, PANEL|_BUTTON,|
|000062e0| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|000062f0| 20 20 20 20 20 20 20 20 | 20 20 50 41 4e 45 4c 5f | | PANEL_|
|00006300| 4c 41 42 45 4c 5f 49 4d | 41 47 45 2c 20 0a 58 20 |LABEL_IM|AGE, .X |
|00006310| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006320| 20 20 20 20 20 20 20 20 | 20 70 61 6e 65 6c 5f 62 | | panel_b|
|00006330| 75 74 74 6f 6e 5f 69 6d | 61 67 65 28 70 61 6e 65 |utton_im|age(pane|
|00006340| 6c 2c 20 22 44 6f 6e 65 | 22 2c 20 34 2c 20 66 6f |l, "Done|", 4, fo|
|00006350| 6e 74 29 2c 0a 58 09 09 | 09 50 41 4e 45 4c 5f 45 |nt),.X..|.PANEL_E|
|00006360| 56 45 4e 54 5f 50 52 4f | 43 2c 20 64 6f 6e 65 5f |VENT_PRO|C, done_|
|00006370| 6d 65 6e 75 5f 65 76 65 | 6e 74 2c 0a 58 20 20 20 |menu_eve|nt,.X |
|00006380| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006390| 20 20 20 20 20 50 41 4e | 45 4c 5f 4e 4f 54 49 46 | PAN|EL_NOTIF|
|000063a0| 59 5f 50 52 4f 43 2c 20 | 64 6f 6e 65 62 75 74 74 |Y_PROC, |donebutt|
|000063b0| 6f 6e 5f 6e 6f 74 69 66 | 79 2c 0a 58 09 09 09 50 |on_notif|y,.X...P|
|000063c0| 41 4e 45 4c 5f 49 54 45 | 4d 5f 58 2c 20 41 54 54 |ANEL_ITE|M_X, ATT|
|000063d0| 52 5f 43 4f 4c 28 30 29 | 2c 0a 58 09 09 09 50 41 |R_COL(0)|,.X...PA|
|000063e0| 4e 45 4c 5f 49 54 45 4d | 5f 59 2c 20 41 54 54 52 |NEL_ITEM|_Y, ATTR|
|000063f0| 5f 52 4f 57 28 30 29 2b | 32 2c 0a 58 20 20 20 20 |_ROW(0)+|2,.X |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.