diff -u3 -r TiMidity++-2.11.3-orig/interface/alsaseq_c.c TiMidity++-2.11.3-work/interface/alsaseq_c.c --- TiMidity++-2.11.3-orig/interface/alsaseq_c.c Tue Aug 20 22:59:04 2002 +++ TiMidity++-2.11.3-work/interface/alsaseq_c.c Tue Aug 20 23:50:05 2002 @@ -309,6 +309,24 @@ signal(SIGHUP, sig_reset); play_mode->close_output(); + + if (ctl.flags & CTLF_DAEMONIZE) + { + int pid = fork(); + FILE *pidf; + switch (pid) + { + case 0: // child is the daemon + break; + case -1: // error status return + exit(7); + default: // no error, doing well + if ((pidf = fopen( "/var/run/timidity.pid", "w" )) != NULL ) + fprintf( pidf, "%d\n", pid ); + exit(0); + } + } + for (;;) { server_reset(); doit(&alsactx); diff -u3 -r TiMidity++-2.11.3-orig/timidity/controls.h TiMidity++-2.11.3-work/timidity/controls.h --- TiMidity++-2.11.3-orig/timidity/controls.h Wed Jan 9 05:18:30 2002 +++ TiMidity++-2.11.3-work/timidity/controls.h Tue Aug 20 23:37:15 2002 @@ -134,6 +134,7 @@ #define CTLF_AUTOUNIQ (1u<<6) /* -i?u */ #define CTLF_AUTOREFINE (1u<<7) /* -i?R */ #define CTLF_NOT_CONTINUE (1u<<8) /* -i?C */ +#define CTLF_DAEMONIZE (1u<<9) /* -i?D */ int (*open)(int using_stdin, int using_stdout); void (*close)(void); diff -u3 -r TiMidity++-2.11.3-orig/timidity/timidity.c TiMidity++-2.11.3-work/timidity/timidity.c --- TiMidity++-2.11.3-orig/timidity/timidity.c Tue Aug 20 22:59:03 2002 +++ TiMidity++-2.11.3-work/timidity/timidity.c Tue Aug 20 23:39:13 2002 @@ -534,6 +534,7 @@ " `l' loop playing (some interface ignore this option)" NLS " `r' randomize file list arguments before playing" NLS " `s' sorting file list arguments before playing" NLS + " `D' daemonize timidity++ in background (for alsaseq only)" NLS , fp); fputs(NLS, fp); @@ -763,6 +764,9 @@ case 'd': cmp->flags ^= CTLF_DRAG_START; break; + case 'D': + cmp->flags ^= CTLF_DAEMONIZE; + break; case 'u': cmp->flags ^= CTLF_AUTOUNIQ; break; @@ -817,6 +821,9 @@ case 'x': cmp->flags ^= CTLF_AUTOEXIT; break; + case 'D': + cmp->flags ^= CTLF_DAEMONIZE; + break; default: ctl->cmsg(CMSG_ERROR, VERB_NORMAL,