Date: Wed, 26 Mar 1997 14:49:40 +0100 From: Marc van Kempen <marc@bowtie.nl> To: ports@freebsd.org Subject: strptime code for msql port Message-ID: <199703261349.OAA17244@nietzsche.bowtie.nl>
next in thread | raw e-mail | index | archive | help
------- Forwarded Message Return-Path: owner-msql-list@Bunyip.Com Received: from Bunyip.Com (uucp@localhost) by nietzsche.bowtie.nl (8.8.2/8.7.3) with UUCP id MAA15249 for bowtie.nl!marc; Wed, 26 Mar 1997 12:05:21 +0100 (MET) Received: from services.bunyip.com (services.Bunyip.Com [192.77.55.2]) by news.IAEhv.nl (8.6.13/1.63) with ESMTP; pid 3733 on Wed, 26 Mar 1997 12:04:29 +0100; id MAA03733 efrom: owner-msql-list@Bunyip.Com; eto: <marc@bowtie.nl> Received: (from daemon@localhost) by services.bunyip.com (8.8.5/8.8.5) id AAA05345 for msql-list-out; Wed, 26 Mar 1997 00:57:31 -0500 (EST) Received: from mocha.bunyip.com (mocha.Bunyip.Com [192.197.208.1]) by services.bunyip.com (8.8.5/8.8.5) with SMTP id AAA05340 for <msql-list@services.bunyip.com>; Wed, 26 Mar 1997 00:57:26 -0500 (EST) Received: from mongkok.hk.super.net by mocha.bunyip.com with SMTP (5.65a/IDA-1.4.2b/CC-Guru-2b) id AA25291 (mail destined for msql-list@services.bunyip.com); Wed, 26 Mar 97 00:57:21 -0500 Received: from is2.hk.super.net (root@is2.hk.super.net [202.14.67.237]) by mongkok.hk.super.net (8.8.5/8.8.5) with ESMTP id NAA29921; Wed, 26 Mar 1997 13:56:52 +0800 (HKT) Received: from 202.14.67.4.hk.super.net ([202.64.128.103]) by is2.hk.super.net (8.8.5/8.8.5) with SMTP id NAA14821; Wed, 26 Mar 1997 13:56:48 +0800 (HKT) Message-Id: <33399C2C.5130@hk.super.net> Date: Wed, 26 Mar 1997 13:59:08 -0800 From: Kenneth LO <kenlo@HK.Super.Net> X-Mailer: Mozilla 3.01Gold (Win95; I) Mime-Version: 1.0 To: msql-list@Bunyip.Com Cc: yegor@grn4.recyclenet.com Subject: Re: [mSQL] strpbrk source needed to compile B5 version References: <Pine.BSF.3.91.970325081213.2129A-100000@grn4.recyclenet.com> Content-Type: multipart/mixed; boundary="------------72FF4E434AC6" Sender: owner-msql-list@Bunyip.Com Precedence: bulk Reply-To: msql-list@Bunyip.Com Errors-To: owner-msql-list@Bunyip.Com This is a multi-part message in MIME format. - --------------72FF4E434AC6 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Yegor Sinelnikov wrote: > > The compilation fails because in my compiler version there is no strptime > function. It is referenced in the following file: ... > I will be very glad if someone could send me a code of this function or Code attached. - --------------72FF4E434AC6 Content-Type: text/plain; charset=us-ascii; name="strptime.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="strptime.c" /* * Copyright (c) 1994 Powerdog Industries. All rights reserved. * * Redistribution and use in source and binary forms, without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgement: * This product includes software developed by Powerdog Industries. * 4. The name of Powerdog Industries may not be used to endorse or * promote products derived from this software without specific prior * written permission. * * THIS SOFTWARE IS PROVIDED BY POWERDOG INDUSTRIES ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE POWERDOG INDUSTRIES BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef lint static char copyright[] = "@(#) Copyright (c) 1994 Powerdog Industries. All rights reserved."; static char sccsid[] = "@(#)strptime.c 0.1 (Powerdog) 94/03/27"; #endif /* not lint */ #include <time.h> #include <ctype.h> #include <locale.h> #include <string.h> #define asizeof(a) (sizeof (a) / sizeof ((a)[0])) /* #ifndef sun */ struct dtconv { char *abbrev_month_names[12]; char *month_names[12]; char *abbrev_weekday_names[7]; char *weekday_names[7]; char *time_format; char *sdate_format; char *dtime_format; char *am_string; char *pm_string; char *ldate_format; }; /* #endif */ static struct dtconv En_US = { { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }, { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }, { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }, { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }, "%H:%M:%S", "%m/%d/%y", "%a %b %e %T %Z %Y", "AM", "PM", "%A, %B, %e, %Y" }; #ifdef SUNOS4 extern int strncasecmp(); #endif char * strptime(char *buf, char *fmt, struct tm *tm) { char c, *ptr; int i, len; ptr = fmt; while (*ptr != 0) { if (*buf == 0) break; c = *ptr++; if (c != '%') { if (isspace(c)) while (*buf != 0 && isspace(*buf)) buf++; else if (c != *buf++) return 0; continue; } c = *ptr++; switch (c) { case 0: case '%': if (*buf++ != '%') return 0; break; case 'C': buf = strptime(buf, En_US.ldate_format, tm); if (buf == 0) return 0; break; case 'c': buf = strptime(buf, "%x %X", tm); if (buf == 0) return 0; break; case 'D': buf = strptime(buf, "%m/%d/%y", tm); if (buf == 0) return 0; break; case 'R': buf = strptime(buf, "%H:%M", tm); if (buf == 0) return 0; break; case 'r': buf = strptime(buf, "%I:%M:%S %p", tm); if (buf == 0) return 0; break; case 'T': buf = strptime(buf, "%H:%M:%S", tm); if (buf == 0) return 0; break; case 'X': buf = strptime(buf, En_US.time_format, tm); if (buf == 0) return 0; break; case 'x': buf = strptime(buf, En_US.sdate_format, tm); if (buf == 0) return 0; break; case 'j': if (!isdigit(*buf)) return 0; for (i = 0; *buf != 0 && isdigit(*buf); buf++) { i *= 10; i += *buf - '0'; } if (i > 365) return 0; tm->tm_yday = i; break; case 'M': case 'S': if (*buf == 0 || isspace(*buf)) break; if (!isdigit(*buf)) return 0; for (i = 0; *buf != 0 && isdigit(*buf); buf++) { i *= 10; i += *buf - '0'; } if (i > 59) return 0; if (c == 'M') tm->tm_min = i; else tm->tm_sec = i; if (*buf != 0 && isspace(*buf)) while (*ptr != 0 && !isspace(*ptr)) ptr++; break; case 'H': case 'I': case 'k': case 'l': if (!isdigit(*buf)) return 0; for (i = 0; *buf != 0 && isdigit(*buf); buf++) { i *= 10; i += *buf - '0'; } if (c == 'H' || c == 'k') { if (i > 23) return 0; } else if (i > 11) return 0; tm->tm_hour = i; if (*buf != 0 && isspace(*buf)) while (*ptr != 0 && !isspace(*ptr)) ptr++; break; case 'p': len = strlen(En_US.am_string); if (strncasecmp(buf, En_US.am_string, len) == 0) { if (tm->tm_hour > 12) return 0; if (tm->tm_hour == 12) tm->tm_hour = 0; buf += len; break; } len = strlen(En_US.pm_string); if (strncasecmp(buf, En_US.pm_string, len) == 0) { if (tm->tm_hour > 12) return 0; if (tm->tm_hour != 12) tm->tm_hour += 12; buf += len; break; } return 0; case 'A': case 'a': for (i = 0; i < asizeof(En_US.weekday_names); i++) { len = strlen(En_US.weekday_names[i]); if (strncasecmp(buf, En_US.weekday_names[i], len) == 0) break; len = strlen(En_US.abbrev_weekday_names[i]); if (strncasecmp(buf, En_US.abbrev_weekday_names[i], len) == 0) break; } if (i == asizeof(En_US.weekday_names)) return 0; tm->tm_wday = i; buf += len; break; case 'd': case 'e': if (!isdigit(*buf)) return 0; for (i = 0; *buf != 0 && isdigit(*buf); buf++) { i *= 10; i += *buf - '0'; } if (i > 31) return 0; tm->tm_mday = i; if (*buf != 0 && isspace(*buf)) while (*ptr != 0 && !isspace(*ptr)) ptr++; break; case 'B': case 'b': case 'h': for (i = 0; i < asizeof(En_US.month_names); i++) { len = strlen(En_US.month_names[i]); if (strncasecmp(buf, En_US.month_names[i], len) == 0) break; len = strlen(En_US.abbrev_month_names[i]); if (strncasecmp(buf, En_US.abbrev_month_names[i], len) == 0) break; } if (i == asizeof(En_US.month_names)) return 0; tm->tm_mon = i; buf += len; break; case 'm': if (!isdigit(*buf)) return 0; for (i = 0; *buf != 0 && isdigit(*buf); buf++) { i *= 10; i += *buf - '0'; } if (i < 1 || i > 12) return 0; tm->tm_mon = i - 1; if (*buf != 0 && isspace(*buf)) while (*ptr != 0 && !isspace(*ptr)) ptr++; break; case 'Y': case 'y': if (*buf == 0 || isspace(*buf)) break; if (!isdigit(*buf)) return 0; for (i = 0; *buf != 0 && isdigit(*buf); buf++) { i *= 10; i += *buf - '0'; } if (c == 'Y') i -= 1900; if (i < 0) return 0; tm->tm_year = i; if (*buf != 0 && isspace(*buf)) while (*ptr != 0 && !isspace(*ptr)) ptr++; break; } } return buf; } - --------------72FF4E434AC6-- - -------------------------------------------------------------------------- To remove yourself from the Mini SQL mailing list send a message containing "unsubscribe" to msql-list-request@bunyip.com. Send a message containing "info msql-list" to majordomo@bunyip.com for info on monthly archives of the list. For more help, mail owner-msql-list@bunyip.com NOT the msql-list! ------- End of Forwarded Message ---------------------------------------------------- Marc van Kempen BowTie Technology Email: marc@bowtie.nl WWW & Databases tel. +31 40 2 43 20 65 fax. +31 40 2 44 21 86 http://www.bowtie.nl ----------------------------------------------------
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703261349.OAA17244>