summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Fankhauser hiddenalpha.ch2024-04-05 21:21:39 +0200
committerAndreas Fankhauser hiddenalpha.ch2024-04-05 21:21:39 +0200
commite32468e232909cf49c52917651af579d384419b0 (patch)
tree3cbdace268a447b19298f29e22b471d8c288fbcf
parent69f6497f87ce203cf0c3adb5562528b0ad596965 (diff)
downloadgetaddrinfo-cli-e32468e232909cf49c52917651af579d384419b0.zip
getaddrinfo-cli-e32468e232909cf49c52917651af579d384419b0.tar.gz
Make ready for windoof.
-rw-r--r--Makefile11
-rw-r--r--src/main/c/getaddrinfocli.c20
2 files changed, 24 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 0a85b90..0695efa 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,7 @@ COPYTO=cp -t
DIRNAME=dirname
MD5SUM=md5sum -b
TAR=tar
+BINEXT=
INSTALL_ROOT=/usr/local
CFLAGS=-Wall -Werror -pedantic -std=c89 -fPIC -Os -fmax-errors=1 -DPROJECT_VERSION=$(PROJECT_VERSION) -D_POSIX_C_SOURCE=200112L
@@ -29,8 +30,8 @@ clean:
echo " RM build dist"
$(RIMRAF) build dist
-build/bin/getaddrinfo:
-build/bin/getaddrinfo: build/obj/main/c/getaddrinfocli.o
+build/bin/getaddrinfo$(BINEXT):
+build/bin/getaddrinfo$(BINEXT): build/obj/main/c/getaddrinfocli.o
echo " LN $@"
$(MKDIR_P) "$(shell dirname "$@")"
$(LD) -o "$@" $(LDFLAGS) $^ $(LIBS)
@@ -42,14 +43,14 @@ build/obj/main/c/getaddrinfocli.o: src/main/c/getaddrinfocli.c
$(CC) -c -o "$@" $(CFLAGS) $^
dist/getaddrinfo-$(PROJECT_VERSION)+$(ARCH).tgz:
-dist/getaddrinfo-$(PROJECT_VERSION)+$(ARCH).tgz: build/bin/getaddrinfo
+dist/getaddrinfo-$(PROJECT_VERSION)+$(ARCH).tgz: build/bin/getaddrinfo$(BINEXT)
echo " PKG $@"
$(MKDIR_P) "$(shell dirname "$@")" build/tar build/tar/bin
- $(COPYTO) build/tar/bin/. build/bin/getaddrinfo
+ $(COPYTO) build/tar/bin/. build/bin/getaddrinfo$(BINEXT)
echo "version=$(PROJECT_VERSION)" > build/tar/METADATA.INI
echo "arch=$(ARCH)" >> build/tar/METADATA.INI
echo "builtAt=$(shell date -u +%Y-%m-%dT%H:%M:%SZ)" >> build/tar/METADATA.INI
- $(TAR) --owner=0 --group=0 -czf "$@" -C build/tar METADATA.INI bin/getaddrinfo
+ $(TAR) --owner=0 --group=0 -czf "$@" -C build/tar METADATA.INI bin/getaddrinfo$(BINEXT)
.PHONY: install
install:
diff --git a/src/main/c/getaddrinfocli.c b/src/main/c/getaddrinfocli.c
index 209a4a6..9acffbe 100644
--- a/src/main/c/getaddrinfocli.c
+++ b/src/main/c/getaddrinfocli.c
@@ -2,13 +2,19 @@
USERCONFIG
#endif
-#include <arpa/inet.h>
#include <assert.h>
#include <errno.h>
-#include <netdb.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
+#if __WIN32
+# include <ws2tcpip.h>
+# include <windows.h>
+static WSADATA wsadat;
+#else
+# include <arpa/inet.h>
+# include <netdb.h>
+#endif
#define STR_QUOT_(S) #S
#define STR_QUOT(S) STR_QUOT_(S)
@@ -35,6 +41,10 @@ int main( int argc, char**argv ){
if( argc != 2 ){ fprintf(stderr, "EINVAL: Try --help\n"); err = -1; goto endFn; }
if( !strcmp(argv[1], "--help") ){ printHelp(); err = 0; goto endFn; }
nodename = argv[1]; assert(nodename != NULL);
+#ifdef __WIN32
+ err = WSAStartup(MAKEWORD(1, 0), &wsadat);
+ if( err ) goto endFn;
+#endif
err = getaddrinfo(nodename, NULL, NULL, &res);
if( err != 0 ){
const char *ex;
@@ -47,7 +57,9 @@ int main( int argc, char**argv ){
case EAI_NONAME: ex = "EAI_NONAME"; break;
case EAI_SERVICE: ex = "EAI_SERVICE"; break;
case EAI_SOCKTYPE: ex = "EAI_SOCKTYPE"; break;
+#ifdef EAI_SYSTEM
case EAI_SYSTEM: ex = "EAI_SYSTEM"; break;
+#endif
#ifdef EAI_ADDRFAMILY
case EAI_ADDRFAMILY: ex = "EAI_ADDRFAMILY"; break;
#endif
@@ -72,6 +84,7 @@ int main( int argc, char**argv ){
default: assert(!fprintf(stderr,"TODO: ai_family %d\n", it->ai_family)); afStr = NULL;
}
switch( it->ai_socktype ){
+ case 0 : typStr = "0" ; break;
case SOCK_STREAM: typStr = "STREAM"; break;
case SOCK_DGRAM : typStr = "DGRAM" ; break;
case SOCK_RAW : typStr = "RAW" ; break;
@@ -117,6 +130,9 @@ int main( int argc, char**argv ){
err = 0;
endFn:
if( res != NULL ) freeaddrinfo(res);
+#ifdef __WIN32
+ WSACleanup();
+#endif
return !!err;
}