diff options
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.in | 15 | ||||
-rw-r--r-- | opl/opl.c | 4 | ||||
-rw-r--r-- | pcsound/pcsound.c | 4 | ||||
-rw-r--r-- | pkg/Makefile.am | 10 | ||||
-rw-r--r-- | pkg/wince/.gitignore | 3 | ||||
-rw-r--r-- | pkg/wince/GNUmakefile | 35 | ||||
-rw-r--r-- | pkg/wince/common.py | 9 | ||||
-rw-r--r-- | pkg/wince/doom-cab.cfg | 27 | ||||
-rw-r--r-- | pkg/wince/heretic-cab.cfg | 27 | ||||
-rw-r--r-- | pkg/wince/hexen-cab.cfg | 27 | ||||
-rwxr-xr-x | pkg/wince/wince-cabgen | 668 | ||||
-rw-r--r-- | src/Makefile.am | 5 | ||||
-rw-r--r-- | src/d_iwad.c | 9 | ||||
-rw-r--r-- | src/doomtype.h | 7 | ||||
-rw-r--r-- | src/i_main.c | 9 | ||||
-rw-r--r-- | src/i_system.c | 47 | ||||
-rw-r--r-- | src/i_video.c | 13 | ||||
-rw-r--r-- | src/m_controls.c | 68 | ||||
-rw-r--r-- | src/setup/display.c | 4 | ||||
-rw-r--r-- | src/setup/execute.c | 4 | ||||
-rw-r--r-- | src/setup/mainmenu.c | 4 | ||||
-rw-r--r-- | textscreen/txt_sdl.c | 4 | ||||
-rw-r--r-- | wince/.gitignore | 5 | ||||
-rw-r--r-- | wince/Makefile.am | 17 | ||||
-rw-r--r-- | wince/README | 8 | ||||
-rw-r--r-- | wince/dummy.c | 8 | ||||
-rw-r--r-- | wince/env.c | 92 | ||||
-rw-r--r-- | wince/env.h | 24 | ||||
-rw-r--r-- | wince/errno.c | 20 | ||||
-rw-r--r-- | wince/errno.h | 17 | ||||
-rw-r--r-- | wince/fileops.c | 49 | ||||
-rw-r--r-- | wince/fileops.h | 14 | ||||
-rw-r--r-- | wince/libc_wince.h | 4 |
34 files changed, 5 insertions, 1258 deletions
diff --git a/Makefile.am b/Makefile.am index a853c76c..477f4207 100644 --- a/Makefile.am +++ b/Makefile.am @@ -54,7 +54,7 @@ doc_DATA=$(DOC_FILES) MAINTAINERCLEANFILES = $(AUX_DIST_GEN) -SUBDIRS=wince textscreen opl pcsound data src man +SUBDIRS=textscreen opl pcsound data src man DIST_SUBDIRS=pkg $(SUBDIRS) diff --git a/configure.in b/configure.in index 77a7e6e9..556cefea 100644 --- a/configure.in +++ b/configure.in @@ -90,20 +90,6 @@ AC_SDL_MAIN_WORKAROUND([ AC_CHECK_TOOL(WINDRES, windres, ) AC_CHECK_TOOL(STRIP, strip, ) -# Windows CE build? - -WINDOWS_CE=false - -case "$host" in - *mingw32ce*|*cegcc*|*wince*) - CFLAGS="-I\$(top_builddir)/wince $CFLAGS" - WINDOWS_CE=true - ;; - *) - ;; -esac - -AM_CONDITIONAL(WINDOWS_CE, $WINDOWS_CE) AM_CONDITIONAL(HAVE_WINDRES, test "$WINDRES" != "") AM_CONDITIONAL(HAVE_PYTHON, $HAVE_PYTHON) @@ -170,6 +156,5 @@ src/setup/setup-manifest.xml src/strife/Makefile textscreen/Makefile textscreen/examples/Makefile -wince/Makefile ]) @@ -28,10 +28,6 @@ #include <stdio.h> #include <stdlib.h> -#ifdef _WIN32_WCE -#include "libc_wince.h" -#endif - #include "SDL.h" #include "opl.h" diff --git a/pcsound/pcsound.c b/pcsound/pcsound.c index 529349ef..e7b50f0c 100644 --- a/pcsound/pcsound.c +++ b/pcsound/pcsound.c @@ -27,10 +27,6 @@ #include <stdlib.h> #include <string.h> -#ifdef _WIN32_WCE -#include "libc_wince.h" -#endif - #include "config.h" #include "pcsound.h" #include "pcsound_internal.h" diff --git a/pkg/Makefile.am b/pkg/Makefile.am index 538b9e1e..873b5bdf 100644 --- a/pkg/Makefile.am +++ b/pkg/Makefile.am @@ -21,17 +21,9 @@ osx/IWADController.m osx/IWADController.h \ osx/IWADLocation.m osx/IWADLocation.h \ osx/LauncherManager.m osx/LauncherManager.h -WINCE_FILES= \ -wince/GNUmakefile \ -wince/common.py \ -wince/doom-cab.cfg \ -wince/heretic-cab.cfg \ -wince/hexen-cab.cfg \ -wince/wince-cabgen - WIN32_FILES= \ win32/GNUmakefile \ win32/README -EXTRA_DIST=$(OSX_FILES) $(WINCE_FILES) $(WIN32_FILES) +EXTRA_DIST=$(OSX_FILES) $(WIN32_FILES) diff --git a/pkg/wince/.gitignore b/pkg/wince/.gitignore deleted file mode 100644 index 285c4716..00000000 --- a/pkg/wince/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -Makefile -Makefile.in -*.cab diff --git a/pkg/wince/GNUmakefile b/pkg/wince/GNUmakefile deleted file mode 100644 index 3b8171aa..00000000 --- a/pkg/wince/GNUmakefile +++ /dev/null @@ -1,35 +0,0 @@ - -include ../config.make - -# Doom: - -DOOM_CAB=$(PROGRAM_PREFIX)doom-$(PACKAGE_VERSION).cab -DOOM_CFG=doom-cab.cfg -DOOM_DEPS=$(shell ./wince-cabgen -d $(DOOM_CFG)) - -# Heretic: - -HERETIC_CAB=$(PROGRAM_PREFIX)heretic-$(PACKAGE_VERSION).cab -HERETIC_CFG=heretic-cab.cfg -HERETIC_DEPS=$(shell ./wince-cabgen -d $(HERETIC_CFG)) - -# Hexen: - -HEXEN_CAB=$(PROGRAM_PREFIX)hexen-$(PACKAGE_VERSION).cab -HEXEN_CFG=hexen-cab.cfg -HEXEN_DEPS=$(shell ./wince-cabgen -d $(HEXEN_CFG)) - -all: $(DOOM_CAB) $(HERETIC_CAB) $(HEXEN_CAB) - -$(DOOM_CAB) : $(DOOM_CFG) $(DOOM_DEPS) - ./wince-cabgen $< $@ - -$(HERETIC_CAB) : $(HERETIC_CFG) $(HERETIC_DEPS) - ./wince-cabgen $< $@ - -$(HEXEN_CAB) : $(HEXEN_CFG) $(HEXEN_DEPS) - ./wince-cabgen $< $@ - -clean: - rm -f $(DOOM_CAB) $(HERETIC_CAB) $(HEXEN_CAB) - diff --git a/pkg/wince/common.py b/pkg/wince/common.py deleted file mode 100644 index e142c2b7..00000000 --- a/pkg/wince/common.py +++ /dev/null @@ -1,9 +0,0 @@ - -# SDL library files that need to be installed: - -LIBRARIES = [ "SDL.dll", "SDL_mixer.dll", "libSDL_net-1-2-0.dll" ] - -def add_libraries(dir, files): - for lib in LIBRARIES: - files[dir + lib] = lib - diff --git a/pkg/wince/doom-cab.cfg b/pkg/wince/doom-cab.cfg deleted file mode 100644 index 2ffba5a3..00000000 --- a/pkg/wince/doom-cab.cfg +++ /dev/null @@ -1,27 +0,0 @@ - -from common import * - -app_name = "Chocolate Doom" -provider = "Simon Howard" -arch = "strongarm" - -# Install files: - -d = "$(PROGRAMS_GAMES)/Chocolate Doom/" -s = "$(START_GAMES)/" -src = "../../src/" - -files = { - d+"chocolate-doom.exe": src+"chocolate-doom.exe", - d+"chocolate-doom-setup.exe": src+"chocolate-setup.exe", -} - -add_libraries(d, files) - -# Start menu links: - -links = { - s+"Chocolate Doom.lnk": d+"chocolate-doom.exe", - s+"Chocolate Doom Setup.lnk": d+"chocolate-doom-setup.exe" -} - diff --git a/pkg/wince/heretic-cab.cfg b/pkg/wince/heretic-cab.cfg deleted file mode 100644 index ead2081f..00000000 --- a/pkg/wince/heretic-cab.cfg +++ /dev/null @@ -1,27 +0,0 @@ - -from common import * - -app_name = "Chocolate Heretic" -provider = "Simon Howard" -arch = "strongarm" - -# Install files: - -d = "$(PROGRAMS_GAMES)/Chocolate Heretic/" -s = "$(START_GAMES)/" -src = "../../src/" - -files = { - d+"chocolate-heretic.exe": src+"chocolate-heretic.exe", - d+"chocolate-heretic-setup.exe": src+"chocolate-setup.exe", -} - -add_libraries(d, files) - -# Start menu links: - -links = { - s+"Chocolate Heretic.lnk": d+"chocolate-heretic.exe", - s+"Chocolate Heretic Setup.lnk": d+"chocolate-heretic-setup.exe" -} - diff --git a/pkg/wince/hexen-cab.cfg b/pkg/wince/hexen-cab.cfg deleted file mode 100644 index 9d88f01d..00000000 --- a/pkg/wince/hexen-cab.cfg +++ /dev/null @@ -1,27 +0,0 @@ - -from common import * - -app_name = "Chocolate Hexen" -provider = "Simon Howard" -arch = "strongarm" - -# Install files: - -d = "$(PROGRAMS_GAMES)/Chocolate Hexen/" -s = "$(START_GAMES)/" -src = "../../src/" - -files = { - d+"chocolate-hexen.exe": src+"chocolate-hexen.exe", - d+"chocolate-hexen-setup.exe": src+"chocolate-setup.exe", -} - -add_libraries(d, files) - -# Start menu links: - -links = { - s+"Chocolate Hexen.lnk": d+"chocolate-hexen.exe", - s+"Chocolate Hexen Setup.lnk": d+"chocolate-hexen-setup.exe" -} - diff --git a/pkg/wince/wince-cabgen b/pkg/wince/wince-cabgen deleted file mode 100755 index 76845cf9..00000000 --- a/pkg/wince/wince-cabgen +++ /dev/null @@ -1,668 +0,0 @@ -#!/usr/bin/env python - -import os -import re -import shutil -import struct -import sys -import tempfile - -CAB_HEADER = "MSCE".encode("ascii") - -ARCHITECTURES = { - "shx-sh3": 103, - "shx-sh4": 104, - "i386": 386, - "i486": 486, - "i586": 586, - "powerpc-601": 601, - "powerpc-603": 603, - "powerpc-604": 604, - "powerpc-620": 620, - "powerpc-mpc821": 821, - "arm720": 1824, - "arm820": 2080, - "arm920": 2336, - "strongarm": 2577, - "mips-r4000": 4000, - "sh3": 10003, - "sh3e": 10004, - "sh4": 10005, - "alpha-21064": 21064, - "arm7tdmi": 70001, -} - -DIR_VARIABLES = { - "PROGRAMS": "%CE1%", # \Program Files - "WINDOWS": "%CE2%", # \Windows - "DESKTOP": "%CE3%", # \Windows\Desktop - "STARTUP": "%CE4%", # \Windows\StartUp - "DOCUMENTS": "%CE5%", # \My Documents - "PROGRAMS_ACCESSORIES": "%CE6%", # \Program Files\Accessories - "PROGRAMS_COMMUNICATIONS": "%CE7%", # \Program Files\Communications - "PROGRAMS_GAMES": "%CE8%", # \Program Files\Games - "PROGRAMS_OUTLOOK": "%CE9%", # \Program Files\Pocket Outlook - "PROGRAMS_OFFICE": "%CE10%", # \Program Files\Office - "WINDOWS_PROGRAMS": "%CE11%", # \Windows\Programs - "WINDOWS_ACCESSORIES": "%CE12%", # \Windows\Programs\Accessories - "WINDOWS_COMMUNICATIONS": "%CE13%", # \Windows\Programs\Communications - "WINDOWS_GAMES": "%CE14%", # \Windows\Programs\Games - "FONTS": "%CE15%", # \Windows\Fonts - "RECENT": "%CE16%", # \Windows\Recent - "FAVORITES": "%CE17%", # \Windows\Favorites - - "START_PROGRAMS": "%CE11%", # \Windows\Start Menu\Programs - "START_ACCESSORIES": "%CE12%", # \Windows\Start Menu\Accessories - "START_COMMUNICATIONS": "%CE13%", # \Windows\Start Menu\Communications - "START_GAMES": "%CE14%", # \Windows\Start Menu\Games - "START": "%CE17%", # \Windows\Start Menu -} - -def write_int16(f, value): - f.write(struct.pack("<H", value)) - -def write_int32(f, value): - f.write(struct.pack("<I", value)) - -# Pad a string with NUL characters so that it has a length that is -# a multiple of 4. At least one NUL is always added. - -def pad_string(s): - pad_len = 4 - (len(s) % 4) - return s + (pad_len * "\x00") - -class HeaderSection: - - def __init__(self, cab_header): - self.cab_header = cab_header - self.arch = None - self.app_name = None - self.provider = None - self.unsupported = None - - def __len__(self): - return 100 # header has fixed size - - def set_meta(self, arch, app_name, provider, unsupported): - - if arch not in ARCHITECTURES: - raise Exception("Unknown architecture '%s'" % arch) - - self.arch = ARCHITECTURES[arch] - - dictionary = self.cab_header.dictionary - - self.app_name = app_name - dictionary.get(self.app_name) - - self.provider = provider - dictionary.get(self.provider) - - self.unsupported = unsupported - dictionary.get(self.unsupported) - - def write(self, stream): - - # Basic header - - stream.write(CAB_HEADER) - write_int32(stream, 0) - write_int32(stream, len(self.cab_header)) - write_int32(stream, 0) - write_int32(stream, 1) - write_int32(stream, self.arch) - - # minimum Windows CE version: - write_int32(stream, 0) - write_int32(stream, 0) - write_int32(stream, 0) - write_int32(stream, 0) - write_int32(stream, 0) - write_int32(stream, 0) - - dictionary = self.cab_header.dictionary - - # Write number of entries in other sections: - - for section in self.cab_header.sections: - if section is not self: - write_int16(stream, section.num_entries()) - - # Write offsets of other sections: - - for section in self.cab_header.sections: - if section is not self: - offset = self.cab_header.get_section_offset(section) - write_int32(stream, offset) - - # Special strings: - - special_strings = ( - self.app_name, - self.provider, - self.unsupported - ) - - dictionary_offset = self.cab_header.get_section_offset(dictionary) - - for s in special_strings: - s_offset = dictionary.get_offset(s) - write_int16(stream, dictionary_offset + s_offset) - write_int16(stream, len(s) + 1) - - # Two left-over fields of unknown use: - - write_int16(stream, 0) - write_int16(stream, 0) - -class StringDictionary: - def __init__(self, cab_header): - self.cab_header = cab_header - self.string_list = [] - self.strings = {} - self.length = 0 - self.index = 1 - - # Get the length of the dictionary, in bytes. - - def __len__(self): - return self.length - - # Get the number of entries in the dictionary. - - def num_entries(self): - return len(self.strings) - - # Get the ID for the given string, adding it if necessary. - - def get(self, s): - # Is this a new string? Add it to the dictionary. - - if s not in self.strings: - offset = self.length - padded = pad_string(s) - - self.strings[s] = (self.index, offset) - self.string_list.append((self.index, padded)) - self.length += len(padded) + 4 - self.index += 1 - - return self.strings[s][0] - - # Get the offset of a particular string within the dictionary. - - def get_offset(self, s): - return self.strings[s][1] + 4 - - # Write the dictionary to the output stream. - - def write(self, stream): - - # Write out all strings: - - for i, s in self.string_list: - write_int16(stream, i) - write_int16(stream, len(s)) - stream.write(s.encode("ascii")) - -class DirectoryList: - def __init__(self, cab_header): - self.cab_header = cab_header - self.directories_list = [] - self.directories = {} - self.length = 0 - self.index = 1 - - def __len__(self): - return self.length - - def num_entries(self): - return len(self.directories_list) - - # Find whether the specified directory exists in the list - - def find(self, dir): - key = dir.lower() - - if key in self.directories: - return self.directories[key] - else: - return None - - # Get the ID for the given directory, adding it if necessary. - - def get(self, dir): - - key = dir.lower() - dictionary = self.cab_header.dictionary - - # Add new directory? - - if key not in self.directories: - - # Separate into individual directories, and map to strings: - - #dir_path = dir.split("\\") - #if dir_path[0] == "": - # dir_path = dir_path[1:] - dir_path = [ dir ] - - dir_path = list(map(lambda x: dictionary.get(x), dir_path)) - - self.directories[key] = self.index - self.directories_list.append((self.index, dir_path)) - self.length += 6 + 2 * len(dir_path) - self.index += 1 - - return self.directories[key] - - # Write the directory list to the specified stream. - - def write(self, stream): - for i, dir in self.directories_list: - write_int16(stream, i) - write_int16(stream, 2 * len(dir) + 2) - - for subdir in dir: - write_int16(stream, subdir) - - write_int16(stream, 0) - -class FileList: - def __init__(self, cab_header): - self.cab_header = cab_header - self.files = [] - self.length = 0 - self.index = 1 - - # Get the length of this section, in bytes. - - def __len__(self): - return self.length - - # Query whether the file list contains a particular file. - - def find(self, filename): - dirname, sep, target_basename = filename.rpartition("\\") - - target_basename = pad_string(target_basename) - - target_dir_id = self.cab_header.directory_list.find(dirname) - - if target_dir_id is None: - return None - else: - # Search the list of files: - - for i, dir_id, basename, file_no, flags in self.files: - if dir_id == target_dir_id and basename == target_basename: - return file_no - else: - return None - - # Get the number of entries in the file list - - def num_entries(self): - return len(self.files) - - # Add a file to the list. - - def add(self, filename, file_no, flags=0): - - dirname, sep, basename = filename.rpartition("\\") - - dir_id = self.cab_header.directory_list.get(dirname) - - padded = pad_string(basename) - - self.files.append((self.index, dir_id, padded, file_no, flags)) - self.length += 12 + len(padded) - self.index += 1 - - # Write this section to the output stream. - - def write(self, stream): - - for i, dir_id, filename, file_no, flags in self.files: - write_int16(stream, i) - write_int16(stream, dir_id) - write_int16(stream, file_no) - write_int32(stream, flags) - write_int16(stream, len(filename)) - stream.write(filename.encode("ascii")) - -# TODO? - -class RegHiveList: - def __len__(self): - return 0 - - def num_entries(self): - return 0 - - def write(self, stream): - pass - -class RegKeyList(): - def __len__(self): - return 0 - - def num_entries(self): - return 0 - - def write(self, stream): - pass - -class LinkList: - def __init__(self, cab_header): - self.cab_header = cab_header - self.links = [] - self.length = 0 - self.index = 1 - - def __len__(self): - return self.length - - def num_entries(self): - return len(self.links) - - # Determine the target type (dir/file) and ID: - - def __find_target(self, target): - file_id = self.cab_header.file_list.find(target) - - if file_id is not None: - return 1, file_id - - dir_list = self.cab_header.get_section(DirectoryList) - dir_id = dir_list.find(target) - - if dir_id is not None: - return 0, dir_id - - raise Exception("Link target '%s' not found" % target) - - def add(self, target, destination): - - target_type, target_id = self.__find_target(target) - - dest_path = destination.split("\\") - - # Leading \: - - if dest_path[0] == "": - dest_path = dest_path[1:] - - # %CEn% to specify the install root is handled differently for - # links than it is for files/dirs. - - match = re.match(r"\%CE(\d+)\%", dest_path[0]) - - if match: - base_dir = int(match.group(1)) - dest_path = dest_path[1:] - else: - base_dir = 0 - - # Map dirs that make up the path to strings. - - dictionary = self.cab_header.dictionary - dest_path = list(map(lambda x: dictionary.get(x), dest_path)) - - self.links.append((self.index, target_type, target_id, - base_dir, dest_path)) - self.index += 1 - self.length += 14 + 2 * len(dest_path) - - def write(self, stream): - - for i, target_type, target_id, base_dir, dest_path in self.links: - - write_int16(stream, i) - write_int16(stream, 0) - write_int16(stream, base_dir) - write_int16(stream, target_id) - write_int16(stream, target_type) - write_int16(stream, 2 * len(dest_path) + 2) - - for subdir in dest_path: - write_int16(stream, subdir) - - write_int16(stream, 0) - -class CabHeaderFile: - def __init__(self): - self.dictionary = StringDictionary(self) - self.directory_list = DirectoryList(self) - self.file_list = FileList(self) - - self.sections = [ - HeaderSection(self), - self.dictionary, - self.directory_list, - self.file_list, - RegHiveList(), - RegKeyList(), - LinkList(self) - ] - - def set_meta(self, *args): - header_section = self.get_section(HeaderSection) - header_section.set_meta(*args) - - def add_file(self, filename, file_no, flags=0): - files_section = self.get_section(FileList) - files_section.add(filename, file_no, flags) - - def add_link(self, target, destination): - links_section = self.get_section(LinkList) - links_section.add(target, destination) - - def get_section(self, section_class): - for section in self.sections: - if isinstance(section, section_class): - return section - else: - raise Exception("Can't find section of class %s" % section_class) - - def get_section_offset(self, section): - offset = 0 - - for s in self.sections: - if section is s: - return offset - offset += len(s) - else: - raise Exception("Section %s not found in list") - - def __len__(self): - result = 0 - for s in self.sections: - result += len(s) - return result - - def write(self, stream): - old_pos = 0 - for section in self.sections: - section.write(stream) - pos = stream.tell() - if pos != old_pos + len(section): - print(section) - raise Exception("Section is %i bytes long, but %i written" % \ - (len(section), pos - old_pos)) - old_pos = pos - -class CabFile: - def __init__(self, config): - self.cab_header = CabHeaderFile() - - self.__process_meta(config) - self.__process_files(config["files"]) - - if "links" in config: - self.__process_links(config["links"]) - - # Metadata: - - def __process_meta(self, config): - arch = config.get("arch") or "strongarm" - app_name = config.get("app_name") - provider = config.get("provider") - unsupported = config.get("unsupported") or "" - - if app_name is None or provider is None: - raise Exception("Application name and provider must be specified") - - self.cab_header.set_meta(arch, app_name, provider, unsupported) - self.app_name = app_name - - # Get the shortened 8.3 filename used for the specified file - # within the CAB. - - def __shorten_name(self, filename, file_no): - - # Strip down to base filename without extension: - - basename = os.path.basename(filename) - - if "." in basename: - basename = basename.rpartition(".")[0] - - # Remove non-alphanumeric characters: - - def only_alnum(x): - if x.isalnum(): - return x - else: - return "" - - cleaned_name = "".join(map(only_alnum, basename)) - short_name = cleaned_name[0:8] - - if len(short_name) < 8: - short_name = "0" * (8 - len(short_name)) + short_name - - return "%s.%03i" % (short_name, file_no) - - # Process the list of files to install: - - def __process_files(self, files): - self.files = [ self.app_name ] - - for filename, source_file in files.items(): - file_no = len(self.files) - filename = expand_path(filename) - self.cab_header.add_file(filename, file_no) - self.files.append(source_file) - - # Process the list of links: - - def __process_links(self, links): - for destination, target in links.items(): - target = expand_path(target) - destination = expand_path(destination) - self.cab_header.add_link(target, destination) - - # Write the header file: - - def __write_header(self, dir): - - basename = self.__shorten_name(self.files[0], 0) - filename = os.path.join(dir, basename) - - stream = open(filename, "wb") - self.cab_header.write(stream) - stream.close() - - return [ filename ] - - # Write the files: - - def __write_files(self, dir): - - result = [] - - for file_no in range(1, len(self.files)): - source_file = self.files[file_no] - basename = self.__shorten_name(source_file, file_no) - filename = os.path.join(dir, basename) - - shutil.copy(source_file, filename) - result.append(filename) - - return result - - # Output to a file: - - def write(self, filename): - - temp_dir = tempfile.mkdtemp() - - header = self.__write_header(temp_dir) - files = self.__write_files(temp_dir) - files.reverse() - - args = [ "lcab", "-n" ] + header + files + [ filename ] - - os.spawnlp(os.P_WAIT, "lcab", *args) - - # Clean up: - - for tmpfile in header + files: - os.remove(tmpfile) - os.rmdir(temp_dir) - -def expand_path(filename): - - # Replace Unix-style / path separators with DOS-style \ - - filename = filename.replace("/", "\\") - - # Expand $(xyz) path variables to their Windows equivalents: - - def replace_var(match): - var_name = match.group(1) - - if not var_name in DIR_VARIABLES: - raise Exception("Unknown variable '%s'" % var_name) - else: - return DIR_VARIABLES[var_name] - - return re.sub(r"\$\((.*?)\)", replace_var, filename) - -def read_config_file(filename): - f = open(filename) - - data = f.readlines() - data = "".join(data) - - f.close() - - prog = compile(data, filename, "exec") - result = {} - eval(prog, result) - - return result - -# List the files that the output CAB depends on. - -def print_dependencies(filename): - config = read_config_file(filename) - - files_list = config["files"] - - for dest, source_file in files_list.items(): - print(source_file) - -if len(sys.argv) < 3: - print("Usage: %s <config file> <output file>" % sys.argv[0]) - sys.exit(0) - -if sys.argv[1] == "-d": - print_dependencies(sys.argv[2]) -else: - config = read_config_file(sys.argv[1]) - - cab_file = CabFile(config) - cab_file.write(sys.argv[2]) - diff --git a/src/Makefile.am b/src/Makefile.am index b9112c21..e6754a6b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -40,8 +40,7 @@ net_structrw.c net_structrw.h \ z_native.c z_zone.h @PROGRAM_PREFIX@server_SOURCES=$(COMMON_SOURCE_FILES) $(DEDSERV_FILES) -@PROGRAM_PREFIX@server_LDADD = $(top_builddir)/wince/libc_wince.a \ - @LDFLAGS@ @SDLNET_LIBS@ +@PROGRAM_PREFIX@server_LDADD = @LDFLAGS@ @SDLNET_LIBS@ # Source files used by the game binaries (chocolate-doom, etc.) @@ -137,7 +136,6 @@ SOURCE_FILES_WITH_DEH = $(SOURCE_FILES) \ $(FEATURE_DEHACKED_SOURCE_FILES) EXTRA_LIBS = \ - $(top_builddir)/wince/libc_wince.a \ $(top_builddir)/textscreen/libtextscreen.a \ $(top_builddir)/pcsound/libpcsound.a \ $(top_builddir)/opl/libopl.a \ @@ -200,7 +198,6 @@ else @PROGRAM_PREFIX@setup_SOURCES=$(SETUP_FILES) $(COMMON_SOURCE_FILES) endif @PROGRAM_PREFIX@setup_LDADD = setup/libsetup.a \ - $(top_builddir)/wince/libc_wince.a \ $(top_builddir)/textscreen/libtextscreen.a \ @LDFLAGS@ @SDL_LIBS@ @SDLMIXER_LIBS@ @SDLNET_LIBS@ diff --git a/src/d_iwad.c b/src/d_iwad.c index 7e850d53..715687de 100644 --- a/src/d_iwad.c +++ b/src/d_iwad.c @@ -536,14 +536,7 @@ static void BuildIWADDirList(void) AddDoomWadPath(); -#if defined(_WIN32_WCE) - - // Windows CE locations: - - AddIWADDir("\\Storage Card"); - AddIWADDir(getenv("HOME")); - -#elif defined(_WIN32) +#ifdef _WIN32 // Search the registry and find where IWADs have been installed. diff --git a/src/doomtype.h b/src/doomtype.h index b458c1cd..fdcdb66b 100644 --- a/src/doomtype.h +++ b/src/doomtype.h @@ -64,13 +64,6 @@ #define PACKEDATTR #endif -// Windows CE is missing some vital ANSI C functions. We have to -// use our own replacements. - -#ifdef _WIN32_WCE -#include "libc_wince.h" -#endif - // C99 integer types; with gcc we just use this. Other compilers // should add conditional statements that define the C99 types. diff --git a/src/i_main.c b/src/i_main.c index fdfa3cbc..3714bee4 100644 --- a/src/i_main.c +++ b/src/i_main.c @@ -140,15 +140,6 @@ int main(int argc, char **argv) myargc = argc; myargv = argv; -#ifdef _WIN32_WCE - - // Windows CE has no environment, but SDL provides an implementation. - // Populate the environment with the values we normally find. - - PopulateEnvironment(); - -#endif - // Only schedule on a single core, if we have multiple // cores. This is to work around a bug in SDL_mixer. diff --git a/src/i_system.c b/src/i_system.c index 328fd9f5..5e3ae89e 100644 --- a/src/i_system.c +++ b/src/i_system.c @@ -94,51 +94,6 @@ void I_Tactile(int on, int off, int total) { } -#ifdef _WIN32_WCE - -// Windows CE-specific auto-allocation function that allocates the zone -// size based on the amount of memory reported free by the OS. - -static byte *AutoAllocMemory(int *size, int default_ram, int min_ram) -{ - MEMORYSTATUS memory_status; - byte *zonemem; - size_t available; - - // Get available physical RAM. We leave one megabyte extra free - // for the OS to keep running (my PDA becomes unstable if too - // much RAM is allocated) - - GlobalMemoryStatus(&memory_status); - available = memory_status.dwAvailPhys - 2 * 1024 * 1024; - - // Limit to default_ram if we have more than that available: - - if (available > default_ram * 1024 * 1024) - { - available = default_ram * 1024 * 1024; - } - - if (available < min_ram * 1024 * 1024) - { - I_Error("Unable to allocate %i MiB of RAM for zone", min_ram); - } - - // Allocate zone: - - *size = available; - zonemem = malloc(*size); - - if (zonemem == NULL) - { - I_Error("Failed when allocating %i bytes", *size); - } - - return zonemem; -} - -#else - // Zone memory auto-allocation function that allocates the zone size // by trying progressively smaller zone sizes until one is found that // works. @@ -181,8 +136,6 @@ static byte *AutoAllocMemory(int *size, int default_ram, int min_ram) return zonemem; } -#endif - byte *I_ZoneBase (int *size) { byte *zonemem; diff --git a/src/i_video.c b/src/i_video.c index bf8ab77b..406a8c5a 100644 --- a/src/i_video.c +++ b/src/i_video.c @@ -308,17 +308,6 @@ static boolean MouseShouldBeGrabbed() if (fullscreen) return true; -#ifdef _WIN32_WCE - - // On Windows CE, always grab input. This is because hardware - // button events are only acquired by SDL when the input is grabbed. - // Almost all Windows CE devices should have touch screens anyway, - // so this shouldn't affect mouse grabbing behavior. - - return true; - -#else - // Don't grab the mouse if mouse input is disabled if (!usemouse || nomouse) @@ -340,8 +329,6 @@ static boolean MouseShouldBeGrabbed() { return true; } - -#endif /* #ifndef _WIN32_WCE */ } void I_SetGrabMouseCallback(grabmouse_callback_t func) diff --git a/src/m_controls.c b/src/m_controls.c index 409f26bf..41b97fdd 100644 --- a/src/m_controls.c +++ b/src/m_controls.c @@ -370,70 +370,6 @@ void M_BindChatControls(unsigned int num_players) } } -#ifdef _WIN32_WCE - -#define WIN32_LEAN_AND_MEAN -#include <windows.h> - -static int SystemHasKeyboard(void) -{ - HKEY key; - DWORD valtype; - DWORD valsize; - DWORD result; - - if (RegOpenKeyExW(HKEY_CURRENT_USER, - L"\\Software\\Microsoft\\Shell", 0, - KEY_READ, &key) != ERROR_SUCCESS) - { - return 0; - } - - valtype = REG_SZ; - valsize = sizeof(DWORD); - - if (RegQueryValueExW(key, L"HasKeyboard", NULL, &valtype, - (LPBYTE) &result, &valsize) != ERROR_SUCCESS) - { - result = 0; - } - - // Close the key - - RegCloseKey(key); - - return result; -} - -// -// Apply custom defaults for Windows CE. -// - -static void M_ApplyWindowsCEDefaults(void) -{ - // If the system doesn't have a keyboard, patch the default - // configuration to use the hardware keys. - - if (!SystemHasKeyboard()) - { - key_use = KEY_F1; - key_fire = KEY_F2; - key_menu_activate = KEY_F3; - key_map_toggle = KEY_F4; - - key_menu_help = 0; - key_menu_save = 0; - key_menu_load = 0; - key_menu_volume = 0; - - key_menu_confirm = KEY_ENTER; - key_menu_back = KEY_F2; - key_menu_abort = KEY_F2; - } -} - -#endif - // // Apply custom patches to the default values depending on the // platform we are running on. @@ -441,8 +377,6 @@ static void M_ApplyWindowsCEDefaults(void) void M_ApplyPlatformDefaults(void) { -#ifdef _WIN32_WCE - M_ApplyWindowsCEDefaults(); -#endif + // no-op. Add your platform-specific patches here. } diff --git a/src/setup/display.c b/src/setup/display.c index d22cc67b..e988e36f 100644 --- a/src/setup/display.c +++ b/src/setup/display.c @@ -22,10 +22,6 @@ #include <stdlib.h> #include <string.h> -#ifdef _WIN32_WCE -#include "libc_wince.h" -#endif - #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include <windows.h> diff --git a/src/setup/execute.c b/src/setup/execute.c index 96a14fae..57fe71c3 100644 --- a/src/setup/execute.c +++ b/src/setup/execute.c @@ -28,10 +28,6 @@ #include <sys/types.h> -#if defined(_WIN32_WCE) -#include "libc_wince.h" -#endif - #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN diff --git a/src/setup/mainmenu.c b/src/setup/mainmenu.c index be4b0999..74e77fd5 100644 --- a/src/setup/mainmenu.c +++ b/src/setup/mainmenu.c @@ -23,10 +23,6 @@ #include <stdlib.h> #include <string.h> -#ifdef _WIN32_WCE -#include "libc_wince.h" -#endif - #include "config.h" #include "textscreen.h" diff --git a/textscreen/txt_sdl.c b/textscreen/txt_sdl.c index 29f8de4c..488399d3 100644 --- a/textscreen/txt_sdl.c +++ b/textscreen/txt_sdl.c @@ -178,11 +178,7 @@ static void ChooseFont(void) if (modes == NULL || modes == (SDL_Rect **) -1 || *modes == NULL) { -#ifdef _WIN32_WCE - font = &small_font; -#else font = &main_font; -#endif return; } diff --git a/wince/.gitignore b/wince/.gitignore deleted file mode 100644 index d4e88e5a..00000000 --- a/wince/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -Makefile -Makefile.in -.deps -tags -TAGS diff --git a/wince/Makefile.am b/wince/Makefile.am deleted file mode 100644 index c19471ca..00000000 --- a/wince/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ - -noinst_LIBRARIES=libc_wince.a - -if WINDOWS_CE - -libc_wince_a_SOURCES = \ - libc_wince.h \ - env.c env.h \ - errno.c errno.h \ - fileops.c fileops.h - -else - -libc_wince_a_SOURCES = dummy.c - -endif - diff --git a/wince/README b/wince/README deleted file mode 100644 index 76f282f4..00000000 --- a/wince/README +++ /dev/null @@ -1,8 +0,0 @@ -Windows CE is a horribly crippled operating system. The poor thing doesn't -even include a complete implementation of the ANSI standard C library. This -is a mini-library called libc_wince that implements some of the missing -library functions. I've only implemented those necessary to get Chocolate -Doom to compile. - -On non-Windows CE platforms it is just built as an empty library. - diff --git a/wince/dummy.c b/wince/dummy.c deleted file mode 100644 index 68af0caa..00000000 --- a/wince/dummy.c +++ /dev/null @@ -1,8 +0,0 @@ - -// Dummy source file so that the Windows CE workaround library is -// not empty. Some platforms don't like empty libraries. - -void DummyWindowsCEFunction(void) -{ -} - diff --git a/wince/env.c b/wince/env.c deleted file mode 100644 index c90b4c8d..00000000 --- a/wince/env.c +++ /dev/null @@ -1,92 +0,0 @@ -// -// "Extension" implementation of getenv for Windows CE. -// -// I (Simon Howard) release this file to the public domain. -// - -#include <stdlib.h> -#include <string.h> - -#include <windows.h> -#include <lmcons.h> -#include <secext.h> -#include <shlobj.h> - -#include "env.h" - -static void WCharToChar(wchar_t *src, char *dest, int buf_len) -{ - unsigned int len; - - len = wcslen(src) + 1; - - WideCharToMultiByte(CP_OEMCP, 0, src, len, dest, buf_len, NULL, NULL); -} - -static void SetEnvironment(char *env_string, wchar_t *wvalue) -{ - char value[MAX_PATH + 10]; - int env_len; - - // Construct the string for putenv: NAME=value - - env_len = strlen(env_string); - strcpy(value, env_string); - - WCharToChar(wvalue, value + env_len, sizeof(value) - env_len); - - // Set the environment variable: - - putenv(value); -} - -static int ReadOwnerName(wchar_t *value, DWORD len) -{ - HKEY key; - DWORD valtype; - - if (RegOpenKeyExW(HKEY_CURRENT_USER, - L"\\ControlPanel\\Owner", 0, - KEY_READ, &key) != ERROR_SUCCESS) - { - return 0; - } - - valtype = REG_SZ; - - if (RegQueryValueExW(key, L"Name", NULL, &valtype, - (LPBYTE) value, &len) != ERROR_SUCCESS) - { - return 0; - } - - // Close the key - - RegCloseKey(key); - - return 1; -} - -void PopulateEnvironment(void) -{ - wchar_t temp[MAX_PATH]; - - // Username: - - if (ReadOwnerName(temp, MAX_PATH)) - { - SetEnvironment("USER=", temp); - SetEnvironment("USERNAME=", temp); - } - - // Temp dir: - - GetTempPathW(MAX_PATH, temp); - SetEnvironment("TEMP=", temp); - - // Use My Documents dir as home: - - SHGetSpecialFolderPath(NULL, temp, CSIDL_PERSONAL, 0); - SetEnvironment("HOME=", temp); -} - diff --git a/wince/env.h b/wince/env.h deleted file mode 100644 index 96805c31..00000000 --- a/wince/env.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// "Extension" implementation of getenv for Windows CE. -// -// I (Simon Howard) release this file to the public domain. -// - -#ifndef WINCE_ENV_H -#define WINCE_ENV_H - -// SDL provides an implementation of getenv/putenv: - -#include "SDL_getenv.h" - -#ifndef getenv -#define getenv SDL_getenv -#endif -#ifndef putenv -#define putenv SDL_putenv -#endif - -extern void PopulateEnvironment(void); - -#endif /* #ifndef WINCE_ENV_H */ - diff --git a/wince/errno.c b/wince/errno.c deleted file mode 100644 index 28cd0899..00000000 --- a/wince/errno.c +++ /dev/null @@ -1,20 +0,0 @@ -// -// "Extension" implementation of errno.h for Windows CE. -// -// I (Simon Howard) release this file to the public domain. -// - -#include <windows.h> - -#include "errno.h" - -// This should really be a thread-local variable. Oh well. - -static int my_errno; - -int *_GetErrno() -{ - my_errno = GetLastError(); - return &my_errno; -} - diff --git a/wince/errno.h b/wince/errno.h deleted file mode 100644 index a2149b45..00000000 --- a/wince/errno.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// "Extension" implementation of errno.h for Windows CE. -// -// I (Simon Howard) release this file to the public domain. -// - -#ifndef WINCE_ERRNO_H -#define WINCE_ERRNO_H - -#define EISDIR 21 /* Is a directory */ - -extern int *_GetErrno(); - -#define errno (*_GetErrno()) - -#endif /* #ifndef WINCE_ERROR_H */ - diff --git a/wince/fileops.c b/wince/fileops.c deleted file mode 100644 index b0617bd3..00000000 --- a/wince/fileops.c +++ /dev/null @@ -1,49 +0,0 @@ -// -// "Extension" implementation of ANSI C file functions for Windows CE. -// -// I (Simon Howard) release this file to the public domain. -// - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <windows.h> - -#include "fileops.h" - -int remove(const char *pathname) -{ - wchar_t temp[MAX_PATH + 1]; - - MultiByteToWideChar(CP_OEMCP, - 0, - pathname, - strlen(pathname) + 1, - temp, - MAX_PATH); - - return DeleteFileW(temp) != 0; -} - -int rename(const char *oldpath, const char *newpath) -{ - wchar_t oldpath1[MAX_PATH + 1]; - wchar_t newpath1[MAX_PATH + 1]; - - MultiByteToWideChar(CP_OEMCP, - 0, - oldpath, - strlen(oldpath) + 1, - oldpath1, - MAX_PATH); - MultiByteToWideChar(CP_OEMCP, - 0, - newpath, - strlen(newpath) + 1, - newpath1, - MAX_PATH); - - return MoveFileW(oldpath1, newpath1); -} - diff --git a/wince/fileops.h b/wince/fileops.h deleted file mode 100644 index 757a34fd..00000000 --- a/wince/fileops.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// "Extension" implementation of ANSI C file functions for Windows CE. -// -// I (Simon Howard) release this file to the public domain. -// - -#ifndef WINCE_FILEOPS_H -#define WINCE_FILEOPS_H - -int remove(const char *pathname); -int rename(const char *oldpath, const char *newpath); - -#endif /* #ifndef WINCE_FILEOPS_H */ - diff --git a/wince/libc_wince.h b/wince/libc_wince.h deleted file mode 100644 index 0d6fac05..00000000 --- a/wince/libc_wince.h +++ /dev/null @@ -1,4 +0,0 @@ - -#include "env.h" -#include "fileops.h" - |