1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-03-21 16:42:35 +00:00

Compare commits

..

4 Commits

Author SHA1 Message Date
Nick Briggs
4becc6ad93 Not all systems define MAP_FAILED for the return value from failing mmap() (#502) 2024-05-13 15:37:53 -07:00
Frank Halasz
40a1a8dcd2 Rationalize the processing of command line args for the sysout. Fixes Issue#1703 (#503)
* Rationalize the processing of command line args for the sysout.  Remove most of the redundancy between what is done for sysout arg processing in xrdopt.c versus main.c.  Move all of the decision making about what sysout_name to use until all args have been processed (both in xrdpopt and main).  This is done in main, where the prioritization and checking is done in one place rather than spread in several places in xrdopt and main.     //  Order of priority:
628   //    1. Value of -sysout command line arg
629   //    2. Value of the first command line arg
630   //    3. Value of LDESRCESYSOUT env variable
631   //    4. Value of LDESOURCESYSOUT env variable
632   //    5. Value as determined by X resource manager, if any
633   //    6. Value of /home/frank/lisp.virtualmem (or lisp.vm for DOS)

* In main.c moved check for sysout as first arg to before the call to read_Xoption.  This will ensure that we always check the 'true' first argument even when read_Xoption modifies argv.
2024-05-13 15:36:33 -07:00
Frank Halasz
fd16058ca7 Merge pull request #504 from Interlisp/fgh_fix-cygwin-github-build
Fix Cygwin github builds:  Issue#1705
2024-05-10 14:31:50 -07:00
Frank Halasz
1426386830 In buildRelease.yml, change site for cygwin download to https:/mirrors.kernel.org since old gatech site is now deprecated. 2024-05-10 14:19:12 -07:00
6 changed files with 96 additions and 86 deletions

View File

@@ -18,7 +18,7 @@ COPY . ${INSTALL_LOCATION}
# Build maiko
RUN cd ${INSTALL_LOCATION}/bin \
&& ./makeright x cleanup \
&& ./makeright x nethub
&& ./makeright x
RUN cd ${INSTALL_LOCATION}/bin \
&& if [ "$(./machinetype)" = "x86_64" ]; then \
./makeright init; \

View File

@@ -339,7 +339,6 @@ jobs:
-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
-DMAIKO_DISPLAY_SDL=ON \
-DMAIKO_DISPLAY_X11=ON \
-DMAIKO_ENABLE_NETHUB=true \
-DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
for exe in lde ldex ldesdl
@@ -413,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

View File

@@ -20,7 +20,7 @@
# Nov 20 2001 JDS: Convert to use BASH, not CSH, for open-source...
#
# usage: makeright [display-option] [other-option]
#
#
# example: makeright single ; make lde for mmaped displayFB
# makeright multi ; make lde for cg3,cg6
# makeright x ; make lde for X-windows
@@ -33,41 +33,27 @@
#
# makeright init requires directory "maiko/init.${architecture}
#
# Note: X11R4 environment link shared libraries.
# lde need X library. If lde links shared libraries,
# Note: X11R4 environment link shared libraries.
# lde need X library. If lde links shared libraries,
# X shared libraries are needed at run time.
#
# Hide X shared libraries from link libraries search path.
LD_LIBRARY_PATH=/usr/local/lib
LD_LIBRARY_PATH=/usr/local/lib
export PATH=".:$PATH"
noshift="false"
if test "$1" = ""
then
display="single"
noshift="true"
elif test "$1" = "nethub"
then
display="single"
noshift="true"
else
display="$1"
noshift="false"
fi
if test "$noshift" = "false"
if test $# -gt 0
then
shift
fi
nethub="false"
if test "$1" = "nethub"
then
nethub="true"
shift
fi
architecture=`machinetype`
osversion=`osversion`
echo "making so far for ${osversion} on ${architecture}."
@@ -125,12 +111,7 @@ 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....
cp -p makefile-${releasename} /tmp/makefile-${releasename}-$$
if test "$nethub" = "true"
then
sed -e "/^DFLAGS = /s/$/ -DMAIKO_ENABLE_NETHUB/" -i /tmp/makefile-${releasename}-$$
fi
make RELEASENAME=${releasename} LDENAME=${ldename} \
OSARCHNAME=${osversion}.${architecture} \
-f makefile-header -f /tmp/makefile-${releasename}-$$ \
-f makefile-header -f makefile-${releasename} \
-f makefile-tail $*

View File

@@ -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

View File

@@ -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 */
@@ -338,6 +342,25 @@ 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);
i++;
}
#ifdef XWINDOW
read_Xoption(&argc, argv);
#endif /* XWINDOW */
@@ -345,17 +368,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 +380,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);
@@ -610,6 +610,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. */

View File

@@ -85,7 +85,8 @@ char Window_Title[255];
extern char Icon_Title[255];
char Icon_Title[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 */
@@ -181,20 +182,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,12 +234,8 @@ 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) {