@@ -1126,6 +1126,12 @@ static void put_os(struct ossp_stream *os)
1126
1126
1127
1127
static void set_extra_env (const pid_t pid )
1128
1128
{
1129
+ const char * target_vars [] = {
1130
+ "DISPLAY=" , // Display manager
1131
+ "PULSE_" , // PulseAudio
1132
+ "XDG_RUNTIME_DIR=" // Audio servers
1133
+ };
1134
+
1129
1135
char * line = NULL ;
1130
1136
FILE * file ;
1131
1137
size_t size ;
@@ -1138,24 +1144,17 @@ static void set_extra_env(const pid_t pid)
1138
1144
if (!file )
1139
1145
return ;
1140
1146
1141
- /*
1142
- * Copy all PULSE variables and DISPLAY so that
1143
- * ssh -X remotehost 'mplayer -ao oss' will work.
1144
- */
1145
1147
while ((len = getdelim (& line , & size , '\0' , file )) != -1 ) {
1146
- char * sign = NULL ;
1148
+ for (uint8_t i = 0 ; i < ARRAY_SIZE (target_vars ); ++ i ) {
1149
+ char * sign ;
1147
1150
1148
- if (len <= 6 )
1149
- continue ;
1150
-
1151
- if (strncmp (line , "PULSE_" , 6 ) == 0 )
1152
- sign = strchr (line , '=' );
1153
- else if (len >= 8 && strncmp (line , "DISPLAY=" , 8 ) == 0 )
1154
- sign = line + 7 ;
1151
+ if (strncmp (line , target_vars [i ], strlen (target_vars [i ])) != 0 )
1152
+ continue ;
1155
1153
1156
- if (sign ) {
1157
- * sign = '\0' ;
1158
- setenv (line , sign + 1 , 1 );
1154
+ if ((sign = strchr (line , '=' ))) {
1155
+ * sign = '\0' ;
1156
+ setenv (line , sign + 1 , 1 );
1157
+ }
1159
1158
}
1160
1159
}
1161
1160
0 commit comments