diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:24:13 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:24:13 +0300 |
| commit | d12e80797cf0ae7a0bd3cd0cd7948f532f3181ac (patch) | |
| tree | cfc587a5999100558888aec1b5ef5b60d424977e /corebinutils/csh/README.md | |
| parent | 2ab63a8c60f0ebd6c813b19eb540476fbe63edda (diff) | |
| parent | 9fcd5aad4bbd6e9e4e0791b193168db0bd861cb9 (diff) | |
| download | Project-Tick-d12e80797cf0ae7a0bd3cd0cd7948f532f3181ac.tar.gz Project-Tick-d12e80797cf0ae7a0bd3cd0cd7948f532f3181ac.zip | |
Add 'corebinutils/csh/' from commit '9fcd5aad4bbd6e9e4e0791b193168db0bd861cb9'
git-subtree-dir: corebinutils/csh
git-subtree-mainline: 2ab63a8c60f0ebd6c813b19eb540476fbe63edda
git-subtree-split: 9fcd5aad4bbd6e9e4e0791b193168db0bd861cb9
Diffstat (limited to 'corebinutils/csh/README.md')
| -rw-r--r-- | corebinutils/csh/README.md | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/corebinutils/csh/README.md b/corebinutils/csh/README.md new file mode 100644 index 0000000000..a2b79be92a --- /dev/null +++ b/corebinutils/csh/README.md @@ -0,0 +1,39 @@ +# csh + +Standalone musl-libc-based Linux port of FreeBSD `csh` for Project Tick BSD/Linux Distribution. + +## Build + +```sh +gmake -f GNUmakefile +gmake -f GNUmakefile CC=musl-gcc +``` + +Binary output: + +```sh +out/csh +``` + +## Test + +```sh +gmake -f GNUmakefile test +gmake -f GNUmakefile test CC=musl-gcc +``` + +## Port Strategy + +- The source base stays close to FreeBSD's `tcsh`, but the Linux build is standalone and generates its own `tc.defs.c`, `sh.err.h`, `ed.defns.h`, and `tc.const.h`. +- The required upstream `tcsh` sources now live under `bin/csh/tcsh`, and the Linux terminfo/termcap stack is built from vendored ncurses sources under `bin/csh/ncurses`. +- No shared BSD compatibility shim is introduced. FreeBSD-specific assumptions are replaced with Linux-native interfaces in the affected source files. +- Child process accounting on Linux uses `wait4(2)` instead of BSD `wait3(2)`, which keeps job-control resource accounting working on musl. +- Login/watch state reads Linux utmp/utmpx data from `_PATH_UTMP` when available, otherwise `/run/utmp`, rather than FreeBSD's `utx.active`. +- Terminal capability lookup is satisfied by the vendored `libtinfow` build, so Linux and musl builds do not depend on host `ncursesw`/`tinfo`. +- NLS catalogs are disabled in the standalone port at source level; the build does not install or load translated message catalogs. + +## Supported / Unsupported Linux Semantics + +- Supported: non-interactive `-c` execution, shell scripts, globbing, history-less `-f` operation, vendored termcap/terminfo lookups, job control/resource accounting via `wait4(2)`, `setpriority(2)`, `getrlimit(2)`, and `setrlimit(2)`. +- Supported with explicit runtime dependency: login watch uses the host's utmp/utmpx database; if the database is absent, tcsh reports the missing file instead of silently pretending the feature works. +- Unsupported in this standalone port: NLS catalog loading is disabled, so translated message catalogs are not installed or loaded. |
