#define DOY_MONTH_WIDTH 27 /* -j month width */
#define DOM_MONTH_WIDTH 20 /* month width */
-static int has_term = 0;
static const char *Senter = "", *Sexit = ""; /* enter and exit standout mode */
-#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW)
-# if defined(HAVE_NCURSESW_TERM_H)
-# include <ncursesw/term.h>
-# elif defined(HAVE_NCURSES_TERM_H)
-# include <ncurses/term.h>
-# elif defined(HAVE_TERM_H)
-# include <term.h>
-# endif
-#endif
-
-static int setup_terminal(char *term
-#if !defined(HAVE_LIBNCURSES) && !defined(HAVE_LIBNCURSESW)
- __attribute__((__unused__))
-#endif
- )
-{
-#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW)
- int ret;
-
- if (setupterm(term, STDOUT_FILENO, &ret) != 0 || ret != 1)
- return -1;
-#endif
- return 0;
-}
-
-static const char *my_tgetstr(char *ss
-#if !defined(HAVE_LIBNCURSES) && !defined(HAVE_LIBNCURSESW)
- __attribute__((__unused__))
-#endif
- )
-{
- const char *ret = NULL;
-
-#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW)
- if (has_term)
- ret = tigetstr(ss);
-#endif
- if (!ret || ret == (char *)-1)
- return "";
- return ret;
-}
-
#include "widechar.h"
enum {
int main(int argc, char **argv)
{
struct tm local_time;
- char *term;
time_t now;
int ch = 0, yflag = 0, Yflag = 0, cols = COLUMNS_MAX_THREE;
textdomain(PACKAGE);
close_stdout_atexit();
- term = getenv("TERM");
- if (term) {
- has_term = setup_terminal(term) == 0;
- if (has_term) {
- Senter = my_tgetstr("smso");
- Sexit = my_tgetstr("rmso");
- }
- }
-
/*
* The traditional Unix cal utility starts the week at Sunday,
* while ISO 8601 starts at Monday. We read the start day from
weekdays_init(&ctl);
headers_init(&ctl);
- if (colors_init(ctl.colormode, "cal") == 0) {
- /*
- * If standout mode available (Senter and Sexit are set) and
- * user or terminal-colors.d do not disable colors than
- * ignore colors_init().
- */
- if (*Senter && *Sexit && colors_mode() != UL_COLORMODE_NEVER) {
- /* let use standout mode */
- ;
- } else {
- /* disable */
- Senter = ""; Sexit = "";
- ctl.req.day = 0;
- ctl.weektype &= ~WEEK_NUM_MASK;
- }
+ if (colors_init(ctl.colormode, "cal") > 0) {
+ Senter = UL_COLOR_REVERSE;
+ Sexit = UL_COLOR_RESET;
+ } else {
+ /* disable */
+ ctl.req.day = 0;
+ ctl.weektype &= ~WEEK_NUM_MASK;
}
if (yflag || Yflag) {
January 0001
Su Mo Tu We Th Fr Sa
- \e[7m 1\e[27m
+ \e[7m 1\e[0m
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
-28 29 30 26 27 28 29 30 \e[7m31\e[27m 23 24 25 26 27 28 29
+28 29 30 26 27 28 29 30 \e[7m31\e[0m 23 24 25 26 27 28 29
30 31
September 1752
Su Mo Tu We Th Fr Sa
- 1 \e[7m 2\e[27m 14 15 16
+ 1 \e[7m 2\e[0m 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
September 1752
Su Mo Tu We Th Fr Sa
- 1 2 \e[7m14\e[27m 15 16
+ 1 2 \e[7m14\e[0m 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Su 5 12 19 26
Mo 6 13 20 27
Tu 7 14 21 28
-We 1 8 \e[7m15\e[27m 22
+We 1 8 \e[7m15\e[0m 22
Th 2 9 16 23
Fr 3 10 17 24
Sa 4 11 18 25
Su 5 12 19 26
Mo 6 13 20 27
Tu 7 14 21 28
-We 1 8 \e[7m15\e[27m 22
+We 1 8 \e[7m15\e[0m 22
Th 2 9 16 23
Fr 3 10 17 24
Sa 4 11 18 25
January 0001
Su Mo Tu We Th Fr Sa
- 1 \e[7m 1\e[27m
+ 1 \e[7m 1\e[0m
2 2 3 4 5 6 7 8
3 9 10 11 12 13 14 15
4 16 17 18 19 20 21 22
46 7 8 9 10 11 12 13 50 5 6 7 8 9 10 11 2 2 3 4 5 6 7 8
47 14 15 16 17 18 19 20 51 12 13 14 15 16 17 18 3 9 10 11 12 13 14 15
48 21 22 23 24 25 26 27 52 19 20 21 22 23 24 25 4 16 17 18 19 20 21 22
-49 28 29 30 53 26 27 28 29 30 \e[7m31\e[27m 5 23 24 25 26 27 28 29
+49 28 29 30 53 26 27 28 29 30 \e[7m31\e[0m 5 23 24 25 26 27 28 29
6 30 31
September 1752
Su Mo Tu We Th Fr Sa
-36 1 \e[7m 2\e[27m 14 15 16
+36 1 \e[7m 2\e[0m 14 15 16
37 17 18 19 20 21 22 23
38 24 25 26 27 28 29 30
September 1752
Su Mo Tu We Th Fr Sa
-36 1 2 \e[7m14\e[27m 15 16
+36 1 2 \e[7m14\e[0m 15 16
37 17 18 19 20 21 22 23
38 24 25 26 27 28 29 30
Gregorian - Monday-based, week 53, 1 month
January 2010
Mo Tu We Th Fr Sa Su
-\e[7m53\e[27m 1 2 3
+\e[7m53\e[0m 1 2 3
1 4 5 6 7 8 9 10
2 11 12 13 14 15 16 17
3 18 19 20 21 22 23 24
Julian - Monday-based, week 53, 1 month
January 2010
Mon Tue Wed Thu Fri Sat Sun
-\e[7m53\e[27m 1 2 3
+\e[7m53\e[0m 1 2 3
1 4 5 6 7 8 9 10
2 11 12 13 14 15 16 17
3 18 19 20 21 22 23 24
Gregorian - Monday-based, week 40, 3 month
September 2013 October 2013 November 2013
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
-35 1 \e[7m40\e[27m 1 2 3 4 5 6 44 1 2 3
-36 2 3 4 5 6 7 8 41 \e[7m 7\e[27m 8 9 10 11 12 13 45 4 5 6 7 8 9 10
+35 1 \e[7m40\e[0m 1 2 3 4 5 6 44 1 2 3
+36 2 3 4 5 6 7 8 41 \e[7m 7\e[0m 8 9 10 11 12 13 45 4 5 6 7 8 9 10
37 9 10 11 12 13 14 15 42 14 15 16 17 18 19 20 46 11 12 13 14 15 16 17
38 16 17 18 19 20 21 22 43 21 22 23 24 25 26 27 47 18 19 20 21 22 23 24
39 23 24 25 26 27 28 29 44 28 29 30 31 48 25 26 27 28 29 30
-\e[7m40\e[27m 30
+\e[7m40\e[0m 30
45 6 7 8 9 10 11 12 49 4 5 6 7 8 9 10 2 8 9 10 11 12 13 14
46 13 14 15 16 17 18 19 50 11 12 13 14 15 16 17 3 15 16 17 18 19 20 21
47 20 21 22 23 24 25 26 51 18 19 20 21 22 23 24 4 22 23 24 25 26 27 28
-48 27 28 29 30 \e[7m52\e[27m 25 26 27 28 29 30 \e[7m31\e[27m 5 29 30 31
+48 27 28 29 30 \e[7m52\e[0m 25 26 27 28 29 30 \e[7m31\e[0m 5 29 30 31
Gregorian - Monday-based, week 53, 3 month
December 2009 January 2010 February 2010
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
-49 1 2 3 4 5 6 \e[7m53\e[27m 1 2 3 5 1 2 3 4 5 6 7
+49 1 2 3 4 5 6 \e[7m53\e[0m 1 2 3 5 1 2 3 4 5 6 7
50 7 8 9 10 11 12 13 1 4 5 6 7 8 9 10 6 8 9 10 11 12 13 14
51 14 15 16 17 18 19 20 2 11 12 13 14 15 16 17 7 15 16 17 18 19 20 21
52 21 22 23 24 25 26 27 3 18 19 20 21 22 23 24 8 22 23 24 25 26 27 28
-\e[7m53\e[27m 28 29 30 31 4 25 26 27 28 29 30 31
+\e[7m53\e[0m 28 29 30 31 4 25 26 27 28 29 30 31
Julian - Monday-based, week 40, 3 month
September 2013 October 2013 November 2013
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
-35 244 \e[7m40\e[27m 274 275 276 277 278 279 44 305 306 307
-36 245 246 247 248 249 250 251 41 \e[7m280\e[27m 281 282 283 284 285 286 45 308 309 310 311 312 313 314
+35 244 \e[7m40\e[0m 274 275 276 277 278 279 44 305 306 307
+36 245 246 247 248 249 250 251 41 \e[7m280\e[0m 281 282 283 284 285 286 45 308 309 310 311 312 313 314
37 252 253 254 255 256 257 258 42 287 288 289 290 291 292 293 46 315 316 317 318 319 320 321
38 259 260 261 262 263 264 265 43 294 295 296 297 298 299 300 47 322 323 324 325 326 327 328
39 266 267 268 269 270 271 272 44 301 302 303 304 48 329 330 331 332 333 334
-\e[7m40\e[27m 273
+\e[7m40\e[0m 273
47 12 13 14 15 16 17 18 51 10 11 12 13 14 15 16 3 14 15 16 17 18 19 20
48 19 20 21 22 23 24 25 52 17 18 19 20 21 22 23 4 21 22 23 24 25 26 27
49 26 27 28 29 30 53 24 25 26 27 28 29 30 5 28 29 30 31
- \e[7m54\e[27m \e[7m31\e[27m
+ \e[7m54\e[0m \e[7m31\e[0m