#define MAXDAYS 42 /* max slots in a month array */
#define SPACE -1 /* used in day array */
-static const unsigned char days_in_month[] = {
+static const unsigned char days_in_month[] ALIGN1 = {
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
-static const unsigned char sep1752[] = {
+static const unsigned char sep1752[] ALIGN1 = {
1, 2, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30
};
-static unsigned julian;
+/* Set to 0 or 1 in main */
+#define julian ((unsigned)option_mask32)
/* leap year -- account for Gregorian reformation in 1752 */
static int leap_year(unsigned yr)
{
- if (yr <= 1752)
+ if (yr <= 1752)
return !(yr % 4);
return (!(yr % 4) && (yr % 100)) || !(yr % 400);
}
#define J_WEEK_LEN (WEEK_LEN + 7)
#define HEAD_SEP 2 /* spaces between day headings */
-int cal_main(int argc, char **argv);
+int cal_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int cal_main(int argc, char **argv)
{
struct tm *local_time;
char day_headings[28]; /* 28 for julian, 21 for nonjulian */
char buf[40];
- flags = getopt32(argc, argv, "jy");
- julian = flags & 1;
+ flags = getopt32(argv, "jy");
+ /* This sets julian = flags & 1: */
+ option_mask32 &= 1;
month = 0;
argv += optind;
argc -= optind;
time(&now);
local_time = localtime(&now);
year = local_time->tm_year + 1900;
- if (!(flags & 2)) {
+ if (!(flags & 2)) { /* no -y */
month = local_time->tm_mon + 1;
}
} else {
if (!julian) {
printf("%*s%s", HEAD_SEP, "", day_headings);
}
- putchar('\n');
+ bb_putchar('\n');
for (row = 0; row < (6*7); row += 7) {
for (which_cal = 0; which_cal < 3-julian; which_cal++) {
dp = days[month + which_cal] + row;
}
}
- fflush_stdout_and_exit(0);
+ fflush_stdout_and_exit(EXIT_SUCCESS);
}
/*