- options.base_directory, SOUNDS_DIRECTORY, snd_info->name, sound_ext);
-
-#ifndef MSDOS
-
- if ((file = fopen(filename, "r")) == NULL)
- {
- Error(ERR_WARN, "cannot open sound file '%s' - no sounds", filename);
- return(FALSE);
- }
-
- if (fseek(file, 0, SEEK_END) < 0)
- {
- Error(ERR_WARN, "cannot read sound file '%s' - no sounds", filename);
- fclose(file);
- return(FALSE);
- }
-
- snd_info->file_len = ftell(file);
- rewind(file);
-
- snd_info->file_ptr = checked_malloc(snd_info->file_len);
-
- if (fread(snd_info->file_ptr, 1, snd_info->file_len, file) !=
- snd_info->file_len)
- {
- Error(ERR_WARN, "cannot read sound file '%s' - no sounds", filename);
- fclose(file);
- return(FALSE);
- }
-
- fclose(file);
-
- sound_header = (struct SoundHeader_WAV *)snd_info->file_ptr;
-
- if (strncmp(sound_header->magic_RIFF, "RIFF", 4) ||
- snd_info->file_len != le2long(&sound_header->header_size) + 8 ||
- strncmp(sound_header->magic_WAVE, "WAVE", 4) ||
- strncmp(sound_header->magic_DATA, "data", 4) ||
- snd_info->file_len != le2long(&sound_header->data_size) + 44)
- {
- Error(ERR_WARN, "'%s' is not a RIFF/WAVE file or broken - no sounds",
- filename);
- return(FALSE);
- }
-
- snd_info->data_ptr = snd_info->file_ptr + 44;
- snd_info->data_len = le2long(&sound_header->data_size);