remove a few gcc 4 warnings
work around freebsd 5.4 brokenness (if you don't have IPv6 in the kernel, socket(PF_INET6,SOCK_STREAM,0) returns EPROTONOSUPPORT instead of EPFNOSUPPORT, which basically says "yeah, I know IPv6, but TCP? never heard of it")
This commit is contained in:
parent
e62f4901c8
commit
6196f771cd
5
CHANGES
5
CHANGES
@ -4,6 +4,11 @@
|
|||||||
optimize fmt_base64 (Dan Gundlach)
|
optimize fmt_base64 (Dan Gundlach)
|
||||||
gcc 4 cleanups (mostly unsigned char* vs char*)
|
gcc 4 cleanups (mostly unsigned char* vs char*)
|
||||||
fix scan_xlong, scan_xlonglong and scan_8long
|
fix scan_xlong, scan_xlonglong and scan_8long
|
||||||
|
remove a few gcc 4 warnings
|
||||||
|
work around freebsd 5.4 brokenness (if you don't have IPv6 in the
|
||||||
|
kernel, socket(PF_INET6,SOCK_STREAM,0) returns EPROTONOSUPPORT
|
||||||
|
instead of EPFNOSUPPORT, which basically says "yeah, I know IPv6,
|
||||||
|
but TCP? never heard of it")
|
||||||
|
|
||||||
0.22:
|
0.22:
|
||||||
uh, the scope_id detection #defined the wrong constant. libowfat
|
uh, the scope_id detection #defined the wrong constant. libowfat
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
int buffer_get(buffer* b,char* x,unsigned long int len) {
|
int buffer_get(buffer* b,char* x,unsigned long int len) {
|
||||||
int blen;
|
int blen;
|
||||||
if ((blen=buffer_feed(b))>=len)
|
if ((blen=buffer_feed(b))<0) return blen;
|
||||||
|
if ((unsigned long int) blen>=len)
|
||||||
blen=len;
|
blen=len;
|
||||||
if (blen<=0) return blen;
|
|
||||||
byte_copy(x,blen,b->x+b->p);
|
byte_copy(x,blen,b->x+b->p);
|
||||||
b->p+=blen;
|
b->p+=blen;
|
||||||
return blen;
|
return blen;
|
||||||
|
@ -10,8 +10,8 @@ static stralloc data = {0};
|
|||||||
|
|
||||||
static int init(char ip[256])
|
static int init(char ip[256])
|
||||||
{
|
{
|
||||||
int i;
|
unsigned long int i;
|
||||||
int j;
|
unsigned long int j;
|
||||||
int iplen = 0;
|
int iplen = 0;
|
||||||
char *x;
|
char *x;
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ static int init(char ip[256])
|
|||||||
|
|
||||||
if (!iplen) {
|
if (!iplen) {
|
||||||
i = openreadclose("/etc/resolv.conf",&data,64);
|
i = openreadclose("/etc/resolv.conf",&data,64);
|
||||||
if (i == -1) return -1;
|
if (i == (unsigned long int)-1) return -1;
|
||||||
if (i) {
|
if (i) {
|
||||||
if (!stralloc_append(&data,"\n")) return -1;
|
if (!stralloc_append(&data,"\n")) return -1;
|
||||||
i = 0;
|
i = 0;
|
||||||
|
@ -11,7 +11,7 @@ int socket_accept4(int s,char *ip,uint16 *port) {
|
|||||||
struct sockaddr_in si;
|
struct sockaddr_in si;
|
||||||
socklen_t len = sizeof si;
|
socklen_t len = sizeof si;
|
||||||
int fd;
|
int fd;
|
||||||
if ((fd=accept(s,(struct sockaddr*) &si,&len))==-1)
|
if ((fd=accept(s,(void*) &si,&len))==-1)
|
||||||
return winsock2errno(-1);
|
return winsock2errno(-1);
|
||||||
*(uint32*)ip = *(uint32*)&si.sin_addr;
|
*(uint32*)ip = *(uint32*)&si.sin_addr;
|
||||||
uint16_unpack_big((char *) &si.sin_port,port);
|
uint16_unpack_big((char *) &si.sin_port,port);
|
||||||
|
@ -36,7 +36,7 @@ int socket_connect6(int s,const char ip[16],uint16 port,uint32 scope_id)
|
|||||||
#endif
|
#endif
|
||||||
byte_copy((char *) &sa.sin6_addr,16,ip);
|
byte_copy((char *) &sa.sin6_addr,16,ip);
|
||||||
|
|
||||||
return winsock2errno(connect(s,(struct sockaddr *) &sa,sizeof sa));
|
return winsock2errno(connect(s,(void*) &sa,sizeof sa));
|
||||||
#else
|
#else
|
||||||
errno=EPROTONOSUPPORT;
|
errno=EPROTONOSUPPORT;
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -22,10 +22,10 @@ int socket_local6(int s,char ip[16],uint16 *port,uint32 *scope_id)
|
|||||||
#endif
|
#endif
|
||||||
socklen_t len = sizeof si;
|
socklen_t len = sizeof si;
|
||||||
|
|
||||||
if (getsockname(s,(struct sockaddr *) &si,&len) == -1) return winsock2errno(-1);
|
if (getsockname(s,(void*) &si,&len) == -1) return winsock2errno(-1);
|
||||||
#ifdef LIBC_HAS_IP6
|
#ifdef LIBC_HAS_IP6
|
||||||
if (si.sin6_family==AF_INET) {
|
if (si.sin6_family==AF_INET) {
|
||||||
struct sockaddr_in *si4=(struct sockaddr_in*)&si;
|
struct sockaddr_in *si4=(void*)&si;
|
||||||
if (ip) {
|
if (ip) {
|
||||||
byte_copy(ip,12,V4mappedprefix);
|
byte_copy(ip,12,V4mappedprefix);
|
||||||
byte_copy(ip+12,4,(char *) &si4->sin_addr);
|
byte_copy(ip+12,4,(char *) &si4->sin_addr);
|
||||||
|
@ -15,5 +15,5 @@ int socket_send4(int s,const char *buf,unsigned int len,const char ip[4],uint16
|
|||||||
si.sin_family = AF_INET;
|
si.sin_family = AF_INET;
|
||||||
uint16_pack_big((char*) &si.sin_port,port);
|
uint16_pack_big((char*) &si.sin_port,port);
|
||||||
*((uint32*)&si.sin_addr) = *((uint32*)ip);
|
*((uint32*)&si.sin_addr) = *((uint32*)ip);
|
||||||
return winsock2errno(sendto(s,buf,len,0,(struct sockaddr *) &si,sizeof si));
|
return winsock2errno(sendto(s,buf,len,0,(void*) &si,sizeof si));
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ int socket_send6(int s,const char *buf,unsigned int len,const char ip[16],uint16
|
|||||||
#else
|
#else
|
||||||
si.sin6_scope_id=0;
|
si.sin6_scope_id=0;
|
||||||
#endif
|
#endif
|
||||||
return winsock2errno(sendto(s,buf,len,0,(struct sockaddr *) &si,sizeof si));
|
return winsock2errno(sendto(s,buf,len,0,(void*) &si,sizeof si));
|
||||||
#else
|
#else
|
||||||
errno=EPROTONOSUPPORT;
|
errno=EPROTONOSUPPORT;
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
#ifndef EPFNOSUPPORT
|
#ifndef EPFNOSUPPORT
|
||||||
#define EPFNOSUPPORT EAFNOSUPPORT
|
#define EPFNOSUPPORT EAFNOSUPPORT
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef EPROTONOSUPPORT
|
||||||
|
#define EPROTONOSUPPORT EAFNOSUPPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
int socket_tcp6(void)
|
int socket_tcp6(void)
|
||||||
{
|
{
|
||||||
@ -24,7 +27,7 @@ int socket_tcp6(void)
|
|||||||
if (noipv6) goto compat;
|
if (noipv6) goto compat;
|
||||||
s = winsock2errno(socket(PF_INET6,SOCK_STREAM,0));
|
s = winsock2errno(socket(PF_INET6,SOCK_STREAM,0));
|
||||||
if (s == -1) {
|
if (s == -1) {
|
||||||
if (errno == EINVAL || errno == EAFNOSUPPORT || errno == EPFNOSUPPORT) {
|
if (errno == EINVAL || errno == EAFNOSUPPORT || errno == EPFNOSUPPORT || errno == EPROTONOSUPPORT) {
|
||||||
compat:
|
compat:
|
||||||
s=socket(AF_INET,SOCK_STREAM,0);
|
s=socket(AF_INET,SOCK_STREAM,0);
|
||||||
noipv6=1;
|
noipv6=1;
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
#ifndef EPFNOSUPPORT
|
#ifndef EPFNOSUPPORT
|
||||||
#define EPFNOSUPPORT EAFNOSUPPORT
|
#define EPFNOSUPPORT EAFNOSUPPORT
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef EPROTONOSUPPORT
|
||||||
|
#define EPROTONOSUPPORT EAFNOSUPPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
int socket_udp6(void)
|
int socket_udp6(void)
|
||||||
{
|
{
|
||||||
@ -24,7 +27,7 @@ int socket_udp6(void)
|
|||||||
if (noipv6) goto compat;
|
if (noipv6) goto compat;
|
||||||
s = winsock2errno(socket(PF_INET6,SOCK_DGRAM,0));
|
s = winsock2errno(socket(PF_INET6,SOCK_DGRAM,0));
|
||||||
if (s == -1) {
|
if (s == -1) {
|
||||||
if (errno == EINVAL || errno == EAFNOSUPPORT || errno == EPFNOSUPPORT) {
|
if (errno == EINVAL || errno == EAFNOSUPPORT || errno == EPFNOSUPPORT || errno == EPROTONOSUPPORT) {
|
||||||
compat:
|
compat:
|
||||||
s=winsock2errno(socket(AF_INET,SOCK_DGRAM,0));
|
s=winsock2errno(socket(AF_INET,SOCK_DGRAM,0));
|
||||||
noipv6=1;
|
noipv6=1;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
int str_diffn(const char* a, const char* b, unsigned long limit) {
|
int str_diffn(const char* a, const char* b, unsigned long limit) {
|
||||||
register const unsigned char* s=(const unsigned char*)a;
|
register const unsigned char* s=(const unsigned char*)a;
|
||||||
register const unsigned char* t=(const unsigned char*)b;
|
register const unsigned char* t=(const unsigned char*)b;
|
||||||
register const char* u=t+limit;
|
register const unsigned char* u=t+limit;
|
||||||
register int j;
|
register int j;
|
||||||
j=0;
|
j=0;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
@ -69,13 +69,14 @@ static const uint32_t crc_table[256] = {
|
|||||||
0x2d02ef8dL
|
0x2d02ef8dL
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int crc32(unsigned int crc, const char* buf, unsigned int len) {
|
uint32_t crc32(uint32_t crc, const char* buf, unsigned int len) {
|
||||||
crc = crc ^ 0xffffffffL;
|
const unsigned char* b=(const unsigned char*)buf;
|
||||||
|
crc = crc ^ 0xfffffffful;
|
||||||
while (len) {
|
while (len) {
|
||||||
crc = crc_table[((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8);
|
crc = (crc >> 8) ^ crc_table[(crc & 0xff) ^ *b];
|
||||||
--len;
|
++b; --len;
|
||||||
}
|
}
|
||||||
return crc ^ 0xffffffffL;
|
return crc ^ 0xfffffffful;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc,char* argv[]) {
|
int main(int argc,char* argv[]) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user