X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fcalendar.c;h=a2bb7e600004c6cd025c90e0c26641e12fe30ce0;hb=81579d9e9f994fb2908f50af41c3eb033d216e58;hp=eb9e67250a733394739f997ab1c7b504627b1b50;hpb=9b94efd7513afdb12a6023024e00e50801532fee;p=pspp-builds.git diff --git a/src/data/calendar.c b/src/data/calendar.c index eb9e6725..a2bb7e60 100644 --- a/src/data/calendar.c +++ b/src/data/calendar.c @@ -1,9 +1,28 @@ +/* PSPP - a program for statistical analysis. + Copyright (C) 2006, 2007, 2008, 2010, 2011 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + #include -#include "calendar.h" + +#include "data/calendar.h" + #include #include -#include -#include + +#include "data/settings.h" +#include "data/val-type.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -52,8 +71,7 @@ raw_gregorian_to_offset (int y, int m, int d) Gregorian calendar. Returns SYSMIS for dates before 14 Oct 1582. */ double -calendar_gregorian_to_offset (int y, int m, int d, - calendar_error_func *error, void *aux) +calendar_gregorian_to_offset (int y, int m, int d, char **errorp) { /* Normalize year. */ if (y >= 0 && y < 100) @@ -78,7 +96,9 @@ calendar_gregorian_to_offset (int y, int m, int d, } else { - error (aux, _("Month %d is not in acceptable range of 0 to 13."), m); + if (errorp != NULL) + *errorp = xasprintf (_("Month %d is not in acceptable range of " + "0 to 13."), m); return SYSMIS; } } @@ -86,19 +106,24 @@ calendar_gregorian_to_offset (int y, int m, int d, /* Normalize day. */ if (d < 0 || d > 31) { - error (aux, _("Day %d is not in acceptable range of 0 to 31."), d); + if (errorp != NULL) + *errorp = xasprintf (_("Day %d is not in acceptable range of " + "0 to 31."), d); return SYSMIS; } /* Validate date. */ if (y < 1582 || (y == 1582 && (m < 10 || (m == 10 && d < 15)))) { - error (aux, _("Date %04d-%d-%d is before the earliest acceptable " - "date of 1582-10-15."), y, m, d); + if (errorp != NULL) + *errorp = xasprintf (_("Date %04d-%d-%d is before the earliest " + "acceptable date of 1582-10-15."), y, m, d); return SYSMIS; } /* Calculate offset. */ + if (errorp != NULL) + *errorp = NULL; return raw_gregorian_to_offset (y, m, d); }