]> Git repositories of Nishi - tewi.git/commitdiff
works on os2
authorNishi <nishi@nishi.boats>
Sun, 13 Oct 2024 18:17:37 +0000 (18:17 +0000)
committerNishi <nishi@nishi.boats>
Sun, 13 Oct 2024 18:17:37 +0000 (18:17 +0000)
git-svn-id: file:///raid/svn-personal/tewi/trunk@312 8739d7e6-ffea-ec47-b151-bdff447c6205

12 files changed:
Makefile
Platform/os2.mk
Server/config.c
Server/http.c
Server/main.c
Server/module.c
Server/server.c
Server/strptime.c
Server/strptime.h
Server/tw_config.h
Server/version.c
config.h.tmpl

index e0972707a0d3b1c5934e45dab7f9c44375657a2a..f86e025d768c1f742a9a02831c01753cc2a4addd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -43,7 +43,9 @@ install: all ./Tool/genconf ./Tool/itworks
        if [ ! -e $(DESTDIR)$(PREFIX)/www/index.html ]; then ( ./Tool/itworks > $(DESTDIR)$(PREFIX)/www/index.html || ( rm $(DESTDIR)$(PREFIX)/www/index.html ; exit 1 ) ) ; fi
        if [ ! -e $(DESTDIR)$(PREFIX)/www/pbtewi.gif ]; then ( cp Binary/pbtewi.gif $(DESTDIR)$(PREFIX)/www/ || ( rm $(DESTDIR)$(PREFIX)/www/pbtewi.gif ; exit 1 ) ) ; fi
        -cp ./Server/tewi $(DESTDIR)$(PREFIX)/bin/
+       -cp ./Server/tewi.exe $(DESTDIR)$(PREFIX)/bin/
        -cp ./Module/*.so $(DESTDIR)$(PREFIX)/lib/tewi/
+       -cp ./Module/*.dll $(DESTDIR)$(PREFIX)/lib/tewi/
 
 format:
        clang-format --verbose -i `find ./Server ./Common ./Module ./Tool "(" -name "*.c" -or -name "*.h" ")" -and -not -name "strptime.*"` config.h
index e4292f67e73ff809c267b744c2b5d0bbb289f881..64971c88ff2e532b4a5ddc4567d1dde42abac2e4 100644 (file)
@@ -6,12 +6,10 @@ PLATFORM_IDENT = OS2_WATCOM
 CC = owcc
 AR = wlib
 AR_FLAGS = -q -b -n -fo
-CFLAGS = -b os2v2$(END) -I $(WATCOM)/h/os2 -g -std=c99 -DPREFIX=\"$(PREFIX)\" -I ../Common -fPIC
+CFLAGS = -b os2v2$(END) -I $(WATCOM)/h/os2 -g -std=c99 -DPREFIX=\"$(PREFIX)\" -I ../Common -fPIC -D__WATCOM_LFN__
 LDFLAGS = -b os2v2$(END)
 LIBS =
 EXEC = .exe
 STATIC = lib
 LIBSUF = .dll
 OBJ = obj
-REQOBJS = concat.rc
-SERVADD = wrc -bt=nt -i=$(WATCOM)/h/nt concat.rc tewi.exe
index a998d6797077d68c90bfd06f49c3e93d17ef3422..fdcbc063deea88f613222a1f4930b44dadb88d82 100644 (file)
@@ -2,8 +2,7 @@
 
 #define SOURCE
 
-#include "tw_config.h"
-#include "tw_module.h"
+#include "../config.h"
 
 #include <stdio.h>
 #include <stdint.h>
@@ -15,7 +14,7 @@
 #include <unistd.h>
 #endif
 
-#if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || (defined(__WATCOMC__) && !defined(__OS2__))
+#if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || (defined(__WATCOMC__) && !defined(__OS2__) && !defined(__WATCOMC__))
 #ifdef USE_WINSOCK1
 #include <winsock.h>
 #else
 #include <cm_string.h>
 #include <cm_log.h>
 
+#ifdef __OS2__
+#include <types.h>
+#include <netinet/in.h>
+#include <tcpustd.h>
+#endif
+
+#include "tw_config.h"
+#include "tw_module.h"
+
 struct tw_config config;
 
 struct tw_config_entry* tw_vhost_match(const char* name, int port) {
index 22aae284bc75b36c5e8711005dc9dfcbb64501f1..b875c185a077415dbad7d87730b4b057466f100e 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 
-#if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
+#ifdef __OS2__
+#include <sys/time.h>
+#include <types.h>
+#include <tcpustd.h>
+#endif
+
+#if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || (defined(__WATCOMC__) && !defined(__OS2__))
 #ifdef USE_WINSOCK1
 #include <winsock.h>
 #else
index 6eb61361a581fbd8b28928b93108ffd63ed5908d..7b8abe2592937684375d4e35debfc3c7e073e372 100644 (file)
 #include <openssl/opensslv.h>
 #endif
 
+#ifdef __OS2__
+#include <types.h>
+#endif
+
 #include <cm_log.h>
 #include <cm_string.h>
 
@@ -801,7 +805,7 @@ int startup(int argc, char** argv) {
 #if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(__BORLANDC__) && !defined(__WATCOMC__)
        signal(SIGCHLD, SIG_IGN);
        signal(SIGPIPE, SIG_IGN);
-#elif !defined(BUILD_GUI)
+#elif !defined(BUILD_GUI) && !defined(__OS2__)
        SetConsoleTitle(tw_server);
 #endif
        return -1;
index 02eb5c69de6ede23bb628dfdf0980693a52194f7..d7639002fec100969d6db26113c38541ea59d98a 100644 (file)
@@ -27,8 +27,13 @@ int tw_module_init(void* mod) { return 1; }
 #else
 
 #if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
+#ifdef __OS2__
+#define INCL_DOSMODULEMGR
+#include <os2.h>
+#else
 #include <windows.h>
 #include <direct.h>
+#endif
 #else
 #include <dlfcn.h>
 #endif
@@ -36,9 +41,17 @@ int tw_module_init(void* mod) { return 1; }
 void* tw_module_load(const char* path) {
        char* p = getcwd(NULL, 0);
        void* lib;
+       char tmp[512];
+       unsigned long l;
        chdir(config.server_root);
 #if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
+#ifdef __OS2__
+       lib = NULL;
+       l = (unsigned long)lib;
+       DosLoadModule(tmp, 512, path, &l);
+#else
        lib = LoadLibraryA(path);
+#endif
 #else
        lib = dlopen(path, RTLD_LAZY);
 #endif
@@ -52,7 +65,13 @@ void* tw_module_load(const char* path) {
 
 void* tw_module_symbol(void* mod, const char* sym) {
 #if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
+#ifdef __OS2__
+       void* ret;
+       DosQueryProcAddr((unsigned long)mod, 0, sym, (PFN*)&ret);
+       return ret;
+#else
        return GetProcAddress(mod, sym);
+#endif
 #else
        return dlsym(mod, sym);
 #endif
index 2069b6ae725a5db3aeacc31b72746e87687b1cdd..2e33661a4bb7f81fc987ebd7cf39ec4766b2f63d 100644 (file)
@@ -18,6 +18,7 @@
 #if !defined(_MSC_VER) && !defined(__BORLANDC__)
 #include <unistd.h>
 #endif
+#include <ctype.h>
 #include <string.h>
 #include <stdbool.h>
 #include <stdarg.h>
 #include <cm_log.h>
 #include <cm_dir.h>
 
+#ifdef __OS2__
+#include <types.h>
+#include <sys/time.h>
+#define INCL_DOSPROCESS
+#include <os2.h>
+#include <process.h>
+#define HANDLE void*
+
+#include "strptime.h"
+typedef int socklen_t;
+
+#include <tcpustd.h>
+#endif
+
 #if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || (defined(__WATCOMC__) && !defined(__OS2__))
 #ifndef NO_GETNAMEINFO
 #include <ws2tcpip.h>
@@ -108,7 +123,7 @@ int tw_wildcard_match(const char* wildcard, const char* target) {
                        return 0;
                } else if(*pw == '*') {
                        return *(pw + 1) == 0 || tw_wildcard_match(pw, pt + 1) || tw_wildcard_match(pw + 1, pt);
-               } else if(*pw == '?' || (*pw == *pt)) {
+               } else if(*pw == '?' || (tolower(*pw) == tolower(*pt))) {
                        pw++;
                        pt++;
                        continue;
@@ -119,7 +134,9 @@ int tw_wildcard_match(const char* wildcard, const char* target) {
 }
 
 void close_socket(int sock) {
-#if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
+#ifdef __OS2__
+       soclose(sock);
+#elif defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
        closesocket(sock);
 #else
        close(sock);
@@ -128,13 +145,16 @@ void close_socket(int sock) {
 
 int tw_server_init(void) {
        int i;
-#if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
+#if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || (defined(__WATCOMC__) && !defined(__OS2__))
        WSADATA wsa;
 #ifdef USE_WINSOCK1
        WSAStartup(MAKEWORD(1, 1), &wsa);
 #else
        WSAStartup(MAKEWORD(2, 0), &wsa);
 #endif
+#endif
+#ifdef __OS2__
+       sock_init();
 #endif
        for(i = 0; config.ports[i] != -1; i++)
                ;
@@ -1019,7 +1039,11 @@ void tw_server_loop(void) {
                                        e->addr = claddr;
 #endif
 #if defined(__MINGW32__) || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
+#ifdef __OS2__
+                                       _beginthread(tw_server_pass, 0, 0, e);
+#else
                                        _beginthread(tw_server_pass, 0, e);
+#endif
 #elif defined(_PSP) || defined(__PPU__)
                                                tw_server_pass(e);
 #elif defined(__HAIKU__)
index e89f5fa9d6ea0efc5f9039ce2e7d4fbedee1d000..02dbe55d8d7a5743eae5fe958a59da40c297614f 100644 (file)
@@ -462,7 +462,7 @@ recurse:
                     bp = NULL;
                     continue;
                 }
-#ifdef _WIN32
+#if defined(_WIN32) || defined(__OS2__)
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
                if (1)
 #else
index e792cf12604bc34588ba3754cde3eea098bd53c1..da44d6a4585551d1f2a2f58aeaa68fcb047bdecf 100644 (file)
@@ -7,7 +7,7 @@ extern "C" {
 
 #include <time.h>
 
-#if defined(_WIN32) || defined(_PSP) || defined(__ps2sdk__)
+#if defined(_WIN32) || defined(_PSP) || defined(__ps2sdk__) || defined(__OS2__)
 char* strptime(const char *buf, const char *fmt, struct tm *tm);
 #endif
 
index 7d255634c4bee45d7c06acfe3ad850c4b46d8973..93cefb978f9094a27ecfff5e6578aa5e19d66468 100644 (file)
@@ -25,13 +25,15 @@ extern "C" {
 #ifdef __PPU__
 #include <net/net.h>
 #endif
+#if !defined(__OS2__)
 #include <netinet/in.h>
+#endif
 #ifdef __HAIKU__
 #define NO_IPV6
 #endif
 #endif
 
-#ifdef NO_IPV6
+#if defined(NO_IPV6)
 #define SOCKADDR struct sockaddr_in
 #else
 #define SOCKADDR struct sockaddr_in6
index 2c3112aea6dc1c1db99fb9c8310848bd2dbdb97b..455d4eca7b3ea42071861b433beb85fadc9f3016 100644 (file)
@@ -15,6 +15,8 @@ const char* tw_platform =
     "OpenBSD"
 #elif defined(__linux__)
     "Linux"
+#elif defined(__OS2__)
+    "OS/2"
 #elif defined(__MINGW32__)
     "Windows-MinGW32"
 #elif defined(_MSC_VER)
index 5025b2f974d2a405b54471b98bddc3e991a3f3dc..5323cf4eb7178ac71e5861f74b6ffb044e59b997 100644 (file)
 /* Minix does not have IPv6 */
 #endif
 
+#if defined(__WATCOMC__) && defined(__OS2__) && !defined(NO_IPV6)
+#define NO_IPV6
+#endif
+
 #endif
 
 /*