mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-02-04 00:24:20 +03:00
Utils: Split time handling functions out of utils.c
into time.c
.
This commit is contained in:
parent
0e76523e4c
commit
4394587ab0
@ -1,8 +1,26 @@
|
||||
# utils sources
|
||||
|
||||
S_UTILS := base64.c corestrings.c filename.c filepath.c hashtable.c \
|
||||
libdom.c locale.c log.c messages.c nsurl.c talloc.c url.c \
|
||||
utf8.c utils.c useragent.c bloom.c nsoption.c file.c idna.c \
|
||||
punycode.c
|
||||
S_UTILS := \
|
||||
base64.c \
|
||||
bloom.c \
|
||||
corestrings.c \
|
||||
file.c \
|
||||
filename.c \
|
||||
filepath.c \
|
||||
hashtable.c \
|
||||
idna.c \
|
||||
libdom.c \
|
||||
locale.c \
|
||||
log.c \
|
||||
messages.c \
|
||||
nsoption.c \
|
||||
nsurl.c \
|
||||
punycode.c \
|
||||
talloc.c \
|
||||
time.c \
|
||||
url.c \
|
||||
useragent.c \
|
||||
utf8.c \
|
||||
utils.c
|
||||
|
||||
S_UTILS := $(addprefix utils/,$(S_UTILS))
|
||||
|
132
utils/time.c
Normal file
132
utils/time.c
Normal file
@ -0,0 +1,132 @@
|
||||
/*
|
||||
* Copyright 2007 Rob Kendrick <rjek@netsurf-browser.org>
|
||||
* Copyright 2004-2007 James Bursa <bursa@users.sourceforge.net>
|
||||
* Copyright 2003 Phil Mellor <monkeyson@users.sourceforge.net>
|
||||
* Copyright 2003 John M Bell <jmb202@ecs.soton.ac.uk>
|
||||
* Copyright 2004 John Tytgat <joty@netsurf-browser.org>
|
||||
*
|
||||
* This file is part of NetSurf, http://www.netsurf-browser.org/
|
||||
*
|
||||
* NetSurf 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; version 2 of the License.
|
||||
*
|
||||
* NetSurf 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file utils/time.c
|
||||
* \brief Implementation of time operations.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <curl/curl.h>
|
||||
|
||||
#include "utils/errors.h"
|
||||
#include "utils/time.h"
|
||||
|
||||
|
||||
/* exported interface documented in utils/time.h */
|
||||
const char *rfc1123_date(time_t t)
|
||||
{
|
||||
static char ret[30];
|
||||
|
||||
struct tm *tm = gmtime(&t);
|
||||
const char *days[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" },
|
||||
*months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
||||
|
||||
snprintf(ret, sizeof ret, "%s, %02d %s %d %02d:%02d:%02d GMT",
|
||||
days[tm->tm_wday], tm->tm_mday, months[tm->tm_mon],
|
||||
tm->tm_year + 1900, tm->tm_hour, tm->tm_min,
|
||||
tm->tm_sec);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* exported function documented in utils/time.h */
|
||||
int nsc_sntimet(char *str, size_t size, time_t *timep)
|
||||
{
|
||||
#ifndef HAVE_STRFTIME
|
||||
long long val;
|
||||
val = (long long)*timep;
|
||||
|
||||
return snprintf(str, size, "%lld", val);
|
||||
#else
|
||||
struct tm *ltm;
|
||||
|
||||
ltm = localtime(timep);
|
||||
if (ltm == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return strftime(str, size, "%s", ltm);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* exported function documented in utils/time.h */
|
||||
nserror nsc_snptimet(const char *str, size_t size, time_t *timep)
|
||||
{
|
||||
time_t time_out;
|
||||
|
||||
#ifndef HAVE_STRPTIME
|
||||
char *rstr;
|
||||
|
||||
if (size < 1) {
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
time_out = (time_t)strtoll(str, &rstr, 10);
|
||||
|
||||
/* The conversion may have a range faliure or no digits were found */
|
||||
if ((errno != 0) || (rstr == str)) {
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
#else
|
||||
struct tm ltm;
|
||||
|
||||
if (size < 1) {
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
if (strptime(str, "%s", <m) == NULL) {
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
time_out = mktime(<m);
|
||||
|
||||
#endif
|
||||
*timep = time_out;
|
||||
|
||||
return NSERROR_OK;
|
||||
}
|
||||
|
||||
|
||||
/* exported function documented in utils/time.h */
|
||||
nserror nsc_strntimet(const char *str, size_t size, time_t *timep)
|
||||
{
|
||||
time_t result;
|
||||
|
||||
result = curl_getdate(str, NULL);
|
||||
|
||||
if (result == -1) {
|
||||
return NSERROR_INVALID;
|
||||
}
|
||||
|
||||
*timep = result;
|
||||
|
||||
return NSERROR_OK;
|
||||
}
|
107
utils/utils.c
107
utils/utils.c
@ -21,24 +21,12 @@
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <curl/curl.h>
|
||||
|
||||
#include "utils/config.h"
|
||||
#include "utils/log.h"
|
||||
#include "utils/messages.h"
|
||||
#include "utils/utf8.h"
|
||||
#include "utils/time.h"
|
||||
#include "utils/sys_time.h"
|
||||
#include "utils/inet.h"
|
||||
#include "utils/dirent.h"
|
||||
#include "utils/string.h"
|
||||
#include "utils/utils.h"
|
||||
@ -249,25 +237,6 @@ char *human_friendly_bytesize(unsigned long bsize) {
|
||||
}
|
||||
|
||||
|
||||
/* exported interface documented in utils/utils.h */
|
||||
const char *rfc1123_date(time_t t)
|
||||
{
|
||||
static char ret[30];
|
||||
|
||||
struct tm *tm = gmtime(&t);
|
||||
const char *days[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" },
|
||||
*months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
||||
|
||||
snprintf(ret, sizeof ret, "%s, %02d %s %d %02d:%02d:%02d GMT",
|
||||
days[tm->tm_wday], tm->tm_mday, months[tm->tm_mon],
|
||||
tm->tm_year + 1900, tm->tm_hour, tm->tm_min,
|
||||
tm->tm_sec);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
#ifndef HAVE_STRCASESTR
|
||||
|
||||
/**
|
||||
@ -501,79 +470,3 @@ int inet_pton(int af, const char *src, void *dst)
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/* exported function documented in utils/time.h */
|
||||
int nsc_sntimet(char *str, size_t size, time_t *timep)
|
||||
{
|
||||
#ifndef HAVE_STRFTIME
|
||||
long long val;
|
||||
val = (long long)*timep;
|
||||
|
||||
return snprintf(str, size, "%lld", val);
|
||||
#else
|
||||
struct tm *ltm;
|
||||
|
||||
ltm = localtime(timep);
|
||||
if (ltm == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return strftime(str, size, "%s", ltm);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* exported function documented in utils/time.h */
|
||||
nserror nsc_snptimet(const char *str, size_t size, time_t *timep)
|
||||
{
|
||||
time_t time_out;
|
||||
|
||||
#ifndef HAVE_STRPTIME
|
||||
char *rstr;
|
||||
|
||||
if (size < 1) {
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
time_out = (time_t)strtoll(str, &rstr, 10);
|
||||
|
||||
/* The conversion may have a range faliure or no digits were found */
|
||||
if ((errno != 0) || (rstr == str)) {
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
#else
|
||||
struct tm ltm;
|
||||
|
||||
if (size < 1) {
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
if (strptime(str, "%s", <m) == NULL) {
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
time_out = mktime(<m);
|
||||
|
||||
#endif
|
||||
*timep = time_out;
|
||||
|
||||
return NSERROR_OK;
|
||||
}
|
||||
|
||||
|
||||
/* exported function documented in utils/time.h */
|
||||
nserror nsc_strntimet(const char *str, size_t size, time_t *timep)
|
||||
{
|
||||
time_t result;
|
||||
|
||||
result = curl_getdate(str, NULL);
|
||||
|
||||
if (result == -1) {
|
||||
return NSERROR_INVALID;
|
||||
}
|
||||
|
||||
*timep = result;
|
||||
|
||||
return NSERROR_OK;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user