--- esound-0.2.36/esdlib.c 2006/06/02 05:05:32 1.1 +++ esound-0.2.36/esdlib.c 2006/06/02 05:16:57 @@ -42,6 +42,7 @@ static void dummy_signal(int signum) { /* from esd_config.c */ extern char esd_spawn_options[]; +extern char esd_spawn_binary[]; extern int esd_no_spawn; extern int esd_spawn_wait_ms; void esd_config_read(void); @@ -766,9 +767,9 @@ int esd_open_sound( const char *host ) char *cmd; setsid(); - cmd = malloc(strlen(SERVERDIR"/esd -spawnfd 999999") + (esd_spawn_options?strlen(esd_spawn_options):0)); + cmd = malloc(strlen(" -spawnfd 999999") + (esd_spawn_binary?strlen(esd_spawn_binary):strlen(SERVERDIR"/esd")) + (esd_spawn_options?strlen(esd_spawn_options):0)); - sprintf(cmd, "%s/esd %s -spawnfd %d", SERVERDIR, esd_spawn_options?esd_spawn_options:"", esd_pipe[1]); + sprintf(cmd, "%s %s -spawnfd %d", esd_spawn_binary?esd_spawn_binary:SERVERDIR"/esd", esd_spawn_options?esd_spawn_options:"", esd_pipe[1]); execl("/bin/sh", "/bin/sh", "-c", cmd, NULL); perror("execl"); --- esound-0.2.36/esd_config.c 2006/06/02 05:05:44 1.1 +++ esound-0.2.36/esd_config.c 2006/06/02 05:12:48 @@ -12,6 +12,7 @@ int esd_no_spawn=1; /* If we can't even int esd_spawn_wait_ms=100; /* Time to wait trying to connect to an autospawned ESD, in milliseconds. */ char esd_spawn_options[LINEBUF_SIZE] = "-terminate -nobeeps -as 2"; +char esd_spawn_binary[LINEBUF_SIZE] = SERVERDIR"/esd"; char esd_default_options [LINEBUF_SIZE] = ""; /* Default options, always applied */ @@ -62,6 +63,10 @@ esd_config_read(void) if(tmpenv && strlen(tmpenv) < (sizeof(esd_spawn_options) - 1)) strcpy(esd_spawn_options, tmpenv); + tmpenv = getenv("ESD_SPAWN_BINARY"); + if(tmpenv && strlen(tmpenv) < (sizeof(esd_spawn_binary) - 1)) + strcpy(esd_spawn_binary, tmpenv); + tmpenv = getenv("ESD_DEFAULT_OPTIONS"); if(tmpenv && strlen(tmpenv) < (sizeof(esd_default_options) - 1)) strcpy(esd_default_options, tmpenv); @@ -120,6 +125,10 @@ esd_config_read_file(FILE *fh) { strcpy(esd_spawn_options, value); } + else if(!strcasecmp(key, "spawn_binary")) + { + strcpy(esd_spawn_binary, value); + } else if(!strcasecmp(key, "default_options")) { strcpy(esd_default_options, value); --- esound-0.2.36/esd.conf 2006/06/02 05:05:49 1.1 +++ esound-0.2.36/esd.conf 2006/06/02 05:08:52 @@ -1,5 +1,6 @@ [esd] auto_spawn=1 +# spawn_binary=esd spawn_options=-terminate -nobeeps -as 2 spawn_wait_ms=100 # default options are used in spawned and non-spawned mode