X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=coreutils%2Fcal.c;h=9b597772ec2404bd399da05442780fc9a13e3465;hb=e40e76f3cd3702b1891231f585e5f38867a52b29;hp=f8fc0b0d3456b4a9c7fe64585fda9690068e429f;hpb=661f6fad77b672a5f6648b01275eb9ff19c59139;p=oweals%2Fbusybox.git diff --git a/coreutils/cal.c b/coreutils/cal.c index f8fc0b0d3..9b597772e 100644 --- a/coreutils/cal.c +++ b/coreutils/cal.c @@ -30,22 +30,23 @@ #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); } @@ -75,7 +76,7 @@ static char *build_row(char *p, unsigned *dp); #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; @@ -86,8 +87,9 @@ int cal_main(int argc, char **argv) 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; @@ -100,7 +102,7 @@ int cal_main(int argc, char **argv) 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 { @@ -167,7 +169,7 @@ int cal_main(int argc, char **argv) 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; @@ -179,7 +181,7 @@ int cal_main(int argc, char **argv) } } - fflush_stdout_and_exit(0); + fflush_stdout_and_exit(EXIT_SUCCESS); } /*