mirror of
https://salsa.debian.org/dskoll/remind.git
synced 2026-04-19 07:48:40 +02:00
Compare commits
2294 Commits
v3_00_21
...
4e7cfc20ce
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e7cfc20ce | |||
| 0c9a35a584 | |||
| 5e333f6162 | |||
| af8b4e6df1 | |||
| 3fa798523a | |||
| 53001f9fbc | |||
| 9cd76eae84 | |||
| c8295b6251 | |||
| 3c95245407 | |||
| 3362c7226c | |||
| 356b562d75 | |||
| 6eebcdc39d | |||
| 5a80d63060 | |||
| c7ca1b4baa | |||
| dc89a6fba9 | |||
| f83fec5563 | |||
| 9c38161430 | |||
| 68f5fe1d10 | |||
| bc7c57e53b | |||
| 88aacb3905 | |||
| a894076bfc | |||
| 82e068fcca | |||
| a119d97539 | |||
| 01afb63a3d | |||
| 54fccabdfe | |||
| ba4d44664f | |||
| d76c5499b5 | |||
| 84e8244e48 | |||
| 92a6115a5c | |||
| b98e336e9e | |||
| ffcd21446e | |||
| af9ca68d99 | |||
| 71db7168a1 | |||
| 54f284c43f | |||
| 0ab93f2dea | |||
| 3d97f87bcd | |||
| dcfa6d8ef8 | |||
| 52dd5332f4 | |||
| 7b5fafe1ab | |||
| 929af71a10 | |||
| abf7c74ff2 | |||
| 5b9d9a67b2 | |||
| 16ca2ade23 | |||
| d3e6c81a3a | |||
| 13ae49d3cd | |||
| 78adc9f61d | |||
| a622d4fad4 | |||
| 6c0e7b4ff5 | |||
| 28e0599380 | |||
| 87445f639c | |||
| af6e159eaa | |||
| bffa28e258 | |||
| 1781f84d84 | |||
| ed6e65182e | |||
| f5cc0ec686 | |||
| a2c818f96c | |||
| 0bbbaaf3d9 | |||
| 1c81d4cae3 | |||
| 56c684087b | |||
| 9500a929ea | |||
| 585d45e4a1 | |||
| 67d1d1366d | |||
| f4018892e8 | |||
| ffd309f89d | |||
| 286babc1bf | |||
| cc3c0040e9 | |||
| b33a1ee98b | |||
| 99706741bb | |||
| df73a74503 | |||
| c747ebebb4 | |||
| 6b412062c2 | |||
| 27b688f82c | |||
| 4c314ff81c | |||
| d2955ec733 | |||
| 480216db9e | |||
| 9dbb0de7e6 | |||
| 9f9ae77895 | |||
| d9796e72e5 | |||
| e0b0d043c6 | |||
| fe4499ab72 | |||
| e50d583659 | |||
| 6b05d772f0 | |||
| 84dd73f023 | |||
| 00dca8b70f | |||
| c4bc145cd9 | |||
| bd614c1cde | |||
| 1446ac0552 | |||
| 26ded447ab | |||
| a4ccb0738e | |||
| 27a1b449bd | |||
| 1443282859 | |||
| 4a2d707654 | |||
| fd2a61928c | |||
| a05d9eefc9 | |||
| 6f230e81bd | |||
| 973019c4c7 | |||
| cb712ad7e7 | |||
| be7c67b6fd | |||
| a933c8bc69 | |||
| 087fbfd8e6 | |||
| ff641d7990 | |||
| 54e788b765 | |||
| 4283feff31 | |||
| 062a84b758 | |||
| d161a8ff1a | |||
| 0df4a79531 | |||
| 1b26e39e2f | |||
| c63c4cf07e | |||
| 586b3565f0 | |||
| 877aaed1a1 | |||
| 57fa1a6099 | |||
| 6cdb12b5a8 | |||
| c73e1b6f97 | |||
| e8c779c785 | |||
| 96e076a13f | |||
| 80d258621a | |||
| ed6d35e418 | |||
| 9dca1840a1 | |||
| f4ec23df90 | |||
| a0536a8141 | |||
| 553899127a | |||
| 73519889c7 | |||
| 54ac99abcc | |||
| 0c1954bdf4 | |||
| 46e1b7386e | |||
| cdf480112a | |||
| ed38feee83 | |||
| d7f5582a45 | |||
| d042263d3d | |||
| f1591140d4 | |||
| 1b41367163 | |||
| 6bdee7ef89 | |||
| d50b464314 | |||
| ad5dff1de7 | |||
| ac9f32f044 | |||
| e48d025f5d | |||
| 0f5de395ff | |||
| 406629144f | |||
| 36e4f52828 | |||
| ae39eb1d6e | |||
| 342c229a57 | |||
| 52fc89ddc7 | |||
| 821e7a64c8 | |||
| 8c3f7e092c | |||
| 6161214226 | |||
| 5b892eba8e | |||
| e0fde98410 | |||
| aec17b3243 | |||
| 83009e765d | |||
| 42dc81132f | |||
| 51d8b7be39 | |||
| 04cc3fd8dd | |||
| bd429d1450 | |||
| 57fa0bfb2e | |||
| bc7f92e3c0 | |||
| 67ab911d43 | |||
| 43191fc6a3 | |||
| da1cc9137c | |||
| 1306195045 | |||
| edb73548d6 | |||
| c143d554b7 | |||
| c2dbf32dd6 | |||
| a0e32c715b | |||
| 356e0044c4 | |||
| eea90b1aaa | |||
| b2c5575849 | |||
| 7064d64b22 | |||
| 5783430fdd | |||
| 3e8c40990d | |||
| cbdc124355 | |||
| 40e60dd627 | |||
| e508bee0ed | |||
| 0200be82ba | |||
| 4c8b6e74d2 | |||
| bbdcf44102 | |||
| 02007a32fe | |||
| fd7c79b6b4 | |||
| c8c2d5d32e | |||
| 4eafaaefeb | |||
| de6e387969 | |||
| f8d1439fc8 | |||
| fd7079d7f8 | |||
| 1ccf1d236d | |||
| 7041e2cad8 | |||
| b1b21e21b3 | |||
| 533718b0a0 | |||
| 4e75d1574c | |||
| c94137e0b3 | |||
| e49251cfb0 | |||
| e3627e8ea3 | |||
| 2c1f44c9b9 | |||
| cce24634ae | |||
| e2435c34a9 | |||
| a70ba8d42c | |||
| dea14be2d5 | |||
| 6750a393f1 | |||
| e18cd72791 | |||
| 6e1dc7dcd7 | |||
| bf193250cc | |||
| 2c5eeb02f6 | |||
| 5cd343c27c | |||
| 81b48b70c4 | |||
| 5e738020a7 | |||
| 7949341037 | |||
| f4d8331456 | |||
| 17beef5ce6 | |||
| aaae80d02b | |||
| e97de16203 | |||
| d5e38ee3b4 | |||
| 11594aee2d | |||
| 711f0b6c69 | |||
| 87a8b9811d | |||
| 689b1d0e13 | |||
| a8650e888f | |||
| dea2aed628 | |||
| 5618b928e0 | |||
| 91187c4c60 | |||
| 636ae8f21a | |||
| 405398b226 | |||
| 0df3a903b1 | |||
| eac07d212c | |||
| 96da3a6596 | |||
| 94ef20d702 | |||
| c9c309e436 | |||
| 52c973509b | |||
| c192c580da | |||
| 235e5ec1c7 | |||
| 3d30173f9a | |||
| 8b0bbc9fb7 | |||
| c57d2fd52a | |||
| 2970591187 | |||
| 23ec559ddf | |||
| 302bc5a5de | |||
| 950c0b3747 | |||
| ad382fea25 | |||
| a66e855ca7 | |||
| a1b814d6b1 | |||
| 62030719bb | |||
| 985816dc32 | |||
| a131a53132 | |||
| c5e723b6ac | |||
| 3fe2b88e65 | |||
| 54603090ee | |||
| 2514b3681f | |||
| 0b7b101814 | |||
| 3ac1c622fd | |||
| 7878f6623c | |||
| 00ad38e5fe | |||
| 10ae0b0077 | |||
| e032f3315d | |||
| a38fd95a90 | |||
| 9f7609b2c6 | |||
| a6c166ae0c | |||
| e9c89b770f | |||
| df6298bd63 | |||
| 739d285e36 | |||
| ee1c931932 | |||
| 0806b6738f | |||
| 020e82d575 | |||
| a20f2b588e | |||
| 631e721a96 | |||
| 8453e17c6c | |||
| 76c1e2abb3 | |||
| 3389f1c91b | |||
| b2d47ae979 | |||
| e2c615f310 | |||
| e8492a4303 | |||
| 4695efaabd | |||
| c433f42587 | |||
| 4708e59a43 | |||
| d56ac6332a | |||
| b054baf590 | |||
| 42f5e3467d | |||
| 97013ae89b | |||
| 2acead9118 | |||
| a53a80acb4 | |||
| 56e62b1b4d | |||
| c645db5ede | |||
| ef6b9c3783 | |||
| 019bee26cb | |||
| 152cd4090b | |||
| b7fc2b5776 | |||
| 723aba9b7c | |||
| 8a5b88338b | |||
| 7236441e02 | |||
| e4bab0dda4 | |||
| 5b7d4a07ec | |||
| 8c3d2c4003 | |||
| f485d607ff | |||
| a0effa5f0b | |||
| 7d501cda6f | |||
| 5d7f55c8d5 | |||
| 097bf92bea | |||
| b9dea59206 | |||
| 46aa144b65 | |||
| 914971308d | |||
| a22e81040f | |||
| 72f74f03cf | |||
| d0e45e727e | |||
| ce2b2e80da | |||
| 11771b7d3d | |||
| 01cb028532 | |||
| 58b6f43b9c | |||
| 1dedb667e8 | |||
| 8a96236788 | |||
| 2a13163659 | |||
| 336a9684d4 | |||
| 86945c6e18 | |||
| 684280db5e | |||
| d801408933 | |||
| 79b3da3820 | |||
| ed021d3f46 | |||
| 27d0fda280 | |||
| ef12da4ec6 | |||
| 7b098e95ad | |||
| 7d13f4b09e | |||
| cecdfe6ade | |||
| 216bbd6378 | |||
| 30e2e9c633 | |||
| bf2aabd610 | |||
| c019221d15 | |||
| b7bd6faf07 | |||
| 80d58220fe | |||
| cd8624e176 | |||
| 8515fb7ddd | |||
| 84f9f4ae0a | |||
| e201ebcfa4 | |||
| 4e15c3ec35 | |||
| 1adccf9b1f | |||
| a1aa5c2ad9 | |||
| 1e0d650737 | |||
| 553d092ca8 | |||
| dc62841517 | |||
| 326e7bfc53 | |||
| b9dc7c16ad | |||
| abd54b016b | |||
| db02b54067 | |||
| 40a78dfbbb | |||
| c860b46baa | |||
| 1458ba8856 | |||
| 7b9b6ebc96 | |||
| 7ee4073c7a | |||
| 8c072cd9b6 | |||
| b794a45c3f | |||
| 98e491ed1d | |||
| c397cc06da | |||
| 8616236b3c | |||
| 702704af1a | |||
| a0d1b19050 | |||
| a5c8ae491c | |||
| b3cf741d15 | |||
| 0b28dde9c7 | |||
| 5a3980b5b8 | |||
| a8e33118d6 | |||
| 2223277f64 | |||
| c72413e3c1 | |||
| fa1033db6f | |||
| 61e3edd2ac | |||
| 093c97ff91 | |||
| 6e64b175aa | |||
| 09dba4bc94 | |||
| 2e443ac5b7 | |||
| 59a8c88178 | |||
| 40eab03d84 | |||
| e993bf59cf | |||
| c6de5a2c8f | |||
| 51cc939d0c | |||
| c857192e6d | |||
| 4591c2b181 | |||
| 7843a1b2ba | |||
| 649481cf01 | |||
| c253bdfcbe | |||
| 1910808fd7 | |||
| 1d8cb9749e | |||
| e3f9380fcd | |||
| 326c3f59b0 | |||
| 03f1c5a047 | |||
| 02122491c3 | |||
| 735f6f5686 | |||
| ac033d75c0 | |||
| e2185e773a | |||
| d9ae417e01 | |||
| e1d0948538 | |||
| 357ddf285a | |||
| 41859fc484 | |||
| 07275e71b0 | |||
| f68521cb95 | |||
| 526610bdd2 | |||
| 973e3448ae | |||
| 9a3f28f6fc | |||
| a3e32d2dc4 | |||
| a8b78eff00 | |||
| 460db83298 | |||
| 4560712778 | |||
| ce8803dde9 | |||
| 60ca5d45e3 | |||
| 4454613d00 | |||
| 0704808500 | |||
| 166b1ac499 | |||
| e33bf4e80a | |||
| b3af44d212 | |||
| 1e753d5209 | |||
| 4bf31005ea | |||
| 7c86bc910a | |||
| 4f146a99a9 | |||
| a6a638e0e6 | |||
| 325814f5e1 | |||
| 5c4ea7d09e | |||
| 2bf73987ac | |||
| 3e9eeea8dc | |||
| d164d72c1c | |||
| 632cee62d9 | |||
| 7a40260f0d | |||
| 09f043b3de | |||
| c0341c8ba3 | |||
| 850c717803 | |||
| f13f9e18bd | |||
| 8bdca0d684 | |||
| 129bf5612e | |||
| 829962fae1 | |||
| c5f9ed8541 | |||
| 4a7cef4644 | |||
| 0e010b56ec | |||
| ee179ee2f5 | |||
| e28712cef3 | |||
| 8f0a2a7e79 | |||
| ef23bba77f | |||
| 602086ae2d | |||
| f5a170acbd | |||
| 8125b96f0b | |||
| 0bb7d89bb9 | |||
| eb109bbbc0 | |||
| 1a0809fd31 | |||
| 09625b9d68 | |||
| 4e164c4268 | |||
| 691185f22c | |||
| a8bfb41a9e | |||
| fafb30db05 | |||
| 243e816523 | |||
| b49c0f52bd | |||
| 07fca94a7f | |||
| 73917ee537 | |||
| 76f9edecf6 | |||
| d77d9854d2 | |||
| c2b53f95a4 | |||
| caef8b80d6 | |||
| 5e016768af | |||
| ee08ce98d7 | |||
| 581bd95838 | |||
| bb92dab1ab | |||
| 83b5c52c76 | |||
| 93eca25141 | |||
| 34421cb10e | |||
| 29b87898aa | |||
| e9e4db94bd | |||
| c95ad0261a | |||
| 7fef456483 | |||
| 386131e74d | |||
| 824d3c88f1 | |||
| 18a206abd2 | |||
| 8dbae776c9 | |||
| b78702cc53 | |||
| d2b43605ad | |||
| 7728e09337 | |||
| 2666353ce6 | |||
| 0b8a306483 | |||
| b51a0b2d08 | |||
| 959355b19c | |||
| 9c3f0f1994 | |||
| dac337a65b | |||
| 98739dfdbc | |||
| 17b7a1ea84 | |||
| 4d45925758 | |||
| 8cadb23f48 | |||
| 63211b65c2 | |||
| 1be84525b1 | |||
| 67ae95a464 | |||
| c03a95ad94 | |||
| 51aa7aecb9 | |||
| 592cfe5a20 | |||
| b4cf15e73e | |||
| 862e143372 | |||
| 1f10ca49ad | |||
| 4a0c4ffdca | |||
| 27c8737f3a | |||
| ecf45fc453 | |||
| 0a1178cfd7 | |||
| 20a35dc627 | |||
| 79887c06f0 | |||
| f7ff424904 | |||
| 6678721fe3 | |||
| 496302097b | |||
| fe3e2b9a20 | |||
| 400a6b066f | |||
| 76d181e7fc | |||
| 77373eed2d | |||
| 6b52be388f | |||
| 0518a12a91 | |||
| 362a02c4b8 | |||
| 3e3a0cde47 | |||
| c16f93effd | |||
| 61b27c02b5 | |||
| ba28eaad53 | |||
| 92c2d0cc9f | |||
| 21d5e8a095 | |||
| 60417d68a7 | |||
| 7d25387403 | |||
| b454cf5b20 | |||
| 9ea6385b72 | |||
| 55b7908444 | |||
| e9ff66478b | |||
| d3240d711d | |||
| a8d63a4199 | |||
| a4807a21c3 | |||
| a394ef53a0 | |||
| eb8243743a | |||
| 8444bb15c5 | |||
| b86245c4c6 | |||
| 499fcfad41 | |||
| bddbbf061b | |||
| 05136f4cf0 | |||
| e62e3d5d03 | |||
| 595fdaa4a4 | |||
| 133febc2c1 | |||
| f8c6d7ff6c | |||
| db3341db91 | |||
| 8cbcd3ec01 | |||
| 4c6512e9b6 | |||
| 4769789a8f | |||
| b4a8cb085c | |||
| 4f816d52fd | |||
| 94b3a0248d | |||
| 5fbf1d82e4 | |||
| 55eb3ebe95 | |||
| 2afa3c5558 | |||
| 30d9a42db2 | |||
| 74d357b84d | |||
| 09c98a93ec | |||
| ed89ab7c04 | |||
| 27c74be02b | |||
| 8f22ab39dc | |||
| 795c53f4ce | |||
| 3fd18a9cc0 | |||
| a5afb4a87e | |||
| 379fc4542d | |||
| 538ef6c8ce | |||
| 95c7e8856c | |||
| 95523c8f10 | |||
| 97b53d5e40 | |||
| fb688850b1 | |||
| 5b1bad2650 | |||
| e5ff132c5e | |||
| a0830ad23c | |||
| 9290f53466 | |||
| e5711032bd | |||
| 08e3c1d5a2 | |||
| 29c579a301 | |||
| 61f55bceee | |||
| 6586fae3eb | |||
| d5a86f3e4f | |||
| 96551ccaa4 | |||
| c83ee86d10 | |||
| c913306cbd | |||
| 03d385df97 | |||
| 61fcc1b275 | |||
| 26977a4ac0 | |||
| 28acd05215 | |||
| be4eed8b20 | |||
| cdb0850373 | |||
| 0d55e04284 | |||
| f4cce54b70 | |||
| 2dc6ca44f1 | |||
| d1d833f0f3 | |||
| 1d44577ce9 | |||
| 1be7c2d6d7 | |||
| b1f418ee42 | |||
| 72b0bf96fe | |||
| 3388849fa5 | |||
| dc9650d5fa | |||
| 8eb40ae748 | |||
| 89184f1d0f | |||
| e899c790b9 | |||
| bd6d695020 | |||
| 20d4626a71 | |||
| 8ff94c5031 | |||
| ee185a0eeb | |||
| 06f8932efd | |||
| 1dc627148c | |||
| 3cdde5351f | |||
| 6e93b8a73d | |||
| 267e8533cf | |||
| d3bfb0a28f | |||
| 5a31bc7058 | |||
| 746bde71bd | |||
| b274ac635c | |||
| 9e0a74e583 | |||
| 0f782f7697 | |||
| 8efde3e9af | |||
| 3bf3137dc4 | |||
| 63ec32d28d | |||
| d2f4177cdb | |||
| 1d958fb7a8 | |||
| fcd580d42e | |||
| 34dab68805 | |||
| 216dd03922 | |||
| 5eef9ac621 | |||
| 6b798d5f7c | |||
| 22ccce0934 | |||
| fe2af14952 | |||
| 8e99ed27e7 | |||
| bb12362cc8 | |||
| 1bfc630a64 | |||
| 987983f8ae | |||
| 657a6118aa | |||
| 43e7e6ec7f | |||
| b8b3c19fbf | |||
| 69298c96a5 | |||
| 7356138872 | |||
| 616966f5df | |||
| a59e277c21 | |||
| 740ae2c3e9 | |||
| 25b7a40f2b | |||
| 2beaab1a2f | |||
| 60793d53c6 | |||
| 4f869c8c81 | |||
| 8955180a35 | |||
| a30cbf5797 | |||
| b2bd6109dc | |||
| 9455ec48d7 | |||
| f751f5defa | |||
| 994edbebbe | |||
| 70959b791c | |||
| 524ece5119 | |||
| 6334bd61b6 | |||
| 2e56edd557 | |||
| 8cae1d21cd | |||
| 1de6ed16eb | |||
| 860cb94f41 | |||
| 6b505704e9 | |||
| 167631451d | |||
| fa5180b94d | |||
| ae01d7be43 | |||
| d5ce39ade1 | |||
| a043dfe8b9 | |||
| 7cfb75e3b3 | |||
| a18f0d982f | |||
| 0e2dc805c2 | |||
| 4c1e11df2c | |||
| 76776d054a | |||
| 45ebd05cb6 | |||
| 0203ce3979 | |||
| 72d10178bf | |||
| 96f4e26d53 | |||
| 4fd86f1b6a | |||
| 2f3ee0aec3 | |||
| a5dde31160 | |||
| b45428df05 | |||
| d938763643 | |||
| e4e2157622 | |||
| 04b349c6c7 | |||
| 7fe3eb7391 | |||
| c1992b577a | |||
| 632283d47f | |||
| 1d9e46997c | |||
| 861ce34022 | |||
| 32e8db322d | |||
| 3df2b72175 | |||
| e7ac4f95be | |||
| e7ed69287b | |||
| 2e80417f53 | |||
| ee435d2bb9 | |||
| bb516946be | |||
| 81157e1cb5 | |||
| 51dfd707a2 | |||
| 7c3bf8601b | |||
| 714195efe5 | |||
| eaeca2d09b | |||
| ffa3b13437 | |||
| 2551e98d11 | |||
| 1bfd7761bc | |||
| de9cb1d0a3 | |||
| b2d32b514a | |||
| 6e53fd6924 | |||
| 8296d2b962 | |||
| d6e66ee1e6 | |||
| a49532b9c5 | |||
| 57d87f4caf | |||
| ec9b30c616 | |||
| 27d8a62ab6 | |||
| 5077814c4a | |||
| ca795a352a | |||
| e59fc36458 | |||
| 39e3657539 | |||
| 6031f70701 | |||
| 3567c9e55f | |||
| 26de4e3fd3 | |||
| cd65c6144d | |||
| d32edbbb1f | |||
| eae48a5538 | |||
| 63eba104d9 | |||
| ae64961735 | |||
| f7bb91320c | |||
| c11071a859 | |||
| 53cbcc22db | |||
| af9dcec3e9 | |||
| d5a4b0d235 | |||
| 3b870403d9 | |||
| 284d822884 | |||
| d881a26ad0 | |||
| 8519edde29 | |||
| a30c467c48 | |||
| 887cd83ebe | |||
| 242d787ca2 | |||
| 5dd2cf7356 | |||
| 5efb70909d | |||
| a60d466774 | |||
| 1c01f36271 | |||
| 3718632551 | |||
| e8f3d5ff9f | |||
| d77e27942d | |||
| 734cc61489 | |||
| 44d489d3d2 | |||
| 3e36ffa9ff | |||
| 12104a96b1 | |||
| 8ab8d65a15 | |||
| f7a8122cef | |||
| 77d9bbb7d6 | |||
| 623def52fd | |||
| d088e35142 | |||
| 5821e55eb8 | |||
| 1ee989c65d | |||
| 62388fb21f | |||
| 13571f84af | |||
| 03fdc06b65 | |||
| 4bce675ae6 | |||
| 7b64623115 | |||
| e268bbf31d | |||
| 5863404de6 | |||
| 2de5996f4e | |||
| 695e79602a | |||
| cf0d958da5 | |||
| 85b0348fa7 | |||
| 15a5d9a876 | |||
| 1baa6dab0c | |||
| 34bb250ba3 | |||
| 598b1b7464 | |||
| e63d4be4e8 | |||
| 65561e7f34 | |||
| da31dadb71 | |||
| 705adbb82a | |||
| 269f9788b6 | |||
| 5e1c5ae384 | |||
| 562eb83bde | |||
| a53db00243 | |||
| 11375729db | |||
| 9fee354e6c | |||
| ec76554d41 | |||
| ddb0817c99 | |||
| 3d6ecd1f72 | |||
| e3ec6565e9 | |||
| 8ed49ead7f | |||
| 49fbca416f | |||
| 82cd438fff | |||
| 946e1bca38 | |||
| e40c81b5bf | |||
| f23418480d | |||
| bb4df39c50 | |||
| 5fec775863 | |||
| a85980fec2 | |||
| f3ea2962e6 | |||
| 3a5af23ab6 | |||
| f9656edc51 | |||
| 5134b47d47 | |||
| d4a183f3bf | |||
| 87e392de6c | |||
| afc1667e64 | |||
| 8d25270c43 | |||
| 929866a770 | |||
| 395bad96a7 | |||
| cd7be006c9 | |||
| f658ba7ee7 | |||
| 7416f4c035 | |||
| 2860159ff7 | |||
| 64fa71ab09 | |||
| ffbba7d4d1 | |||
| fdcc2d8acf | |||
| f1aa4d16af | |||
| a55c5580f3 | |||
| 569e315306 | |||
| acd641845d | |||
| 6b7e6f6788 | |||
| 4248b9c624 | |||
| 6de98d1357 | |||
| 18f21693af | |||
| 6fa500a860 | |||
| 941c02582e | |||
| e56e3924d9 | |||
| d1384a8f69 | |||
| 0488d689aa | |||
| 988a94e669 | |||
| ac7e93ac1c | |||
| bb7e9ee676 | |||
| ac949ce7bd | |||
| 0fa8eed11f | |||
| df8694a128 | |||
| 13df3d96e5 | |||
| e345eb15f2 | |||
| e8b2872a87 | |||
| 2f196e3c9f | |||
| 839b844a10 | |||
| 0cea410529 | |||
| 90397ece64 | |||
| 0b95fc290c | |||
| 9a4e8b6070 | |||
| 924fd16ade | |||
| 0815fe19cc | |||
| 7f445e1b66 | |||
| 31afc60af4 | |||
| 9d34a8aa42 | |||
| 91325ff489 | |||
| 1f99d6df59 | |||
| 8a608a06b8 | |||
| bb34474e59 | |||
| 029c054489 | |||
| 01400d0672 | |||
| a1eafb2c89 | |||
| af88e393f9 | |||
| 3a250ce765 | |||
| d651ac40a8 | |||
| 653324e220 | |||
| e5c6703eaa | |||
| 1596d9c76a | |||
| 4aacf74e25 | |||
| ae58bc7c11 | |||
| 387125d983 | |||
| aa5f9297b2 | |||
| 8c4a7e766f | |||
| d7f32d3901 | |||
| d4f09e2a31 | |||
| 8b5fe4f2a0 | |||
| 98fc4a917f | |||
| e633530a36 | |||
| bfea9915b9 | |||
| d68ed6e75d | |||
| a22631d768 | |||
| 552bf84e33 | |||
| 28d0251093 | |||
| f3d969f658 | |||
| 2afe95d090 | |||
| 3692a6b265 | |||
| 8fc19358bb | |||
| c8f9773d83 | |||
| e1091db82f | |||
| 9f8ed13434 | |||
| 914f03d5eb | |||
| a801f6d4ce | |||
| fde5a7b4ca | |||
| 0e1fff6339 | |||
| 60fdeac2e9 | |||
| 3b3f10d448 | |||
| 48a4314dd2 | |||
| 9beff3a24a | |||
| 1ef90c7a61 | |||
| 5c886d181e | |||
| da4d830163 | |||
| c7abb7986c | |||
| 5a3b3d8a06 | |||
| 127cee03df | |||
| 7455748d54 | |||
| e278d0e768 | |||
| a5acc12239 | |||
| a25afb9771 | |||
| 6252a472b5 | |||
| dbe4c662c1 | |||
| b77a261c87 | |||
| 351c54cc50 | |||
| 72d0b13ad5 | |||
| bea2a6541c | |||
| 5258e98f54 | |||
| af9d42721c | |||
| 8ed43f5c3e | |||
| ec02a87c2b | |||
| 6c2ec04d40 | |||
| 9f91cdf0b9 | |||
| 8ada68ce54 | |||
| d7975634af | |||
| 87be68fecf | |||
| b42d5fd412 | |||
| 603228b944 | |||
| c62f676813 | |||
| c7654c27a6 | |||
| b00bf05fea | |||
| 29bd07d4ef | |||
| b7047da89e | |||
| f26334e25f | |||
| b80bc5f788 | |||
| 91549e18ce | |||
| 07fd975935 | |||
| f9d968cf68 | |||
| 6a7e696a60 | |||
| 6734fae1db | |||
| 481fbc20a1 | |||
| 3c120bf561 | |||
| ee65e04974 | |||
| 4ee6bb0eca | |||
| b9839421f2 | |||
| 67601507fa | |||
| c2e5534462 | |||
| f4ea3af6fc | |||
| e0998a3991 | |||
| d67e580d0a | |||
| d6ce54eea4 | |||
| 8b9ec43029 | |||
| 9d68134f0f | |||
| 3d91371870 | |||
| d1c0ef63b0 | |||
| 2a59da61e1 | |||
| 2bc5e21627 | |||
| 7d77bfd12a | |||
| 0ff589c288 | |||
| f3cca092be | |||
| 7218d55f08 | |||
| ec72c74016 | |||
| c946f08235 | |||
| a8543ac349 | |||
| dd3c0e14ed | |||
| a2bc0acd3c | |||
| a34266741a | |||
| dedb9766c9 | |||
| aedd759f50 | |||
| a24c2f6905 | |||
| fac31a10b8 | |||
| fba9f139ed | |||
| 588d9debe8 | |||
| 805c2e0c69 | |||
| 2c2b1440b3 | |||
| 6973f62d74 | |||
| f547c1e714 | |||
| f8ea124b1f | |||
| 820e2aec4d | |||
| 01ce6b2d8f | |||
| b39e0eab7e | |||
| d6fc451d74 | |||
| ac91556fc2 | |||
| ccf639efe6 | |||
| a8aa3b328b | |||
| 74a3b3e73d | |||
| c0e68b57ea | |||
| 0ad4ea26eb | |||
| ea7aafaf5e | |||
| 18043080ba | |||
| 7cd8cf3a77 | |||
| 21da52ec36 | |||
| 7a0c164843 | |||
| 5cf4961f19 | |||
| 68926d145b | |||
| fdc3e4d23d | |||
| f179c837e1 | |||
| 740bb44956 | |||
| 5b953769fe | |||
| 1ae00ce778 | |||
| a01e05c1db | |||
| 63fb3e99f3 | |||
| 6cf7f5d2d8 | |||
| 316eb43303 | |||
| 576112a39a | |||
| 6607223abb | |||
| 9e85b1932d | |||
| 4ba7f5b1f2 | |||
| fc93ae890a | |||
| 8051d01945 | |||
| 63430c59f7 | |||
| c646bfc63f | |||
| 58dea8f69b | |||
| f1c82dcb37 | |||
| b984b66819 | |||
| 44bdae302b | |||
| 8eb6b250fb | |||
| d838c41bf2 | |||
| f9dbf36496 | |||
| fe1427db28 | |||
| 2621ad5604 | |||
| efecf2e1ea | |||
| 8666e6357e | |||
| ae7069c9cb | |||
| 0c6ab3e607 | |||
| 17d6a60c0a | |||
| e3e0a541dc | |||
| 712aa08fbc | |||
| 98c5bf511e | |||
| 1f9281628f | |||
| 8fb15aed17 | |||
| a24c3a8542 | |||
| 8f8059e3f3 | |||
| 24bb462199 | |||
| 38e914f171 | |||
| 4a02c54e8d | |||
| 5fe169438a | |||
| a7ef6e851a | |||
| 4d57b9d0aa | |||
| 5a7452d9f6 | |||
| 3916887aff | |||
| f84f59fa91 | |||
| 1032f8908e | |||
| 6c2e8fc608 | |||
| 012e527fb5 | |||
| 62198c9807 | |||
| de95224d62 | |||
| be374a0464 | |||
| fe9b3186d7 | |||
| 8405ea6c53 | |||
| 4274d05e10 | |||
| 4e80ce1159 | |||
| 52f473f2af | |||
| 1d6ca51bf9 | |||
| e662d0b3dd | |||
| b910d557d1 | |||
| a4ad0a9e97 | |||
| 07f67e7dd7 | |||
| d6575773fb | |||
| ac1303886e | |||
| 1569992184 | |||
| 55a1f1d746 | |||
| ef7742a3cc | |||
| ef48c2020b | |||
| 6dcb25073b | |||
| 4824b07ec8 | |||
| a8f1228fb7 | |||
| 80e51d1d0f | |||
| 80e30638a5 | |||
| dd2fc30364 | |||
| a5865fb5fe | |||
| aca2f28341 | |||
| 7a3f5f7ac9 | |||
| 1731710ef2 | |||
| dc2a8f48bf | |||
| 5e16179bfa | |||
| a7c1bc81b2 | |||
| 5f5ec8ef19 | |||
| 712ff56792 | |||
| 99af1f964c | |||
| de5d1347e5 | |||
| 5e07fbde6d | |||
| c523c7f3b3 | |||
| 6b3c6b0ec7 | |||
| 62b94ab065 | |||
| 49c7399599 | |||
| 5fa9297aba | |||
| 4ada31798b | |||
| e78f953e90 | |||
| af7a9ad8b5 | |||
| 35eae045a6 | |||
| 98a20ae058 | |||
| df9ef6e13a | |||
| 10f5802069 | |||
| 780044219f | |||
| d015c061e7 | |||
| 6f6326d433 | |||
| 9488e7ca13 | |||
| 71c11672c2 | |||
| 0acefa800e | |||
| d45cee4712 | |||
| c026aa05e2 | |||
| 50076c74fa | |||
| 1563d77c06 | |||
| ed72ef8629 | |||
| 06c5996086 | |||
| 570ca857a0 | |||
| f8f20b7afc | |||
| f55ef7ff20 | |||
| 79220a74cf | |||
| 77111ef628 | |||
| bf96063311 | |||
| 58a201fceb | |||
| 47cecb210b | |||
| bfbf744b0a | |||
| 0cf56ac1de | |||
| 2880a718f4 | |||
| da0dd0f7c6 | |||
| c456d3e0ff | |||
| 59059736e6 | |||
| f5cf2ab832 | |||
| cc4ff2582d | |||
| 90f5fde3bb | |||
| 9fbe9f5132 | |||
| f05661fa6c | |||
| d6882c3378 | |||
| e32cab937e | |||
| 14bb939977 | |||
| 13e830782d | |||
| f39bb5e2d9 | |||
| 8b795e81b7 | |||
| aef7eeda5a | |||
| 0641a6f8f1 | |||
| 4fdf7b706b | |||
| 0653b9420a | |||
| 27ede1ce37 | |||
| a303fb9cba | |||
| 92af4e9c3e | |||
| abc4f45fed | |||
| e651f92bd9 | |||
| b2d3d98d72 | |||
| cb8b7f85af | |||
| d30f347a0b | |||
| 5e9b1e7464 | |||
| 58085470c5 | |||
| 8f0de805d5 | |||
| 3f879a1b97 | |||
| 94270c3d98 | |||
| bb8a689186 | |||
| a7e73cdac8 | |||
| d38c324340 | |||
| fade38d522 | |||
| 858a7601aa | |||
| 37e3d3d1d1 | |||
| ff67ab3c86 | |||
| ad7faa8ad9 | |||
| c927166a8a | |||
| 9d22fba842 | |||
| 3d5adf6c42 | |||
| 5ba862cbd7 | |||
| 6f20e056c9 | |||
| 878ab1a8bc | |||
| 4d17494371 | |||
| 65763b9522 | |||
| 52840d40de | |||
| 6892e7a805 | |||
| 24d0264f92 | |||
| 56c37e4e05 | |||
| 86c99102b5 | |||
| de4a23ee1e | |||
| 6a9f7c186a | |||
| eaed22a42b | |||
| f47cf2320e | |||
| eb100e57e2 | |||
| 948548c73f | |||
| 7495ae1e05 | |||
| 51ae17bd0a | |||
| 61d665ef7d | |||
| 5aaf19ffdb | |||
| 2eb672e380 | |||
| 4a59bf686b | |||
| f98ab6f686 | |||
| 3600cd95cd | |||
| f8bd79fbb2 | |||
| 4c403047eb | |||
| 25009de417 | |||
| c4588654ec | |||
| c1e5279272 | |||
| cda8396690 | |||
| c0f79d1e69 | |||
| 375a0fb7a2 | |||
| 2069114ef1 | |||
| f6d9e8724d | |||
| 8e55438200 | |||
| 1ca6feb112 | |||
| 732ce8283f | |||
| 122bd3e07e | |||
| 0ac5cbb837 | |||
| 7f3d4812a8 | |||
| e1fa11c94c | |||
| c06c65acf1 | |||
| a84fa0bc8f | |||
| 054648e02b | |||
| 9548041334 | |||
| da306f2900 | |||
| 26587aea02 | |||
| adc86e0f00 | |||
| a9ed5f075e | |||
| 21e30c980e | |||
| a657b2e55a | |||
| ff8c55b8b6 | |||
| eb36c5bca0 | |||
| 89173ce1ee | |||
| 5d115ba3e3 | |||
| 7e3adeb9c9 | |||
| 080cda86fa | |||
| 6274cbad52 | |||
| 85c4ad821d | |||
| b758a2fea8 | |||
| 6619cc7ca4 | |||
| 961f7a8a62 | |||
| 905287901f | |||
| 669be7bf57 | |||
| 9b8eb2dc4c | |||
| 00ab7b196d | |||
| f616be4bdd | |||
| 8ae9ce8523 | |||
| 6d2bbbd7e2 | |||
| 1453be83b2 | |||
| 8659131be2 | |||
| 0276ce322d | |||
| b36c99a34b | |||
| ad575f1485 | |||
| a9162f1472 | |||
| 221e2554a9 | |||
| 04ec6c3695 | |||
| b1594980fc | |||
| 024a8ef38d | |||
| b281051421 | |||
| aa1b275b51 | |||
| c22ca68857 | |||
| 3804ce3fe3 | |||
| 0977f1db04 | |||
| 83c97934c9 | |||
| 44c9d74caa | |||
| 172f56754a | |||
| dc184cc713 | |||
| 2c30088553 | |||
| 6f0c189afb | |||
| 0e2996c3e1 | |||
| ce8040dd1f | |||
| a8fd2d463d | |||
| 237813127c | |||
| 3e6259532f | |||
| c015441130 | |||
| 9661455fee | |||
| df983b4123 | |||
| 068d5429eb | |||
| 6c593fe849 | |||
| 6a7bdb2ec7 | |||
| a4aead18dd | |||
| d277154d9f | |||
| d2662fb026 | |||
| 2f522ea705 | |||
| cd68041312 | |||
| 9c2556f16d | |||
| b80b938d3d | |||
| 0bd6278050 | |||
| b2746f28db | |||
| cfd3698b53 | |||
| 6b5150d30e | |||
| b011adf94e | |||
| d09b725710 | |||
| 2f1e3524df | |||
| 2de47cfa51 | |||
| 15a778075d | |||
| 2502191982 | |||
| 47af91d136 | |||
| e249fe3a17 | |||
| 72838a07f3 | |||
| c098acc659 | |||
| 15ee32b5bd | |||
| 5a059d9b09 | |||
| 77516dbdff | |||
| 835af9ad6a | |||
| 4c30db06c0 | |||
| 3aee12073e | |||
| 654fd78ee7 | |||
| b8126d3a85 | |||
| 3054091688 | |||
| 6e0fd7ea5f | |||
| bbb82029d2 | |||
| 716d7bcc92 | |||
| e7a6bf0e19 | |||
| 27c17252e7 | |||
| 940254bec6 | |||
| 79952d52f1 | |||
| e58545d3f6 | |||
| b7c9643a05 | |||
| c2be6c348a | |||
| 0161f81389 | |||
| 2a2df322dc | |||
| b276b5fdce | |||
| b5f7dabf10 | |||
| 307f8a07e0 | |||
| 3fe5e2becd | |||
| e8a4acf517 | |||
| 9ba28c01e7 | |||
| ff3b04f46d | |||
| 9f6f452b18 | |||
| 9b4e35841e | |||
| 927e260f5b | |||
| 949156f77c | |||
| cc59fcac58 | |||
| db624d8a8a | |||
| ae90243352 | |||
| ff58c7f699 | |||
| bd9738f6f4 | |||
| 47e5c63290 | |||
| 2abdcac15c | |||
| f0f12e4099 | |||
| b1720317a4 | |||
| d90f466b53 | |||
| fec84a5efc | |||
| 1f3f869983 | |||
| a6bd6f44bf | |||
| 78aac61fe1 | |||
| 8d735f0410 | |||
| de014732c6 | |||
| aae6511394 | |||
| d973439b4f | |||
| 32adce2de8 | |||
| 2ac6378fea | |||
| 153b7df5fc | |||
| 9d9bdabf79 | |||
| 2f8eaeacf0 | |||
| dc07a3cf32 | |||
| b775e60d1b | |||
| 7290bccfd7 | |||
| a1d884ec3f | |||
| cc05d88618 | |||
| 2675fa53df | |||
| 59ee9198e2 | |||
| 5235936e7b | |||
| 03ab44ea10 | |||
| b8c2d2b39b | |||
| 6ae7e71fbf | |||
| c49740ed81 | |||
| 16c0a819a9 | |||
| 4a61fe73de | |||
| a76feebe45 | |||
| 3a52eadeb1 | |||
| dd56b7c385 | |||
| f6f201085c | |||
| daf09d9d4e | |||
| 511cdb2784 | |||
| a567a9b777 | |||
| 05bc3af03d | |||
| 7a048d1702 | |||
| 8d7f9bcb8b | |||
| 9fd8b0f890 | |||
| 86873d0725 | |||
| b22438b489 | |||
| 683b38a7ab | |||
| d6b4fdd6d3 | |||
| c996649954 | |||
| d59ad77893 | |||
| e637c20dee | |||
| 19dc588319 | |||
| dc53ef2e71 | |||
| e51d7f3c6d | |||
| 5a7e86e443 | |||
| 7f4edae006 | |||
| 2f4e1462e3 | |||
| 54f5d81a8c | |||
| d33c27289a | |||
| 1675fdb499 | |||
| 9321109691 | |||
| e6a4f939a3 | |||
| c7ae214853 | |||
| 68a9cc047e | |||
| 1f2b25f852 | |||
| 20040c8857 | |||
| ac64b0c11f | |||
| ba47ce7ca8 | |||
| be1ab4ea36 | |||
| 13cd9f3d04 | |||
| 8e1f82de5f | |||
| 8631ad3122 | |||
| 90e6aef9d7 | |||
| 698190fb72 | |||
| 27cfaa9404 | |||
| 9f296fe76d | |||
| d0112adb08 | |||
| 75f4fe3595 | |||
| 211bfbc1e2 | |||
| afaa1841fc | |||
| 027662c9c3 | |||
| 43e652321b | |||
| 83a2216d19 | |||
| 82ae568add | |||
| 2573003034 | |||
| c33e873577 | |||
| a1d03b8159 | |||
| 762530f6ab | |||
| f53a3ecc69 | |||
| 1ed60fecee | |||
| c1a12ea4e9 | |||
| 0efd235e36 | |||
| c7be8c59f3 | |||
| 20bb3eb674 | |||
| cde0e5883e | |||
| 0b43099621 | |||
| 386f36c3ae | |||
| b391b2129e | |||
| 5478673bda | |||
| 6295048b3e | |||
| 4fa956aa27 | |||
| 21cce0e104 | |||
| b14e72ddf7 | |||
| 7a34b6e18d | |||
| ddc0e8eb45 | |||
| 7648ee6e54 | |||
| 2b86c912e3 | |||
| 342acedbec | |||
| a83bf495b1 | |||
| 899829f1ac | |||
| 408a62115e | |||
| 430d0990aa | |||
| 47d33e7aaf | |||
| 12f40cba6d | |||
| ecc0e9609a | |||
| eb35a843c1 | |||
| 79289fe6c4 | |||
| cb841adf86 | |||
| 724d82e6d2 | |||
| 0532910604 | |||
| f4f5552975 | |||
| 3e2794548b | |||
| f7b8ee168f | |||
| e3297fe751 | |||
| 58ca741a1c | |||
| 14dbbc7bb4 | |||
| df55c4032b | |||
| 3768155a20 | |||
| 2f3b9cadf4 | |||
| 2c79a6531a | |||
| be5c856f4b | |||
| 712a333f08 | |||
| b753e84c8c | |||
| 4b4acaadbb | |||
| 8a52f9b67d | |||
| e372606281 | |||
| c443d0a9da | |||
| 42c9ae9ea8 | |||
| dac9bb4187 | |||
| 812d926f66 | |||
| 45831ea69f | |||
| 354e1d236b | |||
| ac478039cf | |||
| 96f5799e6f | |||
| e21479f696 | |||
| 25dc883e15 | |||
| bfb1374ee3 | |||
| cacd8f9792 | |||
| 3e9053a3c6 | |||
| 5fa357fec2 | |||
| f109c3d696 | |||
| b097ce7279 | |||
| 1297854935 | |||
| 0a1d0011f6 | |||
| 20db1be0a0 | |||
| 143f1d6144 | |||
| 358f6c9497 | |||
| ca26544be8 | |||
| 5ceffddd5b | |||
| 8e3ddb96b3 | |||
| 377de36b35 | |||
| 4395e2f7ed | |||
| 1d0cc31b10 | |||
| 4b4b2ddcd4 | |||
| 3c9b5b786e | |||
| 08f1bea6ce | |||
| a2cc5943e0 | |||
| 895ac6f0f7 | |||
| 759ca0253e | |||
| 0ca368c8d9 | |||
| a467cc1b84 | |||
| c65fd826a5 | |||
| bd6f4e1b43 | |||
| 169520914f | |||
| a163a0c446 | |||
| 295aeb0ed8 | |||
| 9b2fdad56c | |||
| 7a1184d3c5 | |||
| b036244316 | |||
| 5ad5366e8a | |||
| 244677e524 | |||
| f5a094a973 | |||
| 5681ebdb12 | |||
| 664fa5f08f | |||
| 14edec5eae | |||
| 6adfd2e739 | |||
| 34409f7a7d | |||
| 7e13d1052c | |||
| eb1998c888 | |||
| 543252cbaf | |||
| 6df7c59876 | |||
| f780e0afc3 | |||
| 310e8d3287 | |||
| ba51bdf258 | |||
| ef88b844fb | |||
| 67b96b0a26 | |||
| 562da30fb5 | |||
| 21175e8cf6 | |||
| 80d01f7158 | |||
| 90cac447e4 | |||
| 04bf5b0a8b | |||
| d667c15b25 | |||
| 2123bf4b18 | |||
| 429a64f29e | |||
| f39381dd6c | |||
| 0a9eb07f6f | |||
| 9c287e3fd7 | |||
| cce4b2cb14 | |||
| e49d9f8ab6 | |||
| 48cbeb28f4 | |||
| 57d5c54559 | |||
| 3b2260f67e | |||
| d423a62327 | |||
| ac8da00030 | |||
| 77eb7fb99d | |||
| a751149dd3 | |||
| 69d45618c6 | |||
| 22fa1a28e5 | |||
| f4cc233009 | |||
| 1d6e4edd0f | |||
| daffa8cba0 | |||
| 2e161a1bc1 | |||
| 204bb00060 | |||
| d6029a54aa | |||
| f99b5c5a66 | |||
| 2df4119c1a | |||
| d06b4e5dcd | |||
| bf8a25137d | |||
| 0f302ad0fc | |||
| e3d6b283c5 | |||
| 2e3ed09039 | |||
| 37971a3f07 | |||
| 2a1960f257 | |||
| 350564c304 | |||
| 9e2a9fea37 | |||
| 3592b43629 | |||
| becf1fc459 | |||
| 2bccd058ed | |||
| 12c6621051 | |||
| 504bc6a875 | |||
| 9cfdd0b53f | |||
| d59024f399 | |||
| 24e0178d1a | |||
| 1ede5775f2 | |||
| a5c9b07052 | |||
| 22353d4833 | |||
| 7499ada891 | |||
| 3f0a4e5c39 | |||
| b8d6472974 | |||
| 6358297724 | |||
| 4f6dcde980 | |||
| 8a7985c48e | |||
| 4ddbe54e55 | |||
| ef0bf73a29 | |||
| beda9014d8 | |||
| 498a429b2c | |||
| 6aa2aa0fb3 | |||
| 1bef88fccd | |||
| 8308068067 | |||
| 8385c7f1b0 | |||
| 0537d02fef | |||
| c33a1a3b0b | |||
| fd39999128 | |||
| 0aa40094fa | |||
| e3bbbe07be | |||
| 5633798d33 | |||
| 0e7e1b1b75 | |||
| 4d3790bc1a | |||
| 2002c7f1f8 | |||
| 1be14e99a2 | |||
| 78efdaf85f | |||
| 0e98a1c656 | |||
| 7aa483e201 | |||
| a6dbf05af4 | |||
| 8ab78fd8be | |||
| 4f119031a4 | |||
| 19bdd6c2db | |||
| f1557b8243 | |||
| 85f96e2e01 | |||
| 47331cd919 | |||
| d9f18ed6a7 | |||
| efa4816371 | |||
| 2dc8c63adb | |||
| c3c1781021 | |||
| cd39480a98 | |||
| 281a1a206e | |||
| cbff2a7bf2 | |||
| 2a08be8fd0 | |||
| 0826678209 | |||
| f2e421bfa5 | |||
| ce53a9b91a | |||
| b166b1cf82 | |||
| d09fbb03b2 | |||
| 7a835f3b10 | |||
| 6b991cdf9c | |||
| 018e9d0323 | |||
| f499ae096f | |||
| 725e046a15 | |||
| 275b1f62b6 | |||
| 6e58dea198 | |||
| ad4e62c8c3 | |||
| a5768d55d8 | |||
| 7db49971c8 | |||
| 45ca6631ac | |||
| d51944f36c | |||
| 037c79fb0f | |||
| 993373414f | |||
| 38a0a9992a | |||
| a82bbe3776 | |||
| a32ba217ba | |||
| d322cf54ac | |||
| b1d07a231d | |||
| 97851a08e6 | |||
| 8547b30a8f | |||
| 405c7d9ed0 | |||
| ac5b641d93 | |||
| 06a79989c0 | |||
| 671db64436 | |||
| 33344cefe6 | |||
| 5ef0341537 | |||
| 6abca08189 | |||
| 35670ce651 | |||
| e230d53d84 | |||
| 88537a3471 | |||
| 7c9d74da73 | |||
| 3b582935ee | |||
| 508fafb875 | |||
| 6f718f0fe5 | |||
| 53acbf2052 | |||
| 1606dbbe77 | |||
| adced3ac6c | |||
| 14f207140a | |||
| d2da32de6c | |||
| e5d6a36f05 | |||
| 68ecfcf876 | |||
| fcb14b9dfe | |||
| 6a4b4257a6 | |||
| 385b57e269 | |||
| a8e81e3984 | |||
| 46c5f0e752 | |||
| 454d859fdd | |||
| 57134a182c | |||
| 5801e143ea | |||
| 4e0d0ff98b | |||
| d4ac1849ae | |||
| c16ac1bd8c | |||
| 16222ac3bc | |||
| 8d88931fb1 | |||
| 63f0356e70 | |||
| 786b0dee6f | |||
| e7ef9dc295 | |||
| f59461b95d | |||
| 566a86b9fd | |||
| 8589a3730d | |||
| c05fd366df | |||
| fc9fd1e53c | |||
| a5e6eb9f7c | |||
| a9430fea5f | |||
| 828a0d6589 | |||
| 32601da748 | |||
| ac50f119cf | |||
| 7622ebaa0a | |||
| a586d5cd37 | |||
| edbc88bd19 | |||
| 94f99f3414 | |||
| fd4f84349e | |||
| f86350b2ff | |||
| 564b72066a | |||
| 2890c52090 | |||
| c1d45485c1 | |||
| 8b2a69cf8d | |||
| 034c1341b3 | |||
| 29bbf1a030 | |||
| be6661d6be | |||
| 3f876e792c | |||
| f2457b90ff | |||
| e999e9009b | |||
| 46326c001b | |||
| b84c2c403c | |||
| 861ad72187 | |||
| 7dbbc34ccc | |||
| 4ea45d1d14 | |||
| c1b9243e2f | |||
| a41c40c7a4 | |||
| 318d4547ef | |||
| 6f98b60a6a | |||
| baa8f7f3c4 | |||
| 6297622072 | |||
| 9f3ba0bf2b | |||
| 9591dec708 | |||
| ee2d0b7518 | |||
| 2d46749c58 | |||
| 494664d1b6 | |||
| 49686210ae | |||
| ddfa44188b | |||
| 73cf93d27b | |||
| 60d1a34bf0 | |||
| 6f80986801 | |||
| 2078f087b2 | |||
| 68d110826e | |||
| 9fb04c54ae | |||
| d82314594b | |||
| ad169a5248 | |||
| a9bab81226 | |||
| fa63a9ba51 | |||
| 1e7a630737 | |||
| de1afce8da | |||
| ac3cb19c26 | |||
| af0479d11d | |||
| 0d9c04707f | |||
| c2218f133b | |||
| 1ad0645fab | |||
| 3c16f6839a | |||
| e8bac1e469 | |||
| b3b69596f4 | |||
| 6a7bcb0956 | |||
| f18a0704c1 | |||
| d6f24b7c1e | |||
| e2c9bbf94c | |||
| f53aa4f656 | |||
| a7ab9b8bf8 | |||
| 4448271166 | |||
| 4861b535a2 | |||
| 167f0100c7 | |||
| b0367c7a5c | |||
| 4ae8ad52f5 | |||
| dbd64828ab | |||
| 158ca882ba | |||
| 623ed44608 | |||
| f13b867626 | |||
| ff85325886 | |||
| aa830116ea | |||
| 1a4504ba28 | |||
| 20365c4627 | |||
| fae8f89ed6 | |||
| a0689999fe | |||
| a42a0ab032 | |||
| b66eb5d3ec | |||
| 8b4bc0f56e | |||
| c9d984983f | |||
| 47125b051a | |||
| e5e6ff6031 | |||
| 9f0aedb608 | |||
| 08af33ece5 | |||
| 9b421d0b94 | |||
| 7bd8d2dd25 | |||
| a7c4879a0a | |||
| 8b3585a6b8 | |||
| a223149aee | |||
| 9185341b0c | |||
| bf2d707e13 | |||
| f081e5c54d | |||
| 18a3db0f31 | |||
| d2c115127d | |||
| c12e7e1b8f | |||
| d3495ab3aa | |||
| b93a7a6195 | |||
| e5519a8498 | |||
| eb2256f873 | |||
| 637b137b1c | |||
| e2d14e73bf | |||
| fbbffb4672 | |||
| 422e098727 | |||
| 87347e30b2 | |||
| 3314ce9823 | |||
| 402c1fe614 | |||
| 1d57856aa8 | |||
| c027c215d6 | |||
| fa0428b9fe | |||
| b01c499ce5 | |||
| 4e5033dd24 | |||
| 00863f3830 | |||
| 2d4b35e8b9 | |||
| 6e4f2b9466 | |||
| 9a6fc0253b | |||
| 3180c781ed | |||
| 632152e8b6 | |||
| 1048f7e98d | |||
| 3de265216e | |||
| 2bdcadc7ab | |||
| 421ddfc68e | |||
| 41594bc1ac | |||
| e85199d464 | |||
| a6ee3bc704 | |||
| 2909106f30 | |||
| 05b97aabb2 | |||
| 84af60d817 | |||
| 72403a2512 | |||
| 4ec619d646 | |||
| 6178a627a0 | |||
| 3095fd7e4a | |||
| 74a6041760 | |||
| 96127e37ff | |||
| df5484ea35 | |||
| 0ae3dae030 | |||
| e5979139ac | |||
| f81f6deb20 | |||
| f9951909d8 | |||
| bbda972b05 | |||
| 4445e9c434 | |||
| 709adacac2 | |||
| 9841cdd355 | |||
| 4cabe5fd71 | |||
| 0db239f8a0 | |||
| 32fb1706c8 | |||
| c9e6cd9796 | |||
| 81677528a5 | |||
| 7761baba10 | |||
| 52d252723f | |||
| d476709b59 | |||
| 0910e3da74 | |||
| 2cc7b7c817 | |||
| 011a95ebbd | |||
| bbdc086a1f | |||
| 7d6617d21e | |||
| f684baeeb9 | |||
| 308104853b | |||
| 6953bcac35 | |||
| 69e9fa4721 | |||
| 72d154c5e0 | |||
| 84b0a96170 | |||
| 6d3b8f7a09 | |||
| 81749ac1c9 | |||
| 65989c29b7 | |||
| ec4e58f25c | |||
| 0c699c2a19 | |||
| 739a938d32 | |||
| 61ad405b4a | |||
| 700e649e76 | |||
| 7bfdb1f0eb | |||
| 0c0280b2a9 | |||
| 57a1871077 | |||
| ee972ad29f | |||
| 29c8475ea9 | |||
| 6dd0f6ed63 | |||
| fc2d7ae446 | |||
| d232ac0334 | |||
| 6e8dd68c8a | |||
| 495cc1b38d | |||
| d90e74b1a3 | |||
| bbd8a4b729 | |||
| cae3e18717 | |||
| 0e989a7422 | |||
| 7b7ce5bb57 | |||
| df95cdaad0 | |||
| 3026b6e5c2 | |||
| b3306c5572 | |||
| 9ef3be33e5 | |||
| 292262c128 | |||
| e54bfe9197 | |||
| c56cfe9e1d | |||
| f6b6a3285c | |||
| 6b031b0fdf | |||
| 2dab7025ba | |||
| 7403114897 | |||
| 82cbeec560 | |||
| df6b4ac566 | |||
| 4ba21ab526 | |||
| acac7a7b31 | |||
| 2290fd09f5 | |||
| f02b6a1773 | |||
| efffe05d42 | |||
| 950d67c522 | |||
| a1aa61f54e | |||
| 3c2bd66460 | |||
| 245cebee56 | |||
| c45364fdb3 | |||
| e380308604 | |||
| bd019524dd | |||
| 895536d7d3 | |||
| 3a0e41afd1 | |||
| 23dd28471e | |||
| 761217d403 | |||
| 77ed694111 | |||
| 61bcce3104 | |||
| bf41b12ccd | |||
| 5eabd7d8d8 | |||
| 0c66f5f3af | |||
| 3190f784d9 | |||
| 394ff55879 | |||
| 9b846835bc | |||
| 01776af167 | |||
| 0db10424ad | |||
| bafd7ea073 | |||
| 0ab27fcb4b | |||
| 95d016712e | |||
| fcb55001bb | |||
| 7bc6961101 | |||
| 450e88fad8 | |||
| 3222b4c311 | |||
| 1e0cc3605d | |||
| 129b7bfeb7 | |||
| 388811b684 | |||
| f83257407b | |||
| e4ced77340 | |||
| 92e0bc316a | |||
| a4a55f35b2 | |||
| ed1150c189 | |||
| 08080f4e86 | |||
| de4ebb8be6 | |||
| 11e2ce5093 | |||
| 2c560e6f2b | |||
| 643f394e6a | |||
| 6d047c2856 | |||
| be86746685 | |||
| da429b9629 | |||
| b21a206c26 | |||
| 85bde8ba3a | |||
| f84e658e6b | |||
| 8f0eba8bcd | |||
| 2faaaf78a8 | |||
| 7f659dace2 | |||
| 54cdd566c7 | |||
| e212df87f9 | |||
| 4fb4db15e8 | |||
| 9a15a25a7b | |||
| c02cfb9b17 | |||
| 3e726f21f7 | |||
| 21d4faa26f | |||
| 1d13d0ee07 | |||
| 329d13e480 | |||
| 2161c09b1d | |||
| 3f2e396c3c | |||
| 412e242109 | |||
| e827516b72 | |||
| 7f953e98d7 | |||
| 821d3fe783 | |||
| fdb4b302ac | |||
| 760d5d4a09 | |||
| d561f98c42 | |||
| ea74f276dc | |||
| 42cf82a5d5 | |||
| 825a6700da | |||
| 2f27645dac | |||
| 1e5b44d063 | |||
| 099ad9945d | |||
| 540ce3d946 | |||
| ac2efcc993 | |||
| b4bb1d9e37 | |||
| 9ec8b30934 | |||
| fb38e5b35b | |||
| 5fa10e9d84 | |||
| 3bc1b5bd46 | |||
| b266b399ba | |||
| 0e827a457d | |||
| d05d85b243 | |||
| a1faa8d804 | |||
| 70adbf90c2 | |||
| 501c04f4b6 | |||
| d294e62be1 | |||
| 31f90b6c53 | |||
| 184d29c592 | |||
| 2d798bc4ec | |||
| bd9a3761a6 | |||
| b1063b0a9e | |||
| cb2fffab92 | |||
| 55cca49428 | |||
| 5a0ab9ed8a | |||
| 1f2cfdfd84 | |||
| dfd688caa6 | |||
| 830e3e339c | |||
| bc9f560950 | |||
| f91b748f50 | |||
| 3adbd7468c | |||
| b66039ee24 | |||
| 27371f6475 | |||
| 19e7c34b47 | |||
| 3375aff3a7 | |||
| 41e9cb5ca3 | |||
| 6348860adf | |||
| 4e9d401002 | |||
| 3db2fc7d0f | |||
| 0101d76113 | |||
| 6fabab6d4b | |||
| 905f1b0aaf | |||
| 6a5ab8e70c | |||
| 943b037589 | |||
| 5624cd44de | |||
| 8529f8b843 | |||
| 08be7c43cf | |||
| aae76207ec | |||
| 5434f8330e | |||
| e18b4ed119 | |||
| 51f6ffc093 | |||
| 72de7c6b14 | |||
| bd4785d631 | |||
| cb08f12470 | |||
| 04146db69b | |||
| d3fe045a39 | |||
| 2be1e16087 | |||
| 051e44ae3e | |||
| 6d5ae7a258 | |||
| 2e69e140eb | |||
| 516c4e2c39 | |||
| b58ed62000 | |||
| c685818783 | |||
| 3e20ce56c9 | |||
| dd8d67f659 | |||
| 5ef4061819 | |||
| a146a0c819 | |||
| 0f5a93cdf1 | |||
| 7db51e913e | |||
| 93ac1aebf7 | |||
| 56ebedb9de | |||
| e87d33de50 | |||
| a5774fd793 | |||
| adb60f3400 | |||
| 47a0f63caa | |||
| 30a385a7bb | |||
| 9f2ae1773c | |||
| f470297958 | |||
| 93dfc7995c | |||
| c96869817f | |||
| 1bffa0e00b | |||
| 36035dda01 | |||
| 50a15cf089 | |||
| b59d4ed4a4 | |||
| 4c53710279 | |||
| 2274e88485 | |||
| 984a4677f2 | |||
| 5e3dc54725 | |||
| 53a7bf9773 | |||
| 1dcc3897d6 | |||
| fbc0375739 | |||
| 4a74c03fa4 | |||
| d8833e6ce2 | |||
| 2b8b9a56aa | |||
| 85a8ebb357 | |||
| a67d9e2524 | |||
| 6845e72fd5 | |||
| 0ab977fa05 | |||
| ad64a12b2a | |||
| cfde4b50bb | |||
| f302c8eb95 | |||
| 7ecc355358 | |||
| a52216d7e7 | |||
| 8d8d4b667d | |||
| 670369121e | |||
| 4365e580ee | |||
| a8a09a905e | |||
| dbb7381eb1 | |||
| aa3531a6bf | |||
| 2848203d75 | |||
| f0aef0703c | |||
| 7356a511e0 | |||
| 5be26a3cff | |||
| 36a80acb0c | |||
| 37ab03b49d | |||
| 75209cb40e | |||
| 4b2d274748 | |||
| 1423495b88 | |||
| 42e4ec8890 | |||
| 58fbd51ef4 | |||
| 7552dbb812 | |||
| 31e0ecb71d | |||
| f6743a4f87 | |||
| 5f574949e6 | |||
| 724bce4fb9 | |||
| 8d59f025af | |||
| aad44f4716 | |||
| 0a38d7d213 | |||
| 4fcd60fd95 | |||
| 38beeb8cb0 | |||
| 26f0acab35 | |||
| 3897973bc1 | |||
| 7b3da27461 | |||
| a85ee5f31c | |||
| b272863aa0 | |||
| 8249964380 | |||
| af81bbb299 | |||
| d818dd9c80 | |||
| fe8e34dece | |||
| ba928989f7 | |||
| 742f973028 | |||
| 043932fcbe | |||
| ad5e096caa | |||
| 06c8fc8f78 | |||
| 487338d10c | |||
| 3d1c0e5667 | |||
| ce3bb191c4 | |||
| 03e9dbf364 | |||
| 518aab3d02 | |||
| f055664f77 | |||
| ba3e01f2ce | |||
| b6883c8a45 | |||
| 9e49ee3acb | |||
| 7481f68bb2 | |||
| 99792eec03 | |||
| 91458c7845 | |||
| cad5849dc0 | |||
| a38e120e99 | |||
| 0b31a78cf2 | |||
| 861858c1a6 | |||
| d43a2277da | |||
| f678dc96b8 | |||
| c2e371904e | |||
| 2a1cbff22e | |||
| a2d9f277c4 | |||
| d939059417 | |||
| 740cd4cfed | |||
| 91a5306a67 | |||
| b78ffcbffd | |||
| 4f72f557b7 | |||
| e3b21d6d0d | |||
| af28c49d8d | |||
| 67f4635573 | |||
| 5f8d10908d | |||
| 7307421812 | |||
| 5cd3b628c5 | |||
| 29e483ab64 | |||
| 66ddba45af | |||
| 9325b3f035 | |||
| 522c4c94e1 | |||
| 730505cff3 | |||
| 019783e1fa | |||
| 8612bb6480 | |||
| 7f1e6d21d9 | |||
| e6c0371be1 | |||
| 58feaa7e0c | |||
| a828378466 | |||
| 53316e8b06 | |||
| 6127e390a1 | |||
| 4caa77f6b1 | |||
| 70419e8757 | |||
| 21d8bd1406 | |||
| 25abee3259 | |||
| 2d490c2b7a | |||
| 902b7895b7 | |||
| 1c80bb649f | |||
| 4508215617 | |||
| 739b68347a | |||
| d834760cda | |||
| 1bc78650bf | |||
| ec4e203099 | |||
| d23528da82 | |||
| 7401a0ba23 | |||
| b14b4f08b1 | |||
| 70ece81340 | |||
| 19ac350527 | |||
| a9b08d7db8 | |||
| df8fa05632 | |||
| 6556137aad | |||
| aa1ab2bbb4 | |||
| be38d86521 | |||
| 3931afb6b1 | |||
| 7d2df86b75 | |||
| 5a3bd5839b | |||
| b91ce9a3f7 | |||
| ac889dd329 | |||
| 420df9b6ed | |||
| f862b6811d | |||
| c072698927 | |||
| d22895831b | |||
| 3c41f4ade4 | |||
| 335d5fb984 | |||
| 66bd2b8fac | |||
| fed3cad3b8 | |||
| b20578f24f | |||
| 7a86e7f777 | |||
| 16c93fcad6 | |||
| edd66d8d89 | |||
| 3ba39b6efe | |||
| c656a1a169 | |||
| 19f03e419a | |||
| 5a281d5999 | |||
| d80d14f585 | |||
| 520b8511bd | |||
| 91627d4f22 | |||
| a21147c7a5 | |||
| d22c1dee49 | |||
| 95b0fc7480 | |||
| b40d5d7984 | |||
| 2df93c9df3 | |||
| 51cdea4b17 | |||
| f229e64744 | |||
| 0f15955a41 | |||
| 390e6c2eed | |||
| 877eaccd6d | |||
| 6424e655a1 | |||
| 176037082b | |||
| a361c7e426 | |||
| caba0c1695 | |||
| 71b3f9fefc | |||
| 91f8507e51 | |||
| b68e81a126 | |||
| 72658025f1 | |||
| 93aea240d6 | |||
| 7717b37c36 | |||
| e1b2990fb0 | |||
| e49194c6ee | |||
| 79ab150546 | |||
| fc658d15d4 | |||
| 76d130ef82 | |||
| 3e9a55fbdb | |||
| b071397d46 | |||
| df0dd55635 | |||
| 960d08fd24 | |||
| 38603916a2 | |||
| 0ed1bb4017 | |||
| b4ac0c9f6c | |||
| b136af88ad | |||
| 508b5f9aae | |||
| 43dff67a60 | |||
| 41b850321f | |||
| 523237007b | |||
| a3f6c5fd9c | |||
| 785cdc8726 | |||
| cbf12b5601 | |||
| 1a6d59d9c0 | |||
| 23ae054abb | |||
| b57852d3d8 | |||
| c0e1be2f3a | |||
| a442a15a8d | |||
| f91bf634ad | |||
| ce4311c3df | |||
| 08e69cb541 | |||
| f8e2eaed73 | |||
| e68a16e73d | |||
| ca191fbd92 | |||
| 10276826c0 | |||
| 02c9129903 | |||
| 04e4c902bd | |||
| 0663ae77de | |||
| 0c0f5ea093 | |||
| f450fd633e | |||
| 59cdd35f61 | |||
| eab67cbda4 | |||
| b3c4a48641 | |||
| 07ac8ed341 | |||
| e32aa218fc | |||
| 09d11d36c3 | |||
| 629e287526 | |||
| e2cd29c824 | |||
| 69e597dbe7 | |||
| 152e7ebac9 | |||
| 8d4451ed85 | |||
| 5b8836d4b8 | |||
| be7086579e | |||
| ab16c8f1fe | |||
| 6bb71ee5e3 | |||
| ebb4ebea97 | |||
| bf97e62d56 | |||
| 47645cddb6 | |||
| cf2af56a05 | |||
| 50d1ae42c9 | |||
| 9501498a7e | |||
| 614ab08099 | |||
| 64ee338433 | |||
| 43556238d0 | |||
| 58d7ac0520 | |||
| 0754678ce7 | |||
| 2bea176816 | |||
| fa90333219 | |||
| e007b3bc0f | |||
| 978e83567b | |||
| d01c1190cd | |||
| 0b1855df9b | |||
| 951f2785cc | |||
| 30090d3f8d | |||
| b6ad67891c | |||
| b61c9db6e6 | |||
| 29368ec2ee | |||
| 88ff86c910 | |||
| 0cc5ae521c | |||
| da1b5ed9a0 | |||
| f786d05c04 | |||
| 0bcbe9047e | |||
| 585346f753 | |||
| 324aa01f80 | |||
| 8d0adfa6b7 | |||
| bffae3724c | |||
| a60dc3d1c8 | |||
| df9977d4da | |||
| c31678d28e | |||
| 40c1a5a3ee | |||
| 846dbd9338 | |||
| 2bfed13ebc | |||
| 2a5c625a7f | |||
| 7660e4a5f1 | |||
| 779672a5b5 | |||
| 46e9ac86bc | |||
| 8d6ca79934 | |||
| 2212d1eebe | |||
| c78c284f19 | |||
| b6b30637c6 | |||
| b17198697c | |||
| 3ec57a608d | |||
| 49cd14846c | |||
| 1fd794a5bc | |||
| 5848991c27 | |||
| d71f92d034 | |||
| f9719ae7f5 | |||
| 4e0be6645a | |||
| da25a18610 | |||
| 7bc3aa52d4 | |||
| ca5bb13096 | |||
| da124475fa | |||
| ff04b2e481 | |||
| 09d66135b2 | |||
| 65cb72f7e8 | |||
| 8ae1f93899 | |||
| 0017f81da5 | |||
| 8c782c5b4e | |||
| ffd283d779 | |||
| b9227e11df | |||
| 5a289add73 | |||
| 614254a40d | |||
| e31981c4c8 | |||
| eb67e7757b | |||
| ececf4a76e | |||
| 0a437420d8 | |||
| b6ddc22c80 | |||
| 83d88affb7 | |||
| 5ae835db6c | |||
| 47e16f5525 | |||
| a6a3dffbd6 |
@@ -0,0 +1,5 @@
|
|||||||
|
.gitignore export-ignore
|
||||||
|
.gitattributes export-ignore
|
||||||
|
remind.php export-ignore
|
||||||
|
sync-to-dianne-git export-ignore
|
||||||
|
php export-ignore
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
liberapay: dskoll
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Remind has moved
|
||||||
|
|
||||||
|
For various reasons, I have decided to move Remind off GitHub. This repo
|
||||||
|
will be archived. To create merge requests or issues, please visit
|
||||||
|
Remind's new home at https://salsa.debian.org/dskoll/remind
|
||||||
|
|
||||||
|
-- Dianne Skoll
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# language: bash
|
||||||
|
---
|
||||||
|
|
||||||
|
name: Remind unit tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Remind
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Add test user
|
||||||
|
run: |
|
||||||
|
sudo adduser --home /home/testuser --gecos 'Test User' --disabled-password testuser
|
||||||
|
- name: Fix ownership
|
||||||
|
run: |
|
||||||
|
sudo chown -R testuser .
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
sudo su -c './configure && make' testuser
|
||||||
|
- name: Run Tests
|
||||||
|
run: |
|
||||||
|
sudo su -c 'make test' testuser
|
||||||
|
- name: Fix up permissions so GitHub does not complain
|
||||||
|
run: |
|
||||||
|
sudo chmod -R a+rwX .
|
||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
*.bak
|
||||||
|
*.o
|
||||||
|
*~
|
||||||
|
.gitignore
|
||||||
|
MYMETA.json
|
||||||
|
MYMETA.yml
|
||||||
|
Makefile
|
||||||
|
TAGS
|
||||||
|
autom4te.cache
|
||||||
|
blib/
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
man/rem.1
|
||||||
|
man/rem2ps.1
|
||||||
|
man/remind.1
|
||||||
|
man/tkremind.1
|
||||||
|
pm_to_blib
|
||||||
|
rem2html/Makefile
|
||||||
|
rem2html/rem2html
|
||||||
|
rem2html/rem2html.1
|
||||||
|
rem2pdf/Makefile.PL
|
||||||
|
rem2pdf/Makefile.old
|
||||||
|
rem2pdf/Makefile.top
|
||||||
|
rem2pdf/bin/rem2pdf
|
||||||
|
scripts/tkremind
|
||||||
|
set-irc-topic
|
||||||
|
src/*.tar.gz*
|
||||||
|
src/Makefile
|
||||||
|
src/config.h
|
||||||
|
src/rem2ps
|
||||||
|
src/remind
|
||||||
|
src/test-*.out
|
||||||
|
src/version.h
|
||||||
|
tests/test.out
|
||||||
|
www/Makefile
|
||||||
|
gmon.out
|
||||||
|
tests/once.timestamp
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
workflow:
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH =~ /wip/
|
||||||
|
when: never
|
||||||
|
|
||||||
|
tests:
|
||||||
|
image: 'debian:stable-slim'
|
||||||
|
before_script:
|
||||||
|
- apt update && apt-get -y install gcc make
|
||||||
|
- useradd --create-home testuser
|
||||||
|
- chown -R testuser .
|
||||||
|
- chmod -R go-w .
|
||||||
|
script:
|
||||||
|
- LANG=C.UTF-8 su testuser -c './configure && make all && make test'
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
paths:
|
||||||
|
- tests/test.out
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
$Id: ACKNOWLEDGEMENTS,v 1.2 2000-02-18 03:45:11 dfs Exp $
|
|
||||||
|
|
||||||
I would like to thank the following people:
|
|
||||||
|
|
||||||
Bill Aten <netagw!bill@uunet.UU.NET> for providing remind-all.sh
|
|
||||||
|
|
||||||
Bradley D. Keister <keister@poincare.phys.cmu.edu>, Rhys Weatherly
|
|
||||||
rhys@batserver.cs.uq.OZ.AU> and Anthony Cheng for initially providing
|
|
||||||
the Turbo C compiler support.
|
|
||||||
|
|
||||||
Dennis Cottel <dennis@peanuts.nosc.mil> for providing the patch to
|
|
||||||
produce calendars by weeks as well as by months.
|
|
||||||
|
|
||||||
Bill Silvert <bill%biomel@cs.dal.ca> and Dennis Cottel
|
|
||||||
<dennis@peanuts.nosc.mil> for suggesting many of the new features in
|
|
||||||
REMIND.
|
|
||||||
|
|
||||||
Dave Wolfe <dwolfe@pffft.sps.mot.com> and Raphael Manfredi
|
|
||||||
<ram@eiffel.com> for noticing bugs and sending me fixes.
|
|
||||||
|
|
||||||
Dave Rickel and George M. Sipe for sample reminders and holidays.
|
|
||||||
|
|
||||||
Michael Salmon for ISO encoding of PostScript output.
|
|
||||||
|
|
||||||
Darrel Hankerson for helping me provide some OS/2 support. Sorry
|
|
||||||
it's not complete, Darrel!
|
|
||||||
|
|
||||||
Phillipp Slusallek for suggesting the -k option.
|
|
||||||
|
|
||||||
Amos Shapir, David W. Tamkin and Frank Yellin for help with the Hebrew
|
|
||||||
calendar.
|
|
||||||
|
|
||||||
All of the language translators whose names are listed in lang.h
|
|
||||||
|
|
||||||
Mark Harrison and Michael McLennan for the excellent book
|
|
||||||
"Effective Tcl/Tk Programming". This is where I stole the source
|
|
||||||
for Tcl/Tk tabbed notebooks, and is an excellent reference book.
|
|
||||||
Thanks also to Lucent Technologies and Addison Wesley Longman for
|
|
||||||
making it legal to steal the code.
|
|
||||||
|
|
||||||
All others who have corresponded with me to report bugs, express
|
|
||||||
appreciation or suggest features - too many people to list here.
|
|
||||||
|
|
||||||
Finally, all those who donated money to support the production of
|
|
||||||
REMIND. Your donations were gratefully appreciated.
|
|
||||||
|
|
||||||
--
|
|
||||||
David F. Skoll <dfs@roaringpenguin.com> <aa775@freenet.carleton.ca>
|
|
||||||
986 Eiffel Avenue
|
|
||||||
Ottawa, Ontario K2C 0J2
|
|
||||||
CANADA
|
|
||||||
|
|
||||||
Tel. (613) 225-8687
|
|
||||||
|
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
$Id: COPYRIGHT,v 1.13 2000-03-15 15:51:33 dfs Exp $
|
|
||||||
THE REMIND COPYRIGHT
|
THE REMIND COPYRIGHT
|
||||||
|
|
||||||
1. REMIND refers to the entire set of files and documentation in the
|
1. REMIND refers to the entire set of files and documentation in the
|
||||||
REMIND package.
|
REMIND package.
|
||||||
|
|
||||||
2. REMIND is Copyright 1999-2000 Roaring Penguin Software Inc.,
|
2. REMIND is Copyright 1992-2024 Dianne Skoll, except where noted in
|
||||||
except where noted in individual files.
|
individual files.
|
||||||
|
|
||||||
3. DISTRIBUTION AND USE
|
3. DISTRIBUTION AND USE
|
||||||
|
|
||||||
@@ -17,7 +16,7 @@ except where noted in individual files.
|
|||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
675 Mass Ave, Cambridge, MA 02139, USA
|
51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
@@ -294,11 +293,8 @@ POSSIBILITY OF SUCH DAMAGES.
|
|||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
--
|
--
|
||||||
David F. Skoll <dfs@roaringpenguin.com>
|
Dianne Skoll <dianne@skoll.ca>
|
||||||
986 Eiffel Avenue
|
|
||||||
Ottawa, Ontario K2C 0J2
|
https://dianne.skoll.ca/projects/remind
|
||||||
CANADA
|
|
||||||
|
|
||||||
Tel. (613) 225-8687
|
|
||||||
http://www.roaringpenguin.com
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# Top-level Makefile for Remind.
|
# Top-level Makefile for Remind.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
# $Id: Makefile,v 1.28 1998-05-06 01:51:12 dfs Exp $
|
|
||||||
|
|
||||||
all: src/Makefile
|
all: src/Makefile
|
||||||
@echo ""
|
@echo ""
|
||||||
@@ -10,24 +9,45 @@ all: src/Makefile
|
|||||||
@echo "* *"
|
@echo "* *"
|
||||||
@echo "*******************"
|
@echo "*******************"
|
||||||
@echo ""
|
@echo ""
|
||||||
@cd src; $(MAKE) all LANGDEF=$(LANGDEF)
|
@cd src && $(MAKE) all LANGDEF=$(LANGDEF)
|
||||||
|
@$(MAKE) -C rem2pdf -f Makefile.top
|
||||||
install:
|
install:
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "*********************"
|
@echo "**********************************"
|
||||||
@echo "* *"
|
@echo "* *"
|
||||||
@echo "* Installing REMIND *"
|
@echo "* Installing REMIND (unstripped) *"
|
||||||
@echo "* *"
|
@echo "* *"
|
||||||
@echo "*********************"
|
@echo "**********************************"
|
||||||
@echo ""
|
@echo ""
|
||||||
cd src; $(MAKE) install
|
@$(MAKE) -C src install
|
||||||
|
@$(MAKE) -C rem2html install
|
||||||
|
@$(MAKE) -C rem2pdf -f Makefile.top install INSTALL_BASE=$(INSTALL_BASE)
|
||||||
clean:
|
clean:
|
||||||
find . -name '*~' -exec rm {} \;
|
find . -name '*~' -exec rm {} \;
|
||||||
cd src; $(MAKE) clean
|
-rm man/rem.1 man/rem2ps.1 man/remind.1 man/tkremind.1 scripts/tkremind
|
||||||
|
-$(MAKE) -C src clean
|
||||||
|
-$(MAKE) -C rem2pdf clean
|
||||||
|
|
||||||
|
install-stripped:
|
||||||
|
@echo ""
|
||||||
|
@echo "********************************"
|
||||||
|
@echo "* *"
|
||||||
|
@echo "* Installing REMIND (stripped) *"
|
||||||
|
@echo "* *"
|
||||||
|
@echo "**********************************"
|
||||||
|
@echo ""
|
||||||
|
@$(MAKE) -C src install-stripped
|
||||||
|
@$(MAKE) -C rem2html install
|
||||||
|
@$(MAKE) -C rem2pdf -f Makefile.top install INSTALL_BASE=$(INSTALL_BASE)
|
||||||
|
|
||||||
|
test:
|
||||||
|
@$(MAKE) -C src -s test
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f config.cache config.log config.status src/Makefile src/config.h
|
rm -f config.cache config.log config.status src/Makefile src/config.h tests/test.out www/Makefile rem2pdf/Makefile.top rem2pdf/Makefile.old rem2pdf/Makefile rem2pdf/Makefile.PL rem2pdf/bin/rem2pdf rem2html/rem2html
|
||||||
|
|
||||||
src/Makefile: src/Makefile.in
|
src/Makefile: src/Makefile.in
|
||||||
./configure
|
./configure
|
||||||
|
|
||||||
|
# DO NOT DELETE
|
||||||
|
|
||||||
|
|||||||
@@ -27,13 +27,52 @@ If you do NOT have Tcl/Tk or are NOT running X Windows:
|
|||||||
|
|
||||||
2) Edit the file "src/lang.h" to choose a language.
|
2) Edit the file "src/lang.h" to choose a language.
|
||||||
|
|
||||||
3) Type: "./configure"
|
3) Type: "./configure" (You can supply options; type "./configure --help"
|
||||||
|
for details.)
|
||||||
|
|
||||||
4) Type: "make"
|
4) Type: "make"
|
||||||
|
|
||||||
5) Type: "make install" -- you may need to be root to do this.
|
5) Type: "make install" -- you may need to be root to do this.
|
||||||
|
|
||||||
$Id: README,v 1.6 2000-03-13 17:40:38 dfs Exp $
|
PREREQUISITES:
|
||||||
|
--------------
|
||||||
|
|
||||||
Contact info: mailto:dfs@roaringpenguin.com
|
Remind and rem2ps have no prerequisites beyond the standard C library and
|
||||||
Home page: http://www.roaringpenguin.com/remind.html
|
the standard math library.
|
||||||
|
|
||||||
|
Rem2HTML requires the JSON::MaybeXS Perl module.
|
||||||
|
Rem2PDF requires the JSON::MaybeXS, Pango and Cairo Perl modules.
|
||||||
|
|
||||||
|
- On Debian-like systems, these prerequisites may be installed with:
|
||||||
|
|
||||||
|
apt install libjson-maybexs-perl libpango-perl libcairo-perl
|
||||||
|
|
||||||
|
- On RPM-based systems, you need perl-Pango, perl-Cairo and perl-JSON-MaybeXS
|
||||||
|
|
||||||
|
- On Gentoo, you need dev-perl/Pango, dev-perl/Cairo and dev-perl/JSON-MaybeXS.
|
||||||
|
|
||||||
|
- On Arch linux, you need pango-perl, cairo-perl and perl-json-maybexs
|
||||||
|
|
||||||
|
TkRemind requires Tcl/Tk and the tcllib library.
|
||||||
|
|
||||||
|
- On Debian-like systems, install with:
|
||||||
|
|
||||||
|
apt install tcl tk tcllib
|
||||||
|
|
||||||
|
- On RPM-based systems, you need tcl, tk and tcllib
|
||||||
|
|
||||||
|
- On Arch Linux, you need tk and tcllib. The latter is available at
|
||||||
|
https://aur.archlinux.org/packages/tcllib
|
||||||
|
|
||||||
|
If the little arrows for "Previous Month" and "Next Month" do not display
|
||||||
|
correctly in TkRemind, you may need to install the Noto Fonts. Install
|
||||||
|
all of your distribution's Nonto Font-related packages.
|
||||||
|
|
||||||
|
- On Debian-like systems, install with:
|
||||||
|
|
||||||
|
apt install fonts-noto-core fonts-noto-color-emoji \
|
||||||
|
fonts-noto-extra fonts-noto-ui-core fonts-noto-ui-extra
|
||||||
|
|
||||||
|
==========================================================================
|
||||||
|
Contact info: mailto:dianne@skoll.ca
|
||||||
|
Home page: https://dianne.skoll.ca/projects/remind/
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
$Id: WINDOWS,v 1.1 1999-04-05 17:34:28 dfs Exp $
|
|
||||||
|
|
||||||
MICROSOFT WINDOWS
|
|
||||||
|
|
||||||
I used to prohibit porting Remind to Microsoft Windows. However, this
|
|
||||||
may cause problems with the GPL, so I have removed that restriction.
|
|
||||||
|
|
||||||
Although I cannot prevent you from porting Remind to Windows, I appeal
|
|
||||||
to you not to do it. I am trying to encourage the growth of free
|
|
||||||
software, not proprietary software.
|
|
||||||
|
|
||||||
If you port Remind to Windows, I will not provide support or answers to
|
|
||||||
questions -- you're on your own. On the other hand, I will feel no guilt
|
|
||||||
in taking enhancements and merging them into the UNIX stream.
|
|
||||||
|
|
||||||
--
|
|
||||||
David F. Skoll.
|
|
||||||
+101
@@ -0,0 +1,101 @@
|
|||||||
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
AC_INIT(remind, 05.02.00, , , https://dianne.skoll.ca/projects/remind/)
|
||||||
|
AC_CONFIG_SRCDIR([src/queue.c])
|
||||||
|
|
||||||
|
cat <<'EOF'
|
||||||
|
|
||||||
|
**********************
|
||||||
|
* *
|
||||||
|
* Configuring REMIND *
|
||||||
|
* *
|
||||||
|
**********************
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
AC_CONFIG_HEADERS([src/config.h])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(perl-build-artifacts,
|
||||||
|
[ --disable-perl-build-artifacts
|
||||||
|
Disable perllocal.pod and .packlist generation], ac_cv_perlartifacts=$enableval, ac_cv_perlartifacts=yes)
|
||||||
|
|
||||||
|
AH_BOTTOM([#include <custom.h>])
|
||||||
|
|
||||||
|
dnl Checks for programs.
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AC_PROG_LN_S
|
||||||
|
AC_PROG_MAKE_SET
|
||||||
|
AC_PATH_PROG([PERL], [perl])
|
||||||
|
|
||||||
|
dnl Checks for libraries.
|
||||||
|
AC_CHECK_LIB(m, sqrt)
|
||||||
|
AC_CHECK_HEADERS_ONCE([sys/time.h stdint.h])
|
||||||
|
|
||||||
|
dnl Integer sizes
|
||||||
|
AC_CHECK_SIZEOF(unsigned int)
|
||||||
|
AC_CHECK_SIZEOF(unsigned long)
|
||||||
|
AC_CHECK_SIZEOF(time_t)
|
||||||
|
|
||||||
|
dnl Checks for header files.
|
||||||
|
AC_CHECK_HEADERS(strings.h sys/types.h glob.h wctype.h locale.h langinfo.h sys/inotify.h)
|
||||||
|
|
||||||
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||||
|
AC_STRUCT_TM
|
||||||
|
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes"
|
||||||
|
# Check for link-time optimization support
|
||||||
|
f=-flto=auto
|
||||||
|
AC_MSG_CHECKING([whether $CC supports $f])
|
||||||
|
if $CC -Werror -E $f - < /dev/null > /dev/null 2>&1 ; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
CFLAGS="$CFLAGS $f"
|
||||||
|
f=-ffat-lto-objects
|
||||||
|
AC_MSG_CHECKING([whether $CC supports $f])
|
||||||
|
if $CC -Werror -E $f - < /dev/null > /dev/null 2>&1 ; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
CFLAGS="$CFLAGS $f"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl If sizeof(time_t) is 4, try to get 64-bit time_t
|
||||||
|
if test "$ac_cv_sizeof_time_t" = "4" ; then
|
||||||
|
AC_MSG_NOTICE([time_t is 32-bits on this system; attempting to use 64-bit time_t])
|
||||||
|
CFLAGS="$CFLAGS -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$ac_cv_perlartifacts" = "yes" ; then
|
||||||
|
PERLARTIFACTS=
|
||||||
|
else
|
||||||
|
PERLARTIFACTS='NO_PACKLIST=1 NO_PERLLOCAL=1'
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE_DATE=`grep '[[0-9]][[0-9]][[0-9]][[0-9]]-[[0-9]][[0-9]]-[[0-9]][[0-9]]' docs/WHATSNEW | head -n 1 | awk '{print $NF}'`
|
||||||
|
|
||||||
|
# Sanity-check release date
|
||||||
|
echo "$RELEASE_DATE" | grep '^....-..-..$' > /dev/null 2>&1
|
||||||
|
if test "$?" != 0 ; then
|
||||||
|
echo "*** COULD NOT DETERMINE RELEASE DATE: docs/WHATSNEW is incorrect!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
AC_CHECK_FUNCS(strdup strcasecmp strncasecmp setenv unsetenv glob mbstowcs setlocale initgroups inotify_init1)
|
||||||
|
|
||||||
|
VERSION=$PACKAGE_VERSION
|
||||||
|
CONFIG_CMD="$0$ac_configure_args_raw"
|
||||||
|
CONFIG_CMD=`echo "$CONFIG_CMD" | sed -e 's/"/\\\\"/g'`
|
||||||
|
AC_DEFINE_UNQUOTED([CONFIG_CMD], ["$CONFIG_CMD"], [Configuration command used to build Remind])
|
||||||
|
AC_SUBST(CONFIG_CMD)
|
||||||
|
AC_SUBST(VERSION)
|
||||||
|
AC_SUBST(PERL)
|
||||||
|
AC_SUBST(PERLARTIFACTS)
|
||||||
|
AC_SUBST(RELEASE_DATE)
|
||||||
|
AC_CONFIG_FILES([src/Makefile www/Makefile src/version.h rem2html/Makefile rem2html/rem2html rem2pdf/Makefile.PL rem2pdf/Makefile.top rem2pdf/bin/rem2pdf man/rem.1 man/rem2ps.1 man/remind.1 man/tkremind.1 scripts/tkremind])
|
||||||
|
AC_OUTPUT
|
||||||
|
chmod a+x rem2pdf/bin/rem2pdf
|
||||||
|
chmod a+x scripts/tkremind
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
|
||||||
dnl $Id: configure.in,v 1.8 2000-03-15 16:05:19 dfs Exp $
|
|
||||||
|
|
||||||
AC_INIT(src/queue.c)
|
|
||||||
|
|
||||||
cat <<'EOF'
|
|
||||||
|
|
||||||
**********************
|
|
||||||
* *
|
|
||||||
* Configuring REMIND *
|
|
||||||
* *
|
|
||||||
**********************
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
AC_CONFIG_HEADER(src/config.h)
|
|
||||||
|
|
||||||
dnl Checks for programs.
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_INSTALL
|
|
||||||
AC_PROG_LN_S
|
|
||||||
AC_PROG_MAKE_SET
|
|
||||||
|
|
||||||
dnl Checks for libraries.
|
|
||||||
dnl Replace `main' with a function in -lm:
|
|
||||||
|
|
||||||
AC_CHECK_LIB(m, sqrt)
|
|
||||||
|
|
||||||
dnl Checks for header files.
|
|
||||||
AC_HEADER_STDC
|
|
||||||
AC_CHECK_HEADERS(sys/file.h sys/select.h sys/time.h sys/types.h unistd.h malloc.h stdarg.h stdlib.h pwd.h)
|
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
AC_C_CONST
|
|
||||||
AC_STRUCT_TM
|
|
||||||
|
|
||||||
dnl Checks for library functions.
|
|
||||||
AC_TYPE_SIGNAL
|
|
||||||
AC_TYPE_PID_T
|
|
||||||
AC_TYPE_UID_T
|
|
||||||
AC_FUNC_UTIME_NULL
|
|
||||||
AC_HEADER_TIME
|
|
||||||
AC_FUNC_VPRINTF
|
|
||||||
AC_CHECK_FUNCS(mktime putenv strstr timegm difftime)
|
|
||||||
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
CFLAGS="$CFLAGS -Wall -Wstrict-prototypes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_OUTPUT(src/Makefile)
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
This directory contains contributed scripts. They are provided
|
||||||
|
"as-is" with no warranty. Please do not contact Dianne Skoll for help
|
||||||
|
with these scripts; instead, contact the script authors.
|
||||||
|
|
||||||
|
You should check the upstream sources; there may be newer versions
|
||||||
|
of these scripts available.
|
||||||
|
|
||||||
|
--
|
||||||
|
Dianne Skoll
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
The upstream GitHub project for ical2rem is:
|
||||||
|
|
||||||
|
https://github.com/jbalcorn/ical2rem
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2005, 2007, 2019 Justin B. Alcorn
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
# ical2rem
|
||||||
|
The original iCal to Remind script, first released in 2005.
|
||||||
|
|
||||||
|
Reads iCal files and outputs remind-compatible files. Tested ONLY with
|
||||||
|
calendar files created by Mozilla Calendar/Sunbird. Use at your own risk.
|
||||||
|
|
||||||
|
## License
|
||||||
|
In 2005, this was released with the Gnu Public License V2. However, I am changing it to the MIT License, since that provides greater freedom to do with this code what you want.
|
||||||
|
|
||||||
|
Copyright (c) 2005, 2007, 2019 Justin B. Alcorn
|
||||||
|
|
||||||
|
## How I use Remind and Google Calendar together
|
||||||
|
|
||||||
|
- My family has a Google Email domain, and our email addresses all end in the same domain. We all use Google Calendars and I want to mail reminders to each of the family members containing both Google Calendar and .reminder information.
|
||||||
|
- Under my ~/.rem/ directory each family member has a directory. Each directory contains a standard remind file called 'reminders' that at the very least has the line "INCLUDE /home/jalcorn/.rem/<username>/ical2rem" and flag files indicating whether they want Daily or Weekly reminders. My reminders files references my standard .reminders file, and I also have a flag so if I run a Test run I'll get it. There's actually a lot more files (I have a big family).
|
||||||
|
````
|
||||||
|
./rem
|
||||||
|
./son1:
|
||||||
|
drwxrwxr-x 2 jalcorn jalcorn 4096 Dec 12 14:02 .
|
||||||
|
drwxr-xr-x 12 jalcorn jalcorn 4096 Dec 12 14:13 ..
|
||||||
|
-rw-rw-r-- 1 jalcorn jalcorn 51 Mar 3 06:10 ical2rem
|
||||||
|
lrwxrwxrwx 1 jalcorn jalcorn 33 Oct 27 2016 son1.ics -> /home/jalcorn/calendars/son1.ics
|
||||||
|
-rw-rw-r-- 1 jalcorn jalcorn 976 Dec 12 14:02 reminders
|
||||||
|
-rw-rw-r-- 1 jalcorn jalcorn 0 Oct 27 2016 Weekly
|
||||||
|
|
||||||
|
./justin:
|
||||||
|
drwxrwxr-x 2 jalcorn jalcorn 4096 Feb 27 08:29 .
|
||||||
|
drwxr-xr-x 12 jalcorn jalcorn 4096 Dec 12 14:13 ..
|
||||||
|
lrwxrwxrwx 1 jalcorn jalcorn 32 Oct 27 2016 son1.ics -> /home/jalcorn/calendars/son1.ics
|
||||||
|
-rw-rw-r-- 1 jalcorn jalcorn 0 Nov 7 2016 Daily
|
||||||
|
lrwxrwxrwx 1 jalcorn jalcorn 34 Oct 27 2016 family.ics -> /home/jalcorn/calendars/family.ics
|
||||||
|
-rw-rw-r-- 1 jalcorn jalcorn 37320 Mar 3 06:10 ical2rem
|
||||||
|
lrwxrwxrwx 1 jalcorn jalcorn 34 Oct 27 2016 justin.ics -> /home/jalcorn/calendars/justin.ics
|
||||||
|
lrwxrwxrwx 1 jalcorn jalcorn 24 Nov 7 2016 reminders -> /home/jalcorn/.reminders
|
||||||
|
lrwxrwxrwx 1 jalcorn jalcorn 34 Oct 27 2016 vmd.ics -> /home/jalcorn/calendars/vmd.ics
|
||||||
|
-rw-rw-r-- 1 jalcorn jalcorn 0 Oct 27 2016 Test
|
||||||
|
-rw-rw-r-- 1 jalcorn jalcorn 0 Nov 7 2016 Weekly
|
||||||
|
````
|
||||||
|
- bin/getgooglecals.sh runs out of crontab and downloads whatever calendars I want. Note that we can also download organization calendars, I've included a public one here (Cleveland Heights Vocal Music Department calendar).
|
||||||
|
- dailyreminders.sh is linked to weeklyreminders.sh and testreminders.sh so I can run it in different modes. The concatenate the various calendar outputs as a single remind file then send the reminders via email.
|
||||||
|
### Example: .rem/son1/reminders file:
|
||||||
|
````
|
||||||
|
INCLUDE /home/jalcorn/.rem/defs.rem
|
||||||
|
INCLUDE /home/jalcorn/.rem/float
|
||||||
|
INCLUDE /home/jalcorn/.rem/son1/ical2rem
|
||||||
|
fset _weeks() coerce("STRING", (trigdate()-today())/7) + plural((trigdate()-today())/7, " week")
|
||||||
|
FSET _sfun(x) choose(x, -60, 30, 5, 0)
|
||||||
|
FSET oldfloat(y,m,d) trigger(MAX(realtoday(), date(y,m,d)))
|
||||||
|
FSET due(y,m,d) "(" + (date(y,m,d)-trigdate()) + ")"
|
||||||
|
SET fullmoon moondate(2)
|
||||||
|
REM [trigger(realtoday())] SPECIAL SHADE 145 70 100 %
|
||||||
|
REM [float(2019,4,15,105)] MSG File tax return [due(2017,4,15)]%
|
||||||
|
REM PRIORITY 9999 MSG %"%"%
|
||||||
|
INCLUDE /home/jalcorn/.rem/bdays
|
||||||
|
SET $LongDeg 81
|
||||||
|
SET $LongMin 11
|
||||||
|
SET $LongSec 11
|
||||||
|
SET $LatDeg 41
|
||||||
|
SET $LatMin 11
|
||||||
|
SET $LatSec 11
|
||||||
|
REM [trigger(moondate(2))] +1 MSG %"Full Moon%" %b%
|
||||||
|
fset _srtd() coerce("STRING", _no_lz(_am_pm(sunrise(today()))))
|
||||||
|
fset _sstd() coerce("STRING", _no_lz(_am_pm(sunset(today()))))
|
||||||
|
MSG Sun is up today from [_srtd()] to [_sstd()].%"%"%
|
||||||
|
````
|
||||||
|
## Revision History
|
||||||
|
### Version 0.7 2024-09-04
|
||||||
|
- ISSUE 8: New version of remind complains if _sfun isn't defined. Output a header
|
||||||
|
to define a function that does nothing if the function doesn't exist.
|
||||||
|
### Version 0.6 2019-03-01
|
||||||
|
- Publish on GitHub and change license to MIT License
|
||||||
|
- Add supporting files and explanation of how I use it
|
||||||
|
### version 0.5.2 2007-03-23
|
||||||
|
- BUG: leadtime for recurring events had a max of 4 instead of DEFAULT_LEAD_TIME
|
||||||
|
- remove project-lead-time, since Category was a non-standard attribute
|
||||||
|
- NOTE: There is a bug in iCal::Parser v1.14 that causes multiple calendars to
|
||||||
|
fail if a calendar with recurring events is followed by a calendar with no
|
||||||
|
recurring events. This has been reported to the iCal::Parser author.
|
||||||
|
### version 0.5.1 2007-03-21
|
||||||
|
- BUG: Handle multiple calendars on STDIN
|
||||||
|
- add --heading option for priority on section headers
|
||||||
|
### version 0.5 2007-03-21
|
||||||
|
- Add more help options
|
||||||
|
- --project-lead-time option
|
||||||
|
- Supress printing of heading if there are no todos to print
|
||||||
|
### version 0.4
|
||||||
|
- Version 0.4 changes all written or inspired by, and thanks to Mark Stosberg
|
||||||
|
- Change to GetOptions
|
||||||
|
- Change to pipe
|
||||||
|
- Add --label, --help options
|
||||||
|
- Add Help Text
|
||||||
|
- Change to subroutines
|
||||||
|
- Efficiency and Cleanup
|
||||||
|
### version 0.3
|
||||||
|
- Convert to GPL (Thanks to Mark Stosberg)
|
||||||
|
- Add usage
|
||||||
|
### version 0.2
|
||||||
|
- add command line switches
|
||||||
|
- add debug code
|
||||||
|
- add SCHED _sfun keyword
|
||||||
|
- fix typos
|
||||||
|
### version 0.1 - ALPHA CODE.
|
||||||
|
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
#
|
||||||
|
# cal_futureonly.pl -
|
||||||
|
# Reads iCal files and outputs events between 1 month ago and 1 year from now.
|
||||||
|
# Copyright (c) 2005, 2007, 2019 Justin B. Alcorn
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
cal_futureonly.pl --file=filname.ics > output.ics
|
||||||
|
|
||||||
|
--help Usage
|
||||||
|
--man Complete man page
|
||||||
|
--infile (REQUIRED) name of input calendar file
|
||||||
|
--file (REQUIRED) name of output calendar file
|
||||||
|
|
||||||
|
Expects an ICAL stream on STDIN. Converts it to the format
|
||||||
|
used by the C<remind> script and prints it to STDOUT.
|
||||||
|
|
||||||
|
=head2 --infile
|
||||||
|
|
||||||
|
Input file
|
||||||
|
|
||||||
|
=head2 --file
|
||||||
|
|
||||||
|
Output File
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Data::ICal;
|
||||||
|
use Data::ICal::Entry;
|
||||||
|
use DateTime::Span;
|
||||||
|
use Data::ICal::DateTime;
|
||||||
|
use DateTime;
|
||||||
|
use Getopt::Long 2.24 qw':config auto_help';
|
||||||
|
use Pod::Usage;
|
||||||
|
use Data::Dumper;
|
||||||
|
use vars '$VERSION';
|
||||||
|
$VERSION = "0.1";
|
||||||
|
|
||||||
|
my $help;
|
||||||
|
my $man;
|
||||||
|
my $infile;
|
||||||
|
my $file;
|
||||||
|
my $debug = 0;
|
||||||
|
|
||||||
|
GetOptions (
|
||||||
|
"help|?" => \$help,
|
||||||
|
"man" => \$man,
|
||||||
|
"debug" => \$debug,
|
||||||
|
"infile=s" => \$infile,
|
||||||
|
"file=s" => \$file
|
||||||
|
);
|
||||||
|
pod2usage(1) if $help;
|
||||||
|
pod2usage(1) if (! $file);
|
||||||
|
pod2usage(-verbose => 2) if $man;
|
||||||
|
|
||||||
|
my $limit = DateTime->now();
|
||||||
|
$limit->subtract( months => 1);
|
||||||
|
my $endlimit = DateTime->now()->add(years =>1);
|
||||||
|
print STDERR "including events from: ",$limit->ymd," to: ".$endlimit->ymd,"\n" if $debug;
|
||||||
|
my $span = DateTime::Span->from_datetimes( start => $limit, end => $endlimit );
|
||||||
|
print STDERR "Parsing $infile\n" if $debug;
|
||||||
|
my $cal = Data::ICal->new(filename => $infile);
|
||||||
|
if (! $cal) {
|
||||||
|
die "Died Trying to read $infile :".$cal->error_message;
|
||||||
|
}
|
||||||
|
#my $archive = Data::ICal->new(filename => 'archive.ics');
|
||||||
|
print "Output = $file\n" if $debug;
|
||||||
|
my $new = Data::ICal->new();
|
||||||
|
if (! $new) {
|
||||||
|
die $new->error_message;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @events = $cal->events($span);
|
||||||
|
$new->add_entries(@events);
|
||||||
|
|
||||||
|
open(NEW, ">$file");
|
||||||
|
print NEW $new->as_string;
|
||||||
|
close NEW;
|
||||||
|
exit 0;
|
||||||
|
#:vim set ft=perl ts=4 sts=4 expandtab :
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
r=`basename $0`
|
||||||
|
|
||||||
|
if [ $r == 'weeklyreminders.sh' ];
|
||||||
|
then
|
||||||
|
t=14;
|
||||||
|
w=Weekly;
|
||||||
|
elif [ $r == 'dailyreminders.sh' ];
|
||||||
|
then
|
||||||
|
t=3;
|
||||||
|
w=Daily;
|
||||||
|
else
|
||||||
|
t=5
|
||||||
|
w=Test;
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd .rem
|
||||||
|
for d in * ;
|
||||||
|
do
|
||||||
|
if [ "$( ls -A $d/$w 2>/dev/null )" ];
|
||||||
|
then
|
||||||
|
echo "Sending a $w reminder to $d"
|
||||||
|
ft=/tmp/$d-t-$$.txt
|
||||||
|
f=/tmp/$d-$$.txt
|
||||||
|
echo "Reminders for next $t days:" >> $f
|
||||||
|
cat /dev/null > $d/ical2rem
|
||||||
|
for c in $d/*.ics
|
||||||
|
do
|
||||||
|
calname=`basename $c .ics | tr a-z A-Z`
|
||||||
|
cat $c 2>/dev/null | sed -e "s/^SUMMARY:/SUMMARY: {${calname}} /" \
|
||||||
|
| sed -e 's/DT\([A-Z]*\);TZID=UTC:\([0-9T]*\)/DT\1:\2Z/' >> $ft
|
||||||
|
done
|
||||||
|
cat $ft | ~/bin/ical2rem.pl --label "Online Calendar" --heading "PRIORITY 9999" --lead-time $t >> $d/ical2rem
|
||||||
|
if [ -e $d/reminders ];then r="${d}/reminders"; else r="${d}/ical2rem";fi
|
||||||
|
/usr/bin/remind -q -iplain=1 $r >> $f
|
||||||
|
echo "
|
||||||
|
All calendars can be accessed by logging into https://calendar.google.com/ as $d@jalcorn.net
|
||||||
|
" >> $f
|
||||||
|
cat $f | mail -s "$w Reminders for $d" $d@jalcorn.net;
|
||||||
|
cat $f
|
||||||
|
rm $f
|
||||||
|
rm $ft
|
||||||
|
fi;
|
||||||
|
done
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Get google calendars, fix issues caused by changes in Google calendars, and remove all past events.
|
||||||
|
#
|
||||||
|
# Obviously, I've removed the private hashes from private calendars.
|
||||||
|
#
|
||||||
|
cd ~/calendars
|
||||||
|
wget -q -O full/justin.ics --no-check-certificate https://www.google.com/calendar/ical/jbalcorn\%40gmail.com/private-aaaaaaaaaaaaaaaaaaaaaaaaaa/basic.ics
|
||||||
|
wget -q -O full/family.ics --no-check-certificate https://www.google.com/calendar/ical/jalcorn.net_aaaaaaaaaaaaaaaaaaaaaaaaaa\%40group.calendar.google.com/private-6c42a79dec0b3b3bb7b9b0ebf9776bc1/basic.ics
|
||||||
|
wget -q -O full/son1.ics --no-check-certificate https://www.google.com/calendar/ical/son1\%40jalcorn.net/private-aaaaaaaaaaaaaaaaaaaaaaaaaa/basic.ics
|
||||||
|
wget -q -O full/vmd.ics --no-check-certificate https://calendar.google.com/calendar/ical/chuh.org_0pmkefjkiqc4snoel7occlslh8%40group.calendar.google.com/public/basic.ics
|
||||||
|
|
||||||
|
for i in full/*.ics;do
|
||||||
|
cat $i 2>/dev/null | sed -e 's/DT\([A-Z]*\);TZID=UTC:\([0-9T]*\)/DT\1:\2Z/' > /tmp/temp.ics
|
||||||
|
cp /tmp/temp.ics $i
|
||||||
|
done
|
||||||
|
|
||||||
|
~/bin/cal_futureonly.pl --infile=full/justin.ics --file=justin.ics
|
||||||
|
~/bin/cal_futureonly.pl --infile=full/family.ics --file=family.ics
|
||||||
|
~/bin/cal_futureonly.pl --infile=full/son1.ics --file=son1.ics
|
||||||
|
~/bin/cal_futureonly.pl --infile=full/vmd.ics --file=vmd.ics
|
||||||
Executable
+396
@@ -0,0 +1,396 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
#
|
||||||
|
# ical2rem.pl -
|
||||||
|
# Reads iCal files and outputs remind-compatible files. Tested ONLY with
|
||||||
|
# calendar files created by Mozilla Calendar/Sunbird. Use at your own risk.
|
||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2007, 2019 Justin B. Alcorn
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
# version 0.8 2024-10-16
|
||||||
|
# - Issue 9. Remove extra day notation on all day events.
|
||||||
|
# version 0.7.1 2024-09-19
|
||||||
|
# - Made sure license statements were consistent
|
||||||
|
# version 0.7 2024-09-04
|
||||||
|
# - Added dummy _sfun to resolve Issue #8
|
||||||
|
# version 0.6 2019-03-01
|
||||||
|
# - Updates to put on GitHub
|
||||||
|
# version 0.5.2 2007-03-23
|
||||||
|
# - BUG: leadtime for recurring events had a max of 4 instead of DEFAULT_LEAD_TIME
|
||||||
|
# - remove project-lead-time, since Category was a non-standard attribute
|
||||||
|
# - NOTE: There is a bug in iCal::Parser v1.14 that causes multiple calendars to
|
||||||
|
# fail if a calendar with recurring events is followed by a calendar with no
|
||||||
|
# recurring events. This has been reported to the iCal::Parser author.
|
||||||
|
# version 0.5.1 2007-03-21
|
||||||
|
# - BUG: Handle multiple calendars on STDIN
|
||||||
|
# - add --heading option for priority on section headers
|
||||||
|
# version 0.5 2007-03-21
|
||||||
|
# - Add more help options
|
||||||
|
# - --project-lead-time option
|
||||||
|
# - Supress printing of heading if there are no todos to print
|
||||||
|
# version 0.4
|
||||||
|
# - Version 0.4 changes all written or inspired by, and thanks to Mark Stosberg
|
||||||
|
# - Change to GetOptions
|
||||||
|
# - Change to pipe
|
||||||
|
# - Add --label, --help options
|
||||||
|
# - Add Help Text
|
||||||
|
# - Change to subroutines
|
||||||
|
# - Efficiency and Cleanup
|
||||||
|
# version 0.3
|
||||||
|
# - Convert to GPL (Thanks to Mark Stosberg)
|
||||||
|
# - Add usage
|
||||||
|
# version 0.2
|
||||||
|
# - add command line switches
|
||||||
|
# - add debug code
|
||||||
|
# - add SCHED _sfun keyword
|
||||||
|
# - fix typos
|
||||||
|
# version 0.1 - ALPHA CODE.
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
cat /path/to/file*.ics | ical2rem.pl > ~/.ical2rem
|
||||||
|
|
||||||
|
All options have reasonable defaults:
|
||||||
|
--label Calendar name (Default: Calendar)
|
||||||
|
--start Start of time period to parse (parsed by str2time)
|
||||||
|
--end End of time period to parse
|
||||||
|
--lead-time Advance days to start reminders (Default: 3)
|
||||||
|
--todos, --no-todos Process Todos? (Default: Yes)
|
||||||
|
--iso8601 Use YYYY-MM-DD date format
|
||||||
|
--locations, --no-locations Include location? (Default: Yes)
|
||||||
|
--end-times, --no-end-times Include event end times in reminder text
|
||||||
|
(Default: No)
|
||||||
|
--heading Define a priority for static entries
|
||||||
|
--help Usage
|
||||||
|
--debug Enable debug output
|
||||||
|
--man Complete man page
|
||||||
|
|
||||||
|
Expects an ICAL stream on STDIN. Converts it to the format
|
||||||
|
used by the C<remind> script and prints it to STDOUT.
|
||||||
|
|
||||||
|
=head2 --label
|
||||||
|
|
||||||
|
ical2rem.pl --label "Bob's Calendar"
|
||||||
|
|
||||||
|
The syntax generated includes a label for the calendar parsed.
|
||||||
|
By default this is "Calendar". You can customize this with
|
||||||
|
the "--label" option.
|
||||||
|
|
||||||
|
=head2 --iso8601
|
||||||
|
|
||||||
|
Use YYYY-MM-DD date format in output instead of Mmm DD YYYY
|
||||||
|
|
||||||
|
=head2 --locations, --no-locations
|
||||||
|
|
||||||
|
Whether or not to include locations in events
|
||||||
|
|
||||||
|
=head2 --lead-time
|
||||||
|
|
||||||
|
ical2rem.pl --lead-time 3
|
||||||
|
|
||||||
|
How may days in advance to start getting reminders about the events. Defaults to 3.
|
||||||
|
|
||||||
|
=head2 --no-todos
|
||||||
|
|
||||||
|
ical2rem.pl --no-todos
|
||||||
|
|
||||||
|
If you don't care about the ToDos the calendar, this will surpress
|
||||||
|
printing of the ToDo heading, as well as skipping ToDo processing.
|
||||||
|
|
||||||
|
=head2 --heading
|
||||||
|
|
||||||
|
ical2rem.pl --heading "PRIORITY 9999"
|
||||||
|
|
||||||
|
Set an option on static messages output. Using priorities can made the static messages look different from
|
||||||
|
the calendar entries. See the file defs.rem from the remind distribution for more information.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use iCal::Parser;
|
||||||
|
use Date::Parse;
|
||||||
|
use DateTime;
|
||||||
|
use Getopt::Long 2.24 qw':config auto_help';
|
||||||
|
use Pod::Usage;
|
||||||
|
use Data::Dumper;
|
||||||
|
use vars '$VERSION';
|
||||||
|
$VERSION = "0.5.2";
|
||||||
|
|
||||||
|
# Declare how many days in advance to remind
|
||||||
|
my $DEFAULT_LEAD_TIME = 3;
|
||||||
|
my $PROCESS_TODOS = 1;
|
||||||
|
my $HEADING = "";
|
||||||
|
my $help;
|
||||||
|
my $debug;
|
||||||
|
my $man;
|
||||||
|
my $iso8601;
|
||||||
|
my $do_location = 1;
|
||||||
|
my $do_end_times;
|
||||||
|
my $start;
|
||||||
|
my $end;
|
||||||
|
|
||||||
|
my $label = 'Calendar';
|
||||||
|
GetOptions (
|
||||||
|
"label=s" => \$label,
|
||||||
|
"start=s" => \$start,
|
||||||
|
"end=s" => \$end,
|
||||||
|
"lead-time=i" => \$DEFAULT_LEAD_TIME,
|
||||||
|
"todos!" => \$PROCESS_TODOS,
|
||||||
|
"iso8601!" => \$iso8601,
|
||||||
|
"locations!" => \$do_location,
|
||||||
|
"end-times!" => \$do_end_times,
|
||||||
|
"heading=s" => \$HEADING,
|
||||||
|
"help|?" => \$help,
|
||||||
|
"debug" => \$debug,
|
||||||
|
"man" => \$man
|
||||||
|
) or pod2usage(1);
|
||||||
|
pod2usage(1) if $help;
|
||||||
|
pod2usage(-verbose => 2) if $man;
|
||||||
|
|
||||||
|
my $month = ['None','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
|
||||||
|
|
||||||
|
my @calendars;
|
||||||
|
my $in;
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
$in .= $_;
|
||||||
|
if (/END:VCALENDAR/) {
|
||||||
|
push(@calendars,$in);
|
||||||
|
$in = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print STDERR "Read all calendars\n" if $debug;
|
||||||
|
my(%parser_opts) = ("debug" => $debug);
|
||||||
|
if ($start) {
|
||||||
|
my $t = str2time($start);
|
||||||
|
die "Invalid time $start\n" if (! $t);
|
||||||
|
$parser_opts{'start'} = DateTime->from_epoch(epoch => $t);
|
||||||
|
}
|
||||||
|
if ($end) {
|
||||||
|
my $t = str2time($end);
|
||||||
|
die "Invalid time $end\n" if (! $t);
|
||||||
|
$parser_opts{'end'} = DateTime->from_epoch(epoch => $t);
|
||||||
|
}
|
||||||
|
print STDERR "About to parse calendars\n" if $debug;
|
||||||
|
my $parser = iCal::Parser->new(%parser_opts);
|
||||||
|
my $hash = $parser->parse_strings(@calendars);
|
||||||
|
print STDERR "Calendars parsed\n" if $debug;
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# Subroutines
|
||||||
|
#
|
||||||
|
#############################################################
|
||||||
|
#
|
||||||
|
# _process_todos()
|
||||||
|
# expects 'todos' hashref from iCal::Parser is input
|
||||||
|
# returns String to output
|
||||||
|
sub _process_todos {
|
||||||
|
my $todos = shift;
|
||||||
|
|
||||||
|
my ($todo, @newtodos, $leadtime);
|
||||||
|
my $output = "";
|
||||||
|
|
||||||
|
$output .= 'REM '.$HEADING.' MSG '.$label.' ToDos:%"%"%'."\n";
|
||||||
|
|
||||||
|
# For sorting, make sure everything's got something
|
||||||
|
# To sort on.
|
||||||
|
my $now = DateTime->now;
|
||||||
|
for $todo (@{$todos}) {
|
||||||
|
# remove completed items
|
||||||
|
if ($todo->{'STATUS'} && $todo->{'STATUS'} eq 'COMPLETED') {
|
||||||
|
next;
|
||||||
|
} elsif ($todo->{'DUE'}) {
|
||||||
|
# All we need is a due date, everything else is sugar
|
||||||
|
$todo->{'SORT'} = $todo->{'DUE'}->clone;
|
||||||
|
} elsif ($todo->{'DTSTART'}) {
|
||||||
|
# for sorting, sort on start date if there's no due date
|
||||||
|
$todo->{'SORT'} = $todo->{'DTSTART'}->clone;
|
||||||
|
} else {
|
||||||
|
# if there's no due or start date, just make it now.
|
||||||
|
$todo->{'SORT'} = $now;
|
||||||
|
}
|
||||||
|
push(@newtodos,$todo);
|
||||||
|
}
|
||||||
|
if (! (scalar @newtodos)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
# Now sort on the new Due dates and print them out.
|
||||||
|
for $todo (sort { DateTime->compare($a->{'SORT'}, $b->{'SORT'}) } @newtodos) {
|
||||||
|
my $due = $todo->{'SORT'}->clone();
|
||||||
|
my $priority = "";
|
||||||
|
if (defined($todo->{'PRIORITY'})) {
|
||||||
|
if ($todo->{'PRIORITY'} == 1) {
|
||||||
|
$priority = "PRIORITY 1000";
|
||||||
|
} elsif ($todo->{'PRIORITY'} == 3) {
|
||||||
|
$priority = "PRIORITY 7500";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (defined($todo->{'DTSTART'}) && defined($todo->{'DUE'})) {
|
||||||
|
# Lead time is duration of task + lead time
|
||||||
|
my $diff = ($todo->{'DUE'}->delta_days($todo->{'DTSTART'})->days())+$DEFAULT_LEAD_TIME;
|
||||||
|
$leadtime = "+".$diff;
|
||||||
|
} else {
|
||||||
|
$leadtime = "+".$DEFAULT_LEAD_TIME;
|
||||||
|
}
|
||||||
|
$output .= "REM ".$due->month_abbr." ".$due->day." ".$due->year." $leadtime $priority MSG \%a $todo->{'SUMMARY'}\%\"\%\"\%\n";
|
||||||
|
}
|
||||||
|
$output .= 'REM '.$HEADING.' MSG %"%"%'."\n";
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
#
|
||||||
|
# Main Program
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# Issue 8 https://github.com/jbalcorn/ical2rem/issues/8
|
||||||
|
# Make sure there is a _sfun function declared in the reminder file. We'll just make it do nothing here.
|
||||||
|
print 'IF args("_sfun") < 1
|
||||||
|
FSET _sfun(x) choose(x,0)
|
||||||
|
ENDIF
|
||||||
|
';
|
||||||
|
|
||||||
|
print _process_todos($hash->{'todos'}) if $PROCESS_TODOS;
|
||||||
|
|
||||||
|
my ($leadtime, $yearkey, $monkey, $daykey,$uid,%eventsbyuid);
|
||||||
|
print 'REM '.$HEADING.' MSG '.$label.' Events:%"%"%'."\n";
|
||||||
|
my $events = $hash->{'events'};
|
||||||
|
foreach $yearkey (sort keys %{$events} ) {
|
||||||
|
my $yearevents = $events->{$yearkey};
|
||||||
|
foreach $monkey (sort {$a <=> $b} keys %{$yearevents}){
|
||||||
|
my $monevents = $yearevents->{$monkey};
|
||||||
|
foreach $daykey (sort {$a <=> $b} keys %{$monevents} ) {
|
||||||
|
my $dayevents = $monevents->{$daykey};
|
||||||
|
foreach $uid (sort {
|
||||||
|
DateTime->compare($dayevents->{$a}->{'DTSTART'}, $dayevents->{$b}->{'DTSTART'})
|
||||||
|
} keys %{$dayevents}) {
|
||||||
|
my $event = $dayevents->{$uid};
|
||||||
|
if ($eventsbyuid{$uid}) {
|
||||||
|
my $curreventday = $event->{'DTSTART'}->clone;
|
||||||
|
$curreventday->truncate( to => 'day' );
|
||||||
|
$eventsbyuid{$uid}{$curreventday->epoch()} =1;
|
||||||
|
for (my $i = 0;$i < $DEFAULT_LEAD_TIME && !defined($event->{'LEADTIME'});$i++) {
|
||||||
|
if ($eventsbyuid{$uid}{$curreventday->subtract( days => $i+1 )->epoch() }) {
|
||||||
|
$event->{'LEADTIME'} = $i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Issue 9. Multi-day events have extra day with zero time. Mark this as the date not needed in reminders file so we can skip later
|
||||||
|
# Repeating multi-day events have the same uid so we need to mark each one.
|
||||||
|
if ($event->{'DTSTART'} eq $event->{'DTEND'} and $event->{'DTEND'}->hour eq 0 and $event->{'DTEND'}->minute eq 0 and $event->{'DTEND'}->second eq 0) {
|
||||||
|
$eventsbyuid{$uid}{$event->{'DTSTART'}->ymd} = 'rm';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$eventsbyuid{$uid} = $event;
|
||||||
|
my $curreventday = $event->{'DTSTART'}->clone;
|
||||||
|
$curreventday->truncate( to => 'day' );
|
||||||
|
$eventsbyuid{$uid}{$curreventday->epoch()} =1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach $yearkey (sort keys %{$events} ) {
|
||||||
|
my $yearevents = $events->{$yearkey};
|
||||||
|
foreach $monkey (sort {$a <=> $b} keys %{$yearevents}){
|
||||||
|
my $monevents = $yearevents->{$monkey};
|
||||||
|
foreach $daykey (sort {$a <=> $b} keys %{$monevents} ) {
|
||||||
|
my $dayevents = $monevents->{$daykey};
|
||||||
|
foreach $uid (sort {
|
||||||
|
DateTime->compare($dayevents->{$a}->{'DTSTART'}, $dayevents->{$b}->{'DTSTART'})
|
||||||
|
} keys %{$dayevents}) {
|
||||||
|
my $event = $dayevents->{$uid};
|
||||||
|
if (exists($event->{'LEADTIME'})) {
|
||||||
|
$leadtime = "+".$event->{'LEADTIME'};
|
||||||
|
} else {
|
||||||
|
$leadtime = "+".$DEFAULT_LEAD_TIME;
|
||||||
|
}
|
||||||
|
my $start = $event->{'DTSTART'};
|
||||||
|
my $end = $event->{'DTEND'};
|
||||||
|
my $duration = "";
|
||||||
|
# Issue 9. All Day events create an event that has zero length and DTSTART and DTEND at 00:00 on last day. Marked while handling multi-day events. Ignore these
|
||||||
|
if ($start eq $end and $eventsbyuid{$uid}{$start->ymd} and $eventsbyuid{$uid}{$start->ymd} eq 'rm') {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if ($end and ($start->hour or $start->minute or $end->hour or $end->minute)) {
|
||||||
|
# We need both an HH:MM version of the delta, to put in the
|
||||||
|
# DURATION specifier, and a human-readable version of the
|
||||||
|
# delta, to put in the message if the user requested it.
|
||||||
|
my $seconds = $end->epoch - $start->epoch;
|
||||||
|
my $minutes = int($seconds / 60);
|
||||||
|
my $hours = int($minutes / 60);
|
||||||
|
$minutes -= $hours * 60;
|
||||||
|
$duration = sprintf("DURATION %d:%02d ", $hours, $minutes);
|
||||||
|
}
|
||||||
|
print "REM ";
|
||||||
|
if ($iso8601) {
|
||||||
|
print $start->strftime("%F ");
|
||||||
|
} else {
|
||||||
|
print $start->month_abbr." ".$start->day." ".$start->year." ";
|
||||||
|
}
|
||||||
|
print "$leadtime ";
|
||||||
|
if ($duration or $start->hour > 0 or $start->minute > 0) {
|
||||||
|
print "AT ";
|
||||||
|
print $start->strftime("%H:%M");
|
||||||
|
print " SCHED _sfun ${duration}MSG %a %2 ";
|
||||||
|
} else {
|
||||||
|
print "MSG %a ";
|
||||||
|
}
|
||||||
|
print "%\"", "e($event->{'SUMMARY'});
|
||||||
|
print(" at ", "e($event->{'LOCATION'}))
|
||||||
|
if ($do_location and $event->{'LOCATION'});
|
||||||
|
print "\%\"";
|
||||||
|
if ($do_end_times and ($start->hour or $start->minute or
|
||||||
|
$end->hour or $end->minute)) {
|
||||||
|
my $start_date = $start->strftime("%F");
|
||||||
|
my $start_time = $start->strftime("%k:%M");
|
||||||
|
my $end_date = $end->strftime("%F");
|
||||||
|
my $end_time = $end->strftime("%k:%M");
|
||||||
|
# We don't want leading whitespace; some strftime's support
|
||||||
|
# disabling the pdding in the format string, but not all,
|
||||||
|
# so for maximum portability we do it ourselves.
|
||||||
|
$start_time =~ s/^\s+//;
|
||||||
|
$end_time =~ s/^\s+//;
|
||||||
|
my(@pieces);
|
||||||
|
if ($start_date ne $end_date) {
|
||||||
|
push(@pieces, $end_date);
|
||||||
|
}
|
||||||
|
if ($start_time ne $end_time) {
|
||||||
|
push(@pieces, $end_time);
|
||||||
|
}
|
||||||
|
print " (-", join(" ", @pieces), ")";
|
||||||
|
}
|
||||||
|
print "%\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub quote {
|
||||||
|
local($_) = @_;
|
||||||
|
s/\[/["["]/g;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
exit 0;
|
||||||
|
#:vim set ft=perl ts=4 sts=4 tabstop=4 expandtab :
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
DESTDIR?=
|
||||||
|
PREFIX?=/usr
|
||||||
|
BINDIR?=$(PREFIX)/bin
|
||||||
|
MANDIR?=$(PREFIX)/share/man
|
||||||
|
|
||||||
|
default: rem2ics.1
|
||||||
|
|
||||||
|
rem2ics.1:
|
||||||
|
pod2man -c "" rem2ics > rem2ics.1
|
||||||
|
|
||||||
|
install: rem2ics.1
|
||||||
|
install -p -D rem2ics $(DESTDIR)$(BINDIR)/rem2ics
|
||||||
|
install -p -D -m 0644 rem2ics.1 $(DESTDIR)$(MANDIR)/man1/rem2ics.1
|
||||||
Executable
+847
@@ -0,0 +1,847 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
# rem2ics -- convert the output of "remind -s" into RFC2445 iCalendar format.
|
||||||
|
|
||||||
|
# Copyright 2007,2008,2009
|
||||||
|
# Mark Atwood <me@mark.atwood.name>
|
||||||
|
# Paul Hinze <paul dot t dot hinze at gmail dot com>
|
||||||
|
# Michael Schultz <mjschultz at gmail dot com>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the
|
||||||
|
# Free Software Foundation, Inc.
|
||||||
|
# 51 Franklin Street, Fifth Floor
|
||||||
|
# Boston MA 02110-1301 USA
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
rem2ics - convert the output of "remind -s" into RFC2445 iCalendar format.
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
TZ=I<timezone> B<rem2ics> [B<-man>] [B<-do>] [B<-norecur>] [B<-usetag>] E<lt>input E<gt>output
|
||||||
|
|
||||||
|
=head1 OPTIONS AND ARGUMENTS
|
||||||
|
|
||||||
|
=over 8
|
||||||
|
|
||||||
|
=item B<-man>
|
||||||
|
|
||||||
|
Print the manual page and exit.
|
||||||
|
|
||||||
|
=item B<-do>
|
||||||
|
|
||||||
|
Actually do the conversion. Otherwise just print a brief help message
|
||||||
|
and usage example, and then exit.
|
||||||
|
|
||||||
|
=item B<-norecur>
|
||||||
|
|
||||||
|
Do not attempt to detect and fold together recurring events.
|
||||||
|
|
||||||
|
=item B<-usetag>
|
||||||
|
|
||||||
|
Generate UIDs using remind TAG clauses.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
Input is from standard input
|
||||||
|
|
||||||
|
Output is to standard output.
|
||||||
|
|
||||||
|
=head1 USAGE
|
||||||
|
|
||||||
|
remind -s360 -irem2ics=1 ~/.reminders 1 Jan 1991 | TZ=PST8PDT rem2ics -do >reminders.ics
|
||||||
|
|
||||||
|
This tells B<remind> to use ~/.reminders, and to process the entire
|
||||||
|
range of dates it can handle (from Jan 1 1991 to Dec 31 2020), and to
|
||||||
|
define a variable named C<rem2ics>, which can be used in
|
||||||
|
C<IF !defined("rem2ics")> / C<ENDIF> pairs.
|
||||||
|
B<rem2ics> will use a timezone of PST8PDT, and will fold events that
|
||||||
|
have the same name and duration into a single iCalendar VEVENT object.
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
=head2 Timezones and the TZ environment variable.
|
||||||
|
|
||||||
|
B<rem2ics> uses the TZ environment variable to determine the value of
|
||||||
|
the RFC2445 TZID property. If you are running on a Linux or other GNU
|
||||||
|
libc based system, you probably don't (and probably shouldn't)
|
||||||
|
normally have TZ set. You can confirm this by running C<printenv TZ>
|
||||||
|
at a shell prompt. If your remind data is in your "local time", and
|
||||||
|
it probably is, you should probably set TZ to a good name for your
|
||||||
|
local timezone just for the run of this script. You probably should
|
||||||
|
NOT set TZ in your login scripts.
|
||||||
|
|
||||||
|
You can use TZ like this:
|
||||||
|
|
||||||
|
remind -s ~/.reminders | TZ=PST8PDT rem2ics -do >reminders.ics
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
remind -s ~/.reminders | TZ=US/Pacific rem2ics -do >reminders.ics
|
||||||
|
|
||||||
|
|
||||||
|
If, for some reason, your remind files are all in GMT instead of
|
||||||
|
localtime (you smart person you!), you can do this:
|
||||||
|
|
||||||
|
remind -s ~/.reminders | TZ=GMT rem2ics -do >reminders.ics
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
remind -s ~/.reminders | TZ=0 rem2ics -do >reminders.ics
|
||||||
|
|
||||||
|
and B<rem2ics> will use the ISO8601 "Z" notation for GMT time in the ics
|
||||||
|
file. (Other synonyms for GMT are the empty string (not the same as
|
||||||
|
the TZ not set), "I<0>", "I<Z>", "I<Zulu>", "I<Greenwitch>", "I<GMT>",
|
||||||
|
"I<GMT+0>, and "I<GMT-0>".)
|
||||||
|
|
||||||
|
If you leave TZ undefined and unset, B<rem2ics> will use the ISO8601
|
||||||
|
"T" notation date strings with no TZID property, which RFC2445 calls a
|
||||||
|
"floating time". Who knows, it might work for you!
|
||||||
|
|
||||||
|
The TZ string value is literally incorporated into the iCalendar
|
||||||
|
stream, so whatever your iCalendar-using application needs is what you
|
||||||
|
should use. You may have to experiment a bit.
|
||||||
|
|
||||||
|
You can look around in C</usr/share/zoneinfo> to get the names of
|
||||||
|
every timezone anywhere. This is the "Olson database" that RFC2445
|
||||||
|
refers to. Read the man page for L<tzfile(5)> for more than you ever
|
||||||
|
wanted to know about the format of these files, and about GNU libc's
|
||||||
|
handling of timezones. As complex as it is, it's certainly better
|
||||||
|
than what POSIX defines or what most legacy UNIX systems do, and most
|
||||||
|
certainly better than Microsoft, who in their "cutting edge" "state of
|
||||||
|
the art" "server" OS, still hasn't figured out that daylight time
|
||||||
|
rules might be different in different years.
|
||||||
|
|
||||||
|
If you just ran B<rem2ics> without reading all this stuff, or if you
|
||||||
|
don't want to worry about it at all, and somehow your iCalendar
|
||||||
|
application manager is able to guess the proper timezone for you, just
|
||||||
|
leave TZ undefined, and B<rem2ics> will use the ISO8601 "T" notation
|
||||||
|
date strings with no TZID property, which RFC2445 calls a "floating
|
||||||
|
time". Who knows, it might work for you!
|
||||||
|
|
||||||
|
=head2 Detecting recurring events
|
||||||
|
|
||||||
|
B<rem2ics> tries to detect recurring events. If any multiple events
|
||||||
|
appear with exactly the text and exactly the same duration (including
|
||||||
|
"no duration"), instead of multiple VEVENT objects, there will be just
|
||||||
|
one VEVENT object, that will have a RFC2445 C<RDATE> property.
|
||||||
|
|
||||||
|
B<rem2ics> is not yet smart enough to derive an C<RRULE> based
|
||||||
|
recurrence. If you really want that feature, either implement it and
|
||||||
|
send in a patch, or contact the author and convince him to do it.
|
||||||
|
|
||||||
|
=head2 Other iCalendar Properties
|
||||||
|
|
||||||
|
B<rem2ics> does not generate C<DESCRIPTION> or C<LOCATION>. One
|
||||||
|
would have to heuristically parse them out of the text, and everyone
|
||||||
|
uses a idiosyncratic way of putting things in B<remind>.
|
||||||
|
|
||||||
|
If the B<-usetag> option is not used or no C<TAG> is set for a
|
||||||
|
reminder, B<rem2ics> will synthesize C<UID> properties for each
|
||||||
|
VEVENT, but the UIDs will be different (and unique) for each run of
|
||||||
|
B<rem2ics>. If you run rem2ics twice and import the two resulting ICS
|
||||||
|
streams into your new scheduling program, your appointments will
|
||||||
|
appear twice. If, however, you have set C<TAG> clauses in your
|
||||||
|
reminders and activated B<-usetag>, these will be used. The same
|
||||||
|
applies for tags synthesized by B<remind>'s B<-y> option. Hence, it
|
||||||
|
is more useful to use the B<-y> option than to let B<rem2ics>
|
||||||
|
synthesize UIDs, because the UIDs will stay the same across multiple
|
||||||
|
runs.
|
||||||
|
|
||||||
|
=head2 Other iCalendar Perl objects
|
||||||
|
|
||||||
|
Why doesn't B<rem2ics> use any of the iCalendar Perl stuff in CPAN?
|
||||||
|
Because I don't trust them, and they are too big for this app. One
|
||||||
|
links to a binary library. Another hasn't been maintained since 1991,
|
||||||
|
and is full of notes as to how buggy and incomplete it is. And so
|
||||||
|
forth. I am not at this moment interested in groveling around in
|
||||||
|
L<Net::iCal>, L<DateTime::Format::iCal>, L<Tie::iCal>,
|
||||||
|
L<iCal::Parser>, or C<libical>.
|
||||||
|
|
||||||
|
=head2 Previous implementation
|
||||||
|
|
||||||
|
There is a working quick & dirty rem2ics written in awk
|
||||||
|
by Anthony J. Chivetta E<lt>achivetta@gmail.comE<gt>.
|
||||||
|
|
||||||
|
But it has the following problems: it doesn't escape the text, it
|
||||||
|
doesn't handle events that cross over midnight, it doesn't do
|
||||||
|
timezones, it doesn't enforce the correct EOL sequence, and it doesn't
|
||||||
|
fold long lines. This is a replacement for that script.
|
||||||
|
|
||||||
|
=head1 TODO
|
||||||
|
|
||||||
|
If TZ not set, grab out of system config somewhere
|
||||||
|
Detect recurring events.
|
||||||
|
If I'm REALLY smart, derive RRULE
|
||||||
|
Handle characters not in US-ASCII. Latin1? UTF8?
|
||||||
|
|
||||||
|
=head1 VERSION HISTORY
|
||||||
|
|
||||||
|
=over 8
|
||||||
|
|
||||||
|
=item version 0.1 2007-02-08
|
||||||
|
|
||||||
|
First cut.
|
||||||
|
|
||||||
|
=item version 0.2 2007-02-09
|
||||||
|
|
||||||
|
Reorg into multipass over a data structure.
|
||||||
|
|
||||||
|
=item version 0.3 2007-02-10
|
||||||
|
|
||||||
|
Collapse repeating events. Fold output lines.
|
||||||
|
|
||||||
|
=item version 0.9 2007-02-11
|
||||||
|
|
||||||
|
POD. Command line options. First public release.
|
||||||
|
|
||||||
|
=item version 0.91 2007-02-14
|
||||||
|
|
||||||
|
Bug fix, error message for non-recurring events
|
||||||
|
|
||||||
|
=item version 0.92 2008-01-28
|
||||||
|
|
||||||
|
Bug fix,
|
||||||
|
rem2ics 0.91 chokes on timed reminders with
|
||||||
|
duration using `remind -s` as it functions in remind-03.01.03.
|
||||||
|
Remind 3.01 changed how the -s data is formatted for events that have a duration
|
||||||
|
Patch by Paul Hinze E<lt>paul dot t dot hinze at gmail dot comE<gt>
|
||||||
|
and Michael Schultz E<lt>mjschultz at gmail dot comE<gt>
|
||||||
|
|
||||||
|
=item version 0.93 2009-06-25
|
||||||
|
|
||||||
|
Add B<-usetag> option to allow for UIDs to stay the same across multiple runs
|
||||||
|
by using the remind TAG clause.
|
||||||
|
Patch by Tim Weber E<lt>scy at scytale dot nameE<gt>
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
L<http://mark.atwood.name/code/rem2ics>
|
||||||
|
|
||||||
|
L<http://en.wikipedia.org/wiki/ICalendar>
|
||||||
|
|
||||||
|
L<http://tools.ietf.org/html/rfc2445>
|
||||||
|
|
||||||
|
L<https://dianne.skoll.ca/projects/remind/>
|
||||||
|
|
||||||
|
L<remind(1)>
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Copyright 2007,2008,2009 by Mark Atwood E<lt>me+rem2ics@mark.atwood.nameE<gt>. L<http://mark.atwood.name/>.
|
||||||
|
|
||||||
|
Please report bugs (with patches, if possible).
|
||||||
|
|
||||||
|
Inspired by Anthony J. Chivetta E<lt>achivetta@gmail.comE<gt>'s
|
||||||
|
rem2ics in awk.
|
||||||
|
|
||||||
|
Thank you to Dianne Skoll E<lt>dianne@skoll.ca<gt> for Remind,
|
||||||
|
and to the IETF calsch wg for the iCalendar specification.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
use Getopt::Long;
|
||||||
|
use Pod::Usage;
|
||||||
|
|
||||||
|
my $app_name = "rem2ics";
|
||||||
|
my $app_version = "0.93";
|
||||||
|
|
||||||
|
# process the command line
|
||||||
|
my %options;
|
||||||
|
GetOptions(\%options, qw(man do norecurr usetag)) || pod2usage(2);
|
||||||
|
pod2usage(-verbose => 2) if ($options{man});
|
||||||
|
|
||||||
|
unless ($options{do}) {
|
||||||
|
print STDERR "Run \"$0 -man\" for information and usage examples.\n"
|
||||||
|
. "Pay special attention to information about timezone.\n";
|
||||||
|
exit(99);
|
||||||
|
}
|
||||||
|
|
||||||
|
# grab the hostname
|
||||||
|
# this is used as part of the UID property of each VEVENT
|
||||||
|
my $ical_uid_hostname = $ENV{'HOSTNAME'};
|
||||||
|
unless ($ical_uid_hostname) {
|
||||||
|
print STDERR "Warning! "
|
||||||
|
. "The environment variable HOSTNAME was not properly set.\n"
|
||||||
|
. "Will use \"localhost\" in the RFC2445 UID property\n";
|
||||||
|
$ical_uid_hostname = "localhost";
|
||||||
|
}
|
||||||
|
|
||||||
|
# look for the TZ
|
||||||
|
my $ical_tzid = undef;
|
||||||
|
if (exists $ENV{'TZ'}) {
|
||||||
|
$ical_tzid = $ENV{'TZ'};
|
||||||
|
my %synonyms_for_gmt = (
|
||||||
|
'' => 1, '0' => 1, 'z' => 1, 'zulu' => 1, 'greenwitch' => 1,
|
||||||
|
'gmt' => 1, 'gmt+0' => 1, 'gmt-0' => 1, );
|
||||||
|
if (exists $synonyms_for_gmt{lc($ical_tzid)}) {
|
||||||
|
$ical_tzid = ''; # empty means GMT, below
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# leave it undefined, that has a meaning below
|
||||||
|
}
|
||||||
|
|
||||||
|
# RFC2445 DTSTAMP property will be the time we started running ($^T)
|
||||||
|
my ($ical_dtstamp);
|
||||||
|
{
|
||||||
|
my @gt = gmtime($^T);
|
||||||
|
$ical_dtstamp = sprintf("%04d%02d%02dZ%02d%02d%02dZ",
|
||||||
|
1900+$gt[5], $gt[4]+1, $gt[3],
|
||||||
|
$gt[2], $gt[1], $gt[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
my ($cnt, $v, @events);
|
||||||
|
|
||||||
|
$cnt = 0;
|
||||||
|
foreach (<STDIN>) {
|
||||||
|
$cnt++;
|
||||||
|
|
||||||
|
s/#.*//; # toss comments
|
||||||
|
next if /^\s*$/; # skip blank lines
|
||||||
|
chomp;
|
||||||
|
|
||||||
|
$v = undef;
|
||||||
|
|
||||||
|
# store the raw line
|
||||||
|
$v->{src} = $_;
|
||||||
|
$v->{cnt} = $cnt;
|
||||||
|
|
||||||
|
# split and parse the line
|
||||||
|
# if we don't like it, skip it and go around again
|
||||||
|
|
||||||
|
# sf[0] = date, in yyyy/mm/dd format
|
||||||
|
# sf[1] = special, usually "*"
|
||||||
|
# sf[2] = tag, usually "*"
|
||||||
|
# sf[3] = duration, in minutes
|
||||||
|
# sf[4] = time, since midnight, in minutes
|
||||||
|
# sf[5] = text
|
||||||
|
|
||||||
|
my @sf = split(' ', $_, 6);
|
||||||
|
next unless ($sf[1] eq '*'); # ignore SPECIAL lines
|
||||||
|
next unless (($sf[3] eq '*') or ($sf[3] =~ m/\d+/));
|
||||||
|
next unless (($sf[4] eq '*') or ($sf[4] =~ m/\d+/));
|
||||||
|
next unless (length($sf[5]) > 0);
|
||||||
|
|
||||||
|
my @dt = split('/', $sf[0], 3);
|
||||||
|
next unless ($dt[0] =~ m/^\d{4}$/); # year
|
||||||
|
next unless ($dt[1] =~ m/^\d{2}$/); # month
|
||||||
|
next unless ($dt[2] =~ m/^\d{2}$/); # day
|
||||||
|
|
||||||
|
if ($sf[4] ne "*") { # a time was given
|
||||||
|
# When an event has a time, remind -s "helpfully" also
|
||||||
|
# puts it as text at the start of the text portion.
|
||||||
|
# This takes the following form:
|
||||||
|
# ##:##[a|p]m <rest of MSG>
|
||||||
|
# or, if the event has a duration:
|
||||||
|
# ##:##[a|p]m-##:##[a|p]m <rest of MSG>
|
||||||
|
# Rather than a nasty regex, just splitting at the
|
||||||
|
# first space does the trick.
|
||||||
|
my($extra_time, $textmsg) = split(' ', $sf[5], 2);
|
||||||
|
$sf[5] = $textmsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
$v->{sf} = \@sf;
|
||||||
|
$v->{dt} = \@dt;
|
||||||
|
|
||||||
|
push @events, $v;
|
||||||
|
}
|
||||||
|
|
||||||
|
# generate the "date time string" for each event
|
||||||
|
foreach $v (@events) {
|
||||||
|
if (${$v->{sf}}[4] eq "*") { # no time was given
|
||||||
|
$v->{dts} = sprintf("%04d%02d%02d", @{$v->{dt}});
|
||||||
|
} else { # a time was given
|
||||||
|
my ($t_hr, $t_mn) = &idiv(${$v->{sf}}[4], 60);
|
||||||
|
$v->{dts} = sprintf("%04d%02d%02dT%02d%02d00",
|
||||||
|
@{$v->{dt}}, $t_hr, $t_mn);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my(%grovel);
|
||||||
|
|
||||||
|
# if the user doesn't want recurrence detection
|
||||||
|
unless ($options{norecurr}) {
|
||||||
|
|
||||||
|
# then dont put events in the grovel hash
|
||||||
|
|
||||||
|
foreach $v (@events) {
|
||||||
|
# key is duration followed by text
|
||||||
|
# \036 is "ASCII RS Record Separator"
|
||||||
|
my $k = ${$v->{sf}}[3] . "\036" . ${$v->{sf}}[5];
|
||||||
|
push @{$grovel{$k}}, $v;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $k (keys %grovel) {
|
||||||
|
if ((scalar @{$grovel{$k}}) > 1) {
|
||||||
|
$v = ${$grovel{$k}}[0];
|
||||||
|
$v->{recurlist} = \@{$grovel{$k}};
|
||||||
|
foreach my $v0 (@{$grovel{$k}}) {
|
||||||
|
$v0->{is_recurrence} = $v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# All of the individual events are in the @events array. All of the
|
||||||
|
# unique combinations of duration/event name are the keys in the
|
||||||
|
# %grovel hash, the elements of which are references to an arrays of
|
||||||
|
# references to the events, in the same ordering as they we read by
|
||||||
|
# us, which *ought* to be in datewise order. I don't know if "remind
|
||||||
|
# -s" actually sorts into true chronological order. If it doesn't, we
|
||||||
|
# might have a problem if a recurring event has two instances both on
|
||||||
|
# the first day.
|
||||||
|
|
||||||
|
# Every event that is recurring has a "is_recurrence" property.
|
||||||
|
# Additionally, (hopefully) the first/earliest event in a set of
|
||||||
|
# recurrences has a "recurlist" property. The "recurlist" is a
|
||||||
|
# reference to a list of references to each of the events. The first
|
||||||
|
# one on that list will be the same event that has the "recurlist"
|
||||||
|
# property. The "is_recurrence" property is a reference back to the
|
||||||
|
# event that has the "recurlist" property.
|
||||||
|
|
||||||
|
foreach my $k (keys %grovel) {
|
||||||
|
next if ((scalar @{$grovel{$k}}) <= 1);
|
||||||
|
|
||||||
|
my $recur_str = "";
|
||||||
|
foreach $v (@{$grovel{$k}}) {
|
||||||
|
if (${$v->{sf}}[4] eq "*") { # no time was given
|
||||||
|
$recur_str .= ($v->{dts} . ",");
|
||||||
|
} else {
|
||||||
|
if (defined($ical_tzid)) {
|
||||||
|
if ($ical_tzid eq '') { # tz is defined but empty, so in GMT
|
||||||
|
$recur_str .= $v->{dts} . "Z,";
|
||||||
|
} else { # tz is non-zero, so output the tz as well
|
||||||
|
$recur_str .= $v->{dts} . ",";
|
||||||
|
}
|
||||||
|
} else { # undefined tz, just floating time
|
||||||
|
$recur_str .= $v->{dts} . ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# the recur_str now has an extra comma at the end. chop it off
|
||||||
|
chop($recur_str);
|
||||||
|
${$grovel{$k}}[0]->{recur_str} = $recur_str;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $k (keys %grovel) {
|
||||||
|
next if ((scalar @{$grovel{$k}}) <= 1);
|
||||||
|
my $v = ${$grovel{$k}}[0]; # grab the head of each list
|
||||||
|
if (${$v->{sf}}[4] eq "*") { # no time was given
|
||||||
|
# the default value type for an RDATE is DATE-TIME,
|
||||||
|
# we much change the type to DATE
|
||||||
|
$v->{i_rdate} = sprintf("RDATE;VALUE=DATE:");
|
||||||
|
} else {
|
||||||
|
if (defined($ical_tzid)) {
|
||||||
|
if ($ical_tzid eq '') { # tz is defined but empty, so in GMT
|
||||||
|
$v->{i_rdate} = sprintf("RDATE:");
|
||||||
|
} else { # tz is non-zero, so output the tz as well
|
||||||
|
$v->{i_rdate} = sprintf("RDATE;TZID=%s:", $ical_tzid);
|
||||||
|
}
|
||||||
|
} else { # undefined tz, just floating time
|
||||||
|
$v->{i_rdate} = sprintf("RDATE:");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# now stick the recur_str onto the end
|
||||||
|
$v->{i_rdate} .= $v->{recur_str};
|
||||||
|
# if we ever get memory tight, we can probably undef($v->{recur_str})
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach $v (@events) {
|
||||||
|
# for recurrent events, skip those that arnt the "head"
|
||||||
|
next if ($v->{is_recurrence} and (not $v->{recurlist}));
|
||||||
|
|
||||||
|
if (${$v->{sf}}[4] eq "*") { # no time was given
|
||||||
|
$v->{i_dtstart} = sprintf("DTSTART:%s", $v->{dts});
|
||||||
|
} else {
|
||||||
|
if (defined($ical_tzid)) {
|
||||||
|
if ($ical_tzid eq '') { # tz is defined but empty, so in GMT
|
||||||
|
$v->{i_dtstart} = sprintf("DTSTART:%sZ", $v->{dts});
|
||||||
|
} else { # tz is non-zero, so output the tz as well
|
||||||
|
$v->{i_dtstart} = sprintf("DTSTART;TZID=%s:%s",
|
||||||
|
$ical_tzid, $v->{dts});
|
||||||
|
}
|
||||||
|
} else { # undefined tz, just floating time
|
||||||
|
$v->{i_dtstart} = sprintf("DTSTART:%s", $v->{dts});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (${$v->{sf}}[3] ne "*") { # a duration was given
|
||||||
|
# It's convenient that RFC2445 defines DURATION, thus we
|
||||||
|
# don't need to calculate DTEND, with awkward figuring out
|
||||||
|
# crossing hours, days, months, year, etc. Instead we
|
||||||
|
# will let the iCalendar consuming application worry about it.
|
||||||
|
$v->{i_duration} = sprintf("PT%dM", ${$v->{sf}}[3]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# output header
|
||||||
|
print "BEGIN:VCALENDAR\015\012"
|
||||||
|
. "VERSION:2.0\015\012"
|
||||||
|
. "PRODID:http://mark.atwood.name/code/rem2ics"
|
||||||
|
. " $app_name $app_version\015\012";
|
||||||
|
|
||||||
|
# output each vevent
|
||||||
|
foreach $v (@events) {
|
||||||
|
# for recurrent events, only output the "head", skip the others
|
||||||
|
next if ($v->{is_recurrence} and (not $v->{recurlist}));
|
||||||
|
|
||||||
|
print "BEGIN:VEVENT\015\012";
|
||||||
|
my $tag = ${$v->{sf}}[2];
|
||||||
|
# if $tag is not set, fake up a UID from start time, process id & input line count
|
||||||
|
if ($tag eq "*" || !$options{usetag}) {
|
||||||
|
$tag = sprintf("%x.%x.%x", $^T, $$, $v->{cnt});
|
||||||
|
}
|
||||||
|
# add rem2ics and hostname to UID
|
||||||
|
print &lineify(sprintf("UID:rem2ics.%s@%s",
|
||||||
|
$tag, $ical_uid_hostname));
|
||||||
|
print &lineify("SUMMARY:" . "ify(${$v->{sf}}[5]));
|
||||||
|
print &lineify($v->{i_dtstart});
|
||||||
|
print &lineify("DURATION:" . $v->{i_duration})
|
||||||
|
if ($v->{i_duration});
|
||||||
|
print &lineify($v->{i_rdate})
|
||||||
|
if ($v->{i_rdate});
|
||||||
|
print &lineify("DTSTAMP:" . $ical_dtstamp);
|
||||||
|
print &lineify("COMMENT: generated by $app_name $app_version\\n"
|
||||||
|
. " http://mark.atwood.name/code/rem2ics\\n"
|
||||||
|
. " data[" . $v->{cnt} . "]=|" . "ify($v->{src}) . "|");
|
||||||
|
print "END:VEVENT\015\012";
|
||||||
|
}
|
||||||
|
|
||||||
|
# output trailer
|
||||||
|
print "END:VCALENDAR\015\012";
|
||||||
|
|
||||||
|
|
||||||
|
# integer division, return both quotient and remainder
|
||||||
|
sub idiv {
|
||||||
|
my $n = shift; my $d = shift;
|
||||||
|
my $r = $n; my $q = 0;
|
||||||
|
while ($r >= $d) {
|
||||||
|
$r = $r - $d;
|
||||||
|
$q = $q + 1;
|
||||||
|
}
|
||||||
|
return ($q, $r);
|
||||||
|
}
|
||||||
|
|
||||||
|
# todo, perl5 version that defines ()*, need to specify a requires up top
|
||||||
|
sub lineify {
|
||||||
|
return join("\015\012 ", unpack('(A72)*', shift)) . "\015\012";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub quotify {
|
||||||
|
my $s = shift;
|
||||||
|
return $s if $s =~ m/^(\w| )*$/;
|
||||||
|
|
||||||
|
$s =~ s/\\/\\\\/gso;
|
||||||
|
$s =~ s/\n/\\n/gso;
|
||||||
|
$s =~ s/\s/ /gso;
|
||||||
|
$s =~ s/\"/\\"/gso;
|
||||||
|
$s =~ s/\,/\\,/gso;
|
||||||
|
$s =~ s/\:/\\:/gso;
|
||||||
|
$s =~ s/\;/\\;/gso;
|
||||||
|
|
||||||
|
return $s;
|
||||||
|
}
|
||||||
|
|
||||||
|
__END__
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
EOF
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
Name: rem2ics
|
||||||
|
Version: 0.93
|
||||||
|
Release: 1%{?dist}
|
||||||
|
Summary: Converts the output of "remind -s" into RFC2445 iCalendar format
|
||||||
|
|
||||||
|
Group: Applications/Productivity
|
||||||
|
License: GPLv2+
|
||||||
|
URL: http://mark.atwood.name/code/rem2ics/
|
||||||
|
Source0: http://mark.atwood.name/code/rem2ics/rem2ics-%{version}.tar.gz
|
||||||
|
Source1: rem2ics-Makefile
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
|
|
||||||
|
BuildArch: noarch
|
||||||
|
BuildRequires: perl
|
||||||
|
|
||||||
|
|
||||||
|
%description
|
||||||
|
rem2ics converts the output of "remind -s" into RFC2445 iCalendar format.
|
||||||
|
You may want to install remind if you install this package.
|
||||||
|
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -c
|
||||||
|
cp -a %SOURCE1 Makefile
|
||||||
|
|
||||||
|
|
||||||
|
%build
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
|
||||||
|
%install
|
||||||
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
mkdir $RPM_BUILD_ROOT
|
||||||
|
make install DESTDIR=$RPM_BUILD_ROOT
|
||||||
|
|
||||||
|
|
||||||
|
%clean
|
||||||
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root,-)
|
||||||
|
%doc
|
||||||
|
%{_bindir}/rem2ics
|
||||||
|
%{_mandir}/man1/rem2ics.1*
|
||||||
|
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Tue Mar 25 2008 Till Maas <opensource till name> - 0.92-1
|
||||||
|
- initial spec for Fedora
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
Remind-conf-mode is a configuration mode designed to make it a little easier to configure remind using emacs.
|
||||||
|
|
||||||
|
It offers a vibrant colour syntax highlighting for those who like lots of colour, simple indentation and some hopefully useful functions for entering times and dates. Those functions have been exposed in a special menu for remind for those who have not turned off the emacs menu system.
|
||||||
|
|
||||||
|
Just copy remind-conf-mode.el to your elisp folder (whatever it is called) make sure it is in your path so emacs know where to look for it, and put (require 'remind-conf-mode) in your dotemacs file.
|
||||||
|
|
||||||
|
There are some more complex instructions in the file itself.
|
||||||
|
|
||||||
|
Have fun and if you can think of any improvements let me know, or fork it to your own git repository and experiment away.
|
||||||
|
|
||||||
|
The faux-locale branch has code for choosing the language you use remind in. Please try it out and let me know if there are any problems with it.
|
||||||
|
|
||||||
|
Shelagh
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
;;; setup for remind autocompletion (totally optional)
|
||||||
|
|
||||||
|
;; put something like
|
||||||
|
;; (add-hook 'remind-conf-mode '(load-library "ac-remind")) in your .emacs file.
|
||||||
|
(require 'auto-complete)
|
||||||
|
|
||||||
|
(define-key ac-complete-mode-map "\r" nil)
|
||||||
|
|
||||||
|
(defvar ac-remind-keywords
|
||||||
|
'((candidates
|
||||||
|
. (lambda ()
|
||||||
|
(all-completions ac-target remind-keywords ))))
|
||||||
|
"Source for remind-conf completion keywords.")
|
||||||
|
|
||||||
|
(defvar ac-remind-time-words
|
||||||
|
'((candidates
|
||||||
|
. (lambda ()
|
||||||
|
(all-completions ac-target remind-time-words))))
|
||||||
|
"Source for remind-conf time words completions.")
|
||||||
|
|
||||||
|
(defvar ac-remind-builtin-variables
|
||||||
|
'((candidates
|
||||||
|
. (lambda ()
|
||||||
|
(all-completions ac-target remind-builtin-variables))))
|
||||||
|
"Source for remind-conf builtin variables.")
|
||||||
|
|
||||||
|
(defvar ac-remind-type-keywords
|
||||||
|
'((candidates
|
||||||
|
. (lambda ()
|
||||||
|
(all-completions ac-target remind-type-keywords))))
|
||||||
|
"Source for remind-conf type keywords.")
|
||||||
|
|
||||||
|
(defvar ac-remind-builtin-functions
|
||||||
|
'((candidates
|
||||||
|
. (lambda ()
|
||||||
|
(all-completions ac-target remind-builtin-functions))))
|
||||||
|
"Source for remind-conf completion builtin functions.")
|
||||||
|
|
||||||
|
(add-hook 'remind-conf-mode-hook
|
||||||
|
(lambda () "Makes auto-completion work in remind-conf-mode"
|
||||||
|
(make-local-variable 'ac-sources)
|
||||||
|
(setq ac-sources '(ac-remind-keywords
|
||||||
|
ac-remind-builtin-variables
|
||||||
|
ac-remind-builtin-functions
|
||||||
|
ac-remind-type-keywords
|
||||||
|
ac-remind-time-words
|
||||||
|
ac-source-abbrev))
|
||||||
|
(auto-complete-mode 1)))
|
||||||
|
|
||||||
|
(provide 'ac-remind)
|
||||||
|
;; (define-skeleton ac-look
|
||||||
|
;; ""
|
||||||
|
;; (skeleton-read "well? ")
|
||||||
|
;; "(when (looking-at (regexp-opt remind-" str " 'words))" \n
|
||||||
|
;; >"(setq ac-sources '(ac-remind-" str ")))"
|
||||||
|
;; )
|
||||||
@@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||||
@@ -0,0 +1,534 @@
|
|||||||
|
;;; remind-conf-mode.el --- A mode to help configure remind.
|
||||||
|
|
||||||
|
;; Copyright (C) 2008 - 2011 Shelagh Manton <shelagh.manton@gmail.com>
|
||||||
|
|
||||||
|
;; Author: Shelagh Manton <shelagh.manton@gmail.com> with help from
|
||||||
|
;; Dianne Skoll
|
||||||
|
;; Keywords: remind configure convenience
|
||||||
|
;; Version: 0.15-dfs2
|
||||||
|
|
||||||
|
;; This program is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU General Public License
|
||||||
|
;; as published by the Free Software Foundation; either version 2
|
||||||
|
;; of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
;; This program is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;; GNU General Public License for more details.
|
||||||
|
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with this program; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;; Use this mode to help with the configuration of remind configuration files.
|
||||||
|
;; Put (require 'remind-conf-mode) in your .emacs file
|
||||||
|
;; or (autoload 'remind-conf-mode "remind-conf-mode" "Mode to help with remind files" t)
|
||||||
|
;; also put (add-to-list 'auto-mode-alist '("\\.rem\\'" . remind-conf-mode)) and
|
||||||
|
;; (setq auto-mode-alist
|
||||||
|
;; (cons '(".reminders$" . remind-conf-mode) auto-mode-alist))
|
||||||
|
;; if you want to have the mode work automatically when you open a remind configuration file.
|
||||||
|
|
||||||
|
;; If you want to use the auto-complete stuff, you will need to download and install the
|
||||||
|
;; auto-complete library from http://www.cx4a.org/pub/auto-complete.el and put
|
||||||
|
;; (require 'auto-complete) in your Emacs with
|
||||||
|
;; (add-hook 'remind-conf-mode-hook
|
||||||
|
;; (lambda ()
|
||||||
|
;; (make-local-variable 'ac-sources)
|
||||||
|
;; (setq ac-sources '(ac-remind-conf ac-remind-builtin-variables ac-remind-builtin-functions))
|
||||||
|
;; (auto-complete t)))
|
||||||
|
;; in your .emacs file
|
||||||
|
|
||||||
|
;; PS. you could add ac-source-abbrev ac-source-words-in-buffer to have abbrevs and
|
||||||
|
;; other words in buffer auto-complete too
|
||||||
|
|
||||||
|
;;; History:
|
||||||
|
;;Thu, Nov 26, 2009
|
||||||
|
;; sorted out why the rem-save-file was not working. fixed.
|
||||||
|
;;
|
||||||
|
;; Thu, Feb 14, 2008
|
||||||
|
;; Based mode on wpld-mode tutorial and sample-mode on emacs wiki.
|
||||||
|
;; Ideas from mupad.el for font-lock styles.
|
||||||
|
;; Mon, Jan 26, 2008
|
||||||
|
;; Added rem-setup-colors to make it easy for colourised remind output.
|
||||||
|
;; Added a demo skeleton for people to copy for easy entry of coloured remind entries.
|
||||||
|
;; tried to hook in the auto-complete library so that all known functions and keywords can be easily entered.
|
||||||
|
;; EXPERIMENTAL, but seems to work well here (emacs cvs).
|
||||||
|
;; Seems to work without case folding which is nice.
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
|
||||||
|
(require 'font-lock); this goes in the define-derived-mode part.
|
||||||
|
(when (featurep 'xemacs)
|
||||||
|
(require 'overlay)) ;supposed to make it compatible with Xemacs.
|
||||||
|
|
||||||
|
|
||||||
|
(defgroup remind-conf nil
|
||||||
|
"Options for remind-conf-mode."
|
||||||
|
:group 'remind-conf
|
||||||
|
:prefix "remind-conf-")
|
||||||
|
|
||||||
|
|
||||||
|
(defvar remind-conf-mode-hook nil
|
||||||
|
"Hook to run in `remind-conf-mode'.")
|
||||||
|
|
||||||
|
;; keymap
|
||||||
|
|
||||||
|
(defvar remind-conf-mode-map
|
||||||
|
(let ((remind-conf-mode-map (make-sparse-keymap)))
|
||||||
|
remind-conf-mode-map)
|
||||||
|
"Keymap for `remind-conf-mode'.")
|
||||||
|
|
||||||
|
(define-key remind-conf-mode-map "\C-c\C-r" 'rem-skel)
|
||||||
|
(define-key remind-conf-mode-map "\C-c\C-t" 'rem-today)
|
||||||
|
(define-key remind-conf-mode-map "\C-c\C-d" 'rem-today-skel)
|
||||||
|
(define-key remind-conf-mode-map "\C-c\C-w" 'rem-week-away)
|
||||||
|
(define-key remind-conf-mode-map "\C-c\C-W" 'rem-weeks-away)
|
||||||
|
(define-key remind-conf-mode-map "\C-c\C-x" 'rem-tomorrow)
|
||||||
|
(define-key remind-conf-mode-map "\C-c\C-a" 'rem-days-away)
|
||||||
|
(define-key remind-conf-mode-map "\M-j" 'remind-indent-line)
|
||||||
|
(define-key remind-conf-mode-map "\C-c\C-c" 'rem-save-file)
|
||||||
|
|
||||||
|
;; syntax-table
|
||||||
|
|
||||||
|
(defvar remind-conf-syntax-table
|
||||||
|
(let ((remind-conf-syntax-table (make-syntax-table text-mode-syntax-table)))
|
||||||
|
(modify-syntax-entry ?\; ". 1b" remind-conf-syntax-table)
|
||||||
|
(modify-syntax-entry ?\# ". 1b" remind-conf-syntax-table)
|
||||||
|
(modify-syntax-entry ?\n "> b" remind-conf-syntax-table)
|
||||||
|
;Names with _ are still one word.
|
||||||
|
(modify-syntax-entry ?_ "w" remind-conf-syntax-table)
|
||||||
|
(modify-syntax-entry ?. "w" remind-conf-syntax-table)
|
||||||
|
remind-conf-syntax-table)
|
||||||
|
"Syntax table for `remind-conf-mode'.")
|
||||||
|
|
||||||
|
;;; keyword sets
|
||||||
|
|
||||||
|
(defconst remind-keywords
|
||||||
|
(sort
|
||||||
|
(list "ADDOMIT" "AFTER" "AT" "BAN" "BANNER" "BEFORE" "CAL" "CLEAR"
|
||||||
|
"CLEAR-OMIT-CONTEXT" "DEBUG" "DO" "DUMP" "DUMPVARS" "DURATION" "ELSE"
|
||||||
|
"ENDIF" "ERRMSG" "EXIT" "EXPR" "FIRST" "FLUSH" "FOURTH" "FRENAME" "FROM" "FSET"
|
||||||
|
"FUNSET" "IF" "IFTRIG" "IN" "INC" "INCLUDE" "INCLUDECMD" "LAST"
|
||||||
|
"LASTDAY" "LASTWORKDAY" "MAYBE" "MAYBE-UNCOMPUTABLE" "MSF" "MSG"
|
||||||
|
"NOQUEUE" "OMIT" "OMITFUNC" "ONCE" "POP" "POP-OMIT-CONTEXT" "PRESERVE"
|
||||||
|
"PRIORITY" "PS" "PSFILE" "PUSH" "PUSH-OMIT-CONTEXT" "REM" "RUN"
|
||||||
|
"SATISFY" "SCAN" "SCANFROM" "SCHED" "SECOND" "SET" "SKIP" "SPECIAL"
|
||||||
|
"SYSINCLUDE" "TAG" "THIRD" "THROUGH" "TRANSLATE" "TRANS" "UNSET"
|
||||||
|
"UNTIL" "WARN")
|
||||||
|
#'(lambda (a b) (> (length a) (length b)))))
|
||||||
|
|
||||||
|
|
||||||
|
(defconst remind-type-keywords
|
||||||
|
(sort
|
||||||
|
(list "INT" "STRING" "TIME" "DATE" "SHADE" "DATETIME")
|
||||||
|
#'(lambda (a b) (> (length a) (length b)))))
|
||||||
|
|
||||||
|
(defconst remind-builtin-variables
|
||||||
|
(sort
|
||||||
|
(list " $AddBlankLines" "$Ago" "$Am" "$And" "$April" "$At" "$August"
|
||||||
|
"$CalcUTC" "$CalMode" "$Daemon" "$DateSep" "$DateTimeSep" "$December"
|
||||||
|
"$DedupeReminders" "$DefaultColor" "$DefaultDelta"
|
||||||
|
"$DefaultPrio" "$DefaultTDelta" "$DeltaOverride"
|
||||||
|
"$DontFork" "$DontQueue" "$DontTrigAts" "$EndSent" "$EndSentIg"
|
||||||
|
"$ExpressionTimeLimit" "$February" "$FirstIndent" "$FoldYear"
|
||||||
|
"$FormWidth" "$Friday" "$Fromnow" "$Hour" "$Hplu" "$HushMode"
|
||||||
|
"$IgnoreOnce" "$InfDelta" "$IntMax" "$IntMin" "$Is" "$January" "$July"
|
||||||
|
"$June" "$LatDeg" "$Latitude" "$LatMin" "$LatSec" "$Location"
|
||||||
|
"$LongDeg" "$Longitude" "$LongMin" "$LongSec" "$March" "$MaxFullOmits"
|
||||||
|
"$MaxLateMinutes" "$MaxPartialOmits" "$MaxSatIter" "$MaxStringLen"
|
||||||
|
"$May" "$MinsFromUTC" "$Minute" "$Monday" "$Mplu" "$NextMode"
|
||||||
|
"$November" "$Now" "$NumFullOmits" "$NumPartialOmits" "$NumQueued"
|
||||||
|
"$NumTrig" "$October" "$On" "$OnceFile" "$ParseUntriggered" "$Pm"
|
||||||
|
"$PrefixLineNo" "$PSCal" "$RunOff" "$Saturday" "$September"
|
||||||
|
"$SimpleCal" "$SortByDate" "$SortByPrio" "$SortByTime" "$SubsIndent"
|
||||||
|
"$Sunday" "$SuppressImplicitWarnings" "$SuppressLRM" "$SysInclude" "$T" "$Td"
|
||||||
|
"$TerminalBackground" "$Thursday" "$TimeSep" "$Tm" "$Today"
|
||||||
|
"$Tomorrow" "$Tt" "$Tuesday" "$Tw" "$Ty" "$U" "$Ud" "$Um"
|
||||||
|
"$UntimedFirst" "$Use256Colors" "$UseBGVTColors" "$UseTrueColors"
|
||||||
|
"$UseVTColors" "$Uw" "$Uy" "$Was" "$Wednesday")
|
||||||
|
#'(lambda (a b) (> (length a) (length b)))))
|
||||||
|
|
||||||
|
(defconst remind-time-words
|
||||||
|
(sort
|
||||||
|
(list "Apr" "April" "Aug" "August" "Dec" "December" "Feb" "February"
|
||||||
|
"Jan" "January" "Jul" "July" "Jun" "June" "Mar" "March" "May"
|
||||||
|
"Nov" "November" "Oct" "October" "Sep" "September" "Fri"
|
||||||
|
"Friday" "Mon" "Monday" "Sat" "Saturday" "Sun" "Sunday" "Thu"
|
||||||
|
"Thursday" "Tue" "Tuesday" "Wed" "Wednesday")
|
||||||
|
#'(lambda (a b) (> (length a) (length b)))))
|
||||||
|
|
||||||
|
(defconst remind-builtin-functions
|
||||||
|
(sort
|
||||||
|
(list "_" "abs" "access" "adawn" "adusk" "ampm" "ansicolor" "args" "asc"
|
||||||
|
"baseyr" "char" "choose" "coerce" "columns" "current" "date"
|
||||||
|
"datepart" "datetime" "dawn" "day" "daysinmon" "defined" "dosubst"
|
||||||
|
"dusk" "easterdate" "evaltrig" "filedate" "filedatetime" "filedir"
|
||||||
|
"filename" "getenv" "hebdate" "hebday" "hebmon" "hebyear" "hour"
|
||||||
|
"htmlescape" "htmlstriptags" "iif" "index" "isany" "isdst" "isleap"
|
||||||
|
"isomitted" "language" "localtoutc" "lower" "max" "min" "minsfromutc"
|
||||||
|
"minute" "mon" "monnum" "moondate" "moondatetime" "moonphase"
|
||||||
|
"moontime" "multitrig" "ndawn" "ndusk" "nonomitted" "now" "ord"
|
||||||
|
"orthodoxeaster" "ostype" "pad" "plural" "psmoon" "psshade"
|
||||||
|
"realcurrent" "realnow" "realtoday" "rows" "sgn" "shell" "shellescape"
|
||||||
|
"slide" "soleq" "stdout" "strlen" "substr" "sunrise" "sunset" "time"
|
||||||
|
"timepart" "timezone" "today" "trig" "trigback" "trigdate"
|
||||||
|
"trigdatetime" "trigdelta" "trigduration" "trigeventduration"
|
||||||
|
"trigeventstart" "trigfrom" "trigger" "trigpriority" "trigrep"
|
||||||
|
"trigscanfrom" "trigtags" "trigtime" "trigtimedelta" "trigtimerep"
|
||||||
|
"triguntil" "trigvalid" "typeof" "tzconvert" "upper" "utctolocal"
|
||||||
|
"value" "version" "weekno" "wkday" "wkdaynum" "year")
|
||||||
|
#'(lambda (a b) (> (length a) (length b)))))
|
||||||
|
|
||||||
|
;;; faces
|
||||||
|
;;example of setting up special faces for a mode.
|
||||||
|
|
||||||
|
(defvar remind-conf-command-face 'remind-conf-command-face
|
||||||
|
"Remind commands.")
|
||||||
|
(defface remind-conf-command-face
|
||||||
|
'((t :foreground "#FF8080"))
|
||||||
|
"Font Lock mode face used to highlight commands."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-conf-keyword-face 'remind-conf-keyword-face
|
||||||
|
"Remind keywords.")
|
||||||
|
(defface remind-conf-keyword-face
|
||||||
|
'((t :foreground "#FFFF80"))
|
||||||
|
"Font Lock mode face used to highlight keywords."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-conf-substitutes-face 'remind-conf-substitutes-face
|
||||||
|
"Remind substitutes.")
|
||||||
|
(defface remind-conf-substitutes-face
|
||||||
|
'((t :foreground "#8080FF"))
|
||||||
|
"Font Lock mode face used to highlight substitutes."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-conf-endline-face 'remind-conf-endline-face
|
||||||
|
"Remind endline.")
|
||||||
|
(defface remind-conf-endline-face
|
||||||
|
'((t :foreground "goldenrod2" :bold t))
|
||||||
|
"Font Lock mode face used to highlight commands."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-conf-variable-face 'remind-conf-variable-face
|
||||||
|
"Remind variable.")
|
||||||
|
(defface remind-conf-variable-face
|
||||||
|
'((t :foreground "#FF8080" :bold t))
|
||||||
|
"Font Lock mode face used to highlight commands."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-conf-color-face 'remind-conf-color-face
|
||||||
|
"Remind color variables.")
|
||||||
|
(defface remind-conf-color-face
|
||||||
|
'((t :foreground "gold" :bold t))
|
||||||
|
"Font Lock mode face used to highlight color changes."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-conf-delta-face 'remind-conf-delta-face
|
||||||
|
"Remind deltas.")
|
||||||
|
(defface remind-conf-delta-face
|
||||||
|
'((t :foreground "sandy brown" :bold t))
|
||||||
|
"Font Lock mode face used to highlight deltas."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-comment-face 'remind-comment-face
|
||||||
|
"Remind comments.")
|
||||||
|
(defface remind-comment-face
|
||||||
|
'((t :foreground "#FF7F24"))
|
||||||
|
"Font-lock face for highlighting comments."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-string-face 'remind-string-face
|
||||||
|
"Remind strings.")
|
||||||
|
(defface remind-string-face
|
||||||
|
'((t :foreground "#FF7FE0"))
|
||||||
|
"Font lock mode face used to highlight strings."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-time-face 'remind-time-face
|
||||||
|
"Remind time words.")
|
||||||
|
(defface remind-time-face
|
||||||
|
'((t :foreground "LightSeaGreen" :bold t))
|
||||||
|
"Font lock mode face to highlight time phrases."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defvar remind-conf-type-face 'remind-conf-type-face
|
||||||
|
"Remind type keywords.")
|
||||||
|
(defface remind-conf-type-face
|
||||||
|
'((t :foreground "orange" :bold t))
|
||||||
|
"Font lock mode face to highlight type keywords."
|
||||||
|
:group 'remind-conf)
|
||||||
|
|
||||||
|
(defcustom rem-post-save-function ""
|
||||||
|
"Name of shell function that can be run when you save and close a remind file."
|
||||||
|
:type 'string
|
||||||
|
:group 'remind-conf
|
||||||
|
)
|
||||||
|
|
||||||
|
(defconst remind-keywords-regex (regexp-opt remind-keywords 'words))
|
||||||
|
(defconst remind-type-keywords-regex (regexp-opt remind-type-keywords 'words))
|
||||||
|
(defconst remind-builtin-variables-regex (regexp-opt remind-builtin-variables 'words))
|
||||||
|
(defconst remind-builtin-functions-regex (regexp-opt remind-builtin-functions 'words))
|
||||||
|
(defconst remind-time-words-regex (regexp-opt remind-time-words 'words))
|
||||||
|
|
||||||
|
;; Case-insensitive matching functions
|
||||||
|
(defun remind-keywords-matcher (limit)
|
||||||
|
(let ((case-fold-search t))
|
||||||
|
(re-search-forward remind-keywords-regex limit 'no-error)))
|
||||||
|
(defun remind-type-keywords-matcher (limit)
|
||||||
|
(let ((case-fold-search t))
|
||||||
|
(re-search-forward remind-type-keywords-regex limit 'no-error)))
|
||||||
|
(defun remind-builtin-variables-matcher (limit)
|
||||||
|
(let ((case-fold-search t))
|
||||||
|
(re-search-forward remind-builtin-variables-regex limit 'no-error)))
|
||||||
|
(defun remind-builtin-functions-matcher (limit)
|
||||||
|
(let ((case-fold-search t))
|
||||||
|
(re-search-forward remind-builtin-functions-regex limit 'no-error)))
|
||||||
|
(defun remind-time-words-matcher (limit)
|
||||||
|
(let ((case-fold-search t))
|
||||||
|
(re-search-forward remind-time-words-regex limit 'no-error)))
|
||||||
|
|
||||||
|
;; keywords
|
||||||
|
|
||||||
|
(defconst remind-conf-font-lock-keywords-1
|
||||||
|
(list
|
||||||
|
'("^\s*[\;\#].*$" . remind-comment-face)
|
||||||
|
'("\"[^\"]*\"" . remind-string-face)
|
||||||
|
'(remind-keywords-matcher . remind-conf-keyword-face)
|
||||||
|
'("%[\"_]" . font-lock-warning-face)
|
||||||
|
'("\\(%[a-z]\\)" . remind-conf-substitutes-face)
|
||||||
|
"Minimal font-locking for `remind-conf-mode'."))
|
||||||
|
|
||||||
|
(defconst remind-conf-font-lock-keywords-2
|
||||||
|
(append remind-conf-font-lock-keywords-1
|
||||||
|
(list
|
||||||
|
'(remind-time-words-matcher . remind-time-face)
|
||||||
|
'(remind-builtin-functions-matcher . remind-conf-command-face)
|
||||||
|
'("%$" . remind-conf-endline-face)))
|
||||||
|
"Additional commands to highlight in `remind-conf-mode'.")
|
||||||
|
|
||||||
|
(defconst remind-conf-font-lock-keywords-3
|
||||||
|
(append remind-conf-font-lock-keywords-2
|
||||||
|
(list
|
||||||
|
'(remind-type-keywords-matcher . remind-conf-type-face)
|
||||||
|
'("\[[a-zA-Z]\\{3,6\\}\]" . remind-conf-color-face)
|
||||||
|
'("\\s-+\\([12][0-9]\\|3[01]\\|0?[0-9]\\)\\s-+" . remind-conf-substitutes-face);better date regexp
|
||||||
|
'("\\s-+\\([12][09][0-9][0-9][-/]\\(0[1-9]\\|1[0-2]\\)[-/]\\([12][0-9]\\|0[1-9]\\|3[01]\\)\\)\\s-+" . remind-time-face) ;; pseudo ISO 8601 date format.
|
||||||
|
'("\\s-+\\([12][09][0-9][0-9][-/]\\(0[1-9]\\|1[0-2]\\)[-/]\\([12][0-9]\\|0[1-9]\\|3[01]\\)\\)@\\(2[0-4]\\|[01]?[0-9][.:][0-5][0-9]\\)\\s-+" . remind-time-face) ;;extended pseudo ISO time format
|
||||||
|
'("\\s-+\\(\\(?:20\\|19\\)[0-9][0-9]\\)\\s-+" . remind-conf-substitutes-face);years
|
||||||
|
'("\\s-+\\(2[0-4]\\|[01]?[0-9][.:][0-5][0-9]\\)\\s-+" . remind-conf-substitutes-face);24hour clock, more precise
|
||||||
|
'("\\s-+\\([+-][+-]?[1-9][0-9]*\\)\\s-+" 1 remind-conf-delta-face prepend)
|
||||||
|
'(remind-builtin-variables-matcher . remind-conf-variable-face)))
|
||||||
|
"The ultimate in highlighting experiences for `remind-conf-mode'.")
|
||||||
|
|
||||||
|
;;YYYY-MM-DD@hh:mm, YYYY-MM-DD@hh.mm, YYYY/MM/DD@hh:mm and YYYY/MM/DD@hh.mm
|
||||||
|
|
||||||
|
(defcustom remind-conf-font-lock-keywords 'remind-conf-font-lock-keywords-3
|
||||||
|
"Font-lock highlighting level for `remind-conf-mode'."
|
||||||
|
:group 'remind-conf
|
||||||
|
:type '(choice (const :tag "Barest minimum of highlighting." remind-conf-font-lock-keywords-1)
|
||||||
|
(const :tag "Medium highlighting." remind-conf-font-lock-keywords-2)
|
||||||
|
(const :tag "Fruit salad." remind-conf-font-lock-keywords-3)))
|
||||||
|
|
||||||
|
;;; Indentation (I'm sure this could be made more simple. But at least it works.)
|
||||||
|
|
||||||
|
(defcustom remind-indent-level 4
|
||||||
|
"User definable indentation."
|
||||||
|
:group 'remind-conf
|
||||||
|
:type '(integer)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun remind-indent-line ()
|
||||||
|
"Indent current line for remind configuration files."
|
||||||
|
(interactive)
|
||||||
|
(forward-line 0) ;remember this happens on every line as it is done per line basis
|
||||||
|
(if (bobp)
|
||||||
|
(indent-line-to 0)
|
||||||
|
(let ((not-indented t) cur-indent)
|
||||||
|
(if (looking-at "^[ \t]*\\<\\(ENDIF\\|POP\\(?:-OMIT-CONTEXT\\)?\\)\\>")
|
||||||
|
(progn
|
||||||
|
(save-excursion
|
||||||
|
(forward-line -1)
|
||||||
|
(setq cur-indent (- (current-indentation) remind-indent-level))) ;note that not-indented is still t
|
||||||
|
(if (< cur-indent 0) (setq cur-indent 0)))
|
||||||
|
(save-excursion
|
||||||
|
(while not-indented
|
||||||
|
(forward-line -1)
|
||||||
|
(if (looking-at "^[ \t]*\\<\\(ENDIF\\|POP\\(?:-OMIT-CONTEXT\\)?\\)\\>")
|
||||||
|
(progn
|
||||||
|
(setq cur-indent 0)
|
||||||
|
(delete-horizontal-space) ;don't know why I need this when other similar indent functions don't.
|
||||||
|
(setq not-indented nil))
|
||||||
|
(if (looking-at "\\<\\(IF\\(?:TRIG\\)?\\|PUSH\\(?:-OMIT-CONTEXT\\)?\\)\\>")
|
||||||
|
(progn
|
||||||
|
(setq cur-indent remind-indent-level)
|
||||||
|
(setq not-indented nil))
|
||||||
|
(if (bobp)
|
||||||
|
(setq not-indented nil))))))
|
||||||
|
(if cur-indent
|
||||||
|
(indent-line-to cur-indent)
|
||||||
|
(indent-line-to 0))))))
|
||||||
|
|
||||||
|
;;; Convenience functions
|
||||||
|
|
||||||
|
(define-skeleton rem-skel
|
||||||
|
"Skeleton to insert a rem line in a remind configuration file.
|
||||||
|
|
||||||
|
If you don't want an optional feature just RET and move on."
|
||||||
|
nil
|
||||||
|
'(setq v1 (skeleton-read "How many days in future?: "))
|
||||||
|
"REM " (rem-days-away (string-to-number v1))
|
||||||
|
("Optional: How many days warning? " " +" str )
|
||||||
|
resume:
|
||||||
|
("Optional: At what time? Format eg 13:00. " " AT " str)
|
||||||
|
resume:
|
||||||
|
("Optional: How many minutes warning? " " +" str )
|
||||||
|
resume:
|
||||||
|
("Optional: At what priority? eg 0-9999" " PRIORITY " str )
|
||||||
|
resume:
|
||||||
|
" MSG %\"" (skeleton-read "Your message? " )"%b%\"%" \n
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-skeleton rem-today-skel
|
||||||
|
"Skeleton to insert a line for today's date."
|
||||||
|
nil
|
||||||
|
"REM " (format-time-string "%d %b %Y")
|
||||||
|
("Optional: At what time? Format eg 13:20. " " AT " str)
|
||||||
|
resume:
|
||||||
|
("Optional: How many minutes warning? " " +" str )
|
||||||
|
resume:
|
||||||
|
("Optional: At what priority? eg 0-9999" " PRIORITY " str )
|
||||||
|
resume:
|
||||||
|
" MSG " (skeleton-read "Your message? " )"%b.%" \n
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun rem-today ()
|
||||||
|
"Insert the date for today in a remind friendly style."
|
||||||
|
(interactive)
|
||||||
|
(insert (format-time-string "%e %b %Y")))
|
||||||
|
|
||||||
|
(defun rem-tomorrow ()
|
||||||
|
"Insert tomorrow's date in a remind friendly style."
|
||||||
|
(interactive)
|
||||||
|
(insert (format-time-string "%e %b %Y" (time-add (current-time) (days-to-time 1)))))
|
||||||
|
|
||||||
|
(defun rem-days-away (arg)
|
||||||
|
"Insert a day ARG number of days in the future."
|
||||||
|
(interactive "nHow many Days?: ")
|
||||||
|
(insert (format-time-string "%e %b %Y" (time-add (current-time) (days-to-time arg)))))
|
||||||
|
|
||||||
|
(defun rem-week-away ()
|
||||||
|
"Insert a day 7 days in the future."
|
||||||
|
(interactive)
|
||||||
|
(insert (format-time-string "%e %b %Y" (time-add (current-time) (days-to-time 7)))))
|
||||||
|
|
||||||
|
(defun rem-weeks-away (arg)
|
||||||
|
"Insert a day ARG many weeks in future."
|
||||||
|
(interactive "nHow many weeks?: ")
|
||||||
|
(insert (format-time-string "%e %b %Y" (time-add (current-time) (days-to-time (* 7 arg))))))
|
||||||
|
|
||||||
|
(defun rem-save-file ()
|
||||||
|
"Save the file and start the shell function in one go.
|
||||||
|
|
||||||
|
This function will close the window after running. It needs the
|
||||||
|
variable `rem-post-save-function' to be set. It will be most
|
||||||
|
useful to people who have some sort of function they run to use
|
||||||
|
remind data ie producing calendars."
|
||||||
|
(interactive)
|
||||||
|
(if (boundp 'rem-post-save-function)
|
||||||
|
(progn (save-buffer)
|
||||||
|
(shell-command rem-post-save-function)
|
||||||
|
(kill-buffer-and-window))
|
||||||
|
(error "`rem-post-save-function' variable is not set")))
|
||||||
|
|
||||||
|
(defun rem-setup-colors ()
|
||||||
|
"Insert set of variables for coloured output in remind messages.
|
||||||
|
|
||||||
|
You would only need to do this once in your main reminders file."
|
||||||
|
(interactive)
|
||||||
|
(find-file (expand-file-name "~/.reminders"))
|
||||||
|
(goto-char 0) ;we do want it somewhere near the top of the file.
|
||||||
|
(save-excursion
|
||||||
|
(re-search-forward "\n\n"); squeeze it in where you have a free line.
|
||||||
|
(insert "\nSET Esc CHAR(27)
|
||||||
|
SET Nrm Esc + \"[0m\"
|
||||||
|
SET Blk Esc + \"[0;30m\"
|
||||||
|
SET Red Esc + \"[0;31m\"
|
||||||
|
SET Grn Esc + \"[0;32m\"
|
||||||
|
SET Ylw Esc + \"[0;33m\"
|
||||||
|
SET Blu Esc + \"[0;34m\"
|
||||||
|
SET Mag Esc + \"[0;35m\"
|
||||||
|
SET Cyn Esc + \"[0;36m\"
|
||||||
|
SET Wht Esc + \"[0;37m\"
|
||||||
|
SET Gry Esc + \"[30;1m\"
|
||||||
|
SET BrRed Esc + \"[31;1m\"
|
||||||
|
SET BrGrn Esc + \"[32;1m\"
|
||||||
|
SET BrYlw Esc + \"[33;1m\"
|
||||||
|
SET BrBlu Esc + \"[34;1m\"
|
||||||
|
SET BrMag Esc + \"[35;1m\"
|
||||||
|
SET BrCyn Esc + \"[36;1m\"
|
||||||
|
SET BrWht Esc + \"[37;1m\" \n \n")))
|
||||||
|
|
||||||
|
;; So now you can do things like:
|
||||||
|
|
||||||
|
(define-skeleton rem-birthday
|
||||||
|
"Make birthdays magenta.
|
||||||
|
Acts on the region or places point where it needs to be."
|
||||||
|
nil
|
||||||
|
"[Mag]" _ " [Nrm]")
|
||||||
|
|
||||||
|
(define-skeleton rem-urgent
|
||||||
|
"Colour urgent notices red.
|
||||||
|
Acts on the region or places point where it needs to be."
|
||||||
|
nil
|
||||||
|
"[Red]" _ " [Nrm]")
|
||||||
|
|
||||||
|
;; menu anyone?
|
||||||
|
|
||||||
|
(easy-menu-define remind-menu
|
||||||
|
remind-conf-mode-map
|
||||||
|
"Menu used in remind-conf-mode."
|
||||||
|
(append '("Remind")
|
||||||
|
'([ "Insert a reminder" rem-skel t])
|
||||||
|
'([ "Insert todays date" rem-today t])
|
||||||
|
'([ "Insert tomorrows date" rem-tomorrow t])
|
||||||
|
'([ "How many days away?" rem-days-away t])
|
||||||
|
'([ "A week away" rem-week-away t])
|
||||||
|
'([ "How many weeks away?" rem-weeks-away t])
|
||||||
|
'([ "Birthday color" rem-birthday t])
|
||||||
|
'([ "Urgent color" rem-urgent t])
|
||||||
|
'([ "Save the file and run a script" rem-save-file t])
|
||||||
|
'("-----")
|
||||||
|
'([ "Setting up the colors - once-off" rem-setup-colors t])
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
|
;; finally the derived mode.
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(define-derived-mode remind-conf-mode text-mode "Remind Conf Mode"
|
||||||
|
"Major mode for editing remind calendar configuration files.
|
||||||
|
|
||||||
|
\\{remind-conf-mode-map}"
|
||||||
|
:syntax-table remind-conf-syntax-table
|
||||||
|
(set (make-local-variable 'font-lock-defaults) '(remind-conf-font-lock-keywords))
|
||||||
|
(set (make-local-variable 'comment-start) ";")
|
||||||
|
(set (make-local-variable 'comment-start) "#")
|
||||||
|
(set (make-local-variable 'comment-end) "\n")
|
||||||
|
(set (make-local-variable 'comment-end-skip) "[ \t]*\\(\\s>\\||#\\)")
|
||||||
|
(set (make-local-variable 'skeleton-end-hook) nil) ; so the skeletons will not automatically go to a new line.
|
||||||
|
(set (make-local-variable 'fill-column) '100);cause I was having problems with autofill.
|
||||||
|
(set (make-local-variable 'indent-line-function) 'remind-indent-line)
|
||||||
|
(use-local-map remind-conf-mode-map)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'remind-conf-mode)
|
||||||
|
;;; remind-conf-mode.el ends here
|
||||||
|
|
||||||
|
;;; work out how to make the syntax highlighting work only before the
|
||||||
|
;;; (MSG|MSF) keywords and not after.
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
$Id: README.AMIGA,v 1.3 2000-02-18 03:45:29 dfs Exp $
|
|
||||||
REMIND version 3.0 for AmigaDOS
|
|
||||||
|
|
||||||
I DO NOT SUPPORT REMIND ON AmigaDOS. THE AmigaDOS PORT HAS NOT BEEN MAINTAINED
|
|
||||||
FOR QUITE A WHILE.
|
|
||||||
|
|
||||||
REMIND is a sophisticated alarm/calendar program. Details are given
|
|
||||||
in the man page, "remind.1".
|
|
||||||
|
|
||||||
1 - Read the file COPYRIGHT.
|
|
||||||
|
|
||||||
2 - cd src; examine the files config.h and custom.h and adjust parameters
|
|
||||||
as needed
|
|
||||||
|
|
||||||
3 - If you are using SAS/C to compile Remind, type:
|
|
||||||
|
|
||||||
copy amiga-SCOPTIONS SCOPTIONS
|
|
||||||
smake -f smakefile
|
|
||||||
|
|
||||||
This will create remind, which is ready to be executed.
|
|
||||||
|
|
||||||
[Please note: I CANNOT SUPPORT THE AMIGA VERSION!]
|
|
||||||
|
|
||||||
See README.UNIX for more info.
|
|
||||||
|
|
||||||
--
|
|
||||||
David F. Skoll <dfs@roaringpenguin.com>
|
|
||||||
986 Eiffel Avenue
|
|
||||||
Ottawa, Ontario K2C 0J2
|
|
||||||
CANADA
|
|
||||||
|
|
||||||
Tel. (613) 225-8687
|
|
||||||
http://www.roaringpenguin.com/remind.html
|
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
$Id: README.BCC,v 1.3 2000-02-18 03:45:30 dfs Exp $
|
|
||||||
REMIND version 3.0 for Borland C++
|
|
||||||
|
|
||||||
IMPORTANT NOTE: BCC SUPPORT MAY BE BROKEN. I DON'T CARE. I'M NOT
|
|
||||||
MAINTAINING IT ANY LONGER.
|
|
||||||
|
|
||||||
1 - Read the file COPYRIGHT. (This may be called COPYRIGH on your
|
|
||||||
MS-DOS system.)
|
|
||||||
|
|
||||||
2 - You must use the Borland C++ OS/2 or MSDOS/Windows compiler.
|
|
||||||
|
|
||||||
3 - cd src; examine the files custom.h and config.h and adjust
|
|
||||||
parameters as needed
|
|
||||||
|
|
||||||
4 - Examine the file makefile.bcc and adjust parameters as needed.
|
|
||||||
|
|
||||||
5 - Type:
|
|
||||||
|
|
||||||
make -f makefile.bcc
|
|
||||||
|
|
||||||
This will make 'remind.exe' and 'rem2ps.exe' in the ..\os2-ex or ..\msdos-ex
|
|
||||||
directories.
|
|
||||||
|
|
||||||
See README.UNIX for more info.
|
|
||||||
|
|
||||||
--
|
|
||||||
David F. Skoll <dfs@roaringpenguin.com>
|
|
||||||
986 Eiffel Avenue
|
|
||||||
Ottawa, Ontario K2C 0J2
|
|
||||||
CANADA
|
|
||||||
|
|
||||||
Tel. (613) 225-8687
|
|
||||||
http://www.roaringpenguin.com/remind.html
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
$Id: README.DOS,v 1.3 2000-02-18 03:45:31 dfs Exp $
|
|
||||||
REMIND version 3.0 for MS-DOS
|
|
||||||
|
|
||||||
IMPORTANT NOTE: DOS SUPPORT MAY BE BROKEN. I DON'T CARE. I NO LONGER
|
|
||||||
MAINTAIN THE DOS VERSION.
|
|
||||||
|
|
||||||
REMIND is a sophisticated alarm/calendar program. Details are given
|
|
||||||
in the man page, "remind.1".
|
|
||||||
|
|
||||||
1 - Read the file COPYRIGHT. (This may be called COPYRIGH on your
|
|
||||||
MS-DOS system.)
|
|
||||||
|
|
||||||
2 - cd src; examine the files custom.h and config.h and adjust parameters
|
|
||||||
as needed
|
|
||||||
|
|
||||||
3 - If you are using Turbo C to compile Remind, type:
|
|
||||||
|
|
||||||
make -fmakefile.tc
|
|
||||||
|
|
||||||
If you are using Microsoft C to compile Remind, type:
|
|
||||||
|
|
||||||
make makefile.msc
|
|
||||||
|
|
||||||
This will create REMIND.EXE, which is ready to be executed.
|
|
||||||
|
|
||||||
The file "defs.rem" has some sample Remind definitions and commands,
|
|
||||||
as well as U.S. and Jewish holidays.
|
|
||||||
|
|
||||||
See README.UNIX for more info.
|
|
||||||
|
|
||||||
--
|
|
||||||
David F. Skoll <dfs@roaringpenguin.com>
|
|
||||||
986 Eiffel Avenue
|
|
||||||
Ottawa, Ontario K2C 0J2
|
|
||||||
CANADA
|
|
||||||
|
|
||||||
Tel. (613) 225-8687
|
|
||||||
http://www.roaringpenguin.com/remind.html
|
|
||||||
-114
@@ -1,114 +0,0 @@
|
|||||||
$Id: README.OS2,v 1.3 2000-02-18 03:45:32 dfs Exp $
|
|
||||||
REMIND version 3.0 for OS/2
|
|
||||||
|
|
||||||
I DO NOT SUPPORT REMIND ON OS/2. THE OS/2 PORT HAS NOT BEEN MAINTAINED
|
|
||||||
FOR QUITE A WHILE.
|
|
||||||
|
|
||||||
This file contains instructions for compiling Remind under OS/2 with
|
|
||||||
Eberhard Mattes' emx/gcc compiler and with the Microsoft C compiler.
|
|
||||||
There are a number of targets in Makefile.os2, including OS/2-only
|
|
||||||
versions and bound versions (programs which run under OS/2 and DOS).
|
|
||||||
|
|
||||||
Note that there is also support for OS/2 using the Borland C
|
|
||||||
compiler--see the file README.BCC for details.
|
|
||||||
|
|
||||||
REMIND is a sophisticated alarm/calendar program. Details are given
|
|
||||||
in the man page, "remind.1".
|
|
||||||
|
|
||||||
1 - Read the file COPYRIGHT. (This may be called COPYRIGH on your
|
|
||||||
MS-DOS system.)
|
|
||||||
|
|
||||||
2 - To compile Remind for OS/2, you must use the Microsoft C compiler
|
|
||||||
or emx/gcc. You must also have a decent version of 'make', such
|
|
||||||
as dmake or GNU make.
|
|
||||||
|
|
||||||
3 - Change to "src" directory and examine the files config.h and custom.h
|
|
||||||
and adjust parameters as needed.
|
|
||||||
|
|
||||||
4 - Examine the file Makefile.os2 and adjust parameters as needed.
|
|
||||||
|
|
||||||
5 - Type:
|
|
||||||
|
|
||||||
make -f Makefile.os2
|
|
||||||
|
|
||||||
to see a list of targets. For example,
|
|
||||||
|
|
||||||
make -f Makefile.os2 emx
|
|
||||||
|
|
||||||
will build a 32-bit emx version which runs under OS/2 2.x and DOS.
|
|
||||||
|
|
||||||
NOTE that I do not have access to an OS/2 system, so support for this
|
|
||||||
system may not be as good as I'd like.
|
|
||||||
|
|
||||||
OS/2 support is courtesy of Russ Herman <rwh@gov.on.ca>, Norman Walsh
|
|
||||||
<norm@ora.com>, and Darrel Hankerson <hankedr@mail.auburn.edu>.
|
|
||||||
However, if you have problems, please contact me.
|
|
||||||
|
|
||||||
RELEASE NOTES -- miscellaneous info that couldn't go anywhere else!
|
|
||||||
|
|
||||||
1. POPUP REMINDERS
|
|
||||||
|
|
||||||
If you define the symbol OS2_POPUP in the OS/2 Makefile, you get
|
|
||||||
"full-screen popups" (as implemented by Russ Herman) for all MSG-
|
|
||||||
and MSF-type reminders. You may or may not like this feature.
|
|
||||||
|
|
||||||
One way of implementing popup reminders is to get the program
|
|
||||||
"pmpopup.exe" from ftp-os2.cdrom.com, and using Remind with the
|
|
||||||
'-k' option as follows from C:\STARTUP.CMD:
|
|
||||||
|
|
||||||
start /pm /inv /n remind "-kstart pmpopup %%s" remfile
|
|
||||||
|
|
||||||
Alternatively, if you have the Vrexx package, you can use this
|
|
||||||
procedure suggested by Norman Walsh:
|
|
||||||
|
|
||||||
Start remind like this in C:\STARTUP.CMD:
|
|
||||||
|
|
||||||
start /pm /inv /n \bin\remind -faz "-kstart popupmsg %%s" .reminders
|
|
||||||
|
|
||||||
The popups are done by POPUPMSG.CMD which looks like this:
|
|
||||||
|
|
||||||
-------------- Cut Here ---------- Cut Here ---------- Cut Here --------
|
|
||||||
/* PopUpMsg */
|
|
||||||
|
|
||||||
'@echo off'
|
|
||||||
|
|
||||||
parse arg theargs
|
|
||||||
if theargs = "" then
|
|
||||||
theargs = "Empty message"
|
|
||||||
|
|
||||||
call RxFuncAdd 'VInit', 'VREXX', 'VINIT'
|
|
||||||
initcode = VInit()
|
|
||||||
if initcode = 'ERROR' then signal CLEANUP
|
|
||||||
|
|
||||||
signal on failure name CLEANUP
|
|
||||||
signal on halt name CLEANUP
|
|
||||||
signal on syntax name CLEANUP
|
|
||||||
|
|
||||||
/* example VMsgBox call */
|
|
||||||
|
|
||||||
msg.0 = 1
|
|
||||||
msg.1 = theargs
|
|
||||||
|
|
||||||
call VDialogPos 50, 50
|
|
||||||
call VMsgBox 'Popup Message', msg, 1
|
|
||||||
|
|
||||||
/* end of CMD file */
|
|
||||||
|
|
||||||
CLEANUP:
|
|
||||||
call VExit
|
|
||||||
|
|
||||||
exit
|
|
||||||
-------------- Cut Here ---------- Cut Here ---------- Cut Here --------
|
|
||||||
|
|
||||||
See README.UNIX for some more information about Remind.
|
|
||||||
|
|
||||||
David F. Skoll <dfs@roaringpenguin.com>
|
|
||||||
986 Eiffel Avenue
|
|
||||||
Ottawa, Ontario K2C 0J2
|
|
||||||
CANADA
|
|
||||||
|
|
||||||
Tel. (613) 225-8687
|
|
||||||
http://www.roaringpenguin.com/remind.html
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+16
-44
@@ -1,5 +1,4 @@
|
|||||||
$Id: README.UNIX,v 1.5 2000-02-18 03:45:33 dfs Exp $
|
REMIND version 3.2 for UNIX
|
||||||
REMIND version 3.0 for UNIX
|
|
||||||
|
|
||||||
REMIND is a sophisticated alarm/calendar program. Details are given
|
REMIND is a sophisticated alarm/calendar program. Details are given
|
||||||
in the man page, "remind.1".
|
in the man page, "remind.1".
|
||||||
@@ -7,16 +6,16 @@ in the man page, "remind.1".
|
|||||||
INSTALLING REMIND:
|
INSTALLING REMIND:
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
If you have Tcl/Tk (wish 4.1 or higher) installed and are running X Windows:
|
If you have Tcl/Tk (wish 4.1 or higher) installed and are running X11:
|
||||||
--------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
1) Type: wish ./build.tk from the top-level Remind directory.
|
1) Type: wish ./build.tk from the top-level Remind directory.
|
||||||
Fill in the various options and hit "Build Remind"
|
Fill in the various options and hit "Build Remind"
|
||||||
|
|
||||||
2) Type: "make install" -- you may need to be root to do this.
|
2) Type: "make install" -- you may need to be root to do this.
|
||||||
|
|
||||||
If you do NOT have Tcl/Tk or are NOT running X Windows:
|
If you do NOT have Tcl/Tk or are NOT running X11:
|
||||||
-------------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
1) Edit the file "src/custom.h" according to your preferences.
|
1) Edit the file "src/custom.h" according to your preferences.
|
||||||
|
|
||||||
@@ -29,30 +28,6 @@ If you do NOT have Tcl/Tk or are NOT running X Windows:
|
|||||||
The subdirectory "www" contains scripts for making a nice calendar
|
The subdirectory "www" contains scripts for making a nice calendar
|
||||||
web server. See the files README and Makefile in that directory.
|
web server. See the files README and Makefile in that directory.
|
||||||
|
|
||||||
Two shell scripts, "scripts/remind-all.csh" and
|
|
||||||
"scripts/remind-all.sh" are provided. These allow automatic mailing of
|
|
||||||
reminders to all users who create a $HOME/.reminders file. These two
|
|
||||||
scripts are equivalent; one is a "sh" script and the other is a "csh"
|
|
||||||
script. Pick the one you want to use, and follow the instructions in
|
|
||||||
the opening comments of the script.
|
|
||||||
|
|
||||||
A shell script called "scripts/rem" is provided for those who like to have
|
|
||||||
'remind' assume a default reminders file. A man page for this script
|
|
||||||
is provided. You should examine the script to ensure that the defaults
|
|
||||||
are correct.
|
|
||||||
|
|
||||||
Many people have asked me why I supply the "rem" script instead of
|
|
||||||
having Remind assume a default file. The answer is: That's how I like
|
|
||||||
it! My personal preference is for a program which normally takes
|
|
||||||
parameters to display usage information when invoked with no
|
|
||||||
parameters. I like that behaviour so I can quickly get an idea of
|
|
||||||
what a program does without poring through the man page. And I think
|
|
||||||
I'll keep Remind that way. Sorry to all who dislike it. :-)
|
|
||||||
|
|
||||||
A shell script called "scripts/kall" is provided so you can kill your
|
|
||||||
background remind processes when you log out. See the man page. Note
|
|
||||||
that kall depends on the output of "ps", and may not be portable.
|
|
||||||
|
|
||||||
The file "examples/defs.rem" has some sample Remind definitions and
|
The file "examples/defs.rem" has some sample Remind definitions and
|
||||||
commands, as well as U.S. and Jewish holidays.
|
commands, as well as U.S. and Jewish holidays.
|
||||||
|
|
||||||
@@ -94,16 +69,18 @@ know! Here are the basic guidelines:
|
|||||||
|
|
||||||
- You can test your language file with the script "tests/tstlang.rem"
|
- You can test your language file with the script "tests/tstlang.rem"
|
||||||
|
|
||||||
|
- Your localized strings must be encoded using UTF-8.
|
||||||
|
|
||||||
RELEASE NOTES -- miscellaneous info that couldn't go anywhere else!
|
RELEASE NOTES -- miscellaneous info that couldn't go anywhere else!
|
||||||
|
|
||||||
1. POPUP REMINDERS
|
1. POPUP REMINDERS
|
||||||
|
|
||||||
If you're running under X-Windows and you have the TCL tools,
|
If you're running under X11 and you have the Tcl tools, you can create
|
||||||
you can create simple pop-up reminders by creating the following
|
simple pop-up reminders by creating the following Tcl script called
|
||||||
TCL script called 'popup'. It pops a message on to the screen and
|
'popup'. It pops a message on to the screen and waits for you to
|
||||||
waits for you to press the 'OK' button. If you don't press the OK button
|
press the 'OK' button. If you don't press the OK button within 15
|
||||||
within 15 seconds, it exits anyway. To use it, you can use the '-k' option
|
seconds, it exits anyway. To use it, you can use the '-k' option for
|
||||||
for Remind as follows:
|
Remind as follows:
|
||||||
|
|
||||||
remind "-kpopup '%s'&" .reminders
|
remind "-kpopup '%s'&" .reminders
|
||||||
|
|
||||||
@@ -118,17 +95,12 @@ Norman Walsh.
|
|||||||
#!/usr/local/bin/wish
|
#!/usr/local/bin/wish
|
||||||
wm withdraw .
|
wm withdraw .
|
||||||
after 15000 { destroy . ; exit }
|
after 15000 { destroy . ; exit }
|
||||||
tk_dialog .d { Message } $argv warning 0 { OK }
|
tk_messageBox -message Message -detail $argv -icon info -type ok
|
||||||
destroy .
|
destroy .
|
||||||
exit
|
exit
|
||||||
-------------- Cut Here ---------- Cut Here ---------- Cut Here -------------
|
-------------- Cut Here ---------- Cut Here ---------- Cut Here -------------
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
David F. Skoll <dfs@roaringpenguin.com>
|
Dianne Skoll <dianne@skoll.ca>
|
||||||
986 Eiffel Avenue
|
https://dianne.skoll.ca/projects/remind/
|
||||||
Ottawa, Ontario K2C 0J2
|
|
||||||
CANADA
|
|
||||||
|
|
||||||
Tel. (613) 225-8687
|
|
||||||
http://www.roaringpenguin.com/remind.html
|
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
$Id: README_QDOS,v 1.4 2000-02-18 03:45:34 dfs Exp $
|
|
||||||
REMIND version 3.0.19 for QDOS / SMSQ
|
|
||||||
|
|
||||||
I DO NOT SUPPORT REMIND ON QDOS. THE QDOS PORT HAS NOT BEEN MAINTAINED
|
|
||||||
FOR QUITE A WHILE.
|
|
||||||
|
|
||||||
REMIND is a sophisticated alarm/calendar program. Details are given
|
|
||||||
in the documentation file, "remind_doc" (QUILL format).
|
|
||||||
[Note from David Skoll -- I was not sent the file `remind_doc', so
|
|
||||||
you're on your own here. You'll have to use the UNIX man pages.]
|
|
||||||
|
|
||||||
1 - Read the file COPYRIGHT.
|
|
||||||
|
|
||||||
2 - Change to the directory "src"
|
|
||||||
|
|
||||||
3 - Examine the Makefile and change any parameters which need to be
|
|
||||||
changed for your system. (The makefile for QDOS / SMSQ is
|
|
||||||
makefile_QDOS).
|
|
||||||
|
|
||||||
4 - Examine the files config_h and custom_h and adjust parameters as needed
|
|
||||||
|
|
||||||
5 - Examine lang_h and choose the language you want Remind to use.
|
|
||||||
There has no effort been put in making the language modules working
|
|
||||||
on the QL. You'll have to adjust the files for yourself to get
|
|
||||||
them working (umlauts etc).
|
|
||||||
|
|
||||||
6 - Execute "make;'-fMakefile_QDOS'". Be sure, that your DATA_DEFAULT
|
|
||||||
directory is the directory where the remind source files are
|
|
||||||
placed.
|
|
||||||
|
|
||||||
See README.UNIX for some more information about Remind.
|
|
||||||
|
|
||||||
RELEASE NOTES -- miscellaneous info that couldn't go anywhere else!
|
|
||||||
|
|
||||||
The QDOS / SMSQ version does not support the enhanced features of
|
|
||||||
the UNIX and/or OS/2 versions.
|
|
||||||
|
|
||||||
I had some problems with the sunrise() and sunset() functions,
|
|
||||||
but didn't examine it.
|
|
||||||
|
|
||||||
I've ported Remind on a SMSQ/SGC system. It should work on other
|
|
||||||
systems without problems. The compiler used was C68 v4.14c.
|
|
||||||
|
|
||||||
Remind should work with each QL or compatible with 512K or more RAM.
|
|
||||||
It'll however NOT work on a standard QL due to it's code size.
|
|
||||||
|
|
||||||
Any problems with the QDOS / SMSQ versions should be sent to:
|
|
||||||
|
|
||||||
Robert H. Klein
|
|
||||||
Bluecherstrasse 24
|
|
||||||
D-56349 Kaub
|
|
||||||
|
|
||||||
Germany
|
|
||||||
+2909
File diff suppressed because it is too large
Load Diff
@@ -1,937 +0,0 @@
|
|||||||
CHANGES TO REMIND
|
|
||||||
|
|
||||||
* Version 3.0 Patch 21
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Updated copyright years and contact info.
|
|
||||||
|
|
||||||
- Changed GIF images to PNG to avoid patent problems.
|
|
||||||
|
|
||||||
- Added "cm2trem.tcl" to convert from CDE's "cm" calendar manager to Remind
|
|
||||||
format. It handles only an older version of "cm" data; there is a utility
|
|
||||||
available (under Solaris anyway) to convert newer files to the older "cm"
|
|
||||||
format.
|
|
||||||
|
|
||||||
- Fixed the scripts in the "www" directory to install and work properly.
|
|
||||||
|
|
||||||
- Added "remind.vim" file for Vim syntax highlighting of Remind files,
|
|
||||||
thanks to Davide Alberani.
|
|
||||||
|
|
||||||
- Added "dusk" and "dawn" built-in functions, thanks to Ron Aaron.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Files for no-longer-supported platforms (OS/2, amiga, MS-DOS) have been
|
|
||||||
moved to OBSOLETE subdirectory. They will disappear unless someone
|
|
||||||
wants to maintain them.
|
|
||||||
|
|
||||||
- Fixed typo which caused compilation failure on compilers without function
|
|
||||||
prototypes. Thanks to Ian Darwin for the patch.
|
|
||||||
|
|
||||||
- Fixed compilation problem on FreeBSD, IRIX, Tru64 and other UNIXes.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 20
|
|
||||||
|
|
||||||
+ NEWS
|
|
||||||
|
|
||||||
- I have started a company, Roaring Penguin Software
|
|
||||||
Inc. (http://www.roaringpenguin.com) and it now holds the Remind copyright.
|
|
||||||
|
|
||||||
+ LICENSE CHANGE
|
|
||||||
|
|
||||||
- Remind is now distributed under the pure GPL. See the file WINDOWS for my
|
|
||||||
feelings about a Windows port, however.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Made TkRemind adjust for really low-resolution displays if necessary.
|
|
||||||
|
|
||||||
- Added more print options to TkRemind, courtesy of Niels Kristian Bech Jensen.
|
|
||||||
|
|
||||||
- Added Spanish language support, courtesy of Rafa Couto.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Changed copyright notices to Roaring Penguin Software Inc.
|
|
||||||
|
|
||||||
- Rem2PS was passing specials like HTML, etc. in PostScript output.
|
|
||||||
YECH! Fix courtesty of Derek J. Decker.
|
|
||||||
|
|
||||||
- Fixed a typo in danish.h, courtesy of Niels Kristian Bech Jensen.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 19
|
|
||||||
|
|
||||||
+ MAJOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added MOON and SHADE specials. These now work with PostScript,
|
|
||||||
HTML and Tcl/Tk front-ends. You can have cute moons and shaded
|
|
||||||
boxes on your printer, on your screen and in your web browser. :-)
|
|
||||||
|
|
||||||
- TkRemind overhauled -- you can now edit and delete reminders from
|
|
||||||
the GUI. You can actually reasonably use Remind without learning
|
|
||||||
the scripting language.
|
|
||||||
|
|
||||||
- TkRemind overhauled -- "server mode" added to Remind; TkRemind will
|
|
||||||
now pop up timed reminders.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Updated romanian.h, courtesy Liviu Daia.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Allowed object files to be built in different directory from
|
|
||||||
source files (thanks to Jonathan Kamens <jik@American.COM>
|
|
||||||
|
|
||||||
- Removed restriction against reading group-writable files. This
|
|
||||||
caused headaches on Red Hat Linux which uses an unusual user/group
|
|
||||||
scheme.
|
|
||||||
|
|
||||||
- Remind would not compile if a non-English language was selected.
|
|
||||||
|
|
||||||
- Fixed free() of a NULL pointer.
|
|
||||||
|
|
||||||
- Made tkremind display a helpful error message if Remind's
|
|
||||||
"security feature" of not reading a group-writable file kicks
|
|
||||||
in.
|
|
||||||
|
|
||||||
- Fixed bug which sometimes prevented reminder times from appearing
|
|
||||||
in a calendar display.
|
|
||||||
|
|
||||||
- Lots more silly little bugs squashed -- too many to go into in
|
|
||||||
detail.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 18
|
|
||||||
|
|
||||||
+ MAJOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added the script "build.tk" which makes it trivial to compile
|
|
||||||
and install Remind under UNIX -- no need to edit Makefiles or
|
|
||||||
header files. A nice GUI installation dialog!
|
|
||||||
|
|
||||||
- Got rid of all fixed-size buffers. Hurray! Everything is dynamic --
|
|
||||||
no built-in limits on line length, token size, etc. This should
|
|
||||||
cure lots of SEGV's for weird files.
|
|
||||||
|
|
||||||
- Added TAG and DURATION clauses for communicating more information to
|
|
||||||
back-ends and eventually converting REMIND into a full-fledged
|
|
||||||
scheduler.
|
|
||||||
|
|
||||||
- Completely reworked the PS/PSFILE mechanism to use the more
|
|
||||||
general SPECIAL mechanism for customizing output in REMIND back-ends.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Made parser _very_ forgiving -- the type of reminder now defaults
|
|
||||||
to MSG. This lets you have lines in the reminder file like this:
|
|
||||||
|
|
||||||
Feb 9, 1998 Meeting with Joe.
|
|
||||||
|
|
||||||
But I don't recommend abusing it. It's mostly to ease migration from
|
|
||||||
UNIX calendar(1) files.
|
|
||||||
|
|
||||||
- Documented the "remind -p" format.
|
|
||||||
|
|
||||||
- Made Remind communicate day and month names to back-ends so they
|
|
||||||
can automatically take on the language Remind was compiled with.
|
|
||||||
|
|
||||||
- Directory structure totally reorganized. Remind now uses an autoconf
|
|
||||||
"configure" script which should make life very pleasant for UNIX
|
|
||||||
people.
|
|
||||||
|
|
||||||
- Made Rem2HTML work properly if more than one month's worth of calendar
|
|
||||||
data was produced. Rem2HTML also escapes any special HTML characters.
|
|
||||||
However, it recognizes a "SPECIAL HTML" type of reminder which lets
|
|
||||||
you put arbitrary HTML code in your calendar entries. See www/rem2html
|
|
||||||
for details.
|
|
||||||
|
|
||||||
- Added the "-a" option to Rem2HTML to complement the "-p" option. Also
|
|
||||||
made Rem2HTML print a usage message if input is coming from a terminal.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Fixed sunset(), sunrise() and minsfromutc() functions which were broken
|
|
||||||
by 3.0.17. (In 3.0.17, they did not account for daylight savings time.)
|
|
||||||
|
|
||||||
- Updated "finnish.h" to include proper URL and translation of all
|
|
||||||
error messages.
|
|
||||||
|
|
||||||
+ BUG INTRODUCTIONS
|
|
||||||
|
|
||||||
- The reorganization and use of "configure" probably breaks Remind
|
|
||||||
installation on non-UNIX platforms. Sorry. I can't fix it until
|
|
||||||
I hear back from non-UNIX maintainers.
|
|
||||||
|
|
||||||
- Getting rid of fixed-sized buffers meant lots of changes to code.
|
|
||||||
No doubt, I missed a few regression tests.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 17
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Made REMIND accept date specs like "Jan 6, 1998" -- the comma is
|
|
||||||
ignored. This was suggested by John Conover <john@johncon.johncon.com>.
|
|
||||||
You can even do "REM 27, Aug, 1998, msg bar". (But I don't know why
|
|
||||||
you'd want to.)
|
|
||||||
|
|
||||||
- Added www/rem2html, a Perl script which converts the output of
|
|
||||||
`remind -p ...' to an HTML table. The script was contributed by
|
|
||||||
Don Schwarz <darkowl@mcs.net>
|
|
||||||
|
|
||||||
- New security features: Because of the risks of statically-allocated
|
|
||||||
buffers, REMIND now refuses to run if it is installed set-uid or set-gid.
|
|
||||||
If REMIND is run as root, it refuses to read files not owned by root.
|
|
||||||
It also won't open group- or world-writable files, no matter who is
|
|
||||||
running it. Finally, if you read a file you don't own, REMIND disables
|
|
||||||
RUN and shell(). REMIND doesn't do these security checks on stdin,
|
|
||||||
though, so be careful if you run it as root in a script.
|
|
||||||
|
|
||||||
NOTE: REMIND doesn't do the world- and group-writable checks
|
|
||||||
on devices, FIFOs, etc. Otherwise "remind /dev/null" fails...
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Increased sizes of some statically-allocated buffers. This doesn't
|
|
||||||
really fix the problem, but makes it more manageable.
|
|
||||||
|
|
||||||
- Using the "-u" option now implies the "-r" option. This is a
|
|
||||||
security feature.
|
|
||||||
|
|
||||||
- Added romanian.h to the manifest. Sorry.
|
|
||||||
|
|
||||||
- CalcMinsFromUTC was failing if time_t was unsigned. I now use
|
|
||||||
difftime(), but not all systems have it. Also, defs.rem was rearranged
|
|
||||||
so PostScript stuff works better, and new target "emxomf" was added to
|
|
||||||
makefile.os2 which uses OMF linking and a dynamically-linked C
|
|
||||||
library. All three of these fixes are courtesy of Christopher
|
|
||||||
J. Madsen <madsen@iglobal.net>. Thanks, Christopher.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 16
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Bundled scripts for making a nice WWW calendar server. See the
|
|
||||||
"www" subdirectory in the release.
|
|
||||||
|
|
||||||
- Added support for the Romanian language, courtesy of Liviu Daia.
|
|
||||||
|
|
||||||
- Changed sunrise() and sunset() as follows: If the sun never rises,
|
|
||||||
sunrise() returns 1440 and sunset() returns 0. In this case,
|
|
||||||
sunrise()-sunset() returns the length of the dark period of the
|
|
||||||
day, in minutes. If the sun never sets, sunrise() returns 0 and
|
|
||||||
sunset() returns 1440, and sunset()-sunrise() returns the length
|
|
||||||
of the light period of the day, in minutes. Thanks to Michael Salmon
|
|
||||||
for explaining the utility of this. See the file "defs.rem" for the
|
|
||||||
functions _light_len and _dark_len which return the length in minutes
|
|
||||||
of the light and dark period of the day, respectively.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- If you used the "-g" option, then no background reminders were
|
|
||||||
ever issued. DOH! Thanks to Greg Badros <gjb@cs.washington.edu>
|
|
||||||
for pointing this out.
|
|
||||||
|
|
||||||
- Fixed a problem under Solaris 2.5 whereby rem2ps was skipping some
|
|
||||||
latin1 characters which it interpreted as white space.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 15
|
|
||||||
|
|
||||||
+ IMPORTANT NOTES
|
|
||||||
|
|
||||||
- The tar file now unpacks into a Remind subdirectory rather than into
|
|
||||||
the current working directory.
|
|
||||||
|
|
||||||
- I no longer support Remind under DOS. I don't think I've done anything
|
|
||||||
to stop it from working under DOS, but will no longer compile and test
|
|
||||||
it under DOS, and can't help you if you get stuck. Sorry -- I no longer
|
|
||||||
have a DOS machine.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Changed psshade() to accept 1 or 3 arguments for colored shading in
|
|
||||||
PostScript calendar mode.
|
|
||||||
|
|
||||||
- Added a Print dialog to tkremind.
|
|
||||||
|
|
||||||
- Added support for Brazilian Portuguese courtesy of Marco Paganini
|
|
||||||
|
|
||||||
- Added support for Italian courtesy of Valerio Aimale
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Fixed confusing error in rem2ps help messages.
|
|
||||||
|
|
||||||
- Fixed bug in TkRemind which caused a crash if the "-m" option was used
|
|
||||||
for a month beginning on Sunday. Doh!!!
|
|
||||||
|
|
||||||
* Version 3.0 Patch 14
|
|
||||||
|
|
||||||
+ CHANGE IN COPYING POLICY
|
|
||||||
|
|
||||||
- Remind is now distributed under an _AMENDED_ version of the Gnu
|
|
||||||
General Public License. These amendments are listed in the
|
|
||||||
file COPYRIGHT. The amendments were made for personal reasons;
|
|
||||||
please don't ask me to explain them. They probably don't affect
|
|
||||||
you, anyway.
|
|
||||||
|
|
||||||
+ MAJOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added an X-Windows front-end to Remind. To use it, you must be
|
|
||||||
running under X-Windows on UNIX, and have the "wish" tcl/tk
|
|
||||||
interpreter, version 7.4 of tcl and 4.0 of tk. The front-end is
|
|
||||||
called "tkremind".
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added the WARN keyword for precise advance notice. You can now
|
|
||||||
have advance warning 5, 3, 1 and 0 days in advance (for example.)
|
|
||||||
The WARN keyword operates similarly to the SCHED keyword in that it
|
|
||||||
calls a user-defined function to obtain the advance warning sequence.
|
|
||||||
|
|
||||||
- Added support for QDOS/SMSQ on the Sinclair QL microcomputer,
|
|
||||||
courtesy of Robert H. Klein <kleir000@goofy.zdv.Uni-Mainz.de>
|
|
||||||
NOTE THAT I CANNOT TEST NOR SUPPORT THIS VERSION!
|
|
||||||
|
|
||||||
- Added support for AmigaDOS / SAS/C, courtesy of Martin Hohl
|
|
||||||
<martinh@caverna.tynet.sub.org>. As before, I CANNOT TEST NOR
|
|
||||||
SUPPORT THIS VERSION, but will rely on feedback from others.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Removed the "-n" option from Rem2PS. Instead, if you want the
|
|
||||||
PostScript calendar to start on a Monday, supply the "-m" option
|
|
||||||
to Remind. It was repugnant to have two options to two programs
|
|
||||||
to accomplish one thing.
|
|
||||||
|
|
||||||
- The "hebdate" built-in function worked incorrectly with 5 arguments.
|
|
||||||
The bug was pointed out by Hershel Safer <h.safer@ieee.org>
|
|
||||||
|
|
||||||
- This would hang up REMIND: REM Mon 31 Feb MSG Foo
|
|
||||||
and this would fail quietly: REM Mon 31 Feb 1996 MSG Foo
|
|
||||||
Both have been fixed and now report bad date specifications.
|
|
||||||
|
|
||||||
- Remind now compiles without complaint under gcc -ansi -Wall -pedantic
|
|
||||||
(on my Linux system, anyway!)
|
|
||||||
|
|
||||||
+ IMPORTANT NOTE
|
|
||||||
|
|
||||||
- I had problems building the DOS version with Turbo C. I have access
|
|
||||||
only to ancient versions of Turbo C and Microsoft C. Remind built
|
|
||||||
fine with Microsoft C, but the TC version hung up. I am not too
|
|
||||||
interested in maintaining the DOS version, so when the MSC compiler
|
|
||||||
no longer works, I will drop DOS support. Please not that I will
|
|
||||||
_not_ support MS Windows, and in fact do not allow Remind to run
|
|
||||||
under Windows (see COPYRIGHT).
|
|
||||||
|
|
||||||
* Version 3.0 Patch 13
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added extra parameters to the "psmoon" built-in function so you
|
|
||||||
can annotate the PostScript moon icons.
|
|
||||||
|
|
||||||
- Added a command-line "time" argument to Remind for testing Remind
|
|
||||||
scripts with specific system times. Also added the realnow() function
|
|
||||||
which has the same relationship to now() as realtoday() has to today().
|
|
||||||
(See the man page!)
|
|
||||||
|
|
||||||
- Modified Rem2PS so it prints progress messages to stderr if
|
|
||||||
'-v' command-line argument is used.
|
|
||||||
|
|
||||||
- In the top of the 'finnish.h' file, added a note about
|
|
||||||
Mikko Silvonen's file of Finnish holidays.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Fixed a bug in rem2ps which sometimes caused incorrect PostScript if
|
|
||||||
the -e and -m options were used. Thanks to Michael Neuhauser for
|
|
||||||
reporting the bug and providing a fix.
|
|
||||||
|
|
||||||
- Made the '-k' option escape shell characters in the message to make it
|
|
||||||
safer.
|
|
||||||
|
|
||||||
- Fixed a segmentation violation which resulted if not all
|
|
||||||
PUSH-OMIT-CONTEXTs were balanced by POP-OMIT-CONTEXTs.
|
|
||||||
|
|
||||||
- Removed the prototype for DestroyValue, which is now a macro. I'm
|
|
||||||
amazed that very few compilers complained about this one!
|
|
||||||
|
|
||||||
- Updated the copyright notices everywhere.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 12
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added support for the Danish language, courtesy of Mogens Lynnerup.
|
|
||||||
|
|
||||||
- Added support for the Polish language, courtesy of Jerzy Sobczyk.
|
|
||||||
|
|
||||||
- Made the Makefile more portable, thanks to Jim Budler.
|
|
||||||
|
|
||||||
- Removed some compiler warnings under Linux, thanks to Francois Pinard.
|
|
||||||
|
|
||||||
- Tidied the man page a bit; added a small bibliography.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Fixed a problem with the '-k' option which resulted in a newline being
|
|
||||||
placed after the message text. This was giving sh(1) heartburn...
|
|
||||||
|
|
||||||
* Version 3.0 Patch 11
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added release notes to README.UNIX and README.OS2 describing one
|
|
||||||
way to make pop-up alarms under X-Windows and Presentation Manager.
|
|
||||||
|
|
||||||
- Added the $DefaultPrio system variable
|
|
||||||
|
|
||||||
- Improved OS/2 support, thanks to Darrel Hankerson, Russ Herman
|
|
||||||
and Norman Walsh.
|
|
||||||
|
|
||||||
- Made the pushing and popping of operators and operands during
|
|
||||||
expression evaluation in-line code instead of function calls. Did the
|
|
||||||
same for DestroyValue. I'm not sure if this was a good idea -- on the
|
|
||||||
Sparc using gcc, this slowed things down... go figure.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Fixed a potential memory leak in the char() function.
|
|
||||||
|
|
||||||
- Made the TRIGGER() built-in function return its answer in English even
|
|
||||||
for the foreign-language versions -- this was required for compilers which
|
|
||||||
are not 8-bit clean, and for languages with accented letters.
|
|
||||||
|
|
||||||
- Made expression evaluation slightly faster by eliminating some unnecessary
|
|
||||||
copying of string values.
|
|
||||||
|
|
||||||
- Corrected some non-portable definitions of the macro UPPER(c)
|
|
||||||
|
|
||||||
- Fixed typos in french.h
|
|
||||||
|
|
||||||
* Version 3.0 Patch 10
|
|
||||||
|
|
||||||
+ MAJOR ENHANCEMENT
|
|
||||||
|
|
||||||
- OS/2 support is now much better, thanks to Russ Herman. The Borland
|
|
||||||
C compiler under OS/2 and MS-DOS is supported.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added the SCHED keyword for precise control of scheduling of timed
|
|
||||||
reminders -- it's really quite nifty!
|
|
||||||
|
|
||||||
- Modified the trigger() function to take up to three arguments -- in
|
|
||||||
addition to a date, you can specify a time and a flag specifying that
|
|
||||||
the trigger should be converted from UTC to local time.
|
|
||||||
|
|
||||||
- Added $SortByDate, $SortByTime and $SortByPrio system variables.
|
|
||||||
|
|
||||||
- Added test suites for MS-DOS and OS/2, courtesy of Russ Herman.
|
|
||||||
|
|
||||||
- In PostScript output, the month and year are output in the %%Page: comments.
|
|
||||||
Makes it nicer to view multi-month calendars with previewers (eg,
|
|
||||||
GhostView.)
|
|
||||||
|
|
||||||
- Added the PRIORITY keyword for more control of sort order of reminders.
|
|
||||||
Based on a suggestion by George M. Sipe.
|
|
||||||
|
|
||||||
- Added the msgprefix() and msgsuffix() evaluations around MSG-type
|
|
||||||
reminders for doing fancy things with reminders of different priorities.
|
|
||||||
Also added calprefix() and calsuffix() for doing the same thing in
|
|
||||||
calendar mode.
|
|
||||||
|
|
||||||
- Enabled the -g option during calendar mode as well as regular mode.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Fixed minor bugs in the LocalToUTC and UTCToLocal functions.
|
|
||||||
|
|
||||||
- "remind -c -de file" used to cause a segmentation violation. Whoops...
|
|
||||||
|
|
||||||
- Some files which should have included <string.h> didn't include it - these
|
|
||||||
are now fixed.
|
|
||||||
|
|
||||||
- Fixed the moondate() and moontime() functions, which used to be incorrect
|
|
||||||
after November 1994.
|
|
||||||
|
|
||||||
- Fixed the Finnish language support which was missing a few newlines.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 9
|
|
||||||
|
|
||||||
+ NOTES
|
|
||||||
|
|
||||||
- Remind is now too big to compile under the "small" model in
|
|
||||||
MS-DOS. You must recompile everything under the "medium" model.
|
|
||||||
|
|
||||||
+ MAJOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Functions moonphase(), moondate() and moontime() were added for dealing
|
|
||||||
with phases of the moon. The code was snarfed from "moontool" by
|
|
||||||
John Walker - see the file "moon.c" for detailed acknowledgement. Also
|
|
||||||
added psmoon() for putting little moon symbols on the PostScript calendar.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added some more examples to defs.rem - notably, support for ANSI
|
|
||||||
terminal color-changing escape sequences, thanks to Gail Gurman.
|
|
||||||
|
|
||||||
- Modified both Remind and Rem2PS so that calendars can start on Sunday or
|
|
||||||
Monday, depending on your preference. Unfortunately, the command-line
|
|
||||||
options are different -- for Remind, it's '-m' and for Rem2PS it's '-n'
|
|
||||||
because '-m' was already in use. Based on a suggestion by John Plate
|
|
||||||
and a patch sent by Mikko Silvonen.
|
|
||||||
|
|
||||||
- The Finnish language support is better - now, all usage and error
|
|
||||||
messages are in Finnish. In addition, the Finnish language module
|
|
||||||
supports the IBM extended character set as well as ISOLATIN1.
|
|
||||||
Thanks to Mikko Silvonen.
|
|
||||||
|
|
||||||
- Modified Rem2PS to allow more control over the placement of the small
|
|
||||||
calendars, thanks to a suggestion by Frank Vance. Also added option
|
|
||||||
to control the calendar title (e.g., "September 1993") independently
|
|
||||||
of day-of-week headings.
|
|
||||||
|
|
||||||
- Added the psshade() function to make it easier to shade PostScript
|
|
||||||
calendars.
|
|
||||||
|
|
||||||
- Allowed a repeat parameter '*num' to be supplied on command line so
|
|
||||||
a 'preview' of many days' worth of reminders can be obtained easily.
|
|
||||||
|
|
||||||
- Added the $Location system variable.
|
|
||||||
|
|
||||||
- Allowed an expression to be supplied to EXIT to return an exit
|
|
||||||
status.
|
|
||||||
|
|
||||||
- Added the FLUSH command.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Fixed the MSF-type reminder to fill paragraphs more intelligently.
|
|
||||||
It puts double spaces after '!', '.' and '?', and can handle quotes,
|
|
||||||
brackets, etc. after periods, etc. These characters can be specified
|
|
||||||
with the $EndSent and $EndSentIg system variables. Also modified it
|
|
||||||
so that newlines in the body start new paragraphs, rather than being
|
|
||||||
swallowed as white-space.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 8
|
|
||||||
|
|
||||||
+ MAJOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Changed the code to more fully support foreign languages - error
|
|
||||||
messages and usage instructions can now be changed. All changes can
|
|
||||||
be localized in the appropriate language.h files.
|
|
||||||
|
|
||||||
- Added support for the French language, courtesy of Laurent Duperval.
|
|
||||||
Note that the French support is more complete than for other languages -
|
|
||||||
French usage instructions and error messages are supported.
|
|
||||||
|
|
||||||
- Added support for the Norwegian language, courtesy of Trygve Randen.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added code for the functions timelocal() and timegm(), courtesy of
|
|
||||||
Lucio de Re. This is for those very few machines whose libraries
|
|
||||||
include neither those functions nor mktime().
|
|
||||||
|
|
||||||
- Added the filedate() function.
|
|
||||||
|
|
||||||
- Allowed the filename to be specified as "-" to cause Remind to take
|
|
||||||
its input from the standard input stream.
|
|
||||||
|
|
||||||
- Added the "MSF" keyword to cause reminders to be formatted automatically.
|
|
||||||
This keyword paragraph-fills reminder text following user specifications.
|
|
||||||
Based on a suggestion by Ken McGlothlen.
|
|
||||||
|
|
||||||
- Added the "-e" option to Rem2PS, allowing the PostScript calendar
|
|
||||||
to fill the entire page. Thanks to Arthur G. Yaffe.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Corrected the Hebrew holidays Tzom Gedalia, Tzom Tevet, Ta'anit
|
|
||||||
Esther, Tzom Tamuz and Tisha B'Av so they won't occur on Saturday.
|
|
||||||
Corrections made following the algorithm in "Calendrical Calculations"
|
|
||||||
by Nachum Dershowitz and Edward M. Reingold.
|
|
||||||
|
|
||||||
- Changed the dutch.h language file as suggested by Erik-Jan Vens. Made
|
|
||||||
month and day names lower-case; corrected the spelling of oktober.
|
|
||||||
|
|
||||||
- Changed HashVal in var.c to use unsigned arithmetic - it's conceivable
|
|
||||||
that a machine with signed chars could cause problems otherwise.
|
|
||||||
|
|
||||||
- Changed the LONG_* macros in config.h to LON_* to avoid conflicts
|
|
||||||
with names defined by ANSI C. Thanks to David W. Sanderson.
|
|
||||||
|
|
||||||
- Allowed the built-in function char() to accept numbers in the
|
|
||||||
range [-128, 255] (but not 0) so that char(asc(s)) works even
|
|
||||||
on machines with signed char types.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 7
|
|
||||||
|
|
||||||
+ MAJOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added "system variables" to allow the user more control over
|
|
||||||
Remind operation, and to allow queries about the command-line
|
|
||||||
options from within a reminder script. They allow for specification
|
|
||||||
of longitude and latitude for use by sunrise/sunset calculations.
|
|
||||||
|
|
||||||
- Added sunrise(), sunset(), isdst() and minsfromutc() functions -
|
|
||||||
these are needed to support sunrise and sunset calculations.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Allowed the MSG, RUN, CAL, PS and PSF keywords to be used in the
|
|
||||||
same reminder as the SATISFY keyword. This makes many complex
|
|
||||||
reminders more compact.
|
|
||||||
|
|
||||||
- Added the filedir() function to enable Remind's include to emulate
|
|
||||||
CPP's #include more closely.
|
|
||||||
|
|
||||||
- Allowed non-root users to use the "-u" option. It only affects
|
|
||||||
the "SHELL", "HOME", "USER" and "LOGNAME" environment variables -
|
|
||||||
it doesn't change the effective uid and gid when run by non-root.
|
|
||||||
|
|
||||||
- Added built-in function "easterdate" to calculate date of Easter
|
|
||||||
Sunday - function courtesy of Michael Salmon.
|
|
||||||
|
|
||||||
- Improved the Jewish holiday reminders in "defs.rem" to give advance
|
|
||||||
notice of holidays.
|
|
||||||
|
|
||||||
- Allowed the "simple calendar" option (-s) to specify a number of
|
|
||||||
weeks as well as a number of months, in the same fashion as the
|
|
||||||
-c option. Thanks to Dave Rickel.
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Corrected the behaviour of "hebdate" for jahrzeits; added an additional
|
|
||||||
parameter to specify the behaviour of dates in Adar during leap years.
|
|
||||||
|
|
||||||
- Changed kall so that "kall sh" doesn't commit suicide - patch courtesy
|
|
||||||
of Michael Salmon.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 6
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS
|
|
||||||
|
|
||||||
- Added the PS- and PSFILE-type reminders - these allow you to include
|
|
||||||
arbitrary PostScript code in your PostScript calendars. Useful for
|
|
||||||
shading, drawing graphics on calendars, etc. Use with care, though!
|
|
||||||
|
|
||||||
- Added the "-ivar=val" option to initialize variables from the command
|
|
||||||
line. Changed the remind-all.* shell scripts to predefine the variable
|
|
||||||
"remind_all".
|
|
||||||
|
|
||||||
+ BUG FIXES
|
|
||||||
|
|
||||||
- Fixed a bug in the hebmon(), hebday() and hebyear() functions - there
|
|
||||||
was an off-by-one error. Sorry!
|
|
||||||
|
|
||||||
- Fixed a bug in the hebdate() function which resulted in infinite loops
|
|
||||||
for dates after about 2075
|
|
||||||
|
|
||||||
- Fixed a bug in the -u option which sometimes caused a core dump
|
|
||||||
(embarrassed grin!) The fix is due to Tina Hoeltig. Thanks, Tina!
|
|
||||||
|
|
||||||
* Version 3.0 Patch 5
|
|
||||||
|
|
||||||
+ MAJOR ENHANCEMENTS:
|
|
||||||
|
|
||||||
- Added support for the Hebrew calendar - can now specify Jewish holidays
|
|
||||||
easily. Thanks to Amos Shapir for explaining the Hebrew calendar, and
|
|
||||||
to Danny Sadinoff, from whose HEBCAL program I got some inspiration.
|
|
||||||
Also thanks to David W. Tamkin and Frank Yellin for explaining the rules
|
|
||||||
for jahrzeits.
|
|
||||||
|
|
||||||
+ MINOR ENHANCEMENTS:
|
|
||||||
|
|
||||||
- Allowed the default page size used by Rem2PS to be selected in config.h
|
|
||||||
|
|
||||||
- Edited the defs.rem file to contain Jewish holidays. Cleaned up some
|
|
||||||
of the examples and improved the layout - thanks to George M. Sipe.
|
|
||||||
|
|
||||||
- Modified the IIF function to be more general
|
|
||||||
|
|
||||||
- Updated finnish.h to support the ISO 8859-1 character set, courtesy
|
|
||||||
of Mikko Silvonen.
|
|
||||||
|
|
||||||
- Changed the date conversion routines to greatly speed up conversion from
|
|
||||||
Julian to yyyy/mm/dd form.
|
|
||||||
|
|
||||||
+ BUG FIXES:
|
|
||||||
|
|
||||||
- Fixed a bug in which Remind complained incorrectly about a missing quote
|
|
||||||
in the command SET foo ""
|
|
||||||
|
|
||||||
- Fixed bugs in dosubst.c which caused the %o, %1 and %@ substitutions
|
|
||||||
to be incorrect
|
|
||||||
|
|
||||||
- Fixed a bug in the man page - thanks to Ed Oskiewicz.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 4
|
|
||||||
|
|
||||||
- Added the -g option - this sorts reminders by date/time before
|
|
||||||
issuing them. (You can see I'm running out of letters to
|
|
||||||
name options!) This feature was suggested by George M. Sipe,
|
|
||||||
Paul D. Smith, and Francois Pinard.
|
|
||||||
|
|
||||||
- Added the "args()" and "dosubst()" built-in functions - see the
|
|
||||||
man page for details.
|
|
||||||
|
|
||||||
- Added more support for the ISO 8859-1 character set, and
|
|
||||||
modified the german.h file to take advantage of this, thanks
|
|
||||||
to Robert Joop.
|
|
||||||
|
|
||||||
- Allowed any character to be used as date and time separator
|
|
||||||
characters (not just "/-:.")
|
|
||||||
|
|
||||||
- Added support for the Dutch and Finnish languages, thanks to
|
|
||||||
Willem Kasdorp and Mikko Silvonen. (Anyone care to contribute
|
|
||||||
French? Italian? Spanish?)
|
|
||||||
|
|
||||||
- Made Remind issue a warning if you try to redefine a built-in
|
|
||||||
function. This warning is disabled in 'Hush' mode.
|
|
||||||
|
|
||||||
- Added the SCANFROM clause to the REM command. This allows reasonably
|
|
||||||
safe moveable OMITs such as the Labour Day example in the manual.
|
|
||||||
|
|
||||||
- Added more examples to the defs.rem file, and cleaned up some old
|
|
||||||
examples. Note that there are now safe moveable holidays for most
|
|
||||||
U.S. holidays provided in the defs.rem file.
|
|
||||||
|
|
||||||
- Added the '-k' option, which allows MSG-type reminders to be passed
|
|
||||||
to any system command. (Idea and patch courtesy of Philipp Slusallek.)
|
|
||||||
|
|
||||||
- Allowed selection of ':' or '.' as time separator characters at
|
|
||||||
compile-time.
|
|
||||||
|
|
||||||
- Edited the COPYRIGHT file to clarify the rules. Please read them.
|
|
||||||
|
|
||||||
- Removed hard-coding of "am" and "pm" and placed them in language-specific
|
|
||||||
header files as #defines L_AM and L_PM
|
|
||||||
|
|
||||||
- Fixed a bug in the FindToken() routine which had, through sheer luck,
|
|
||||||
never been activated until the SCANFROM clause was added!
|
|
||||||
|
|
||||||
- Fixed the UNTIL clause to check for a valid expiry date.
|
|
||||||
|
|
||||||
- Removed identifiers in the C source beginning with "_" to conform
|
|
||||||
to ANSI practice.
|
|
||||||
|
|
||||||
- Fixed a bug in the -u option which resulted in environment variables
|
|
||||||
SHELL and USER not being set correctly. Also made -u set the LOGNAME
|
|
||||||
environment variable.
|
|
||||||
|
|
||||||
- Fixed a couple of typos in the man page; added LDFLAGS to the
|
|
||||||
Makefile. (Thanks to Dave Wolfe.)
|
|
||||||
|
|
||||||
- Put my new mailing address in the README files.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 3
|
|
||||||
|
|
||||||
- Corrected bugs in Remind and Rem2PS. No new features added. You
|
|
||||||
should NOT use patch level 2 - either stick to 3.0.1 or upgrade to
|
|
||||||
3.0.3.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 2
|
|
||||||
|
|
||||||
- Added the -u option to Remind so that root can run it as any user.
|
|
||||||
This simplifies the remind-all scripts, and makes them more efficient.
|
|
||||||
If you are worried that this option is a security hole, you can
|
|
||||||
disable it in config.h
|
|
||||||
|
|
||||||
- Changed the RUN command so that RUN OFF can be used anywhere, even
|
|
||||||
though RUN ON only works in the top-level file. This eases the
|
|
||||||
management of global files which may want to switch RUN OFF.
|
|
||||||
|
|
||||||
- Added ISO encoding (ISO 8859-1) to the PostScript output, courtesy of
|
|
||||||
Michael Salmon. This can be selected with the '-i' option in rem2ps.
|
|
||||||
|
|
||||||
- Added support for the '-' date separator as well as the '/' separator.
|
|
||||||
|
|
||||||
- Added support for languages other than English. Note that this support
|
|
||||||
is not complete - error messages are still in English. The idea and
|
|
||||||
German translation came from Wolfgang Thronicke.
|
|
||||||
|
|
||||||
- Changed the -w option to include the "padding" and "spacing" options.
|
|
||||||
NOTE INCOMPATIBILITY: In the previous patch level, creating a weekly
|
|
||||||
calendar using the -c+n option left no blank lines between the day
|
|
||||||
number and the first reminder entry. This has been changed so that one
|
|
||||||
blank line is left. To revert to the old behaviour, use the "-w,,0"
|
|
||||||
option.
|
|
||||||
|
|
||||||
- Added the -o option to Rem2ps. This allows you to specify the margins
|
|
||||||
when producing a PostScript calendar.
|
|
||||||
|
|
||||||
- Updated the copyright notices in all the files. :-)
|
|
||||||
|
|
||||||
- Added 'make clobber' and 'make test' targets to the Unix makefile.
|
|
||||||
|
|
||||||
- Corrected typos in WHATSNEW.30 and remind.1 man page. Thanks to
|
|
||||||
Dave Wolfe <dwolfe@pffft.sps.mot.com>
|
|
||||||
|
|
||||||
- Changed Remind so that supplying the -a option causes timed reminders
|
|
||||||
not to be placed into the calendar in calendar mode.
|
|
||||||
|
|
||||||
* Version 3.0 Patch 1
|
|
||||||
|
|
||||||
- Wrote the Rem2ps program to produce PostScript calendars
|
|
||||||
|
|
||||||
- Added an 'install' target to the Makefile
|
|
||||||
|
|
||||||
- Fixed a bug which allowed the shell() function to execute in timed
|
|
||||||
reminders which were queued with RUN disabled.
|
|
||||||
|
|
||||||
- Added support for OS/2, courtesy of DARREL HANKERSON
|
|
||||||
<HANK@DUCVAX.AUBURN.EDU>
|
|
||||||
|
|
||||||
- In expressions, can now specify literal dates as 'yyyy/mm/dd' rather than
|
|
||||||
using the date() function.
|
|
||||||
|
|
||||||
- Fixed all the source files to include "config.h" first.
|
|
||||||
|
|
||||||
- Changed the way triggers are calculated so that trigger dates are
|
|
||||||
always valid if year, month and day are specified, and there is no
|
|
||||||
UNTIL clause. See MAN page section "DETAILS ABOUT TRIGVALID()."
|
|
||||||
|
|
||||||
- Defined _POSIX_SOURCE so Remind will compile on SGI workstations (and
|
|
||||||
be more portable... I hope.)
|
|
||||||
|
|
||||||
- Fixed some rather brain-dead definitions of UPPER and LOWER, as pointed
|
|
||||||
out by <rsalz@osf.org>
|
|
||||||
|
|
||||||
- Added more details to the Man page concerning how triggers are computed,
|
|
||||||
and added warnings about computing OMIT dates.
|
|
||||||
|
|
||||||
- Added the file defs.rem which contains examples of useful definitions and
|
|
||||||
triggers.
|
|
||||||
|
|
||||||
- Changed the script test-rem to be a sh script instead of csh for improved
|
|
||||||
portability.
|
|
||||||
|
|
||||||
- Fixed up the README.* files to reflect the changes.
|
|
||||||
|
|
||||||
- Re-formatted the WHATSNEW.30 file.
|
|
||||||
|
|
||||||
* Version 3.0
|
|
||||||
|
|
||||||
- Total rewrite from previous versions
|
|
||||||
|
|
||||||
- Added variables, expressions, flow-control statements, daemon mode
|
|
||||||
|
|
||||||
- Added "expression pasting"
|
|
||||||
|
|
||||||
- Added CAL-type reminders
|
|
||||||
|
|
||||||
- Added the SATISFY clause
|
|
||||||
|
|
||||||
- Improved debugging of reminder scripts
|
|
||||||
|
|
||||||
- Took out the "purge" option - it is in general too dificult to tell when
|
|
||||||
a reminder has expired for good, so now it's up to you to do this
|
|
||||||
by hand.
|
|
||||||
|
|
||||||
- Fixed a lurking bug in trigger date calculation which, amazingly, had not
|
|
||||||
been caught in the couple of years that Remind has been out!
|
|
||||||
|
|
||||||
* Version 2.3 Patch 5
|
|
||||||
|
|
||||||
- Added the "c+n" option for printing a calendar by
|
|
||||||
weeks instead of months, courtesy Dennis Cottel (dennis@peanuts.nosc.mil).
|
|
||||||
|
|
||||||
* Version 2.3 Patch 4
|
|
||||||
|
|
||||||
- Made the init.c file nicer. Made the Makefile
|
|
||||||
prettier. Added "make test", "make tar" and "make shar" Makefile targets.
|
|
||||||
|
|
||||||
* Version 2.3 Patch 3
|
|
||||||
|
|
||||||
- Added a command-line option for Remind to process
|
|
||||||
queued reminders in the foreground. This makes automatic termination
|
|
||||||
of Remind processes from within X-Windows and Sunview easier.
|
|
||||||
|
|
||||||
* Version 2.3 Patch 2
|
|
||||||
|
|
||||||
- Fixed up a problem with timed reminders which resulted
|
|
||||||
in cursor not starting from left side of screen on some systems.
|
|
||||||
|
|
||||||
- Fixed the SIGINT handler for SYSV systems - this was interrupting the
|
|
||||||
sleep(2) system call.
|
|
||||||
|
|
||||||
- Closed stdin and stdout if remind was part of a pipe - this prevents other
|
|
||||||
sections of the pipe from hanging as remind puts itself in the background.
|
|
||||||
|
|
||||||
- Added the "-h" (Hush mode) option
|
|
||||||
|
|
||||||
- Added the "%#" and "%@" modifiers for the current time.
|
|
||||||
|
|
||||||
- Made the Makefile more portable
|
|
||||||
|
|
||||||
* Version 2.3 Patch 1
|
|
||||||
|
|
||||||
- Added the "-t" command-line option to get Remind
|
|
||||||
to trigger all non-expired reminders.
|
|
||||||
|
|
||||||
- Added Turbo C support courtesy of Rhys Weatherly
|
|
||||||
|
|
||||||
- Added the "RUN ON" and "RUN OFF" commands for a secure interface with
|
|
||||||
the Elm mail system.
|
|
||||||
|
|
||||||
- Added the "rem" shell script for running Remind with a default script.
|
|
||||||
|
|
||||||
- Added manual pages for "kall" and "rem".
|
|
||||||
|
|
||||||
* Version 2.3
|
|
||||||
|
|
||||||
- Added the UNTIL keyword for forcing reminders to expire.
|
|
||||||
|
|
||||||
- Added the "++" form of 'back' and the "--" form of 'delta' for
|
|
||||||
ignoring OMIT information.
|
|
||||||
|
|
||||||
- Added the CLEAR-OMIT-CONTEXT, PUSH-OMIT-CONTEXT and POP-OMIT-CONTEXT
|
|
||||||
keywords for isolating personal or peculiar reminders from the global
|
|
||||||
OMIT context.
|
|
||||||
|
|
||||||
- Speeded up the parsing of tokens.
|
|
||||||
|
|
||||||
- Changed the source to recognize and exploit ANSI-C compilers which
|
|
||||||
accept function prototypes.
|
|
||||||
|
|
||||||
- Added the "-n" option to output the next occurrence of each reminder
|
|
||||||
in SimpleCalendar format
|
|
||||||
|
|
||||||
- Modified the calendar and SimpleCalendar formats so that the % escape
|
|
||||||
substitutions ARE performed.
|
|
||||||
|
|
||||||
* Version 2.2 - Patch 5
|
|
||||||
|
|
||||||
- Added the BEFORE, AFTER and SKIP tokens to make the
|
|
||||||
handling of holidays more sensible. Also corrected a few more bugs.
|
|
||||||
|
|
||||||
* Version 2.2 - Patch 3
|
|
||||||
|
|
||||||
- Added the MSG or RUN tokens in an OMIT command; also
|
|
||||||
allowed RUN-type reminders to be explicitly included in the calendar by
|
|
||||||
using the %" escape sequence.
|
|
||||||
|
|
||||||
* Version 2.2
|
|
||||||
|
|
||||||
- Added the AT keyword, the timed reminders daemon, and the
|
|
||||||
calendar facility.
|
|
||||||
|
|
||||||
* Version 2.1
|
|
||||||
|
|
||||||
- Added the "repeat" token for repeating reminders with a period
|
|
||||||
other than 7 days. Also fixed some bugs from version 2.0
|
|
||||||
|
|
||||||
* Version 2.0
|
|
||||||
|
|
||||||
- first public release. Included advanced date specifications,
|
|
||||||
character substitution, and the RUN keyword.
|
|
||||||
|
|
||||||
* Version 1.0
|
|
||||||
|
|
||||||
- never publicly released.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Demo the columns() function
|
||||||
|
#
|
||||||
|
# Run as: remind -@2 alignment.rem
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
SET $AddBlankLines 0
|
||||||
|
BANNER %
|
||||||
|
|
||||||
|
FSET center(x) pad("", " ", (columns() - columns(x))/2) + x
|
||||||
|
FSET right(x) pad("", " ", columns() - columns(x)) + x
|
||||||
|
|
||||||
|
MSG This is left-aligned.
|
||||||
|
MSG [ansicolor(0,255,0)]🌕 🌕 🌕 🌕 This is also left-aligned.[ansicolor("")]
|
||||||
|
|
||||||
|
MSG [center("This is centered.")]
|
||||||
|
MSG [ansicolor(255,255,0) + center("🌕 🌕 🌕 🌕 This is also centered. ") + ansicolor("")]
|
||||||
|
|
||||||
|
msg [right("This is right-aligned.")]
|
||||||
|
msg [ansicolor(255,0,0) + right("This is also right-aligned. 🌕 🌕 🌕") + ansicolor("")]
|
||||||
Executable
+39
@@ -0,0 +1,39 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# A little demo script that displays ANSI text attributes
|
||||||
|
# Not all attributes work on all terminals... your mileage may vary.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
remind -@2 - <<'EOF'
|
||||||
|
|
||||||
|
SET $AddBlankLines 0
|
||||||
|
BANNER %
|
||||||
|
INCLUDE [$SysInclude]/ansitext.rem
|
||||||
|
MSG This file shows off some ANSI text attributes and colors.
|
||||||
|
MSG Not all attributes work on all terminals.%_
|
||||||
|
|
||||||
|
MSG This is [ansi_bold]bold.[ansi_normal]
|
||||||
|
MSG This is [ansi_faint]faint.[ansi_normal]
|
||||||
|
MSG This is [ansi_italic]italic.[ansi_normal]
|
||||||
|
MSG This is [ansi_underline]underline.[ansi_normal]
|
||||||
|
MSG This is [ansi_underline2]underline2.[ansi_normal]%_
|
||||||
|
MSG This is [ansi_reverse]reverse.[ansi_normal]%_
|
||||||
|
MSG This is [ansi_strikeout]strikeout.[ansi_normal]%_
|
||||||
|
MSG This is [ansi_overline]overline.[ansi_normal]%_
|
||||||
|
|
||||||
|
MSG This is [ansicolor(255,0,0)]red.[ansicolor("")]
|
||||||
|
MSG This is [ansicolor(0,255,0)]green.[ansicolor("")]
|
||||||
|
MSG This is [ansicolor(0,0,255)]blue.[ansicolor("")]
|
||||||
|
MSG This is [ansicolor(255,255,0)]yellow.[ansicolor("")]
|
||||||
|
MSG This is [ansicolor(255,0,255)]magenta.[ansicolor("")]
|
||||||
|
MSG This is [ansicolor(0,255,255)]cyan.[ansicolor("")]
|
||||||
|
MSG This is [ansi_bold][ansicolor(255,255,255)][ansicolor(0,0,0,1)]white on black[ansicolor("")][ansi_normal]
|
||||||
|
MSG This is [ansi_bold][ansicolor(0,0,0)][ansicolor(255,255,255,1)]black on white[ansicolor("")][ansi_normal]
|
||||||
|
MSG %_
|
||||||
|
|
||||||
|
# You can combine attributes
|
||||||
|
MSG This is [ansicolor(0,255,0)][ansicolor(0,0,96,1)][ansi_italic][ansi_bold]Green-Bold-Italic-on-Blue[ansi_normal][ansicolor("")]
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
exit 0
|
||||||
Executable
+67
@@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# A little demo script that displays astronomical events
|
||||||
|
#
|
||||||
|
# Best used in a UTF-8 environment.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
# Set your latitude and longitude correctly for Sunrise/Sunset/Equinox/Solstice
|
||||||
|
#
|
||||||
|
# The values below are for Ottawa, Ontario, Canada
|
||||||
|
latitude="45.420556"
|
||||||
|
longitude="-75.689722"
|
||||||
|
|
||||||
|
remind -g "-i\$Latitude=\"$latitude\"" "-i\$Longitude=\"$longitude\"" -q -@2 - "$@" <<'EOF'
|
||||||
|
SET $AddBlankLines 0
|
||||||
|
BANNER %
|
||||||
|
|
||||||
|
INCLUDE [$SysInclude]/ansitext.rem
|
||||||
|
|
||||||
|
MSG Today is [ansi_bold][$T][ansi_normal], being the [ord($T-date(year($T),1,1)+1)] day of [year($T)].
|
||||||
|
MSG Not including today, the year [year($T)] has [date(year($T)+1, 1, 1)-$T-1] more [plural(date(year($T)+1, 1, 1)-$T-1, "day")] left.%_
|
||||||
|
|
||||||
|
IF $TerminalBackground == 0
|
||||||
|
SPECIAL COLOR 255 255 0 Sunrise: 🌅 [sunrise()] today and [sunrise($T+1)] tomorrow
|
||||||
|
SPECIAL COLOR 255 128 0 Sunset: 🌇 [sunset()] today and [sunset($T+1)] tomorrow%_
|
||||||
|
ELSE
|
||||||
|
SPECIAL COLOR 128 128 0 Sunrise: 🌅 [sunrise()] today and [sunrise($T+1)] tomorrow
|
||||||
|
SPECIAL COLOR 128 32 0 Sunset: 🌇 [sunset()] today and [sunset($T+1)] tomorrow%_
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
EOF
|
||||||
|
|
||||||
|
remind -g "-i\$Latitude=\"$latitude\"" "-i\$Longitude=\"$longitude\"" -q -@2 - "$@" <<'EOF'
|
||||||
|
SET $AddBlankLines 0
|
||||||
|
BANNER %
|
||||||
|
IF $TerminalBackground == 0
|
||||||
|
REM [moondatetime(0)] +60 SPECIAL COLOR 255 255 0 New moon: 🌑 [$T] %3 (%b)
|
||||||
|
REM [moondatetime(1)] +60 SPECIAL COLOR 255 255 128 First Quarter: 🌓 [$T] %3 (%b)
|
||||||
|
REM [moondatetime(2)] +60 SPECIAL COLOR 255 255 255 Full moon: 🌕 [$T] %3 (%b)
|
||||||
|
REM [moondatetime(3)] +60 SPECIAL COLOR 255 255 128 Last Quarter: 🌗 [$T] %3 (%b)
|
||||||
|
ELSE
|
||||||
|
REM [moondatetime(0)] +60 SPECIAL COLOR 128 128 0 New moon: 🌑 [$T] %3 (%b)
|
||||||
|
REM [moondatetime(1)] +60 SPECIAL COLOR 128 128 64 First Quarter: 🌓 [$T] %3 (%b)
|
||||||
|
REM [moondatetime(2)] +60 SPECIAL COLOR 0 0 0 Full moon: 🌕 [$T] %3 (%b)
|
||||||
|
REM [moondatetime(3)] +60 SPECIAL COLOR 128 128 64 Last Quarter: 🌗 [$T] %3 (%b)
|
||||||
|
ENDIF
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
remind -g "-i\$Latitude=\"$latitude\"" "-i\$Longitude=\"$longitude\"" -q -@2 - "$@" <<'EOF'
|
||||||
|
SET $AddBlankLines 0
|
||||||
|
BANNER %
|
||||||
|
|
||||||
|
IF $LatDeg >= 0
|
||||||
|
REM [soleq(0)] +366 MSG Next Vernal Equinox: 🌼 [$T] %3 (%b)
|
||||||
|
REM [soleq(1)] +366 MSG Next Summer Solstice: 😎 [$T] %3 (%b)
|
||||||
|
REM [soleq(2)] +366 MSG Next Autumnal Equinox: 🍂 [$T] %3 (%b)
|
||||||
|
REM [soleq(3)] +366 MSG Next Winter Solstice: ❄️ [$T] %3 (%b)
|
||||||
|
ELSE
|
||||||
|
REM [soleq(0)] +366 MSG Next Autumnal Equinox: 🍂 [$T] %3 (%b)
|
||||||
|
REM [soleq(1)] +366 MSG Next Winter Solstice: ❄️ [$T] %3 (%b)
|
||||||
|
REM [soleq(2)] +366 MSG Next Vernal Equinox: 🌼 [$T] %3 (%b)
|
||||||
|
REM [soleq(3)] +366 MSG Next Summer Solstice: 😎 [$T] %3 (%b)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
EOF
|
||||||
+192
-374
@@ -6,6 +6,11 @@
|
|||||||
# Cut and paste as desired! Also, near the end, there are a bunch of #
|
# Cut and paste as desired! Also, near the end, there are a bunch of #
|
||||||
# holiday definitions for the U.S. #
|
# holiday definitions for the U.S. #
|
||||||
# #
|
# #
|
||||||
|
# *** NOTE *** #
|
||||||
|
# #
|
||||||
|
# This file is simply a grab-bag of examples. It is NOT meant to be #
|
||||||
|
# included as-is in a live reminder file. #
|
||||||
|
# #
|
||||||
# Some examples provided by George M. Sipe <gsipe@pyratl.ga.pyramid.com> #
|
# Some examples provided by George M. Sipe <gsipe@pyratl.ga.pyramid.com> #
|
||||||
# #
|
# #
|
||||||
# U.S. holidays provided by Dave Rickel <drickel@sjc.mentorg.com> #
|
# U.S. holidays provided by Dave Rickel <drickel@sjc.mentorg.com> #
|
||||||
@@ -14,158 +19,44 @@
|
|||||||
# "#USHOLS" for U.S. holidays #
|
# "#USHOLS" for U.S. holidays #
|
||||||
# "#JHOLS" for Jewish holidays #
|
# "#JHOLS" for Jewish holidays #
|
||||||
# "#PSSTUFF" for nifty PostScript examples #
|
# "#PSSTUFF" for nifty PostScript examples #
|
||||||
# "#COLORS" for examples of ANSI color escape sequences. #
|
|
||||||
# #
|
# #
|
||||||
# This file is part of REMIND. #
|
# This file is part of REMIND. #
|
||||||
# Copyright (C) 1992-1997 David F. Skoll #
|
# Copyright (C) 1992-2024 Dianne Skoll #
|
||||||
# Copyright (C) 1999-2000 Roaring Penguin Software Inc. #
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
# #
|
# #
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
#
|
|
||||||
# $Id: defs.rem,v 1.4 2000-02-18 03:45:36 dfs Exp $
|
|
||||||
#
|
|
||||||
|
|
||||||
RUN OFF
|
RUN OFF
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
# Ensure required version of remind is used... #
|
# Ensure required version of remind is used... #
|
||||||
################################################
|
################################################
|
||||||
IF version() < "03.00.19"
|
IF version() < "03.04.02"
|
||||||
ERRMSG This file requires at least version 03.00.19 of Remind.%
|
ERRMSG This file requires at least version 03.04.02 of Remind.%
|
||||||
ERRMSG This version is version [version()].
|
ERRMSG This version is version [version()].
|
||||||
EXIT
|
EXIT
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
######################################
|
|
||||||
# Symbolic constants for weekdays... #
|
|
||||||
######################################
|
|
||||||
SET Sunday 0
|
|
||||||
SET Monday 1
|
|
||||||
SET Tuesday 2
|
|
||||||
SET Wednesday 3
|
|
||||||
SET Thursday 4
|
|
||||||
SET Friday 5
|
|
||||||
SET Saturday 6
|
|
||||||
|
|
||||||
SET Sun 0
|
|
||||||
SET Mon 1
|
|
||||||
SET Tue 2
|
|
||||||
SET Wed 3
|
|
||||||
SET Thu 4
|
|
||||||
SET Fri 5
|
|
||||||
SET Sat 6
|
|
||||||
|
|
||||||
#########################################
|
|
||||||
# Symbolic constants for month names... #
|
|
||||||
#########################################
|
|
||||||
|
|
||||||
SET Jan 1
|
|
||||||
SET Feb 2
|
|
||||||
SET Mar 3
|
|
||||||
SET Apr 4
|
|
||||||
SET May 5
|
|
||||||
SET Jun 6
|
|
||||||
SET Jul 7
|
|
||||||
SET Aug 8
|
|
||||||
SET Sep 9
|
|
||||||
SET Oct 10
|
|
||||||
SET Nov 11
|
|
||||||
SET Dec 12
|
|
||||||
|
|
||||||
SET January 1
|
|
||||||
SET February 2
|
|
||||||
SET March 3
|
|
||||||
SET April 4
|
|
||||||
SET May 5
|
|
||||||
SET June 6
|
|
||||||
SET July 7
|
|
||||||
SET August 8
|
|
||||||
SET September 9
|
|
||||||
SET October 10
|
|
||||||
SET November 11
|
|
||||||
SET December 12
|
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
# Other symbolic constants and functions for "pasting"... #
|
# Symbolic constants and functions for "pasting"... #
|
||||||
###########################################################
|
###########################################################
|
||||||
|
|
||||||
SET Quote CHAR(34)
|
SET Quote CHAR(34)
|
||||||
|
|
||||||
# Handy constants/function for specifing week of month...
|
# Handy constants/function for specifying week of month...
|
||||||
SET Week_1 1
|
SET Week_1 1
|
||||||
SET Week_2 8
|
SET Week_2 8
|
||||||
SET Week_3 15
|
SET Week_3 15
|
||||||
SET Week_4 22
|
SET Week_4 22
|
||||||
FSET _last(mo) "1 " + MON((mo%12)+1)+" --7"
|
|
||||||
|
|
||||||
# Shorthand for commonly used expression...
|
|
||||||
FSET _trig() TRIGGER(TRIGDATE())
|
|
||||||
|
|
||||||
# Handy function to provide SCANFROM dates...
|
|
||||||
FSET _back(days) TRIGGER(TODAY()-days)
|
|
||||||
|
|
||||||
###########################################################
|
|
||||||
# On MS-DOS systems, the standard C library functions are #
|
|
||||||
# not reliable for computing offsets from local time to #
|
|
||||||
# UTC. The following provides a work-around for the #
|
|
||||||
# sunrise() and sunset() functions. Note, however, that #
|
|
||||||
# if Daylight Savings Time is in effect for today(), the #
|
|
||||||
# sun functions return times in DST even for dates on #
|
|
||||||
# which DST is not in effect; the converse can also occur.#
|
|
||||||
# #
|
|
||||||
# Change the timezone to your timezone - the default is #
|
|
||||||
# for EST which is 5 hours (300 minutes) behind UTC. #
|
|
||||||
# The code is correct for places in which Daylight Savings#
|
|
||||||
# Time begins on the last Sunday in April and ends on the #
|
|
||||||
# last Sunday in October. #
|
|
||||||
###########################################################
|
|
||||||
|
|
||||||
IF OSTYPE() == "MSDOS"
|
|
||||||
# Eastern Standard Time
|
|
||||||
SET TimeZone -300
|
|
||||||
|
|
||||||
# Use --8 rather than --7 because we want the last day BEFORE
|
|
||||||
# the time switch occurs.
|
|
||||||
REM Sun 1 May --8 SATISFY 1
|
|
||||||
SET BegDst TRIGDATE()
|
|
||||||
|
|
||||||
REM Sun 1 Nov --8 SATISFY 1
|
|
||||||
SET EndDst TRIGDATE()
|
|
||||||
|
|
||||||
SET $CalcUTC 0
|
|
||||||
|
|
||||||
# Check out the following IF statement and figure out why it works!
|
|
||||||
IF EndDst < BegDst
|
|
||||||
# Daylight Savings Time
|
|
||||||
SET $MinsFromUTC TimeZone+60
|
|
||||||
ELSE
|
|
||||||
# Standard Time
|
|
||||||
SET $MinsFromUTC TimeZone
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
###########################################################
|
|
||||||
# Function which returns a string in "am/pm" format based #
|
|
||||||
# on the time. For example, set a am_pm(NOW())... #
|
|
||||||
###########################################################
|
|
||||||
|
|
||||||
FSET _am_pm(tm) IIF(tm<01:00, tm+12*60+"am", \
|
|
||||||
tm<12:00, tm+"am", \
|
|
||||||
tm<13:00, tm+"pm", \
|
|
||||||
tm-12*60+"pm")
|
|
||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
# Function which removes a single leading zero from a string... #
|
# Function that removes a single leading zero from a string... #
|
||||||
#################################################################
|
#################################################################
|
||||||
|
|
||||||
FSET _no_lz(s) IIF(SUBSTR(s, 1, 1)=="0", SUBSTR(s, 2), s)
|
FSET _no_lz(s) IIF(SUBSTR(s, 1, 1)=="0", SUBSTR(s, 2), s)
|
||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
# Return the length of the daylight/night portion of a date, #
|
# Return the length of the daylight/night portion of a date, #
|
||||||
# in minutes. #
|
# in minutes. #
|
||||||
#################################################################
|
#################################################################
|
||||||
|
|
||||||
FSET _light_len(date) MAX(SUNSET(date)-SUNRISE(date), 0)
|
FSET _light_len(date) MAX(SUNSET(date)-SUNRISE(date), 0)
|
||||||
FSET _dark_len(date) 1440-_light_len(date)
|
FSET _dark_len(date) 1440-_light_len(date)
|
||||||
|
|
||||||
@@ -173,135 +64,46 @@ FSET _dark_len(date) 1440-_light_len(date)
|
|||||||
# Function to calculate number of years since a given year #
|
# Function to calculate number of years since a given year #
|
||||||
# or number of months since a given month and year... #
|
# or number of months since a given month and year... #
|
||||||
############################################################
|
############################################################
|
||||||
|
FSET _yr_num(yr) ORD($Ty - yr)
|
||||||
FSET _yr_num(yr) ORD(YEAR(TRIGDATE()) - yr)
|
FSET _mo_num(mo, yr) ORD(12 * ($Ty - yr) + $Tm - mo)
|
||||||
FSET _mo_num(mo, yr) ORD(12 * (YEAR(TRIGDATE()) - yr) + \
|
|
||||||
MONNUM(TRIGDATE()) - mo)
|
|
||||||
|
|
||||||
# Here's an example of how to use them:
|
# Here's an example of how to use them:
|
||||||
REM 1 Nov ++12 MSG %"Dean's [_yr_num(1984)] birthday%" is %b.
|
REM 1 Nov ++12 MSG %"John's [_yr_num(1984)] birthday%" is %b.
|
||||||
REM 1 MSG Dean's [_mo_num(11, 1984)] 'monthly' anniversary
|
REM 1 MSG John's [_mo_num(11, 1984)] 'monthly' anniversary
|
||||||
|
|
||||||
###########################################################
|
|
||||||
# Function to send mail via elm's "fastmail" (by GMS!)... #
|
|
||||||
###########################################################
|
|
||||||
|
|
||||||
#FSET _mail(from, subj) "mailx -s " + \
|
|
||||||
# Quote + from + " : " + subj + Quote \
|
|
||||||
# GETENV("LOGNAME") + " < /dev/null 1>&0"
|
|
||||||
FSET _mail(from, subj) "fastmail -f " + \
|
|
||||||
Quote + from + Quote + \
|
|
||||||
" -s " + Quote + subj + Quote + \
|
|
||||||
" /dev/null " + GETENV("LOGNAME")
|
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
# Here's a tricky problem: The 4th of July is a holiday in the U.S.
|
# Here's a tricky problem: The 4th of July is a holiday in the U.S.
|
||||||
# However, if it falls on a Saturday, the previous Friday is a holiday.
|
# However, if it falls on a Saturday, the previous Friday is a holiday.
|
||||||
# If it falls on a Sunday, the next Monday is a holiday. Here's how
|
# If it falls on a Sunday, the next Monday is a holiday. Here's how
|
||||||
# to do it. NOTE that the following procedure makes the OMIT context
|
# to do it.
|
||||||
# dependent upon the current date. SInce it only depends on the current
|
#
|
||||||
# year, which is not likely to change while producing a calendar, we
|
# For those reminders that update the OMIT context with ADDOMIT, we use
|
||||||
# are fairly safe. However, reminders with huge DELTA or BACK components
|
# SCANFROM -7 for safety; see the man page about moveable OMITs.
|
||||||
# may not operate as expected. In general, any time you make OMIT
|
|
||||||
# dependent upon the current date, it's tricky and results may not be
|
|
||||||
# what you expect. You should try to make sure that the OMIT context
|
|
||||||
# "near" any current reminders will not change during a calendar run.
|
|
||||||
# The SCANFROM clause should help make these OMITs very safe.
|
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
# Calculate the weekday of the holiday.
|
# If it falls on a Saturday, bump to previous Friday
|
||||||
REM 4 July SCANFROM [_back(7)] SATISFY 1
|
REM 3 JULY SCANFROM -7 ADDOMIT SATISFY [$Tw == 5] MSG Independence day (observed)
|
||||||
|
|
||||||
IF WKDAYNUM(TRIGDATE()) == Sat
|
# If it falls on a Sunday, bump to following Monday
|
||||||
REM [TRIGGER(TRIGDATE())] MSG Independence day (actual)
|
REM 5 July SCANFROM -7 ADDOMIT SATISFY [$Tw == 1] MSG Independence day (observed)
|
||||||
OMIT [TRIGGER(TRIGDATE()-1)] MSG Independence day (observed)
|
|
||||||
ELSE
|
|
||||||
IF WKDAYNUM(TRIGDATE()) == Sun
|
|
||||||
REM [TRIGGER(TRIGDATE())] MSG Independence day (actual)
|
|
||||||
OMIT [TRIGGER(TRIGDATE()+1)] MSG Independence day (observed)
|
|
||||||
ELSE
|
|
||||||
OMIT [TRIGGER(TRIGDATE())] MSG Independence day
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
############################################################################
|
# If it falls on Sat or Sun, note the actual day
|
||||||
# #
|
REM 4 July SCANFROM -7 ADDOMIT SATISFY [$Tw == 0 || $Tw == 6] MSG Independence day (actual)
|
||||||
# A meeting on the first Monday of every month which is moved to the #
|
|
||||||
# second Monday in the event of a holiday. #
|
|
||||||
# #
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
# First, the normal meeting. However, the SKIP keyword means this
|
# Otherwise observed and actual is on the 4th
|
||||||
# one won't be triggered if the first Monday is a holiday
|
REM 4 July SCANFROM -7 ADDOMIT SATISFY [$Tw >= 1 && $Tw <= 5] MSG Independence Day
|
||||||
REM Mon 1 SKIP MSG Meeting
|
|
||||||
|
|
||||||
# Now, calculate the "potential" delayed meeting
|
|
||||||
REM Mon 8 SATISFY 1
|
|
||||||
|
|
||||||
# But only actually trigger the delayed meeting if the previous
|
|
||||||
# Monday was a holiday
|
|
||||||
IF ISOMITTED(TRIGDATE()-7)
|
|
||||||
REM [TRIGGER(TRIGDATE())] MSG Delayed meeting
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
############################################################################
|
|
||||||
# #
|
|
||||||
# A very complicated reminder sent in by a Remind user. #
|
|
||||||
# This person gets paid every two weeks, starting from 8 January 1993. #
|
|
||||||
# If a pay date occurs before the twelfth of a month, then that #
|
|
||||||
# he pays his mortgage on that pay date. Otherwise, he pays the mortgage #
|
|
||||||
# on the previous pay date. Furthermore, he has to schedule his #
|
|
||||||
# mortgage payment six days before it is due. He wants to be reminded #
|
|
||||||
# a further four days before the scheduling deadline. He also #
|
|
||||||
# wants to be mailed a notice two weeks before the scheduling deadline. #
|
|
||||||
# #
|
|
||||||
# Here's the solution - if you can follow this, consider yourself a #
|
|
||||||
# Remind programmer extraordinaire! #
|
|
||||||
# #
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
# A function to determine whether or not a pay-date is a mortgage-date.
|
|
||||||
|
|
||||||
FSET _IsMortDate(x) DAY(x) < 12 || (DAY(x+14) >= 12 && DAY(x+14) <= 14)
|
|
||||||
|
|
||||||
# Paydays - for reference
|
|
||||||
|
|
||||||
REM 8 Jan 1993 *14 MSG Payday
|
|
||||||
|
|
||||||
# Calculate the mortgage payment six days ahead of time. Note that this
|
|
||||||
# is done "implicitly" by subtracting 6 from the starting date - we start
|
|
||||||
# on 2 Jan rather than 8 Jan. We add 6 to TRIGDATE() in _IsMortDate to
|
|
||||||
# compensate.
|
|
||||||
|
|
||||||
REM 2 Jan 1993 *14 ++4 SATISFY [_IsMortDate(TRIGDATE()+6)] \
|
|
||||||
MSG %"Schedule mortgage payment%" for %a.
|
|
||||||
|
|
||||||
# Now the mail reminder two weeks before the payment date - because two
|
|
||||||
# weeks before a payment date is also a payment date, no pre-compensation
|
|
||||||
# in the starting date of 8 Jan is necessary - convince yourself of this!
|
|
||||||
# This uses the _mail() function defined earlier.
|
|
||||||
|
|
||||||
REM ONCE 8 Jan 1993 *14 SATISFY [_IsMortDate(TRIGDATE()+14)] \
|
|
||||||
RUN [_mail("Decatur Federal", \
|
|
||||||
"Pay mortgage by the " + ORD(DAY(TRIGDATE()+14)))]
|
|
||||||
|
|
||||||
# Make an entry on the calendar when the mortgage should be paid
|
|
||||||
|
|
||||||
REM 8 Jan 1993 *14 SATISFY [_IsMortDate(TRIGDATE())] \
|
|
||||||
CAL Mortgage payment
|
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
# #
|
# #
|
||||||
# On our UNIX system, I run a program which queries the university #
|
# On our UNIX system, I run a program that queries the university #
|
||||||
# library and creates a file called ".booksdue". This file is #
|
# library and creates a file called ".booksdue". This file is #
|
||||||
# a REMIND script to tell me when my library books are due. Here's #
|
# a REMIND script to tell me when my library books are due. Here's #
|
||||||
# an example from my reminder file - it shows the use of filedate(). #
|
# an example from my reminder file - it shows the use of filedate(). #
|
||||||
# When the .booksdue file is at least 7 days old, I create a new version #
|
# When the .booksdue file is at least 7 days old, I create a new version #
|
||||||
# by querying the library computer. Note the use of realtoday() rather #
|
# by querying the library computer. Note the use of realtoday() rather #
|
||||||
# than today. #
|
# than today(). #
|
||||||
# #
|
# #
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
IF !$RunOff && !$CalMode && !$SimpleCal
|
IF !$RunOff && !$CalMode && !$SimpleCal
|
||||||
IF REALTODAY()-FILEDATE("/home/dfs/.booksdue") >= 7
|
IF REALTODAY()-FILEDATE("/home/dfs/.booksdue") >= 7
|
||||||
REM RUN /home/dfs/bilge/library/getbooks
|
REM RUN /home/dfs/bilge/library/getbooks
|
||||||
@@ -328,74 +130,103 @@ REM Sat Sun SPECIAL SHADE 220
|
|||||||
# The following holidays were provided by Dave Rickel #
|
# The following holidays were provided by Dave Rickel #
|
||||||
# Modified by D. Skoll to give safe OMITs for moveable holidays #
|
# Modified by D. Skoll to give safe OMITs for moveable holidays #
|
||||||
# #
|
# #
|
||||||
|
# NOTE: See include/holidays/us.rem for more up-to-date definitions #
|
||||||
|
# #
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
SET SaveTrig $NumTrig
|
SET SaveTrig $NumTrig
|
||||||
SET easter EASTERDATE(YEAR(TODAY()))
|
SET easter EASTERDATE($Uy)
|
||||||
REM [TRIGGER(easter-46)] MSG %"Ash Wednesday%"
|
REM [easter-46] MSG %"Ash Wednesday%"
|
||||||
REM [TRIGGER(easter-7)] MSG %"Palm Sunday%"
|
REM [easter-7] MSG %"Palm Sunday%"
|
||||||
OMIT [TRIGGER(easter-2)] MSG %"Good Friday%"
|
OMIT [easter-2] MSG %"Good Friday%"
|
||||||
OMIT [TRIGGER(easter)] MSG %"Easter%" Sunday
|
OMIT [easter] MSG %"Easter%" Sunday
|
||||||
REM [TRIGGER(easter+39)] MSG %"Ascension Day%"
|
REM [easter+39] MSG %"Ascension Day%"
|
||||||
REM [TRIGGER(easter+49)] MSG %"Pentecost%"
|
REM [easter+49] MSG %"Pentecost%"
|
||||||
|
|
||||||
# Some holidays are omitted, some are not. You may want to change
|
# Some holidays are omitted, some are not. You may want to change
|
||||||
# which ones are omitted - use the general forms shown below.
|
# which ones are omitted - use the general forms shown below. You'll
|
||||||
# You'll need the _back() function and the Week_n variables defined
|
# need the Week_n variables defined way up in the file.
|
||||||
# way up in the file.
|
|
||||||
|
|
||||||
OMIT Jan 1 MSG %"New Year's%" Day
|
OMIT Jan 1 MSG %"New Year's Day%"
|
||||||
REM Mon Jan [Week_3] MSG Martin Luther King - %"MLK Day%"
|
REM Third Monday in Jan MSG Martin Luther King - %"MLK Day%"
|
||||||
REM Feb 2 MSG %"Ground Hog Day%"
|
REM Feb 2 MSG %"Ground Hog Day%"
|
||||||
REM Feb 14 MSG %"Valentine's%" Day
|
REM Feb 14 MSG %"Valentine's Day%"
|
||||||
REM Mon Feb [Week_3] SCANFROM [_back(7)] SATISFY 1
|
REM Third Monday in Feb SCANFROM -7 ADDOMIT MSG %"President's Day%"
|
||||||
OMIT [_trig()] MSG %"President's Day%"
|
REM Mar 17 MSG %"St. Patrick's Day%"
|
||||||
REM Mar 17 MSG %"St. Patrick's%" Day
|
|
||||||
REM Sun Apr 1 ++2 MSG Daylight Savings Time - %"DST starts%" %b
|
# The DST rules are accurate for most locations in
|
||||||
REM Apr 1 MSG %"April Fool's%" Day
|
# North America
|
||||||
REM Mon Tue Wed Thu Fri Sat 15 Apr MSG %"Income tax%" due
|
REM Sun Apr 1 ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST starts%" %b
|
||||||
REM May 5 MSG %"Cinco de Mayo%"
|
REM Sun Mar 8 ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST starts%" %b
|
||||||
REM Sat May [Week_1] MSG %"Kentucky Derby%"
|
|
||||||
REM Sun May [Week_2] MSG %"Mother's Day%"
|
REM Last Sunday in October ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
|
||||||
REM Sat May [Week_3] MSG %"Armed Forces Day%"
|
REM First Sunday in November ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST ends%" %b
|
||||||
REM Mon [_last(May)] SCANFROM [_back(7)] SATISFY 1
|
|
||||||
OMIT [_trig()] MSG %"Memorial Day%"
|
REM Apr 1 MSG %"April Fool's%" Day
|
||||||
REM Jun 14 MSG %"Flag Day%"
|
|
||||||
REM Sun Jun [Week_3] MSG %"Father's Day%"
|
# US Tax Day
|
||||||
REM Mon Sep [Week_1] SCANFROM [_back(7)] SATISFY 1
|
PUSH-OMIT-CONTEXT
|
||||||
OMIT [_trig()] MSG %"Labor Day%"
|
# Normal case: 16 April falls Mon-Fri
|
||||||
REM Mon Oct [Week_2] MSG %"Columbus Day%"
|
REM 16 Apr SCANFROM -7 ADDOMIT SATISFY [$Tw >= 1 && $Tw <= 5] MSG Emancipation Day
|
||||||
REM Nov 11 MSG %"Veterans Day%"
|
|
||||||
REM Sun [_last(Oct)] MSG Daylight Savings Time - %"DST over%"
|
# 16 April falls on Saturday: Observe on the 15th
|
||||||
REM Oct 30 MSG %"Mischief Night%"
|
REM 15 Apr SCANFROM -7 ADDOMIT SATISFY [$Tw == 5] MSG Emancipation Day (observed)
|
||||||
REM Oct 31 MSG %"Halloween%"
|
|
||||||
REM Tue Nov 2 SCANFROM [_back(7)] \
|
# 16 April falls on Sunday: Observe on the 17th
|
||||||
SATISFY [(YEAR(TRIGDATE()) % 4) == 0] \
|
REM 17 Apr SCANFROM -7 ADDOMIT SATISFY [$Tw == 1] MSG Emancipation Day (observed)
|
||||||
MSG %"Election%" Day
|
|
||||||
REM Thu Nov [Week_4] SCANFROM [_back(7)] SATISFY 1
|
# If you live in Maine or Massachussetts, uncomment the next line
|
||||||
OMIT [_trig()] MSG %"Thanksgiving%" Day
|
# REM Third Monday in April SCANFROM -7 ADDOMIT MSG Patriots Day
|
||||||
REM Fri Nov [Week_4+1] SCANFROM [_back(7)] SATISFY 1
|
|
||||||
OMIT [_trig()] MSG %"Thanksgiving%" (cont.)
|
REM Apr 15 OMIT Sat Sun AFTER MSG Tax Day
|
||||||
OMIT Dec 24 MSG %"Christmas Eve%"
|
POP-OMIT-CONTEXT
|
||||||
OMIT Dec 25 MSG %"Christmas%" Day
|
|
||||||
|
REM May 5 MSG %"Cinco de Mayo%"
|
||||||
|
REM First Sat in May MSG %"Kentucky Derby%"
|
||||||
|
REM Second Sun in May MSG %"Mother's Day%"
|
||||||
|
REM Third Sat in May MSG %"Armed Forces Day%"
|
||||||
|
REM Last Monday in May SCANFROM -7 ADDOMIT MSG %"Memorial Day%"
|
||||||
|
REM Jun 14 MSG %"Flag Day%"
|
||||||
|
REM Third Sun in June MSG %"Father's Day%"
|
||||||
|
REM First Mon in Sep SCANFROM -7 ADDOMIT MSG %"Labor Day%"
|
||||||
|
REM Second Mon in Oct MSG %"Columbus Day%"
|
||||||
|
REM Nov 11 MSG %"Veterans Day%"
|
||||||
|
|
||||||
|
REM Oct 30 MSG %"Mischief Night%"
|
||||||
|
REM Oct 31 MSG %"Halloween%"
|
||||||
|
REM Tue Nov 2 SCANFROM -7 SATISFY [($Ty % 4) == 0] MSG %"Election Day%"
|
||||||
|
REM Thu Nov [Week_4] SCANFROM -7 ADDOMIT MSG %"Thanksgiving Day%"
|
||||||
|
REM Fri Nov [Week_4+1] SCANFROM -7 ADDOMIT MSG %"Thanksgiving (cont.)%"
|
||||||
|
OMIT Dec 24 MSG %"Christmas Eve%"
|
||||||
|
OMIT Dec 25 MSG %"Christmas%" Day
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
# #
|
# #
|
||||||
# If any US holidays were triggered above, shade in the calendar #
|
# If any US holidays were triggered above, shade in the calendar #
|
||||||
# entry in PostScript. This is not quite correct, as it blots out any #
|
# entry in PostScript. #
|
||||||
# other PostScript stuff above. I was too lazy to do it properly :-) #
|
|
||||||
# #
|
# #
|
||||||
##########################################################################
|
##########################################################################
|
||||||
if $NumTrig > SaveTrig
|
if $NumTrig > SaveTrig
|
||||||
REM SPECIAL SHADE 220
|
REM SPECIAL SHADE 220
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Seasons (valid from 1992 to 2000)...
|
############################################################################
|
||||||
REM Mar 20 MSG %"Spring%" begins
|
# A meeting on the first Monday of every month which is moved to the #
|
||||||
REM Jun [IIF(YEAR(TODAY())%4, 21, 20)] MSG %"Summer%" begins
|
# second Monday in the event of a holiday. #
|
||||||
REM Sep [CHOOSE(YEAR(TODAY())-1991, 22,22,23,23,22,22,22,23,22)] \
|
############################################################################
|
||||||
MSG %"Fall%" begins
|
|
||||||
REM Dec [IIF((YEAR(TODAY())+1)%4, 21, 22)] MSG %"Winter%" begins
|
# First, the normal meeting. However, the SKIP keyword means this
|
||||||
|
# one won't be triggered if the first Monday is a holiday
|
||||||
|
REM First Monday SKIP MSG Meeting
|
||||||
|
|
||||||
|
# Now, calculate the "potential" delayed meeting
|
||||||
|
REM Second Monday SATISFY 1
|
||||||
|
|
||||||
|
# But only actually trigger the delayed meeting if the previous
|
||||||
|
# Monday was a holiday
|
||||||
|
IF ISOMITTED($T-7)
|
||||||
|
REM [$T] MSG Delayed meeting
|
||||||
|
ENDIF
|
||||||
|
|
||||||
#PSSTUFF2
|
#PSSTUFF2
|
||||||
##########################################################################
|
##########################################################################
|
||||||
@@ -410,19 +241,19 @@ REM Dec [IIF((YEAR(TODAY())+1)%4, 21, 22)] MSG %"Winter%" begins
|
|||||||
# example, I recommend that you use the -sd 10 option for Rem2PS.
|
# example, I recommend that you use the -sd 10 option for Rem2PS.
|
||||||
REM PS Border Border moveto \
|
REM PS Border Border moveto \
|
||||||
/DayFont findfont DaySize scalefont setfont \
|
/DayFont findfont DaySize scalefont setfont \
|
||||||
([hebday(today())] [hebmon(today())]) show
|
([hebday($U)] [hebmon($U)]) show
|
||||||
|
|
||||||
# Fill in the phases of the moon on the PostScript calendar
|
# Fill in the phases of the moon on the PostScript calendar
|
||||||
[trigger(moondate(0))] SPECIAL MOON 0
|
REM [moondate(0)] SPECIAL MOON 0
|
||||||
[trigger(moondate(1))] SPECIAL MOON 1
|
REM [moondate(1)] SPECIAL MOON 1
|
||||||
[trigger(moondate(2))] SPECIAL MOON 2
|
REM [moondate(2)] SPECIAL MOON 2
|
||||||
[trigger(moondate(3))] SPECIAL MOON 3
|
REM [moondate(3)] SPECIAL MOON 3
|
||||||
|
|
||||||
# The following example puts sunrise and sunset times in PostScript in the
|
# The following example puts sunrise and sunset times in PostScript in the
|
||||||
# calendar - the sizes are hard-coded, however, and work best in landscape.
|
# calendar - the sizes are hard-coded, however, and work best in landscape.
|
||||||
REM PS Border Border 5 sub moveto \
|
REM PS Border Border 5 sub moveto \
|
||||||
/SmallFont findfont 4 scalefont setfont \
|
/SmallFont findfont 4 scalefont setfont \
|
||||||
(Sunrise: [sunrise(trigdate())] Sunset: [sunset(trigdate())]) show
|
(Sunrise: [sunrise($T)] Sunset: [sunset($T)]) show
|
||||||
|
|
||||||
# The next one puts the day number (1-366) and days left in the year at the
|
# The next one puts the day number (1-366) and days left in the year at the
|
||||||
# bottom of the post-script calendar. Again, the hard-coded sizes work best
|
# bottom of the post-script calendar. Again, the hard-coded sizes work best
|
||||||
@@ -430,7 +261,7 @@ REM PS Border Border 5 sub moveto \
|
|||||||
FSET _DayOfYear(x) x-(date(year(x),1,1) - 1)
|
FSET _DayOfYear(x) x-(date(year(x),1,1) - 1)
|
||||||
REM PS BoxWidth 3 mul 4 div Border 5 sub moveto \
|
REM PS BoxWidth 3 mul 4 div Border 5 sub moveto \
|
||||||
/SmallFont findfont 4 scalefont setfont \
|
/SmallFont findfont 4 scalefont setfont \
|
||||||
([_DayOfYear(today())]([365+isleap(today())-_DayOfYear(today())])) show
|
([_DayOfYear($U)]([365+isleap($U)-_DayOfYear($U)])) show
|
||||||
|
|
||||||
#JHOLS
|
#JHOLS
|
||||||
##########################################################################
|
##########################################################################
|
||||||
@@ -439,7 +270,7 @@ REM PS BoxWidth 3 mul 4 div Border 5 sub moveto \
|
|||||||
# dates were obtained from "The First Jewish Catalog" by Richard Siegel #
|
# dates were obtained from "The First Jewish Catalog" by Richard Siegel #
|
||||||
# and Michael and Sharon Strassfeld, published by the Jewish Publication #
|
# and Michael and Sharon Strassfeld, published by the Jewish Publication #
|
||||||
# Society of America. The Reform version of the calendar was guessed #
|
# Society of America. The Reform version of the calendar was guessed #
|
||||||
# at by David Skoll based on experience. There is probably no standard #
|
# at by Dianne Skoll based on experience. There is probably no standard #
|
||||||
# Reform position on many of the holidays, so you may have to adjust #
|
# Reform position on many of the holidays, so you may have to adjust #
|
||||||
# the file as required. #
|
# the file as required. #
|
||||||
# #
|
# #
|
||||||
@@ -469,108 +300,133 @@ SET InIsrael 0
|
|||||||
SET Reform 0
|
SET Reform 0
|
||||||
|
|
||||||
# Convenient function definition to save typing
|
# Convenient function definition to save typing
|
||||||
FSET _h(x, y) TRIGGER(HEBDATE(x,y))
|
FSET _h(x, y) HEBDATE(x,y)
|
||||||
FSET _h2(x, y) HEBDATE(x, y, TODAY()-7)
|
FSET _h2(x, y) HEBDATE(x, y, $U-7)
|
||||||
FSET _PastSat(x, y) TRIGGER(IIF(WKDAYNUM(_h2(x,y))!=6, _h2(x,y), _h2(x,y)+1))
|
FSET _PastSat(x, y) IIF(WKDAYNUM(_h2(x,y))!=6, _h2(x,y), _h2(x,y)+1)
|
||||||
|
FSET _PastSun(x, y) IIF(WKDAYNUM(_h2(x,y))!=0, _h2(x,y), _h2(x,y)+1)
|
||||||
|
FSET _PastMon(x, y) IIF(WKDAYNUM(_h2(x,y))!=1, _h2(x,y), _h2(x,y)+1)
|
||||||
|
|
||||||
# Default values in case InIsrael and Reform are not set
|
# Default values in case InIsrael and Reform are not set
|
||||||
SET InIsrael VALUE("InIsrael", 0)
|
SET InIsrael VALUE("InIsrael", 0)
|
||||||
SET Reform VALUE("Reform", 0)
|
SET Reform VALUE("Reform", 0)
|
||||||
|
|
||||||
[_h(1, "Tishrey")] ++4 MSG %"Rosh Hashana 1%" is %b.
|
REM [_h(1, "Tishrey")] ++4 MSG %"Rosh Hashana 1%" is %b.
|
||||||
|
|
||||||
# No RH-2 or Tzom Gedalia in Reform
|
# No RH-2 or Tzom Gedalia in Reform
|
||||||
IF !Reform
|
IF !Reform
|
||||||
[_h(2, "Tishrey")] ++4 MSG %"Rosh Hashana 2%" is %b.
|
REM [_h(2, "Tishrey")] ++4 MSG %"Rosh Hashana 2%" is %b.
|
||||||
[_PastSat(3, "Tishrey")] ++4 MSG %"Tzom Gedalia%" is %b.
|
REM [_PastSat(3, "Tishrey")] ++4 MSG %"Tzom Gedalia%" is %b.
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
[_h(10, "Tishrey")] ++4 MSG %"Yom Kippur%" is %b.
|
REM [_h(10, "Tishrey")] ++4 MSG %"Yom Kippur%" is %b.
|
||||||
[_h(15, "Tishrey")] ++4 MSG %"Sukkot 1%" is %b.
|
REM [_h(15, "Tishrey")] ++4 MSG %"Sukkot 1%" is %b.
|
||||||
|
|
||||||
IF !InIsrael
|
IF !InIsrael
|
||||||
[_h(16, "Tishrey")] MSG %"Sukkot 2%"
|
REM [_h(16, "Tishrey")] MSG %"Sukkot 2%"
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
[_h(21, "Tishrey")] ++4 MSG %"Hashana Rabba%" is %b.
|
REM [_h(21, "Tishrey")] ++4 MSG %"Hoshana Rabba%" is %b.
|
||||||
[_h(22, "Tishrey")] ++4 MSG %"Shemini Atzeret%" is %b.
|
REM [_h(22, "Tishrey")] ++4 MSG %"Shemini Atzeret%" is %b.
|
||||||
|
|
||||||
IF InIsrael
|
IF InIsrael
|
||||||
[_h(22, "Tishrey")] ++4 MSG %"Simchat Torah%" is %b.
|
REM [_h(22, "Tishrey")] ++4 MSG %"Simchat Torah%" is %b.
|
||||||
ELSE
|
ELSE
|
||||||
[_h(23, "Tishrey")] ++4 MSG %"Simchat Torah%" is %b.
|
REM [_h(23, "Tishrey")] ++4 MSG %"Simchat Torah%" is %b.
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
# Because Kislev can change length, we must be more careful about Chanukah
|
# Because Kislev can change length, we must be more careful about Chanukah
|
||||||
FSET _chan(x) TRIGGER(HEBDATE(24, "Kislev", today()-9)+x)
|
FSET _chan(x) HEBDATE(24, "Kislev", $U-9)+x
|
||||||
[_chan(1)] ++4 MSG %"Chanukah 1%" is %b.
|
REM [_chan(1)] ++4 MSG %"Chanukah 1%" is %b.
|
||||||
[_chan(2)] MSG %"Chanukah 2%"
|
REM [_chan(2)] MSG %"Chanukah 2%"
|
||||||
[_chan(3)] MSG %"Chanukah 3%"
|
REM [_chan(3)] MSG %"Chanukah 3%"
|
||||||
[_chan(4)] MSG %"Chanukah 4%"
|
REM [_chan(4)] MSG %"Chanukah 4%"
|
||||||
[_chan(5)] MSG %"Chanukah 5%"
|
REM [_chan(5)] MSG %"Chanukah 5%"
|
||||||
[_chan(6)] MSG %"Chanukah 6%"
|
REM [_chan(6)] MSG %"Chanukah 6%"
|
||||||
[_chan(7)] MSG %"Chanukah 7%"
|
REM [_chan(7)] MSG %"Chanukah 7%"
|
||||||
[_chan(8)] MSG %"Chanukah 8%"
|
REM [_chan(8)] MSG %"Chanukah 8%"
|
||||||
|
|
||||||
# Not sure about Reform's position on the next one.
|
# Not sure about Reform's position on the next one.
|
||||||
IF !Reform
|
IF !Reform
|
||||||
# 10 Tevet will never be a Saturday, so whether or not to
|
# 10 Tevet will never be a Saturday, so whether or not to
|
||||||
# move it is moot. (Thanks to Art Werschulz.)
|
# move it is moot. (Thanks to Art Werschulz.)
|
||||||
[_h(10, "Tevet")] MSG %"Tzom Tevet%" is %b.
|
REM [_h(10, "Tevet")] MSG %"Tzom Tevet%" is %b.
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
[_h(15, "Shvat")] ++4 MSG %"Tu B'Shvat%" is %b.
|
REM [_h(15, "Shvat")] ++4 MSG %"Tu B'Shvat%" is %b.
|
||||||
[_h(15, "Adar A")] ++4 MSG %"Purim Katan%" is %b.
|
REM [_h(14, "Adar A")] ++4 MSG %"Purim Katan%" is %b.
|
||||||
|
REM [_h(15, "Adar A")] ++4 MSG %"Shushan Purim Katan%" is %b.
|
||||||
|
|
||||||
# If Purim is on Sunday, then Fast of Esther is 11 Adar.
|
# If Purim is on Sunday, then Fast of Esther is 11 Adar.
|
||||||
IF WKDAYNUM(_h2(13, "Adar")) != 6
|
IF WKDAYNUM(_h2(13, "Adar")) != 6
|
||||||
REM [TRIGGER(_h2(13, "Adar"))] ++4 MSG %"Fast of Esther%" is %b.
|
REM [_h2(13, "Adar")] ++4 MSG %"Fast of Esther%" is %b.
|
||||||
ELSE
|
ELSE
|
||||||
REM [TRIGGER(_h2(11, "Adar"))] ++4 MSG %"Fast of Esther%" is %b.
|
REM [_h2(11, "Adar")] ++4 MSG %"Fast of Esther%" is %b.
|
||||||
ENDIF
|
ENDIF
|
||||||
[_h(14, "Adar")] ++4 MSG %"Purim%" is %b.
|
REM [_h(14, "Adar")] ++4 MSG %"Purim%" is %b.
|
||||||
[_h(15, "Nisan")] ++4 MSG %"Pesach%" is %b.
|
REM [_h(15, "Adar")] ++4 MSG %"Shushan Purim%" is %b.
|
||||||
|
REM [_h(15, "Nisan")] ++4 MSG %"Pesach%" is %b.
|
||||||
|
|
||||||
IF !InIsrael
|
IF !InIsrael
|
||||||
[_h(16, "Nisan")] MSG %"Pesach 2%"
|
REM [_h(16, "Nisan")] MSG %"Pesach 2%"
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
[_h(21, "Nisan")] MSG %"Pesach 7%"
|
REM [_h(21, "Nisan")] MSG %"Pesach 7%"
|
||||||
|
|
||||||
IF !InIsrael && !Reform
|
IF !InIsrael && !Reform
|
||||||
[_h(22, "Nisan")] MSG %"Pesach 8%"
|
REM [_h(22, "Nisan")] MSG %"Pesach 8%"
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
[_h(27, "Nisan")] ++4 MSG %"Yom HaShoah%" is %b.
|
REM [_PastSun(27, "Nisan")] SATISFY 1
|
||||||
[_h(4, "Iyar")] ++4 MSG %"Yom HaZikaron%" is %b.
|
|
||||||
[_h(5, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
|
IF $Tw == 5
|
||||||
|
REM [_PastSun(26, "Nisan")] ++4 MSG %"Yom HaShoah%" is %b.
|
||||||
|
ELSE
|
||||||
|
REM [_PastSun(27, "Nisan")] ++4 MSG %"Yom HaShoah%" is %b.
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
# If 4 Iyar is a Thursday or Friday, then Yom Hazikaron is
|
||||||
|
# the Wednesday before and Yom Ha'atzmaut is on
|
||||||
|
# Thursday. If 4 Iyar is a Sunday, then Yom Hazikaron
|
||||||
|
# moves to 5 Iyar and Yom Ha'atzmaut to 6 Iyar.
|
||||||
|
IF WKDAYNUM(_h2(4, "Iyar")) == 4 || WKDAYNUM(_h2(4, "Iyar")) == 5
|
||||||
|
REM [_h(2, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
|
||||||
|
REM [_h(3, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
|
||||||
|
ELSE
|
||||||
|
IF WKDAYNUM(_h2(4, "Iyar")) == 0
|
||||||
|
REM [_h(5, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
|
||||||
|
REM [_h(6, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
|
||||||
|
ELSE
|
||||||
|
REM [_h(4, "Iyar")] ++4 MSG %"Yom Hazikaron%" is %b.
|
||||||
|
REM [_h(5, "Iyar")] ++4 MSG %"Yom Ha'atzmaut%" is %b.
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
# Not sure about Reform's position on Lag B'Omer
|
# Not sure about Reform's position on Lag B'Omer
|
||||||
IF !Reform
|
IF !Reform
|
||||||
[_h(18, "Iyar")] ++4 MSG %"Lag B'Omer%" is %b.
|
REM [_h(18, "Iyar")] ++4 MSG %"Lag B'Omer%" is %b.
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
[_h(28, "Iyar")] ++4 MSG %"Yom Yerushalayim%" is %b.
|
REM [_h(28, "Iyar")] ++4 MSG %"Yom Yerushalayim%" is %b.
|
||||||
[_h(6, "Sivan")] ++4 MSG %"Shavuot%" is %b.
|
REM [_h(6, "Sivan")] ++4 MSG %"Shavuot%" is %b.
|
||||||
|
|
||||||
IF !InIsrael && !Reform
|
IF !InIsrael && !Reform
|
||||||
[_h(7, "Sivan")] MSG %"Shavuot 2%"
|
REM [_h(7, "Sivan")] MSG %"Shavuot 2%"
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
# Fairly sure Reform Jews don't observe the next two
|
# Fairly sure Reform Jews don't observe the next two
|
||||||
IF !Reform
|
IF !Reform
|
||||||
# Tzom Tamuz and Tish'a B'Av are moved to Sunday if they normally
|
# Tzom Tamuz and Tish'a B'Av are moved to Sunday if they normally
|
||||||
# fall on a Saturday
|
# fall on a Saturday
|
||||||
[_PastSat(17, "Tamuz")] ++4 MSG %"Tzom Tammuz%" is %b.
|
REM [_PastSat(17, "Tamuz")] ++4 MSG %"Tzom Tammuz%" is %b.
|
||||||
[_PastSat(9, "Av")] ++4 MSG %"Tish'a B'Av%" is %b.
|
REM [_PastSat(9, "Av")] ++4 MSG %"Tish'a B'Av%" is %b.
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
# Counting the omer - do the whole spiel, i.e:
|
# Counting the omer - do the whole spiel, i.e:
|
||||||
# "This is the xth day of the omer, being y weeks and z days of the omer."
|
# "This is the xth day of the omer, being y weeks and z days of the omer."
|
||||||
# Nice Remind programming example here!
|
# Nice Remind programming example here!
|
||||||
SET ostart HEBDATE(16, "Nisan", TODAY()-50)
|
SET ostart HEBDATE(16, "Nisan", $U-50)
|
||||||
IF ostart <= TODAY() && (TODAY() - ostart < 49)
|
IF ostart <= $U && ($U - ostart < 49)
|
||||||
SET odays TODAY()-ostart+1
|
SET odays $U-ostart+1
|
||||||
IF odays < 7
|
IF odays < 7
|
||||||
MSG %"%"Today is the [ORD(odays)] day of the Omer.
|
MSG %"%"Today is the [ORD(odays)] day of the Omer.
|
||||||
ELSE
|
ELSE
|
||||||
@@ -588,52 +444,14 @@ ENDIF
|
|||||||
### for Friday and Saturday. Note: You must set your latitude, longitude
|
### for Friday and Saturday. Note: You must set your latitude, longitude
|
||||||
### and possibly time zone for these to work properly!
|
### and possibly time zone for these to work properly!
|
||||||
|
|
||||||
REM Friday CAL Candle lighting at [sunset(trigdate())-18]
|
REM Friday CAL Candle lighting at [sunset($T)-18]
|
||||||
REM Saturday CAL Havdalah at [sunset(trigdate())+42]
|
REM Saturday CAL Havdalah at [sunset($T)+42]
|
||||||
|
|
||||||
#COLORS
|
#COLORS
|
||||||
##########################################################################
|
|
||||||
# #
|
|
||||||
# This contains sample ANSI escape sequences for coloring messages. #
|
|
||||||
# It should work on an IBM PC with the ANSI.SYS driver, and on #
|
|
||||||
# other terminals which use the ANSI sequences. #
|
|
||||||
# #
|
|
||||||
# This information was provided by Gail Gurman.
|
|
||||||
# #
|
|
||||||
##########################################################################
|
|
||||||
# Colors - use Nrm to reset to normal text.
|
|
||||||
SET Esc CHAR(27)
|
|
||||||
|
|
||||||
SET Nrm Esc + "[0m"
|
|
||||||
SET Blk Esc + "[0;30m"
|
|
||||||
SET Red Esc + "[0;31m"
|
|
||||||
SET Grn Esc + "[0;32m"
|
|
||||||
SET Ylw Esc + "[0;33m"
|
|
||||||
SET Blu Esc + "[0;34m"
|
|
||||||
SET Mag Esc + "[0;35m"
|
|
||||||
SET Cyn Esc + "[0;36m"
|
|
||||||
SET Wht Esc + "[0;37m"
|
|
||||||
SET Gry Esc + "[30;1m"
|
|
||||||
SET BrRed Esc + "[31;1m"
|
|
||||||
SET BrGrn Esc + "[32;1m"
|
|
||||||
SET BrYlw Esc + "[33;1m"
|
|
||||||
SET BrBlu Esc + "[34;1m"
|
|
||||||
SET BrMag Esc + "[35;1m"
|
|
||||||
SET BrCyn Esc + "[36;1m"
|
|
||||||
SET BrWht Esc + "[37;1m"
|
|
||||||
|
|
||||||
# Examples
|
# Examples
|
||||||
REM MSG A [Blu]blue[Nrm] reminder.
|
REM 1 SPECIAL COLOR 0 0 255 A blue reminder.
|
||||||
REM MSG [Red]%"A red reminder%" safe to use in the calendar mode.[Nrm]
|
REM 2 SPECIAL COLOR 255 0 0 %"A red reminder%" safe to use in the calendar mode.
|
||||||
|
|
||||||
# Here is an example of how to use msgprefix() and msgsuffix(). These
|
|
||||||
# will highlight priority-0 reminders in bright red,
|
|
||||||
# priority-2500 in red, and priority-7500 in blue. All others
|
|
||||||
# will be in the normal colors
|
|
||||||
FSET msgprefix(x) iif(x==0, BrRed, x==2500, Red, x==7500, Blu, Nrm)
|
|
||||||
|
|
||||||
# Don't forget to return to normal color set at the end of reminder!
|
|
||||||
FSET msgsuffix(x) Nrm
|
|
||||||
|
|
||||||
# The next examples are great for putting right at the end of the reminder
|
# The next examples are great for putting right at the end of the reminder
|
||||||
# file. They make queued reminders more eye-catching when they pop up.
|
# file. They make queued reminders more eye-catching when they pop up.
|
||||||
|
|||||||
+54
-28
@@ -1,53 +1,79 @@
|
|||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: Remind
|
" Language: Remind
|
||||||
" Maintainer: Davide Alberani <alberanid@bigfoot.com>
|
" Maintainer: Davide Alberani <da@erlug.linux.it>
|
||||||
" Last change: 03 Dec 1999
|
" Last Change: 02 Nov 2015 + 13 Mar 2022 by Dianne Skoll <dianne@skoll.ca>
|
||||||
" Version: 0.1
|
" Version: 0.7+dianne1
|
||||||
" URL: http://members.xoom.com/alberanid/vim/syntax/remind.vim
|
" URL: http://ismito.it/vim/syntax/remind.vim
|
||||||
"
|
"
|
||||||
" remind is a sophisticated reminder service
|
" remind is a sophisticated reminder service
|
||||||
" you can download remind from ftp://ftp.doe.carleton.ca/pub/remind-3.0/
|
" you can download remind from:
|
||||||
|
" https://dianne.skoll.ca/projects/remind/
|
||||||
|
|
||||||
" clear any unwanted syntax defs
|
if version < 600
|
||||||
syn clear
|
syntax clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
" shut case off
|
" shut case off.
|
||||||
syn case ignore
|
syn case ignore
|
||||||
|
|
||||||
syn keyword remindCommands REM OMIT SET FSET UNSET
|
syn keyword remindCommands REM OMIT SET FSET UNSET
|
||||||
syn keyword remindExpiry UNTIL SCANFROM SCAN WARN SCHED
|
syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED THROUGH
|
||||||
syn keyword remindTag PRIORITY TAG
|
syn keyword remindTag PRIORITY TAG
|
||||||
syn keyword remindTimed AT DURATION
|
syn keyword remindTimed AT DURATION
|
||||||
syn keyword remindMove ONCE SKIP BEFORE AFTER
|
syn keyword remindMove ONCE SKIP BEFORE AFTER
|
||||||
syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP
|
syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR COLOUR DO
|
||||||
syn keyword remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
|
syn keyword remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
|
||||||
syn keyword remindConditional IF ELSE ENDIF IFTRIG
|
syn keyword remindConditional IF ELSE ENDIF IFTRIG
|
||||||
|
syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
|
||||||
syn match remindComment "#.*$"
|
syn match remindComment "#.*$"
|
||||||
syn region remindString start=+'+ end=+'+ skip=+\\\\\|\\'+ oneline
|
syn region remindString start=+'+ end=+'+ skip=+\\\\\|\\'+ oneline
|
||||||
syn region remindString start=+"+ end=+"+ skip=+\\\\\|\\"+ oneline
|
syn region remindString start=+"+ end=+"+ skip=+\\\\\|\\"+ oneline
|
||||||
syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
|
|
||||||
syn match remindVar "\$[_a-zA-Z][_a-zA-Z0-9]*"
|
syn match remindVar "\$[_a-zA-Z][_a-zA-Z0-9]*"
|
||||||
syn match remindSubst "%[^ ]"
|
syn match remindSubst "%[^ ]"
|
||||||
syn match remindAdvanceNumber "\(\*\|+\|-\|++\|--\)[0-9]\+"
|
syn match remindAdvanceNumber "\(\*\|+\|-\|++\|--\)[0-9]\+"
|
||||||
|
" XXX: use different separators for dates and times?
|
||||||
|
syn match remindDateSeparators "[/:@\.-]" contained
|
||||||
|
syn match remindTimes "[0-9]\{1,2}[:\.][0-9]\{1,2}" contains=remindDateSeparators
|
||||||
|
" XXX: why not match only valid dates? Ok, checking for 'Feb the 30' would
|
||||||
|
" be impossible, but at least check for valid months and times.
|
||||||
|
syn match remindDates "'[0-9]\{4}[/-][0-9]\{1,2}[/-][0-9]\{1,2}\(@[0-9]\{1,2}[:\.][0-9]\{1,2}\)\?'" contains=remindDateSeparators
|
||||||
|
" This will match trailing whitespaces that seem to break rem2ps.
|
||||||
|
" Courtesy of Michael Dunn.
|
||||||
|
syn match remindWarning display excludenl "\S\s\+$"ms=s+1
|
||||||
|
|
||||||
if !exists("did_remind_syntax_inits")
|
|
||||||
let did_remind_syntax_inits = 1
|
if version >= 508 || !exists("did_remind_syn_inits")
|
||||||
hi link remindCommands Function
|
if version < 508
|
||||||
hi link remindExpiry Repeat
|
let did_remind_syn_inits = 1
|
||||||
hi link remindTag Label
|
command -nargs=+ HiLink hi link <args>
|
||||||
hi link remindTimed Statement
|
else
|
||||||
hi link remindMove Statement
|
command -nargs=+ HiLink hi def link <args>
|
||||||
hi link remindSpecial Include
|
endif
|
||||||
hi link remindRun Function
|
|
||||||
hi link remindConditional Conditional
|
HiLink remindCommands Function
|
||||||
hi link remindComment Comment
|
HiLink remindExpiry Repeat
|
||||||
hi link remindString String
|
HiLink remindTag Label
|
||||||
hi link remindDebug Debug
|
HiLink remindTimed Statement
|
||||||
hi link remindVar Identifier
|
HiLink remindMove Statement
|
||||||
hi link remindSubst Constant
|
HiLink remindSpecial Include
|
||||||
hi link remindAdvanceNumber Number
|
HiLink remindRun Function
|
||||||
|
HiLink remindConditional Conditional
|
||||||
|
HiLink remindComment Comment
|
||||||
|
HiLink remindTimes String
|
||||||
|
HiLink remindString String
|
||||||
|
HiLink remindDebug Debug
|
||||||
|
HiLink remindVar Identifier
|
||||||
|
HiLink remindSubst Constant
|
||||||
|
HiLink remindAdvanceNumber Number
|
||||||
|
HiLink remindDateSeparators Comment
|
||||||
|
HiLink remindDates String
|
||||||
|
HiLink remindWarning Error
|
||||||
|
|
||||||
|
delcommand HiLink
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let b:current_syntax = "remind"
|
let b:current_syntax = "remind"
|
||||||
|
|
||||||
"EOF vim: ts=8 noet tw=100 sw=8 sts=0
|
" vim: ts=8 sw=2
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# Global variables for various ANSI escape-code sequences
|
||||||
|
# Not all sequences are supported by all terminals.
|
||||||
|
|
||||||
|
# This file is part of REMIND
|
||||||
|
# REMIND is Copyright (C) 1992-2024 by Dianne Skoll
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
if !defined("ansi_bold")
|
||||||
|
# Disable ANSI attributes in calandar mode
|
||||||
|
if $CalMode
|
||||||
|
set ansi_normal ""
|
||||||
|
set ansi_bold ""
|
||||||
|
set ansi_faint ""
|
||||||
|
set ansi_italic ""
|
||||||
|
set ansi_underline ""
|
||||||
|
set ansi_reverse ""
|
||||||
|
set ansi_strikeout ""
|
||||||
|
set ansi_underline2 ""
|
||||||
|
set ansi_overline ""
|
||||||
|
else
|
||||||
|
set ansi_normal char(27) + "[0m"
|
||||||
|
set ansi_bold char(27) + "[1m"
|
||||||
|
set ansi_faint char(27) + "[2m"
|
||||||
|
set ansi_italic char(27) + "[3m"
|
||||||
|
set ansi_underline char(27) + "[4m"
|
||||||
|
set ansi_reverse char(27) + "[7m"
|
||||||
|
set ansi_strikeout char(27) + "[9m"
|
||||||
|
set ansi_underline2 char(27) + "[21m"
|
||||||
|
set ansi_overline char(27) + "[53m"
|
||||||
|
endif
|
||||||
|
preserve ansi_normal ansi_bold ansi_faint ansi_italic ansi_underline2 ansi_reverse ansi_strikeout ansi_underline2 ansi_overline
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Example: REM MSG I must [ansi_bold]emphasize[ansi_normal] \
|
||||||
|
# the [ansi_italic]severity[ansi_normal] of the situation!
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
This directory contains holiday files. The two-character files contain
|
||||||
|
holidays for various countries. Some countries (such as US and CA) have
|
||||||
|
regions with their own different holidays; the regional holidays are
|
||||||
|
stored in *.rem files underneath the country-code directory (eg, us and ca,
|
||||||
|
respectively.)
|
||||||
|
|
||||||
|
Many of these files were generated from the excellent "holidays" Python
|
||||||
|
library at https://pypi.org/project/holidays/
|
||||||
|
|
||||||
|
I did great damage to the library and host a terrible, awful hacked version
|
||||||
|
at https://github.com/dfskoll/holidays; it is this repo (in the remind-output
|
||||||
|
branch) that I used to generate the Remind files.
|
||||||
|
|
||||||
|
********************** IMPORTANT CAVEATS **********************
|
||||||
|
|
||||||
|
Any holidays that depend on a non-Gregorian calendar such as Jewish,
|
||||||
|
Islamic, Chinese and other East Asian calendars will NOT appear in the
|
||||||
|
country files! The only exceptions are holidays depending on the
|
||||||
|
Orthodox Easter date, for which Remind has support.
|
||||||
|
|
||||||
|
Also, I have made no effort to track changes to holiday legislation
|
||||||
|
over time. Therefore, the holiday files may be inaccurate for years
|
||||||
|
prior to 2024. I also did not include any one-off holidays such as
|
||||||
|
the funeral of Queen Elizabeth on 19 September 2022.
|
||||||
|
|
||||||
|
Non-country holiday files are:
|
||||||
|
|
||||||
|
chinese-new-year.rem - Chinese New Year from 2022 through 2050
|
||||||
|
discordian.rem - Discordian holidays
|
||||||
|
jewish.rem - Jewish holidays
|
||||||
|
pagan.rem - Pagan holidays
|
||||||
|
|
||||||
|
ADVANCE WARNING:
|
||||||
|
================
|
||||||
|
|
||||||
|
None of the included holiday files have deltas or substitution sequences.
|
||||||
|
You can use the following trick if you would like (for example) 7 days'
|
||||||
|
advance warning of holidays:
|
||||||
|
|
||||||
|
# Save old definition (if any) of msgsuffix
|
||||||
|
FRENAME msgsuffix saved_msgsuffix
|
||||||
|
|
||||||
|
# Save old value of $DefaultDelta
|
||||||
|
SET old_delta $DefaultDelta
|
||||||
|
|
||||||
|
# We want 7 days' advance warning
|
||||||
|
SET $DefaultDelta 7
|
||||||
|
|
||||||
|
# Add a suffix to print " is in xxx days", etc.
|
||||||
|
# Note the char(8) at the start to put the suffix
|
||||||
|
# on the same line as the reminder, and the final %
|
||||||
|
# in the argument of dosubst() to avoid an *extra*
|
||||||
|
# newline from being added
|
||||||
|
FSET msgsuffix(x) char(8) + dosubst(" is %b.%", $T)
|
||||||
|
|
||||||
|
# Include your holiday files here...
|
||||||
|
SYSINCLUDE holidays/us.rem
|
||||||
|
SYSINCLUDE holidays/us/ny.rem
|
||||||
|
|
||||||
|
# Restore old version of msgsuffix and $DefaultDelta
|
||||||
|
FRENAME saved_msgsuffix msgsuffix
|
||||||
|
SET $DefaultDelta old_delta
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Andorra
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
#
|
||||||
|
# Note: This file consists only of the country-wide
|
||||||
|
# holidays for Andorra.
|
||||||
|
#
|
||||||
|
# For region-specific holidays, you need to include
|
||||||
|
# one of the regional *.rem files in the directory
|
||||||
|
# [$SysInclude]/holidays/ad/
|
||||||
|
|
||||||
|
OMIT 1 January MSG New Year's Day
|
||||||
|
OMIT 6 January MSG Epiphany
|
||||||
|
OMIT [easterdate($Uy)-47] MSG Carnival
|
||||||
|
OMIT 14 March MSG Constitution Day
|
||||||
|
OMIT [easterdate($Uy)-2] MSG Good Friday
|
||||||
|
OMIT [easterdate($Uy)+1] MSG Easter Monday
|
||||||
|
OMIT 1 May MSG Labor Day
|
||||||
|
OMIT [easterdate($Uy)+50] MSG Whit Monday
|
||||||
|
OMIT 15 August MSG Assumption Day
|
||||||
|
OMIT 8 September MSG National Day
|
||||||
|
OMIT 1 November MSG All Saints' Day
|
||||||
|
OMIT 8 December MSG Immaculate Conception Day
|
||||||
|
OMIT 25 December MSG Christmas Day
|
||||||
|
OMIT 26 December MSG Saint Stephen's Day
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 02 in Andorra
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 02.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ad.rem
|
||||||
|
|
||||||
|
REM Third Saturday in July ADDOMIT SCANFROM -28 MSG Canillo Annual Festival
|
||||||
|
REM Sunday 16 July ADDOMIT SCANFROM -28 MSG Canillo Annual Festival
|
||||||
|
REM Monday 17 July ADDOMIT SCANFROM -28 MSG Canillo Annual Festival
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 03 in Andorra
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 03.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ad.rem
|
||||||
|
|
||||||
|
OMIT 15 August MSG Encamp Annual Festival
|
||||||
|
OMIT 16 August MSG Encamp Annual Festival
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 04 in Andorra
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 04.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ad.rem
|
||||||
|
|
||||||
|
OMIT 15 August MSG La Massana Annual Festival
|
||||||
|
OMIT 16 August MSG La Massana Annual Festival
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 05 in Andorra
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 05.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ad.rem
|
||||||
|
|
||||||
|
OMIT 15 August MSG Ordino Annual Festival
|
||||||
|
OMIT 16 August MSG Ordino Annual Festival
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 06 in Andorra
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 06.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ad.rem
|
||||||
|
|
||||||
|
REM Friday 23 July ADDOMIT SCANFROM -28 MSG Sant Julià de Lòria Annual Festival
|
||||||
|
REM Saturday 24 July ADDOMIT SCANFROM -28 MSG Sant Julià de Lòria Annual Festival
|
||||||
|
REM Sunday 25 July ADDOMIT SCANFROM -28 MSG Sant Julià de Lòria Annual Festival
|
||||||
|
REM Monday 26 July ADDOMIT SCANFROM -28 MSG Sant Julià de Lòria Annual Festival
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 07 in Andorra
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 07.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ad.rem
|
||||||
|
|
||||||
|
REM First Saturday in August ADDOMIT SCANFROM -28 MSG Andorra la Vella Annual Festival
|
||||||
|
REM Sunday 2 August ADDOMIT SCANFROM -28 MSG Andorra la Vella Annual Festival
|
||||||
|
REM Monday 3 August ADDOMIT SCANFROM -28 MSG Andorra la Vella Annual Festival
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 08 in Andorra
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 08.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ad.rem
|
||||||
|
|
||||||
|
OMIT 25 July MSG Escaldes-Engordany Annual Festival
|
||||||
|
OMIT 26 July MSG Escaldes-Engordany Annual Festival
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for United Arab Emirates
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG رأس السنة الميلادية
|
||||||
|
OMIT 2 December MSG اليوم الوطني
|
||||||
|
OMIT 3 December MSG اليوم الوطني
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Albania
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Festat e Vitit të Ri
|
||||||
|
REM 1 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1))==0 || wkdaynum(date($Ty, 1, 1))==6] MSG Festat e Vitit të Ri (ditë pushimi e shtyrë)
|
||||||
|
OMIT 2 January MSG Festat e Vitit të Ri
|
||||||
|
REM 2 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 2))==0 || wkdaynum(date($Ty, 1, 2))==6] MSG Festat e Vitit të Ri (ditë pushimi e shtyrë)
|
||||||
|
OMIT 14 March MSG Dita e Verës
|
||||||
|
REM 14 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 14))==0 || wkdaynum(date($Ty, 3, 14))==6] MSG Dita e Verës (ditë pushimi e shtyrë)
|
||||||
|
OMIT 22 March MSG Dita e Nevruzit
|
||||||
|
REM 22 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 22))==0 || wkdaynum(date($Ty, 3, 22))==6] MSG Dita e Nevruzit (ditë pushimi e shtyrë)
|
||||||
|
REM 31 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 31))==0 || wkdaynum(date($Ty, 3, 31))==6] MSG E diela e Pashkëve Katolike (ditë pushimi e shtyrë)
|
||||||
|
OMIT [easterdate($Uy)] MSG E diela e Pashkëve Katolike
|
||||||
|
OMIT [easterdate($Uy)] MSG E diela e Pashkëve Ortodokse
|
||||||
|
OMIT 1 May MSG Dita Ndërkombëtare e Punëtorëve
|
||||||
|
REM 1 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1))==0 || wkdaynum(date($Ty, 5, 1))==6] MSG Dita Ndërkombëtare e Punëtorëve (ditë pushimi e shtyrë)
|
||||||
|
REM 5 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 5))==0 || wkdaynum(date($Ty, 5, 5))==6] MSG E diela e Pashkëve Ortodokse (ditë pushimi e shtyrë)
|
||||||
|
OMIT 5 September MSG Dita e Shenjtërimit të Shenjt Terezës
|
||||||
|
REM 5 September OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 5))==0 || wkdaynum(date($Ty, 9, 5))==6] MSG Dita e Shenjtërimit të Shenjt Terezës (ditë pushimi e shtyrë)
|
||||||
|
OMIT 22 November MSG Dita e Alfabetit
|
||||||
|
REM 22 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 22))==0 || wkdaynum(date($Ty, 11, 22))==6] MSG Dita e Alfabetit (ditë pushimi e shtyrë)
|
||||||
|
OMIT 28 November MSG Dita Flamurit dhe e Pavarësisë
|
||||||
|
REM 28 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 28))==0 || wkdaynum(date($Ty, 11, 28))==6] MSG Dita Flamurit dhe e Pavarësisë (ditë pushimi e shtyrë)
|
||||||
|
OMIT 29 November MSG Dita e Çlirimit
|
||||||
|
REM 29 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 29))==0 || wkdaynum(date($Ty, 11, 29))==6] MSG Dita e Çlirimit (ditë pushimi e shtyrë)
|
||||||
|
OMIT 8 December MSG Dita Kombëtare e Rinisë
|
||||||
|
REM 8 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 8))==0 || wkdaynum(date($Ty, 12, 8))==6] MSG Dita Kombëtare e Rinisë (ditë pushimi e shtyrë)
|
||||||
|
OMIT 25 December MSG Krishtlindjet
|
||||||
|
REM 25 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25))==0 || wkdaynum(date($Ty, 12, 25))==6] MSG Krishtlindjet (ditë pushimi e shtyrë)
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Armenia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Նոր տարվա օր
|
||||||
|
OMIT 2 January MSG Նոր տարվա օր
|
||||||
|
OMIT 6 January MSG Սուրբ Ծնունդ եւ Հայտնություն
|
||||||
|
OMIT 28 January MSG Բանակի օր
|
||||||
|
OMIT 8 March MSG Կանանց տոն
|
||||||
|
OMIT 24 April MSG Եղեռնի զոհերի հիշատակի օր
|
||||||
|
OMIT 1 May MSG Աշխատանքի օր
|
||||||
|
OMIT 9 May MSG Հաղթանակի և Խաղաղության տոն
|
||||||
|
OMIT 28 May MSG Հանրապետության օր
|
||||||
|
OMIT 5 July MSG Սահմանադրության օր
|
||||||
|
OMIT 21 September MSG Անկախության օր
|
||||||
|
OMIT 31 December MSG Նոր տարվա գիշեր
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Angola
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Dia do Ano Novo
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 4] MSG Dia do Ano Novo (ponte)
|
||||||
|
REM 3 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 4)) == 2] MSG Dia do Início da Luta Armada de Libertação Nacional (ponte)
|
||||||
|
OMIT 4 February MSG Dia do Início da Luta Armada de Libertação Nacional
|
||||||
|
REM 5 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 4)) == 4] MSG Dia do Início da Luta Armada de Libertação Nacional (ponte)
|
||||||
|
REM 12 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 13)) == 2] MSG Dia do Carnaval (ponte)
|
||||||
|
REM 14 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 13)) == 4] MSG Dia do Carnaval (ponte)
|
||||||
|
OMIT [easterdate($Uy)-47] MSG Dia do Carnaval
|
||||||
|
REM 7 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8)) == 2] MSG Dia Internacional da Mulher (ponte)
|
||||||
|
OMIT 8 March MSG Dia Internacional da Mulher
|
||||||
|
REM 9 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8)) == 4] MSG Dia Internacional da Mulher (ponte)
|
||||||
|
REM 22 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 23)) == 2] MSG Dia da Libertação da África Austral (ponte)
|
||||||
|
OMIT 23 March MSG Dia da Libertação da África Austral
|
||||||
|
REM 24 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 23)) == 4] MSG Dia da Libertação da África Austral (ponte)
|
||||||
|
REM 3 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 4)) == 2] MSG Dia da Paz e Reconciliação Nacional (ponte)
|
||||||
|
OMIT 4 April MSG Dia da Paz e Reconciliação Nacional
|
||||||
|
REM 5 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 4)) == 4] MSG Dia da Paz e Reconciliação Nacional (ponte)
|
||||||
|
OMIT [easterdate($Uy)-2] MSG Sexta-Feira Santa
|
||||||
|
REM 30 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 2] MSG Dia Internacional do Trabalhador (ponte)
|
||||||
|
OMIT 1 May MSG Dia Internacional do Trabalhador
|
||||||
|
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 4] MSG Dia Internacional do Trabalhador (ponte)
|
||||||
|
REM 16 September ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 17)) == 2] MSG Dia do Fundador da Nação e do Herói Nacional (ponte)
|
||||||
|
OMIT 17 September MSG Dia do Fundador da Nação e do Herói Nacional
|
||||||
|
REM 18 September ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 17)) == 4] MSG Dia do Fundador da Nação e do Herói Nacional (ponte)
|
||||||
|
REM 1 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 2)) == 2] MSG Dia dos Finados (ponte)
|
||||||
|
OMIT 2 November MSG Dia dos Finados
|
||||||
|
REM 3 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 2)) == 4] MSG Dia dos Finados (ponte)
|
||||||
|
REM 10 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 11)) == 2] MSG Dia da Independência Nacional (ponte)
|
||||||
|
OMIT 11 November MSG Dia da Independência Nacional
|
||||||
|
REM 12 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 11)) == 4] MSG Dia da Independência Nacional (ponte)
|
||||||
|
REM 24 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 2] MSG Dia de Natal e da Família (ponte)
|
||||||
|
OMIT 25 December MSG Dia de Natal e da Família
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 4] MSG Dia de Natal e da Família (ponte)
|
||||||
|
REM 31 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 2] MSG Dia do Ano Novo (ponte)
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Argentina
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Año Nuevo
|
||||||
|
OMIT [easterdate($Uy)-48] MSG Día de Carnaval
|
||||||
|
OMIT [easterdate($Uy)-47] MSG Día de Carnaval
|
||||||
|
OMIT 24 March MSG Día Nacional de la Memoria por la Verdad y la Justicia
|
||||||
|
OMIT 2 April MSG Día del Veterano y de los Caidos en la Guerra de Malvinas
|
||||||
|
OMIT [easterdate($Uy)-2] MSG Viernes Santo
|
||||||
|
OMIT 1 May MSG Día del Trabajo
|
||||||
|
OMIT 25 May MSG Día de la Revolución de Mayo
|
||||||
|
REM 15 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 17)) == 3] MSG Paso a la Inmortalidad del General Don Martín Miguel de Güemes (observado)
|
||||||
|
REM 16 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 17)) == 2] MSG Paso a la Inmortalidad del General Don Martín Miguel de Güemes (observado)
|
||||||
|
REM 17 June ADDOMIT SCANFROM -28 SATISFY [$Tw != 2 && $Tw != 3 && $Tw != 4] MSG Paso a la Inmortalidad del General Don Martín Miguel de Güemes (observado)
|
||||||
|
OMIT 20 June MSG Paso a la Inmortalidad del General Don Manuel Belgrano
|
||||||
|
REM 21 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 17)) == 4] MSG Paso a la Inmortalidad del General Don Martín Miguel de Güemes (observado)
|
||||||
|
OMIT 9 July MSG Día de la Independencia
|
||||||
|
REM 15 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 17)) == 3] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
|
||||||
|
REM 16 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 17)) == 2] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
|
||||||
|
REM 17 August ADDOMIT SCANFROM -28 SATISFY [$Tw != 2 && $Tw != 3 && $Tw != 4 && $Tw != 5] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
|
||||||
|
REM 20 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 17)) == 5] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
|
||||||
|
REM 21 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 17)) == 4] MSG Paso a la Inmortalidad del General Don José de San Martin (observado)
|
||||||
|
REM 10 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 12)) == 3] MSG Día del Respeto a la Diversidad Cultural (observado)
|
||||||
|
REM 11 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 12)) == 2] MSG Día del Respeto a la Diversidad Cultural (observado)
|
||||||
|
REM 12 October ADDOMIT SCANFROM -28 SATISFY [$Tw != 2 && $Tw != 3 && $Tw != 4 && $Tw != 5] MSG Día del Respeto a la Diversidad Cultural (observado)
|
||||||
|
REM 15 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 12)) == 5] MSG Día del Respeto a la Diversidad Cultural (observado)
|
||||||
|
REM 16 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 12)) == 4] MSG Día del Respeto a la Diversidad Cultural (observado)
|
||||||
|
REM 18 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 20)) == 3] MSG Día de la Soberanía Nacional (observado)
|
||||||
|
REM 19 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 20)) == 2] MSG Día de la Soberanía Nacional (observado)
|
||||||
|
REM 20 November ADDOMIT SCANFROM -28 SATISFY [$Tw != 2 && $Tw != 3 && $Tw != 4 && $Tw != 5] MSG Día de la Soberanía Nacional (observado)
|
||||||
|
REM 23 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 20)) == 5] MSG Día de la Soberanía Nacional (observado)
|
||||||
|
REM 24 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 20)) == 4] MSG Día de la Soberanía Nacional (observado)
|
||||||
|
OMIT 8 December MSG Inmaculada Concepción de María
|
||||||
|
OMIT 25 December MSG Navidad
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for American Samoa
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG New Year's Day
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
REM Third Monday in January ADDOMIT SCANFROM -28 MSG Martin Luther King Jr. Day
|
||||||
|
REM Third Monday in February ADDOMIT SCANFROM -28 MSG Washington's Birthday
|
||||||
|
REM 16 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 17)) == 6] MSG American Samoa Flag Day (observed)
|
||||||
|
OMIT 17 April MSG American Samoa Flag Day
|
||||||
|
REM 18 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 17)) == 0] MSG American Samoa Flag Day (observed)
|
||||||
|
REM Last Monday in May ADDOMIT SCANFROM -28 MSG Memorial Day
|
||||||
|
REM 18 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 19)) == 6] MSG Juneteenth National Independence Day (observed)
|
||||||
|
OMIT 19 June MSG Juneteenth National Independence Day
|
||||||
|
REM 20 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 19)) == 0] MSG Juneteenth National Independence Day (observed)
|
||||||
|
REM 3 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 4)) == 6] MSG Independence Day (observed)
|
||||||
|
OMIT 4 July MSG Independence Day
|
||||||
|
REM 5 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 4)) == 0] MSG Independence Day (observed)
|
||||||
|
REM 15 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 16)) == 6] MSG Manu'a Islands Cession Day (observed)
|
||||||
|
OMIT 16 July MSG Manu'a Islands Cession Day
|
||||||
|
REM 17 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 16)) == 0] MSG Manu'a Islands Cession Day (observed)
|
||||||
|
REM First Monday in September ADDOMIT SCANFROM -28 MSG Labor Day
|
||||||
|
REM Second Monday in October ADDOMIT SCANFROM -28 MSG Columbus Day
|
||||||
|
REM Second Sunday in October ADDOMIT SCANFROM -28 MSG White Sunday
|
||||||
|
REM 10 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 11)) == 6] MSG Veterans Day (observed)
|
||||||
|
OMIT 11 November MSG Veterans Day
|
||||||
|
REM 12 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 11)) == 0] MSG Veterans Day (observed)
|
||||||
|
REM Fourth Thursday in November ADDOMIT SCANFROM -28 MSG Thanksgiving
|
||||||
|
REM 24 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
|
OMIT 25 December MSG Christmas Day
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 31 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 14 February MSG Valentine's Day
|
||||||
|
REM 17 March MSG Saint Patrick's Day
|
||||||
|
REM 31 October MSG Halloween
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
#
|
||||||
|
# Note: This file consists only of the country-wide
|
||||||
|
# holidays for Austria.
|
||||||
|
#
|
||||||
|
# For region-specific holidays, you need to include
|
||||||
|
# one of the regional *.rem files in the directory
|
||||||
|
# [$SysInclude]/holidays/at/
|
||||||
|
|
||||||
|
OMIT 1 January MSG Neujahr
|
||||||
|
OMIT 6 January MSG Heilige Drei Könige
|
||||||
|
OMIT [easterdate($Uy)+1] MSG Ostermontag
|
||||||
|
OMIT 1 May MSG Staatsfeiertag
|
||||||
|
OMIT [easterdate($Uy)+39] MSG Christi Himmelfahrt
|
||||||
|
OMIT [easterdate($Uy)+50] MSG Pfingstmontag
|
||||||
|
OMIT [easterdate($Uy)+60] MSG Fronleichnam
|
||||||
|
OMIT 15 August MSG Mariä Himmelfahrt
|
||||||
|
OMIT 26 October MSG Nationalfeiertag
|
||||||
|
OMIT 1 November MSG Allerheiligen
|
||||||
|
OMIT 8 December MSG Mariä Empfängnis
|
||||||
|
OMIT 25 December MSG Christtag
|
||||||
|
OMIT 26 December MSG Stefanitag
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM [easterdate($Uy)-2] MSG Karfreitag
|
||||||
|
REM 24 December MSG Heiliger Abend
|
||||||
|
REM 31 December MSG Silvester
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 1 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 1.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 11 November MSG Hl. Martin
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 2 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 2.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 19 March MSG Hl. Josef
|
||||||
|
REM 10 October MSG Tag der Volksabstimmung
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 3 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 3.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 15 November MSG Hl. Leopold
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 4 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 4.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 4 May MSG Hl. Florian
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 5 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 5.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 24 September MSG Hl. Rupert
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 6 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 6.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 19 March MSG Hl. Josef
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 7 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 7.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 19 March MSG Hl. Josef
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 8 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 8.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 19 March MSG Hl. Josef
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision 9 in Austria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision 9.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/at.rem
|
||||||
|
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 15 November MSG Hl. Leopold
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
#
|
||||||
|
# Note: This file consists only of the country-wide
|
||||||
|
# holidays for Australia.
|
||||||
|
#
|
||||||
|
# For region-specific holidays, you need to include
|
||||||
|
# one of the regional *.rem files in the directory
|
||||||
|
# [$SysInclude]/holidays/au/
|
||||||
|
|
||||||
|
OMIT 1 January MSG New Year's Day
|
||||||
|
OMIT 26 January MSG Australia Day
|
||||||
|
OMIT [easterdate($Uy)-2] MSG Good Friday
|
||||||
|
OMIT [easterdate($Uy)+1] MSG Easter Monday
|
||||||
|
OMIT 25 April MSG ANZAC Day
|
||||||
|
OMIT 25 December MSG Christmas Day
|
||||||
|
OMIT 26 December MSG Boxing Day
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision ACT in Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision ACT.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/au.rem
|
||||||
|
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
|
||||||
|
REM Second Monday in March ADDOMIT SCANFROM -28 MSG Canberra Day
|
||||||
|
OMIT [easterdate($Uy)-1] MSG Easter Saturday
|
||||||
|
OMIT [easterdate($Uy)] MSG Easter Sunday
|
||||||
|
REM Monday 27 May ADDOMIT SCANFROM -28 MSG Reconciliation Day
|
||||||
|
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
|
||||||
|
REM First Monday in October ADDOMIT SCANFROM -28 MSG Labour Day
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM First Monday in August SCANFROM -28 MSG Bank Holiday
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision NSW in Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision NSW.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/au.rem
|
||||||
|
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
|
||||||
|
OMIT [easterdate($Uy)-1] MSG Easter Saturday
|
||||||
|
OMIT [easterdate($Uy)] MSG Easter Sunday
|
||||||
|
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
|
||||||
|
REM First Monday in October ADDOMIT SCANFROM -28 MSG Labour Day
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM First Monday in August SCANFROM -28 MSG Bank Holiday
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision NT in Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision NT.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/au.rem
|
||||||
|
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
|
||||||
|
OMIT [easterdate($Uy)-1] MSG Easter Saturday
|
||||||
|
OMIT [easterdate($Uy)] MSG Easter Sunday
|
||||||
|
REM First Monday in May ADDOMIT SCANFROM -28 MSG May Day
|
||||||
|
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
|
||||||
|
REM First Monday in August ADDOMIT SCANFROM -28 MSG Picnic Day
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 1] MSG Boxing Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 24 December MSG Christmas Eve (from 7pm)
|
||||||
|
REM 31 December MSG New Year's Eve (from 7pm)
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision QLD in Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision QLD.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/au.rem
|
||||||
|
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
|
||||||
|
OMIT [easterdate($Uy)-1] MSG Easter Saturday
|
||||||
|
OMIT [easterdate($Uy)] MSG Easter Sunday
|
||||||
|
REM First Monday in May ADDOMIT SCANFROM -28 MSG Labour Day
|
||||||
|
REM Wednesday 10 August ADDOMIT SCANFROM -28 MSG The Royal Queensland Show
|
||||||
|
REM First Monday in October ADDOMIT SCANFROM -28 MSG King's Birthday
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision SA in Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision SA.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/au.rem
|
||||||
|
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
|
||||||
|
REM Second Monday in March ADDOMIT SCANFROM -28 MSG Adelaide Cup Day
|
||||||
|
OMIT [easterdate($Uy)-1] MSG Easter Saturday
|
||||||
|
OMIT [easterdate($Uy)] MSG Easter Sunday
|
||||||
|
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
|
||||||
|
REM First Monday in October ADDOMIT SCANFROM -28 MSG Labour Day
|
||||||
|
OMIT 26 December MSG Proclamation Day
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 1] MSG Proclamation Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Proclamation Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Proclamation Day (observed)
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 24 December MSG Christmas Eve (from 7pm)
|
||||||
|
REM 31 December MSG New Year's Eve (from 7pm)
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision TAS in Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision TAS.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/au.rem
|
||||||
|
|
||||||
|
REM Second Monday in March ADDOMIT SCANFROM -28 MSG Eight Hours Day
|
||||||
|
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision VIC in Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision VIC.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/au.rem
|
||||||
|
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
|
||||||
|
REM Second Monday in March ADDOMIT SCANFROM -28 MSG Labour Day
|
||||||
|
OMIT [easterdate($Uy)-1] MSG Easter Saturday
|
||||||
|
OMIT [easterdate($Uy)] MSG Easter Sunday
|
||||||
|
REM Second Monday in June ADDOMIT SCANFROM -28 MSG King's Birthday
|
||||||
|
REM Saturday 1 October --8 ADDOMIT SCANFROM -28 MSG Grand Final Day
|
||||||
|
REM First Tuesday in November ADDOMIT SCANFROM -28 MSG Melbourne Cup Day
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision WA in Australia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision WA.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/au.rem
|
||||||
|
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG New Year's Day (observed)
|
||||||
|
REM First Monday in March ADDOMIT SCANFROM -28 MSG Labour Day
|
||||||
|
OMIT [easterdate($Uy)] MSG Easter Sunday
|
||||||
|
REM 26 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 25)) == 0] MSG ANZAC Day (observed)
|
||||||
|
REM 27 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 25)) == 6] MSG ANZAC Day (observed)
|
||||||
|
REM First Monday in June ADDOMIT SCANFROM -28 MSG Western Australia Day
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 6] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 1] MSG Boxing Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
|
||||||
|
REM 28 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 6] MSG Boxing Day (observed)
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Aruba
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Aña Nobo
|
||||||
|
OMIT 25 January MSG Dia di Betico
|
||||||
|
OMIT [easterdate($Uy)-48] MSG Dialuna prome cu diaranson di shinish
|
||||||
|
OMIT 18 March MSG Dia di Himno y Bandera
|
||||||
|
OMIT [easterdate($Uy)-2] MSG Bierna Santo
|
||||||
|
OMIT [easterdate($Uy)+1] MSG Di dos dia di Pasco di Resureccion
|
||||||
|
OMIT 1 May MSG Dia di Obrero
|
||||||
|
OMIT [easterdate($Uy)+39] MSG Dia di Asuncion
|
||||||
|
REM 31 August ADDOMIT SCANFROM -28 SATISFY [$Tw != 0] MSG Dia di Rey
|
||||||
|
REM 1 September ADDOMIT SCANFROM -28 SATISFY [$Tw == 1] MSG Dia di Rey
|
||||||
|
OMIT 25 December MSG Pasco di Nacemento
|
||||||
|
OMIT 26 December MSG Di dos dia di Pasco di Nacemento
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Azerbaijan
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Yeni il bayramı
|
||||||
|
REM 1 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1))==0 || wkdaynum(date($Ty, 1, 1))==6] MSG Yeni il bayramı (müşahidə olunur)
|
||||||
|
OMIT 2 January MSG Yeni il bayramı
|
||||||
|
REM 2 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 2))==0 || wkdaynum(date($Ty, 1, 2))==6] MSG Yeni il bayramı (müşahidə olunur)
|
||||||
|
OMIT 20 January MSG Ümumxalq hüzn günü
|
||||||
|
OMIT 8 March MSG Qadınlar günü
|
||||||
|
REM 8 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8))==0 || wkdaynum(date($Ty, 3, 8))==6] MSG Qadınlar günü (müşahidə olunur)
|
||||||
|
OMIT 20 March MSG Novruz bayramı
|
||||||
|
REM 20 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 20))==0 || wkdaynum(date($Ty, 3, 20))==6] MSG Novruz bayramı (müşahidə olunur)
|
||||||
|
OMIT 21 March MSG Novruz bayramı
|
||||||
|
REM 21 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 21))==0 || wkdaynum(date($Ty, 3, 21))==6] MSG Novruz bayramı (müşahidə olunur)
|
||||||
|
OMIT 22 March MSG Novruz bayramı
|
||||||
|
REM 22 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 22))==0 || wkdaynum(date($Ty, 3, 22))==6] MSG Novruz bayramı (müşahidə olunur)
|
||||||
|
OMIT 23 March MSG Novruz bayramı
|
||||||
|
REM 23 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 23))==0 || wkdaynum(date($Ty, 3, 23))==6] MSG Novruz bayramı (müşahidə olunur)
|
||||||
|
OMIT 24 March MSG Novruz bayramı
|
||||||
|
REM 24 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 24))==0 || wkdaynum(date($Ty, 3, 24))==6] MSG Novruz bayramı (müşahidə olunur)
|
||||||
|
OMIT 9 May MSG Faşizm üzərində qələbə günü
|
||||||
|
REM 9 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 9))==0 || wkdaynum(date($Ty, 5, 9))==6] MSG Faşizm üzərində qələbə günü (müşahidə olunur)
|
||||||
|
OMIT 28 May MSG Müstəqillik Günü
|
||||||
|
REM 28 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 28))==0 || wkdaynum(date($Ty, 5, 28))==6] MSG Müstəqillik Günü (müşahidə olunur)
|
||||||
|
OMIT 15 June MSG Azərbaycan xalqının milli qurtuluş günü
|
||||||
|
REM 15 June OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 15))==0 || wkdaynum(date($Ty, 6, 15))==6] MSG Azərbaycan xalqının milli qurtuluş günü (müşahidə olunur)
|
||||||
|
OMIT 26 June MSG Azərbaycan Respublikasının Silahlı Qüvvələri günü
|
||||||
|
REM 26 June OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 26))==0 || wkdaynum(date($Ty, 6, 26))==6] MSG Azərbaycan Respublikasının Silahlı Qüvvələri günü (müşahidə olunur)
|
||||||
|
OMIT 8 November MSG Zəfər Günü
|
||||||
|
REM 8 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 8))==0 || wkdaynum(date($Ty, 11, 8))==6] MSG Zəfər Günü (müşahidə olunur)
|
||||||
|
OMIT 9 November MSG Azərbaycan Respublikasının Dövlət bayrağı günü
|
||||||
|
REM 9 November OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 9))==0 || wkdaynum(date($Ty, 11, 9))==6] MSG Azərbaycan Respublikasının Dövlət bayrağı günü (müşahidə olunur)
|
||||||
|
OMIT 31 December MSG Dünya azərbaycanlılarının həmrəyliyi günü
|
||||||
|
REM 31 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 31))==0 || wkdaynum(date($Ty, 12, 31))==6] MSG Dünya azərbaycanlılarının həmrəyliyi günü (müşahidə olunur)
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 27 September MSG Anım Günü
|
||||||
|
REM 18 October MSG Müstəqilliyin Bərpası Günü
|
||||||
|
REM 12 November MSG Konstitusiya Günü
|
||||||
|
REM 17 November MSG Milli Dirçəliş Günü
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Bosnia And Herzegovina
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
#
|
||||||
|
# Note: This file consists only of the country-wide
|
||||||
|
# holidays for Bosnia And Herzegovina.
|
||||||
|
#
|
||||||
|
# For region-specific holidays, you need to include
|
||||||
|
# one of the regional *.rem files in the directory
|
||||||
|
# [$SysInclude]/holidays/ba/
|
||||||
|
|
||||||
|
OMIT 1 January MSG Nova godina
|
||||||
|
OMIT 2 January MSG Nova godina
|
||||||
|
OMIT 7 January MSG Božić (Pravoslavni)
|
||||||
|
OMIT [orthodoxeaster($Uy)-2] MSG Veliki petak (Pravoslavni)
|
||||||
|
OMIT [orthodoxeaster($Uy)+1] MSG Uskrsni ponedjeljak (Katolički)
|
||||||
|
OMIT 1 May MSG Međunarodni praznik rada
|
||||||
|
OMIT 2 May MSG Međunarodni praznik rada
|
||||||
|
OMIT 25 December MSG Božić (Katolički)
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision BIH in Bosnia And Herzegovina
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision BIH.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ba.rem
|
||||||
|
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG Nova godina (preneseno)
|
||||||
|
OMIT 6 January MSG Badnji dan (Pravoslavni)
|
||||||
|
OMIT 1 March MSG Dan nezavisnosti
|
||||||
|
OMIT [orthodoxeaster($Uy)-2] MSG Veliki petak (Katolički)
|
||||||
|
OMIT [orthodoxeaster($Uy)] MSG Uskrs (Katolički)
|
||||||
|
OMIT [orthodoxeaster($Uy)] MSG Vaskrs (Pravoslavni)
|
||||||
|
OMIT [orthodoxeaster($Uy)+1] MSG Uskrsni ponedjeljak (Pravoslavni)
|
||||||
|
REM 3 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Međunarodni praznik rada (preneseno)
|
||||||
|
OMIT 9 May MSG Dan pobjede nad fašizmom
|
||||||
|
OMIT 25 November MSG Dan državnosti
|
||||||
|
OMIT 24 December MSG Badnji dan (Katolički)
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision BRC in Bosnia And Herzegovina
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision BRC.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ba.rem
|
||||||
|
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG Nova godina (preneseno)
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG Nova godina (preneseno)
|
||||||
|
REM 8 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 7)) == 0] MSG Božić (Pravoslavni) (preneseno)
|
||||||
|
OMIT 8 March MSG Dan uspostavljanja Brčko distrikta
|
||||||
|
REM 9 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8)) == 0] MSG Dan uspostavljanja Brčko distrikta (preneseno)
|
||||||
|
REM 3 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Međunarodni praznik rada (preneseno)
|
||||||
|
REM 3 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 6] MSG Međunarodni praznik rada (preneseno)
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Božić (Katolički) (preneseno)
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision SRP in Bosnia And Herzegovina
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision SRP.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/ba.rem
|
||||||
|
|
||||||
|
REM 3 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 6] MSG Nova godina (preneseno)
|
||||||
|
OMIT 6 January MSG Badnji dan (Pravoslavni)
|
||||||
|
OMIT 14 January MSG Pravoslavna Nova godina
|
||||||
|
OMIT [orthodoxeaster($Uy)-2] MSG Veliki petak (Katolički)
|
||||||
|
OMIT [orthodoxeaster($Uy)] MSG Uskrs (Katolički)
|
||||||
|
OMIT [orthodoxeaster($Uy)] MSG Vaskrs (Pravoslavni)
|
||||||
|
OMIT [orthodoxeaster($Uy)+1] MSG Uskrsni ponedjeljak (Pravoslavni)
|
||||||
|
REM 3 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 6] MSG Međunarodni praznik rada (preneseno)
|
||||||
|
OMIT 9 May MSG Dan pobjede nad fašizmom
|
||||||
|
OMIT 21 November MSG Dan uspostave Opšteg okvirnog sporazuma za mir u Bosni i Hercegovini
|
||||||
|
OMIT 24 December MSG Badnji dan (Katolički)
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Barbados
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG New Year's Day
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
OMIT 21 January MSG Errol Barrow Day
|
||||||
|
REM 22 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 21)) == 0] MSG Errol Barrow Day (observed)
|
||||||
|
OMIT [easterdate($Uy)-2] MSG Good Friday
|
||||||
|
OMIT [easterdate($Uy)+1] MSG Easter Monday
|
||||||
|
OMIT 28 April MSG National Heroes Day
|
||||||
|
REM 29 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 28)) == 0] MSG National Heroes Day (observed)
|
||||||
|
OMIT 1 May MSG May Day
|
||||||
|
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG May Day (observed)
|
||||||
|
OMIT [easterdate($Uy)+50] MSG Whit Monday
|
||||||
|
OMIT 1 August MSG Emancipation Day
|
||||||
|
REM First Monday in August ADDOMIT SCANFROM -28 MSG Kadooment Day
|
||||||
|
REM 2 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 1)) == 1] MSG Emancipation Day (observed)
|
||||||
|
REM 3 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 1)) == 0] MSG Emancipation Day (observed)
|
||||||
|
OMIT 30 November MSG Independence Day
|
||||||
|
REM 1 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 30)) == 0] MSG Independence Day (observed)
|
||||||
|
OMIT 25 December MSG Christmas Day
|
||||||
|
OMIT 26 December MSG Boxing Day
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
|
REM 27 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26)) == 0] MSG Boxing Day (observed)
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Bangladesh
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 21 February MSG International Mother's language Day
|
||||||
|
OMIT 17 March MSG Sheikh Mujibur Rahman's Birthday and Children's Day
|
||||||
|
OMIT 26 March MSG Independence Day
|
||||||
|
OMIT 14 April MSG Bengali New Year's Day
|
||||||
|
OMIT 1 May MSG May Day
|
||||||
|
OMIT 15 August MSG National Mourning Day
|
||||||
|
OMIT 16 December MSG Victory Day
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Belgium
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Nieuwjaar
|
||||||
|
OMIT [easterdate($Uy)] MSG Pasen
|
||||||
|
OMIT [easterdate($Uy)+1] MSG Paasmaandag
|
||||||
|
OMIT 1 May MSG Dag van de Arbeid
|
||||||
|
OMIT [easterdate($Uy)+39] MSG O. L. H. Hemelvaart
|
||||||
|
OMIT [easterdate($Uy)+49] MSG Pinksteren
|
||||||
|
OMIT [easterdate($Uy)+50] MSG Pinkstermaandag
|
||||||
|
OMIT 21 July MSG Nationale feestdag
|
||||||
|
OMIT 15 August MSG O. L. V. Hemelvaart
|
||||||
|
OMIT 1 November MSG Allerheiligen
|
||||||
|
OMIT 11 November MSG Wapenstilstand
|
||||||
|
OMIT 25 December MSG Kerstmis
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM [easterdate($Uy)-2] MSG Goede Vrijdag
|
||||||
|
REM [easterdate($Uy)+40] MSG Vrijdag na O. L. H. Hemelvaart
|
||||||
|
REM 26 December MSG Banksluitingsdag
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Burkina Faso
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG New Year's Day
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
OMIT 3 January MSG Revolution Day
|
||||||
|
REM 4 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 3)) == 0] MSG Revolution Day (observed)
|
||||||
|
OMIT 8 March MSG International Women's Day
|
||||||
|
REM 9 March ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 8)) == 0] MSG International Women's Day (observed)
|
||||||
|
OMIT [easterdate($Uy)+1] MSG Easter Monday
|
||||||
|
OMIT 1 May MSG Labour Day
|
||||||
|
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Labour Day (observed)
|
||||||
|
OMIT [easterdate($Uy)+39] MSG Ascension Day
|
||||||
|
OMIT 5 August MSG Independence Day
|
||||||
|
REM 6 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 5)) == 0] MSG Independence Day (observed)
|
||||||
|
OMIT 15 August MSG Assumption Day
|
||||||
|
REM 16 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 15)) == 0] MSG Assumption Day (observed)
|
||||||
|
OMIT 31 October MSG Martyrs' Day
|
||||||
|
OMIT 1 November MSG All Saints' Day
|
||||||
|
REM 1 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 31)) == 0] MSG Martyrs' Day (observed)
|
||||||
|
REM 2 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 1)) == 0] MSG All Saints' Day (observed)
|
||||||
|
OMIT 11 December MSG Proclamation of Independence Day
|
||||||
|
REM 12 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 11)) == 0] MSG Proclamation of Independence Day (observed)
|
||||||
|
OMIT 25 December MSG Christmas Day
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Bulgaria
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Нова година
|
||||||
|
REM 1 January OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1))==0 || wkdaynum(date($Ty, 1, 1))==6] MSG Нова година (почивен ден)
|
||||||
|
OMIT 3 March MSG Ден на Освобождението на България от османско иго
|
||||||
|
REM 3 March OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 3, 3))==0 || wkdaynum(date($Ty, 3, 3))==6] MSG Ден на Освобождението на България от османско иго (почивен ден)
|
||||||
|
OMIT [orthodoxeaster($Uy)-2] MSG Велики петък
|
||||||
|
OMIT [orthodoxeaster($Uy)-1] MSG Велика събота
|
||||||
|
OMIT [orthodoxeaster($Uy)] MSG Великден
|
||||||
|
OMIT [orthodoxeaster($Uy)+1] MSG Великден
|
||||||
|
OMIT 1 May MSG Ден на труда и на международната работническа солидарност
|
||||||
|
REM 1 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1))==0 || wkdaynum(date($Ty, 5, 1))==6] MSG Ден на труда и на международната работническа солидарност (почивен ден)
|
||||||
|
OMIT 6 May MSG Гергьовден, Ден на храбростта и Българската армия
|
||||||
|
REM 6 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 6))==0 || wkdaynum(date($Ty, 5, 6))==6] MSG Гергьовден, Ден на храбростта и Българската армия (почивен ден)
|
||||||
|
OMIT 24 May MSG Ден на светите братя Кирил и Методий, на българската азбука, просвета и култура и на славянската книжовност
|
||||||
|
REM 24 May OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 24))==0 || wkdaynum(date($Ty, 5, 24))==6] MSG Ден на светите братя Кирил и Методий, на българската азбука, просвета и култура и на славянската книжовност (почивен ден)
|
||||||
|
OMIT 6 September MSG Ден на Съединението
|
||||||
|
REM 6 September OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 6))==0 || wkdaynum(date($Ty, 9, 6))==6] MSG Ден на Съединението (почивен ден)
|
||||||
|
OMIT 22 September MSG Ден на Независимостта на България
|
||||||
|
REM 22 September OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 9, 22))==0 || wkdaynum(date($Ty, 9, 22))==6] MSG Ден на Независимостта на България (почивен ден)
|
||||||
|
OMIT 24 December MSG Бъдни вечер
|
||||||
|
REM 24 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 24))==0 || wkdaynum(date($Ty, 12, 24))==6] MSG Бъдни вечер (почивен ден)
|
||||||
|
OMIT 25 December MSG Рождество Христово
|
||||||
|
REM 25 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25))==0 || wkdaynum(date($Ty, 12, 25))==6] MSG Рождество Христово (почивен ден)
|
||||||
|
OMIT 26 December MSG Рождество Христово
|
||||||
|
REM 26 December OMIT SAT SUN AFTER ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 26))==0 || wkdaynum(date($Ty, 12, 26))==6] MSG Рождество Христово (почивен ден)
|
||||||
|
|
||||||
|
# Optional holidays
|
||||||
|
REM 1 November MSG Ден на народните будители
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Bahrain
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG رأس السنة الميلادية
|
||||||
|
OMIT 1 May MSG عيد العمال
|
||||||
|
OMIT 16 December MSG اليوم الوطني
|
||||||
|
OMIT 17 December MSG اليوم الوطني
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Burundi
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG New Year's Day
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG New Year's Day (observed)
|
||||||
|
OMIT 5 February MSG Unity Day
|
||||||
|
REM 6 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 5)) == 0] MSG Unity Day (observed)
|
||||||
|
OMIT 6 April MSG President Ntaryamira Day
|
||||||
|
REM 7 April ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 4, 6)) == 0] MSG President Ntaryamira Day (observed)
|
||||||
|
OMIT 1 May MSG Labour Day
|
||||||
|
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Labour Day (observed)
|
||||||
|
OMIT [easterdate($Uy)+39] MSG Ascension Day
|
||||||
|
OMIT 8 June MSG President Nkurunziza Day
|
||||||
|
REM 9 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 8)) == 0] MSG President Nkurunziza Day (observed)
|
||||||
|
OMIT 1 July MSG Independence Day
|
||||||
|
REM 2 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 1)) == 0] MSG Independence Day (observed)
|
||||||
|
OMIT 15 August MSG Assumption Day
|
||||||
|
REM 16 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 15)) == 0] MSG Assumption Day (observed)
|
||||||
|
OMIT 13 October MSG Prince Louis Rwagasore Day
|
||||||
|
REM 14 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 13)) == 0] MSG Prince Louis Rwagasore Day (observed)
|
||||||
|
OMIT 21 October MSG President Ndadaye's Day
|
||||||
|
REM 22 October ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 10, 21)) == 0] MSG President Ndadaye's Day (observed)
|
||||||
|
OMIT 1 November MSG All Saints' Day
|
||||||
|
REM 2 November ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 11, 1)) == 0] MSG All Saints' Day (observed)
|
||||||
|
OMIT 25 December MSG Christmas Day
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Christmas Day (observed)
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Brunei
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
|
||||||
|
OMIT 1 January MSG Awal Tahun Masihi
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG Awal Tahun Masihi (diperhatikan)
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 5] MSG Awal Tahun Masihi (diperhatikan)
|
||||||
|
OMIT 23 February MSG Hari Kebangsaan
|
||||||
|
REM 24 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 23)) == 0] MSG Hari Kebangsaan (diperhatikan)
|
||||||
|
REM 24 February ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 2, 23)) == 5] MSG Hari Kebangsaan (diperhatikan)
|
||||||
|
OMIT 31 May MSG Hari Angkatan Bersenjata Diraja Brunei
|
||||||
|
REM 1 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 31)) == 0] MSG Hari Angkatan Bersenjata Diraja Brunei (diperhatikan)
|
||||||
|
REM 1 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 31)) == 5] MSG Hari Angkatan Bersenjata Diraja Brunei (diperhatikan)
|
||||||
|
OMIT 15 July MSG Hari Keputeraan KDYMM Sultan Brunei
|
||||||
|
REM 16 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 15)) == 0] MSG Hari Keputeraan KDYMM Sultan Brunei (diperhatikan)
|
||||||
|
REM 16 July ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 7, 15)) == 5] MSG Hari Keputeraan KDYMM Sultan Brunei (diperhatikan)
|
||||||
|
OMIT 25 December MSG Hari Natal
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Hari Natal (diperhatikan)
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 5] MSG Hari Natal (diperhatikan)
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for Bolivia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# See important caveats in the README file in this directory.
|
||||||
|
#
|
||||||
|
# Note: This file consists only of the country-wide
|
||||||
|
# holidays for Bolivia.
|
||||||
|
#
|
||||||
|
# For region-specific holidays, you need to include
|
||||||
|
# one of the regional *.rem files in the directory
|
||||||
|
# [$SysInclude]/holidays/bo/
|
||||||
|
|
||||||
|
OMIT 1 January MSG Año Nuevo
|
||||||
|
REM 2 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 1)) == 0] MSG Año Nuevo (observado)
|
||||||
|
OMIT 22 January MSG Día de la Creación del Estado Plurinacional de Bolivia
|
||||||
|
REM 23 January ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 1, 22)) == 0] MSG Día de la Creación del Estado Plurinacional de Bolivia (observado)
|
||||||
|
OMIT [easterdate($Uy)-48] MSG Carnaval
|
||||||
|
OMIT [easterdate($Uy)-47] MSG Carnaval
|
||||||
|
OMIT [easterdate($Uy)-2] MSG Viernes Santo
|
||||||
|
OMIT 1 May MSG Día del Trabajo
|
||||||
|
REM 2 May ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 5, 1)) == 0] MSG Día del Trabajo (observado)
|
||||||
|
OMIT [easterdate($Uy)+60] MSG Corpus Christi
|
||||||
|
OMIT 21 June MSG Año Nuevo Aymara Amazónico
|
||||||
|
REM 22 June ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 6, 21)) == 0] MSG Año Nuevo Aymara Amazónico (observado)
|
||||||
|
OMIT 6 August MSG Día de la Independencia de Bolivia
|
||||||
|
REM 7 August ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 8, 6)) == 0] MSG Día de la Independencia de Bolivia (observado)
|
||||||
|
OMIT 17 October MSG Día de la Dignidad Nacional
|
||||||
|
OMIT 2 November MSG Día de Todos los Difuntos
|
||||||
|
OMIT 25 December MSG Navidad
|
||||||
|
REM 26 December ADDOMIT SCANFROM -28 SATISFY [wkdaynum(date($Ty, 12, 25)) == 0] MSG Navidad (observado)
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision B in Bolivia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision B.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/bo.rem
|
||||||
|
|
||||||
|
OMIT 18 November MSG Día del departamento de Beni
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision C in Bolivia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision C.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/bo.rem
|
||||||
|
|
||||||
|
OMIT 14 September MSG Día del departamento de Cochabamba
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision H in Bolivia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision H.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/bo.rem
|
||||||
|
|
||||||
|
OMIT 25 May MSG Día del departamento de Chuquisaca
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision L in Bolivia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision L.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/bo.rem
|
||||||
|
|
||||||
|
OMIT 16 July MSG Día del departamento de La Paz
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision N in Bolivia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision N.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/bo.rem
|
||||||
|
|
||||||
|
OMIT 11 October MSG Día del departamento de Pando
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision O in Bolivia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision O.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/bo.rem
|
||||||
|
|
||||||
|
OMIT [easterdate($Uy)-51] MSG Carnaval de Oruro
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Holiday file for subdivision P in Bolivia
|
||||||
|
# Derived from the Python holidays project at
|
||||||
|
# https://github.com/vacanza/holidays
|
||||||
|
#
|
||||||
|
# Note that this file includes only the holidays for
|
||||||
|
# the specific subdivision P.
|
||||||
|
# See important caveats in the file ../README
|
||||||
|
#
|
||||||
|
# If you want the national holidays as well, you must
|
||||||
|
# also include [$SysInclude]/holidays/bo.rem
|
||||||
|
|
||||||
|
OMIT 10 November MSG Día del departamento de Potosí
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user