From 90a6e9e4057985a4fcc1aa31c4fb75880d060479 Mon Sep 17 00:00:00 2001 From: Lisa Milne Date: Tue, 2 Sep 2025 20:26:42 +1000 Subject: [PATCH] version bump and documentation update --- clite/core.js | 7 ++++-- readme-internals.txt | 15 +++++++----- readme-programs.txt | 58 +++++++++++++++++++++++++++++++------------- readme.txt | 2 ++ 4 files changed, 57 insertions(+), 25 deletions(-) diff --git a/clite/core.js b/clite/core.js index 15f2ba3..6a7da92 100644 --- a/clite/core.js +++ b/clite/core.js @@ -1,6 +1,6 @@ var clite = { state:{ - version:'0.6.1', + version:'0.8.0', isinit:false, runlevel:1, bios:null, @@ -362,7 +362,10 @@ cat /etc/greeting if (typeof fn === 'string') { f.data.content = fn; }else{ - f.data.content = fn.toString().substring(8); + f.data.content = fn.toString().substring(23); + var e = f.data.content.lastIndexOf('return main('); + if (e > -1) + f.data.content = f.data.content.substring(0,e); } } } diff --git a/readme-internals.txt b/readme-internals.txt index 8fa5614..67ddbfc 100644 --- a/readme-internals.txt +++ b/readme-internals.txt @@ -134,7 +134,7 @@ The Boot Process: /etc/shrc init file for the shell (prints the above and so on) 12. The default device files are initialised in /dev: /dev/local provides an interface for upload from and - downloading to the users computer. + downloading to the user's computer. /dev/null the null device /dev/random read from this for a random number /dev/initctl for accessing and changing the system runlevel @@ -176,10 +176,13 @@ The Boot Process: 17. The guest user account's home directory is created at /usr/home/guest, shell dot files added, and /usr/share/site is symlinked to /usr/home/guest/web -18. PID 1 is forked. At present this new process simply sets its uid and - gid to 1 (guest) then executes /bin/sh. At which point the shell - starts up, runs its rc files, and presents a command prompt to - the user. +18. PID 1 is forked. At present PID 1 is /bin/login which either logs in + automatically to the guest account, or presents a login prompt + if another count, with a password, exists. +19. Upon succesful log in, /bin login forks a new process, sets its uid + and gid to the new user according to /etc/passwd, then executes + /bin/sh. At which point the shell starts up, runs its rc files, + and presents a command prompt to the user. The Lifecycle of a Process: @@ -206,7 +209,7 @@ The Lifecycle of a Process: less than zero for internal error greater than zero for the program's own use This ends the program, and notifies the process manager that the - process has exit. + process has exited. The process manager will then remove the process from the process list, delete the process' data file in /proc/, then handle any wait() calls that have been queued for the process exit. diff --git a/readme-programs.txt b/readme-programs.txt index 5c90e01..b3dba1f 100644 --- a/readme-programs.txt +++ b/readme-programs.txt @@ -56,8 +56,11 @@ Synchronous Program: clite.commands.load('hello',function(args,env,io) { var stdio = io.include('stdio'); - stdio.printf("Hello World!\n"); - return 0; + function main(argc,argv) { + stdio.printf("Hello World!\n"); + return 0; + } + return main(args.length,args); } Asynchronous Program: @@ -73,15 +76,6 @@ clite.commands.load('show',function(args,env,io) { var stdlib = io.include('stdlib'); var stdio = io.include('stdio'); - // check there's a file to read from - if (args.length != 2) { - stdio.write(io.stderr,'Specify a file to read\n'); - return 1; // not asyncronous yet, so just return - } - - // take the argument, and get it's full path - var file = stdlib.resolvePath(args[1]); - // file callback function that will receive the file descriptor // once the file has data in it function fcb(fd) { @@ -112,11 +106,41 @@ clite.commands.load('show',function(args,env,io) { io.exit(0); } - // open the file, and set the callback - var fd = stdio.open(file,stdio.flags.O_RDONLY,fcb); + function main(argc,argv) { + // check there's a file to read from + if (argc != 2) { + stdio.write(io.stderr,'Specify a file to read\n'); + return 1; // not asyncronous yet, so just return + } - // we don't want to exit the program yet, - // so return null to let the system know that the - // program is asyncronous (reads user data, or loads remote data) - return null; + // take the argument, and get it's full path + var file = stdlib.resolvePath(argv[1]); + + // open the file, and set the callback + var fd = stdio.open(file,stdio.flags.O_RDONLY,fcb); + + // we don't want to exit the program yet, + // so return null to let the system know that the + // program is asyncronous (reads user data, or loads remote data) + return null; + } + + return main(args.length,args); } + +Programs written in CLIte may be compiled using the `cc' command, this + will turn a javascript source file into an excutable object. There is + currently no support for compiling programs from multiple source files, + yet. However simple single-file programs may be compiled easily, for + instance a simple hello world's source would look like this: + +var stdio = io.include('stdio'); +function main(argc,argv) { + stdio.printf("Hello World!\n"); + return 0; +} + +Which would be compiled with: + cc -o hw hw.js + +The file 'hw' could then be executed from the shell. diff --git a/readme.txt b/readme.txt index b99d42d..6731222 100644 --- a/readme.txt +++ b/readme.txt @@ -56,6 +56,8 @@ user - user account manager passwd - change user passwords +cc - code compiler + Running any command with the argument -? will give you help for that program.