• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#objective-cqtwindows誰得cocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

oga's tools


コミットメタ情報

リビジョンc00a7df67d7fb5577d7452e1158d97d9e729e0c5 (tree)
日時2015-04-13 05:03:51
作者oga <hyperoga@gmai...>
コミッターoga

ログメッセージ

2015.04.13 V1.92 fix continuation substitute holiday, support -holidump, del syunbun dust.

変更サマリ

差分

--- a/cal.c
+++ b/cal.c
@@ -18,6 +18,7 @@
1818 * 2014.02.11 V1.86 support NT cmmand prompt
1919 * 2014.11.03 V1.90 support variable holiday
2020 * 2014.11.03 V1.91 fix NT usage color
21+ * 2015.04.13 V1.92 fix continuation substitute holiday, add -holidump
2122 *
2223 * X68000 : default
2324 * HI-UX : -DX_H3050R -D_HIUX_SOURCE
@@ -74,6 +75,7 @@ void add_holiday(); /* V1.90-A */
7475 void adjust_holiday(); /* V1.90-A */
7576 void backup_color(); /* V1.91-A */
7677 void restore_color(); /* V1.91-A */
78+void dump_holiday(); /* V1.92-A */
7779
7880 #if defined(X_H3050R) || defined(DOS) || defined(LINUX)
7981 int _iocs_bindateget();
@@ -107,6 +109,8 @@ int holi[MAX_ENT*3]; /* holiday table V1.90-C */
107109 * 月,日,適用開始年,適用終了年,第n,曜日(1:月曜)
108110 *
109111 * (注)国民の祝日の制定は1948/7/20施行
112+ * 固定休日は第n, 曜日は0,0
113+ * 複雑な計算の春分の日、秋分の日はadjust_holiday()内で設定
110114 */
111115 holidat_t new_holi[] = {
112116 1, 1, 1949, 9999, 0, 0, /* 元日 固定(1949-) */
@@ -184,6 +188,8 @@ char *b[];
184188 {
185189 int year = 0, month = 0, cur_flg = 0;
186190 int xdate;
191+ int hdf = 0; /* holiday dump (secret opt) V1.92-A */
192+ int shift = 0; /* shift arg V1.92-A */
187193 char *dt=(char *)&xdate;
188194
189195 backup_color(); /* for dos V1.91-A */
@@ -193,6 +199,13 @@ char *b[];
193199 exit(1);
194200 }
195201
202+ /* V1.92-A start */
203+ if (a > 1 && strcmp(b[1],"-holidump") == 0) {
204+ /* usage: cal -holidump [[month] year] */
205+ hdf = 1;
206+ }
207+ /* V1.92-A end */
208+
196209 #ifdef X_H3050R
197210 if (getenv("COLORCAL") != 0) { /* for 3050RX */
198211 blue = "";
@@ -208,6 +221,14 @@ char *b[];
208221 }
209222
210223 xdate = _iocs_bindateget(); /* get date */
224+
225+ /* V1.92-A start */
226+ if (hdf) {
227+ --a; /* shift argc */
228+ shift = 1; /* shift pos */
229+ }
230+ /* V1.92-A start */
231+
211232 switch (a) {
212233 case 1:
213234 year = bcd2bin(dt[1])+1980; /* day:year:month:date */
@@ -215,11 +236,11 @@ char *b[];
215236 cur_flg = 1; /* today's year & month */
216237 break;
217238 case 2:
218- year = atoi(b[1]);
239+ year = atoi(b[1+shift]);
219240 break;
220241 case 3:
221- month = atoi(b[1]);
222- year = atoi(b[2]);
242+ month = atoi(b[1+shift]);
243+ year = atoi(b[2+shift]);
223244 break;
224245 }
225246 if (year < 1) {
@@ -236,6 +257,14 @@ char *b[];
236257 memset(holi, 0, sizeof(holi)); /* V1.90-A */
237258
238259 adjust_holiday(year); /* adjust holiday V1.90-A */
260+
261+ /* V1.92-A start */
262+ if (hdf) {
263+ dump_holiday(year); /* dump holiday */
264+ return 0;
265+ }
266+ /* V1.92-A end */
267+
239268 get_holiday(); /* read holiday file V1.90-M */
240269
241270 if (month == 0) {
@@ -245,8 +274,33 @@ char *b[];
245274 }
246275
247276 restore_color(); /* V1.91-C */
277+
278+ return 0; /* V1.92-A */
248279 }
249280
281+/* V1.92-A start */
282+/*
283+ * dump holiday table
284+ * note: call after adjust_holiday()
285+ *
286+ */
287+void dump_holiday(yy)
288+int yy;
289+{
290+ int i = 0;
291+
292+ printf("Year %d's holiday\n", yy);
293+
294+ /* search holiday */
295+ while (holi[i*3+2]) {
296+ printf("%4d/%2d/%2d\n", yy, holi[i*3+1], holi[i*3+2]);
297+ ++i;
298+ }
299+
300+}
301+/* V1.92-A end */
302+
303+
250304 /* V1.90-A start */
251305 /*
252306 * add to holiday table
@@ -439,7 +493,8 @@ int year;
439493 wk = d[l*7+j][i*6+k];
440494 you = j;
441495 if (chk_holiday(year,month,wk)>0 || furikae > 0) {
442- if (furikae > 0) {
496+ /* if (furikae > 0) V1.92-D */
497+ if (!chk_holiday(year,month,wk) && furikae > 0) { /* V1.92-C */
443498 furikae--;
444499 }
445500 you = 0; /* 休日 */
@@ -512,8 +567,10 @@ int year,month,cur_flg,day;
512567 wk = d[((month-1)%3)*7+j][((month-1)/3)*6+k];
513568 you = j;
514569 if (chk_holiday(year,month,wk) || furikae > 0) {
515- if (furikae > 0)
570+ /* if (furikae > 0) V1.92-D */
571+ if (!chk_holiday(year,month,wk) && furikae > 0) { /* V1.92-C */
516572 furikae--;
573+ }
517574 you = 0; /* 休日(黄色) */
518575 if (j == 0) {
519576 furikae = 1;
@@ -581,7 +638,7 @@ int year;
581638 (year % 100 != 0 || year % 400 == 0) ) {
582639 r = 365*(year-1) + m2[month-1] ; /* うるう年 */
583640 m0=m2[month]-m2[month-1]; /* 月の最後の日 */
584- holi[14] = 20; /* V1.8 春分の日:3/20 */
641+ /* holi[14] = 20; V1.92-D */ /* V1.8 春分の日:3/20 */
585642 } else {
586643 r = 365*(year-1) + m1[month-1];
587644 m0=m1[month]-m1[month-1]; /* 月の最後の日 */