+ /* check if the new sound file already exists in the list of sounds */
+ if ((node = getNodeFromKey(SoundFileList, filename)) != NULL)
+ {
+#if 0
+ printf("[sound '%s' already exists (other list entry)]\n", filename);
+#endif
+
+ *snd_info = (SoundInfo *)node->content;
+ (*snd_info)->num_references++;
+ }
+ else if ((*snd_info = Load_WAV(filename)) != NULL) /* load new sound */
+ {
+ (*snd_info)->num_references = 1;
+ addNodeToList(&SoundFileList, (*snd_info)->source_filename, *snd_info);
+ }
+}
+
+static void LoadCustomSound(SoundInfo **snd_info, char *basename)
+{
+ char *filename = getCustomSoundFilename(basename);
+
+ if (strcmp(basename, SND_FILE_UNDEFINED) == 0)
+ {
+ deleteSoundEntry(snd_info);
+ return;
+ }
+
+ if (filename == NULL)
+ {
+ Error(ERR_WARN, "cannot find sound file '%s'", basename);
+ return;
+ }
+
+ replaceSoundEntry(snd_info, filename);