123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- static const char version[] = "$Id$";
- /*
- * sd_xplatform.c
- *
- * See the COPYING file for the terms of usage and distribution.
- */
- #include <tchar.h>
- #include <stdio.h>
- #include <string.h>
- #include "log4c/defs.h"
- #include "sd_xplatform.h"
- /****************** getopt *******************************/
- #define EOF (-1)
- int sd_opterr = 1;
- int sd_optind = 1;
- int sd_optopt = 0;
- TCHAR *sd_optarg = NULL;
- int _sp = 1;
- #define warn(a,b,c) _ftprintf(stderr,a,b,c)
- void getopt_reset(void)
- {
- sd_opterr = 1;
- sd_optind = 1;
- sd_optopt = 0;
- sd_optarg = NULL;
- _sp = 1;
- }
- int sd_getopt(int argc, TCHAR *const *argv, const TCHAR *opts)
- {
- TCHAR c;
- const TCHAR *cp;
- if (_sp == 1)
- {
- if (sd_optind >= argc || argv[sd_optind][0] != _T('-') || argv[sd_optind] == NULL || argv[sd_optind][1] == _T('\0'))
- return (EOF);
- else if (_tcscmp(argv[sd_optind], _T("--")) == 0)
- {
- sd_optind++;
- return (EOF);
- }
- }
- sd_optopt = c = (unsigned char)argv[sd_optind][_sp];
- if (c == _T(':') || (cp = _tcschr(opts, c)) == NULL)
- {
- if (opts[0] != _T(':'))
- warn(_T("%s: illegal option -- %c\n"), argv[0], c);
- if (argv[sd_optind][++_sp] == _T('\0'))
- {
- sd_optind++;
- _sp = 1;
- }
- return _T('?');
- }
- if (*(cp + 1) == _T(':'))
- {
- if (argv[sd_optind][_sp+1] != _T('\0'))
- sd_optarg = &argv[sd_optind++][_sp+1];
- else if (++sd_optind >= argc)
- {
- if (opts[0] != _T(':'))
- {
- warn(_T("%s: option requires an argument -- %c\n"), argv[0], c);
- }
- _sp = 1;
- sd_optarg = NULL;
- return (opts[0] == _T(':') ? _T(':') : _T('?'));
- }
- else
- sd_optarg = argv[sd_optind++];
- _sp = 1;
- }
- else
- {
- if (argv[sd_optind][++_sp] == _T('\0'))
- {
- _sp = 1;
- sd_optind++;
- }
- sd_optarg = NULL;
- }
- return (c);
- }
- /***************************** gettimeofday *******************/
- #ifdef _WIN32
- #if 0 /* also in winsock[2].h */
- #define _TIMEVAL_DEFINED
- struct timeval {
- long tv_sec;
- long tv_usec;
- long tv_usec;
- };
- #endif /* _TIMEVAL_DEFINED */
- int sd_gettimeofday(LPFILETIME lpft, void* tzp) {
- if (lpft) {
- GetSystemTimeAsFileTime(lpft);
- }
- /* 0 indicates that the call succeeded. */
- return 0;
- }
- #endif /* _WIN32 */
- /*
- * Placeholder for WIN32 version to get last changetime of a file
- */
- #ifdef WIN32
- int sd_stat_ctime(const TCHAR* path, time_t* time)
- {
- return -1;
- }
- #else
- int sd_stat_ctime(const char* path, time_t* time)
- {
- struct stat astat;
- int statret=stat(path,&astat);
- if (0 != statret)
- {
- return statret;
- }
- #ifdef __USE_MISC
- *time=astat.st_ctim.tv_sec;
- #else
- *time=astat.st_ctime;
- #endif
- return statret;
- }
- #endif
|