--- gforth/savesys.fs 2003/03/09 15:16:52 1.6 +++ gforth/savesys.fs 2007/12/31 18:40:24 1.11 @@ -1,12 +1,12 @@ \ image dump 15nov94py -\ Copyright (C) 1995,1997,2003 Free Software Foundation, Inc. +\ Copyright (C) 1995,1997,2003,2006,2007 Free Software Foundation, Inc. \ This file is part of Gforth. \ Gforth 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 2 +\ as published by 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, @@ -15,15 +15,22 @@ \ GNU General Public License for more details. \ You should have received a copy of the GNU General Public License -\ along with this program; if not, write to the Free Software -\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. +\ along with this program. If not, see http://www.gnu.org/licenses/. -: save-string-dict { addr1 u -- addr2 u } +: save-mem-dict { addr1 u -- addr2 u } here { addr2 } u allot addr1 addr2 u move addr2 u ; +: delete-prefix ( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 ) + \ if c-addr2 u2 is a prefix of c-addr1 u1, delete it + 2over 2over string-prefix? if + nip /string + else + 2drop + endif ; + : update-image-included-files ( -- ) included-files 2@ { addr cnt } image-included-files 2@ { old-addr old-cnt } @@ -33,7 +40,8 @@ old-addr new-addr old-cnt 2* cells move cnt old-cnt U+DO - addr i 2* cells + 2@ save-string-dict + addr i 2* cells + 2@ + s" GFORTHDESTDIR" getenv delete-prefix save-mem-dict new-addr i 2* cells + 2! LOOP maxalign ;