1*d874cce4Sray /* $OpenBSD: main.c,v 1.2 2008/06/26 05:42:05 ray Exp $ */
242a57dcfSmillert /* $NetBSD: main.c,v 1.4 2002/02/21 07:38:18 itojun Exp $ */
342a57dcfSmillert
442a57dcfSmillert /*-
542a57dcfSmillert * Copyright (c) 1998 The NetBSD Foundation, Inc.
642a57dcfSmillert * All rights reserved.
742a57dcfSmillert *
842a57dcfSmillert * Redistribution and use in source and binary forms, with or without
942a57dcfSmillert * modification, are permitted provided that the following conditions
1042a57dcfSmillert * are met:
1142a57dcfSmillert * 1. Redistributions of source code must retain the above copyright
1242a57dcfSmillert * notice, this list of conditions and the following disclaimer.
1342a57dcfSmillert * 2. Redistributions in binary form must reproduce the above copyright
1442a57dcfSmillert * notice, this list of conditions and the following disclaimer in the
1542a57dcfSmillert * documentation and/or other materials provided with the distribution.
1642a57dcfSmillert *
1742a57dcfSmillert * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
1842a57dcfSmillert * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1942a57dcfSmillert * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
2042a57dcfSmillert * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
2142a57dcfSmillert * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2242a57dcfSmillert * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2342a57dcfSmillert * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2442a57dcfSmillert * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2542a57dcfSmillert * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2642a57dcfSmillert * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2742a57dcfSmillert * POSSIBILITY OF SUCH DAMAGE.
2842a57dcfSmillert */
2942a57dcfSmillert #include <err.h>
3042a57dcfSmillert #include <stdio.h>
3142a57dcfSmillert #include <stdlib.h>
3242a57dcfSmillert #include <string.h>
3342a57dcfSmillert #include <time.h>
3442a57dcfSmillert
3542a57dcfSmillert int main(int, char *[]);
3642a57dcfSmillert void die(void);
3742a57dcfSmillert
3842a57dcfSmillert void
die(void)3942a57dcfSmillert die(void)
4042a57dcfSmillert {
4142a57dcfSmillert
4242a57dcfSmillert if (ferror(stdin))
4342a57dcfSmillert err(1, "fgetln");
4442a57dcfSmillert else
4542a57dcfSmillert errx(1, "input is truncated");
4642a57dcfSmillert }
4742a57dcfSmillert
4842a57dcfSmillert int
main(int argc,char * argv[])4942a57dcfSmillert main(int argc, char *argv[])
5042a57dcfSmillert {
5142a57dcfSmillert char *p, *title, *buf, *format;
5242a57dcfSmillert size_t len;
5342a57dcfSmillert struct tm tm;
5442a57dcfSmillert
5542a57dcfSmillert for (;;) {
5642a57dcfSmillert p = fgetln(stdin, &len);
5742a57dcfSmillert if (p == 0)
5842a57dcfSmillert die();
5942a57dcfSmillert title = malloc(len + 1);
6042a57dcfSmillert memcpy(title, p, len);
6142a57dcfSmillert title[len] = '\0';
6242a57dcfSmillert
6342a57dcfSmillert if (!strcmp(title, "EOF\n"))
6442a57dcfSmillert return(0);
6542a57dcfSmillert if (title[0] == '#' || title[0] == '\n') {
6642a57dcfSmillert free(title);
6742a57dcfSmillert continue;
6842a57dcfSmillert }
6942a57dcfSmillert
7042a57dcfSmillert p = fgetln(stdin, &len);
7142a57dcfSmillert if (p == 0)
7242a57dcfSmillert die();
7342a57dcfSmillert buf = malloc(len + 1);
7442a57dcfSmillert memcpy(buf, p, len);
7542a57dcfSmillert buf[len] = '\0';
7642a57dcfSmillert
7742a57dcfSmillert p = fgetln(stdin, &len);
7842a57dcfSmillert if (p == 0)
7942a57dcfSmillert die();
8042a57dcfSmillert format = malloc(len + 1);
8142a57dcfSmillert memcpy(format, p, len);
8242a57dcfSmillert format[len] = '\0';
8342a57dcfSmillert
8442a57dcfSmillert tm.tm_sec = -1;
8542a57dcfSmillert tm.tm_min = -1;
8642a57dcfSmillert tm.tm_hour = -1;
8742a57dcfSmillert tm.tm_mday = -1;
8842a57dcfSmillert tm.tm_mon = -1;
8942a57dcfSmillert tm.tm_year = -1;
9042a57dcfSmillert tm.tm_wday = -1;
9142a57dcfSmillert tm.tm_yday = -1;
9242a57dcfSmillert
9342a57dcfSmillert p = strptime(buf, format, &tm);
9442a57dcfSmillert
9542a57dcfSmillert printf("%s", title);
9642a57dcfSmillert if (p) {
9742a57dcfSmillert printf("succeeded\n");
9842a57dcfSmillert printf("%d %d %d %d %d %d %d %d\n",
9942a57dcfSmillert tm.tm_sec, tm.tm_min, tm.tm_hour, tm.tm_mday,
10042a57dcfSmillert tm.tm_mon, tm.tm_year, tm.tm_wday, tm.tm_yday);
10142a57dcfSmillert printf("%s\n", p);
10242a57dcfSmillert } else {
10342a57dcfSmillert printf("failed\n");
10442a57dcfSmillert }
10542a57dcfSmillert
10642a57dcfSmillert free(title);
10742a57dcfSmillert free(buf);
10842a57dcfSmillert free(format);
10942a57dcfSmillert }
11042a57dcfSmillert }
111