version 1.22, 2003/03/13 09:09:29 |
version 1.29, 2005/04/15 14:28:56 |
|
|
* 2. Redistributions in binary form must reproduce the above copyright |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* documentation and/or other materials provided with the distribution. |
* 3. All advertising materials mentioning features or use of this software |
* 3. Neither the name of the University nor the names of its contributors |
* must display the following acknowledgement: |
|
* This product includes software developed by the University of |
|
* California, Berkeley and its contributors. |
|
* 4. Neither the name of the University nor the names of its contributors |
|
* may be used to endorse or promote products derived from this software |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* without specific prior written permission. |
* |
* |
|
|
#if 0 |
#if 0 |
static const char sccsid[] = "@(#)calendar.c 8.3 (Berkeley) 3/25/94"; |
static const char sccsid[] = "@(#)calendar.c 8.3 (Berkeley) 3/25/94"; |
#else |
#else |
static char rcsid[] = "$OpenBSD$"; |
static const char rcsid[] = "$OpenBSD$"; |
#endif |
#endif |
#endif /* not lint */ |
#endif /* not lint */ |
|
|
|
|
char buf[2048 + 1], *prefix = NULL; |
char buf[2048 + 1], *prefix = NULL; |
struct event *events, *cur_evt, *ev1, *tmp; |
struct event *events, *cur_evt, *ev1, *tmp; |
struct match *m; |
struct match *m; |
|
size_t nlen; |
|
|
events = NULL; |
events = NULL; |
cur_evt = NULL; |
cur_evt = NULL; |
|
|
} else |
} else |
bodun_maybe = 0; |
bodun_maybe = 0; |
continue; |
continue; |
} |
} else if (strncmp(buf, "CALENDAR=", 9) == 0) { |
if (bodun_maybe && strncmp(buf, "BODUN=", 6) == 0) { |
char *ep; |
|
|
|
if (buf[9] == '\0') |
|
calendar = 0; |
|
else if (!strcasecmp(buf + 9, "julian")) { |
|
calendar = JULIAN; |
|
errno = 0; |
|
julian = strtoul(buf + 14, &ep, 10); |
|
if (buf[0] == '\0' || *ep != '\0') |
|
julian = 13; |
|
if ((errno == ERANGE && julian == ULONG_MAX) || |
|
julian > 14) |
|
errx(1, "Julian calendar offset is too large"); |
|
} else if (!strcasecmp(buf + 9, "gregorian")) |
|
calendar = GREGORIAN; |
|
else if (!strcasecmp(buf + 9, "lunar")) |
|
calendar = LUNAR; |
|
} else if (bodun_maybe && strncmp(buf, "BODUN=", 6) == 0) { |
bodun++; |
bodun++; |
if (prefix) |
if (prefix) |
free(prefix); |
free(prefix); |
if ((prefix = strdup(buf + 6)) == NULL) |
if ((prefix = strdup(buf + 6)) == NULL) |
err(1, NULL); |
err(1, NULL); |
|
continue; |
} |
} |
/* User defined names for special events */ |
/* User defined names for special events */ |
if ((p = strchr(buf, '='))) { |
if ((p = strchr(buf, '='))) { |
|
|
int len = l1 + l2 + 2; |
int len = l1 + l2 + 2; |
if ((cur_evt->ldesc = |
if ((cur_evt->ldesc = |
malloc(len)) == NULL) |
malloc(len)) == NULL) |
err(1, "malloc"); |
err(1, NULL); |
snprintf(cur_evt->ldesc, len, |
snprintf(cur_evt->ldesc, len, |
"\t%s %s", prefix, p + 1); |
"\t%s %s", prefix, p + 1); |
} else if ((cur_evt->ldesc = |
} else if ((cur_evt->ldesc = |
|
|
} |
} |
} |
} |
else if (printing) { |
else if (printing) { |
if ((ev1->ldesc = realloc(ev1->ldesc, |
nlen = strlen(ev1->ldesc) + strlen(buf) + 2; |
(2 + strlen(ev1->ldesc) + strlen(buf)))) == NULL) |
if ((ev1->ldesc = realloc(ev1->ldesc, nlen)) == NULL) |
err(1, NULL); |
err(1, NULL); |
strcat(ev1->ldesc, "\n"); |
snprintf(ev1->ldesc, nlen, "%s\n%s", ev1->ldesc, buf); |
strcat(ev1->ldesc, buf); |
|
} |
} |
} |
} |
tmp = events; |
tmp = events; |
|
|
(void)dup2(fderr, STDERR_FILENO); |
(void)dup2(fderr, STDERR_FILENO); |
(void)close(fderr); |
(void)close(fderr); |
} |
} |
execl(_PATH_CPP, "cpp", "-P", "-I.", _PATH_INCLUDE, (char *)NULL); |
execl(_PATH_CPP, "cpp", "-traditional", "-undef", "-U__GNUC__", |
|
"-P", "-I.", _PATH_INCLUDE, (char *)NULL); |
warn(_PATH_CPP); |
warn(_PATH_CPP); |
_exit(1); |
_exit(1); |
} |
} |