SchOS/tools
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nexoniarz 393bf674f5 NetSurf: what GTK's images and libcurl's resolver needed
NetSurf (GTK 3) now starts under X and loads pages over HTTPS. Every icon
GTK draws goes gdk-pixbuf -> glycin -> a loader process -> a sealed memfd
-> GMappedFile, and each hop found something missing:

- mkaroot runs Alpine's package triggers in the root under bubblewrap.
  --no-scripts had skipped them, so there was no MIME cache, pixbuf loader
  list, compiled GSettings schemas, GIO module cache, font cache or busybox
  applet links.
- /usr/bin/bwrap is a stand-in that parses bubblewrap's options and runs
  the program with no sandbox: glycin starts its loaders only through bwrap,
  and real bwrap needs namespaces. schos-base replaces bubblewrap for it.
- ioctl: FIOCLEX, FIONCLEX, FIONBIO and FIOASYNC on any descriptor (Rust's
  std uses them; pipes and sockets answered ENOTTY).
- capget/capset: root has every capability, others none.
- socketpair accepts SOCK_DGRAM and SOCK_SEQPACKET, carried as a stream.
- waitpid and setpgid match children against the thread group leader, so a
  thread can wait for the process it spawned (ECHILD before).
- memfd: fstat reports the ftruncate length, not the page-rounded one; file
  seals (F_ADD_SEALS, F_GET_SEALS, MFD_ALLOW_SEALING) are recorded and
  enforced on later writes, truncation and writable mappings; MFD_CLOEXEC
  is honoured; read-only MAP_PRIVATE maps are allowed.
- recvfrom honours O_NONBLOCK and MSG_DONTWAIT. musl's resolver reads its
  socket until EAGAIN and blocked for ever after the first DNS answer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
2026-10-25 04:10:26 +01:00
..
posix NetSurf: what GTK's images and libcurl's resolver needed 2026-10-25 04:10:26 +01:00
python qr: every version, 1 to 40 2026-10-25 00:43:36 +02:00
windows X on the console: /dev/tty0, a palette, and startx that works 2026-10-24 19:44:10 +02:00
fix-includes.py include: one folder per subsystem, and includes that name it 2026-10-23 15:05:12 +02:00
kmemtest.c kmem: a slab allocator, and what the fixed tables actually cost 2026-09-22 09:32:06 +02:00
ksyms.pl include: one folder per subsystem, and includes that name it 2026-10-23 15:05:12 +02:00
mkfs.c include: one folder per subsystem, and includes that name it 2026-10-23 15:05:12 +02:00
mkscff.c SCFF: the live root ships compressed, with Xorg and Window Maker 2026-10-24 21:17:31 +02:00
mkschfs.c schfs: commit every 5 s, survive a full disk, mount up to 64 TiB 2026-10-23 12:20:05 +02:00
pr.pl Initial commit: Schunix as it stands before the SchOS rename 2026-08-09 13:47:01 +02:00
qrtest.c qr: every version, 1 to 40 2026-10-25 00:43:36 +02:00
schfs_fsck.c schfs: commit every 5 s, survive a full disk, mount up to 64 TiB 2026-10-23 12:20:05 +02:00
schfs_objtest.c schfs: commit every 5 s, survive a full disk, mount up to 64 TiB 2026-10-23 12:20:05 +02:00
schfs_test.c schfs: commit every 5 s, survive a full disk, mount up to 64 TiB 2026-10-23 12:20:05 +02:00
ttftest.c font: the console draws outlines now, and a byte could not have held Ą 2026-09-20 00:35:34 +02:00
vectors.pl Initial commit: Schunix as it stands before the SchOS rename 2026-08-09 13:47:01 +02:00
wallpapers.py branding: four skeuomorphic wallpapers; the old art goes 2026-10-23 15:51:29 +02:00