Hardened Steam Locomotive
  • C 93.7%
  • Roff 4.4%
  • Makefile 1.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
b0nn133 78f5265c69 1.00
2026-05-19 12:59:42 +03:00
.gitignore Ignore build product. 2014-06-03 09:07:01 -04:00
demo.gif 1.00 2026-05-19 12:59:42 +03:00
LICENSE 1.00 2026-05-19 12:59:42 +03:00
Makefile Merge branch 'improve-makefile' of https://github.com/Quintasan/sl into Quintasan-improve-makefile 2017-04-20 17:03:27 +09:00
README.ja.md 1.00 2026-05-19 12:59:42 +03:00
README.md 1.00 2026-05-19 12:59:42 +03:00
sl.1 1.00 2026-05-19 12:59:42 +03:00
sl.1.ja 1.00 2026-05-19 12:59:42 +03:00
sl.c 1.00 2026-05-19 12:59:42 +03:00
sl.h Fix typo: HIGHT->HEIGHT 2014-11-13 00:46:28 +01:00

HASL(1): Cure your bad habit of mistyping (The No-Escape Edition)

HASL (Hardened Steam Locomotive) runs across your terminal when you type "sl" instead of "ls". It is a strict disciplinary tool designed to enforce typing precision by trapping the user in a non-terminable animation loop.

Unlike the original 1993 version, HASL is heavily fortified. There are no keyboard escapes, no signal bypasses, and no cheap ways out. You made the typo; now you watch the train.

The Hardening Features

The source code has been patched to catch, block, and ignore all common POSIX keyboard interrupts and terminal management signals:

  • No Ctrl+C (SIGINT): Blocked. The train keeps chugging.
  • No Ctrl+Z (SIGTSTP): Blocked. The background suspension loophole is closed.
  • No Ctrl+\ (SIGQUIT): Blocked. Forcing a core dump terminal exit will fail.
  • No kill (SIGTERM): Blocked. Opening a secondary tab to blindly kill the process from a different shell will have no effect.

How It Works

Once executed, HASL enters an ironclad loop that strips control from the TTY. The only way to return to your shell prompt is to wait exactly for the legendary D51 locomotive to completely clear the screen, or invoke the nuclear option from the kernel level:

$ kill -9 <PID>

Installation (The Trap)

To maximize the disciplinary effect, compile the hardened source and alias it, or place it directly over the standard binary paths:

$ make
$ mv sl /usr/games/sl

Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org) Modifications Copyright 2026 b0nn133