From 1a3d1bca59c4a0702b8362ed040ec033490a3254 Mon Sep 17 00:00:00 2001 From: Owen Rudge Date: Fri, 16 Jun 2023 13:23:55 +0100 Subject: [PATCH] Remove: OS/2 port --- README.md | 3 - os/os2/build_lang.cmd | 8 - os/os2/dedicated.cmd | 1 - os/os2/installer/download_nosound.cmd | 21 -- os/os2/installer/download_opengfx.cmd | 21 -- os/os2/installer/download_opensfx.cmd | 21 -- os/os2/installer/make_installer.cmd | 85 ------ os/os2/installer/openttd.wis | 106 -------- os/os2/installer/remove_nosound.cmd | 15 -- os/os2/installer/remove_opengfx.cmd | 15 -- os/os2/installer/remove_opensfx.cmd | 15 -- os/os2/openttd.wpj | 64 ----- os/os2/svn_version.cmd | 30 --- os/os2/svnver1.c | 3 - os/os2/svnver2.c | 4 - src/3rdparty/CMakeLists.txt | 1 - src/3rdparty/os2/CMakeLists.txt | 7 - src/3rdparty/os2/getaddrinfo.c | 299 --------------------- src/3rdparty/os2/getaddrinfo.h | 101 ------- src/3rdparty/os2/getnameinfo.c | 367 -------------------------- src/3rdparty/os2/getnameinfo.h | 29 -- src/cpu.cpp | 7 - src/crashlog.cpp | 2 - src/fileio.cpp | 6 +- src/fios.cpp | 4 +- src/music/CMakeLists.txt | 6 - src/music/os2_m.cpp | 86 ------ src/music/os2_m.h | 39 --- src/network/core/address.cpp | 2 - src/network/core/os_abstraction.cpp | 2 - src/network/core/os_abstraction.h | 58 +--- src/os/CMakeLists.txt | 1 - src/os/os2/CMakeLists.txt | 8 - src/os/os2/os2.cpp | 187 ------------- src/os/os2/os2_main.cpp | 27 -- src/os/unix/CMakeLists.txt | 6 +- src/stdafx.h | 12 +- src/video/dedicated_v.cpp | 36 +-- src/video/sdl_v.cpp | 2 +- 39 files changed, 14 insertions(+), 1693 deletions(-) delete mode 100644 os/os2/build_lang.cmd delete mode 100644 os/os2/dedicated.cmd delete mode 100644 os/os2/installer/download_nosound.cmd delete mode 100644 os/os2/installer/download_opengfx.cmd delete mode 100644 os/os2/installer/download_opensfx.cmd delete mode 100644 os/os2/installer/make_installer.cmd delete mode 100644 os/os2/installer/openttd.wis delete mode 100644 os/os2/installer/remove_nosound.cmd delete mode 100644 os/os2/installer/remove_opengfx.cmd delete mode 100644 os/os2/installer/remove_opensfx.cmd delete mode 100644 os/os2/openttd.wpj delete mode 100644 os/os2/svn_version.cmd delete mode 100644 os/os2/svnver1.c delete mode 100644 os/os2/svnver2.c delete mode 100644 src/3rdparty/os2/CMakeLists.txt delete mode 100644 src/3rdparty/os2/getaddrinfo.c delete mode 100644 src/3rdparty/os2/getaddrinfo.h delete mode 100644 src/3rdparty/os2/getnameinfo.c delete mode 100644 src/3rdparty/os2/getnameinfo.h delete mode 100644 src/music/os2_m.cpp delete mode 100644 src/music/os2_m.h delete mode 100644 src/os/os2/CMakeLists.txt delete mode 100644 src/os/os2/os2.cpp delete mode 100644 src/os/os2/os2_main.cpp diff --git a/README.md b/README.md index 6f86b5ae3f..374df8f7f4 100644 --- a/README.md +++ b/README.md @@ -174,9 +174,6 @@ See `src/3rdparty/squirrel/COPYRIGHT` for the complete license text. The md5 implementation in `src/3rdparty/md5` is licensed under the Zlib license. See the comments in the source files in `src/3rdparty/md5` for the complete license text. -The implementations of Posix `getaddrinfo` and `getnameinfo` for OS/2 in `src/3rdparty/os2` are distributed partly under the GNU Lesser General Public License 2.1, and partly under the (3-clause) BSD license. -The exact licensing terms can be found in `src/3rdparty/os2/getaddrinfo.c` resp. `src/3rdparty/os2/getnameinfo.c`. - The fmt implementation in `src/3rdparty/fmt` is licensed under the MIT license. See `src/3rdparty/fmt/LICENSE.rst` for the complete license text. diff --git a/os/os2/build_lang.cmd b/os/os2/build_lang.cmd deleted file mode 100644 index 57d3e9943c..0000000000 --- a/os/os2/build_lang.cmd +++ /dev/null @@ -1,8 +0,0 @@ -rem -rem Building language files... -rem -cd .. -strgen\strgen -for %%f in (lang\*.txt) do strgen\strgen %%f -cd strgen - diff --git a/os/os2/dedicated.cmd b/os/os2/dedicated.cmd deleted file mode 100644 index f4eb524995..0000000000 --- a/os/os2/dedicated.cmd +++ /dev/null @@ -1 +0,0 @@ -start /n /win openttd.exe -D %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/os/os2/installer/download_nosound.cmd b/os/os2/installer/download_nosound.cmd deleted file mode 100644 index 39e9843a92..0000000000 --- a/os/os2/installer/download_nosound.cmd +++ /dev/null @@ -1,21 +0,0 @@ -@echo off -if "%1" == "" goto err -if "%2" == "" goto err - -echo Downloading NoSound... - -%1\wget http://binaries.openttd.org/installer/nosound-NOSOUND_VERSION.7z -O %2/baseset/nosound.7z - -echo Extracting NoSound... - -%1\7za x -y -O%2/baseset %2/baseset/nosound.7z -del %1\baseset\nosound.7z /n - -echo NoSound has been installed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. -echo Please visit www.openttd.org for details on downloading NoSound. - -:end \ No newline at end of file diff --git a/os/os2/installer/download_opengfx.cmd b/os/os2/installer/download_opengfx.cmd deleted file mode 100644 index c2686b456f..0000000000 --- a/os/os2/installer/download_opengfx.cmd +++ /dev/null @@ -1,21 +0,0 @@ -@echo off -if "%1" == "" goto err -if "%2" == "" goto err - -echo Downloading OpenGFX... - -%1\wget http://binaries.openttd.org/installer/opengfx-OPENGFX_VERSION.7z -O %2/baseset/opengfx.7z - -echo Extracting OpenGFX... - -%1\7za x -y -O%2/baseset %2/baseset/opengfx.7z -del %1\baseset\opengfx.7z /n - -echo OpenGFX has been installed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. -echo Please visit www.openttd.org for details on downloading OpenGFX. - -:end diff --git a/os/os2/installer/download_opensfx.cmd b/os/os2/installer/download_opensfx.cmd deleted file mode 100644 index 0a46dea42a..0000000000 --- a/os/os2/installer/download_opensfx.cmd +++ /dev/null @@ -1,21 +0,0 @@ -@echo off -if "%1" == "" goto err -if "%2" == "" goto err - -echo Downloading OpenSFX... - -%1\wget http://binaries.openttd.org/installer/opensfx-OPENSFX_VERSION.7z -O %2/baseset/opensfx.7z - -echo Extracting OpenSFX... - -%1\7za x -y -O%2/baseset %2/baseset/opensfx.7z -del %1\baseset\opensfx.7z /n - -echo OpenSFX has been installed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. -echo Please visit www.openttd.org for details on downloading OpenSFX. - -:end diff --git a/os/os2/installer/make_installer.cmd b/os/os2/installer/make_installer.cmd deleted file mode 100644 index 885b2dc623..0000000000 --- a/os/os2/installer/make_installer.cmd +++ /dev/null @@ -1,85 +0,0 @@ -@echo off - -set OPENTTD_VERSION=1.11.0 -set OPENSFX_VERSION=0.8.0 -set NOSOUND_VERSION=0.8.0 -set OPENGFX_VERSION=1.2.0 - -echo To make the installer, you must have the WarpIN compiler (wic) installed and in -echo your path, as well as wget and unzip. This file will download the various DLLs -echo to be distributed with the installer. If you do not want to continue, please -echo press CTRL-C now. -echo. -pause - -cd ..\..\..\bundle - -if not exist SDL12.dll goto getsdl -if not exist FSLib.dll goto getsdl -goto libc - -:getsdl - -wget http://www.os2site.com/sw/dev/sdl/sdl-1.2.10-bin-20080804.zip -O dl.zip -unzip -j dl.zip SDL/FSLib.dll SDL/SDL12.dll -del dl.zip - -:libc - -if exist libc063.dll goto gcc - -wget ftp://ftp.netlabs.org/pub/gcc/libc-0.6.3-csd3.zip -O dl.zip -unzip -j dl.zip libc063.dll -del dl.zip - -:gcc - -if exist gcc442.dll goto tools - -wget http://www.owenrudge.net/various/gcc442.zip -O dl.zip -unzip -j dl.zip gcc442.dll -del dl.zip - -:tools - -cd ..\os\os2\installer -if exist tools goto opengfx - -mkdir tools -cd tools - -wget http://download.smedley.info/wget-1.11.4-os2-20090315.zip -O dl.zip -unzip -j dl.zip wget/bin/wget.exe -del dl.zip - -wget ftp://ftp.os4.su/moveton/p7zip-9.04-bin-os2.zip -O dl.zip -unzip -j dl.zip bin/7za.exe dll/ilibca.dll -del dl.zip - -cd .. - -:opengfx - -if exist opengfx goto opensfx - -mkdir opengfx -sed s/OPENGFX_VERSION/%OPENGFX_VERSION%/ < download_opengfx.cmd > opengfx\download_opengfx.cmd -copy remove_opengfx.cmd opengfx - -:opensfx -if exist opensfx goto nosound - -mkdir opensfx -sed s/OPENSFX_VERSION/%OPENSFX_VERSION%/ < download_opensfx.cmd > opensfx\download_opensfx.cmd -copy remove_opensfx.cmd opensfx - -:nosound - -mkdir nosound -sed s/NOSOUND_VERSION/%NOSOUND_VERSION%/ < download_nosound.cmd > nosound\download_nosound.cmd -copy remove_nosound.cmd nosound - -:end - -if exist openttd-%OPENTTD_VERSION%-os2.exe del openttd-%OPENTTD_VERSION%-os2.exe -wic -a openttd-%OPENTTD_VERSION%-os2.exe 1 -c../../../bundle -r * 2 -ctools -r * 3 -copengfx -r * 4 -copensfx -r * 5 -cnosound -r * -U -s openttd.wis diff --git a/os/os2/installer/openttd.wis b/os/os2/installer/openttd.wis deleted file mode 100644 index 4b761ed83c..0000000000 --- a/os/os2/installer/openttd.wis +++ /dev/null @@ -1,106 +0,0 @@ - - -OpenTTD - - - -OpenTTD is an open source transport simulation game - -Tools required for downloading the OpenGFX/SFX packs - -Downloads the OpenGFX graphics pack for OpenTTD - -Downloads the OpenSFX sound effects pack for OpenTTD - -Downloads the NoSound pack for OpenTTD, to disable sound effects - - - - - - -~Next -README.md -Welcome to the OpenTTD installer. This program will install OpenTTD 1.0 on your system. Before we begin the installation process, please take a moment to read the following document. - -Select "Next" to continue, or "Cancel" to abort installation. - - - - -~Next -COPYING.md -OpenTTD is licenced under the GNU General Public License. The text of the licence is below. - -Select "Next" if you agree to this licence. -Select "Cancel" to abort installation. - - - - -~Next -On this page, you may choose which components to install. If you don't own Transport Tycoon Deluxe, you will need to download OpenGFX (3MiB) and OpenSFX (10MiB). - - - - - -I~nstall - -Press "Install" to begin installing OpenTTD. - - - diff --git a/os/os2/installer/remove_nosound.cmd b/os/os2/installer/remove_nosound.cmd deleted file mode 100644 index 21c11e80d9..0000000000 --- a/os/os2/installer/remove_nosound.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@echo off -if "%1" == "" goto err - -echo Removing NoSound... - -del %1\baseset\nosound\*.* /n -rmdir %1\baseset\nosound - -echo NoSound has been removed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. - -:end diff --git a/os/os2/installer/remove_opengfx.cmd b/os/os2/installer/remove_opengfx.cmd deleted file mode 100644 index 71465d1677..0000000000 --- a/os/os2/installer/remove_opengfx.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@echo off -if "%1" == "" goto err - -echo Removing OpenGFX... - -del %1\baseset\opengfx\*.* /n -rmdir %1\baseset\opengfx - -echo OpenGFX has been removed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. - -:end diff --git a/os/os2/installer/remove_opensfx.cmd b/os/os2/installer/remove_opensfx.cmd deleted file mode 100644 index 361a870e33..0000000000 --- a/os/os2/installer/remove_opensfx.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@echo off -if "%1" == "" goto err - -echo Removing OpenSFX... - -del %1\baseset\opensfx\*.* /n -rmdir %1\baseset\opensfx - -echo OpenSFX has been removed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. - -:end diff --git a/os/os2/openttd.wpj b/os/os2/openttd.wpj deleted file mode 100644 index 61b2caa553..0000000000 --- a/os/os2/openttd.wpj +++ /dev/null @@ -1,64 +0,0 @@ -40 -projectIdent -0 -VpeMain -1 -WRect -0 -0 -10304 -10020 -2 -MProject -3 -MCommand -15 -svn_version.cmd -4 -MCommand -0 -2 -5 -WFileName -17 -..\..\openttd.tgt -6 -WFileName -23 -..\..\strgen\strgen.tgt -7 -WVList -2 -8 -VComponent -9 -WRect -0 -0 -5696 -4240 -0 -0 -10 -WFileName -17 -..\..\openttd.tgt -0 -0 -11 -VComponent -12 -WRect -688 -680 -5696 -4240 -0 -0 -13 -WFileName -23 -..\..\strgen\strgen.tgt -0 -1 -8 diff --git a/os/os2/svn_version.cmd b/os/os2/svn_version.cmd deleted file mode 100644 index cc8836fc0b..0000000000 --- a/os/os2/svn_version.cmd +++ /dev/null @@ -1,30 +0,0 @@ -@echo off -echo Running SVN version detection script... -rem -rem Requires subversion (`svnversion') to be installed -rem -cd ..\.. -if not "%RELEASE%"=="" goto forcerelease -if not exist .svn goto nosvn -svnversion -n . > os\os2\svnver.tmp -if not "%ERRORLEVEL%"=="0" goto nosvn - -copy os\os2\svnver1.c+os\os2\svnver.tmp+os\os2\svnver2.c rev.c /a /y > nul 2> nul -goto end - -:forcerelease -echo Forcing release string "%RELEASE%"... -echo const char _openttd_revision[] = "%RELEASE%"; > rev.c -echo const int _revision_number = 0; >> rev.c -goto end - -:nosvn -echo Error executing `svnversion' or no SVN data detected -echo const char _openttd_revision[] = "norev000"; > rev.c -echo const int _revision_number = 0; >> rev.c -goto end - -:end -cd os\os2 -del svnver.tmp > nul 2> nul -rem end diff --git a/os/os2/svnver1.c b/os/os2/svnver1.c deleted file mode 100644 index 56d3572c50..0000000000 --- a/os/os2/svnver1.c +++ /dev/null @@ -1,3 +0,0 @@ -/* rev.c part #1 for OS/2 - ensure no newline at end of file! */ - -const char _openttd_revision[] = "r \ No newline at end of file diff --git a/os/os2/svnver2.c b/os/os2/svnver2.c deleted file mode 100644 index 02d87603c5..0000000000 --- a/os/os2/svnver2.c +++ /dev/null @@ -1,4 +0,0 @@ -"; -const int _revision_number = 0; - -/* rev.c part 2 for OS/2 - ensure no newline at start of file! */ \ No newline at end of file diff --git a/src/3rdparty/CMakeLists.txt b/src/3rdparty/CMakeLists.txt index 051ec193ba..e2b72c4bd1 100644 --- a/src/3rdparty/CMakeLists.txt +++ b/src/3rdparty/CMakeLists.txt @@ -4,4 +4,3 @@ add_subdirectory(icu) add_subdirectory(md5) add_subdirectory(squirrel) add_subdirectory(opengl) -add_subdirectory(os2) diff --git a/src/3rdparty/os2/CMakeLists.txt b/src/3rdparty/os2/CMakeLists.txt deleted file mode 100644 index 8edc63479e..0000000000 --- a/src/3rdparty/os2/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -add_files( - getaddrinfo.c - getaddrinfo.h - getnameinfo.c - getnameinfo.h - CONDITION OPTION_OS2 -) diff --git a/src/3rdparty/os2/getaddrinfo.c b/src/3rdparty/os2/getaddrinfo.c deleted file mode 100644 index 3cdda21f1b..0000000000 --- a/src/3rdparty/os2/getaddrinfo.c +++ /dev/null @@ -1,299 +0,0 @@ -/* - * This file is part of libESMTP, a library for submission of RFC 2822 - * formatted electronic mail messages using the SMTP protocol described - * in RFC 2821. - * - * Copyright (C) 2001,2002 Brian Stafford - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* An emulation of the RFC 2553 / Posix getaddrinfo resolver interface. - */ - -#if !HAVE_GETADDRINFO - -/* Need to turn off Posix features in glibc to build this */ -#undef _POSIX_C_SOURCE -#undef _XOPEN_SOURCE - -#include "getaddrinfo.h" -//#include "compat/inet_pton.h" - -#include -#include -#include -#include -#include -#include -#include - -static struct addrinfo * -dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen) { - struct addrinfo *ret; - - ret = malloc (sizeof (struct addrinfo)); - if (ret == NULL) - return NULL; - memcpy (ret, info, sizeof (struct addrinfo)); - ret->ai_addr = malloc (addrlen); - if (ret->ai_addr == NULL) { - free (ret); - return NULL; - } - memcpy (ret->ai_addr, addr, addrlen); - ret->ai_addrlen = addrlen; - return ret; -} - -int -getaddrinfo (const char *nodename, const char *servname, - const struct addrinfo *hints, struct addrinfo **res) -{ - struct hostent *hp; - struct servent *servent; - const char *socktype; - int port; - struct addrinfo hint, result; - struct addrinfo *ai, *sai, *eai; - char **addrs; - - if (servname == NULL && nodename == NULL) - return EAI_NONAME; - - memset (&result, 0, sizeof result); - - /* default for hints */ - if (hints == NULL) { - memset (&hint, 0, sizeof hint); - hint.ai_family = PF_UNSPEC; - hints = &hint; - } - - if (servname == NULL) - port = 0; - else { - /* check for tcp or udp sockets only */ - if (hints->ai_socktype == SOCK_STREAM) - socktype = "tcp"; - else if (hints->ai_socktype == SOCK_DGRAM) - socktype = "udp"; - else - return EAI_SERVICE; - result.ai_socktype = hints->ai_socktype; - - /* Note: maintain port in host byte order to make debugging easier */ - if (isdigit (*servname)) - port = strtol (servname, NULL, 10); - else if ((servent = getservbyname (servname, socktype)) != NULL) - port = ntohs (servent->s_port); - else - return EAI_NONAME; - } - - /* if nodename == NULL refer to the local host for a client or any - for a server */ - if (nodename == NULL) { - struct sockaddr_in sin; - - /* check protocol family is PF_UNSPEC or PF_INET - could try harder - for IPv6 but that's more code than I'm prepared to write */ - if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET) - result.ai_family = AF_INET; - else - return EAI_FAMILY; - - sin.sin_family = result.ai_family; - sin.sin_port = htons (port); - if (hints->ai_flags & AI_PASSIVE) - sin.sin_addr.s_addr = htonl (INADDR_ANY); - else - sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK); - /* Duplicate result and addr and return */ - *res = dup_addrinfo (&result, &sin, sizeof sin); - return (*res == NULL) ? EAI_MEMORY : 0; - } - - /* If AI_NUMERIC is specified, use inet_pton to translate numbers and - dots notation. */ - if (hints->ai_flags & AI_NUMERICHOST) { - struct sockaddr_in sin; - - /* check protocol family is PF_UNSPEC or PF_INET */ - if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET) - result.ai_family = AF_INET; - else - return EAI_FAMILY; - - sin.sin_family = result.ai_family; - sin.sin_port = htons (port); - if (inet_pton(result.ai_family, nodename, &sin.sin_addr)==0) - return EAI_NONAME; - sin.sin_addr.s_addr = inet_addr (nodename); - /* Duplicate result and addr and return */ - *res = dup_addrinfo (&result, &sin, sizeof sin); - return (*res == NULL) ? EAI_MEMORY : 0; - } - -#if HAVE_H_ERRNO - h_errno = 0; -#endif - errno = 0; - hp = gethostbyname(nodename); - if (hp == NULL) { -#ifdef EAI_SYSTEM - if (errno != 0) { - return EAI_SYSTEM; - } -#endif - switch (h_errno) { - case HOST_NOT_FOUND: - return EAI_NODATA; - case NO_DATA: - return EAI_NODATA; -#if defined(NO_ADDRESS) && NO_ADDRESS != NO_DATA - case NO_ADDRESS: - return EAI_NODATA; -#endif - case NO_RECOVERY: - return EAI_FAIL; - case TRY_AGAIN: - return EAI_AGAIN; - default: - return EAI_FAIL; - } - return EAI_FAIL; - } - - /* Check that the address family is acceptable. - */ - switch (hp->h_addrtype) { - case AF_INET: - if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)) - return EAI_FAMILY; - break; -#ifndef __OS2__ - case AF_INET6: - if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET6)) - return EAI_FAMILY; - break; -#endif - default: - return EAI_FAMILY; - } - - /* For each element pointed to by hp, create an element in the - result linked list. */ - sai = eai = NULL; - for (addrs = hp->h_addr_list; *addrs != NULL; addrs++) { - struct sockaddr sa; - size_t addrlen; - - if (hp->h_length < 1) - continue; - sa.sa_family = hp->h_addrtype; - switch (hp->h_addrtype) { - case AF_INET: - ((struct sockaddr_in *) &sa)->sin_port = htons (port); - memcpy (&((struct sockaddr_in *) &sa)->sin_addr, - *addrs, hp->h_length); - addrlen = sizeof (struct sockaddr_in); - break; -#ifndef __OS2__ - case AF_INET6: -#if SIN6_LEN - ((struct sockaddr_in6 *) &sa)->sin6_len = hp->h_length; -#endif - ((struct sockaddr_in6 *) &sa)->sin6_port = htons (port); - memcpy (&((struct sockaddr_in6 *) &sa)->sin6_addr, - *addrs, hp->h_length); - addrlen = sizeof (struct sockaddr_in6); - break; -#endif - default: - continue; - } - - result.ai_family = hp->h_addrtype; - ai = dup_addrinfo (&result, &sa, addrlen); - if (ai == NULL) { - freeaddrinfo (sai); - return EAI_MEMORY; - } - if (sai == NULL) - sai = ai; - else - eai->ai_next = ai; - eai = ai; - } - - if (sai == NULL) { - return EAI_NODATA; - } - - if (hints->ai_flags & AI_CANONNAME) { - sai->ai_canonname = malloc (strlen (hp->h_name) + 1); - if (sai->ai_canonname == NULL) { - freeaddrinfo (sai); - return EAI_MEMORY; - } - strcpy (sai->ai_canonname, hp->h_name); - } - - *res = sai; - return 0; -} - -void -freeaddrinfo (struct addrinfo *ai) -{ - struct addrinfo *next; - - while (ai != NULL) { - next = ai->ai_next; - if (ai->ai_canonname != NULL) - free (ai->ai_canonname); - if (ai->ai_addr != NULL) - free (ai->ai_addr); - free (ai); - ai = next; - } -} - -const char * -gai_strerror (int ecode) -{ - static const char *eai_descr[] = { - "no error", - "address family for nodename not supported", /* EAI_ADDRFAMILY */ - "temporary failure in name resolution", /* EAI_AGAIN */ - "invalid value for ai_flags", /* EAI_BADFLAGS */ - "non-recoverable failure in name resolution", /* EAI_FAIL */ - "ai_family not supported", /* EAI_FAMILY */ - "memory allocation failure", /* EAI_MEMORY */ - "no address associated with nodename", /* EAI_NODATA */ - "nodename nor servname provided, or not known", /* EAI_NONAME */ - "servname not supported for ai_socktype", /* EAI_SERVICE */ - "ai_socktype not supported", /* EAI_SOCKTYPE */ - "system error returned in errno", /* EAI_SYSTEM */ - "argument buffer overflow", /* EAI_OVERFLOW */ - }; - - if (ecode < 0 || ecode > (int) (sizeof eai_descr/ sizeof eai_descr[0])) - return "unknown error"; - return eai_descr[ecode]; -} - -#endif /* HAVE_GETADDRINFO */ diff --git a/src/3rdparty/os2/getaddrinfo.h b/src/3rdparty/os2/getaddrinfo.h deleted file mode 100644 index 0a588a40a2..0000000000 --- a/src/3rdparty/os2/getaddrinfo.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef _getaddrinfo_h -#define _getaddrinfo_h - -/* - * Shamelessly duplicated from the fetchmail public sources - * for use by the Squid Project under GNU Public License. - * - * Update/Maintenance History: - * - * 15-Aug-2007 : Copied from fetchmail 6.3.8 - * - added protection around libray headers - * - * 16-Aug-2007 : Altered configure checks - * Un-hacked slightly to use system gethostbyname() - * - * Original License and code follows. - */ - -/* - * This file is part of libESMTP, a library for submission of RFC 2822 - * formatted electronic mail messages using the SMTP protocol described - * in RFC 2821. - * - * Copyright (C) 2001,2002 Brian Stafford - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* Structure and prototypes taken from RFC 2553 */ - -/* SG 23/09/2007: -On Windows the following definitions are already available, may be that -this could be needed on some other platform */ -typedef int socklen_t; - -struct addrinfo { - int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ - int ai_family; /* PF_xxx */ - int ai_socktype; /* SOCK_xxx */ - int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ - socklen_t ai_addrlen; /* length of ai_addr */ - char *ai_canonname; /* canonical name for nodename */ - struct sockaddr *ai_addr; /* binary address */ - struct addrinfo *ai_next; /* next structure in linked list */ -}; - -/* Supposed to be defined in */ -#define AI_ADDRCONFIG 0 -#define AI_PASSIVE 1 /* Socket address is intended for `bind'. */ -#define AI_CANONNAME 2 /* Request for canonical name. */ -#define AI_NUMERICHOST 4 /* Don't use name resolution. */ - -/* Supposed to be defined in */ -#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */ -#define EAI_AGAIN 2 /* temporary failure in name resolution */ -#define EAI_BADFLAGS 3 /* invalid value for ai_flags */ -#define EAI_FAIL 4 /* non-recoverable failure in name resolution */ -#define EAI_FAMILY 5 /* ai_family not supported */ -#define EAI_MEMORY 6 /* memory allocation failure */ -#define EAI_NODATA 7 /* no address associated with nodename */ -#define EAI_NONAME 8 /* nodename nor servname provided, or not known */ -#define EAI_SERVICE 9 /* servname not supported for ai_socktype */ -#define EAI_SOCKTYPE 10 /* ai_socktype not supported */ - -#ifndef EAI_SYSTEM -/* Not defined on mingw32. */ -#define EAI_SYSTEM 11 /* System error returned in `errno'. */ -#endif -#ifndef EAI_OVERFLOW -/* Not defined on mingw32. */ -#define EAI_OVERFLOW 12 /* Argument buffer overflow. */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif -/* RFC 2553 / Posix resolver */ -int getaddrinfo (const char *nodename, const char *servname, - const struct addrinfo *hints, struct addrinfo **res); -/* Free addrinfo structure and associated storage */ -void freeaddrinfo (struct addrinfo *ai); - -/* Convert error return from getaddrinfo() to string */ -const char *gai_strerror (int code); -#ifdef __cplusplus -} -#endif - -#endif /* _getaddrinfo_h */ diff --git a/src/3rdparty/os2/getnameinfo.c b/src/3rdparty/os2/getnameinfo.c deleted file mode 100644 index 14fd89ef15..0000000000 --- a/src/3rdparty/os2/getnameinfo.c +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Issues to be discussed: - * - RFC2553 says that we should raise error on short buffer. X/Open says - * we need to truncate the result. We obey RFC2553 (and X/Open should be - * modified). ipngwg rough consensus seems to follow RFC2553. RFC3493 says - * nothing about it, but defines a new error code EAI_OVERFLOW which seems - * to be intended the code for this case. - * - What is "local" in NI_NOFQDN? (see comments in the code) - * - NI_NAMEREQD and NI_NUMERICHOST conflict with each other. - * - (KAME extension) always attach textual scopeid (fe80::1%lo0), if - * sin6_scope_id is filled - standardization status? - * - what should we do if we should do getservbyport("sctp")? - */ - -/* - * Considerations about thread-safeness - * The code in this file is thread-safe, and so the thread-safeness of - * getnameinfo() depends on the property of backend functions. - * - getservbyport() is not thread safe for most systems we are targeting. - * - getipnodebyaddr() is thread safe. However, many resolver libraries - * used in the function are not thread safe. - * - gethostbyaddr() is usually not thread safe. - */ - -#if !HAVE_GETNAMEINFO - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "getaddrinfo.h" -#include "getnameinfo.h" - -static const struct afd { - int a_af; - int a_addrlen; - int a_socklen; - int a_off; - int a_portoff; -} afdl [] = { -#if INET6 - {PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6), - offsetof(struct sockaddr_in6, sin6_addr), - offsetof(struct sockaddr_in6, sin6_port)}, -#endif - {PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in), - offsetof(struct sockaddr_in, sin_addr), - offsetof(struct sockaddr_in, sin_port)}, - {0, 0, 0, 0, 0}, -}; - -#if INET6 -static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *, - size_t, int)); -static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int)); -#endif - -int -getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) -const struct sockaddr *sa; -socklen_t salen; -char *host; -size_t hostlen; -char *serv; -size_t servlen; -int flags; -{ - const struct afd *afd; - struct servent *sp; - struct hostent *hp; - unsigned short port; - int family, i; - const char *addr; - uint32_t v4a; - char numserv[512]; - - if (sa == NULL) - return EAI_FAIL; - -#if HAVE_SA_LEN /*XXX*/ - if (sa->sa_len != salen) - return EAI_FAIL; -#endif - - family = sa->sa_family; - for (i = 0; afdl[i].a_af; i++) - if (afdl[i].a_af == family) { - afd = &afdl[i]; - goto found; - } - return EAI_FAMILY; - -found: - if (salen != afd->a_socklen) - return EAI_FAIL; - - /* network byte order */ - memcpy(&port, (const char *)sa + afd->a_portoff, sizeof(port)); - addr = (const char *)sa + afd->a_off; - - if (serv == NULL || servlen == 0) { - /* - * do nothing in this case. - * in case you are wondering if "&&" is more correct than - * "||" here: RFC3493 says that serv == NULL OR servlen == 0 - * means that the caller does not want the result. - */ - } else { - if (flags & NI_NUMERICSERV) - sp = NULL; - else { - sp = getservbyport(port, - (flags & NI_DGRAM) ? "udp" : "tcp"); - } - if (sp) { - if (strlen(sp->s_name) + 1 > servlen) - return EAI_OVERFLOW; - strncpy(serv, sp->s_name, servlen); - } else { - snprintf(numserv, sizeof(numserv), "%u", ntohs(port)); - if (strlen(numserv) + 1 > servlen) - return EAI_OVERFLOW; - strncpy(serv, numserv, servlen); - } - } - - switch (sa->sa_family) { - case AF_INET: - v4a = (uint32_t) - ntohl(((const struct sockaddr_in *)sa)->sin_addr.s_addr); - if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a)) - flags |= NI_NUMERICHOST; - v4a >>= IN_CLASSA_NSHIFT; - if (v4a == 0) - flags |= NI_NUMERICHOST; - break; -#if INET6 - case AF_INET6: { - const struct sockaddr_in6 *sin6; - sin6 = (const struct sockaddr_in6 *)sa; - switch (sin6->sin6_addr.s6_addr[0]) { - case 0x00: - if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) - ; - else if (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr)) - ; - else - flags |= NI_NUMERICHOST; - break; - default: - if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) - flags |= NI_NUMERICHOST; - else if (IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) - flags |= NI_NUMERICHOST; - break; - } - } - break; -#endif - } - if (host == NULL || hostlen == 0) { - /* - * do nothing in this case. - * in case you are wondering if "&&" is more correct than - * "||" here: RFC3493 says that host == NULL or hostlen == 0 - * means that the caller does not want the result. - */ - } else if (flags & NI_NUMERICHOST) { - /* NUMERICHOST and NAMEREQD conflicts with each other */ - if (flags & NI_NAMEREQD) - return EAI_NONAME; - - goto numeric; - } else { -#if USE_GETIPNODEBY - int h_error = 0; - hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error); -#else - hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af); -#if 0 // getnameinfo.c:161:9: error: variable 'h_error' set but not used -#if HAVE_H_ERRNO - h_error = h_errno; -#else - h_error = EINVAL; -#endif -#endif /* 0 */ -#endif - - if (hp) { -#if 0 - if (flags & NI_NOFQDN) { - /* - * According to RFC3493 section 6.2, NI_NOFQDN - * means "node name portion of the FQDN shall - * be returned for local hosts." The following - * code tries to implement it by returning the - * first label (the part before the first - * period) of the FQDN. However, it is not - * clear if this always makes sense, since the - * given address may be outside of "local - * hosts." Due to the unclear description, we - * disable the code in this implementation. - */ - char *p; - p = strchr(hp->h_name, '.'); - if (p) - *p = '\0'; - } -#endif - if (strlen(hp->h_name) + 1 > hostlen) { -#if USE_GETIPNODEBY - freehostent(hp); -#endif - return EAI_OVERFLOW; - } - strncpy(host, hp->h_name, hostlen); -#if USE_GETIPNODEBY - freehostent(hp); -#endif - } else { - if (flags & NI_NAMEREQD) - return EAI_NONAME; - -numeric: - switch (afd->a_af) { -#if INET6 - case AF_INET6: { - int error; - - if ((error = ip6_parsenumeric(sa, addr, host, - hostlen, - flags)) != 0) - return(error); - break; - } -#endif - default: - if (inet_ntop(afd->a_af, addr, host, - hostlen) == NULL) - return EAI_SYSTEM; - break; - } - } - } - return(0); -} - -#if INET6 -static int -ip6_parsenumeric(sa, addr, host, hostlen, flags) -const struct sockaddr *sa; -const char *addr; -char *host; -size_t hostlen; -int flags; -{ - int numaddrlen; - char numaddr[512]; - - if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)) == NULL) - return EAI_SYSTEM; - - numaddrlen = strlen(numaddr); - if (numaddrlen + 1 > hostlen) /* don't forget terminator */ - return EAI_OVERFLOW; - strncpy(host, numaddr, hostlen); - - if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { - char zonebuf[SQUIDHOSTNAMELEN]; - int zonelen; - - zonelen = ip6_sa2str( - (const struct sockaddr_in6 *)(const void *)sa, - zonebuf, sizeof(zonebuf), flags); - if (zonelen < 0) - return EAI_OVERFLOW; - if (zonelen + 1 + numaddrlen + 1 > hostlen) - return EAI_OVERFLOW; - - /* construct */ - memcpy(host + numaddrlen + 1, zonebuf, - (size_t)zonelen); - host[numaddrlen] = SCOPE_DELIMITER; - host[numaddrlen + 1 + zonelen] = '\0'; - } - - return 0; -} - -/* ARGSUSED */ -static int -ip6_sa2str(sa6, buf, bufsiz, flags) -const struct sockaddr_in6 *sa6; -char *buf; -size_t bufsiz; -int flags; -{ - unsigned int ifindex; - const struct in6_addr *a6; - int n; - - ifindex = (unsigned int)sa6->sin6_scope_id; - a6 = &sa6->sin6_addr; - -#if NI_NUMERICSCOPE - if ((flags & NI_NUMERICSCOPE) != 0) { - n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id); - if (n < 0 || n >= bufsiz) - return -1; - else - return n; - } -#endif - - /* if_indextoname() does not take buffer size. not a good api... */ - if ((IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) || - IN6_IS_ADDR_MC_NODELOCAL(a6)) && bufsiz >= IF_NAMESIZE) { - char *p = if_indextoname(ifindex, buf); - if (p) - return (strlen(p)); - } - - /* last resort */ - n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id); - if (n < 0 || n >= bufsiz) - return -1; - else - return n; -} -#endif /* INET6 */ -#endif diff --git a/src/3rdparty/os2/getnameinfo.h b/src/3rdparty/os2/getnameinfo.h deleted file mode 100644 index c1861aa033..0000000000 --- a/src/3rdparty/os2/getnameinfo.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef _getnameinfo_h -#define _getnameinfo_h -/* - * Reconstructed from KAME getnameinfo.c (in lib/) - */ - - /* getnameinfo flags */ -#define NI_NOFQDN 0x0001 -#define NI_NUMERICHOST 0x0002 /* return numeric form of address */ -#define NI_NAMEREQD 0x0004 /* request DNS name */ -#define NI_NUMERICSERV 0x0008 -#define NI_DGRAM 0x0010 - -#ifdef __cplusplus -extern "C" { -#endif -/* RFC 2553 / Posix resolver */ -int getnameinfo(const struct sockaddr *sa, - socklen_t salen, - char *host, - size_t hostlen, - char *serv, - size_t servlen, - int flags ); -#ifdef __cplusplus -} -#endif - -#endif /* _getnameinfo_h */ diff --git a/src/cpu.cpp b/src/cpu.cpp index d95c704e2a..e9b875015d 100644 --- a/src/cpu.cpp +++ b/src/cpu.cpp @@ -32,13 +32,6 @@ uint64 ottd_rdtsc() #define RDTSC_AVAILABLE #endif -/* rdtsc for OS/2. Hopefully this works, who knows */ -#if defined (__WATCOMC__) && !defined(RDTSC_AVAILABLE) -unsigned __int64 ottd_rdtsc(); -# pragma aux ottd_rdtsc = 0x0F 0x31 value [edx eax] parm nomemory modify exact [edx eax] nomemory; -# define RDTSC_AVAILABLE -#endif - /* rdtsc for all other *nix-en (hopefully). Use GCC syntax */ #if (defined(__i386__) || defined(__x86_64__)) && !defined(RDTSC_AVAILABLE) uint64 ottd_rdtsc() diff --git a/src/crashlog.cpp b/src/crashlog.cpp index 141b2bb67e..8be9bc134c 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -88,8 +88,6 @@ void CrashLog::LogCompiler(std::back_insert_iterator &output_iterat "ICC {}", __ICC #elif defined(__GNUC__) "GCC {}.{}.{}", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ -#elif defined(__WATCOMC__) - "WatcomC {}", __WATCOMC__ #else "" #endif diff --git a/src/fileio.cpp b/src/fileio.cpp index 0461b27a13..7e69db0316 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -347,8 +347,6 @@ void FioCreateDirectory(const std::string &name) * of the time they are 'directory already exists' errors anyhow. */ #if defined(_WIN32) CreateDirectory(OTTD2FS(name).c_str(), nullptr); -#elif defined(OS2) && !defined(__INNOTEK_LIBC__) - mkdir(OTTD2FS(name).c_str()); #else mkdir(OTTD2FS(name).c_str(), 0755); #endif @@ -724,7 +722,7 @@ bool ExtractTar(const std::string &tar_filename, Subdirectory subdir) /** * Determine the base (personal dir and game data dir) paths * @param exe the path from the current path to the executable - * @note defined in the OS related files (os2.cpp, win32.cpp, unix.cpp etc) + * @note defined in the OS related files (win32.cpp, unix.cpp etc) */ extern void DetermineBasePaths(const char *exe); #else /* defined(_WIN32) */ @@ -846,7 +844,7 @@ void DetermineBasePaths(const char *exe) } #endif -#if defined(OS2) || !defined(WITH_PERSONAL_DIR) +#if !defined(WITH_PERSONAL_DIR) _searchpaths[SP_PERSONAL_DIR].clear(); #else if (!homedir.empty()) { diff --git a/src/fios.cpp b/src/fios.cpp index 0388e6ecae..20f923804f 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -34,7 +34,7 @@ static std::string *_fios_path = nullptr; SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING; -/* OS-specific functions are taken from their respective files (win32/unix/os2 .c) */ +/* OS-specific functions are taken from their respective files (win32/unix .c) */ extern bool FiosIsRoot(const std::string &path); extern bool FiosIsValidFile(const std::string &path, const struct dirent *ent, struct stat *sb); extern bool FiosIsHiddenFile(const struct dirent *ent); @@ -143,7 +143,7 @@ bool FiosBrowseTo(const FiosItem *item) { switch (item->type) { case FIOS_TYPE_DRIVE: -#if defined(_WIN32) || defined(__OS2__) +#if defined(_WIN32) assert(_fios_path != nullptr); *_fios_path = std::string{ item->title, 0, 1 } + ":" PATHSEP; #endif diff --git a/src/music/CMakeLists.txt b/src/music/CMakeLists.txt index 8f87a9c936..54105bd3cb 100644 --- a/src/music/CMakeLists.txt +++ b/src/music/CMakeLists.txt @@ -36,12 +36,6 @@ if(NOT OPTION_DEDICATED) bemidi.h CONDITION HAIKU ) - - add_files( - os2_m.cpp - os2_m.h - CONDITION OPTION_OS2 - ) endif() add_files( diff --git a/src/music/os2_m.cpp b/src/music/os2_m.cpp deleted file mode 100644 index 1c898138ad..0000000000 --- a/src/music/os2_m.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file os2_m.cpp Music playback on OS/2. */ - -#include "../stdafx.h" -#include "../openttd.h" -#include "os2_m.h" -#include "midifile.hpp" -#include "../base_media_base.h" -#include "../3rdparty/fmt/format.h" - -#define INCL_DOS -#define INCL_OS2MM -#define INCL_WIN - -#include -#include - -#include "../safeguards.h" - -/********************** - * OS/2 MIDI PLAYER - **********************/ - -/* Interesting how similar the MCI API in OS/2 is to the Win32 MCI API, - * eh? Anyone would think they both came from the same place originally! ;) - */ - -/** - * Send a midi command. - * @param cmd The command to send. - * @return The result of sending it. - */ -static long CDECL MidiSendCommand(const std::string_view cmd) -{ - return mciSendString(cmd.data(), nullptr, 0, nullptr, 0); -} - -/** OS/2's music player's factory. */ -static FMusicDriver_OS2 iFMusicDriver_OS2; - -void MusicDriver_OS2::PlaySong(const MusicSongInfo &song) -{ - std::string filename = MidiFile::GetSMFFile(song); - - MidiSendCommand("close all"); - if (filename.empty()) return; - - if (MidiSendCommand(fmt::format("open {} type sequencer alias song", filename)) != 0) { - return; - } - - MidiSendCommand("play song from 0"); -} - -void MusicDriver_OS2::StopSong() -{ - MidiSendCommand("close all"); -} - -void MusicDriver_OS2::SetVolume(byte vol) -{ - MidiSendCommand("set song audio volume %d", ((vol/127)*100)); -} - -bool MusicDriver_OS2::IsSongPlaying() -{ - char buf[16]; - mciSendString("status song mode", buf, sizeof(buf), nullptr, 0); - return strcmp(buf, "playing") == 0 || strcmp(buf, "seeking") == 0; -} - -const char *MusicDriver_OS2::Start(const StringList &parm) -{ - return 0; -} - -void MusicDriver_OS2::Stop() -{ - MidiSendCommand("close all"); -} diff --git a/src/music/os2_m.h b/src/music/os2_m.h deleted file mode 100644 index a60f5bbfc7..0000000000 --- a/src/music/os2_m.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file os2_m.h Base for OS2 music playback. */ - -#ifndef MUSIC_OS2_H -#define MUSIC_OS2_H - -#include "music_driver.hpp" - -/** OS/2's music player. */ -class MusicDriver_OS2 : public MusicDriver { -public: - const char *Start(const StringList ¶m) override; - - void Stop() override; - - void PlaySong(const MusicSongInfo &song) override; - - void StopSong() override; - - bool IsSongPlaying() override; - - void SetVolume(byte vol) override; - const char *GetName() const override { return "os2"; } -}; - -/** Factory for OS/2's music player. */ -class FMusicDriver_OS2 : public DriverFactoryBase { -public: - FMusicDriver_OS2() : DriverFactoryBase(Driver::DT_MUSIC, 10, "os2", "OS/2 Music Driver") {} - Driver *CreateInstance() const override { return new MusicDriver_OS2(); } -}; - -#endif /* MUSIC_OS2_H */ diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index 313a725c55..478aab3ad0 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -316,13 +316,11 @@ static SOCKET ListenLoopProc(addrinfo *runp) Debug(net, 0, "Setting reuse-address mode failed: {}", NetworkError::GetLast().AsString()); } -#ifndef __OS2__ int on = 1; if (runp->ai_family == AF_INET6 && setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&on, sizeof(on)) == -1) { Debug(net, 3, "Could not disable IPv4 over IPv6: {}", NetworkError::GetLast().AsString()); } -#endif if (bind(sock, runp->ai_addr, (int)runp->ai_addrlen) != 0) { Debug(net, 0, "Could not bind socket on {}: {}", address, NetworkError::GetLast().AsString()); diff --git a/src/network/core/os_abstraction.cpp b/src/network/core/os_abstraction.cpp index 9fcb9bf7fd..74dbc2fe4b 100644 --- a/src/network/core/os_abstraction.cpp +++ b/src/network/core/os_abstraction.cpp @@ -118,8 +118,6 @@ bool NetworkError::HasError() const { #if defined(_WIN32) return NetworkError(WSAGetLastError()); -#elif defined(__OS2__) - return NetworkError(sock_errno()); #else return NetworkError(errno); #endif diff --git a/src/network/core/os_abstraction.h b/src/network/core/os_abstraction.h index 6bb6101a17..461ada2b12 100644 --- a/src/network/core/os_abstraction.h +++ b/src/network/core/os_abstraction.h @@ -60,7 +60,7 @@ typedef unsigned long in_addr_t; #endif /* _WIN32 */ /* UNIX stuff */ -#if defined(UNIX) && !defined(__OS2__) +#if defined(UNIX) # if defined(OPENBSD) || defined(__NetBSD__) # define AI_ADDRCONFIG 0 # endif @@ -79,7 +79,7 @@ typedef unsigned long in_addr_t; # include # include /* According to glibc/NEWS, appeared in glibc-2.3. */ -# if !defined(__sgi__) && !defined(SUNOS) && !defined(__INNOTEK_LIBC__) \ +# if !defined(__sgi__) && !defined(SUNOS) \ && !(defined(__GLIBC__) && (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 2)) && !defined(__dietlibc__) && !defined(HPUX) /* If for any reason ifaddrs.h does not exist on your system, comment out * the following two lines and an alternative way will be used to fetch @@ -117,60 +117,6 @@ typedef unsigned long in_addr_t; #endif /* UNIX */ -/* OS/2 stuff */ -#if defined(__OS2__) -# define SOCKET int -# define INVALID_SOCKET -1 -# define closesocket close - -/* Includes needed for OS/2 systems */ -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# define INADDR_NONE 0xffffffff -# include "../../3rdparty/os2/getaddrinfo.h" -# include "../../3rdparty/os2/getnameinfo.h" - -#define IPV6_V6ONLY 27 - -/* - * IPv6 address - */ -struct in6_addr { - union { - uint8_t __u6_addr8[16]; - uint16_t __u6_addr16[8]; - uint32_t __u6_addr32[4]; - } __u6_addr; /* 128-bit IP6 address */ -}; - -#define s6_addr __u6_addr.__u6_addr8 - -struct sockaddr_in6 { - uint8_t sin6_len; /* length of this struct */ - sa_family_t sin6_family; /* AF_INET6 */ - in_port_t sin6_port; /* Transport layer port # */ - uint32_t sin6_flowinfo; /* IP6 flow information */ - struct in6_addr sin6_addr; /* IP6 address */ - uint32_t sin6_scope_id; /* scope zone index */ -}; - -typedef int socklen_t; -#if !defined(__INNOTEK_LIBC__) -typedef unsigned long in_addr_t; -#endif /* __INNOTEK_LIBC__ */ - -#endif /* OS/2 */ - #ifdef __EMSCRIPTEN__ /** * Emscripten doesn't set 'addrlen' for accept(), getsockname(), getpeername() diff --git a/src/os/CMakeLists.txt b/src/os/CMakeLists.txt index e302c448b5..0ec182dfcb 100644 --- a/src/os/CMakeLists.txt +++ b/src/os/CMakeLists.txt @@ -1,4 +1,3 @@ add_subdirectory(macosx) -add_subdirectory(os2) add_subdirectory(unix) add_subdirectory(windows) diff --git a/src/os/os2/CMakeLists.txt b/src/os/os2/CMakeLists.txt deleted file mode 100644 index 141dd98043..0000000000 --- a/src/os/os2/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_files( - os2.cpp - CONDITION OPTION_OS2 -) - -if(OPTION_OS2) - target_sources(openttd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/os2_main.cpp) -endif() diff --git a/src/os/os2/os2.cpp b/src/os/os2/os2.cpp deleted file mode 100644 index ae49d8633a..0000000000 --- a/src/os/os2/os2.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file os2.cpp OS2 related OS support. */ - -#include "../../stdafx.h" -#include "../../openttd.h" -#include "../../gui.h" -#include "../../fileio_func.h" -#include "../../fios.h" -#include "../../string_func.h" -#include "../../textbuf_gui.h" -#include "../../thread.h" - -#include "table/strings.h" - -#include -#include -#include -#include -#ifndef __INNOTEK_LIBC__ -# include -#endif - -#include "../../safeguards.h" - -#define INCL_WIN -#define INCL_WINCLIPBOARD - -#include -#ifndef __INNOTEK_LIBC__ -# include -#endif - -bool FiosIsRoot(const std::string &file) -{ - return file.size() == 3; // C:\... -} - -void FiosGetDrives(FileList &file_list) -{ - uint disk, disk2, save, total; - -#ifndef __INNOTEK_LIBC__ - _dos_getdrive(&save); // save original drive -#else - save = _getdrive(); // save original drive - char wd[MAX_PATH]; - getcwd(wd, MAX_PATH); - total = 'z'; -#endif - - /* get an available drive letter */ -#ifndef __INNOTEK_LIBC__ - for (disk = 1;; disk++) { - _dos_setdrive(disk, &total); -#else - for (disk = 'A';; disk++) { - _chdrive(disk); -#endif - if (disk >= total) break; - -#ifndef __INNOTEK_LIBC__ - _dos_getdrive(&disk2); -#else - disk2 = _getdrive(); -#endif - - if (disk == disk2) { - FiosItem *fios = file_list.Append(); - fios->type = FIOS_TYPE_DRIVE; - fios->mtime = 0; -#ifndef __INNOTEK_LIBC__ - fios->name += 'A' + disk - 1; -#else - fios->name += (char)disk; -#endif - fios->name += ':'; - fios->title = fios->name; - } - } - - /* Restore the original drive */ -#ifndef __INNOTEK_LIBC__ - _dos_setdrive(save, &total); -#else - chdir(wd); -#endif -} - -std::optional FiosGetDiskFreeSpace(const std::string &path) -{ -#ifndef __INNOTEK_LIBC__ - struct diskfree_t free; - char drive = path[0] - 'A' + 1; - - if (_getdiskfree(drive, &free) == 0) { - return free.avail_clusters * free.sectors_per_cluster * free.bytes_per_sector; - } -#elif defined(HAS_STATVFS) - struct statvfs s; - - if (statvfs(path.c_str(), &s) == 0) return static_cast(s.f_frsize) * s.f_bavail; -#endif - return std::nullopt; -} - -bool FiosIsValidFile(const std::string &path, const struct dirent *ent, struct stat *sb) -{ - std::string filename = fmt::format("{}" PATHSEP "{}", path, ent->d_name); - return stat(filename.c_str(), sb) == 0; -} - -bool FiosIsHiddenFile(const struct dirent *ent) -{ - return ent->d_name[0] == '.'; -} - -void ShowInfoI(const std::string &str) -{ - HAB hab; - HMQ hmq; - ULONG rc; - - /* init PM env. */ - hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0); - - /* display the box */ - rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, (const unsigned char *)str.c_str(), (const unsigned char *)"OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_INFORMATION); - - /* terminate PM env. */ - WinDestroyMsgQueue(hmq); - WinTerminate(hab); -} - -void ShowOSErrorBox(const char *buf, bool system) -{ - HAB hab; - HMQ hmq; - ULONG rc; - - /* init PM env. */ - hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0); - - /* display the box */ - rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, (const unsigned char *)buf, (const unsigned char *)"OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_ERROR); - - /* terminate PM env. */ - WinDestroyMsgQueue(hmq); - WinTerminate(hab); -} - -std::optional GetClipboardContents() -{ -/* XXX -- Currently no clipboard support implemented with GCC */ -#ifndef __INNOTEK_LIBC__ - HAB hab = 0; - - if (WinOpenClipbrd(hab)) { - const char *text = (const char *)WinQueryClipbrdData(hab, CF_TEXT); - - if (text != nullptr) { - std::string result = text; - WinCloseClipbrd(hab); - return result; - } - - WinCloseClipbrd(hab); - } -#endif - return std::nullopt; -} - - -void OSOpenBrowser(const char *url) -{ - // stub only - Debug(misc, 0, "Failed to open url: {}", url); -} - -void SetCurrentThreadName(const char *) -{ -} diff --git a/src/os/os2/os2_main.cpp b/src/os/os2/os2_main.cpp deleted file mode 100644 index 9f903e3868..0000000000 --- a/src/os/os2/os2_main.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file os2_main.cpp Main entry for OS/2. */ - -#include "../../stdafx.h" -#include "../../openttd.h" -#include "../../core/random_func.hpp" -#include "../../string_func.h" - -#include - -#include "../../safeguards.h" - -int CDECL main(int argc, char *argv[]) -{ - SetRandomSeed(time(nullptr)); - - /* Make sure our arguments contain only valid UTF-8 characters. */ - for (int i = 0; i < argc; i++) StrMakeValidInPlace(argv[i]); - - return openttd_main(argc, argv); -} diff --git a/src/os/unix/CMakeLists.txt b/src/os/unix/CMakeLists.txt index acdc73831f..1e8bb5d63d 100644 --- a/src/os/unix/CMakeLists.txt +++ b/src/os/unix/CMakeLists.txt @@ -1,12 +1,12 @@ add_files( crashlog_unix.cpp survey_unix.cpp - CONDITION UNIX AND NOT APPLE AND NOT OPTION_OS2 + CONDITION UNIX AND NOT APPLE ) add_files( unix.cpp - CONDITION UNIX AND NOT OPTION_OS2 + CONDITION UNIX ) add_files( @@ -14,6 +14,6 @@ add_files( CONDITION Fontconfig_FOUND ) -if(UNIX AND NOT APPLE AND NOT OPTION_OS2) +if(UNIX AND NOT APPLE) target_sources(openttd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/unix_main.cpp) endif() diff --git a/src/stdafx.h b/src/stdafx.h index ea90c310b0..b249d97e08 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -121,14 +121,6 @@ # define NODISCARD [[nodiscard]] #endif -#if defined(__WATCOMC__) -# define NORETURN -# define CDECL -# define FINAL -# define FALLTHROUGH -# include -#endif /* __WATCOMC__ */ - #if defined(_WIN32) # define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #endif @@ -236,7 +228,7 @@ # endif /* _WIN32 or WITH_ICONV */ #endif /* STRGEN || SETTINGSGEN */ -#if defined(_WIN32) || defined(__OS2__) && !defined(__INNOTEK_LIBC__) +#if defined(_WIN32) # define PATHSEP "\\" # define PATHSEPCHAR '\\' #else @@ -244,7 +236,7 @@ # define PATHSEPCHAR '/' #endif -#if defined(_MSC_VER) || defined(__WATCOMC__) +#if defined(_MSC_VER) # define PACK_N(type_dec, n) __pragma(pack(push, n)) type_dec; __pragma(pack(pop)) #elif defined(__MINGW32__) # define PRAGMA(x) _Pragma(#x) diff --git a/src/video/dedicated_v.cpp b/src/video/dedicated_v.cpp index bfd15425f8..4b492c7019 100644 --- a/src/video/dedicated_v.cpp +++ b/src/video/dedicated_v.cpp @@ -25,33 +25,6 @@ #include "../window_func.h" #include "dedicated_v.h" -#ifdef __OS2__ -# include /* gettimeofday */ -# include -# include -# include - -# define INCL_DOS -# include - -# define STDIN 0 /* file descriptor for standard input */ - -/** - * Switches OpenTTD to a console app at run-time, instead of a PM app - * Necessary to see stdout, etc. - */ -static void OS2_SwitchToConsoleMode() -{ - PPIB pib; - PTIB tib; - - DosGetInfoBlocks(&tib, &pib); - - /* Change flag from PM to VIO */ - pib->pib_ultype = 3; -} -#endif - #if defined(UNIX) # include /* gettimeofday */ # include @@ -160,11 +133,6 @@ const char *VideoDriver_Dedicated::Start(const StringList &parm) _set_error_mode(_OUT_TO_STDERR); #endif -#ifdef __OS2__ - /* For OS/2 we also need to switch to console mode instead of PM mode */ - OS2_SwitchToConsoleMode(); -#endif - Debug(driver, 1, "Loading dedicated server"); return nullptr; } @@ -181,7 +149,7 @@ void VideoDriver_Dedicated::MakeDirty(int left, int top, int width, int height) bool VideoDriver_Dedicated::ChangeResolution(int w, int h) { return false; } bool VideoDriver_Dedicated::ToggleFullscreen(bool fs) { return false; } -#if defined(UNIX) || defined(__OS2__) +#if defined(UNIX) static bool InputWaiting() { struct timeval tv; @@ -214,7 +182,7 @@ static void DedicatedHandleKeyInput() if (_exit_game) return; -#if defined(UNIX) || defined(__OS2__) +#if defined(UNIX) if (fgets(input_line, lengthof(input_line), stdin) == nullptr) return; #else /* Handle console input, and signal console thread, it can accept input again */ diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index d33ac77a65..af3571314f 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -446,7 +446,7 @@ static uint ConvertSdlKeyIntoMy(SDL_keysym *sym, WChar *character) } /* check scancode for BACKQUOTE key, because we want the key left of "1", not anything else (on non-US keyboards) */ -#if defined(_WIN32) || defined(__OS2__) +#if defined(_WIN32) if (sym->scancode == 41) key = WKC_BACKQUOTE; #elif defined(__APPLE__) if (sym->scancode == 10) key = WKC_BACKQUOTE;