From e7b1c1aad896c131fb30b6b0836ff65a63a6eae3 Mon Sep 17 00:00:00 2001 From: qwx Date: Sun, 15 Jul 2018 06:31:45 +0200 Subject: [PATCH] doom: use wadfs to expose music lumps launch wadfs after detecting main wad, exposing GENMIDI and music lumps under /mnt/wad. /bin/dmus can then use them directly, and wadfs doesn't need to be started manually. --- sys/src/games/doom/d_main.c | 5 +++++ sys/src/games/doom/i_sound.c | 10 +--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/sys/src/games/doom/d_main.c b/sys/src/games/doom/d_main.c index 6f1e86215..706306912 100644 --- a/sys/src/games/doom/d_main.c +++ b/sys/src/games/doom/d_main.c @@ -635,6 +635,11 @@ void IdentifyVersion (void) gamemode = indetermined; return; } + if(gamemode != indetermined && rfork(RFPROC|RFFDG) == 0){ + close(2); + execl("/bin/games/wadfs", "wadfs", wadfile, nil); + sysfatal("execl: %r"); + } strncpy(basedefault, wadfile, sizeof(basedefault)-5); basedefault[sizeof(basedefault)-5] = '\0'; slash = strrchr(basedefault, '/'); diff --git a/sys/src/games/doom/i_sound.c b/sys/src/games/doom/i_sound.c index aff0a3433..e15e988ab 100644 --- a/sys/src/games/doom/i_sound.c +++ b/sys/src/games/doom/i_sound.c @@ -462,15 +462,7 @@ void I_PlaySong(musicinfo_t *m, int loop) case 0: dup(mpfd[1], 1); for(n=3; n<20; n++) close(n); - close(0); - snprint(name, sizeof(name), "/tmp/doom.%d", getpid()); - if(create(name, ORDWR|ORCLOSE, 0666) != 0) - sysfatal("create: %r"); - n = W_LumpLength(m->lumpnum); - if(write(0, m->data, n) != n) - sysfatal("write: %r"); - if(seek(0, 0, 0) != 0) - sysfatal("seek: %r"); + snprint(name, sizeof(name), "/mnt/wad/d_%s", m->name); if(bind("/fd/1", "/dev/audio", MREPL) < 0) sysfatal("bind: %r"); while(loop && fork() > 0){