History

Implemented getSystemParameters() defaults

Dmitry Kabak (userdima committed 13 years ago

Commit 7503d241 parent c636dd92 files · +61 −24Browse files

Showing the changes to java (2 of 2 files). Show all

Unified · Split

2 files
  1. java/pkg/java/lang/System_L.b +60 −24
  2. java/pkg/java/lang/System_L.m +1 −0
java/pkg/java/lang/System_L.b+60−24
@@ -19,7 +19,8 @@ include "jni.m"; · 18 unmodified lines
19 JArrayJClass,19 JArrayJClass,
20 JArrayJString,20 JArrayJString,
21 JClass,21 JClass,
22 JObject : import jni;22 JObject,
23 Value : import jni;
23 24
24#>> extra pre includes here25#>> extra pre includes here
25 26
@@ -93,41 +94,76 @@ identityHashCode_rObject_I( p0 : JObject) : int · 67 unmodified lines
93 return( jni->IdentityHash(p0) );94 return( jni->IdentityHash(p0) );
94}#<<95}#<<
95 96
97username(): string
98{
99 fd := jni->sys->open("#c/user", jni->sys->OREAD);
100 if(fd == nil)
101 return "unknown";
102
103 buf := array[128] of byte;
104 n := jni->sys->read(fd, buf, len buf);
105 if(n < 0)
106 return "unknown";
107
108 return string buf[:n];
109}
110
96GetUserName_rString( ) : JString111GetUserName_rString( ) : JString
97{#>>112{#>>
98 # return the current inferno user113 # return the current inferno user
99 # name as a Java String114 # name as a Java String
100 #
101 user_name : string;
102
103 fd := jni->sys->open("#c/user", jni->sys->OREAD);
104 if(fd == nil)
105 user_name = "unknown";
106 else {
107 buf := array[128] of byte;
108 n := jni->sys->read(fd, buf, len buf);
109 if(n < 0)
110 user_name = "unknown";
111 else
112 user_name = string buf[:n];
113 }
114 115
115 # make java string from user name116 # make java string from user name
116 return( jni->NewString( user_name ) );117 return( jni->NewString( username() ) );
117}#<<118}#<<
118 119
120wdir: Workdir;
121workingdir(): string
122{
123 if (wdir == nil) {
124 wdir = load Workdir Workdir->PATH;
125 if ( wdir == nil )
126 jni->InitError( jni->sys->sprint( "java.lang.System: could not load %s: %r", Workdir->PATH ) );
127 }
128 return wdir->init();
129}
130
119GetCWD_rString( ) : JString131GetCWD_rString( ) : JString
120{#>>132{#>>
121 # return the current working directory133 # return the current working directory
122 # as a Java String134 # as a Java String
123 #135
124 # this fct is really only called once so136 return( jni->NewString( workingdir() ) );
125 # just load Workdir right here137}#<<
126 wdir := load Workdir Workdir->PATH;138
127 if ( wdir == nil )139initProperties_rProperties_rProperties( p0 : JObject ) : JObject
128 jni->InitError( jni->sys->sprint( "java.lang.System: could not load %s: %r", Workdir->PATH ) );140{#>>
129 141 # Default properties
130 return( jni->NewString( wdir->init() ) );142 # TODO: ask Inferno when possible instead of hardcoded values
143 properties := array [] of {
144 ("java.vendor", "Inferno project"),
145 ("java.vendor.url", "http://www.vitanuova.com/inferno/"),
146 ("java.home", "/java"),
147 ("java.class.version", "50.0"), # hopefully :)
148 ("java.class.path", "/java/pkg"),
149 ("os.name", "Inferno OS"),
150 ("os.arch", "x86"),
151 ("os.version", "4th edition"),
152 ("file.separator", "/"),
153 ("path.separator", ":"),
154 ("line.separator", "\n"),
155 ("user.home", workingdir()),
156 ("user.name", username()),
157 ("user.dir", "/usr/" + username())
158 };
159 for (i := 0; i < len properties; i++) {
160 (key, value) := properties[i];
161 args := array [2] of ref jni->Value;
162 args[0] = ref Value.TObject(jni->NewStringObject(key));
163 args[1] = ref Value.TObject(jni->NewStringObject(value));
164 (val, err) := jni->CallMethod(p0, "setProperty", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;", args);
165 }
166 return p0;
131}#<<167}#<<
132 168
133registerNatives_V( )169registerNatives_V( )
java/pkg/java/lang/System_L.m+1−0
@@ -14,6 +14,7 @@ System_L : module · 13 unmodified lines
14 currentTimeMillis_J : fn( ) : big;14 currentTimeMillis_J : fn( ) : big;
15 arraycopy_rObject_I_rObject_I_I_V : fn( p0 : JObject,p1 : int,p2 : JObject,p3 : int,p4 : int);15 arraycopy_rObject_I_rObject_I_I_V : fn( p0 : JObject,p1 : int,p2 : JObject,p3 : int,p4 : int);
16 identityHashCode_rObject_I : fn( p0 : JObject) : int;16 identityHashCode_rObject_I : fn( p0 : JObject) : int;
17 initProperties_rProperties_rProperties : fn( p0 : JObject ) : JObject;
17 GetUserName_rString : fn( ) : JString;18 GetUserName_rString : fn( ) : JString;
18 GetCWD_rString : fn( ) : JString;19 GetCWD_rString : fn( ) : JString;
19 registerNatives_V : fn( );20 registerNatives_V : fn( );