svn commit: r204881 - user/edwin/ncal

Edwin Groothuis edwin at FreeBSD.org
Mon Mar 8 20:57:36 UTC 2010


Author: edwin
Date: Mon Mar  8 20:57:35 2010
New Revision: 204881
URL: http://svn.freebsd.org/changeset/base/204881

Log:
  Fixed issue with aligning of next month after a highlighted day for
  non-terminal output.

Modified:
  user/edwin/ncal/ncal.c

Modified: user/edwin/ncal/ncal.c
==============================================================================
--- user/edwin/ncal/ncal.c	Mon Mar  8 20:45:52 2010	(r204880)
+++ user/edwin/ncal/ncal.c	Mon Mar  8 20:57:35 2010	(r204881)
@@ -60,7 +60,7 @@ struct monthlines {
 	wchar_t name[MAX_WIDTH + 1];
 	char lines[7][MAX_WIDTH + 1];
 	char weeks[MAX_WIDTH + 1];
-	unsigned int linelen[7];
+	unsigned int extralen[7];
 };
 
 struct weekdays {
@@ -336,14 +336,19 @@ main(int argc, char *argv[])
 		if (flag_easter)
 			usage();
 		flag_month = *argv++;
+		before = 0;
+		after = 0;
+		m = strtol(flag_month, NULL, 10);
 		/* FALLTHROUGH */
 	case 1:
 		y = atoi(*argv++);
 		if (y < 1 || y > 9999)
 			errx(EX_USAGE, "year %d not in range 1..9999", y);
-		before = 0;
-		after = 11;
-		m = 1;
+		if (before == -1 && after == -1) {
+			before = 0;
+			after = 11;
+			m = 1;
+		}
 		break;
 	case 0:
 		{
@@ -470,8 +475,7 @@ printeaster(int y, int julian, int ortho
 	printf("%s\n", buf);
 }
 
-#define MW(mw, ms, ml) \
-	strlen(ms) > (ml) ? (mw) + 9 : (mw)
+#define MW(mw, me)		((mw) + me)
 #define	DECREASEMONTH(m, y) 		\
 		if (--m == 0) {		\
 			m = 12;		\
@@ -564,7 +568,9 @@ monthrangeb(int y, int jd_flag, int m, i
 
 		for (i = 0; i != 6; i++) {
 			for (j = 0; j < count; j++)
-				printf("%-*s  ", mw, year[j].lines[i]+1);
+				printf("%-*s  ",
+				    MW(mw, year[j].extralen[i]),
+					year[j].lines[i]+1);
 			printf("\n");
 		}
 
@@ -641,8 +647,8 @@ monthranger(int y, int jd_flag, int m, i
 			/* Full months */
 			for (j = 0; j < count; j++)
 				printf("%-*s",
-				    MW(mw, year[j].lines[i],
-					year[j].linelen[i]), year[j].lines[i]);
+				    MW(mw, year[j].extralen[i]),
+					year[j].lines[i]);
 			printf("\n");
 		}
 
@@ -733,7 +739,7 @@ mkmonthr(int y, int m, int jd_flag, stru
 				memcpy(mlines->lines[i] + k + l, "    ", dw);
 		}
 		mlines->lines[i][k + l] = '\0';
-		mlines->linelen[i] = k;
+		mlines->extralen[i] = l;
 	}
 
 	/* fill the weeknumbers */
@@ -840,6 +846,7 @@ mkmonthb(int y, int m, int jd_flag, stru
 			mlines->lines[i][1] = '\0';
 		else
 			mlines->lines[i][k + l] = '\0';
+		mlines->extralen[i] = l;
 	}
 }
 


More information about the svn-src-user mailing list