mirror of
https://github.com/Interlisp/maiko.git
synced 2026-03-16 06:47:22 +00:00
Compare commits
32 Commits
maiko-2404
...
fgh_github
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e68fb0dd57 | ||
|
|
11978b714f | ||
|
|
d55b9e55c6 | ||
|
|
666cceff7e | ||
|
|
cea720feb2 | ||
|
|
a3f3775c0a | ||
|
|
d2d4f18ade | ||
|
|
c3b7d1707d | ||
|
|
532731b716 | ||
|
|
29e5b374fe | ||
|
|
0c7b1cccd4 | ||
|
|
fae5c4956e | ||
|
|
86ba485c3e | ||
|
|
b88ea87fa8 | ||
|
|
91e0cea9d5 | ||
|
|
4ad14fa832 | ||
|
|
aa4df518a1 | ||
|
|
5c9b5ef4ec | ||
|
|
3ef7d2d68e | ||
|
|
68c74e4e79 | ||
|
|
c765ca5cc8 | ||
|
|
3ac46abc5c | ||
|
|
613ffd8aca | ||
|
|
db5d5a31e7 | ||
|
|
4becc6ad93 | ||
|
|
40a1a8dcd2 | ||
|
|
fd16058ca7 | ||
|
|
1426386830 | ||
|
|
de361e0258 | ||
|
|
3979cdd60d | ||
|
|
6c6b01f99c | ||
|
|
143c0f67cf |
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -1,6 +1,6 @@
|
||||
name: Build
|
||||
|
||||
on: [push, pull_request]
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
|
||||
defaults:
|
||||
run:
|
||||
@@ -11,7 +11,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04]
|
||||
os: [macos-12, macos-13, macos-14, macos-15, ubuntu-24.04, ubuntu-22.04, ubuntu-20.04]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install X11 dependencies on MacOS
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04]
|
||||
os: [macos-12, macos-13, macos-14, macos-15, ubuntu-24.04, ubuntu-22.04, ubuntu-20.04]
|
||||
env:
|
||||
BUILD_TYPE: Release
|
||||
steps:
|
||||
|
||||
2
.github/workflows/buildBuilderImage.yml
vendored
2
.github/workflows/buildBuilderImage.yml
vendored
@@ -29,7 +29,7 @@ jobs:
|
||||
|
||||
buildBuilder:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
# Checkout maiko
|
||||
|
||||
34
.github/workflows/buildRelease.yml
vendored
34
.github/workflows/buildRelease.yml
vendored
@@ -84,7 +84,7 @@ jobs:
|
||||
# the result of a workflow_dispatch or a workflow_call
|
||||
|
||||
inputs:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
draft: ${{ steps.one.outputs.draft }}
|
||||
force: ${{ steps.one.outputs.force }}
|
||||
@@ -116,7 +116,7 @@ jobs:
|
||||
|
||||
sentry:
|
||||
needs: inputs
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
release_not_built: ${{ steps.check.outputs.release_not_built }}
|
||||
|
||||
@@ -152,7 +152,7 @@ jobs:
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
# Checkout the actions for this repo owner
|
||||
@@ -185,14 +185,14 @@ jobs:
|
||||
|
||||
# Setup the Docker Machine Emulation environment.
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@v3
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
|
||||
# Setup the Docker Buildx funtion
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
# Do the Docker Build using the Dockerfile in the repository we
|
||||
# checked out. Save the results in a directory under /tmp to be used
|
||||
@@ -204,7 +204,7 @@ jobs:
|
||||
# Dockerfile, NOT HERE IN THE WORKFLOW.
|
||||
#
|
||||
- name: Build Docker Image and Save It Locally
|
||||
uses: docker/build-push-action@v4
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
build-args: |
|
||||
@@ -266,7 +266,7 @@ jobs:
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-12
|
||||
|
||||
steps:
|
||||
|
||||
@@ -290,13 +290,13 @@ jobs:
|
||||
# Uninstall exisitng X11 stuff preconfigured on runner then install correct X11 dependencies
|
||||
- name: Unistall X components already on the runner
|
||||
run: |
|
||||
brew uninstall --ignore-dependencies libxft
|
||||
brew uninstall --ignore-dependencies libxrender
|
||||
brew uninstall --ignore-dependencies libxext
|
||||
brew uninstall --ignore-dependencies libx11
|
||||
brew uninstall --ignore-dependencies xorgproto
|
||||
brew uninstall --ignore-dependencies libxdmcp
|
||||
brew uninstall --ignore-dependencies libxau
|
||||
brew uninstall --ignore-dependencies --force libxft
|
||||
brew uninstall --ignore-dependencies --force libxrender
|
||||
brew uninstall --ignore-dependencies --force libxext
|
||||
brew uninstall --ignore-dependencies --force libx11
|
||||
brew uninstall --ignore-dependencies --force xorgproto
|
||||
brew uninstall --ignore-dependencies --force libxdmcp
|
||||
brew uninstall --ignore-dependencies --force libxau
|
||||
|
||||
- name: Install X11 dependencies on MacOS
|
||||
env:
|
||||
@@ -412,7 +412,7 @@ jobs:
|
||||
run: |
|
||||
wget https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe
|
||||
Unblock-File setup-x86_64.exe
|
||||
Start-Process setup-x86_64.exe -Wait -ArgumentList @("--root", ".\cygwin", "--quiet-mode", "--no-admin", "--wait", "--no-shortcuts", "--no-write-registry", "--verbose", "--site", "http://www.gtlib.gatech.edu/pub/cygwin/", "--packages", "nano,binutils,make,cmake,gcc,clang")
|
||||
Start-Process setup-x86_64.exe -Wait -ArgumentList @("--root", ".\cygwin", "--quiet-mode", "--no-admin", "--wait", "--no-shortcuts", "--no-write-registry", "--verbose", "--site", "https://mirrors.kernel.org/sourceware/cygwin/", "--packages", "nano,binutils,make,cmake,gcc,clang")
|
||||
cygwin\bin\bash -login -c 'sed -i -e "s/^none/#none/" /etc/fstab; echo "none / cygdrive binary,posix=0,user 0 0" >>/etc/fstab'
|
||||
|
||||
# Retrieve SDL2 and install in cygwin
|
||||
@@ -487,7 +487,7 @@ jobs:
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
|
||||
@@ -554,7 +554,7 @@ jobs:
|
||||
|
||||
complete:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
outputs:
|
||||
build_successful: ${{ steps.output.outputs.build_successful }}
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -10,6 +10,7 @@ cmake-build-*/**
|
||||
.idea/
|
||||
*.m68k-x/**
|
||||
*.m68k/**
|
||||
*.386-sdl/**
|
||||
*.386-x/**
|
||||
*.386/**
|
||||
*.ppc-x/**
|
||||
|
||||
@@ -37,16 +37,21 @@ IF(NEED_LIB_M)
|
||||
SET(MAIKO_LIBRARIES m)
|
||||
ENDIF()
|
||||
|
||||
SET (MAIKO_RELEASE 351 CACHE STRING "Release version to build. Release: 115, 200, 201, 210, 300, 350, 351")
|
||||
SET_PROPERTY(CACHE MAIKO_RELEASE PROPERTY STRINGS 115 200 201 210 300 350 351)
|
||||
|
||||
MESSAGE("-- Configured for release ${MAIKO_RELEASE}")
|
||||
SET(MAIKO_DEFINITIONS
|
||||
"-DRELEASE=351"
|
||||
"-DRELEASE=${MAIKO_RELEASE}"
|
||||
)
|
||||
|
||||
SET(MAIKO_INIT_DEFINITIONS
|
||||
"-DRELEASE=351" "-DINIT" "-DNOVERSION"
|
||||
"-DRELEASE=${MAIKO_RELEASE}" "-DINIT" "-DNOVERSION"
|
||||
)
|
||||
|
||||
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
|
||||
OPTION(MAIKO_DISPLAY_SDL "Use SDL for display." OFF)
|
||||
SET(MAIKO_DISPLAY_SDL OFF CACHE STRING "Use SDL for display. Version: OFF, 2, 3")
|
||||
SET_PROPERTY(CACHE MAIKO_DISPLAY_SDL PROPERTY STRINGS OFF 2 3)
|
||||
|
||||
IF(MAIKO_DISPLAY_X11)
|
||||
FIND_PACKAGE(X11 REQUIRED)
|
||||
@@ -81,19 +86,34 @@ IF(MAIKO_DISPLAY_X11)
|
||||
MESSAGE("-- Configured for X11 display")
|
||||
ENDIF()
|
||||
|
||||
IF(MAIKO_DISPLAY_SDL)
|
||||
FIND_PACKAGE(SDL2 REQUIRED)
|
||||
IF(MAIKO_DISPLAY_SDL STREQUAL "2")
|
||||
FIND_PACKAGE(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
|
||||
SET(MAIKO_DISPLAY_SDL_DEFINITIONS
|
||||
"-DSDL"
|
||||
"-DSDL=2"
|
||||
)
|
||||
SET(MAIKO_DISPLAY_SDL_LIBRARIES ${SDL2_LIBRARIES})
|
||||
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL2::Headers)
|
||||
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL2::SDL2)
|
||||
SET(MAIKO_DISPLAY_SDL_SRCS
|
||||
src/sdl.c
|
||||
)
|
||||
SET(MAIKO_DISPLAY_SDL_HDRS
|
||||
inc/sdldefs.h
|
||||
)
|
||||
MESSAGE("-- Configured for SDL display")
|
||||
MESSAGE("-- Configured for SDL2 display")
|
||||
ELSEIF(MAIKO_DISPLAY_SDL STREQUAL "3")
|
||||
FIND_PACKAGE(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
|
||||
SET(MAIKO_DISPLAY_SDL_DEFINITIONS
|
||||
"-DSDL=3"
|
||||
)
|
||||
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL3::Headers)
|
||||
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL3::SDL3)
|
||||
SET(MAIKO_DISPLAY_SDL_SRCS
|
||||
src/sdl.c
|
||||
)
|
||||
SET(MAIKO_DISPLAY_SDL_HDRS
|
||||
inc/sdldefs.h
|
||||
)
|
||||
MESSAGE("-- Configured for SDL3 display")
|
||||
ENDIF()
|
||||
|
||||
# according to: https://cmake.org/pipermail/cmake/2016-October/064342.html
|
||||
@@ -428,23 +448,23 @@ ADD_CUSTOM_TARGET(gen-vdate
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c)
|
||||
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(lde PUBLIC inc)
|
||||
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(lde PRIVATE inc)
|
||||
IF(MAIKO_DISPLAY_X11)
|
||||
# Tell it that the X11 launcher is available.
|
||||
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
# This is needed so that it can call XOpenDisplay.
|
||||
TARGET_LINK_LIBRARIES(lde X11::X11)
|
||||
ENDIF()
|
||||
|
||||
IF(MAIKO_DISPLAY_SDL)
|
||||
# Tell it that the SDL launcher is available.
|
||||
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_SDL_DEFINITIONS})
|
||||
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_SDL_DEFINITIONS})
|
||||
ENDIF()
|
||||
|
||||
ADD_EXECUTABLE(ldeether src/ldeether.c src/dlpi.c)
|
||||
TARGET_COMPILE_DEFINITIONS(ldeether PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldeether PUBLIC inc)
|
||||
TARGET_COMPILE_DEFINITIONS(ldeether PRIVATE ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldeether PRIVATE inc)
|
||||
|
||||
IF(MAIKO_DISPLAY_X11)
|
||||
ADD_EXECUTABLE(ldex
|
||||
@@ -455,8 +475,8 @@ IF(MAIKO_DISPLAY_X11)
|
||||
${MAIKO_DISPLAY_X11_SRCS}
|
||||
${MAIKO_DISPLAY_X11_HDRS}
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS(ldex PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldex PUBLIC inc)
|
||||
TARGET_COMPILE_DEFINITIONS(ldex PRIVATE ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldex PRIVATE inc)
|
||||
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
|
||||
|
||||
ADD_EXECUTABLE(ldeinit
|
||||
@@ -467,8 +487,8 @@ IF(MAIKO_DISPLAY_X11)
|
||||
${MAIKO_DISPLAY_X11_SRCS}
|
||||
${MAIKO_DISPLAY_X11_HDRS}
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS(ldeinit PUBLIC ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldeinit PUBLIC inc)
|
||||
TARGET_COMPILE_DEFINITIONS(ldeinit PRIVATE ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldeinit PRIVATE inc)
|
||||
TARGET_LINK_LIBRARIES(ldeinit ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
@@ -481,20 +501,32 @@ IF(MAIKO_DISPLAY_SDL)
|
||||
${MAIKO_DISPLAY_SDL_SRCS}
|
||||
${MAIKO_DISPLAY_SDL_HDRS}
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS(ldesdl PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldesdl PUBLIC inc)
|
||||
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${SDL2_INCLUDE_DIRS})
|
||||
TARGET_COMPILE_DEFINITIONS(ldesdl PRIVATE ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE inc)
|
||||
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${MAIKO_DISPLAY_SDL_INCLUDE_DIRS})
|
||||
|
||||
IF(APPLE)
|
||||
IF(MAIKO_DISPLAY_SDL STREQUAL "3")
|
||||
#
|
||||
# Until CMake properly supports .xcframeworks, https://gitlab.kitware.com/cmake/cmake/-/issues/25998
|
||||
# we need to manually set the RPATH to produce a working executable
|
||||
#
|
||||
MESSAGE("-- Applying fixup for macOS RPATH for SDL3.xcframework")
|
||||
SET_PROPERTY(TARGET ldesdl APPEND PROPERTY BUILD_RPATH "/Library/Frameworks/SDL3.xcframework/macos-arm64_x86_64")
|
||||
#
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
TARGET_LINK_LIBRARIES(ldesdl ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_SDL_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
ADD_EXECUTABLE(mkvdate src/mkvdate.c)
|
||||
TARGET_COMPILE_DEFINITIONS(mkvdate PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(mkvdate PUBLIC inc)
|
||||
TARGET_COMPILE_DEFINITIONS(mkvdate PRIVATE ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(mkvdate PRIVATE inc)
|
||||
|
||||
ADD_EXECUTABLE(setsout src/setsout.c src/byteswap.c)
|
||||
TARGET_COMPILE_DEFINITIONS(setsout PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(setsout PUBLIC inc)
|
||||
TARGET_COMPILE_DEFINITIONS(setsout PRIVATE ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(setsout PRIVATE inc)
|
||||
|
||||
ADD_EXECUTABLE(tstsout src/tstsout.c src/byteswap.c)
|
||||
TARGET_COMPILE_DEFINITIONS(tstsout PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(tstsout PUBLIC inc)
|
||||
TARGET_COMPILE_DEFINITIONS(tstsout PRIVATE ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(tstsout PRIVATE inc)
|
||||
|
||||
1239
bin/config.guess
vendored
1239
bin/config.guess
vendored
File diff suppressed because it is too large
Load Diff
310
bin/config.sub
vendored
310
bin/config.sub
vendored
@@ -1,12 +1,14 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2020 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2024 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2020-08-17'
|
||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||
|
||||
timestamp='2024-01-01'
|
||||
|
||||
# This file 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; either version 3 of the License, or
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
@@ -33,7 +35,7 @@ timestamp='2020-08-17'
|
||||
# Otherwise, we print the canonical config type on stdout and succeed.
|
||||
|
||||
# You can get the latest version of this script from:
|
||||
# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||
# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
|
||||
|
||||
# This file is supposed to be the same for all GNU packages
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
@@ -50,6 +52,13 @@ timestamp='2020-08-17'
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# It is wrong to echo any other type of specification.
|
||||
|
||||
# The "shellcheck disable" line above the timestamp inhibits complaints
|
||||
# about features and limitations of the classic Bourne shell that were
|
||||
# superseded or lifted in POSIX. However, this script identifies a wide
|
||||
# variety of pre-POSIX systems that do not have POSIX shells at all, and
|
||||
# even some reasonably current systems (Solaris 10 as case-in-point) still
|
||||
# have a pre-POSIX /bin/sh.
|
||||
|
||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
|
||||
usage="\
|
||||
@@ -67,13 +76,13 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright 1992-2020 Free Software Foundation, Inc.
|
||||
Copyright 1992-2024 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
||||
help="
|
||||
Try \`$me --help' for more information."
|
||||
Try '$me --help' for more information."
|
||||
|
||||
# Parse command line
|
||||
while test $# -gt 0 ; do
|
||||
@@ -112,14 +121,16 @@ esac
|
||||
|
||||
# Split fields of configuration type
|
||||
# shellcheck disable=SC2162
|
||||
saved_IFS=$IFS
|
||||
IFS="-" read field1 field2 field3 field4 <<EOF
|
||||
$1
|
||||
EOF
|
||||
IFS=$saved_IFS
|
||||
|
||||
# Separate into logical components for further validation
|
||||
case $1 in
|
||||
*-*-*-*-*)
|
||||
echo Invalid configuration \`"$1"\': more than four components >&2
|
||||
echo "Invalid configuration '$1': more than four components" >&2
|
||||
exit 1
|
||||
;;
|
||||
*-*-*-*)
|
||||
@@ -134,7 +145,8 @@ case $1 in
|
||||
nto-qnx* | linux-* | uclinux-uclibc* \
|
||||
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
|
||||
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
|
||||
| storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
|
||||
| windows-* )
|
||||
basic_machine=$field1
|
||||
basic_os=$maybe_os
|
||||
;;
|
||||
@@ -163,6 +175,10 @@ case $1 in
|
||||
basic_machine=$field1
|
||||
basic_os=$field2
|
||||
;;
|
||||
zephyr*)
|
||||
basic_machine=$field1-unknown
|
||||
basic_os=$field2
|
||||
;;
|
||||
# Manufacturers
|
||||
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
|
||||
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
|
||||
@@ -922,11 +938,13 @@ case $basic_machine in
|
||||
|
||||
*-*)
|
||||
# shellcheck disable=SC2162
|
||||
saved_IFS=$IFS
|
||||
IFS="-" read cpu vendor <<EOF
|
||||
$basic_machine
|
||||
EOF
|
||||
IFS=$saved_IFS
|
||||
;;
|
||||
# We use `pc' rather than `unknown'
|
||||
# We use 'pc' rather than 'unknown'
|
||||
# because (1) that's what they normally are, and
|
||||
# (2) the word "unknown" tends to confuse beginning users.
|
||||
i*86 | x86_64)
|
||||
@@ -1003,6 +1021,11 @@ case $cpu-$vendor in
|
||||
;;
|
||||
|
||||
# Here we normalize CPU types with a missing or matching vendor
|
||||
armh-unknown | armh-alt)
|
||||
cpu=armv7l
|
||||
vendor=alt
|
||||
basic_os=${basic_os:-linux-gnueabihf}
|
||||
;;
|
||||
dpx20-unknown | dpx20-bull)
|
||||
cpu=rs6000
|
||||
vendor=bull
|
||||
@@ -1053,7 +1076,7 @@ case $cpu-$vendor in
|
||||
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
||||
cpu=i586
|
||||
;;
|
||||
pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
|
||||
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
|
||||
cpu=i686
|
||||
;;
|
||||
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
|
||||
@@ -1104,7 +1127,7 @@ case $cpu-$vendor in
|
||||
xscale-* | xscalee[bl]-*)
|
||||
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
|
||||
;;
|
||||
arm64-*)
|
||||
arm64-* | aarch64le-*)
|
||||
cpu=aarch64
|
||||
;;
|
||||
|
||||
@@ -1158,14 +1181,14 @@ case $cpu-$vendor in
|
||||
case $cpu in
|
||||
1750a | 580 \
|
||||
| a29k \
|
||||
| aarch64 | aarch64_be \
|
||||
| aarch64 | aarch64_be | aarch64c | arm64ec \
|
||||
| abacus \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
|
||||
| alphapca5[67] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| amdgcn \
|
||||
| arc | arceb \
|
||||
| arc | arceb | arc32 | arc64 \
|
||||
| arm | arm[lb]e | arme[lb] | armv* \
|
||||
| avr | avr32 \
|
||||
| asmjs \
|
||||
@@ -1177,45 +1200,29 @@ case $cpu-$vendor in
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| e2k | elxsi | epiphany \
|
||||
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
|
||||
| javascript \
|
||||
| h8300 | h8500 \
|
||||
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| hexagon \
|
||||
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| k1om \
|
||||
| kvx \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| loongarch32 | loongarch64 \
|
||||
| m32c | m32r | m32rle \
|
||||
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
|
||||
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
|
||||
| m88110 | m88k | maxq | mb | mcore | mep | metag \
|
||||
| microblaze | microblazeel \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64eb | mips64el \
|
||||
| mips64octeon | mips64octeonel \
|
||||
| mips64orion | mips64orionel \
|
||||
| mips64r5900 | mips64r5900el \
|
||||
| mips64vr | mips64vrel \
|
||||
| mips64vr4100 | mips64vr4100el \
|
||||
| mips64vr4300 | mips64vr4300el \
|
||||
| mips64vr5000 | mips64vr5000el \
|
||||
| mips64vr5900 | mips64vr5900el \
|
||||
| mipsisa32 | mipsisa32el \
|
||||
| mipsisa32r2 | mipsisa32r2el \
|
||||
| mipsisa32r6 | mipsisa32r6el \
|
||||
| mipsisa64 | mipsisa64el \
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64r6 | mipsisa64r6el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipsr5900 | mipsr5900el \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mips* \
|
||||
| mmix \
|
||||
| mn10200 | mn10300 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nanomips* \
|
||||
| nds32 | nds32le | nds32be \
|
||||
| nfp \
|
||||
| nios | nios2 | nios2eb | nios2el \
|
||||
@@ -1229,7 +1236,7 @@ case $cpu-$vendor in
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
|
||||
| pru \
|
||||
| pyramid \
|
||||
| riscv | riscv32 | riscv64 \
|
||||
| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
|
||||
| rl78 | romp | rs6000 | rx \
|
||||
| s390 | s390x \
|
||||
| score \
|
||||
@@ -1241,11 +1248,13 @@ case $cpu-$vendor in
|
||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
|
||||
| spu \
|
||||
| tahoe \
|
||||
| thumbv7* \
|
||||
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
|
||||
| tron \
|
||||
| ubicom32 \
|
||||
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
|
||||
| vax \
|
||||
| vc4 \
|
||||
| visium \
|
||||
| w65 \
|
||||
| wasm32 | wasm64 \
|
||||
@@ -1257,7 +1266,7 @@ case $cpu-$vendor in
|
||||
;;
|
||||
|
||||
*)
|
||||
echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
|
||||
echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -1278,34 +1287,45 @@ esac
|
||||
|
||||
# Decode manufacturer-specific aliases for certain operating systems.
|
||||
|
||||
if test x$basic_os != x
|
||||
if test x"$basic_os" != x
|
||||
then
|
||||
|
||||
# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
|
||||
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
|
||||
# set os.
|
||||
obj=
|
||||
case $basic_os in
|
||||
gnu/linux*)
|
||||
kernel=linux
|
||||
os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`
|
||||
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
|
||||
;;
|
||||
os2-emx)
|
||||
kernel=os2
|
||||
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
|
||||
;;
|
||||
nto-qnx*)
|
||||
kernel=nto
|
||||
os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`
|
||||
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
|
||||
;;
|
||||
*-*)
|
||||
# shellcheck disable=SC2162
|
||||
saved_IFS=$IFS
|
||||
IFS="-" read kernel os <<EOF
|
||||
$basic_os
|
||||
EOF
|
||||
IFS=$saved_IFS
|
||||
;;
|
||||
# Default OS when just kernel was specified
|
||||
nto*)
|
||||
kernel=nto
|
||||
os=`echo $basic_os | sed -e 's|nto|qnx|'`
|
||||
os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
|
||||
;;
|
||||
linux*)
|
||||
kernel=linux
|
||||
os=`echo $basic_os | sed -e 's|linux|gnu|'`
|
||||
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
|
||||
;;
|
||||
managarm*)
|
||||
kernel=managarm
|
||||
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
|
||||
;;
|
||||
*)
|
||||
kernel=
|
||||
@@ -1326,7 +1346,7 @@ case $os in
|
||||
os=cnk
|
||||
;;
|
||||
solaris1 | solaris1.*)
|
||||
os=`echo $os | sed -e 's|solaris1|sunos4|'`
|
||||
os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
|
||||
;;
|
||||
solaris)
|
||||
os=solaris2
|
||||
@@ -1355,7 +1375,7 @@ case $os in
|
||||
os=sco3.2v4
|
||||
;;
|
||||
sco3.2.[4-9]*)
|
||||
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
|
||||
os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
|
||||
;;
|
||||
sco*v* | scout)
|
||||
# Don't match below
|
||||
@@ -1367,13 +1387,7 @@ case $os in
|
||||
os=psos
|
||||
;;
|
||||
qnx*)
|
||||
case $cpu in
|
||||
x86 | i*86)
|
||||
;;
|
||||
*)
|
||||
os=nto-$os
|
||||
;;
|
||||
esac
|
||||
os=qnx
|
||||
;;
|
||||
hiux*)
|
||||
os=hiuxwe2
|
||||
@@ -1437,7 +1451,7 @@ case $os in
|
||||
;;
|
||||
# Preserve the version number of sinix5.
|
||||
sinix5.*)
|
||||
os=`echo $os | sed -e 's|sinix|sysv|'`
|
||||
os=`echo "$os" | sed -e 's|sinix|sysv|'`
|
||||
;;
|
||||
sinix*)
|
||||
os=sysv4
|
||||
@@ -1478,10 +1492,16 @@ case $os in
|
||||
os=eabi
|
||||
;;
|
||||
*)
|
||||
os=elf
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
aout* | coff* | elf* | pe*)
|
||||
# These are machine code file formats, not OSes
|
||||
obj=$os
|
||||
os=
|
||||
;;
|
||||
*)
|
||||
# No normalization, but not necessarily accepted, that comes below.
|
||||
;;
|
||||
@@ -1500,12 +1520,15 @@ else
|
||||
# system, and we'll never get to this point.
|
||||
|
||||
kernel=
|
||||
obj=
|
||||
case $cpu-$vendor in
|
||||
score-*)
|
||||
os=elf
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
spu-*)
|
||||
os=elf
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
*-acorn)
|
||||
os=riscix1.2
|
||||
@@ -1515,28 +1538,35 @@ case $cpu-$vendor in
|
||||
os=gnu
|
||||
;;
|
||||
arm*-semi)
|
||||
os=aout
|
||||
os=
|
||||
obj=aout
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=coff
|
||||
os=
|
||||
obj=coff
|
||||
;;
|
||||
c8051-*)
|
||||
os=elf
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
clipper-intergraph)
|
||||
os=clix
|
||||
;;
|
||||
hexagon-*)
|
||||
os=elf
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
tic54x-*)
|
||||
os=coff
|
||||
os=
|
||||
obj=coff
|
||||
;;
|
||||
tic55x-*)
|
||||
os=coff
|
||||
os=
|
||||
obj=coff
|
||||
;;
|
||||
tic6x-*)
|
||||
os=coff
|
||||
os=
|
||||
obj=coff
|
||||
;;
|
||||
# This must come before the *-dec entry.
|
||||
pdp10-*)
|
||||
@@ -1558,19 +1588,24 @@ case $cpu-$vendor in
|
||||
os=sunos3
|
||||
;;
|
||||
m68*-cisco)
|
||||
os=aout
|
||||
os=
|
||||
obj=aout
|
||||
;;
|
||||
mep-*)
|
||||
os=elf
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
mips*-cisco)
|
||||
os=elf
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
mips*-*)
|
||||
os=elf
|
||||
mips*-*|nanomips*-*)
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
or32-*)
|
||||
os=coff
|
||||
os=
|
||||
obj=coff
|
||||
;;
|
||||
*-tti) # must be before sparc entry or we get the wrong os.
|
||||
os=sysv3
|
||||
@@ -1579,7 +1614,8 @@ case $cpu-$vendor in
|
||||
os=sunos4.1.1
|
||||
;;
|
||||
pru-*)
|
||||
os=elf
|
||||
os=
|
||||
obj=elf
|
||||
;;
|
||||
*-be)
|
||||
os=beos
|
||||
@@ -1660,10 +1696,12 @@ case $cpu-$vendor in
|
||||
os=uxpv
|
||||
;;
|
||||
*-rom68k)
|
||||
os=coff
|
||||
os=
|
||||
obj=coff
|
||||
;;
|
||||
*-*bug)
|
||||
os=coff
|
||||
os=
|
||||
obj=coff
|
||||
;;
|
||||
*-apple)
|
||||
os=macos
|
||||
@@ -1681,13 +1719,20 @@ esac
|
||||
|
||||
fi
|
||||
|
||||
# Now, validate our (potentially fixed-up) OS.
|
||||
# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
|
||||
|
||||
case $os in
|
||||
# Sometimes we do "kernel-abi", so those need to count as OSes.
|
||||
musl* | newlib* | uclibc*)
|
||||
# Sometimes we do "kernel-libc", so those need to count as OSes.
|
||||
llvm* | musl* | newlib* | relibc* | uclibc*)
|
||||
;;
|
||||
# Likewise for "kernel-libc"
|
||||
eabi | eabihf | gnueabi | gnueabihf)
|
||||
# Likewise for "kernel-abi"
|
||||
eabi* | gnueabi*)
|
||||
;;
|
||||
# VxWorks passes extra cpu info in the 4th filed.
|
||||
simlinux | simwindows | spe)
|
||||
;;
|
||||
# See `case $cpu-$os` validation below
|
||||
ghcjs)
|
||||
;;
|
||||
# Now accept the basic system types.
|
||||
# The portable systems comes first.
|
||||
@@ -1697,20 +1742,20 @@ case $os in
|
||||
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
|
||||
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
|
||||
| hiux* | abug | nacl* | netware* | windows* \
|
||||
| os9* | macos* | osx* | ios* \
|
||||
| os9* | macos* | osx* | ios* | tvos* | watchos* \
|
||||
| mpw* | magic* | mmixware* | mon960* | lnews* \
|
||||
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
|
||||
| aos* | aros* | cloudabi* | sortix* | twizzler* \
|
||||
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
|
||||
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
|
||||
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
|
||||
| bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
|
||||
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
|
||||
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
|
||||
| bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
|
||||
| ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
|
||||
| bosx* | nextstep* | cxux* | oabi* \
|
||||
| ptx* | ecoff* | winnt* | domain* | vsta* \
|
||||
| udi* | lites* | ieee* | go32* | aux* | hcos* \
|
||||
| chorusrdb* | cegcc* | glidix* \
|
||||
| cygwin* | msys* | pe* | moss* | proelf* | rtems* \
|
||||
| chorusrdb* | cegcc* | glidix* | serenity* \
|
||||
| cygwin* | msys* | moss* | proelf* | rtems* \
|
||||
| midipix* | mingw32* | mingw64* | mint* \
|
||||
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
|
||||
| interix* | uwin* | mks* | rhapsody* | darwin* \
|
||||
@@ -1722,42 +1767,117 @@ case $os in
|
||||
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
|
||||
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
|
||||
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
|
||||
| nsk* | powerunix* | genode* | zvmoe* )
|
||||
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
|
||||
| fiwix* | mlibc* | cos* | mbr* | ironclad* )
|
||||
;;
|
||||
# This one is extra strict with allowed versions
|
||||
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
;;
|
||||
# This refers to builds using the UEFI calling convention
|
||||
# (which depends on the architecture) and PE file format.
|
||||
# Note that this is both a different calling convention and
|
||||
# different file format than that of GNU-EFI
|
||||
# (x86_64-w64-mingw32).
|
||||
uefi)
|
||||
;;
|
||||
none)
|
||||
;;
|
||||
kernel* | msvc* )
|
||||
# Restricted further below
|
||||
;;
|
||||
'')
|
||||
if test x"$obj" = x
|
||||
then
|
||||
echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
|
||||
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
case $obj in
|
||||
aout* | coff* | elf* | pe*)
|
||||
;;
|
||||
'')
|
||||
# empty is fine
|
||||
;;
|
||||
*)
|
||||
echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Here we handle the constraint that a (synthetic) cpu and os are
|
||||
# valid only in combination with each other and nowhere else.
|
||||
case $cpu-$os in
|
||||
# The "javascript-unknown-ghcjs" triple is used by GHC; we
|
||||
# accept it here in order to tolerate that, but reject any
|
||||
# variations.
|
||||
javascript-ghcjs)
|
||||
;;
|
||||
javascript-* | *-ghcjs)
|
||||
echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# As a final step for OS-related things, validate the OS-kernel combination
|
||||
# (given a valid OS), if there is a kernel.
|
||||
case $kernel-$os in
|
||||
linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
|
||||
case $kernel-$os-$obj in
|
||||
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
|
||||
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
|
||||
| linux-relibc*- | linux-uclibc*- )
|
||||
;;
|
||||
-dietlibc* | -newlib* | -musl* | -uclibc* )
|
||||
uclinux-uclibc*- )
|
||||
;;
|
||||
managarm-mlibc*- | managarm-kernel*- )
|
||||
;;
|
||||
windows*-msvc*-)
|
||||
;;
|
||||
-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
|
||||
| -uclibc*- )
|
||||
# These are just libc implementations, not actual OSes, and thus
|
||||
# require a kernel.
|
||||
echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
|
||||
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
kfreebsd*-gnu* | kopensolaris*-gnu*)
|
||||
-kernel*- )
|
||||
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
nto-qnx*)
|
||||
*-kernel*- )
|
||||
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*-eabi* | *-gnueabi*)
|
||||
*-msvc*- )
|
||||
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
-*)
|
||||
kfreebsd*-gnu*- | kopensolaris*-gnu*-)
|
||||
;;
|
||||
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
|
||||
;;
|
||||
nto-qnx*-)
|
||||
;;
|
||||
os2-emx-)
|
||||
;;
|
||||
*-eabi*- | *-gnueabi*-)
|
||||
;;
|
||||
none--*)
|
||||
# None (no kernel, i.e. freestanding / bare metal),
|
||||
# can be paired with an machine code file format
|
||||
;;
|
||||
-*-)
|
||||
# Blank kernel with real OS is always fine.
|
||||
;;
|
||||
*-*)
|
||||
echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
|
||||
--*)
|
||||
# Blank kernel and OS with real machine code file format is always fine.
|
||||
;;
|
||||
*-*-*)
|
||||
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -1840,7 +1960,7 @@ case $vendor in
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "$cpu-$vendor-${kernel:+$kernel-}$os"
|
||||
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
|
||||
exit
|
||||
|
||||
# Local variables:
|
||||
|
||||
@@ -5,11 +5,17 @@ CC = gcc -m64 $(GCC_CFLAGS) -I/usr/local/include
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
XFLAGS = -DSDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -lm -L/usr/local/lib -lSDL2
|
||||
#
|
||||
|
||||
@@ -18,7 +18,7 @@ XFLAGS = -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
|
||||
@@ -19,7 +19,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
OPTFLAGS = -O2 -g
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
|
||||
-DRELEASE=351 # -DSTACKCHECK -DFSBCHECK -DPCTRACE
|
||||
-DRELEASE=$(RELEASE) # -DSTACKCHECK -DFSBCHECK -DPCTRACE
|
||||
|
||||
LDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
|
||||
@@ -4,14 +4,21 @@ CC = clang -target aarch64-apple-darwin $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -F /Library/Frameworks
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in SDLFLAGS and -framework SDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in SDLFLAGS and -framework SDL3 in LDFLAGS
|
||||
#
|
||||
|
||||
SDLFLAGS = -DSDL=2 -F /Library/Frameworks
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -F /Library/Frameworks -framework SDL2
|
||||
LDFLAGS = -rpath /Library/Frameworks -F /Library/Frameworks -framework SDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
|
||||
@@ -19,7 +19,7 @@ XFLAGS = -I/usr/X11/include -DXWINDOW
|
||||
OPTFLAGS = -O2 -g
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
|
||||
-DRELEASE=351
|
||||
-DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm
|
||||
|
||||
@@ -2,16 +2,22 @@
|
||||
|
||||
CC = clang -m64 -target x86_64-apple-darwin $(CLANG_CFLAGS)
|
||||
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in SDLFLAGS and -framework SDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in SDLFLAGS and -framework SDL3 in LDFLAGS
|
||||
#
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -F /Library/Frameworks
|
||||
SDLFLAGS = -DSDL=2 -F /Library/Frameworks
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -F /Library/Frameworks -framework SDL2
|
||||
LDFLAGS = -rpath /Library/Frameworks -F /Library/Frameworks -framework SDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O1 -g
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
|
||||
@@ -4,11 +4,17 @@ CC = emcc $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL -sUSE_SDL=2
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 and -sUSE_SDL=2 in XFLAGS and -sUSE_SDL=2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 and -sUSE_SDL=3 in XFLAGS and -sUSE_SDL=3 in LDFLAGS
|
||||
#
|
||||
XFLAGS = -DSDL=2 -sUSE_SDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DMAIKO_ENABLE_NETHUB
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DMAIKO_ENABLE_NETHUB
|
||||
|
||||
MEDLEY?=../../medley
|
||||
SYSOUT?=$(MEDLEY)/loadups/full.sysout
|
||||
|
||||
@@ -4,11 +4,17 @@ CC = emcc $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL -sUSE_SDL=2
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 and -sUSE_SDL=2 in XFLAGS and -sUSE_SDL=2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 and -sUSE_SDL=3 in XFLAGS and -sUSE_SDL=3 in LDFLAGS
|
||||
#
|
||||
XFLAGS = -DSDL=2 -sUSE_SDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DMAIKO_ENABLE_NETHUB
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DMAIKO_ENABLE_NETHUB
|
||||
|
||||
MEDLEY?=../../medley
|
||||
SYSOUT?=$(MEDLEY)/loadups/full.sysout
|
||||
|
||||
@@ -4,11 +4,17 @@ CC = clang -m32 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -I/usr/local/include
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
SDLFLAGS = -DSDL=2 -I/usr/local/include
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
|
||||
LDELDFLAGS =
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
|
||||
@@ -4,11 +4,17 @@ CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -I/usr/local/include
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
SDLFLAGS = -DSDL=2 -I/usr/local/include
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
|
||||
LDELDFLAGS =
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
|
||||
@@ -4,11 +4,17 @@ CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -I/usr/local/include
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
SDLFLAGS = -DSDL=2 -I/usr/local/include
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
|
||||
LDELDFLAGS =
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
|
||||
@@ -5,11 +5,17 @@ CC = gcc -m64 $(GCC_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
XFLAGS = -DSDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -lSDL2 -lnetwork
|
||||
LDELDFLAGS = -lnetwork -lbsd
|
||||
|
||||
@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
|
||||
OPTFLAGS = -O0 -g
|
||||
DEBUGFLAGS =
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm
|
||||
|
||||
@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O0 -g3
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
|
||||
@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O0 -g
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O0 for init
|
||||
OPTFLAGS = -O0 -g
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O0 for init
|
||||
OPTFLAGS = -O0 -g
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O0 for init
|
||||
OPTFLAGS = -O0 -g
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||
|
||||
@@ -19,7 +19,7 @@ XFLAGS = -DXWINDOW
|
||||
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
|
||||
OPTFLAGS = -O0 -g
|
||||
DEBUGFLAGS =
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
|
||||
@@ -19,7 +19,7 @@ XFLAGS = -DXWINDOW
|
||||
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
|
||||
OPTFLAGS = -O0 -g
|
||||
DEBUGFLAGS =
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -I/usr/X11R6/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
|
||||
|
||||
@@ -50,7 +50,7 @@ DFLAGS = -DINIT \
|
||||
$(XFLAGS) \
|
||||
$(DEBUGFLAGS) \
|
||||
$(MACHINEFLAGS) \
|
||||
-DNOVERSION -DRELEASE=351
|
||||
-DNOVERSION -DRELEASE=$(RELEASE)
|
||||
|
||||
|
||||
LDFLAGS = -lX11 -lc -lm -lsocket -lnsl
|
||||
|
||||
@@ -5,11 +5,17 @@ CC = gcc -m32 $(GCC_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
XFLAGS = -DSDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -lm -lSDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
|
||||
@@ -5,11 +5,17 @@ CC = gcc $(GCC_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
SDLFLAGS = -DSDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -lSDL2 -lm
|
||||
LDELDFLAGS =
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
|
||||
@@ -5,11 +5,17 @@ CC = gcc $(GCC_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
XFLAGS = -DSDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -lm -lSDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
|
||||
@@ -5,11 +5,17 @@ CC = gcc -m64 $(GCC_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
#
|
||||
# For SDL version 2
|
||||
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
|
||||
# For SDL version 3
|
||||
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
|
||||
#
|
||||
XFLAGS = -DSDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -lm -lSDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
@@ -18,7 +18,7 @@ XFLAGS = -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
|
||||
@@ -17,7 +17,7 @@ XFLAGS = -I/usr/X11R6/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
|
||||
|
||||
@@ -36,7 +36,7 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
|
||||
DFLAGS = $(XFLAGS) \
|
||||
$(DEBUGFLAGS) \
|
||||
-DOS5 \
|
||||
-DRELEASE=351
|
||||
-DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
|
||||
|
||||
@@ -45,7 +45,7 @@ MACHINEFLAGS = -DOS5 -DUSE_DLPI
|
||||
DFLAGS = $(XFLAGS) \
|
||||
$(DEBUGFLAGS) \
|
||||
$(MACHINEFLAGS) \
|
||||
-DRELEASE=351
|
||||
-DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -lX11 -lc -lm -lsocket -lnsl
|
||||
LDELDFLAGS = -lX11 -lc -lm -lsocket -lnsl
|
||||
|
||||
@@ -37,7 +37,7 @@ DFLAGS = $(XFLAGS) \
|
||||
$(DEBUGFLAGS) \
|
||||
-DOS5 \
|
||||
-DUSE_DLPI \
|
||||
-DRELEASE=351
|
||||
-DRELEASE=$(RELEASE)
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
|
||||
|
||||
@@ -54,9 +54,10 @@ if test $# -gt 0
|
||||
shift
|
||||
fi
|
||||
|
||||
: ${RELEASE=351}
|
||||
architecture=`machinetype`
|
||||
osversion=`osversion`
|
||||
echo "making so far for ${osversion} on ${architecture}."
|
||||
echo "making release ${RELEASE} for ${osversion} on ${architecture}."
|
||||
case "$display" in
|
||||
init) display=single
|
||||
releasename=init-${osversion}.${architecture}
|
||||
@@ -71,7 +72,7 @@ case "$display" in
|
||||
x) releasename=${osversion}.${architecture}-${display}
|
||||
ldename=ldex
|
||||
;;
|
||||
sdl) releasename=${osversion}.${architecture}-${display}
|
||||
sdl*) releasename=${osversion}.${architecture}-${display}
|
||||
ldename=ldesdl
|
||||
;;
|
||||
wasm) osversion=emscripten
|
||||
@@ -106,12 +107,12 @@ if [ ! -d ../${releasename} ]; then
|
||||
mkdir ../${releasename}
|
||||
fi
|
||||
|
||||
echo start making lde for ${releasename}.
|
||||
echo start making lde for ${releasename}
|
||||
|
||||
# then finally do the make, including the right stuff
|
||||
# With makefile-tail merged, this should only take ONE make command....
|
||||
|
||||
make RELEASENAME=${releasename} LDENAME=${ldename} \
|
||||
make RELEASENAME=${releasename} RELEASE=${RELEASE} LDENAME=${ldename} \
|
||||
OSARCHNAME=${osversion}.${architecture} \
|
||||
-f makefile-header -f makefile-${releasename} \
|
||||
-f makefile-tail $*
|
||||
|
||||
35
inc/gcdata.h
35
inc/gcdata.h
@@ -18,8 +18,7 @@
|
||||
*/
|
||||
/**********************************************************************/
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
#include "version.h" /* for USHORT */
|
||||
#include "gchtfinddefs.h"
|
||||
#include "version.h" /* for BIGVM */
|
||||
|
||||
#define ADDREF 0 /* for gclookup routine. */
|
||||
#define DELREF 1 /* for gclookup routine. */
|
||||
@@ -132,10 +131,10 @@
|
||||
#ifdef BIGVM
|
||||
struct hashentry
|
||||
{ /* GC hashtable entry */
|
||||
unsigned short count :15;
|
||||
unsigned short stackref :1;
|
||||
unsigned short segnum :15;
|
||||
unsigned short collision :1;
|
||||
DLword count :15;
|
||||
DLword stackref :1;
|
||||
DLword segnum :15;
|
||||
DLword collision :1;
|
||||
};
|
||||
|
||||
struct htlinkptr
|
||||
@@ -163,10 +162,10 @@ struct htoverflow
|
||||
#else
|
||||
struct hashentry
|
||||
{ /* GC hashtable entry */
|
||||
USHORT count :6;
|
||||
USHORT stackref :1;
|
||||
USHORT segnum :8;
|
||||
USHORT collision :1;
|
||||
DLword count :6;
|
||||
DLword stackref :1;
|
||||
DLword segnum :8;
|
||||
DLword collision :1;
|
||||
};
|
||||
|
||||
struct htlinkptr
|
||||
@@ -201,10 +200,10 @@ struct htoverflow
|
||||
#ifdef BIGVM
|
||||
struct hashentry
|
||||
{ /* GC hashtable entry */
|
||||
USHORT collision :1;
|
||||
USHORT segnum :15;
|
||||
USHORT stackref :1;
|
||||
USHORT count :15;
|
||||
DLword collision :1;
|
||||
DLword segnum :15;
|
||||
DLword stackref :1;
|
||||
DLword count :15;
|
||||
};
|
||||
|
||||
struct htlinkptr
|
||||
@@ -232,10 +231,10 @@ struct htoverflow
|
||||
#else
|
||||
struct hashentry
|
||||
{ /* GC hashtable entry */
|
||||
USHORT collision :1;
|
||||
USHORT segnum :8;
|
||||
USHORT stackref :1;
|
||||
USHORT count :6;
|
||||
DLword collision :1;
|
||||
DLword segnum :8;
|
||||
DLword stackref :1;
|
||||
DLword count :6;
|
||||
};
|
||||
|
||||
struct htlinkptr
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#ifndef GCHTFINDDEFS_H
|
||||
#define GCHTFINDDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
#include "gcdata.h" /* for GCENTRY */
|
||||
void enter_big_reference_count(LispPTR ptr);
|
||||
void modify_big_reference_count(LispPTR *entry, DLword casep, LispPTR ptr);
|
||||
void modify_big_reference_count(GCENTRY *entry, DLword casep, LispPTR ptr);
|
||||
LispPTR htfind(LispPTR ptr, int casep);
|
||||
LispPTR rec_htfind(LispPTR ptr, int casep);
|
||||
#endif
|
||||
|
||||
@@ -267,22 +267,22 @@ struct state {
|
||||
|
||||
/* For bit test */
|
||||
typedef struct wbits {
|
||||
USHORT LSB : 1;
|
||||
USHORT B14 : 1;
|
||||
USHORT B13 : 1;
|
||||
USHORT B12 : 1;
|
||||
USHORT B11 : 1;
|
||||
USHORT B10 : 1;
|
||||
USHORT B9 : 1;
|
||||
USHORT B8 : 1;
|
||||
USHORT B7 : 1;
|
||||
USHORT B6 : 1;
|
||||
USHORT B5 : 1;
|
||||
USHORT B4 : 1;
|
||||
USHORT B3 : 1;
|
||||
USHORT B2 : 1;
|
||||
USHORT B1 : 1;
|
||||
USHORT xMSB : 1;
|
||||
DLword LSB : 1;
|
||||
DLword B14 : 1;
|
||||
DLword B13 : 1;
|
||||
DLword B12 : 1;
|
||||
DLword B11 : 1;
|
||||
DLword B10 : 1;
|
||||
DLword B9 : 1;
|
||||
DLword B8 : 1;
|
||||
DLword B7 : 1;
|
||||
DLword B6 : 1;
|
||||
DLword B5 : 1;
|
||||
DLword B4 : 1;
|
||||
DLword B3 : 1;
|
||||
DLword B2 : 1;
|
||||
DLword B1 : 1;
|
||||
DLword xMSB : 1;
|
||||
} WBITS;
|
||||
|
||||
#define PUTBASEBIT68K(base68k, offset, bitvalue) \
|
||||
|
||||
@@ -499,7 +499,8 @@ do { \
|
||||
#define MAXVERSION 999999999
|
||||
|
||||
#define LASTVERSIONARRAY ((unsigned) -1)
|
||||
#define VERSIONARRAYLENGTH 200
|
||||
#define VERSIONARRAYCHUNKLENGTH 200
|
||||
#define VERSIONARRAYMAXLENGTH 2000
|
||||
|
||||
#define NoFileP(varray) \
|
||||
(((varray)->version_no == LASTVERSIONARRAY)? 1 : 0)
|
||||
|
||||
1
inc/my.h
1
inc/my.h
@@ -20,6 +20,7 @@
|
||||
#include "version.h" // for BIGVM
|
||||
#include "adr68k.h" // for NativeAligned2FromLAddr, NativeAligned4FromLAddr, LAddrFromNative
|
||||
#include "arith.h" // for N_ARITH_SWITCH, N_GETNUMBER
|
||||
#include "gchtfinddefs.h"// for htfind, rec_htfind, from gcdata.h macros
|
||||
#include "gcdata.h" // for ADDREF, DELREF
|
||||
#include "lispemul.h" // for ERROR_EXIT, LispPTR, DLword, SEGMASK, state
|
||||
#include "lispmap.h" // for S_POSITIVE, S_CHARACTER, S_NEGATIVE
|
||||
|
||||
8
inc/rawcolordefs.h
Normal file
8
inc/rawcolordefs.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef RAWCOLORDEFS_H
|
||||
#define RAWCOLORDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
void C_slowbltchar(LispPTR *args);
|
||||
LispPTR Colorize_Bitmap(LispPTR args[]);
|
||||
void Draw_8BppColorLine(LispPTR *args);
|
||||
void Uncolorize_Bitmap(LispPTR args[]);
|
||||
#endif
|
||||
114
inc/stack.h
114
inc/stack.h
@@ -79,22 +79,22 @@ typedef struct fnhead {
|
||||
} FNHEAD;
|
||||
|
||||
typedef struct frameex1 {
|
||||
unsigned short flags : 3;
|
||||
unsigned short fast : 1;
|
||||
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
|
||||
unsigned short incall : 1;
|
||||
unsigned short validnametable : 1;
|
||||
DLword flags : 3;
|
||||
DLword fast : 1;
|
||||
DLword nil2 : 1; /* not used, prev: This frame treats N-func */
|
||||
DLword incall : 1;
|
||||
DLword validnametable : 1;
|
||||
/* 0: look for FunctionHeader
|
||||
1: look for NameTable on this FrameEx */
|
||||
unsigned short nopush : 1;
|
||||
unsigned short usecount : 8;
|
||||
DLword nopush : 1;
|
||||
DLword usecount : 8;
|
||||
DLword alink; /* alink pointer (Low addr) */
|
||||
#ifdef BIGVM
|
||||
LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */
|
||||
#else
|
||||
DLword lofnheader; /* pointer to FunctionHeader (Low addr) */
|
||||
unsigned short hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
|
||||
unsigned short hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
|
||||
DLword hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
|
||||
DLword hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
|
||||
#endif /* BIGVM */
|
||||
DLword nextblock; /* pointer to FreeStackBlock */
|
||||
DLword pc; /* Program counter */
|
||||
@@ -102,23 +102,23 @@ typedef struct frameex1 {
|
||||
LispPTR nametable; /* ptr to NameTable of this FrameEx (Hi2 addr) */
|
||||
#else
|
||||
DLword lonametable; /* ptr to NameTable of this FrameEx (Low addr) */
|
||||
unsigned short hi1nametable : 8; /* ptr to NameTable of this FrameEx (Hi1 addr) */
|
||||
unsigned short hi2nametable : 8; /* ptr to NameTable of this FrameEx (Hi2 addr) */
|
||||
DLword hi1nametable : 8; /* ptr to NameTable of this FrameEx (Hi1 addr) */
|
||||
DLword hi2nametable : 8; /* ptr to NameTable of this FrameEx (Hi2 addr) */
|
||||
#endif /* BIGVM */
|
||||
DLword blink; /* blink pointer (Low addr) */
|
||||
DLword clink; /* clink pointer (Low addr) */
|
||||
} FX;
|
||||
|
||||
typedef struct frameex2 {
|
||||
unsigned short flags : 3;
|
||||
unsigned short fast : 1;
|
||||
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
|
||||
unsigned short incall : 1;
|
||||
unsigned short validnametable : 1;
|
||||
DLword flags : 3;
|
||||
DLword fast : 1;
|
||||
DLword nil2 : 1; /* not used, prev: This frame treats N-func */
|
||||
DLword incall : 1;
|
||||
DLword validnametable : 1;
|
||||
/* 0: look for FunctionHeader
|
||||
1: look for NameTable on this FrameEx */
|
||||
unsigned short nopush : 1;
|
||||
unsigned short usecount : 8;
|
||||
DLword nopush : 1;
|
||||
DLword usecount : 8;
|
||||
DLword alink; /* alink pointer (Low addr) */
|
||||
LispPTR fnheader; /* pointer to FunctionHeader */
|
||||
DLword nextblock; /* pointer to FreeStackBlock */
|
||||
@@ -135,19 +135,19 @@ typedef struct fxblock {
|
||||
} FXBLOCK;
|
||||
|
||||
typedef struct basic_frame {
|
||||
unsigned short flags : 3;
|
||||
unsigned short nil : 3;
|
||||
unsigned short residual : 1;
|
||||
unsigned short padding : 1;
|
||||
unsigned short usecnt : 8;
|
||||
DLword flags : 3;
|
||||
DLword nil : 3;
|
||||
DLword residual : 1;
|
||||
DLword padding : 1;
|
||||
DLword usecnt : 8;
|
||||
DLword ivar; /* stk offset of IVARs for this frame ?? */
|
||||
|
||||
} Bframe;
|
||||
|
||||
typedef struct stkword {
|
||||
unsigned short flags : 3;
|
||||
unsigned short nil : 5;
|
||||
unsigned short usecount : 8;
|
||||
DLword flags : 3;
|
||||
DLword nil : 5;
|
||||
DLword usecount : 8;
|
||||
} StackWord;
|
||||
|
||||
typedef struct stack_block {
|
||||
@@ -185,33 +185,33 @@ typedef struct fnhead {
|
||||
unsigned nil3 : 2; /* not used */
|
||||
unsigned nil2 : 2; /* not used */
|
||||
#endif /* BIGVM */
|
||||
unsigned short argtype : 2; /* ?? */
|
||||
unsigned short byteswapped : 1; /* code was reswapped. */
|
||||
unsigned short nil4 : 1; /* not used, prev: native translated? */
|
||||
unsigned short fvaroffset : 8;
|
||||
DLword argtype : 2; /* ?? */
|
||||
DLword byteswapped : 1; /* code was reswapped. */
|
||||
DLword nil4 : 1; /* not used, prev: native translated? */
|
||||
DLword fvaroffset : 8;
|
||||
/* DLword offset from head of NameTable */
|
||||
unsigned short nlocals : 8; /* ?? */
|
||||
DLword nlocals : 8; /* ?? */
|
||||
DLword ntsize; /* size of NameTable */
|
||||
/* NameTable of variable length is following with this structure. */
|
||||
} FNHEAD;
|
||||
|
||||
typedef struct frameex1 {
|
||||
DLword alink; /* alink pointer (Low addr) */
|
||||
unsigned short usecount : 8;
|
||||
unsigned short nopush : 1;
|
||||
unsigned short validnametable : 1;
|
||||
DLword usecount : 8;
|
||||
DLword nopush : 1;
|
||||
DLword validnametable : 1;
|
||||
/* 0: look for FunctionHeader
|
||||
1: look for NameTable on this FrameEx */
|
||||
unsigned short incall : 1;
|
||||
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
|
||||
unsigned short fast : 1;
|
||||
unsigned short flags : 3; /* hi word */
|
||||
DLword incall : 1;
|
||||
DLword nil2 : 1; /* not used, prev: This frame treats N-func */
|
||||
DLword fast : 1;
|
||||
DLword flags : 3; /* hi word */
|
||||
|
||||
#ifdef BIGVM
|
||||
LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */
|
||||
#else
|
||||
unsigned short hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
|
||||
unsigned short hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
|
||||
DLword hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
|
||||
DLword hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
|
||||
DLword lofnheader; /* pointer to FunctionHeader (Low addr) */
|
||||
#endif /* BIGVM */
|
||||
|
||||
@@ -221,8 +221,8 @@ typedef struct frameex1 {
|
||||
#ifdef BIGVM
|
||||
LispPTR nametable; /* pointer to NameTable of this FX (Hi2 addr) */
|
||||
#else
|
||||
unsigned short hi2nametable : 8; /* pointer to NameTable of this FX (Hi2 addr) */
|
||||
unsigned short hi1nametable : 8; /* pointer to NameTable of this FX (Hi1 addr) */
|
||||
DLword hi2nametable : 8; /* pointer to NameTable of this FX (Hi2 addr) */
|
||||
DLword hi1nametable : 8; /* pointer to NameTable of this FX (Hi1 addr) */
|
||||
DLword lonametable; /* pointer to NameTable of this FX (Low addr) */
|
||||
#endif /* BIGVM */
|
||||
|
||||
@@ -232,15 +232,15 @@ typedef struct frameex1 {
|
||||
|
||||
typedef struct frameex2 {
|
||||
DLword alink; /* alink pointer (Low addr) */
|
||||
unsigned short usecount : 8;
|
||||
unsigned short nopush : 1;
|
||||
unsigned short validnametable : 1;
|
||||
DLword usecount : 8;
|
||||
DLword nopush : 1;
|
||||
DLword validnametable : 1;
|
||||
/* 0: look for FunctionHeader
|
||||
1: look for NameTable on this FrameEx */
|
||||
unsigned short incall : 1;
|
||||
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
|
||||
unsigned short fast : 1;
|
||||
unsigned short flags : 3;
|
||||
DLword incall : 1;
|
||||
DLword nil2 : 1; /* not used, prev: This frame treats N-func */
|
||||
DLword fast : 1;
|
||||
DLword flags : 3;
|
||||
|
||||
LispPTR fnheader; /* pointer to FunctionHeader (swapped) */
|
||||
|
||||
@@ -261,18 +261,18 @@ typedef struct fxblock {
|
||||
|
||||
typedef struct basic_frame {
|
||||
DLword ivar;
|
||||
unsigned short usecnt : 8;
|
||||
unsigned short padding : 1;
|
||||
unsigned short residual : 1;
|
||||
unsigned short nil : 3;
|
||||
unsigned short flags : 3;
|
||||
DLword usecnt : 8;
|
||||
DLword padding : 1;
|
||||
DLword residual : 1;
|
||||
DLword nil : 3;
|
||||
DLword flags : 3;
|
||||
|
||||
} Bframe;
|
||||
|
||||
typedef struct stkword {
|
||||
USHORT usecount : 8;
|
||||
USHORT nil : 5;
|
||||
USHORT flags : 3;
|
||||
DLword usecount : 8;
|
||||
DLword nil : 5;
|
||||
DLword flags : 3;
|
||||
} StackWord;
|
||||
|
||||
typedef struct stack_block {
|
||||
|
||||
@@ -227,9 +227,6 @@ typedef unsigned char u_char;
|
||||
typedef unsigned long u_int;
|
||||
typedef unsigned short u_short;
|
||||
#undef UNALIGNED_FETCH_OK
|
||||
typedef unsigned USHORT;
|
||||
#else
|
||||
typedef unsigned short USHORT;
|
||||
#endif /* DOS */
|
||||
|
||||
/****************************************************************/
|
||||
@@ -237,6 +234,14 @@ typedef unsigned short USHORT;
|
||||
/* --Start of system-specific flags */
|
||||
/* */
|
||||
/****************************************************************/
|
||||
#ifdef MAIKO_OS_MACOS
|
||||
/* macOS does not follow the POSIX standard for the names of the stat
|
||||
fields that allow access to the nanosecond resolution times
|
||||
*/
|
||||
#define st_atim st_atimespec
|
||||
#define st_mtim st_mtimespec
|
||||
#define st_ctim st_ctimespec
|
||||
#endif
|
||||
|
||||
/****************************************************************/
|
||||
/* End of system-specific flag settings */
|
||||
|
||||
@@ -49,7 +49,6 @@
|
||||
#include "stack.h"
|
||||
#include "return.h"
|
||||
#include "cell.h"
|
||||
#include "gcdata.h"
|
||||
|
||||
#include "bbtsubdefs.h"
|
||||
#include "car-cdrdefs.h"
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include "conspagedefs.h" // for next_conspage
|
||||
#include "emlglob.h"
|
||||
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "lispemul.h" // for ConsCell, LispPTR, DLword, NIL_PTR, state
|
||||
#include "lspglob.h" // for ListpDTD
|
||||
#include "lsptypes.h" // for Listp, dtd
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "commondefs.h" // for error
|
||||
#include "conspagedefs.h" // for N_OP_cons, cons, next_conspage
|
||||
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "lispemul.h" // for ConsCell, DLword, LispPTR, NIL_PTR, DLWORD...
|
||||
#include "lspglob.h"
|
||||
#include "lsptypes.h" // for dtd, Listp, TYPE_LISTP
|
||||
|
||||
@@ -589,8 +589,8 @@ void bt1(FX *startFX) {
|
||||
BT_morep;
|
||||
while ((fnobj->framename != ATOM_T) && (fx->alink != 11)) {
|
||||
if (fnum > URMAXFXNUM - 1) {
|
||||
/* Internal buf overflow,more than 100 stacks */
|
||||
printf("***There are more than 100 stack frames.\n");
|
||||
/* Internal buf overflow, too many stack frames */
|
||||
printf("***There are more than %d stack frames.\n", URMAXFXNUM);
|
||||
printf(
|
||||
"If you want to continue, Uraid will smash its internal table for FX pointer. Do you "
|
||||
"accept?(Y or N)\n");
|
||||
|
||||
411
src/dsk.c
411
src/dsk.c
@@ -13,7 +13,7 @@
|
||||
#include <fcntl.h> // for O_RDWR, O_CREAT, open, O_RDONLY, O_TRUNC
|
||||
#include <stdio.h> // for NULL, sprintf, size_t, rename, SEEK_SET
|
||||
#include <stddef.h> // for ptrdiff_t
|
||||
#include <stdlib.h> // for strtoul
|
||||
#include <stdlib.h> // for strtoul, qsort
|
||||
#include <string.h> // for strcpy, strcmp, strlen, strncpy, strchr
|
||||
#include <sys/stat.h> // for stat, fstat, mkdir, S_ISREG, st_atime, chmod
|
||||
#include <sys/types.h> // for ino_t, time_t, off_t
|
||||
@@ -38,12 +38,13 @@
|
||||
#include <pwd.h> // for getpwuid, passwd
|
||||
#include <sys/param.h> // for MAXPATHLEN
|
||||
#include <sys/statvfs.h> // for statvfs
|
||||
#include <sys/time.h> // for timeval, utimes
|
||||
#include <sys/time.h> // for timeval, utimes, futimens
|
||||
#else
|
||||
#include <direct.h>
|
||||
#include <dos.h>
|
||||
#include <time.h>
|
||||
#include <io.h>
|
||||
#include <search.h> // for qsort(?)
|
||||
#define MAXPATHLEN _MAX_PATH
|
||||
#define MAXNAMLEM _MAX_PATH
|
||||
#define alarm(x) 0
|
||||
@@ -57,25 +58,31 @@ typedef struct filename_entry {
|
||||
unsigned version_no;
|
||||
} FileName;
|
||||
|
||||
typedef struct current_varray {
|
||||
char path[MAXPATHLEN]; /* pathname of directory */
|
||||
char file[MAXPATHLEN]; /* file name (down cased name) */
|
||||
time_t mtime;
|
||||
} CurrentVArray;
|
||||
|
||||
static FileName VersionArray[VERSIONARRAYLENGTH];
|
||||
static CurrentVArray VArrayInfo;
|
||||
/*
|
||||
* VA, a structure representing the file names and version numbers
|
||||
* that were present in a directory at a particular moment in time.
|
||||
* The {DSK} device presents a case-insensitive (to Medley) but
|
||||
* case-preserving (to the host) file system. The VA (Version Array)
|
||||
*/
|
||||
static struct {
|
||||
char name[MAXPATHLEN]; /* lowercase unversioned file name */
|
||||
struct timespec lastMTime; /* modification time of the directory */
|
||||
int allocated; /* number of entries in the files array */
|
||||
int lastUsed; /* index of the last entry in use in files array */
|
||||
FileName *files; /* array of files */
|
||||
} VA = {0};
|
||||
|
||||
static int locate_file(char *dir, char *name);
|
||||
static int make_directory(char *dir);
|
||||
static int maintain_version(char *file, FileName *varray, int forcep);
|
||||
static int maintain_version(char *file, int forcep);
|
||||
static int compare_file_versions(const void *a, const void *b);
|
||||
static int get_versionless(FileName *varray, char *file, char *dir);
|
||||
static int check_vless_link(char *vless, FileName *varray, char *to_file, int *highest_p);
|
||||
static int get_old(char *dir, FileName *varray, char *afile, char *vfile);
|
||||
static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile);
|
||||
static int get_new(char *dir, FileName *varray, char *afile, char *vfile);
|
||||
static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile);
|
||||
static int get_version_array(char *dir, char *file, FileName *varray, CurrentVArray *cache);
|
||||
static int get_version_array(char *dir, char *file);
|
||||
|
||||
#ifdef DOS
|
||||
static void separate_drive(char *lfname, char *drive)
|
||||
@@ -367,24 +374,24 @@ LispPTR COM_openfile(LispPTR *args)
|
||||
if (dskp) {
|
||||
if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL);
|
||||
if (true_name(dir) != -1) return (0);
|
||||
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
if (get_version_array(dir, name) == 0) return (NIL);
|
||||
ConcNameAndVersion(name, ver, file);
|
||||
|
||||
switch (args[1]) {
|
||||
case RECOG_OLD:
|
||||
if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
|
||||
if (get_old(dir, VA.files, file, name) == 0) return (NIL);
|
||||
break;
|
||||
|
||||
case RECOG_OLDEST:
|
||||
if (get_oldest(dir, VersionArray, file, name) == 0) return (NIL);
|
||||
if (get_oldest(dir, VA.files, file, name) == 0) return (NIL);
|
||||
break;
|
||||
|
||||
case RECOG_NEW:
|
||||
if (get_new(dir, VersionArray, file, name) == 0) return (NIL);
|
||||
if (get_new(dir, VA.files, file, name) == 0) return (NIL);
|
||||
break;
|
||||
|
||||
case RECOG_OLD_NEW:
|
||||
if (get_old_new(dir, VersionArray, file, name) == 0) return (NIL);
|
||||
if (get_old_new(dir, VA.files, file, name) == 0) return (NIL);
|
||||
break;
|
||||
|
||||
default: return (NIL);
|
||||
@@ -439,7 +446,7 @@ LispPTR COM_openfile(LispPTR *args)
|
||||
* Actually we are creating a new file. We have to
|
||||
* maintain a version status.
|
||||
*/
|
||||
if (maintain_version(file, (FileName *)NULL, 1) == 0) {
|
||||
if (maintain_version(file, 1) == 0) {
|
||||
TIMEOUT(rval = close(fd));
|
||||
*Lisp_errno = errno;
|
||||
return (NIL);
|
||||
@@ -485,7 +492,7 @@ LispPTR COM_openfile(LispPTR *args)
|
||||
* the entirely newly created file, versionless file, should not
|
||||
* be linked to any file.
|
||||
*/
|
||||
if (maintain_version(file, (FileName *)NULL, 0) == 0) {
|
||||
if (maintain_version(file, 0) == 0) {
|
||||
TIMEOUT(close(fd));
|
||||
*Lisp_errno = errno;
|
||||
return (NIL);
|
||||
@@ -670,7 +677,7 @@ LispPTR COM_closefile(LispPTR *args)
|
||||
*Lisp_errno = errno;
|
||||
return (NIL);
|
||||
}
|
||||
#ifndef DOS
|
||||
#ifndef DOS /* effectively NEVER, since we're in an ifdef DOS */
|
||||
TIMEOUT(rval = utimes(file, time));
|
||||
if (rval != 0) {
|
||||
*Lisp_errno = errno;
|
||||
@@ -681,13 +688,9 @@ LispPTR COM_closefile(LispPTR *args)
|
||||
int fd, fatp, dskp, rval;
|
||||
time_t cdate;
|
||||
char lfname[MAXPATHLEN + 5], host[MAXNAMLEN];
|
||||
char file[MAXPATHLEN], dir[MAXPATHLEN], name[MAXNAMLEN + 1];
|
||||
char ver[VERSIONLEN];
|
||||
DIR *dirp;
|
||||
struct dirent *dp;
|
||||
char file[MAXPATHLEN];
|
||||
struct stat sbuf;
|
||||
struct timeval time[2];
|
||||
ino_t ino;
|
||||
struct timespec timesp[2];
|
||||
|
||||
ERRSETJMP(NIL);
|
||||
Lisp_errno = (int *)NativeAligned4FromLAddr(args[3]);
|
||||
@@ -752,60 +755,24 @@ LispPTR COM_closefile(LispPTR *args)
|
||||
}
|
||||
}
|
||||
|
||||
if (!unpack_filename(file, dir, name, ver, 1)) return (NIL);
|
||||
/* introduction of futimens() allows us to set the times on an open
|
||||
* file descriptor so a lot of directory manipulation to find the
|
||||
* appropriate name associated with the inode is no longer required
|
||||
*/
|
||||
|
||||
if (dskp) {
|
||||
/*
|
||||
* On {DSK}, we have to make sure dir is case sensitively existing
|
||||
* directory.
|
||||
*/
|
||||
if (true_name(dir) != -1) return (NIL);
|
||||
timesp[0].tv_sec = (long)sbuf.st_atime;
|
||||
timesp[0].tv_nsec = 0L;
|
||||
timesp[1].tv_sec = (long)ToUnixTime(cdate);
|
||||
timesp[1].tv_nsec = 0L;
|
||||
|
||||
/*
|
||||
* There is a very troublesome problem here. The file name Lisp
|
||||
* recognizes is not always the same as the name which COM_openfile
|
||||
* used to open the file. Sometimes COM_openfile uses the versionless
|
||||
* file name to open a file, although Lisp always recognizes with
|
||||
* *versioned* file name.
|
||||
* Thus, we compare i-node number of the requested file with ones of all
|
||||
* of files on the directory. This is time spending implementation.
|
||||
* More clean up work is needed.
|
||||
*/
|
||||
TIMEOUT(rval = fstat(fd, &sbuf));
|
||||
if (rval != 0) {
|
||||
*Lisp_errno = errno;
|
||||
return (NIL);
|
||||
}
|
||||
ino = sbuf.st_ino;
|
||||
|
||||
errno = 0;
|
||||
TIMEOUT0(dirp = opendir(dir));
|
||||
if (dirp == (DIR *)NULL) {
|
||||
*Lisp_errno = errno;
|
||||
return (NIL);
|
||||
}
|
||||
|
||||
for (S_TOUT(dp = readdir(dirp)); dp != (struct dirent *)NULL || errno == EINTR;
|
||||
errno = 0, S_TOUT(dp = readdir(dirp)))
|
||||
if (dp) {
|
||||
if (ino == (ino_t)dp->d_ino) sprintf(file, "%s/%s", dir, dp->d_name);
|
||||
}
|
||||
TIMEOUT(closedir(dirp));
|
||||
}
|
||||
|
||||
time[0].tv_sec = (long)sbuf.st_atime;
|
||||
time[0].tv_usec = 0L;
|
||||
time[1].tv_sec = (long)ToUnixTime(cdate);
|
||||
time[1].tv_usec = 0L;
|
||||
|
||||
TIMEOUT(rval = close(fd));
|
||||
if (rval == -1) {
|
||||
TIMEOUT(rval = futimens(fd, timesp));
|
||||
if (rval != 0) {
|
||||
*Lisp_errno = errno;
|
||||
return (NIL);
|
||||
}
|
||||
|
||||
TIMEOUT(rval = utimes(file, time));
|
||||
if (rval != 0) {
|
||||
TIMEOUT(rval = close(fd));
|
||||
if (rval == -1) {
|
||||
*Lisp_errno = errno;
|
||||
return (NIL);
|
||||
}
|
||||
@@ -918,10 +885,10 @@ LispPTR DSK_getfilename(LispPTR *args)
|
||||
* Recognizing a file on DSK device needs the version information.
|
||||
* We gather version information in a version array first.
|
||||
*/
|
||||
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
if (get_version_array(dir, name) == 0) return (NIL);
|
||||
|
||||
ConcNameAndVersion(name, ver, aname);
|
||||
if (get_old(dir, VersionArray, aname, vname) == 0) return (NIL);
|
||||
if (get_old(dir, VA.files, aname, vname) == 0) return (NIL);
|
||||
|
||||
if ((rval = true_name(aname)) == 0) return (NIL);
|
||||
if (rval == -1) {
|
||||
@@ -958,10 +925,10 @@ LispPTR DSK_getfilename(LispPTR *args)
|
||||
strcpy(vname, dir);
|
||||
dirp = 1;
|
||||
} else {
|
||||
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
if (get_version_array(dir, name) == 0) return (NIL);
|
||||
|
||||
ConcNameAndVersion(name, ver, aname);
|
||||
if (get_oldest(dir, VersionArray, aname, vname) == 0) return (NIL);
|
||||
if (get_oldest(dir, VA.files, aname, vname) == 0) return (NIL);
|
||||
|
||||
if ((rval = true_name(aname)) == 0) return (NIL);
|
||||
if (rval == -1) {
|
||||
@@ -1007,10 +974,10 @@ LispPTR DSK_getfilename(LispPTR *args)
|
||||
* Here, dir is an existing directory. We have to perform
|
||||
* "new" recognition with the version information.
|
||||
*/
|
||||
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
if (get_version_array(dir, name) == 0) return (NIL);
|
||||
|
||||
ConcNameAndVersion(name, ver, aname);
|
||||
if (get_new(dir, VersionArray, aname, vname) == 0) return (NIL);
|
||||
if (get_new(dir, VA.files, aname, vname) == 0) return (NIL);
|
||||
dirp = 0;
|
||||
}
|
||||
}
|
||||
@@ -1033,10 +1000,10 @@ LispPTR DSK_getfilename(LispPTR *args)
|
||||
strcpy(vname, aname);
|
||||
dirp = 1;
|
||||
} else {
|
||||
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
if (get_version_array(dir, name) == 0) return (NIL);
|
||||
|
||||
ConcNameAndVersion(name, ver, aname);
|
||||
if (get_old_new(dir, VersionArray, aname, vname) == 0) return (NIL);
|
||||
if (get_old_new(dir, VA.files, aname, vname) == 0) return (NIL);
|
||||
dirp = 0;
|
||||
}
|
||||
}
|
||||
@@ -1132,7 +1099,6 @@ LispPTR DSK_deletefile(LispPTR *args)
|
||||
char file[MAXPATHLEN], fbuf[MAXPATHLEN], vless[MAXPATHLEN];
|
||||
char dir[MAXPATHLEN], ver[VERSIONLEN];
|
||||
int rval, fatp;
|
||||
FileName *varray;
|
||||
#ifdef DOS
|
||||
char drive[1], rawname[MAXNAMLEN];
|
||||
int extlen; /* len of extension, for making backup filename */
|
||||
@@ -1160,10 +1126,9 @@ LispPTR DSK_deletefile(LispPTR *args)
|
||||
#endif
|
||||
|
||||
if (unpack_filename(file, dir, fbuf, ver, 1) == 0) return (NIL);
|
||||
if (get_version_array(dir, fbuf, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
varray = VersionArray;
|
||||
if (get_version_array(dir, fbuf) == 0) return (NIL);
|
||||
|
||||
if (NoFileP(varray))
|
||||
if (NoFileP(VA.files))
|
||||
return (NIL); /*
|
||||
* If the specified file is deleted from
|
||||
* outside of Lisp during the last time
|
||||
@@ -1178,9 +1143,9 @@ LispPTR DSK_deletefile(LispPTR *args)
|
||||
*/
|
||||
|
||||
ConcNameAndVersion(fbuf, ver, file);
|
||||
if (get_oldest(dir, varray, file, fbuf) == 0) return (NIL);
|
||||
if (get_oldest(dir, VA.files, file, fbuf) == 0) return (NIL);
|
||||
|
||||
if (get_versionless(varray, vless, dir) == 0) {
|
||||
if (get_versionless(VA.files, vless, dir) == 0) {
|
||||
/*
|
||||
* There is no versionless file. All we have to do is to simply
|
||||
* try to unlink the specified file.
|
||||
@@ -1199,7 +1164,7 @@ LispPTR DSK_deletefile(LispPTR *args)
|
||||
* file is linked will destroy the consistency of the version status.
|
||||
*/
|
||||
|
||||
if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
|
||||
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) return (NIL);
|
||||
|
||||
if (strcmp(file, vless) == 0 || strcmp(file, fbuf) == 0) {
|
||||
if (*fbuf != '\0') {
|
||||
@@ -1220,12 +1185,12 @@ LispPTR DSK_deletefile(LispPTR *args)
|
||||
/*
|
||||
* Finally, we have to maintain the version status.
|
||||
*/
|
||||
if (maintain_version(vless, (FileName *)NULL, 0) == 0) return (NIL);
|
||||
if (maintain_version(vless, 0) == 0) return (NIL);
|
||||
return (ATOM_T);
|
||||
} else {
|
||||
/*
|
||||
* Although the versionfile is specified, it is not linked
|
||||
* to any file in varray. We should not maintain the version
|
||||
* to any file in VA.files. We should not maintain the version
|
||||
* status after deleting the versionless file, because
|
||||
* we cannot say whether the versionless file is actually under
|
||||
* control of the Medley DSK file system or not.
|
||||
@@ -1280,7 +1245,6 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
char dir[MAXPATHLEN], ver[VERSIONLEN];
|
||||
int rval, fatp;
|
||||
int need_maintain_flg;
|
||||
FileName *varray;
|
||||
#ifdef DOS
|
||||
char drive1[1], drive2[1];
|
||||
int extlen1, extlen2; /* len of extension */
|
||||
@@ -1331,10 +1295,9 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
* We maintain the destination to handle the link damaged case correctly.
|
||||
*/
|
||||
ConcDirAndName(dir, fbuf, dst);
|
||||
if (maintain_version(dst, (FileName *)NULL, 0) == 0) return (NIL);
|
||||
if (maintain_version(dst, 0) == 0) return (NIL);
|
||||
|
||||
if (get_version_array(dir, fbuf, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
varray = VersionArray;
|
||||
if (get_version_array(dir, fbuf) == 0) return (NIL);
|
||||
|
||||
/*
|
||||
* Although the file should have been recognized with "new" mode in Lisp
|
||||
@@ -1343,7 +1306,7 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
*/
|
||||
|
||||
ConcNameAndVersion(fbuf, ver, dst);
|
||||
if (get_new(dir, varray, dst, fbuf) == 0) return (NIL);
|
||||
if (get_new(dir, VA.files, dst, fbuf) == 0) return (NIL);
|
||||
|
||||
/*
|
||||
* At this point, there are three cases for the destination. If there is
|
||||
@@ -1353,9 +1316,9 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
* "real" destination file is the file to which the versionless file is linked,
|
||||
* we have to unlink the versionless file.
|
||||
*/
|
||||
if (!NoFileP(varray)) {
|
||||
if (OnlyVersionlessP(varray)) {
|
||||
get_versionless(varray, vless, dir);
|
||||
if (!NoFileP(VA.files)) {
|
||||
if (OnlyVersionlessP(VA.files)) {
|
||||
get_versionless(VA.files, vless, dir);
|
||||
if (strcmp(dst, vless) != 0) {
|
||||
ConcNameAndVersion(vless, "1", fbuf);
|
||||
TIMEOUT(rval = rename(vless, fbuf));
|
||||
@@ -1369,8 +1332,8 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
* We are sure that the versionless file is linked to one of
|
||||
* the higher versioned file here.
|
||||
*/
|
||||
get_versionless(varray, vless, dir);
|
||||
if (check_vless_link(vless, varray, fbuf, &rval) == 0) { return (NIL); }
|
||||
get_versionless(VA.files, vless, dir);
|
||||
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) { return (NIL); }
|
||||
if (strcmp(dst, fbuf) == 0) {
|
||||
TIMEOUT(rval = unlink(vless));
|
||||
if (rval == -1) {
|
||||
@@ -1382,9 +1345,9 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
}
|
||||
|
||||
if (unpack_filename(src, dir, fbuf, ver, 1) == 0) return (NIL);
|
||||
if (get_version_array(dir, fbuf, varray, &VArrayInfo) == 0) return (NIL);
|
||||
if (get_version_array(dir, fbuf) == 0) return (NIL);
|
||||
|
||||
if (NoFileP(varray))
|
||||
if (NoFileP(VA.files))
|
||||
return (NIL); /*
|
||||
* If the specified file is deleted from
|
||||
* outside of Lisp during the last time
|
||||
@@ -1398,9 +1361,9 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
* of it.
|
||||
*/
|
||||
ConcNameAndVersion(fbuf, ver, src);
|
||||
if (get_old(dir, varray, src, fbuf) == 0) return (NIL);
|
||||
if (get_old(dir, VA.files, src, fbuf) == 0) return (NIL);
|
||||
|
||||
if (get_versionless(varray, vless, dir) == 0) {
|
||||
if (get_versionless(VA.files, vless, dir) == 0) {
|
||||
/*
|
||||
* There is no versionless file. All we have to do is to simply
|
||||
* try to rename the specified file.
|
||||
@@ -1413,7 +1376,7 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
* versionless file is linked will destroy the consistency of the
|
||||
* version status.
|
||||
*/
|
||||
if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
|
||||
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) return (NIL);
|
||||
|
||||
if (strcmp(src, vless) == 0 && *fbuf != '\0') {
|
||||
/*
|
||||
@@ -1458,9 +1421,9 @@ LispPTR DSK_renamefile(LispPTR *args)
|
||||
* is on.
|
||||
*/
|
||||
|
||||
if (maintain_version(dst, (FileName *)NULL, 0) == 0) return (NIL);
|
||||
if (maintain_version(dst, 0) == 0) return (NIL);
|
||||
if (need_maintain_flg) {
|
||||
if (maintain_version(src, (FileName *)NULL, 0) == 0) return (NIL);
|
||||
if (maintain_version(src, 0) == 0) return (NIL);
|
||||
}
|
||||
|
||||
return (ATOM_T);
|
||||
@@ -1658,9 +1621,9 @@ LispPTR COM_getfileinfo(LispPTR *args)
|
||||
*/
|
||||
strcpy(file, dir);
|
||||
} else {
|
||||
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
if (get_version_array(dir, name) == 0) return (NIL);
|
||||
ConcNameAndVersion(name, ver, file);
|
||||
if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
|
||||
if (get_old(dir, VA.files, file, name) == 0) return (NIL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1847,9 +1810,9 @@ LispPTR COM_setfileinfo(LispPTR *args)
|
||||
if (dskp) {
|
||||
if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL);
|
||||
if (true_name(dir) != -1) return (0);
|
||||
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
|
||||
if (get_version_array(dir, name) == 0) return (NIL);
|
||||
ConcNameAndVersion(name, ver, file);
|
||||
if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
|
||||
if (get_old(dir, VA.files, file, name) == 0) return (NIL);
|
||||
}
|
||||
|
||||
switch (args[1]) {
|
||||
@@ -2803,34 +2766,26 @@ static int make_directory(char *dir)
|
||||
* and highest version number respectively.
|
||||
*
|
||||
* Description:
|
||||
* Finds the highest versioned entry in varray.
|
||||
*
|
||||
* Find the highest versioned entry in varray. Varray has to include at least
|
||||
* one versioned file, that is varray has to satisfy (!NoFileP(varray) &&
|
||||
* !OnlyVersionlessP(varray)).
|
||||
*
|
||||
* Preconditions:
|
||||
* Varray must include at least one versioned file, satisfying the condition:
|
||||
* (!NoFileP(varray) && !OnlyVersionlessP(varray))
|
||||
* Varray must be sorted from highest to lowest version
|
||||
*/
|
||||
|
||||
#ifdef DOS
|
||||
#define FindHighestVersion(varray, mentry, max_no) \
|
||||
do { \
|
||||
FileName *centry; \
|
||||
for (centry = varray, max_no = -1; centry->version_no != LASTVERSIONARRAY; centry++) { \
|
||||
if (centry->version_no > max_no) { \
|
||||
max_no = centry->version_no; \
|
||||
mentry = centry; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
do { \
|
||||
(max_no) = varray[0].version_no; \
|
||||
(mentry) = &varray[0]; \
|
||||
} while (0)
|
||||
#else
|
||||
#define FindHighestVersion(varray, mentry, max_no) \
|
||||
do { \
|
||||
FileName *centry; \
|
||||
for (centry = (varray), (max_no) = 0; centry->version_no != LASTVERSIONARRAY; centry++) { \
|
||||
if (centry->version_no > (max_no)) { \
|
||||
(max_no) = centry->version_no; \
|
||||
(mentry) = centry; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
do { \
|
||||
(max_no) = varray[0].version_no; \
|
||||
(mentry) = &varray[0]; \
|
||||
} while (0)
|
||||
#endif /* DOS */
|
||||
|
||||
/*
|
||||
@@ -2917,6 +2872,19 @@ static int make_directory(char *dir)
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* comparison function for qsort to sort file versions in descending order
|
||||
*/
|
||||
static int compare_file_versions(const void *a, const void *b)
|
||||
{
|
||||
unsigned a_ver = ((FileName *)a)->version_no;
|
||||
unsigned b_ver = ((FileName *)b)->version_no;
|
||||
|
||||
if (a_ver > b_ver) return (-1);
|
||||
if (a_ver < b_ver) return (1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* g e t _ v e r s i o n _ a r r a y */
|
||||
@@ -2928,7 +2896,6 @@ static int make_directory(char *dir)
|
||||
/* guarantee that the directory exists. */
|
||||
/* file File name, optionally including a (unix) version */
|
||||
/* varray Place to put the version array entries. */
|
||||
/* cache Place to hold info about the new version array */
|
||||
/* */
|
||||
/* Read thru DIR and gather all files that match FILE into */
|
||||
/* VARRAY. DIR's case must match existing directory's, but */
|
||||
@@ -2938,15 +2905,15 @@ static int make_directory(char *dir)
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
static int get_version_array(char *dir, char *file, FileName *varray, CurrentVArray *cache)
|
||||
static int get_version_array(char *dir, char *file)
|
||||
{
|
||||
#ifdef DOS
|
||||
|
||||
/* DOS version-array builder */
|
||||
char lcased_file[MAXPATHLEN];
|
||||
char old_file[MAXPATHLEN];
|
||||
char name[MAXNAMLEN];
|
||||
char ver[VERSIONLEN];
|
||||
FileName *svarray;
|
||||
int varray_index = 0;
|
||||
struct find_t dirp;
|
||||
struct direct *dp;
|
||||
int rval, drive = 0, isslash = 0;
|
||||
@@ -2987,14 +2954,12 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
|
||||
make_old_version(old_file, lcased_file);
|
||||
|
||||
svarray = varray;
|
||||
|
||||
TIMEOUT(res = _dos_findfirst(old_file, _A_NORMAL | _A_SUBDIR, &dirp));
|
||||
if (res == 0) {
|
||||
strcpy(name, dirp.name);
|
||||
strcpy(svarray->name, name);
|
||||
svarray->version_no = 0;
|
||||
svarray++;
|
||||
strcpy(VA.files[varray_index].name, name);
|
||||
VA.files[varray_index].version_no = 0;
|
||||
varray_index++;
|
||||
}
|
||||
|
||||
/*******************************/
|
||||
@@ -3013,34 +2978,48 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
separate_version(name, ver, 1);
|
||||
DOWNCASE(name);
|
||||
|
||||
strcpy(svarray->name, dirp.name);
|
||||
strcpy(VA.files[varray_index].name, dirp.name);
|
||||
if (*ver == '\0') {
|
||||
/* Versionless file */
|
||||
svarray->version_no = 1;
|
||||
VA.files[varray_index].version_no = 1;
|
||||
} else {
|
||||
/*
|
||||
* separator_version guarantees ver is a numeric
|
||||
* string.
|
||||
* separate_version guarantees ver is a numeric string.
|
||||
*/
|
||||
svarray->version_no = strtoul(ver, (char **)NULL, 10);
|
||||
VA.files[varray_index].version_no = strtoul(ver, (char **)NULL, 10);
|
||||
}
|
||||
varray_index++;
|
||||
if (varray_index >= VERSIONARRAYMAXLENGTH) {
|
||||
*Lisp_errno = EIO;
|
||||
return (0);
|
||||
} else if (varray_index >= VA.allocated) {
|
||||
VA.allocated += VERSIONARRAYCHUNKLENGTH;
|
||||
VA.files = realloc(VA.files,
|
||||
sizeof(*VA.files) * VA.allocated);
|
||||
}
|
||||
svarray++;
|
||||
}
|
||||
|
||||
/*
|
||||
* The last entry of varray is indicated by setting LASTVERSIONARRAY into
|
||||
* The last entry of VA.files is indicated by setting LASTVERSIONARRAY into
|
||||
* version_no field.
|
||||
*/
|
||||
svarray->version_no = LASTVERSIONARRAY;
|
||||
VA.files[varray_index].version_no = LASTVERSIONARRAY;
|
||||
VA.lastUsed = varray_index;
|
||||
|
||||
/*
|
||||
* If more than one files have been stored in varray, we store the name
|
||||
* If any files have been stored in VA.files, we store the name
|
||||
* without version in the last marker entry.
|
||||
*
|
||||
* NOTE: sorting "varray_index" entries will leave the LASTVERSIONARRAY item
|
||||
* untouched by the sort, which is intentional.
|
||||
*/
|
||||
if (!NoFileP(varray)) {
|
||||
strcpy(name, varray->name);
|
||||
if (!NoFileP(VA.files)) {
|
||||
strcpy(name, VA.files[0].name);
|
||||
separate_version(name, ver, 1);
|
||||
strcpy(svarray->name, name);
|
||||
strcpy(VA.files[varray_index].name, name);
|
||||
if (varray_index > 1) {
|
||||
qsort(VA.files, varray_index, sizeof(*VA.files), compare_file_versions);
|
||||
}
|
||||
}
|
||||
|
||||
return (1);
|
||||
@@ -3050,7 +3029,7 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
char lcased_file[MAXNAMLEN];
|
||||
char name[MAXNAMLEN];
|
||||
char ver[VERSIONLEN];
|
||||
FileName *svarray;
|
||||
int varray_index = 0;
|
||||
DIR *dirp;
|
||||
struct dirent *dp;
|
||||
int rval;
|
||||
@@ -3064,29 +3043,26 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
separate_version(lcased_file, ver, 1);
|
||||
DOWNCASE(lcased_file);
|
||||
|
||||
/* Cache for VA.files reinstated using nanosecond timestamps which many
|
||||
* systems provide for directory modification times.
|
||||
* POSIX defines the struct stat field containing the nanosecond resolution
|
||||
* modification time as "st_mtim". See "version.h" for accomodations
|
||||
* for systems that call it something else (e.g., macOS st_mtimespec).
|
||||
*/
|
||||
|
||||
TIMEOUT(rval = stat(dir, &sbuf));
|
||||
if (rval == -1) {
|
||||
*Lisp_errno = errno;
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Cache mechanism was not used because of a bug in Sun OS.
|
||||
* Sometimes just after unlinking a file on a directory, the st_mtime
|
||||
* of the directory does not change. This will make Maiko believe
|
||||
* cached version array is still valid, although it is already invalid.
|
||||
* sync(2) has no effect on such case.
|
||||
*/
|
||||
|
||||
/*
|
||||
* If the cached version array is still valid, we can return immediately.
|
||||
*/
|
||||
|
||||
#if 0
|
||||
/* there is a (different?) problem (#1661) with the caching - disable until it's solved */
|
||||
if ((sbuf.st_mtime == cache->mtime) && strcmp(dir, cache->path) == 0
|
||||
&& strcmp(lcased_file, cache->file) == 0) return(1);
|
||||
#endif
|
||||
if (0 == strcmp(lcased_file, VA.name) &&
|
||||
sbuf.st_mtim.tv_sec == VA.lastMTime.tv_sec &&
|
||||
sbuf.st_mtim.tv_nsec == VA.lastMTime.tv_nsec) {
|
||||
return (1);
|
||||
} else {
|
||||
VA.lastMTime = sbuf.st_mtim;
|
||||
strcpy(VA.name, lcased_file);
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
TIMEOUT0(dirp = opendir(dir));
|
||||
@@ -3095,7 +3071,13 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
return (0);
|
||||
}
|
||||
|
||||
for (S_TOUT(dp = readdir(dirp)), svarray = varray; dp != NULL || errno == EINTR;
|
||||
/* There is no initialization call for the local file system, so we
|
||||
* must ensure there is initial storage allocated for the version array */
|
||||
if (VA.files == NULL) {
|
||||
VA.files = calloc(VERSIONARRAYCHUNKLENGTH, sizeof(*VA.files));
|
||||
VA.allocated = VERSIONARRAYCHUNKLENGTH;
|
||||
}
|
||||
for (S_TOUT(dp = readdir(dirp)); dp != NULL || errno == EINTR;
|
||||
errno = 0, S_TOUT(dp = readdir(dirp)))
|
||||
if (dp) {
|
||||
strcpy(name, dp->d_name);
|
||||
@@ -3105,42 +3087,50 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
/*
|
||||
* This file can be regarded as a same file in Lisp sense.
|
||||
*/
|
||||
strcpy(svarray->name, dp->d_name);
|
||||
strcpy(VA.files[varray_index].name, dp->d_name);
|
||||
if (*ver == '\0') {
|
||||
/* Versionless file */
|
||||
svarray->version_no = 0;
|
||||
VA.files[varray_index].version_no = 0;
|
||||
} else {
|
||||
/*
|
||||
* separator_version guarantees ver is a numeric
|
||||
* string.
|
||||
* separate_version guarantees ver is a numeric string.
|
||||
*/
|
||||
svarray->version_no = strtoul(ver, (char **)NULL, 10);
|
||||
VA.files[varray_index].version_no = strtoul(ver, (char **)NULL, 10);
|
||||
}
|
||||
varray_index++;
|
||||
if (varray_index >= VERSIONARRAYMAXLENGTH) {
|
||||
*Lisp_errno = EIO;
|
||||
return (0);
|
||||
} else if (varray_index >= VA.allocated) {
|
||||
VA.allocated += VERSIONARRAYCHUNKLENGTH;
|
||||
VA.files = realloc(VA.files,
|
||||
sizeof(*VA.files) * VA.allocated);
|
||||
}
|
||||
svarray++;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* The last entry of varray is indicated by setting LASTVERSIONARRAY into
|
||||
* version_no field.
|
||||
*/
|
||||
svarray->version_no = LASTVERSIONARRAY;
|
||||
VA.files[varray_index].version_no = LASTVERSIONARRAY;
|
||||
VA.lastUsed = varray_index;
|
||||
|
||||
/*
|
||||
* If more than one files have been stored in varray, we store the name
|
||||
* If any files have been stored in VA.files, we store the name
|
||||
* without version in the last marker entry.
|
||||
*
|
||||
* NOTE: sorting "varray_index" entries will leave the LASTVERSIONARRAY item
|
||||
* untouched by the sort, which is intentional.
|
||||
*/
|
||||
if (!NoFileP(varray)) {
|
||||
strcpy(name, varray->name);
|
||||
if (!NoFileP(VA.files)) {
|
||||
strcpy(name, VA.files[0].name);
|
||||
separate_version(name, ver, 1);
|
||||
strcpy(svarray->name, name);
|
||||
strcpy(VA.files[varray_index].name, name);
|
||||
if (varray_index > 1) {
|
||||
qsort(VA.files, varray_index, sizeof(*VA.files), compare_file_versions);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Update cache information.
|
||||
*/
|
||||
strcpy(cache->path, dir);
|
||||
strcpy(cache->file, lcased_file);
|
||||
cache->mtime = sbuf.st_mtime;
|
||||
TIMEOUT(closedir(dirp));
|
||||
return (1);
|
||||
#endif /* DOS */
|
||||
@@ -3172,7 +3162,7 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
||||
* to maintain the directory on which a file is being created.
|
||||
*/
|
||||
|
||||
static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
static int maintain_version(char *file, int forcep)
|
||||
{
|
||||
char dir[MAXPATHLEN], fname[MAXNAMLEN], ver[VERSIONLEN];
|
||||
char old_file[MAXPATHLEN], vless[MAXPATHLEN];
|
||||
@@ -3180,17 +3170,14 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
int rval, max_no;
|
||||
FileName *entry;
|
||||
|
||||
if (varray == (FileName *)NULL) {
|
||||
if (unpack_filename(file, dir, fname, ver, 1) == 0) return (0);
|
||||
/*
|
||||
* We have to make sure that dir is the existing directory.
|
||||
*/
|
||||
if (true_name(dir) != -1) return (0);
|
||||
if (get_version_array(dir, fname, VersionArray, &VArrayInfo) == 0) return (0);
|
||||
varray = VersionArray;
|
||||
}
|
||||
if (unpack_filename(file, dir, fname, ver, 1) == 0) return (0);
|
||||
/*
|
||||
* We have to make sure that dir is the existing directory.
|
||||
*/
|
||||
if (true_name(dir) != -1) return (0);
|
||||
if (get_version_array(dir, fname) == 0) return (0);
|
||||
|
||||
if (NoFileP(varray)) {
|
||||
if (NoFileP(VA.files)) {
|
||||
/*
|
||||
* We don't need to care about such case that there is no such file
|
||||
* or an only versionless file exists.
|
||||
@@ -3198,14 +3185,14 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (OnlyVersionlessP(varray)) {
|
||||
if (OnlyVersionlessP(VA.files)) {
|
||||
if (forcep) {
|
||||
/*
|
||||
* If forcep, we link the versionless file to the version
|
||||
* 1 file.
|
||||
*/
|
||||
#ifndef DOS
|
||||
get_versionless(varray, vless, dir);
|
||||
get_versionless(VA.files, vless, dir);
|
||||
ConcNameAndVersion(vless, "1", fname);
|
||||
TIMEOUT(rval = link(vless, fname));
|
||||
if (rval == -1) {
|
||||
@@ -3222,13 +3209,13 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
* exists. Thus, FindHighestVersion works fine from now on.
|
||||
*/
|
||||
|
||||
if (get_versionless(varray, vless, dir) == 0) {
|
||||
if (get_versionless(VA.files, vless, dir) == 0) {
|
||||
/*
|
||||
* There is not a versionless file, but at least one versioned file.
|
||||
* Thus, the thing we have to do is to link a versionless file
|
||||
* to the existing highest versioned file.
|
||||
*/
|
||||
FindHighestVersion(varray, entry, max_no);
|
||||
FindHighestVersion(VA.files, entry, max_no);
|
||||
ConcDirAndName(dir, entry->name, old_file);
|
||||
/*
|
||||
* The versionless file should have the same case name as the old
|
||||
@@ -3247,15 +3234,15 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (check_vless_link(vless, varray, old_file, &highest_p) == 0) return (0);
|
||||
if (check_vless_link(vless, VA.files, old_file, &highest_p) == 0) return (0);
|
||||
|
||||
if (*old_file == '\0') {
|
||||
/*
|
||||
* The versionless file is not linked to any file in varray.
|
||||
* The versionless file is not linked to any file in VA.files.
|
||||
* Thus, we have to link the versionless file to the file which
|
||||
* is versioned one higher than the existing highest version.
|
||||
*/
|
||||
FindHighestVersion(varray, entry, max_no);
|
||||
FindHighestVersion(VA.files, entry, max_no);
|
||||
sprintf(ver, "%u", max_no + 1);
|
||||
/*
|
||||
* The old file should have the same case name as the versionless
|
||||
@@ -3280,7 +3267,7 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
return (1);
|
||||
} else {
|
||||
/*
|
||||
* Although the versionless file is linked to a file in varray,
|
||||
* Although the versionless file is linked to a file in VA.files,
|
||||
* the file is not the highest versioned file. We have to unlink
|
||||
* the wrongly linked versionless file, and link the highest versioned
|
||||
* file to a versionless file.
|
||||
@@ -3290,7 +3277,7 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
||||
*Lisp_errno = errno;
|
||||
return (0);
|
||||
}
|
||||
FindHighestVersion(varray, entry, max_no);
|
||||
FindHighestVersion(VA.files, entry, max_no);
|
||||
ConcDirAndName(dir, entry->name, old_file);
|
||||
/*
|
||||
* The versionless file should have the same case name as the old
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "emlglob.h"
|
||||
#include "fvardefs.h" // for N_OP_fvar_, N_OP_fvarn, N_OP_stkscan, nati...
|
||||
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "lispmap.h" // for ATOMS_HI, STK_HI
|
||||
#include "lspglob.h" // for Stackspace
|
||||
#include "lsptypes.h" // for DLword, LispPTR, GETBASEWORD, state, FRAME...
|
||||
|
||||
1
src/gc.c
1
src/gc.c
@@ -12,6 +12,7 @@
|
||||
#include <stdio.h> // for printf
|
||||
#include "emlglob.h"
|
||||
#include "gcdata.h" // for GCLOOKUPV
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "gcdefs.h" // for OP_gcref
|
||||
#include "lspglob.h"
|
||||
#include "lsptypes.h" // for state, ByteCode, PC, TopOfStack, Get_code_...
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "commondefs.h" // for error
|
||||
#include "gccodedefs.h" // for code_block_size, reclaimcodeblock
|
||||
#include "gcdata.h" // for REC_GCLOOKUP, DELREF, ADDREF
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "lspglob.h" // for Deleted_Implicit_Hash_Slot_word, UFNTable
|
||||
#include "lsptypes.h" // for LispPTR, NIL, UFN, Get_code_BYTE, POINTERMASK
|
||||
#include "stack.h" // for fnhead
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "commondefs.h" // for error
|
||||
#include "gccodedefs.h" // for reclaimcodeblock
|
||||
#include "gcdata.h" // for DELREF, REC_GCLOOKUP
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "gcfinaldefs.h" // for arrayblockmerger, checkarrayblock, deleteblock
|
||||
#include "lispemul.h" // for LispPTR, NIL, T, POINTERMASK, DLword, ATOM_T
|
||||
#include "llstkdefs.h" // for decusecount68k
|
||||
@@ -551,15 +552,15 @@ void printarrayblock(LispPTR base) {
|
||||
printf(" Length: %d cells.\n\n", bbase->arlen);
|
||||
|
||||
addr = ((LispPTR *)bbase) - 20;
|
||||
for (; addr < (LispPTR *)bbase; addr++) printf("%p %8x\n", (void *)addr, *addr);
|
||||
printf("%p %8x <- array header\n", (void *)addr, *addr);
|
||||
for (; addr < (LispPTR *)bbase; addr++) printf("%16p %8x\n", (void *)addr, *addr);
|
||||
printf("%16p %8x <- array header\n", (void *)addr, *addr);
|
||||
addr++;
|
||||
for (; addr < (LispPTR *)bbase + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
|
||||
for (; addr < (LispPTR *)bbase + 20; addr++) printf("%16p %8x\n", (void *)addr, *addr);
|
||||
printf(". . .\n");
|
||||
|
||||
addr = ((LispPTR *)btrailer) - 20;
|
||||
for (; addr < (LispPTR *)btrailer; addr++) printf("%p %8x\n", (void *)addr, *addr);
|
||||
printf("%p %8x <- array trailer\n", (void *)addr, *addr);
|
||||
for (; addr < (LispPTR *)btrailer; addr++) printf("%16p %8x\n", (void *)addr, *addr);
|
||||
printf("%16p %8x <- array trailer\n", (void *)addr, *addr);
|
||||
addr++;
|
||||
for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
|
||||
for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%16p %8x\n", (void *)addr, *addr);
|
||||
}
|
||||
|
||||
@@ -253,7 +253,7 @@ void enter_big_reference_count(LispPTR ptr) {
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
void modify_big_reference_count(LispPTR *entry, DLword casep, LispPTR ptr) {
|
||||
void modify_big_reference_count(GCENTRY *entry, DLword casep, LispPTR ptr) {
|
||||
struct gc_ovfl *oventry;
|
||||
LispPTR tmp;
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include "commondefs.h" // for error
|
||||
#include "emlglob.h"
|
||||
#include "gcdata.h" // for GCENTRY, REC_GCLOOKUP, STKREF, hashentry
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "gcmain3defs.h" // for gcmapscan, gcmapunscan, gcscanstack
|
||||
#include "gcrcelldefs.h" // for gcreccell
|
||||
#include "gcscandefs.h" // for gcscan1, gcscan2
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#include "arith.h" // for GetSmalldata
|
||||
#include "gcdata.h" // for htoverflow, REC_GCLOOKUP
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "gcoflowdefs.h" // for gc_handleoverflow, gcmaptable
|
||||
#include "gcrdefs.h" // for doreclaim
|
||||
#include "lispemul.h" // for NIL, DLword, LispPTR
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
#include "commondefs.h" // for error
|
||||
#include "gccodedefs.h" // for reclaimcodeblock
|
||||
#include "gcdata.h" // for DELREF, REC_GCLOOKUPV, ADDREF, REC_GCLOOKUP
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "gcfinaldefs.h" // for reclaimarrayblock, reclaimstackp, releasing...
|
||||
#include "gcrcelldefs.h" // for freelistcell, gcreccell
|
||||
#include "lispemul.h" // for LispPTR, ConsCell, NIL, POINTERMASK, DLword
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "dbprint.h" // for DEBUGGER
|
||||
#include "emlglob.h"
|
||||
#include "gcdata.h" // for FRPLPTR
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "gvar2defs.h" // for N_OP_gvar_, N_OP_rplptr
|
||||
#include "lispemul.h" // for LispPTR, DLword, NEWATOM_VALUE_OFFSET, NEWAT...
|
||||
#include "lspglob.h" // for AtomSpace
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
/* if using inet_ntop you must #include <arpa/inet.h> */
|
||||
#endif /* DOS */
|
||||
|
||||
#if (defined(OS5) || defined(__CYGWIN__)) && !defined(O_ASYNC)
|
||||
@@ -93,7 +94,8 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
|
||||
LispStringToCString(nameConn, namestring, 100);
|
||||
host = gethostbyname(namestring);
|
||||
if (!host) return (NIL);
|
||||
N_ARITH_SWITCH(ntohl(*(long *)host->h_addr));
|
||||
res = ntohl(*(in_addr_t *)host->h_addr);
|
||||
N_ARITH_SWITCH(res);
|
||||
break;
|
||||
|
||||
case TCPservicelookup:
|
||||
@@ -120,7 +122,7 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
|
||||
case TCPconnect: /* args: hostname or (fixp)address, socket# */
|
||||
memset(&farend, 0, sizeof farend);
|
||||
N_GETNUMBER(nameConn, res, string_host);
|
||||
farend.sin_addr.s_addr = htons(res);
|
||||
farend.sin_addr.s_addr = htonl(res);
|
||||
goto host_ok;
|
||||
string_host:
|
||||
LispStringToCString(nameConn, namestring, 100);
|
||||
|
||||
@@ -137,7 +137,7 @@ void clear_display(void) {
|
||||
#else /* COLOR */
|
||||
|
||||
void clear_display(void) {
|
||||
short *word;
|
||||
DLword *word;
|
||||
int w, h;
|
||||
if (MonoOrColor == MONO_SCREEN) {
|
||||
#ifndef DISPLAYBUFFER
|
||||
@@ -150,7 +150,7 @@ void clear_display(void) {
|
||||
0);
|
||||
#endif /* DISPLAYBUFFER */
|
||||
} else { /* MonoOrColo is COLOR_SCREEN */
|
||||
word = (short *)ColorDisplayRegion68k;
|
||||
word = ColorDisplayRegion68k;
|
||||
for (h = displayheight; (h--);) {
|
||||
for (w = DisplayRasterWidth * 8; (w--);) { *word++ = 0; }
|
||||
} /* end for(h) */
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "etherdefs.h" // for init_ifpage_ether
|
||||
#include "gcarraydefs.h" // for get_package_atom
|
||||
#include "gcdata.h" // for ADDREF, GCLOOKUP
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO
|
||||
#include "initsoutdefs.h" // for build_lisp_map, fixp_value, init_for_bitblt
|
||||
#include "iopage.h" // for IOPAGE
|
||||
|
||||
@@ -15,7 +15,10 @@
|
||||
#include <stdio.h> // for perror, fprintf, printf, stderr, sprintf
|
||||
#include <stdlib.h> // for exit, free, malloc
|
||||
#include <string.h> // for memset
|
||||
#include <sys/mman.h> // for mmap
|
||||
#include <sys/mman.h> // for mmap, MAP_FAILED
|
||||
#ifndef MAP_FAILED
|
||||
#define MAP_FAILED ((void *)-1)
|
||||
#endif
|
||||
#include <sys/stat.h> // for stat, fstat
|
||||
#include <sys/types.h> // for off_t
|
||||
#include <unistd.h> // for lseek, read, close, getpagesize
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "commondefs.h" // for error
|
||||
#include "gcarraydefs.h" // for get_package_atom
|
||||
#include "gcdata.h" // for FRPLPTR
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "lispemul.h" // for LispPTR, state, CurrentStackPTR, NIL_PTR, NIL
|
||||
#include "lispmap.h" // for S_POSITIVE
|
||||
#include "loopsopsdefs.h" // for lcfuncall, LCFetchMethod, LCFetchMethodOrHelp
|
||||
|
||||
160
src/main.c
160
src/main.c
@@ -229,7 +229,11 @@ int display_max = 65536 * 16 * 2;
|
||||
/* diagnostic flag for sysout dumping */
|
||||
extern unsigned maxpages;
|
||||
|
||||
char sysout_name[MAXPATHLEN]; /* Set by read_Xoption, in the X version. */
|
||||
char sysout_name_cl[MAXPATHLEN] = "\0"; /* sysout name as per -sysout command line arg ; Set by read_Xoption, in the X version. */
|
||||
char sysout_name_xrm[MAXPATHLEN] = "\0"; /* sysout name as per X resource manager, if any */
|
||||
char sysout_name_first_arg[MAXPATHLEN] = "\0"; /* sysout name as per 1st command line arg, if any */
|
||||
char sysout_name[MAXPATHLEN] = "\0"; /* "final" sysout name chosen from above */
|
||||
|
||||
unsigned sysout_size = 0; /* ditto */
|
||||
|
||||
int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will call fflush(stdout) after each printf */
|
||||
@@ -239,7 +243,7 @@ int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will cal
|
||||
extern DspInterface currentdsp;
|
||||
#endif /* DOS || XWINDOW */
|
||||
#ifdef SDL
|
||||
extern int init_SDL(char*, int, int, int);
|
||||
#include "sdldefs.h" /* for init_SDL */
|
||||
#endif
|
||||
extern const time_t MDate;
|
||||
extern int nokbdflag;
|
||||
@@ -284,6 +288,8 @@ const char *helpstring =
|
||||
-info Print general info about the system\n\
|
||||
-help Print this message\n\
|
||||
-pixelscale <n> The amount of pixels to show for one Medley screen pixel.\n\
|
||||
-fg/-foreground <color> Screen foreground color, default Black. X color name or #RRBBGG hex\n\
|
||||
-bg/-background <color> Screen background color, default White. X color name or #RRBBGG hex\n\
|
||||
-sc[reen] <w>x<h>] The Medley screen geometry\n\
|
||||
-t <title> The window title\n\
|
||||
-title <title> The window title\n";
|
||||
@@ -312,6 +318,21 @@ const char *nethubHelpstring = "";
|
||||
extern int insnsCountdownForTimerAsyncEmulation;
|
||||
#endif
|
||||
|
||||
#if defined(XWINDOW) || defined(SDL)
|
||||
char foregroundColorName[64] = {0};
|
||||
extern char foregroundColorName[64];
|
||||
char backgroundColorName[64] = {0};
|
||||
extern char backgroundColorName[64];
|
||||
#endif
|
||||
char windowTitle[255] = "Medley";
|
||||
extern char windowTitle[255];
|
||||
int lispDisplayRequestedWidth = 1024;
|
||||
extern int lispDisplayRequestedWidth;
|
||||
int lispDisplayRequestedHeight = 768;
|
||||
extern int lispDisplayRequestedHeight;
|
||||
int pixelScale = 1;
|
||||
extern int pixelScale;
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* M A I N E N T R Y P O I N T */
|
||||
@@ -326,9 +347,6 @@ int main(int argc, char *argv[])
|
||||
extern int TIMER_INTERVAL;
|
||||
extern fd_set LispReadFds;
|
||||
long tmpint;
|
||||
int width = 1024, height = 768;
|
||||
int pixelscale = 1;
|
||||
char *windowtitle = "Medley";
|
||||
|
||||
#ifdef MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE
|
||||
if (dld_find_executable(argv[0]) == 0) {
|
||||
@@ -338,6 +356,24 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
#endif /* MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE */
|
||||
|
||||
#ifdef PROFILE
|
||||
moncontrol(0); /* initially stop sampling */
|
||||
#endif /* PROFILE */
|
||||
|
||||
//
|
||||
//
|
||||
// Process Command Line Arguments
|
||||
//
|
||||
//
|
||||
|
||||
// First check if the first argument is a sysout name
|
||||
// and save it away if it is in case the X windows
|
||||
// arg processing changes argc/argv
|
||||
if (argc > 1 && argv[1][0] != '-') {
|
||||
strncpy(sysout_name_first_arg, argv[1], MAXPATHLEN);
|
||||
}
|
||||
|
||||
|
||||
#ifdef XWINDOW
|
||||
read_Xoption(&argc, argv);
|
||||
#endif /* XWINDOW */
|
||||
@@ -345,17 +381,6 @@ int main(int argc, char *argv[])
|
||||
save_argc = argc;
|
||||
save_argv = argv;
|
||||
|
||||
#ifdef PROFILE
|
||||
moncontrol(0); /* initially stop sampling */
|
||||
#endif /* PROFILE */
|
||||
|
||||
/* Sysout is found as follows:
|
||||
If the first argument doesn't begin with '-', assume it's the sysout
|
||||
Look at the environment variable LDESRCESYSOUT if that fails
|
||||
Look for ~/lisp.virtualmem if that fails
|
||||
Barf and print the command line if tha fails
|
||||
*/
|
||||
|
||||
i = 1;
|
||||
|
||||
if (argv[i] && ((strcmp(argv[i], "-info") == 0) || (strcmp(argv[i], "-INFO") == 0))) {
|
||||
@@ -368,35 +393,23 @@ int main(int argc, char *argv[])
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (argc > 1 && argv[1][0] != '-') {
|
||||
strncpy(sysout_name, argv[1], MAXPATHLEN);
|
||||
i++;
|
||||
} else if ((envname = getenv("LDESRCESYSOUT")) != NULL) {
|
||||
strncpy(sysout_name, envname, MAXPATHLEN);
|
||||
} else if ((envname = getenv("LDESOURCESYSOUT")) != NULL)
|
||||
strncpy(sysout_name, envname, MAXPATHLEN);
|
||||
else {
|
||||
#ifdef DOS
|
||||
strncpy(sysout_name, "lisp.vm", MAXPATHLEN);
|
||||
#else
|
||||
if ((envname = getenv("HOME")) != NULL) {
|
||||
strncpy(sysout_name, envname, MAXPATHLEN);
|
||||
strncat(sysout_name, "/lisp.virtualmem", MAXPATHLEN - 17);
|
||||
}
|
||||
#endif /* DOS */
|
||||
}
|
||||
if (access(sysout_name, R_OK)) {
|
||||
perror("Couldn't find a sysout to run");
|
||||
(void)fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
|
||||
exit(1);
|
||||
}
|
||||
/* OK, sysout name is now in sysout_name, and i is moved past a supplied name */
|
||||
|
||||
for (; i < argc; i += 1) { /* step by 1 in case of typo */
|
||||
|
||||
// NOTE: in the case of X Windows, some of the args being checked for in this loop
|
||||
// have already been processed (and removed from argv) by the call to read_Xoption()
|
||||
// above. (See readXoption() in xrdopt.c)
|
||||
|
||||
/* Check for -sysout arg */
|
||||
if (!strcmp(argv[i], "-sysout")) {
|
||||
if (argc > ++i) {
|
||||
strncpy(sysout_name_cl, argv[i], MAXPATHLEN);
|
||||
}
|
||||
}
|
||||
|
||||
/* -t and -m are undocumented and somewhat dangerous... */
|
||||
|
||||
if (!strcmp(argv[i], "-t")) { /**** timer interval ****/
|
||||
else if (!strcmp(argv[i], "-t")) { /**** timer interval ****/
|
||||
if (argc > ++i) {
|
||||
errno = 0;
|
||||
tmpint = strtol(argv[i], (char **)NULL, 10);
|
||||
@@ -460,7 +473,7 @@ int main(int argc, char *argv[])
|
||||
#ifdef SDL
|
||||
else if ((strcmp(argv[i], "-sc") == 0) || (strcmp(argv[i], "-SC") == 0)) {
|
||||
if (argc > ++i) {
|
||||
int read = sscanf(argv[i], "%dx%d", &width, &height);
|
||||
int read = sscanf(argv[i], "%dx%d", &lispDisplayRequestedWidth, &lispDisplayRequestedHeight);
|
||||
if(read != 2) {
|
||||
(void)fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]);
|
||||
exit(1);
|
||||
@@ -471,7 +484,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
} else if ((strcmp(argv[i], "-pixelscale") == 0) || (strcmp(argv[i], "-PIXELSCALE") == 0)) {
|
||||
if (argc > ++i) {
|
||||
int read = sscanf(argv[i], "%d", &pixelscale);
|
||||
int read = sscanf(argv[i], "%d", &pixelScale);
|
||||
if(read != 1) {
|
||||
(void)fprintf(stderr, "Could not parse -pixelscale argument %s\n", argv[i]);
|
||||
exit(1);
|
||||
@@ -483,13 +496,26 @@ int main(int argc, char *argv[])
|
||||
} else if ((strcmp(argv[i], "-t") == 0) || (strcmp(argv[i], "-T") == 0)
|
||||
|| (strcmp(argv[i], "-title") == 0) || (strcmp(argv[i], "-TITLE") == 0)) {
|
||||
if (argc > ++i) {
|
||||
windowtitle = argv[i];
|
||||
strncpy(windowTitle, argv[i], sizeof(windowTitle) - 1);
|
||||
} else {
|
||||
(void)fprintf(stderr, "Missing argument after -title\n");
|
||||
exit(1);
|
||||
}
|
||||
} else if (strcmp(argv[i], "-fg") == 0 || strcmp(argv[i], "-foreground") == 0) {
|
||||
if (argc > ++i) {
|
||||
strncpy(foregroundColorName, argv[i], sizeof(foregroundColorName) - 1);
|
||||
} else {
|
||||
(void)fprintf(stderr, "Missing argument after -fg/-foreground\n");
|
||||
exit(1);
|
||||
}
|
||||
} else if (strcmp(argv[i], "-bg") == 0 || strcmp(argv[i], "-background") == 0) {
|
||||
if (argc > ++i) {
|
||||
strncpy(backgroundColorName, argv[i], sizeof(backgroundColorName) - 1);
|
||||
} else {
|
||||
(void)fprintf(stderr, "Missing argument after -bg/-background\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* SDL */
|
||||
/* Can only do this under SUNOs, for now */
|
||||
else if (!strcmp(argv[i], "-E")) { /**** ethernet info ****/
|
||||
@@ -610,6 +636,47 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// OK, now we can process the sysout_name
|
||||
// Order of priority:
|
||||
// 1. Value of -sysout command line arg
|
||||
// 2. Value of the first command line arg
|
||||
// 3. Value of LDESRCESYSOUT env variable
|
||||
// 4. Value of LDESOURCESYSOUT env variable
|
||||
// 5. Value as determined by X resource manager, if any
|
||||
// 6. Value of $HOME/lisp.virtualmem (or lisp.vm for DOS)
|
||||
//
|
||||
if (sysout_name_cl[0] != '\0') { strncpy(sysout_name, sysout_name_cl, MAXPATHLEN); }
|
||||
else if (sysout_name_first_arg[0] != '\0') { strncpy(sysout_name, sysout_name_first_arg, MAXPATHLEN); }
|
||||
else if ((envname = getenv("LDESRCESYSOUT")) != NULL) { strncpy(sysout_name, envname, MAXPATHLEN); }
|
||||
else if ((envname = getenv("LDESOURCESYSOUT")) != NULL) { strncpy(sysout_name, envname, MAXPATHLEN); }
|
||||
else if (sysout_name_xrm[0] != '\0') { strncpy(sysout_name, sysout_name_xrm, MAXPATHLEN); }
|
||||
else {
|
||||
#ifdef DOS
|
||||
strncpy(sysout_name, "lisp.vm", MAXPATHLEN);
|
||||
#else
|
||||
if ((envname = getenv("HOME")) != NULL) {
|
||||
strncpy(sysout_name, envname, MAXPATHLEN);
|
||||
strncat(sysout_name, "/lisp.virtualmem", MAXPATHLEN - 17);
|
||||
}
|
||||
#endif /* DOS */
|
||||
}
|
||||
if ((sysout_name[0] == '\0') || (access(sysout_name, R_OK))) {
|
||||
perror("Couldn't find a sysout to run");
|
||||
fprintf(stderr, "Looking for: %s\n", sysout_name);
|
||||
(void)fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
|
||||
exit(1);
|
||||
}
|
||||
/* OK, sysout name is now in sysout_name */
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// End of command line arg processing
|
||||
//
|
||||
//
|
||||
|
||||
|
||||
/* Sanity checks. */
|
||||
#ifdef DOS
|
||||
probemouse(); /* See if the mouse is connected. */
|
||||
@@ -649,13 +716,12 @@ int main(int argc, char *argv[])
|
||||
make_dsp_instance(currentdsp, 0, 0, 0, 1); /* All defaults the first time */
|
||||
#endif /* DOS || XWINDOW */
|
||||
#if defined(SDL)
|
||||
init_SDL(windowtitle, width, height, pixelscale);
|
||||
init_SDL(windowTitle, lispDisplayRequestedWidth, lispDisplayRequestedHeight, pixelScale);
|
||||
#endif /* SDL */
|
||||
/* Load sysout to VM space and returns real sysout_size(not 0) */
|
||||
sysout_size = sysout_loader(sysout_name, sysout_size);
|
||||
|
||||
build_lisp_map(); /* built up map */
|
||||
|
||||
build_lisp_map(); /* build up map */
|
||||
init_ifpage(sysout_size); /* init interface page */
|
||||
init_iopage();
|
||||
init_miscstats();
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "commondefs.h" // for error
|
||||
#include "emlglob.h"
|
||||
#include "gcdata.h" // for DELREF, GCLOOKUP
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "lispemul.h" // for LispPTR, DLword, NIL, POINTERMASK, state
|
||||
#include "lispmap.h" // for S_POSITIVE
|
||||
#include "lspglob.h"
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#ifdef BIGVM
|
||||
#define SWA_FNHEAD
|
||||
#else
|
||||
#include "byteswapdefs.h" // for swapx
|
||||
#define SWA_FNHEAD swapx
|
||||
#endif /* BIGVM */
|
||||
|
||||
|
||||
@@ -419,7 +419,7 @@ loop:
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR srctype, LispPTR ope)
|
||||
static void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR srctype, LispPTR ope)
|
||||
{
|
||||
DLword *nbase;
|
||||
u_char *dbase;
|
||||
|
||||
@@ -29,6 +29,11 @@
|
||||
#include "lspglob.h"
|
||||
#include "lsptypes.h" // for Listp
|
||||
#include "rplconsdefs.h" // for N_OP_rplcons
|
||||
#ifndef NEWCDRCODING
|
||||
#include "gcdata.h"
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "address.h"
|
||||
#endif
|
||||
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "commondefs.h" // for error
|
||||
#include "conspagedefs.h" // for cons
|
||||
#include "gcdata.h" // for ADDREF, GCLOOKUP
|
||||
#include "gchtfinddefs.h" // for htfind, rec_htfind
|
||||
#include "gcfinaldefs.h" // for makefreearrayblock, mergebackward
|
||||
#include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO
|
||||
#include "lispemul.h" // for LispPTR, NIL, GETFPTOVP, INTSTAT, ATOM_T
|
||||
|
||||
@@ -64,6 +64,11 @@
|
||||
#include "uutilsdefs.h" // for suspend_lisp, check_unix_password, unix_fu...
|
||||
#include "vmemsavedefs.h" // for lisp_finish, vmem_save0
|
||||
|
||||
#ifdef COLOR
|
||||
#include "rawcolordefs.h"
|
||||
#include "llcolordefs.h"
|
||||
#endif
|
||||
|
||||
extern LispPTR *PENDINGINTERRUPT68k;
|
||||
|
||||
/***********************************************************/
|
||||
|
||||
@@ -683,9 +683,10 @@ int print_opcode(int pc, DLbyte *addr, struct fnhead *fnobj) {
|
||||
extern unsigned int oplength[256];
|
||||
int len = oplength[op] + 1;
|
||||
|
||||
printf(" 0%o (0x%x) ", pc, pc);
|
||||
for (i = 0; i < len; i++) printf("%o ", 0xFF & GETBYTE(addr + i));
|
||||
printf(" %s", opcode_table[op]);
|
||||
printf(" 0%04o (0x%04x) ", pc, pc);
|
||||
for (i = 0; i < len; i++) printf("%4o", 0xFF & GETBYTE(addr + i));
|
||||
for (; i < 9; i++) printf(" ");
|
||||
printf("%s", opcode_table[op]);
|
||||
|
||||
switch (op) {
|
||||
case 0:
|
||||
|
||||
67
src/uraid.c
67
src/uraid.c
@@ -49,34 +49,33 @@
|
||||
#define vfork fork
|
||||
#endif
|
||||
|
||||
#include "lispemul.h"
|
||||
#include "lispmap.h"
|
||||
#include "adr68k.h"
|
||||
#include "lsptypes.h"
|
||||
#include "lspglob.h"
|
||||
#include "emlglob.h"
|
||||
#include "cell.h"
|
||||
#include "ifpage.h"
|
||||
#include "debug.h"
|
||||
#include "devconf.h"
|
||||
#include "stack.h"
|
||||
#include "version.h" // for BIGVM
|
||||
|
||||
#include "display.h"
|
||||
#include "bitblt.h"
|
||||
#include "adr68k.h" // for NativeAligned4FromStackOffset, LAddr...
|
||||
#include "cell.h" // for DefCell, GetDEFCELL68k, GetVALCELL68k
|
||||
#include "dbgtooldefs.h" // for bt1, bt, sf
|
||||
#include "devif.h" // for DspInterfaceRec, DevRec, DspInterface
|
||||
#include "display.h" // for DISPLAYBUFFER
|
||||
#include "gcarraydefs.h" // for get_package_atom
|
||||
#include "gcfinaldefs.h" // for printarrayblock
|
||||
#include "ifpage.h" // for IFPAGE
|
||||
#include "initdspdefs.h" // for clear_display, flush_display_buffer
|
||||
#include "initkbddefs.h" // for init_keyboard
|
||||
#include "kprintdefs.h" // for print
|
||||
#include "lispemul.h" // for T, DLword, LispPTR, POINTERMASK, NIL
|
||||
#include "lispmap.h" // for DISPLAY_HI, ATOM_HI, DEFS_HI, DISPLA...
|
||||
#include "llstkdefs.h" // for stack_check
|
||||
#include "lspglob.h" // for InterfacePage, Plistspace
|
||||
#include "lsptypes.h" // for GETWORD, GetDTD, GetTypeNumber, dtd
|
||||
#include "mkatomdefs.h" // for make_atom
|
||||
#include "returndefs.h" // for contextsw
|
||||
#include "stack.h" // for FX, ResetFXP
|
||||
#include "testtooldefs.h" // for all_stack_dump, doko, printPC, print...
|
||||
#include "timerdefs.h" // for int_block, int_init, int_unblock
|
||||
#include "uraiddefs.h" // for copy_region, device_after_raid, devi...
|
||||
#include "uraidextdefs.h" // for URMAXCOMM, URMAXFXNUM, URSCAN_ALINK
|
||||
#include "vmemsavedefs.h" // for vmem_save
|
||||
|
||||
#include "uraiddefs.h"
|
||||
#include "uraidextdefs.h"
|
||||
#include "dbgtooldefs.h"
|
||||
#include "gcarraydefs.h"
|
||||
#include "initdspdefs.h"
|
||||
#include "initkbddefs.h"
|
||||
#include "kprintdefs.h"
|
||||
#include "llstkdefs.h"
|
||||
#include "mkatomdefs.h"
|
||||
#include "returndefs.h"
|
||||
#include "testtooldefs.h"
|
||||
#include "timerdefs.h"
|
||||
#include "vmemsavedefs.h"
|
||||
#ifdef MAIKO_ENABLE_ETHERNET
|
||||
#include "etherdefs.h"
|
||||
#endif
|
||||
@@ -452,6 +451,22 @@ LispPTR uraid_commands(void) {
|
||||
}
|
||||
print(*((LispPTR *)GetVALCELL68k(index)));
|
||||
break;
|
||||
case 'B': { /* print array block */
|
||||
LispPTR objaddr;
|
||||
if (URaid_argnum == 1) {
|
||||
printf("PRINT-ARRAY-BLOCK: B HEX-LispAddress\n");
|
||||
return (T);
|
||||
}
|
||||
errno = 0;
|
||||
objaddr = (LispPTR)strtoul(URaid_arg1, &endpointer, 16);
|
||||
if (errno != 0 || *endpointer != '\0') {
|
||||
printf("Arg not HEX number\n");
|
||||
return (T);
|
||||
}
|
||||
printarrayblock(objaddr);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'd': /* DEFCELL */
|
||||
if (URaid_argnum != 2) {
|
||||
printf("GETD: d litatom\n");
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
static XColor cursor_fore_xcsd, cursor_back_xcsd, xced;
|
||||
extern Colormap Colors;
|
||||
extern char cursorColor[255];
|
||||
|
||||
extern DspInterface currentdsp;
|
||||
/* a simple linked list to remember X cursors */
|
||||
@@ -143,7 +144,7 @@ void init_Xcursor(DspInterface dsp)
|
||||
|
||||
XLOCK; /* Take no X signals during this activity (ISC 386) */
|
||||
|
||||
XAllocNamedColor(dsp->display_id, Colors, "black", &cursor_fore_xcsd, &xced);
|
||||
XAllocNamedColor(dsp->display_id, Colors, cursorColor, &cursor_fore_xcsd, &xced);
|
||||
XAllocNamedColor(dsp->display_id, Colors, "white", &cursor_back_xcsd, &xced);
|
||||
|
||||
XUNLOCK(dsp); /* OK to take signals again */
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <X11/Xlib.h> // for XCreateSimpleWindow, XMapWindow, XChangeWin...
|
||||
#include <X11/Xutil.h> // for XSizeHints, XStringListToTextProperty, XWMH...
|
||||
#include <stdio.h> // for NULL
|
||||
#include <stdlib.h> // for exit
|
||||
#include "commondefs.h" // for error
|
||||
#include "dbprint.h" // for TPRINT
|
||||
#include "devif.h" // for (anonymous), MRegion, OUTER_SB_WIDTH, Defin...
|
||||
@@ -38,8 +39,8 @@ extern DLword *DisplayRegion68k;
|
||||
|
||||
extern int Current_Hot_X, Current_Hot_Y; /* X Cursor hotspots */
|
||||
|
||||
extern char Window_Title[255];
|
||||
extern char Icon_Title[255];
|
||||
extern char windowTitle[255];
|
||||
extern char iconTitle[255];
|
||||
|
||||
extern int save_argc;
|
||||
extern char **save_argv;
|
||||
@@ -50,6 +51,7 @@ extern int LispWindowRequestedX, LispWindowRequestedY;
|
||||
extern unsigned LispWindowRequestedWidth, LispWindowRequestedHeight;
|
||||
extern int noscroll;
|
||||
|
||||
extern Colormap Colors;
|
||||
/*
|
||||
* globals defined in this module
|
||||
*/
|
||||
@@ -66,9 +68,16 @@ Cursor WaitCursor, DefaultCursor, VertScrollCursor, VertThumbCursor, ScrollUpCur
|
||||
/* */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
static unsigned long foregroundPixel;
|
||||
static unsigned long backgroundPixel;
|
||||
|
||||
void Create_LispWindow(DspInterface dsp)
|
||||
{
|
||||
extern char foregroundColorName[];
|
||||
extern char backgroundColorName[];
|
||||
XColor foregroundColor_xcsd;
|
||||
XColor backgroundColor_xcsd;
|
||||
Status status;
|
||||
XSizeHints szhint = {0};
|
||||
XWMHints Lisp_WMhints = {0};
|
||||
XClassHint xclasshint = {0};
|
||||
@@ -82,8 +91,8 @@ void Create_LispWindow(DspInterface dsp)
|
||||
unsigned int GravSize;
|
||||
char *WT, *IT;
|
||||
|
||||
WT = Window_Title;
|
||||
IT = Icon_Title;
|
||||
WT = windowTitle;
|
||||
IT = iconTitle;
|
||||
|
||||
GravSize = (dsp->ScrollBarWidth / 2) - dsp->InternalBorderWidth;
|
||||
Col2 = dsp->Visible.width;
|
||||
@@ -92,13 +101,33 @@ void Create_LispWindow(DspInterface dsp)
|
||||
Row3 = dsp->Visible.height + (OUTER_SB_WIDTH(dsp) / 2);
|
||||
|
||||
screen = ScreenOfDisplay(dsp->display_id, DefaultScreen(dsp->display_id));
|
||||
/* set up default display as black on white */
|
||||
foregroundPixel = BlackPixelOfScreen(screen);
|
||||
backgroundPixel = WhitePixelOfScreen(screen);
|
||||
/* parse and record non-default color specs for foreground and background */
|
||||
if (foregroundColorName[0]) {
|
||||
status = XAllocNamedColor(dsp->display_id, Colors, foregroundColorName, &foregroundColor_xcsd, &foregroundColor_xcsd);
|
||||
if (status == 0) {
|
||||
fprintf(stderr, "Color allocation failed for foreground color: %s\n", foregroundColorName);
|
||||
exit(1);
|
||||
}
|
||||
foregroundPixel = foregroundColor_xcsd.pixel;
|
||||
}
|
||||
if (backgroundColorName[0]) {
|
||||
status = XAllocNamedColor(dsp->display_id, Colors, backgroundColorName, &backgroundColor_xcsd, &backgroundColor_xcsd);
|
||||
if (status == 0) {
|
||||
fprintf(stderr, "Color allocation failed for background color: %s\n", backgroundColorName);
|
||||
exit(1);
|
||||
}
|
||||
backgroundPixel = backgroundColor_xcsd.pixel;
|
||||
}
|
||||
dsp->LispWindow = XCreateSimpleWindow(
|
||||
dsp->display_id, RootWindowOfScreen(screen), LispWindowRequestedX, /* Default upper left */
|
||||
LispWindowRequestedY, /* Default upper left */
|
||||
dsp->Visible.width + OUTER_SB_WIDTH(dsp), /* Default width */
|
||||
dsp->Visible.height + OUTER_SB_WIDTH(dsp), /* Default height */
|
||||
0, /* Default border */
|
||||
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
|
||||
foregroundPixel, backgroundPixel);
|
||||
|
||||
Lisp_SetWinAttributes.bit_gravity = dsp->BitGravity;
|
||||
Lisp_SetWinAttributes.override_redirect = False;
|
||||
@@ -114,10 +143,8 @@ void Create_LispWindow(DspInterface dsp)
|
||||
|
||||
/* Have to make the GC before we make the icon. */
|
||||
gcv.function = GXcopy;
|
||||
gcv.foreground =
|
||||
BlackPixelOfScreen(ScreenOfDisplay(dsp->display_id, DefaultScreen(dsp->display_id)));
|
||||
gcv.background =
|
||||
WhitePixelOfScreen(ScreenOfDisplay(dsp->display_id, DefaultScreen(dsp->display_id)));
|
||||
gcv.foreground = foregroundPixel;
|
||||
gcv.background = backgroundPixel;
|
||||
dsp->Copy_GC =
|
||||
XCreateGC(dsp->display_id, dsp->LispWindow, GCForeground | GCBackground | GCFunction, &gcv);
|
||||
|
||||
@@ -146,7 +173,7 @@ void Create_LispWindow(DspInterface dsp)
|
||||
|
||||
dsp->DisplayWindow = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, 0, 0,
|
||||
dsp->Visible.width, dsp->Visible.height, 0,
|
||||
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
|
||||
foregroundPixel, backgroundPixel);
|
||||
XChangeWindowAttributes(dsp->display_id, dsp->DisplayWindow,
|
||||
CWBitGravity | CWOverrideRedirect | CWBackingStore,
|
||||
&Lisp_SetWinAttributes);
|
||||
@@ -159,14 +186,14 @@ void Create_LispWindow(DspInterface dsp)
|
||||
|
||||
dsp->ScrollBarPixmap = XCreatePixmapFromBitmapData(
|
||||
dsp->display_id, dsp->LispWindow, (char *)check_bits, check_width, check_height,
|
||||
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen), (unsigned)DefaultDepthOfScreen(screen));
|
||||
foregroundPixel, backgroundPixel, (unsigned)DefaultDepthOfScreen(screen));
|
||||
dsp->GravityOnPixmap = XCreatePixmapFromBitmapData(
|
||||
dsp->display_id, dsp->LispWindow, (char *)check_bits, 16, 16, BlackPixelOfScreen(screen),
|
||||
WhitePixelOfScreen(screen), (unsigned)DefaultDepthOfScreen(screen));
|
||||
dsp->display_id, dsp->LispWindow, (char *)check_bits, 16, 16, foregroundPixel,
|
||||
backgroundPixel, (unsigned)DefaultDepthOfScreen(screen));
|
||||
|
||||
dsp->GravityOffPixmap = XCreatePixmapFromBitmapData(
|
||||
dsp->display_id, dsp->LispWindow, (char *)plain_bits, 16, 16, BlackPixelOfScreen(screen),
|
||||
WhitePixelOfScreen(screen), (unsigned)DefaultDepthOfScreen(screen));
|
||||
dsp->display_id, dsp->LispWindow, (char *)plain_bits, 16, 16, foregroundPixel,
|
||||
backgroundPixel, (unsigned)DefaultDepthOfScreen(screen));
|
||||
|
||||
set_Xcursor(dsp, default_cursor.cuimage, (int)default_cursor.cuhotspotx,
|
||||
(int)(15 - default_cursor.cuhotspoty), &DefaultCursor, 0);
|
||||
@@ -197,7 +224,7 @@ void Create_LispWindow(DspInterface dsp)
|
||||
0 - (int)dsp->InternalBorderWidth, /* y */
|
||||
dsp->ScrollBarWidth, /* width */
|
||||
dsp->Visible.height, dsp->InternalBorderWidth,
|
||||
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
|
||||
foregroundPixel, backgroundPixel);
|
||||
DefineCursor(dsp, dsp->VerScrollBar, &VertScrollCursor);
|
||||
XMapWindow(dsp->display_id, dsp->VerScrollBar);
|
||||
|
||||
@@ -205,7 +232,7 @@ void Create_LispWindow(DspInterface dsp)
|
||||
0 - (int)dsp->InternalBorderWidth, (int)Row2, /* y */
|
||||
dsp->Visible.width, /* width */
|
||||
dsp->ScrollBarWidth, dsp->InternalBorderWidth,
|
||||
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
|
||||
foregroundPixel, backgroundPixel);
|
||||
DefineCursor(dsp, dsp->HorScrollBar, &HorizScrollCursor);
|
||||
XChangeWindowAttributes(dsp->display_id, dsp->HorScrollBar, CWOverrideRedirect,
|
||||
&Lisp_SetWinAttributes);
|
||||
@@ -216,7 +243,7 @@ void Create_LispWindow(DspInterface dsp)
|
||||
(dsp->Visible.y * (int)dsp->Visible.height) / (int)dsp->Display.height, /* y */
|
||||
dsp->ScrollBarWidth, /* width */
|
||||
((dsp->Visible.height * dsp->Visible.height) / dsp->Display.height) + 1,
|
||||
dsp->InternalBorderWidth, BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
|
||||
dsp->InternalBorderWidth, foregroundPixel, backgroundPixel);
|
||||
XChangeWindowAttributes(dsp->display_id, dsp->VerScrollButton, CWOverrideRedirect,
|
||||
&Lisp_SetWinAttributes);
|
||||
XSetWindowBackgroundPixmap(dsp->display_id, dsp->VerScrollButton, dsp->ScrollBarPixmap);
|
||||
@@ -228,8 +255,8 @@ void Create_LispWindow(DspInterface dsp)
|
||||
(dsp->Visible.x * (int)dsp->Visible.width) / (int)dsp->Display.width,
|
||||
0 - (int)dsp->InternalBorderWidth, /* y */
|
||||
((dsp->Visible.width * dsp->Visible.width) / dsp->Display.width) + 1,
|
||||
dsp->ScrollBarWidth, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
|
||||
WhitePixelOfScreen(screen));
|
||||
dsp->ScrollBarWidth, dsp->InternalBorderWidth, foregroundPixel,
|
||||
backgroundPixel);
|
||||
XChangeWindowAttributes(dsp->display_id, dsp->HorScrollButton, CWOverrideRedirect,
|
||||
&Lisp_SetWinAttributes);
|
||||
XSetWindowBackgroundPixmap(dsp->display_id, dsp->HorScrollButton, dsp->ScrollBarPixmap);
|
||||
@@ -237,8 +264,8 @@ void Create_LispWindow(DspInterface dsp)
|
||||
XMapWindow(dsp->display_id, dsp->HorScrollButton);
|
||||
|
||||
dsp->NWGrav = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, (int)Col2, (int)Row2, GravSize,
|
||||
GravSize, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
|
||||
WhitePixelOfScreen(screen));
|
||||
GravSize, dsp->InternalBorderWidth, foregroundPixel,
|
||||
backgroundPixel);
|
||||
XSetWindowBackgroundPixmap(dsp->display_id, dsp->NWGrav, dsp->GravityOnPixmap);
|
||||
DefineCursor(dsp, dsp->NWGrav, &DefaultCursor);
|
||||
XChangeWindowAttributes(dsp->display_id, dsp->NWGrav, CWOverrideRedirect, &Lisp_SetWinAttributes);
|
||||
@@ -246,8 +273,8 @@ void Create_LispWindow(DspInterface dsp)
|
||||
XMapWindow(dsp->display_id, dsp->NWGrav);
|
||||
|
||||
dsp->SEGrav = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, (int)Col3, (int)Row3, GravSize,
|
||||
GravSize, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
|
||||
WhitePixelOfScreen(screen));
|
||||
GravSize, dsp->InternalBorderWidth, foregroundPixel,
|
||||
backgroundPixel);
|
||||
XSetWindowBackgroundPixmap(dsp->display_id, dsp->SEGrav, dsp->GravityOffPixmap);
|
||||
DefineCursor(dsp, dsp->SEGrav, &DefaultCursor);
|
||||
XChangeWindowAttributes(dsp->display_id, dsp->SEGrav, CWOverrideRedirect, &Lisp_SetWinAttributes);
|
||||
@@ -255,16 +282,16 @@ void Create_LispWindow(DspInterface dsp)
|
||||
XMapWindow(dsp->display_id, dsp->SEGrav);
|
||||
|
||||
dsp->SWGrav = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, (int)Col2, (int)Row3, GravSize,
|
||||
GravSize, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
|
||||
WhitePixelOfScreen(screen));
|
||||
GravSize, dsp->InternalBorderWidth, foregroundPixel,
|
||||
backgroundPixel);
|
||||
XSetWindowBackgroundPixmap(dsp->display_id, dsp->SWGrav, dsp->GravityOffPixmap);
|
||||
DefineCursor(dsp, dsp->SWGrav, &DefaultCursor);
|
||||
XClearWindow(dsp->display_id, dsp->NWGrav);
|
||||
XMapWindow(dsp->display_id, dsp->SWGrav);
|
||||
|
||||
dsp->NEGrav = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, (int)Col3, (int)Row2, GravSize,
|
||||
GravSize, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
|
||||
WhitePixelOfScreen(screen));
|
||||
GravSize, dsp->InternalBorderWidth, foregroundPixel,
|
||||
backgroundPixel);
|
||||
XSetWindowBackgroundPixmap(dsp->display_id, dsp->NEGrav, dsp->GravityOffPixmap);
|
||||
DefineCursor(dsp, dsp->NEGrav, &DefaultCursor);
|
||||
XClearWindow(dsp->display_id, dsp->NWGrav);
|
||||
@@ -280,14 +307,12 @@ void Create_LispWindow(DspInterface dsp)
|
||||
|
||||
void lisp_Xvideocolor(int flag)
|
||||
{
|
||||
Screen *screen;
|
||||
XEvent event = {0};
|
||||
XGCValues gcv = {0};
|
||||
unsigned long newForeground;
|
||||
|
||||
XLOCK;
|
||||
screen = ScreenOfDisplay(currentdsp->display_id, DefaultScreen(currentdsp->display_id));
|
||||
newForeground = flag ? WhitePixelOfScreen(screen) : BlackPixelOfScreen(screen);
|
||||
newForeground = flag ? backgroundPixel : foregroundPixel;
|
||||
|
||||
/* window -- are we making a change? */
|
||||
XGetGCValues(currentdsp->display_id, currentdsp->Copy_GC, GCForeground | GCBackground, &gcv);
|
||||
|
||||
64
src/xrdopt.c
64
src/xrdopt.c
@@ -53,6 +53,7 @@ static XrmOptionDescRec opTable[] = {
|
||||
{"-fg", "*foreground", XrmoptionSepArg, (XPointer)NULL},
|
||||
{"-background", "*background", XrmoptionSepArg, (XPointer)NULL},
|
||||
{"-bg", "*background", XrmoptionSepArg, (XPointer)NULL},
|
||||
{"-cursorColor", "*cursorColor", XrmoptionSepArg, (XPointer)NULL},
|
||||
{"-title", "*title", XrmoptionSepArg, (XPointer)NULL},
|
||||
{"-t", "*title", XrmoptionSepArg, (XPointer)NULL},
|
||||
{"-icontitle", "*icontitle", XrmoptionSepArg, (XPointer)NULL},
|
||||
@@ -80,12 +81,17 @@ extern char Display_Name[128];
|
||||
char Display_Name[128];
|
||||
extern char iconpixmapfile[1024];
|
||||
char iconpixmapfile[1024];
|
||||
extern char Window_Title[255];
|
||||
char Window_Title[255];
|
||||
extern char Icon_Title[255];
|
||||
char Icon_Title[255];
|
||||
extern char iconTitle[255];
|
||||
char iconTitle[255];
|
||||
extern char cursorColor[255];
|
||||
char cursorColor[255] = {0};
|
||||
extern char foregroundColorName[64];
|
||||
extern char backgroundColorName[64];
|
||||
extern char windowTitle[255];
|
||||
|
||||
extern char sysout_name[];
|
||||
|
||||
extern char sysout_name_cl[];
|
||||
extern char sysout_name_xrm[];
|
||||
extern unsigned sysout_size;
|
||||
extern int for_makeinit, please_fork, noscroll;
|
||||
/* diagnostic flag for sysout dumping */
|
||||
@@ -114,6 +120,9 @@ void print_Xusage(const char *prog)
|
||||
(void)fprintf(stderr, " [-sysout] [<sysout>] -path to the Medley image\n");
|
||||
(void)fprintf(stderr, " -h[elp] -prints this text\n");
|
||||
(void)fprintf(stderr, " -info -prints configuration info\n");
|
||||
(void)fprintf(stderr, " -cursorColor X11-color-spec -sets foreground cursor color\n");
|
||||
(void)fprintf(stderr, " -fg|-foreground X11-color-spec -sets foreground display color\n");
|
||||
(void)fprintf(stderr, " -bg|-background X11-color-spec -sets background display color\n");
|
||||
(void)fprintf(stderr, " -d[isplay] <host>:<display>.<screen>\n");
|
||||
(void)fprintf(stderr,
|
||||
" -g[eometry] <geom> -size & placement for the medley window on your X "
|
||||
@@ -181,20 +190,9 @@ void read_Xoption(int *argc, char *argv[])
|
||||
print_Xusage(argv[0]);
|
||||
}
|
||||
|
||||
sysout_name[0] = '\0';
|
||||
if (*argc == 2) { /* There was probably a sysoutarg */
|
||||
(void)strncpy(sysout_name, argv[1], PATH_MAX - 1);
|
||||
} else if ((envname = getenv("LDESRCESYSOUT")) != NULL) {
|
||||
strncpy(sysout_name, envname, PATH_MAX - 1);
|
||||
} else if ((envname = getenv("LDESOURCESYSOUT")) != NULL)
|
||||
strncpy(sysout_name, envname, PATH_MAX - 1);
|
||||
else {
|
||||
envname = getenv("HOME");
|
||||
(void)strcat(sysout_name, envname);
|
||||
(void)strcat(sysout_name, "/lisp.virtualmem");
|
||||
}
|
||||
if (access(sysout_name, R_OK) != 0) {
|
||||
sysout_name[0] = '\0';
|
||||
if (XrmGetResource(commandlineDB, "ldex.sysout", "Ldex.Sysout", str_type, &value) == True) {
|
||||
/* Get Sysout from command line only */
|
||||
(void)strncpy(sysout_name_cl, value.addr, value.size);
|
||||
}
|
||||
|
||||
/* In order to access other DB's we have to open the main display now */
|
||||
@@ -244,23 +242,19 @@ void read_Xoption(int *argc, char *argv[])
|
||||
(void)XrmMergeDatabases(commandlineDB, &rDB);
|
||||
|
||||
if (XrmGetResource(rDB, "ldex.sysout", "Ldex.Sysout", str_type, &value) == True) {
|
||||
/* Get Sysout */
|
||||
(void)strncpy(sysout_name, value.addr, value.size);
|
||||
}
|
||||
if (sysout_name[0] == '\0') {
|
||||
(void)fprintf(stderr, "Couldn't find a sysout to run;\n");
|
||||
print_Xusage(argv[0]);
|
||||
/* Get Sysout from x resource manager */
|
||||
(void)strncpy(sysout_name_xrm, value.addr, value.size);
|
||||
}
|
||||
|
||||
if (XrmGetResource(rDB, "ldex.title", "Ldex.Title", str_type, &value) == True) {
|
||||
(void)strncpy(Window_Title, value.addr, value.size);
|
||||
(void)strncpy(windowTitle, value.addr, sizeof(windowTitle) - 1);
|
||||
} else {
|
||||
(void)strcpy(Window_Title, WINDOW_NAME);
|
||||
(void)strncpy(windowTitle, WINDOW_NAME, sizeof(windowTitle) - 1);
|
||||
}
|
||||
if (XrmGetResource(rDB, "ldex.icontitle", "Ldex.icontitle", str_type, &value) == True) {
|
||||
(void)strncpy(Icon_Title, value.addr, value.size);
|
||||
(void)strncpy(iconTitle, value.addr, value.size);
|
||||
} else {
|
||||
(void)strcpy(Icon_Title, "Medley");
|
||||
(void)strcpy(iconTitle, "Medley");
|
||||
}
|
||||
|
||||
if (XrmGetResource(rDB, "ldex.iconbitmap", "Ldex.Iconbitmap", str_type, &value) == True) {
|
||||
@@ -283,6 +277,18 @@ void read_Xoption(int *argc, char *argv[])
|
||||
|
||||
(void)strcpy(tmp, ""); /* Clear the string */
|
||||
|
||||
if (XrmGetResource(rDB, "ldex.cursorColor", "Ldex.cursorColor", str_type, &value) == True) {
|
||||
(void)strncpy(cursorColor, value.addr, sizeof(cursorColor) - 1);
|
||||
}
|
||||
|
||||
if (XrmGetResource(rDB, "ldex.foreground", "Ldex.foreground", str_type, &value) == True) {
|
||||
(void)strncpy(foregroundColorName, value.addr, sizeof(foregroundColorName) - 1);
|
||||
}
|
||||
|
||||
if (XrmGetResource(rDB, "ldex.background", "Ldex.background", str_type, &value) == True) {
|
||||
(void)strncpy(backgroundColorName, value.addr, sizeof(backgroundColorName) - 1);
|
||||
}
|
||||
|
||||
if (XrmGetResource(rDB, "ldex.NoFork", "Ldex.NoFork", str_type, &value) == True) {
|
||||
please_fork = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user