source: branches/0.17.x/abcl/src/org/armedbear/lisp/Site.java

Last change on this file was 11813, checked in by ehuelsmann, 16 years ago

Fix building in a path with spaces.

Found by: Mark Tarver
Fixes: https://sourceforge.net/tracker/?func=detail&atid=475785&aid=2784411&group_id=55057

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.2 KB
Line 
1/*
2 * Site.java
3 *
4 * Copyright (C) 2003-2005 Peter Graves
5 * $Id: Site.java 11813 2009-05-02 19:36:44Z ehuelsmann $
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 *
21 * As a special exception, the copyright holders of this library give you
22 * permission to link this library with independent modules to produce an
23 * executable, regardless of the license terms of these independent
24 * modules, and to copy and distribute the resulting executable under
25 * terms of your choice, provided that you also meet, for each linked
26 * independent module, the terms and conditions of the license of that
27 * module.  An independent module is a module which is not derived from
28 * or based on this library.  If you modify this library, you may extend
29 * this exception to your version of the library, but you are not
30 * obligated to do so.  If you do not wish to do so, delete this
31 * exception statement from your version.
32 */
33
34package org.armedbear.lisp;
35
36import java.io.File;
37import java.net.URL;
38import java.net.URLDecoder;
39
40public final class Site extends Lisp
41{
42    private static final String LISP_HOME;
43
44    static {
45        String lispHome = null;
46        URL url = Lisp.class.getResource("boot.lisp");
47        if (url != null) {
48            String protocol = url.getProtocol();
49            if (protocol != null && protocol.equals("file")) {
50                String path = url.getPath();
51                try {
52                    path = URLDecoder.decode(path, "UTF-8");
53                }
54                catch (java.io.UnsupportedEncodingException uee) {
55                    // can't happen: Java implementations are required to
56                    // support UTF-8
57                }
58                int index = path.lastIndexOf('/');
59                if (index >= 0) {
60                    lispHome = path.substring(0, index + 1);
61                    if (Utilities.isPlatformWindows) {
62                        if (lispHome.length() > 0 && lispHome.charAt(0) == '/')
63                            lispHome = lispHome.substring(1);
64                    }
65                }
66            }
67        } else
68            lispHome = System.getProperty("abcl.home");
69        LISP_HOME = lispHome;
70    }
71
72    public static final String getLispHome()
73    {
74        return LISP_HOME;
75    }
76
77    // ### *lisp-home*
78    private static final Symbol _LISP_HOME_ =
79        exportSpecial("*LISP-HOME*", PACKAGE_EXT, NIL);
80
81    static {
82        try {
83            String s = Site.getLispHome();
84            if (s != null)
85                _LISP_HOME_.setSymbolValue(new Pathname(s));
86        }
87        catch (Throwable t) {
88            Debug.trace(t);
89        }
90    }
91}
Note: See TracBrowser for help on using the repository browser.