# HG changeset patch # User meillo@marmaro.de # Date 1197890081 -3600 # Node ID 5326c222cd4e0b8101512d97e5ae4f691c583d6e # Parent dc2f94280b01c977e3beadcf06884e7ab00bb010 removed MESSAGE; code beautifing workaround for MESSAGE: use an event with warn 0 (message=yyyy-mm-dd w 0) diff -r dc2f94280b01 -r 5326c222cd4e bday.1 --- 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 diff -r dc2f94280b01 -r 5326c222cd4e bdengine.c --- 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 to set the warn-in-advance time to n days (don't include the + o w to set the warn-in-advance time to n days (don't include the brackets! :) - o to - o for + o to + o for 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 -- sets warning time */ + case F_WTIME_P: /* w -- sets warning time */ sscanf(ptr + j, "w %u", &(evl[i].warn)); break; - case F_FORDAYS: /* for -- sets the duration of the event */ - sscanf(ptr + j, "for %d", &d); + case F_FORDAYS: /* for -- 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 -- 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); diff -r dc2f94280b01 -r 5326c222cd4e birthday.h --- 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