From: erg Date: Fri, 9 Mar 2007 20:13:16 +0000 (+0000) Subject: Merge functions missing on Windows into standard source files, so it will be X-Git-Tag: LAST_LIBGRAPH~32^2~5648 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ce5a3637325741128d9207af62a575cf5c4ee825;p=graphviz Merge functions missing on Windows into standard source files, so it will be unnecessary to add extra files. --- diff --git a/lib/common/utils.c b/lib/common/utils.c index b2ca7f1e7..624488d0d 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -1689,3 +1689,46 @@ void setEdgeType (graph_t* g, int dflt) GD_flags(g) |= et; } +#ifndef HAVE_STRCASECMP + +#include +#include + + +int strcasecmp(const char *s1, const char *s2) +{ + while ((*s1 != '\0') + && (tolower(*(unsigned char *) s1) == + tolower(*(unsigned char *) s2))) { + s1++; + s2++; + } + + return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2); +} + +#endif /* HAVE_STRCASECMP */ + +#ifndef HAVE_STRNCASECMP + +#include +#include + +int strncasecmp(const char *s1, const char *s2, unsigned int n) +{ + if (n == 0) + return 0; + + while ((n-- != 0) + && (tolower(*(unsigned char *) s1) == + tolower(*(unsigned char *) s2))) { + if (n == 0 || *s1 == '\0' || *s2 == '\0') + return 0; + s1++; + s2++; + } + + return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2); +} + +#endif /* HAVE_STRNCASECMP */ diff --git a/lib/ingraphs/ingraphs.c b/lib/ingraphs/ingraphs.c index fa1506fd1..37aed1993 100644 --- a/lib/ingraphs/ingraphs.c +++ b/lib/ingraphs/ingraphs.c @@ -185,3 +185,78 @@ char *fileName(ingraph_state * sp) } else return ""; } + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef HAVE_GETOPT_H +/* +public domain AT&T getopt source +*/ +#include + +/*LINTLIBRARY*/ + +#if 0 +#define EOF (-1) +#define ERR(s, c) if(opterr){\ + char errbuf[2];\ + errbuf[0] = c; errbuf[1] = '\n';\ + (void) write(2, argv[0], (unsigned)strlen(argv[0]));\ + (void) write(2, s, (unsigned)strlen(s));\ + (void) write(2, errbuf, 2);} +#endif +#define ERR(s, c) if(opterr) fprintf (stderr, "%s%s'%c'\n", argv[0], s, c) + +int opterr = 1; +int optind = 1; +int optopt; +char *optarg; + +int +getopt(int argc, char** argv, char* opts) +{ + static int sp = 1; + register int c; + register char *cp; + + if(sp == 1) { + if(optind >= argc || + argv[optind][0] != '-' || argv[optind][1] == '\0') + return(EOF); + else if(strcmp(argv[optind], "--") == 0) { + optind++; + return(EOF); + } + } + + optopt = c = argv[optind][sp]; + if(c == ':' || (cp=strchr(opts, c)) == 0) { + ERR(": illegal option -- ", c); + if(argv[optind][++sp] == '\0') { + optind++; + sp = 1; + } + return('?'); + } + if(*++cp == ':') { + if(argv[optind][sp+1] != '\0') + optarg = &argv[optind++][sp+1]; + else if(++optind >= argc) { + ERR(": option requires an argument -- ", c); + sp = 1; + return('?'); + } else + optarg = argv[optind++]; + sp = 1; + } else { + if(argv[optind][++sp] == '\0') { + sp = 1; + optind++; + } + optarg = 0; + } + return(c); +} +#endif