-See far below for step by step usage!
+The main feature of the master branch of this fork is install-dgl-nh500, which does what it says on the tin.
+It will fetch, compile, and install nethack 5.0.0, and do the same for DGL (although it is already fetched
+by the time you're using the script), and put them into a chroot of your choosing.
-This repository is a fork of Crawl's version of dgamelaunch[^dgl-crawl], which
-was forked from Paxed's dgamlaunch after January 29th, 2011[^dgl-paxed-2011].
-Work by Paxed continued[^dgl-paxed] after Crawl's fork; this fork has been
-patched to merge the two versions.
-
-```
-Diagram -- paxed branch won't be reflected correctly in git history
- [ BRANCH ]
- [CRAWL][PAXED]
-
- 3d0812c paxed committed on Jan 29, 2011
- |\
- | \
- 08e687f \ greensnark committed on Mar 22, 2011
- | \
- | |
- . 3405bcf paxed committed on Mar 26, 2011
- . .
-(more commits truncated)
- . .
- . 55bd7dc paxed committed on May 11, 2019
- | |
- | .
- 455308b | aidanholm committed on Mar 7, 2020
- | .
- . .
-(crawl branch forked)
- . .
- | |
- a81b934 . zalethon committed on May 22, 2026
- | /
- . .
-(paxed branch manually merged in)
- . .
- |.
- 7c45d5a zalethon committed on May 24, 2026
-```
+autoconf branch is for making dgl's configure/makefile stuff work, without having to use these bash scripts
+people have written over the years.
+I'm pretty interested in the history of this program -- so much so that I went through pains trying to make
+sure I was forking a version of the repository that contained accurate commit hashes -- crawl's fork has
+somehow mangled them such that its history appears entirely-unrelated to git.
-For history's sake, and in case you're running into trouble and need more
-threads to pull, check out also the original READMEs from each other
-repository: [paxed's readme](README-paxed) and [crawl's readme](README-crawl)
-
-Other than that, the primary feature here is `install-dgl-nh500`, which is a
-drop-in replacement script for `install-dgl-chroot`.
-
-`install-dgl-nh500` It automates installation of NetHack inside a dgamelaunch
-chroot.
-
-[^dgl-crawl]: https://github.com/crawl/dgamelaunch/commit/455308b96fa7522c8c9873653401b4e0cf8f71e4
-[^dgl-paxed-2011]: https://github.com/paxed/dgamelaunch/commit/3d0812cc3c78f713ec244f64d67c922d66dd46f3
-[^dgl-paxed]: https://github.com/paxed/dgamelaunch/commit/55bd7dce01db17356b05da966595ff1ae6097e60
-
-# TODO
-* Fixing the makefiles so that we don't have to use eldritch bash scripts to
- install stuff
-* reading through Paxed's TODOs, importing ones from crawl, incorporating
- issues below
-
-## Issues
-(from Paxed's repository; some may have been addressed by crawl team already)
-### Security
-* [Blank password bypasses certain passwords #20](https://github.com/paxed/dgamelaunch/issues/20)
-* [dgamelaunch vulnerable to pass-the-hash attack #10](https://github.com/paxed/dgamelaunch/issues/10)
- This one was most likely addressed by crawl's team -- I avoided clobbering
- any changes they made to password infrastructure... if not, a pull request
- exists in paxed's repository which proposes to resolve the issue.
-* [dgamelaunch binary should not be in chroot](https://github.com/paxed/dgamelaunch/issues/1)
- I mean yeah probably
-### Compiling
-* [Does not build with newer Versions of flex #4](https://github.com/paxed/dgamelaunch/issues/4)
-* [yywrap undefined #19](https://github.com/paxed/dgamelaunch/issues/19)
- Duplicate of #4, probably
-### Suggestions
-* [suggestion - record terminal size info in ttyrec #17](https://github.com/paxed/dgamelaunch/issues/17)
-* [Allow importing NETHACKOPTIONS environment variable? #16](https://github.com/paxed/dgamelaunch/issues/16)
-
-# dgamelaunch documentation
-From paxed's excellent README
-```
-COMMANDLINE PARAMETERS
-======================
-
- -a Ignored.
- -c Shows error message and exits. (login shell command)
- -e Ignored.
- -h Ignored.
- -i user Autologin and run the register -command hook for "user"
- (with password "user").
- -p Ignored.
- -q Be quiet, suppress errors.
- -s Show players currently playing.
- -W user:msg Send message "msg" to all players. The message seems
- to come from "user".
- -S Free the shared memory block.
- -D Show contents of the shared memory block.
-
-
-ENVIRONMENT VARIABLES
-=====================
-
- Linux telnetd allows importing the USER environment variables via telnet,
- while FreeBSD does not. FreeBSD, on the other hand, does allow the LOGNAME
- environment variable. Dgamelaunch will first check USER, then LOGNAME,
- for "username:password", and tries autologin if either exists.
- Dgamelaunch-specific DGLAUTH is checked before either of those.
-
-
-ERROR CODES
-===========
-
- 1 Could not terminate stale processes
- 2 Cannot chroot()
- 3 Cannot chdir()
- 4 Cannot setgroups()
- 5 Cannot setgid()
- 6 Cannot setuid()
- 7 Caught HUP
- 8 Cannot run as root: Config file has shed_user = "root"
- 9 Cannot run as root: Config file has shed_user set to UID 0 user.
- 10 Could not setup player
- 11 Cannot run as root: Config file has shed_uid = 0
- 12 Config file has an unrecognized token
- 13 Config file: Negative value not accepted
- 15 dgamelaunch called with -c (login shell command); exited
- 20 No menu defined, or no banner found for menu
- 60 Cannot create a new terminal, or no termcap files.
- 61 Cannot openpty()
- 62 Cannot open /dev/ptmx
- 65 Cannot open master ptsname
- 68 Cannot fcntl inprogress-lock
- 70 Cannot write to inprogress-lock
- 71 ftok() error for shm_key, no "dgamelaunch" file found?
- 72 ftok() error for shm_sem_key, no "dgamelaunch" file found?
- 73 shmget() error, cannot connect to shared memory
- 74 smat() error, cannot attach to shared memory
- 75 Nothing in shared memory?
- 76 sem_init() error, could not initialize shared memory
- 77 sem_wait() error
- 78 sem_post() error
- 95 Cannot fnctl lockfile
- 96 sqlite3_open() failed when checking user existence: could not open login database
- 97 sqlite3_open() failed in writefile()
- 98 sqlite3_exec() failed in writefile()
- 99 Could not open password file
- 100 Username field too long in login file
- 101 Email field too long in login file
- 102 password field too long in login file
- 103 env field too long in login file
- 104 Cannot read config file
- 105 Cannot read default config file
- 106 Cannot open lockfile or password file
- 107 fcntl failed on login database in writefile()
- 108 sqlite3_exec() failed when checking user existence.
- 109 Too many registered users. (see maxusers setting in config file)
- 110 Login failed
- 111 Two users trying to register at the same time
- 112 Error changing password: cannot have ':' in password
- 113 Error parsing configuration file
- 114 exec-command fork failed
- 115 could not read lock file in writefile()
- 116 Too many registered users. (see maxusers setting in config file)
- 117 wall error: no message to send
- 118 wall error: no players
- 119 User has a retarded terminal
- 120 wall error: message too long
- 121 wall error: "from" username is too short
- 122 Error changing password: struct "me" does not exist
- 123 chdir() failed in dgl commands.
- 140 populate_games(): Cannot open inprogress-dir
- 145 populate_games(): Inprogress-filename does not have ':' in it
- 146 populate_games(): Inprogress-filename does not have ': in it (pt. 2)
- 200 purge_stale_locks(): could not open inprogress-dir
- 201 purge_stale_locks(): inprogress-file did not have ':' in it
- 202 purge_stale_locks(): could not read inprogress-file
- 203 purge_stale_locks(): could not get inprogress-file contents
-```
+Anyway, if you know anything of the history, reach out.
# install-dgl-nh500 documentation
```bash