123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- static const char version[] = "$Id$";
- /*
- * sd_xplatform.c
- *
- * See the COPYING file for the terms of usage and distribution.
- */
- #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;
- char *sd_optarg = NULL;
- int _sp = 1;
-
- #define warn(a,b,c)fprintf(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, char *const *argv, const char *opts)
- {
- char c;
- const char *cp;
-
- if (_sp == 1) {
- if (sd_optind >= argc || argv[sd_optind][0] != '-' ||
- argv[sd_optind] == NULL || argv[sd_optind][1] == '\0')
- return (EOF);
- else if (strcmp(argv[sd_optind], "--") == 0) {
- sd_optind++;
- return (EOF);
- }
- }
- sd_optopt = c = (unsigned char)argv[sd_optind][_sp];
- if (c == ':' || (cp = strchr(opts, c)) == NULL) {
- if (opts[0] != ':')
- warn("%s: illegal option -- %c\n", argv[0], c);
- if (argv[sd_optind][++_sp] == '\0') {
- sd_optind++;
- _sp = 1;
- }
- return ('?');
- }
-
- if (*(cp + 1) == ':') {
- if (argv[sd_optind][_sp+1] != '\0')
- sd_optarg = &argv[sd_optind++][_sp+1];
- else if (++sd_optind >= argc) {
- if (opts[0] != ':') {
- warn("%s: option requires an argument"
- " -- %c\n", argv[0], c);
- }
- _sp = 1;
- sd_optarg = NULL;
- return (opts[0] == ':' ? ':' : '?');
- } else
- sd_optarg = argv[sd_optind++];
- _sp = 1;
- } else {
- if (argv[sd_optind][++_sp] == '\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 char* 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
|