extract month name computation into a separate fn
This commit is contained in:
parent
d04acc0e55
commit
4d87706a3d
47
ncal.c
47
ncal.c
|
@ -60,7 +60,6 @@ __FBSDID("$FreeBSD: head/usr.bin/ncal/ncal.c 326276 2017-11-27 15:37:16Z pfg $")
|
||||||
typedef struct date date;
|
typedef struct date date;
|
||||||
|
|
||||||
struct monthlines {
|
struct monthlines {
|
||||||
wchar_t name[MAX_WIDTH + 1];
|
|
||||||
char lines[7][MAX_WIDTH + 1];
|
char lines[7][MAX_WIDTH + 1];
|
||||||
char weeks[MAX_WIDTH + 1];
|
char weeks[MAX_WIDTH + 1];
|
||||||
unsigned int extralen[7];
|
unsigned int extralen[7];
|
||||||
|
@ -655,6 +654,14 @@ printeaster(int y, int julian, int orthodox)
|
||||||
#define M2Y(m) ((m) / 12)
|
#define M2Y(m) ((m) / 12)
|
||||||
#define M2M(m) (1 + (m) % 12)
|
#define M2M(m) (1 + (m) % 12)
|
||||||
|
|
||||||
|
static void compute_month_name(int month_index, wchar_t *month_name, int mlen) {
|
||||||
|
struct tm tm;
|
||||||
|
memset(&tm, 0, sizeof(tm));
|
||||||
|
tm.tm_mon = month_index;
|
||||||
|
wcsftime(month_name, mlen, L"%B", &tm);
|
||||||
|
month_name[0] = towupper(month_name[0]);
|
||||||
|
}
|
||||||
|
|
||||||
/* Print all months for the period in the range [ before .. y-m .. after ]. */
|
/* Print all months for the period in the range [ before .. y-m .. after ]. */
|
||||||
static void
|
static void
|
||||||
monthrangeb(int y, int m, int jd_flag, int before, int after, int highlightdate)
|
monthrangeb(int y, int m, int jd_flag, int before, int after, int highlightdate)
|
||||||
|
@ -717,15 +724,18 @@ monthrangeb(int y, int m, int jd_flag, int before, int after, int highlightdate)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Month names. */
|
/* Month names. */
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++) {
|
||||||
|
wchar_t month_name[MAX_WIDTH+1];
|
||||||
|
compute_month_name(M2M(m + i) - 1, month_name, sizeof(month_name)/sizeof(month_name[0]));
|
||||||
if (printyearheader)
|
if (printyearheader)
|
||||||
printw("%-*ls ",
|
printw("%-*ls ",
|
||||||
mw, wcenter(ws, year[i].name, mw));
|
mw, wcenter(ws, month_name, mw));
|
||||||
else {
|
else {
|
||||||
swprintf(ws, sizeof(ws)/sizeof(ws[0]),
|
swprintf(ws, sizeof(ws)/sizeof(ws[0]),
|
||||||
L"%-ls %d", year[i].name, M2Y(m + i));
|
L"%-ls %d", month_name, M2Y(m + i));
|
||||||
printw("%-*ls ", mw, wcenter(ws1, ws, mw));
|
printw("%-*ls ", mw, wcenter(ws1, ws, mw));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
printw("\n");
|
printw("\n");
|
||||||
|
|
||||||
/* Day of the week names. */
|
/* Day of the week names. */
|
||||||
|
@ -817,12 +827,15 @@ monthranger(int y, int m, int jd_flag, int before, int after, int highlightdate)
|
||||||
|
|
||||||
/* Month names. */
|
/* Month names. */
|
||||||
printw(" ");
|
printw(" ");
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++) {
|
||||||
|
wchar_t month_name[MAX_WIDTH+1];
|
||||||
|
compute_month_name(M2M(m + i) - 1, month_name, sizeof(month_name)/sizeof(month_name[0]));
|
||||||
if (printyearheader)
|
if (printyearheader)
|
||||||
printw("%-*ls", mw, year[i].name);
|
printw("%-*ls", mw, month_name);
|
||||||
else
|
else
|
||||||
printw("%-ls %-*d", year[i].name,
|
printw("%-ls %-*d", month_name,
|
||||||
mw - wcslen(year[i].name) - 1, M2Y(m + i));
|
mw - wcslen(month_name) - 1, M2Y(m + i));
|
||||||
|
}
|
||||||
printw("\n");
|
printw("\n");
|
||||||
|
|
||||||
/* And the days of the month. */
|
/* And the days of the month. */
|
||||||
|
@ -855,8 +868,6 @@ static void
|
||||||
mkmonthr(int y, int m, int jd_flag, struct monthlines *mlines, int highlightdate)
|
mkmonthr(int y, int m, int jd_flag, struct monthlines *mlines, int highlightdate)
|
||||||
{
|
{
|
||||||
|
|
||||||
struct tm tm; /* for strftime printing local names of
|
|
||||||
* months */
|
|
||||||
date dt; /* handy date */
|
date dt; /* handy date */
|
||||||
int dw; /* width of numbers */
|
int dw; /* width of numbers */
|
||||||
int first; /* first day of month */
|
int first; /* first day of month */
|
||||||
|
@ -867,13 +878,6 @@ mkmonthr(int y, int m, int jd_flag, struct monthlines *mlines, int highlightdate
|
||||||
char *ds; /* pointer to day strings (daystr or
|
char *ds; /* pointer to day strings (daystr or
|
||||||
* jdaystr) */
|
* jdaystr) */
|
||||||
|
|
||||||
/* Set name of month. */
|
|
||||||
memset(&tm, 0, sizeof(tm));
|
|
||||||
tm.tm_mon = m;
|
|
||||||
wcsftime(mlines->name, sizeof(mlines->name) / sizeof(mlines->name[0]),
|
|
||||||
L"%B", &tm);
|
|
||||||
mlines->name[0] = towupper(mlines->name[0]);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set first and last to the day number of the first day of this
|
* Set first and last to the day number of the first day of this
|
||||||
* month and the first day of next month respectively. Set jan1 to
|
* month and the first day of next month respectively. Set jan1 to
|
||||||
|
@ -949,8 +953,6 @@ static void
|
||||||
mkmonthb(int y, int m, int jd_flag, struct monthlines *mlines, int highlightdate)
|
mkmonthb(int y, int m, int jd_flag, struct monthlines *mlines, int highlightdate)
|
||||||
{
|
{
|
||||||
|
|
||||||
struct tm tm; /* for strftime printing local names of
|
|
||||||
* months */
|
|
||||||
date dt; /* handy date */
|
date dt; /* handy date */
|
||||||
int dw; /* width of numbers */
|
int dw; /* width of numbers */
|
||||||
int first; /* first day of month */
|
int first; /* first day of month */
|
||||||
|
@ -970,13 +972,6 @@ mkmonthb(int y, int m, int jd_flag, struct monthlines *mlines, int highlightdate
|
||||||
dw = 3;
|
dw = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set name of month centered. */
|
|
||||||
memset(&tm, 0, sizeof(tm));
|
|
||||||
tm.tm_mon = m;
|
|
||||||
wcsftime(mlines->name, sizeof(mlines->name) / sizeof(mlines->name[0]),
|
|
||||||
L"%B", &tm);
|
|
||||||
mlines->name[0] = towupper(mlines->name[0]);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set first and last to the day number of the first day of this
|
* Set first and last to the day number of the first day of this
|
||||||
* month and the first day of next month respectively. Set jan1 to
|
* month and the first day of next month respectively. Set jan1 to
|
||||||
|
|
Loading…
Reference in New Issue