| 152 |
148 |
| 153 return 1; |
149 return 1; |
| 154 } |
150 } |
| 155 |
151 |
| 156 #endif |
152 #endif |
| 157 |
|
| 158 #ifdef NAS_SOUND |
|
| 159 |
|
| 160 char nas_server[] = "localhost"; |
|
| 161 AuServer *nas_serv = NULL; |
|
| 162 |
|
| 163 static AuBool NasEventHandler(AuServer * aud, AuEvent * ev, AuEventHandlerRec * handler) |
|
| 164 { |
|
| 165 AuElementNotifyEvent *event = (AuElementNotifyEvent *) ev; |
|
| 166 |
|
| 167 if (ev->type == AuEventTypeElementNotify) { |
|
| 168 switch (event->kind) { |
|
| 169 case AuElementNotifyKindState: |
|
| 170 switch (event->cur_state) { |
|
| 171 case AuStateStop: |
|
| 172 _exit(0); |
|
| 173 } |
|
| 174 break; |
|
| 175 } |
|
| 176 } |
|
| 177 return AuTrue; |
|
| 178 } |
|
| 179 |
|
| 180 static int can_play_nas() |
|
| 181 { |
|
| 182 if ((nas_serv = AuOpenServer(NULL, 0, NULL, 0, NULL, NULL))) |
|
| 183 return 1; |
|
| 184 return 0; |
|
| 185 } |
|
| 186 |
|
| 187 static int play_nas_file(char *file) |
|
| 188 { |
|
| 189 struct stat stat_buf; |
|
| 190 char *buf; |
|
| 191 int ret; |
|
| 192 int fd = open(file, O_RDONLY); |
|
| 193 if (fd <= 0) |
|
| 194 return 0; |
|
| 195 |
|
| 196 if (!can_play_nas()) |
|
| 197 return 0; |
|
| 198 |
|
| 199 if (stat(file, &stat_buf)) |
|
| 200 return 0; |
|
| 201 |
|
| 202 if (!stat_buf.st_size) |
|
| 203 return 0; |
|
| 204 |
|
| 205 buf = malloc(stat_buf.st_size); |
|
| 206 read(fd, buf, stat_buf.st_size); |
|
| 207 ret = play_nas(buf, stat_buf.st_size); |
|
| 208 free(buf); |
|
| 209 return ret; |
|
| 210 } |
|
| 211 |
|
| 212 #endif |
|
| 213 #endif /* !_WIN32 */ |
153 #endif /* !_WIN32 */ |
| 214 |
154 |
| 215 void play_file(char *filename) |
155 void play_file(char *filename) |
| 216 { |
156 { |
| 217 #ifndef _WIN32 |
157 #ifndef _WIN32 |
| 263 args[2] = NULL; |
203 args[2] = NULL; |
| 264 execvp(args[0], args); |
204 execvp(args[0], args); |
| 265 _exit(0); |
205 _exit(0); |
| 266 } |
206 } |
| 267 |
207 |
| 268 #ifdef NAS_SOUND |
|
| 269 else if (sound_options & OPT_SOUND_NAS) { |
208 else if (sound_options & OPT_SOUND_NAS) { |
| 270 if (play_nas_file(filename)) |
209 char *args[3]; |
| 271 _exit(0); |
210 args[0] = "auplay"; |
| 272 } |
211 args[1] = filename; |
| 273 #endif |
212 args[2] = NULL; |
| 274 else if ((sound_options & OPT_SOUND_NORMAL) && |
213 execvp(args[0], args); |
| |
214 } |
| |
215 else if ((sound_options & OPT_SOUND_NORMAL) && |
| 275 can_play_audio()) { |
216 can_play_audio()) { |
| 276 play_audio_file(filename); |
217 play_audio_file(filename); |
| 277 _exit(0); |
218 _exit(0); |
| 278 } |
219 } |
| 279 |
220 |