|
version 1.1.2.2, 2013/03/07 15:34:26
|
version 1.1.2.6, 2013/03/07 16:17:20
|
|
Line 1
|
Line 1
|
| |
/************************************************************************* |
| |
* (C) 2013 AITNET ltd - Sofia/Bulgaria - <misho@aitnet.org> |
| |
* by Michael Pounov <misho@elwix.org> |
| |
* |
| |
* $Author$ |
| |
* $Id$ |
| |
* |
| |
************************************************************************** |
| |
The ELWIX and AITNET software is distributed under the following |
| |
terms: |
| |
|
| |
All of the documentation and software included in the ELWIX and AITNET |
| |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
| |
|
| |
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 |
| |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
| |
|
| |
Redistribution and use in source and binary forms, with or 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 Michael Pounov <misho@elwix.org> |
| |
ELWIX - Embedded LightWeight unIX and its contributors. |
| |
4. Neither the name of AITNET nor the names of its contributors |
| |
may be used to endorse or promote products derived from this software |
| |
without specific prior written permission. |
| |
|
| |
THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. |
| |
*/ |
| #include "global.h" |
#include "global.h" |
| |
|
| |
|
|
Line 38 stridx_compare(struct stridx * __restrict a, struct st
|
Line 83 stridx_compare(struct stridx * __restrict a, struct st
|
| } |
} |
| |
|
| static int |
static int |
| search4month(char * __restrict psMonth, int * __restrict id) | search4month(char * psMonth, int * __restrict id) |
| { |
{ |
| static int sorted = 0; |
static int sorted = 0; |
| struct stridx *el; | struct stridx *el, item = { psMonth, 0 }; |
| |
|
| if (!psMonth) |
if (!psMonth) |
| return -1; |
return -1; |
|
Line 53 search4month(char * __restrict psMonth, int * __restri
|
Line 98 search4month(char * __restrict psMonth, int * __restri
|
| } |
} |
| |
|
| str_Lower(psMonth); |
str_Lower(psMonth); |
| el = bsearch(psMonth, months, sizeof(months) / sizeof(struct stridx), sizeof(struct stridx), | el = bsearch(&item, months, sizeof(months) / sizeof(struct stridx), sizeof(struct stridx), |
| (int (*)(const void*, const void*)) stridx_compare); |
(int (*)(const void*, const void*)) stridx_compare); |
| if (el && id) |
if (el && id) |
| *id = el->id; |
*id = el->id; |
|
Line 65 static int
|
Line 110 static int
|
| search4wday(char * __restrict psWDay, int * __restrict id) |
search4wday(char * __restrict psWDay, int * __restrict id) |
| { |
{ |
| static int sorted = 0; |
static int sorted = 0; |
| struct stridx *el; | struct stridx *el, item = { psWDay, 0 }; |
| |
|
| if (!psWDay) |
if (!psWDay) |
| return -1; |
return -1; |
|
Line 77 search4wday(char * __restrict psWDay, int * __restrict
|
Line 122 search4wday(char * __restrict psWDay, int * __restrict
|
| } |
} |
| |
|
| str_Lower(psWDay); |
str_Lower(psWDay); |
| el = bsearch(psWDay, wdays, sizeof(wdays) / sizeof(struct stridx), sizeof(struct stridx), | el = bsearch(&item, wdays, sizeof(wdays) / sizeof(struct stridx), sizeof(struct stridx), |
| (int (*)(const void*, const void*)) stridx_compare); |
(int (*)(const void*, const void*)) stridx_compare); |
| if (el && id) |
if (el && id) |
| *id = el->id; |
*id = el->id; |
|
Line 90 search4wday(char * __restrict psWDay, int * __restrict
|
Line 135 search4wday(char * __restrict psWDay, int * __restrict
|
| * time_Parse() - Parse and make unix time from standart time strings ... |
* time_Parse() - Parse and make unix time from standart time strings ... |
| * |
* |
| * @csTime = Time string |
* @csTime = Time string |
| * return: =0 error or !=0 converted time | * return: =-1 error or !=-1 converted time |
| */ |
*/ |
| time_t |
time_t |
| time_Parse(const char *csTime) |
time_Parse(const char *csTime) |
|
Line 99 time_Parse(const char *csTime)
|
Line 144 time_Parse(const char *csTime)
|
| char *s; |
char *s; |
| int tm_sec, tm_min, tm_hour, tm_mday, tm_year, tm_mon, tm_wday; |
int tm_sec, tm_min, tm_hour, tm_mday, tm_year, tm_mon, tm_wday; |
| char str_mon[512], str_wday[512]; |
char str_mon[512], str_wday[512]; |
| |
time_t tim; |
| |
|
| memset(&tm, 0, sizeof tm); |
memset(&tm, 0, sizeof tm); |
| memset(&str_mon, 0, sizeof str_mon); |
memset(&str_mon, 0, sizeof str_mon); |
|
Line 201 time_Parse(const char *csTime)
|
Line 247 time_Parse(const char *csTime)
|
| tm.tm_min = tm_min; |
tm.tm_min = tm_min; |
| tm.tm_sec = tm_sec; |
tm.tm_sec = tm_sec; |
| tm.tm_year = tm_year; |
tm.tm_year = tm_year; |
| } else | } else { |
| | elwix_SetErr(EINVAL, "Invalid date/time format"); |
| return (time_t) -1; |
return (time_t) -1; |
| |
} |
| |
|
| if (tm.tm_year > 1900) |
if (tm.tm_year > 1900) |
| tm.tm_year -= 1900; |
tm.tm_year -= 1900; |
| else if (tm.tm_year < 70) |
else if (tm.tm_year < 70) |
| tm.tm_year += 100; |
tm.tm_year += 100; |
| |
|
| return timegm(&tm); | if ((tim = timegm(&tm)) == (time_t) -1) |
| | elwix_SetErr(EINVAL, "Invalid date/time format"); |
| | return tim; |
| } |
} |