- Completely removed config.h generation file, as it was not used anywere in the code - Removed all the old build files and switched to CMake (3.0+) - As tl-parser only uses zlib for crc32, removing the dependency makes the CMake file easier to maintain and makes the code building without third party code. The crc32 implementation was taken from abb3e47a984c2cc126522c48bd9c3b60ad14a46c.
82 lines
1.5 KiB
C
82 lines
1.5 KiB
C
/*
|
|
POSIX getopt for Windows
|
|
|
|
AT&T Public License
|
|
|
|
Code given out at the 1985 UNIFORUM conference in Dallas.
|
|
*/
|
|
|
|
#ifndef __GNUC__
|
|
|
|
#include "wingetopt.h"
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#ifndef NULL
|
|
#define NULL 0
|
|
#endif
|
|
#define EOF (-1)
|
|
#define ERR(s, c) if(opterr){\
|
|
char errbuf[2];\
|
|
errbuf[0] = c; errbuf[1] = '\n';\
|
|
fputs(argv[0], stderr);\
|
|
fputs(s, stderr);\
|
|
fputc(c, stderr);}
|
|
//(void) write(2, argv[0], (unsigned)strlen(argv[0]));\
|
|
//(void) write(2, s, (unsigned)strlen(s));\
|
|
//(void) write(2, errbuf, 2);}
|
|
|
|
int opterr = 1;
|
|
int optind = 1;
|
|
int optopt;
|
|
char *optarg;
|
|
|
|
int
|
|
getopt(argc, argv, opts)
|
|
int argc;
|
|
char **argv, *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], "--") == (int)NULL) {
|
|
optind++;
|
|
return(EOF);
|
|
}
|
|
optopt = c = argv[optind][sp];
|
|
if (c == ':' || (cp = strchr(opts, c)) == NULL) {
|
|
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 = NULL;
|
|
}
|
|
return(c);
|
|
}
|
|
|
|
#endif /* __GNUC__ */ |