void j_yearly(int year) { int col, *dp, i, month, row, which_cal; int days[12][MAXDAYS]; char *p, lineout[80]; (void)snprintf(lineout, sizeof(lineout), "%d", year); center(lineout, J_WEEK_LEN * 2 + J_HEAD_SEP, 0); (void)printf("\n\n"); for (i = 0; i < 12; i++) day_array(i + 1, year, days[i]); (void)memset(lineout, ' ', sizeof(lineout) - 1); lineout[sizeof(lineout) - 1] = '\0'; for (month = 0; month < 12; month += 2) { center(month_names[month], J_WEEK_LEN, J_HEAD_SEP); center(month_names[month + 1], J_WEEK_LEN, 0); (void)printf("\n%s%*s%s\n", day_headings, J_HEAD_SEP, "", day_headings); for (row = 0; row < 6; row++) { for (which_cal = 0; which_cal < 2; which_cal++) { p = lineout + which_cal * (J_WEEK_LEN + 2); dp = &days[month + which_cal][row * 7]; for (col = 0; col < 7; col++, p += J_DAY_LEN) ascii_day(p, *dp++); } *p = '\0'; trim_trailing_spaces(lineout); (void)printf("%s\n", lineout); } } (void)printf("\n"); }
void j_yearly(int day, int year) { int col, *dp, i, month, row, which_cal; int days[12][MAXDAYS]; char *p, lineout[80]; snprintf(lineout, sizeof(lineout), "%d", year); center(lineout, J_WEEK_LEN*2 + J_HEAD_SEP - 1, 0); printf("\n\n"); for (i = 0; i < 12; i++) day_array(day, i + 1, year, days[i]); memset(lineout, ' ', sizeof(lineout) - 1); lineout[sizeof(lineout) - 1] = '\0'; for (month = 0; month < 12; month += 2) { center(full_month[month], J_WEEK_LEN-1, J_HEAD_SEP+1); center(full_month[month + 1], J_WEEK_LEN-1, 0); printf("\n%s%*s %s\n", j_day_headings, J_HEAD_SEP, "", j_day_headings); for (row = 0; row < 6; row++) { p = lineout; for (which_cal = 0; which_cal < 2; which_cal++) { dp = &days[month + which_cal][row * 7]; for (col = 0; col < 7; col++) p = ascii_day(p, *dp++); p += sprintf(p, " "); } *p = '\0'; trim_trailing_spaces(lineout); my_putstring(lineout); putchar('\n'); } } printf("\n"); }
void monthly(int month, int year) { int col, row, len, days[MAXDAYS], firstday; char *p, lineout[30]; day_array(month, year, days); (void)snprintf(lineout, sizeof(lineout), "%s %d", month_names[month - 1], year); len = strlen(lineout); (void)printf("%*s%s\n%s\n", ((julian ? J_WEEK_LEN : WEEK_LEN) - len) / 2, "", lineout, day_headings); for (row = 0; row < 6; row++) { firstday = SPACE; for (col = 0, p = lineout; col < 7; col++, p += julian ? J_DAY_LEN : DAY_LEN) { if (firstday == SPACE && days[row * 7 + col] != SPACE) firstday = days[row * 7 + col]; ascii_day(p, days[row * 7 + col]); } *p = '\0'; trim_trailing_spaces(lineout); (void)printf("%-20s", lineout); if (wflag && firstday != SPACE) printf(" [%2d]", week(firstday, month, year)); printf("\n"); } }
void do_monthly(int day, int month, int year, struct fmt_st *out) { int col, row, days[MAXDAYS]; char *p, lineout[FMT_ST_CHARS]; int width = (julian ? J_WEEK_LEN : WEEK_LEN) - 1; day_array(day, month, year, days); /* * %s is the month name, %d the year number. * you can change the order and/or add something here; eg for * Basque the translation should be: "%2$dko %1$s", and * the Vietnamese should be "%s na(m %d", etc. */ snprintf(lineout, sizeof(lineout), _("%s %d"), full_month[month - 1], year); center_str(lineout, out->s[0], ARRAY_SIZE(out->s[0]), width); snprintf(out->s[1], FMT_ST_CHARS, "%s", julian ? j_day_headings : day_headings); for (row = 0; row < 6; row++) { int has_hl = 0; for (col = 0, p = lineout; col < 7; col++) { int xd = days[row * 7 + col]; if (xd != SPACE && (xd & TODAY_FLAG)) has_hl = 1; p = ascii_day(p, xd); } *p = '\0'; trim_trailing_spaces(lineout); snprintf(out->s[row+2], FMT_ST_CHARS, "%s", lineout); if (has_hl) Hrow = out->s[row+2]; } }
void yearly(int year) { int col, *dp, i, month, row, which_cal, week_len, wn, firstday; int days[12][MAXDAYS]; char *p, lineout[81]; week_len = WEEK_LEN; if (wflag) week_len += WEEKNUMBER_LEN; (void)snprintf(lineout, sizeof(lineout), "%d", year); center(lineout, week_len * 3 + HEAD_SEP * 2, 0); (void)printf("\n\n"); for (i = 0; i < 12; i++) day_array(i + 1, year, days[i]); (void)memset(lineout, ' ', sizeof(lineout) - 1); lineout[sizeof(lineout) - 1] = '\0'; for (month = 0; month < 12; month += 3) { center(month_names[month], week_len, HEAD_SEP); center(month_names[month + 1], week_len, HEAD_SEP); center(month_names[month + 2], week_len, 0); (void)printf("\n%s%*s%s%*s%s\n", day_headings, HEAD_SEP + (wflag ? WEEKNUMBER_LEN : 0), "", day_headings, HEAD_SEP + (wflag ? WEEKNUMBER_LEN : 0), "", day_headings); for (row = 0; row < 6; row++) { for (which_cal = 0; which_cal < 3; which_cal++) { p = lineout + which_cal * (week_len + 2); dp = &days[month + which_cal][row * 7]; firstday = SPACE; for (col = 0; col < 7; col++, p += DAY_LEN) { if (firstday == SPACE && *dp != SPACE) firstday = *dp; ascii_day(p, *dp++); } if (wflag && firstday != SPACE) { wn = week(firstday, month + which_cal + 1, year); (void)snprintf(p, 5, "[%2d]", wn); p += strlen(p); *p = ' '; } else memset(p, ' ', 4); } *p = '\0'; trim_trailing_spaces(lineout); (void)printf("%s\n", lineout); } } (void)printf("\n"); }