/* * This file is part of rasdaman community. * * Rasdaman community 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. * * Rasdaman community 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 rasdaman community. If not, see . * * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / rasdaman GmbH. * * For more information please see * or contact Peter Baumann via . */ /*------------------------------------------------------------------------*/ /* http-support.c - get and set HTTP date strings. */ /* */ /*------------------------------------------------------------------------*/ /* * RCS: * $RCSfile: http-date.c,v $ $Revision: 1.1 $ $State: Exp $ * $Locker: $ */ #include "defs.h" #include "types.h" #include "protos.h" #include "server.h" #include "http-defs.h" #include "http.h" /****** http-date/HTTP_Date ************************************************** * * NAME * HTTP_Date -- create a HTTP date string. * * SYNOPSIS * rc_t HTTP_Date( char *Buffer, size_t BuffSize ); * * FUNCTION * Creates a date (and time) string as defined in the HTTP * specifications. It uses the `gmtime()' system function to get the * current time in Greenwich Mean Time and creates a date string with * the help of `strftime()'. * * INPUTS * Buffer - a pointer to a buffer for the new string. * BuffSize - size of the Buffer for the date string. * * RESULT * Returns the "OK" status code if it succesfully created the date * string, "ERROR" otherwise. The only reason for this function should * fail, is when the Buffer is not large enough. * As a side effect, if the function succeeds, Buffer will contain the * current time and date in a format conforming to the HTTP * specifications. * * BUGS * Does not check if Buffer is NULL-pointer. * * SEE ALSO * RFC 2068: Hypertext Transfer Protocol -- HTTP/1.1 * ****************************************************************************** * */ rc_t HTTP_Date( char *Buffer, size_t BuffSize ) { time_t systime; time_t *time_ptr; struct tm *tm_ptr; size_t strsize; time_ptr = &systime; time( time_ptr ); /* HTTP Date: "wdy, dd mmm yyyy hh:mm:ss GMT" */ tm_ptr = gmtime( time_ptr ); strsize = strftime( Buffer, BuffSize, "%a, %d %b %Y %H:%M:%S GMT", tm_ptr ); if( strsize == BuffSize ) return( ERROR ); else return( OK ); }