blob: a90ecf7e5f886ba7fc20ccc1aad2334387d72767 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
/*
* Implementation of things missing in Windows
*/
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#undef ntohs
#undef ntohl
#undef htonl
#ifdef WINDOWS_FUNCTIONS
/* byte order */
static unsigned short StoM(unsigned short inv) {
union iconv {
unsigned short ui;
unsigned char uc[2];
} *inp, outv;
inp = (union iconv *)&inv;
outv.uc[0] = inp->uc[1];
outv.uc[1] = inp->uc[0];
return (outv.ui);
}
static unsigned int ItoM(unsigned int inv) {
union iconv {
unsigned int ui;
unsigned char uc[4];
} *inp, outv;
inp = (union iconv *)&inv;
outv.uc[0] = inp->uc[3];
outv.uc[1] = inp->uc[2];
outv.uc[2] = inp->uc[1];
outv.uc[3] = inp->uc[0];
return (outv.ui);
}
unsigned short ntohs(unsigned short inv) { return StoM(inv); }
unsigned long ntohl(unsigned long inv) { return ItoM(inv); }
unsigned long htonl(unsigned long inv) { return ItoM(inv); }
char *optarg;
int optind=1;
char getopt(int argc, char **argv, char *args) {
int n,nlen=strlen(args),nLen=0;
char nCmd;
if (argv[optind] && *argv[optind]=='-') {
nCmd=*((argv[optind]+1));
for (n=0;n<nlen;n++) {
if (args[n] == ':') continue;
if (args[n] == nCmd) {
if (args[n+1]==':') {
char retVal;
retVal=*(argv[optind]+1);
optarg=argv[optind+1];
if (!optarg) optarg="";
optind+=2;
return retVal;
} else {
char retVal;
retVal=*(argv[optind]+1);
optarg=NULL;
optind+=1;
return retVal;
}
}
}
}
return -1;
}
#else
unsigned short ntohs(unsigned short inv);
unsigned long ntohl(unsigned long inv);
unsigned long htonl(unsigned long inv);
extern char *optarg;
extern int optind;
char getopt(int argc, char **argv, char *args);
#endif
|