diff -c -r +new-file pl/STAMP pl/STAMP *** pl/STAMP Mon Sep 13 11:54:15 1993 --- pl/STAMP Fri Sep 17 10:22:32 1993 *************** *** 1 **** ! Mon Sep 13 11:52:55 MET DST 1993 --- 1 ---- ! Fri Sep 17 10:21:25 MET DST 1993 diff -c -r +new-file pl/VERSION pl/VERSION *** pl/VERSION Mon Sep 6 17:40:37 1993 --- pl/VERSION Fri Sep 17 10:06:37 1993 *************** *** 1 **** ! 1.8.0 --- 1 ---- ! 1.8.1 diff -c -r +new-file pl/boot/init.pl pl/boot/init.pl *** pl/boot/init.pl Wed Feb 17 13:45:48 1993 --- pl/boot/init.pl Fri Sep 17 10:07:52 1993 *************** *** 1,4 **** ! /* init.pl,v 1.7 1993/02/17 12:45:48 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. jan@swi.psy.uva.nl --- 1,4 ---- ! /* init.pl,v 1.8 1993/09/17 08:07:52 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. jan@swi.psy.uva.nl *************** *** 390,402 **** absolute_file_name(PlFile, FullName), exists_file(FullName), !. $chk_lib_file(File, FullFile, Prefixes, Exts) :- user:library_directory(Dir), member(Prefix, Prefixes), member(Ext, Exts), concat_atom([Dir, '/', Prefix, '/', File, Ext], LibFile), absolute_file_name(LibFile, FullFile), ! exists_file(FullFile), !. /******************************** --- 390,410 ---- absolute_file_name(PlFile, FullName), exists_file(FullName), !. + :- dynamic + $lib_file_cache/4. + + $chk_lib_file(File, FullFile, Prefixes, Exts) :- + $lib_file_cache(File, FullFile, Pref, Ext), + memberchk(Pref, Prefixes), + memberchk(Ext, Exts), !. $chk_lib_file(File, FullFile, Prefixes, Exts) :- user:library_directory(Dir), member(Prefix, Prefixes), member(Ext, Exts), concat_atom([Dir, '/', Prefix, '/', File, Ext], LibFile), + exists_file(LibFile), !, absolute_file_name(LibFile, FullFile), ! asserta($lib_file_cache(File, FullFile, Prefix, Ext)). /******************************** *************** *** 668,689 **** $consult_clause(Clause, File), !. :- dynamic ! $module_file/3. ! ! $module_file(File, Module) :- ! $module_file(File, _Base, Module), !. ! $module_file(File, Module) :- ! $file_base_name(File, Base), ! $module_file(LoadedFile, Base, Module), ! same_file(File, LoadedFile), !, ! $assert_module_file(LoadedFile, Module). $assert_module_file(File, Module) :- ! $file_base_name(File, Base), ! ( $module_file(File, Base, Module) ! -> true ! ; asserta($module_file(File, Base, Module)) ! ). $load_module(Module, Public, Import, File) :- $set_source_module(OldModule, OldModule), --- 676,688 ---- $consult_clause(Clause, File), !. :- dynamic ! $module_file/2. $assert_module_file(File, Module) :- ! $module_file(File, Module), !. ! $assert_module_file(File, Module) :- ! asserta($module_file(File, Module)). ! $load_module(Module, Public, Import, File) :- $set_source_module(OldModule, OldModule), diff -c -r +new-file pl/boot/syspred.pl pl/boot/syspred.pl *** pl/boot/syspred.pl Thu Jul 22 17:45:13 1993 --- pl/boot/syspred.pl Fri Sep 17 10:07:53 1993 *************** *** 1,4 **** ! /* syspred.pl,v 1.5 1993/07/22 15:45:13 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. jan@swi.psy.uva.nl --- 1,4 ---- ! /* syspred.pl,v 1.6 1993/09/17 08:07:53 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. jan@swi.psy.uva.nl *************** *** 288,295 **** $time_source_file(File, _). source_file(File) :- atom(File), ! $time_source_file(LoadedFile, _), ! same_file(LoadedFile, File), !. /******************************** * DATA BASE * --- 288,296 ---- $time_source_file(File, _). source_file(File) :- atom(File), ! absolute_file_name(File, Abs), % canonise ! $time_source_file(Abs, _). ! /******************************** * DATA BASE * diff -c -r +new-file pl/src/md-linux.h pl/src/md-linux.h *** pl/src/md-linux.h Fri Jul 23 12:29:36 1993 --- pl/src/md-linux.h Fri Sep 17 10:08:27 1993 *************** *** 1,4 **** ! /* md-linux.h,v 1.16 1993/07/23 10:29:36 jan Exp Copyright (c) 1992 Jan Wielemaker/Pieter Olivier. All rights reserved. See ../LICENCE to find out about your rights. --- 1,4 ---- ! /* md-linux.h,v 1.17 1993/09/17 08:08:27 jan Exp Copyright (c) 1992 Jan Wielemaker/Pieter Olivier. All rights reserved. See ../LICENCE to find out about your rights. *************** *** 60,65 **** --- 60,67 ---- #define O_NO_SEGV_ADDRESS 1 #define MAX_VIRTUAL_ADDRESS (220*1024*1024) /* not sure, but it will do */ #define O_FOREIGN 1 + #define LD_COMMAND "gcc" + #define LD_OPT_OPTIONS "-r -static" #define LD_OPT_ADDR "-T 0x%x" #define O_SAVE 1 #define DATA_START ((long) &etext + sizeof(long)) diff -c -r +new-file pl/src/md-sun4.h pl/src/md-sun4.h *** pl/src/md-sun4.h Mon Sep 13 11:52:35 1993 --- pl/src/md-sun4.h Fri Sep 17 10:08:28 1993 *************** *** 1,4 **** ! /* md-sun4.h,v 1.17 1993/09/13 09:52:35 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. See ../LICENCE to find out about your rights. --- 1,4 ---- ! /* md-sun4.h,v 1.18 1993/09/17 08:08:28 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. See ../LICENCE to find out about your rights. *************** *** 52,58 **** #define O_NO_SEGV_ADDRESS 0 #define MAX_VIRTUAL_ADDRESS (512 * 1024 *1024) #define O_FOREIGN 1 ! #define O_NOENTRY 1 /* ld -e doesn't work */ #define O_SAVE 1 #define DEFAULT_PATH ":.:/usr/ucb:/bin:/usr/bin:"; #define SRANDOM(t) srandom((long)t) --- 52,62 ---- #define O_NO_SEGV_ADDRESS 0 #define MAX_VIRTUAL_ADDRESS (512 * 1024 *1024) #define O_FOREIGN 1 ! #ifndef USE_CC /* just the default ld for cc */ ! #define LD_COMMAND "gcc" ! #endif ! #define LD_OPT_ADDR "-T %x" ! #define O_NOENTRY 0 /* ld -e doesn't work */ #define O_SAVE 1 #define DEFAULT_PATH ":.:/usr/ucb:/bin:/usr/bin:"; #define SRANDOM(t) srandom((long)t) diff -c -r +new-file pl/src/pl-itf.h pl/src/pl-itf.h *** pl/src/pl-itf.h Mon Sep 6 17:41:06 1993 --- pl/src/pl-itf.h Fri Sep 17 10:08:28 1993 *************** *** 1,4 **** ! /* pl-itf.h,v 1.30 1993/09/06 15:41:06 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. See ../LICENCE to find out about your rights. --- 1,4 ---- ! /* pl-itf.h,v 1.31 1993/09/17 08:08:28 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. See ../LICENCE to find out about your rights. *************** *** 11,17 **** #define PL_INCLUDED #ifndef PLVERSION ! #define PLVERSION "1.8.0 September 1993" #endif #ifndef P --- 11,17 ---- #define PL_INCLUDED #ifndef PLVERSION ! #define PLVERSION "1.8.1 September 1993" #endif #ifndef P diff -c -r +new-file pl/src/pl-load.c pl/src/pl-load.c *** pl/src/pl-load.c Thu Jun 17 11:45:16 1993 --- pl/src/pl-load.c Fri Sep 17 10:08:29 1993 *************** *** 1,4 **** ! /* pl-load.c,v 1.14 1993/06/17 09:45:16 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. See ../LICENCE to find out about your rights. --- 1,4 ---- ! /* pl-load.c,v 1.15 1993/09/17 08:08:29 jan Exp Copyright (c) 1990 Jan Wielemaker. All rights reserved. See ../LICENCE to find out about your rights. *************** *** 249,256 **** Create an a.out file from a .o file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ ! #ifndef LD ! #define LD "ld" /* Unix loader command name */ #endif #ifndef LD_OPT_OPTIONS #define LD_OPT_OPTIONS "-N" /* General options */ --- 249,256 ---- Create an a.out file from a .o file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ ! #ifndef LD_COMMAND ! #define LD_COMMAND "ld" /* Unix loader command name */ #endif #ifndef LD_OPT_OPTIONS #define LD_OPT_OPTIONS "-N" /* General options */ *************** *** 271,278 **** #define LD_OPT_LIBS "-lc" /* standard libraries */ #endif ! static ! bool create_a_out(files, entry, options, libraries, base, outfile) char *entry; char *files; --- 271,277 ---- #define LD_OPT_LIBS "-lc" /* standard libraries */ #endif ! static bool create_a_out(files, entry, options, libraries, base, outfile) char *entry; char *files; *************** *** 285,292 **** #define next(str) { (str) += strlen(str); *(str)++ = ' '; }; ! sprintf(s, "%s ", LD); next(s); ! sprintf(s, "%s ", LD_OPT_OPTIONS); next(s); sprintf(s, LD_OPT_SFILE, stringAtom(loaderstatus.symbolfile)); next(s); sprintf(s, LD_OPT_ADDR, base); next(s); #if !O_NOENTRY --- 284,291 ---- #define next(str) { (str) += strlen(str); *(str)++ = ' '; }; ! sprintf(s, "%s", LD_COMMAND); next(s); ! sprintf(s, "%s", LD_OPT_OPTIONS); next(s); sprintf(s, LD_OPT_SFILE, stringAtom(loaderstatus.symbolfile)); next(s); sprintf(s, LD_OPT_ADDR, base); next(s); #if !O_NOENTRY diff -c -r +new-file pl/src/pl-os.c pl/src/pl-os.c *** pl/src/pl-os.c Mon Sep 13 11:52:39 1993 --- pl/src/pl-os.c Fri Sep 17 10:08:30 1993 *************** *** 960,968 **** forwards char *canoniseDir P((char *)); #endif ! static char CWDdir[MAXPATHLEN]; /* current directory */ - static void initExpand() { --- 960,968 ---- forwards char *canoniseDir P((char *)); #endif ! static char CWDdir[MAXPATHLEN]; /* current directory */ ! static int CWDlen; /* Length of CWDdir */ static void initExpand() { *************** *** 972,977 **** --- 972,978 ---- #endif CWDdir[0] = EOS; + CWDlen = 0; #if unix if ( (cpaths = getenv("CANONICAL_PATHS")) ) *************** *** 1353,1358 **** --- 1354,1360 ---- return canonisePath(path); } + #if OS2 && EMX if (isDriveRelativePath(file)) { *************** *** 1368,1376 **** return canonisePath(path); } #endif /* OS2 */ ! if ( CWDdir[0] == EOS ) ! { ! getwd(CWDdir); } #if OS2 && EMX --- 1370,1384 ---- return canonisePath(path); } #endif /* OS2 */ ! ! if ( CWDlen == 0 ) ! { char buf[MAXPATHLEN]; ! ! getwd(buf); ! strcpy(CWDdir, canonisePath(buf)); ! CWDlen = strlen(CWDdir); ! CWDdir[CWDlen++] = '/'; ! CWDdir[CWDlen] = EOS; } #if OS2 && EMX *************** *** 1387,1402 **** return canonisePath(path); } #endif /* OS2 */ ! if ( (strlen(CWDdir) + strlen(file) + 2) >= MAXPATHLEN ) { warning("path name too long"); return (char *) NULL; } strcpy(path, CWDdir); ! strcat(path, "/"); ! strcat(path, file); ! ! return canonisePath(path); } --- 1395,1411 ---- return canonisePath(path); } #endif /* OS2 */ ! if ( (CWDlen + strlen(file) + 1) >= MAXPATHLEN ) { warning("path name too long"); return (char *) NULL; } strcpy(path, CWDdir); ! strcpy(&path[CWDlen], file); ! if ( strchr(file, '.') || strchr(file, '/') ) ! return canonisePath(path); ! else ! return path; } *************** *** 1420,1426 **** for(base = p = f; *p; p++) if (*p == '/' && p[1] != EOS ) ! base = p; strncpy(dir, f, base-f); dir[base-f] = EOS; --- 1429,1435 ---- for(base = p = f; *p; p++) if (*p == '/' && p[1] != EOS ) ! base = p+1; strncpy(dir, f, base-f); dir[base-f] = EOS; *************** *** 1440,1453 **** char *path; { extern int chdir(/*char**/); char *ospath = OsPath(path); ! if ( ospath[0] == EOS || ! streq(ospath, CWDdir) || ! streq(ospath, ".") ) /* Same directory */ succeed; if ( chdir(ospath) == 0 ) ! { CWDdir[0] = EOS; succeed; } --- 1449,1468 ---- char *path; { extern int chdir(/*char**/); char *ospath = OsPath(path); + char buf[MAXPATHLEN]; ! if ( path[0] == EOS || ! streq(path, CWDdir) || ! streq(path, ".") ) /* Same directory */ succeed; + strcpy(buf, AbsoluteFile(path)); + if ( chdir(ospath) == 0 ) ! { strcpy(CWDdir, buf); ! CWDlen = strlen(CWDdir); ! CWDdir[CWDlen++] = '/'; ! CWDdir[CWDlen] = EOS; succeed; }