1    // Copyright 2004 Adam Megacz, see the COPYING file for licensing [LGPL]
2    package org.xwt.plat;
3    
4    import gnu.gcj.RawData;
5    import java.net.*;
6    import java.lang.reflect.*;
7    import java.io.*;
8    import java.util.*;
9    import org.xwt.util.*;
10   import org.xwt.*;
11   
12   /** Platform implementation for POSIX compliant operating systems */
13   public class POSIX extends GCJ {
14   
15       // General Methods ///////////////////////////////////////////////////////
16   
17       protected String getDescriptiveName() { return "GCJ Linux Binary"; }
18   
19       /** returns the value of the environment variable key, or null if no such key exists */
20       protected native String _getEnv(String key);
21       
22       /** spawns a process which is immune to SIGHUP */
23       private static native void spawnChildProcess(String[] command);
24   
25       protected void _newBrowserWindow(String url) {
26           String browserString = getEnv("BROWSER");
27           if (browserString == null) {
28               browserString = "netscape " + url;
29           } else if (browserString.indexOf("%s") != -1) {
30               browserString =
31                   browserString.substring(0, browserString.indexOf("%s")) +
32                   url + browserString.substring(browserString.indexOf("%s") + 2);
33           } else {
34               browserString += " " + url;
35           }
36   
37           StringTokenizer st = new StringTokenizer(browserString, " ");
38           String[] cmd = new String[st.countTokens()];
39           for(int i=0; st.hasMoreTokens(); i++) cmd[i] = st.nextToken();
40   
41           spawnChildProcess(cmd);
42       }
43   
44       public POSIX() { }
45   }
46   
47   
48   
49