diff options
author | sjg <sjg@FreeBSD.org> | 2013-09-05 20:18:59 +0000 |
---|---|---|
committer | sjg <sjg@FreeBSD.org> | 2013-09-05 20:18:59 +0000 |
commit | 62bb1062226d3ce6a2350808256a25508978352d (patch) | |
tree | 22b131dceb13c3df96da594fbaadb693504797c7 /usr.bin/calendar | |
parent | 72ab90509b3a51ab361bf710338f2ef44a4e360d (diff) | |
parent | 04932445481c2cb89ff69a83b961bdef3d64757e (diff) | |
download | FreeBSD-src-62bb1062226d3ce6a2350808256a25508978352d.zip FreeBSD-src-62bb1062226d3ce6a2350808256a25508978352d.tar.gz |
Merge from head
Diffstat (limited to 'usr.bin/calendar')
-rw-r--r-- | usr.bin/calendar/Makefile | 2 | ||||
-rw-r--r-- | usr.bin/calendar/calendar.h | 6 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/calendar.birthday | 2 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/calendar.dutch | 8 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/calendar.freebsd | 7 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/calendar.history | 2 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.all | 16 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.common | 105 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.holiday | 25 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.military | 28 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.orthodox | 36 | ||||
-rw-r--r-- | usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.pagan | 42 | ||||
-rw-r--r-- | usr.bin/calendar/dates.c | 34 | ||||
-rw-r--r-- | usr.bin/calendar/io.c | 2 | ||||
-rw-r--r-- | usr.bin/calendar/parsedata.c | 134 | ||||
-rw-r--r-- | usr.bin/calendar/pathnames.h | 2 | ||||
-rw-r--r-- | usr.bin/calendar/sunpos.c | 6 |
17 files changed, 378 insertions, 79 deletions
diff --git a/usr.bin/calendar/Makefile b/usr.bin/calendar/Makefile index 79f8590..c7bd544 100644 --- a/usr.bin/calendar/Makefile +++ b/usr.bin/calendar/Makefile @@ -8,7 +8,7 @@ DPADD= ${LIBM} LDADD= -lm INTER= de_AT.ISO_8859-15 de_DE.ISO8859-1 fr_FR.ISO8859-1 \ hr_HR.ISO8859-2 hu_HU.ISO8859-2 pt_BR.ISO8859-1 \ - pt_BR.UTF-8 ru_RU.KOI8-R uk_UA.KOI8-U + pt_BR.UTF-8 ru_RU.KOI8-R ru_RU.UTF-8 uk_UA.KOI8-U DE_LINKS= de_DE.ISO8859-15 FR_LINKS= fr_FR.ISO8859-15 TEXTMODE?= 444 diff --git a/usr.bin/calendar/calendar.h b/usr.bin/calendar/calendar.h index a4903b1..87e705c 100644 --- a/usr.bin/calendar/calendar.h +++ b/usr.bin/calendar/calendar.h @@ -101,11 +101,11 @@ extern int EastLongitude; * program wrong. */ -/* +/* * All the astronomical calculations are carried out for the meridian 120 * degrees east of Greenwich. */ -#define UTCOFFSET_CNY 8.0 +#define UTCOFFSET_CNY 8.0 extern int debug; /* show parsing of the input */ extern int year1, year2; @@ -174,7 +174,7 @@ int j2g(int); /* dates.c */ extern int cumdaytab[][14]; -extern int mondaytab[][14]; +extern int monthdaytab[][14]; extern int debug_remember; void generatedates(struct tm *tp1, struct tm *tp2); void dumpdates(void); diff --git a/usr.bin/calendar/calendars/calendar.birthday b/usr.bin/calendar/calendars/calendar.birthday index adf14a2..51745e3 100644 --- a/usr.bin/calendar/calendars/calendar.birthday +++ b/usr.bin/calendar/calendars/calendar.birthday @@ -120,7 +120,7 @@ 04/10 William Booth born, 1829, founder of the Salvation Army 04/13 Thomas Jefferson, 3rd President of the United States, born Shadwell Plantation, Albemarle County, Virginia, 1743 -04/14 Christian Huygen born, 1629, physicist & astronomer; +04/14 Christiaan Huygens born, 1629, physicist & astronomer; discovered Saturn's rings 04/15 Leonardo da Vinci born, 1452 04/16 Charles (Charlie) Chaplin (Sir) born in London, 1889 diff --git a/usr.bin/calendar/calendars/calendar.dutch b/usr.bin/calendar/calendars/calendar.dutch index fab1793..edabe10 100644 --- a/usr.bin/calendar/calendars/calendar.dutch +++ b/usr.bin/calendar/calendars/calendar.dutch @@ -13,7 +13,7 @@ Easter=Pasen jan/01 Nieuwjaar jan/06 Driekoningen apr/01 1 april -apr/30 Koninginnedag +apr/27 Koningsdag mei/01 Dag van de Arbeid mei/04 Dodenherdenking mei/05 Bevrijdingsdag @@ -60,13 +60,13 @@ sep/TueThird Prinsjesdag * Het koningshuis */ jan/19 Prinses Margriet (1943) -jan/31 Koningin Beatrix (1938) +jan/31 Prinses Beatrix (1938) feb/17 Prins Willem III (1817 - 1890) feb/18 Prinses Christina (1947) apr/10 Prinses Ariane (2007) apr/19 Prins Hendrik (1876 - 1934) -apr/27 Kroonprins Willem Alexander (1967) -apr/30 Koningin Juliana (1909 - 2004) +apr/27 Koning Willem Alexander (1967) +apr/30 Prinses Juliana (1909 - 2004) apr/30 Mr. Pieter van Vollenhoven (1939) mei/17 Prinses Maxima (1971) jun/26 Prinses Alexia (2005) diff --git a/usr.bin/calendar/calendars/calendar.freebsd b/usr.bin/calendar/calendars/calendar.freebsd index aac2304..6cf0346 100644 --- a/usr.bin/calendar/calendars/calendar.freebsd +++ b/usr.bin/calendar/calendars/calendar.freebsd @@ -62,6 +62,7 @@ 02/14 Manolis Kiagias <manolis@FreeBSD.org> born in Chania, Greece, 1970 02/14 Erwin Lansing <erwin@FreeBSD.org> born in 's-Hertogenbosch, the Netherlands, 1975 02/14 Martin Blapp <mbr@FreeBSD.org> born in Olten, Switzerland, 1976 +02/15 Hiren Panchasara <hiren@FreeBSD.org> born in Ahmedabad, Gujarat, India, 1984 02/19 Murray Stokely <murray@FreeBSD.org> born in Jacksonville, Florida, United States, 1979 02/20 Anders Nordby <anders@FreeBSD.org> born in Oslo, Norway, 1976 02/21 Alexey Zelkin <phantom@FreeBSD.org> born in Simferopol, Ukraine, 1978 @@ -73,6 +74,7 @@ 02/24 Colin Percival <cperciva@FreeBSD.org> born in Burnaby, Canada, 1981 02/26 Pietro Cerutti <gahr@FreeBSD.org> born in Faido, Switzerland, 1984 02/28 Daichi GOTO <daichi@FreeBSD.org> born in Shimizu Suntou, Shizuoka, Japan, 1980 +02/28 Ruslan Makhmatkhanov <rm@FreeBSD.org> born in Rostov-on-Don, USSR, 1984 03/01 Hye-Shik Chang <perky@FreeBSD.org> born in Daejeon, Republic of Korea, 1980 03/02 Cy Schubert <cy@FreeBSD.org> born in Edmonton, Alberta, Canada, 1956 03/03 Sergey Matveychuk <sem@FreeBSD.org> born in Moscow, Russian Federation, 1973 @@ -150,6 +152,7 @@ 05/10 Markus Brueffer <markus@FreeBSD.org> born in Gronau, Nordrhein-Westfalen, Germany, 1977 05/11 Jesus Rodriguez <jesusr@FreeBSD.org> born in Barcelona, Spain, 1972 05/11 Roman Kurakin <rik@FreeBSD.org> born in Moscow, USSR, 1979 +05/11 Ulrich Spoerlein <uqs@FreeBSD.org> born in Schesslitz, Bayern, Germany, 1981 05/13 Pete Fritchman <petef@FreeBSD.org> born in Lansdale, Pennsylvania, United States, 1983 05/14 Tatsumi Hosokawa <hosokawa@FreeBSD.org> born in Tokyo, Japan, 1968 05/14 Shigeyuku Fukushima <shige@FreeBSD.org> born in Osaka, Japan, 1974 @@ -192,7 +195,7 @@ 06/07 Jimmy Olgeni <olgeni@FreeBSD.org> born in Milano, Italy, 1976 06/07 Benjamin Close <benjsc@FreeBSD.org> born in Adelaide, Australia, 1978 06/14 Josh Paetzel <jpaetzel@FreeBSD.org> born in Minneapolis, Minnesota, United States, 1973 -06/17 Tilman Linneweh <arved@FreeBSD.org> born in Weinheim, Baden-Wuertemberg, Germany, 1978 +06/17 Tilman Linneweh <arved@FreeBSD.org> born in Weinheim, Baden-Wuerttemberg, Germany, 1978 06/18 Li-Wen Hsu <lwhsu@FreeBSD.org> born in Taipei, Taiwan, Republic of China, 1984 06/18 Roman Bogorodskiy <novel@FreeBSD.org> born in Saratov, Russian Federation, 1986 06/19 Charlie Root <root@FreeBSD.org> born in Portland, Oregon, United States, 1993 @@ -258,6 +261,7 @@ 08/19 Pav Lucistnik <pav@FreeBSD.org> born in Kutna Hora, Czech Republic, 1980 08/20 Michael Heffner <mikeh@FreeBSD.org> born in Cleona, Pennsylvania, United States, 1981 08/24 Mark Linimon <linimon@FreeBSD.org> born in Houston, Texas, United States, 1955 +08/24 Alexander Botero-Lowry <alexbl@FreeBSD.org> died in San Francisco, California, United States, 2012 08/25 Beech Rintoul <beech@FreeBSD.org> born in Oakland, California, United States, 1952 08/25 Jean Milanez Melo <jmelo@FreeBSD.org> born in Divinopolis, Minas Gerais, Brazil, 1982 08/26 Dima Ruban <dima@FreeBSD.org> born in Nalchik, USSR, 1970 @@ -296,6 +300,7 @@ 09/28 Greg Lehey <grog@FreeBSD.org> born in Melbourne, Victoria, Australia, 1948 09/28 Alex Dupre <ale@FreeBSD.org> born in Milano, Italy, 1980 09/29 Matthew Hunt <mph@FreeBSD.org> born in Johnstown, Pennsylvania, United States, 1976 +09/30 Mark Felder <feld@FreeBSD.org> born in Prairie du Chien, Wisconsin, United States, 1985 09/30 Hiten M. Pandya <hmp@FreeBSD.org> born in Dar-es-Salaam, Tanzania, East Africa, 1986 09/30 Third quarter status reports are due on 10/15 10/02 Beat Gaetzi <beat@FreeBSD.org> born in Zurich, Switzerland, 1980 diff --git a/usr.bin/calendar/calendars/calendar.history b/usr.bin/calendar/calendars/calendar.history index a05a6ff..e343293 100644 --- a/usr.bin/calendar/calendars/calendar.history +++ b/usr.bin/calendar/calendars/calendar.history @@ -99,7 +99,6 @@ 04/04 Martin Luther King assassinated in Memphis, Tennessee, 1968 04/04 NATO Established, 1949 04/06 Joseph Smith founds Mormon Church, 1830 -04/07 Albert Hofmann synthesizes LSD in Switzerland, 1943 04/07 Alewives run, Cape Cod 04/08 Matthew Flinders and Nicolas Baudin meet in Encounter Bay, 1802 04/09 Lee surrenders to Grant at Appomattox Courthouse, 1865 @@ -420,6 +419,7 @@ from McDonald's), 1971 11/15 Niagara Falls power plant startup, 1896 11/16 Opening of the Suez Canal, 1869 +11/16 Albert Hofmann synthesizes LSD in Switzerland, 1938 11/17 46,000 meteoroids fall over AZ in 20 minutes, 1966 11/17 Richard Nixon says "I am not a crook.", 1973 11/18 First hydrogen bomb blasts Enewetok, 1952 diff --git a/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.all b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.all new file mode 100644 index 0000000..038bfb0 --- /dev/null +++ b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.all @@ -0,0 +1,16 @@ +/* + * Русский календарь + * + * $FreeBSD$ + */ + +#ifndef _ru_RU_UTF_8_all_ +#define _ru_RU_UTF_8_all_ + +#include <ru_RU.UTF-8/calendar.common> +#include <ru_RU.UTF-8/calendar.holiday> +#include <ru_RU.UTF-8/calendar.military> +#include <ru_RU.UTF-8/calendar.orthodox> +#include <ru_RU.UTF-8/calendar.pagan> + +#endif /* !_ru_RU_UTF_8_all_ */ diff --git a/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.common b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.common new file mode 100644 index 0000000..8c0a823 --- /dev/null +++ b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.common @@ -0,0 +1,105 @@ +/* + * Российские праздники + * + * $FreeBSD$ + */ + +#ifndef _ru_RU_UTF_8_common_ +#define _ru_RU_UTF_8_common_ + +LANG=ru_RU.UTF-8 + +12 янв День работника прокуратуры +13 янв День российской печати +14 янв Старый Новый год +21 янв День инженерных войск +25 янв Татьянин день. Студенческий праздник + 8 фев День российской науки +10 фев День дипломатического работника + 1 мар Всемирный день гражданской обороны +03/SunSecond День работников геодезии и картографии +11 мар День работника органов наркоконтроля +18 мар День налоговой полиции +03/SunThird День работников торговли, бытового обслуживания населения и жилищно-коммунального хозяйства +27 мар Международный день театра +27 мар День внутренних войск + 1 апр День смеха + 2 апр День единения народов +04/SunFirst День геолога +12 апр День космонавтики +04/SunSecond День войск противовоздушной обороны +26 апр День памяти погибших в радиационных авариях и катастрофах +30 апр День пожарной охраны + 7 май День радио +17 май Международный день телекоммуникаций +18 май Международный день музеев +24 май День славянской письменности и культуры +26 май День российского предпринимательства +27 май Общероссийский день библиотек +28 май День пограничника +30 май День пожарной охраны +31 май День Российской Адвокатуры +05/SunLast День химика + 1 июн День защиты детей + 5 июн День эколога + 6 июн Пушкинский день + 8 июн День социального работника +06/SunSecond День работников легкой промышленности +06/SunThird День медицинского работника +22 июн День памяти и скорби (Начало Великой Отечественной Войны, 1941 год) +27 июн День молодежи +29 июн День партизан и подпольщиков +06/SatLast День изобретателя и рационализатора +07/SunFirst День работников морского и речного флота +07/SunSecond День рыбака +07/SunSecond День российской почты +07/SunThird День металлурга +07/SunLast День Военно-Морского Флота +28 июл День крещения Руси + 6 авг День железнодорожных войск +08/SunFirst День железнодорожника +12 авг День военно-воздушных сил +08/SunSecond День строителя +08/SunThird День Воздушного Флота +22 авг День государственного флага +27 авг День кино +08/SunLast День шахтера + 1 сен День знаний + 2 сен День российской гвардии + 3 сен День солидарности в борьбе с терроризмом + 4 сен День специалиста по ядерному обеспечению +09/SunFirst День работников нефтяной и газовой промышленности +09/SunSecond День танкиста +09/SunThird День работников леса +28 сен День работника атомной промышленности +09/SunLast День машиностроителя + 1 окт День пожилых людей + 1 окт День сухопутных войск + 4 окт День космических войск + 5 окт День учителя +14 окт Международный день стандартизации +10/SunSecond День работников сельского хозяйства и перерабатывающей промышленности +10/SunThird День работников дорожного хозяйства +24 окт Международный день ООН +25 окт День таможенника +30 окт День памяти жертв политических репрессий +10/SunLast День работников автомобильного транспорта + 7 ноя День октябрьской революции 1917 года + 9 ноя Всемирный день качества +10 ноя День милиции +16 ноя День морской пехоты +17 ноя Международный день студентов +19 ноя День ракетных войск и артиллерии +21 ноя День работников налоговых органов +26 ноя Всемирный день информации +11/SunLast День матери + 1 дек Всемирный день борьбы со СПИДом + 3 дек День юриста + 9 дек День Героев Отечества +12 дек День Конституции +17 дек День ракетных войск стратегического назначения +20 дек День работника органов безопасности +22 дек День энергетика +27 дек День спасателя + +#endif /* !_ru_RU_UTF_8_common_ */ diff --git a/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.holiday b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.holiday new file mode 100644 index 0000000..13a7bc0 --- /dev/null +++ b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.holiday @@ -0,0 +1,25 @@ +/* + * Российские праздники (нерабочие "красные" дни) + * + * $FreeBSD$ + */ + +#ifndef _ru_RU_UTF_8_holiday_ +#define _ru_RU_UTF_8_holiday_ + +LANG=ru_RU.UTF-8 + + 1 янв Новый год + 2 янв Новогодние каникулы + 3 янв Новогодние каникулы + 4 янв Новогодние каникулы + 5 янв Новогодние каникулы + 7 янв Рождество Христово +23 фев День защитника Отечества + 8 мар Международный женский день + 1 май Праздник Весны и Труда + 9 май День Победы +12 июн День России + 4 ноя День народного единства + +#endif /* !_ru_RU_UTF_8_holiday_ */ diff --git a/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.military b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.military new file mode 100644 index 0000000..48f257c --- /dev/null +++ b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.military @@ -0,0 +1,28 @@ +/* + * Дни воинской славы России + * + * $FreeBSD$ + */ + +#ifndef _ru_RU_UTF_8_military_ +#define _ru_RU_UTF_8_military_ + +LANG=ru_RU.UTF-8 + +27 янв День снятия блокады города Ленинграда (1944 год) + 2 фев День разгрома советскими войсками немецко-фашистских войск в Сталинградской битве (1943 год) +23 фев День победы Красной Армии над кайзеровскими войсками Германии (1918 год) +18 апр День победы русских воинов князя Александра Невского над немецкими рыцарями на Чудском озере (Ледовое побоище, 1242 год) +10 июл День победы русской армии под командованием Петра Первого над шведами в Полтавском сражении (1709 год) + 9 авг День первой в российской истории морской победы русского флота под командованием Петра Первого над шведами у мыса Гангут (1714 год) +23 авг День разгрома советскими войсками немецко-фашистских войск в Курской битве (1943 год) + 2 сен День окончания Второй мировой войны (1945 год) + 8 сен День Бородинского сражения русской армии под командованием М.И. Кутузова с французской армией (1812 год) +11 сен День победы русской эскадры под командованием Ф.Ф. Ушакова над турецкой эскадрой у мыса Тендра (1790 год) +21 сен День победы русских полков во главе с великим князем Дмитрием Донским над монголо-татарскими войсками в Куликовской битве (1380 год) + 7 ноя День освобождения Москвы силами народного ополчения под руководством Кузьмы Минина и Дмитрия Пожарского от польских интервентов (1612 год) + 1 дек День победы русской эскадры под командованием П.С. Нахимова над турецкой эскадрой у мыса Синоп (1853 год) + 5 дек День начала контрнаступления советских войск против немецко-фашистских войск в битве под Москвой (1941 год) +24 дек День взятия турецкой крепости Измаил русскими войсками под командованием А.В. Суворова (1790 год) + +#endif /* !_ru_RU_UTF_8_military_ */ diff --git a/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.orthodox b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.orthodox new file mode 100644 index 0000000..f42c6ae --- /dev/null +++ b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.orthodox @@ -0,0 +1,36 @@ +/* + * Православные праздники + * + * $FreeBSD$ + */ + +#ifndef _ru_RU_UTF_8_orthodox_ +#define _ru_RU_UTF_8_orthodox_ + +LANG=ru_RU.UTF-8 +Paskha=Пасха + +21 сен Рождество Пресвятой Богородицы +27 сен Воздвижение Креста Господня +14 окт Покров Пресвятой Богородицы + 4 дек Введение во храм Пресвятой Богородицы + 7 янв Рождество Христово +14 янв Обрезание Господне +19 янв Богоявление или Крещение Господне +15 фев Сретение Господне +Пасха-48 Великий Пост +Пасха-7 Вход Господень в Иерусалим. Вербное Воскресенье +Пасха-3 Великий Четверг +Пасха-2 Страстная Пятница +Пасха Воскресение Христово +Пасха+39 Вознесение +Пасха+49 День Святой Троицы. Пятидесятница + 7 апр Благовещение Пресвятой Богородицы + 7 июл Рождество Иоанна Предтечи +12 июл День святых первоверховных апостолов Петра и Павла +19 авг Преображение Господне +28 авг Успение Пресвятой Богородицы +11 сен Усекновение главы Иоанна Предтечи + +#endif /* !_ru_RU_UTF_8_orthodox_ */ + diff --git a/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.pagan b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.pagan new file mode 100644 index 0000000..144a649 --- /dev/null +++ b/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.pagan @@ -0,0 +1,42 @@ +/* + * Языческие праздники + * + * $FreeBSD$ + */ + +#ifndef _ru_RU_UTF_8_pagan_ +#define _ru_RU_UTF_8_pagan_ + +LANG=ru_RU.UTF-8 +Paskha=Пасха + +21 дек* Зимнее солнцестояние +25 дек Коляда (сдвинутое зимнее солнцестояние) + 6 янв День Кащея и Велеса +24 фев День Велеса +29 фев День Кащея + 1 мар День Марены +14 мар Новый Год, Овсень малый +Пасха-55 Масленица +Пасха+7 Красная Горка +Пасха+16 Радуница +20 мар* Весенние равноденствие + 7 апр День Марены (сдвинутое весеннее равноденствие) + 6 май День Дажьбога, Овсень большой +22 май Ярилин День +15 июн День Триглава +21 июн* Летнее солнцестояние + 1 июл Русальная Неделя + 7 июл Купала (сдвинутое летнее солнцестояние) +27 июл Отбор жертв Перуну, русалии + 2 авг Перунов День +21 авг День Стрибога +28 авг Успение Златогорки +14 сен День Волха Змеевича +22 сен* Поворот к зиме (осеннее равноденствие) +10 ноя День Макоши +21 ноя День Сварога и Семаргла + 9 дек День Дажьбога и Марены + +#endif /* !_ru_RU_UTF_8_pagan_ */ + diff --git a/usr.bin/calendar/dates.c b/usr.bin/calendar/dates.c index 989f29c..a5f5e9f 100644 --- a/usr.bin/calendar/dates.c +++ b/usr.bin/calendar/dates.c @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -22,7 +22,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * */ #include <sys/cdefs.h> @@ -73,8 +73,8 @@ int cumdaytab[][14] = { {0, -1, 30, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}, }; /* 1-based month, individual */ -static int *mondays; -int mondaytab[][14] = { +static int *monthdays; +int monthdaytab[][14] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 30}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 30}, }; @@ -192,11 +192,11 @@ generatedates(struct tm *tp1, struct tm *tp2) * - Take all days from <m1 .. m2> * - Take the first days from m2 */ - mondays = mondaytab[isleap(y1)]; - for (d = d1; d <= mondays[m1]; d++) + monthdays = monthdaytab[isleap(y1)]; + for (d = d1; d <= monthdays[m1]; d++) createdate(y1, m1, d); for (m = m1 + 1; m < m2; m++) - for (d = 1; d <= mondays[m]; d++) + for (d = 1; d <= monthdays[m]; d++) createdate(y1, m, d); for (d = 1; d <= d2; d++) createdate(y1, m2, d); @@ -210,21 +210,21 @@ generatedates(struct tm *tp1, struct tm *tp2) * - Take all days from y2-[1 .. m2> * - Take the first days of y2-m2 */ - mondays = mondaytab[isleap(y1)]; - for (d = d1; d <= mondays[m1]; d++) + monthdays = monthdaytab[isleap(y1)]; + for (d = d1; d <= monthdays[m1]; d++) createdate(y1, m1, d); for (m = m1 + 1; m <= 12; m++) - for (d = 1; d <= mondays[m]; d++) + for (d = 1; d <= monthdays[m]; d++) createdate(y1, m, d); for (y = y1 + 1; y < y2; y++) { - mondays = mondaytab[isleap(y)]; + monthdays = monthdaytab[isleap(y)]; for (m = 1; m <= 12; m++) - for (d = 1; d <= mondays[m]; d++) + for (d = 1; d <= monthdays[m]; d++) createdate(y, m, d); } - mondays = mondaytab[isleap(y2)]; + monthdays = monthdaytab[isleap(y2)]; for (m = 1; m < m2; m++) - for (d = 1; d <= mondays[m]; d++) + for (d = 1; d <= monthdays[m]; d++) createdate(y2, m, d); for (d = 1; d <= d2; d++) createdate(y2, m2, d); @@ -360,12 +360,12 @@ first_dayofweek_of_month(int yy, int mm) return (m->firstdayofweek); m = m->nextmonth; } - /* Should not happen */ + /* No data for this month */ return (-1); } - /* Should not happen */ - return (-1); + /* No data for this year. Error? */ + return (-1); } int diff --git a/usr.bin/calendar/io.c b/usr.bin/calendar/io.c index 1625717..2ea0865 100644 --- a/usr.bin/calendar/io.c +++ b/usr.bin/calendar/io.c @@ -273,7 +273,7 @@ opencal(void) _exit(1); } execl(_PATH_CPP, "cpp", "-P", - "-traditional", "-nostdinc", /* GCC specific opts */ + "-traditional-cpp", "-nostdinc", /* GCC specific opts */ "-I.", "-I", _PATH_INCLUDE, (char *)NULL); warn(_PATH_CPP); _exit(1); diff --git a/usr.bin/calendar/parsedata.c b/usr.bin/calendar/parsedata.c index 4ece663..4586973 100644 --- a/usr.bin/calendar/parsedata.c +++ b/usr.bin/calendar/parsedata.c @@ -47,6 +47,7 @@ static int indextooffset(char *s); static int parseoffset(char *s); static char *floattoday(int year, double f); static char *floattotime(double f); +static int wdayom (int day, int offset, int month, int year); /* * Expected styles: @@ -184,7 +185,7 @@ determinestyle(char *date, int *flags, } /* - * AFTER this, leave by goto-ing to "allfine" or "fail" to restore the + * After this, leave by goto-ing to "allfine" or "fail" to restore the * original data in `date'. */ pold = *p; @@ -203,15 +204,9 @@ determinestyle(char *date, int *flags, *flags |= F_YEAR; } - /* - printf("p1: %s\n", p1); - printf("p2: %s\n", p2); - printf("year: %s\n", year); - */ - /* Check if there is a month-string in the date */ if ((checkmonth(p1, &len, &offset, &pmonth) != 0) - || (checkmonth(p2, &len, &offset, &pmonth) != 0 && (p2 = p1))) { + || (checkmonth(p2, &len, &offset, &pmonth) != 0 && (p2 = p1))) { /* p2 is the non-month part */ *flags |= F_MONTH; *imonth = offset; @@ -239,13 +234,12 @@ determinestyle(char *date, int *flags, *flags |= F_MODIFIERINDEX; goto allfine; } - goto fail; } /* Check if there is an every-day or every-month in the string */ if ((strcmp(p1, "*") == 0 && isonlydigits(p2, 1)) - || (strcmp(p2, "*") == 0 && isonlydigits(p1, 1) && (p2 = p1))) { + || (strcmp(p2, "*") == 0 && isonlydigits(p1, 1) && (p2 = p1))) { int d; *flags |= F_ALLMONTH; @@ -258,7 +252,7 @@ determinestyle(char *date, int *flags, /* Month as a number, then a weekday */ if (isonlydigits(p1, 1) - && checkdayofweek(p2, &len, &offset, &dow) != 0) { + && checkdayofweek(p2, &len, &offset, &dow) != 0) { int d; *flags |= F_MONTH; @@ -316,7 +310,10 @@ allfine: } -static void +void +remember(int *rememberindex, int *y, int *m, int *d, char **ed, int yy, int mm, + int dd, char *extra); +void remember(int *rememberindex, int *y, int *m, int *d, char **ed, int yy, int mm, int dd, char *extra) { @@ -367,16 +364,60 @@ debug_determinestyle(int dateonly, char *date, int flags, char *month, printf("specialday: |%s|\n", specialday); } -struct yearinfo { +static struct yearinfo { int year; int ieaster, ipaskha, firstcnyday; double ffullmoon[MAXMOONS], fnewmoon[MAXMOONS]; double ffullmooncny[MAXMOONS], fnewmooncny[MAXMOONS]; int ichinesemonths[MAXMOONS]; double equinoxdays[2], solsticedays[2]; - int *mondays; + int *monthdays; struct yearinfo *next; -}; +} *years, *yearinfo; + +/* + * Calculate dates with offset from weekdays, like Thurs-3, Wed+2, etc. + * day is the day of the week, + * offset the ordinal number of the weekday in the month. + */ +static int +wdayom (int day, int offset, int month, int year) +{ +/* Weekday of first day in month */ + int wday1; /* first day of month */ +/* Weekday of last day in month */ + int wdayn; + int d; + + wday1 = first_dayofweek_of_month(year, month); + if (wday1 < 0) /* not set */ + return (wday1); + /* + * Date of zeroth or first of our weekday in month, depending on the + * relationship with the first of the month. The range is -6:6. + */ + d = (day - wday1 + 1) % 7; + /* + * Which way are we counting? Offset 0 is invalid, abs (offset) > 5 is + * meaningless, but that's OK. Offset 5 may or may not be meaningless, + * so there's no point in complaining for complaining's sake. + */ + if (offset < 0) { /* back from end of month */ + /* FIXME */ + wdayn = d; + while (wdayn <= yearinfo->monthdays[month]) + wdayn += 7; + d = offset * 7 + wdayn; + } else if (offset > 0){ + if (d > 0) + d += offset * 7 - 7; + else + d += offset * 7; + } else + warnx ("Invalid offset 0"); + return (d); +} + /* * Possible date formats include any combination of: * 3-charmonth (January, Jan, Jan) @@ -400,8 +441,6 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, char *ed; int retvalsign = 1; - static struct yearinfo *years, *yearinfo; - /* * CONVENTION * @@ -419,8 +458,8 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, dayofmonth, idayofmonth, dayofweek, idayofweek, modifieroffset, modifierindex, specialday, syear, iyear); if (determinestyle(date, flags, month, &imonth, dayofmonth, - &idayofmonth, dayofweek, &idayofweek, modifieroffset, - modifierindex, specialday, syear, &iyear) == 0) { + &idayofmonth, dayofweek, &idayofweek, modifieroffset, + modifierindex, specialday, syear, &iyear) == 0) { if (debug) printf("Failed!\n"); return (0); @@ -457,7 +496,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, yearinfo->next = years; years = yearinfo; - yearinfo->mondays = mondaytab[isleap(year)]; + yearinfo->monthdays = monthdaytab[isleap(year)]; yearinfo->ieaster = easter(year); yearinfo->ipaskha = paskha(year); fpom(year, UTCOffset, yearinfo->ffullmoon, @@ -514,7 +553,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, /* Every day of a month */ if (lflags == (F_ALLDAY | F_MONTH)) { - for (d = 1; d <= yearinfo->mondays[imonth]; d++) { + for (d = 1; d <= yearinfo->monthdays[imonth]; d++) { if (!remember_ymd(year, imonth, d)) continue; remember(&remindex, yearp, monthp, dayp, edp, @@ -548,14 +587,15 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, continue; } - /* Every so-manied dayofweek of every month of the year */ + /* + * Every so-manied dayofweek of every month of the year: + * Thu-3 + */ if (lflags == (F_DAYOFWEEK | F_MODIFIERINDEX | F_VARIABLE)) { offset = indextooffset(modifierindex); - for (m = 0; m < 12; m++) { - dow = first_dayofweek_of_month(year, m); - d = (idayofweek - dow + 8) % 7; - d += (offset - 1) * 7; + for (m = 0; m <= 12; m++) { + d = wdayom (idayofweek, offset, m, year); if (remember_ymd(year, m, d)) { remember(&remindex, yearp, monthp, dayp, edp, @@ -566,7 +606,10 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, continue; } - /* A certain dayofweek of a month */ + /* + * A certain dayofweek of a month + * Jan/Thu-3 + */ if (lflags == (F_MONTH | F_DAYOFWEEK | F_MODIFIERINDEX | F_VARIABLE)) { offset = indextooffset(modifierindex); @@ -574,9 +617,9 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, d = (idayofweek - dow + 8) % 7; if (offset > 0) { - while (d <= yearinfo->mondays[imonth]) { + while (d <= yearinfo->monthdays[imonth]) { if (--offset == 0 - && remember_ymd(year, imonth, d)) { + && remember_ymd(year, imonth, d)) { remember(&remindex, yearp, monthp, dayp, edp, year, imonth, d, NULL); @@ -587,7 +630,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, continue; } if (offset < 0) { - while (d <= yearinfo->mondays[imonth]) + while (d <= yearinfo->monthdays[imonth]) d += 7; while (offset != 0) { offset++; @@ -606,7 +649,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, if (lflags == (F_DAYOFWEEK | F_MONTH | F_VARIABLE)) { dow = first_dayofweek_of_month(year, imonth); d = (idayofweek - dow + 8) % 7; - while (d <= yearinfo->mondays[imonth]) { + while (d <= yearinfo->monthdays[imonth]) { if (remember_ymd(year, imonth, d)) remember(&remindex, yearp, monthp, dayp, edp, @@ -623,7 +666,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, if ((lflags & F_MODIFIEROFFSET) != 0) offset = parseoffset(modifieroffset); if (remember_yd(year, yearinfo->ieaster + offset, - &rm, &rd)) + &rm, &rd)) remember(&remindex, yearp, monthp, dayp, edp, year, rm, rd, NULL); continue; @@ -636,7 +679,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, if ((lflags & F_MODIFIEROFFSET) != 0) offset = parseoffset(modifieroffset); if (remember_yd(year, yearinfo->ipaskha + offset, - &rm, &rd)) + &rm, &rd)) remember(&remindex, yearp, monthp, dayp, edp, year, rm, rd, NULL); continue; @@ -649,7 +692,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, if ((lflags & F_MODIFIEROFFSET) != 0) offset = parseoffset(modifieroffset); if (remember_yd(year, yearinfo->firstcnyday + offset, - &rm, &rd)) + &rm, &rd)) remember(&remindex, yearp, monthp, dayp, edp, year, rm, rd, NULL); continue; @@ -665,7 +708,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, offset = parseoffset(modifieroffset); for (i = 0; yearinfo->ffullmoon[i] > 0; i++) { if (remember_yd(year, - floor(yearinfo->ffullmoon[i]) + offset, + floor(yearinfo->ffullmoon[i]) + offset, &rm, &rd)) { ed = floattotime( yearinfo->ffullmoon[i]); @@ -687,8 +730,8 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, offset = parseoffset(modifieroffset); for (i = 0; yearinfo->ffullmoon[i] > 0; i++) { if (remember_yd(year, - floor(yearinfo->fnewmoon[i]) + offset, - &rm, &rd)) { + floor(yearinfo->fnewmoon[i]) + offset, + &rm, &rd)) { ed = floattotime(yearinfo->fnewmoon[i]); remember(&remindex, yearp, monthp, dayp, edp, @@ -705,7 +748,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, if ((lflags & F_MODIFIEROFFSET) != 0) offset = parseoffset(modifieroffset); if (remember_yd(year, yearinfo->equinoxdays[0] + offset, - &rm, &rd)) { + &rm, &rd)) { ed = floattotime(yearinfo->equinoxdays[0]); remember(&remindex, yearp, monthp, dayp, edp, year, rm, rd, ed); @@ -733,7 +776,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, if ((lflags & F_MODIFIEROFFSET) != 0) offset = parseoffset(modifieroffset); if (remember_yd(year, - yearinfo->solsticedays[0] + offset, &rm, &rd)) { + yearinfo->solsticedays[0] + offset, &rm, &rd)) { ed = floattotime(yearinfo->solsticedays[0]); remember(&remindex, yearp, monthp, dayp, edp, year, rm, rd, ed); @@ -746,7 +789,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, if ((lflags & F_MODIFIEROFFSET) != 0) offset = parseoffset(modifieroffset); if (remember_yd(year, - yearinfo->solsticedays[1] + offset, &rm, &rd)) { + yearinfo->solsticedays[1] + offset, &rm, &rd)) { ed = floattotime(yearinfo->solsticedays[1]); remember(&remindex, yearp, monthp, dayp, edp, year, rm, rd, ed); @@ -755,11 +798,11 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags, } if (debug) { - printf("Unprocessed:\n"); - debug_determinestyle(2, date, lflags, month, imonth, - dayofmonth, idayofmonth, dayofweek, idayofweek, - modifieroffset, modifierindex, specialday, syear, - iyear); + printf("Unprocessed:\n"); + debug_determinestyle(2, date, lflags, month, imonth, + dayofmonth, idayofmonth, dayofweek, idayofweek, + modifieroffset, modifierindex, specialday, syear, + iyear); } retvalsign = -1; } @@ -972,7 +1015,6 @@ indextooffset(char *s) static int parseoffset(char *s) { - return strtol(s, NULL, 10); } diff --git a/usr.bin/calendar/pathnames.h b/usr.bin/calendar/pathnames.h index ea76948..a46913c 100644 --- a/usr.bin/calendar/pathnames.h +++ b/usr.bin/calendar/pathnames.h @@ -32,5 +32,5 @@ #include <paths.h> -#define _PATH_CPP "/usr/bin/cpp" +#define _PATH_CPP "/usr/bin/gcpp" #define _PATH_INCLUDE "/usr/share/calendar" diff --git a/usr.bin/calendar/sunpos.c b/usr.bin/calendar/sunpos.c index 72b8f5c..f905c3f 100644 --- a/usr.bin/calendar/sunpos.c +++ b/usr.bin/calendar/sunpos.c @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -22,7 +22,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * */ #include <sys/cdefs.h> @@ -373,7 +373,7 @@ calculatesunlongitude30(int year, int degreeGMToffset, int *ichinesemonths) int firstmonth330 = -1; cumdays = cumdaytab[isleap(year)]; - monthdays = mondaytab[isleap(year)]; + monthdays = monthdaytab[isleap(year)]; pichinesemonths = ichinesemonths; h = 0; |