@@ -137,6 +137,25 @@ static JSTValue jsToolsEnvUser JSTDeclareFunction () {
137
137
return JSTValueUndefined ;
138
138
}
139
139
140
+ static JSValueRef jsToolsSource JSTDeclareFunction (file , [global object ]) {
141
+ JSTValue result ;
142
+ char * script = NULL , * src = NULL , * file = (argc )?JSTValueToUTF8 (argv [0 ]):NULL ;
143
+ if (g_file_get_contents (file , & src , NULL , NULL )) {
144
+ script = src ; int c = 0 ;
145
+ if (* script == '#' && * (script + 1 ) == '!' ) {
146
+ script += 2 ;
147
+ while ((c = * script ) && c != '\n' ) script ++ ;
148
+ }
149
+ result = JSTScriptEval (script , (argc == 2 )?(JSTObject )argv [1 ]:NULL , file , 1 ); g_free (src );
150
+ } else {
151
+ JSTScriptNativeError ("unable to get file `%s' contents" , file );
152
+ }
153
+ JSTStringFreeUTF8 (file );
154
+ return result ;
155
+
156
+ }
157
+
158
+
140
159
JSTObject JSTInit_ JSTUtility (JSTObject global , int argc , char * argv [], char * envp []) {
141
160
142
161
static bool initialized ;
@@ -148,6 +167,7 @@ JSTObject JSTInit_ JSTUtility(JSTObject global, int argc, char * argv[], char *
148
167
if (JSTScriptHasError ) JSTScriptReportException (), exit (1 );
149
168
150
169
JSTObjectSetProperty (global , "js" , js , JSTObjectPropertyReadOnly | JSTObjectPropertyRequired );
170
+ JSTObjectSetMethod (js , "source" , jsToolsSource , 0 );
151
171
152
172
JSTObjectSetProperty (js , "user" , jsToolsPasswdToObject (ctx , getuid (), exception ), JSTObjectPropertyRequired );
153
173
0 commit comments