changeset 4:5326c222cd4e

removed MESSAGE; code beautifing workaround for MESSAGE: use an event with warn 0 (message=yyyy-mm-dd w 0)
author meillo@marmaro.de
date Mon, 17 Dec 2007 12:14:41 +0100
parents dc2f94280b01
children 5af6bf2cb271
files bday.1 bdengine.c birthday.h
diffstat 3 files changed, 43 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/bday.1	Mon Dec 17 11:28:40 2007 +0100
+++ b/bday.1	Mon Dec 17 12:14:41 2007 +0100
@@ -77,15 +77,15 @@
 .B -W
 flag.
 .TP
+.BI for days
+The event lasts for
+.B days
+days.
+.TP
 .BI to date
 The event lasts until
 .IR date ,
 which should be in the same format as for the date of the event.
-.TP
-.BI for days
-The event lasts for
-.B days
-days.
 
 .SH DATE SPECIFICATION
 
--- a/bdengine.c	Mon Dec 17 11:28:40 2007 +0100
+++ b/bdengine.c	Mon Dec 17 12:14:41 2007 +0100
@@ -33,14 +33,13 @@
 		 date is dd/mm, dd/mm/yy (assumes 20th century!) or dd/mm/yyyy
 		 flags is ONE or ZERO of
 			 o  bd  for a birthday (default)
-			 o  bir for a birthday (exactly equivalent to `bd')
 			 o  ann for an anniversary
 			 o  ev  for an event
 		 and zero or more of
-			 o  w<n> to set the warn-in-advance time to n days (don't include the
+			 o  w <n> to set the warn-in-advance time to n days (don't include the
 	 brackets! :)
-			 o  to<date>
-			 o  for<days>
+			 o  to <date>
+			 o  for <days>
 							 to specify the length of time taken by an event, for example a
 				 holiday.
 
@@ -125,7 +124,6 @@
 	{"bd", F_TBIRTHDAY},
 	{"ann",F_TANNIVERSARY},
 	{"ev", F_TEVENT},
-	{"mes", F_TMESSAGE},
 	{"w",  F_WTIME_P},
 	{"to", F_TODATE},
 	{"for", F_FORDAYS},
@@ -498,17 +496,17 @@
 
 	if (fname[0] == '-' && fname[1] == 0) {
 		/* read from stdin */
-		file=stdin;
+		file = stdin;
 	} else {
 		/* now read it */
-		if((file=fopen(fname, "rt"))==NULL) {
+		if ((file = fopen(fname, "rt")) == NULL) {
 			fprintf(stderr, "Unable to open file \"%s\"\n", fname);
 			exit(1);
 		}
 	}
 
 
-	for (i = 0, evl=NULL; fgets(buf, sizeof(buf), file) != NULL; i++) {
+	for (i = 0, evl = NULL; fgets(buf, sizeof(buf), file) != NULL; i++) {
 		evl = (struct event *) xrealloc(evl, sizeof(struct event) * (i + 1));
 
 		/* ignore comments and empty lines */
@@ -521,6 +519,7 @@
 		ptr = strrchr(buf, '='); /* allow '=' in text */
 
 		/* not a valid line, so ignore it! Cool, huh? */
+		/* Attention: only recognizes lines without '=' */
 		if (ptr == NULL) {
 			fprintf(stderr, "WARNING: Invalid line in input file:\n%s", buf);
 			i--;
@@ -530,52 +529,55 @@
 		*(ptr++) = 0;
 
 		j = sscanf(ptr, "%u-%u-%u", &(evl[i].date.year), &(evl[i].date.month), &(evl[i].date.day));
-		/* if our year is only two digits, add 1900 to it ... */
-		if(evl[i].date.year < 100) evl[i].date.year+=1900;
 		/* ... unless it wasn't read, in which case set it to zero */
-		if(j==2) evl[i].date.year=0;
+		if (j==2) {
+			evl[i].date.year = 0;
+		}
+
 
 		/* parse flags */
 
-		evl[i].warn=iDWarn;
-		evl[i].enddate.day=evl[i].enddate.month=evl[i].enddate.year=0;
+		evl[i].warn = iDWarn;
+		evl[i].enddate.day = 0;
+		evl[i].enddate.month = 0;
+		evl[i].enddate.year = 0;
 
-		flags=j=0;
-		while(j = skptok(j, ptr),ptr[j]!=0) {
-			for (k = 0; FTABLE[k].txt != NULL && strncmp(FTABLE[k].txt, ptr + j, strlen(FTABLE[k].txt)); k++);
+		flags = 0;
+		j = 0;
+
+		while(j = skptok(j, ptr), ptr[j] != 0) {
+			for (k = 0; FTABLE[k].txt != NULL && strncmp(FTABLE[k].txt, ptr + j, strlen(FTABLE[k].txt)); k++) {
+			}
+
 			switch (FTABLE[k].flag) {
-				case F_WTIME_P: /* w<n> -- sets warning time */
+				case F_WTIME_P: /* w <n> -- sets warning time */
 					sscanf(ptr + j, "w %u", &(evl[i].warn));
 					break;
-				case F_FORDAYS: /* for<days> -- sets the duration of the event */
-					sscanf(ptr + j, "for %d", &d);
+				case F_FORDAYS: /* for <days> -- sets the duration of the event */
+					sscanf(ptr + j, "for %u", &d);
 					evl[i].enddate=evl[i].date;
-					for (l=1; l < d; l++) {
+					for (l = 1; l < d; l++) {
 						evl[i].enddate.day++;
-						if (evl[i].enddate.day > mlen(evl[i].enddate.month,
-									evl[i].enddate.year)) {
+						if (evl[i].enddate.day > mlen(evl[i].enddate.month, evl[i].enddate.year)) {
 							evl[i].enddate.month++;
-							evl[i].enddate.day=1;
+							evl[i].enddate.day = 1;
 						}
 						if (evl[i].enddate.month > 12) {
 							evl[i].enddate.year++;
-							evl[i].enddate.month=1;
+							evl[i].enddate.month = 1;
 						}
 					}
 					break;
-				case F_TODATE:
+				case F_TODATE: /* to <date> -- sets the end date of the event */
 					l = sscanf(ptr + j, "to %u-%u-%u", &(evl[i].enddate.year), &(evl[i].enddate.month), &(evl[i].enddate.day));
-					if (evl[i].enddate.year < 100) {
-						evl[i].enddate.year+=1900;
-					}
 					if (l == 2) {
-						evl[i].enddate.year=0;
+						evl[i].enddate.year = 0;
 					}
 					break;
 				case 0:
 					break;
 				default:
-					flags|=FTABLE[k].flag;
+					flags |= FTABLE[k].flag;
 					break;
 			}
 		}
@@ -587,8 +589,8 @@
 			case F_TBIRTHDAY:
 			default: /* assume it's a birthday */
 				if (evl[i].date.year != 0) {
-					int tmp_age=ydelta(evl[i].date, today);
-					if (tmp_age!=1) {
+					int tmp_age = ydelta(evl[i].date, today);
+					if (tmp_age != 1) {
 						sprintf(buf2, "%s is %d years old", buf, tmp_age);
 					} else {
 						sprintf(buf2, "%s is %d year old", buf, tmp_age);
@@ -606,29 +608,20 @@
 				break;
 			case F_TEVENT:
 				/* if a year was specified, and this warning isn't for it, ignore! */
-				if ((evl[i].date.year != 0 && ydelta(evl[i].date, today) != 0) &&
-						(evl[i].enddate.year == 0 || ydelta(evl[i].enddate, today) != 0)) {
+				if ((evl[i].date.year != 0 && ydelta(evl[i].date, today) != 0) && (evl[i].enddate.year == 0 || ydelta(evl[i].enddate, today) != 0)) {
 					i--;
 					continue;
 				}
 				strcpy(buf2, buf);
 				break;
-			case F_TMESSAGE:
-				/* Like an event, except that it only comes up on the given date, and no text at all is appended */
-				if ((evl[i].date.year != 0 && ydelta(evl[i].date, today) != 0) &&
-						(evl[i].enddate.year == 0 || ydelta(evl[i].enddate, today) != 0)) {
-					i--;
-					continue;
-				}
-				strcpy(buf2, buf);
-				evl[i].warn=-1; /* special code! */
-				break;
 		}
 		evl[i].text = strdup(buf2);
 	}
 
 	evl = (struct event *) xrealloc(evl, sizeof(struct event) * (i + 1));
-	evl[i].date.day=evl[i].date.month=evl[i].date.year=0;
+	evl[i].date.day = 0;
+	evl[i].date.month = 0;
+	evl[i].date.year = 0;
 	evl[i].text = (char *) NULL;
 
 	fclose(file);
--- a/birthday.h	Mon Dec 17 11:28:40 2007 +0100
+++ b/birthday.h	Mon Dec 17 12:14:41 2007 +0100
@@ -46,7 +46,6 @@
 #define mlen(m,y) (MLENDAT[(m)-1] != -1 ? MLENDAT[(m)-1] : (isleapyear((y)) ? 29 : 28))
 #define before(a,b) ((a).month < (b).month || ((a).month == (b).month && (a).day < (b).day))
 #define ydelta(a,b) ((int) (b).year - (a).year + before((a),(b)))
-#define warnperiod(ev) ( (ev).warn )
 
 /* -------- modifier flags */
 
@@ -54,7 +53,6 @@
 #define F_TBIRTHDAY 1
 #define F_TANNIVERSARY 2
 #define F_TEVENT 3
-#define F_TMESSAGE 4
 
 /* flags processed immediately on encountering */
 #define F_MIMMEDIATE 0x24