static sound_file *find_sound_file(const char *name) { int i, len, len2; sound_file *sf; if ((!name) || (sound_table_size == 0)) return(NULL); len = strlen(name); if (len > 6) len2 = len - 6; /* the names probably all start with '/' and end with ".snd", so try to find a changing character... */ else len2 = len / 2; i = 0; while (i <= sound_table_size4) { sf = sound_table[i]; if ((sf) && (sf->file_name_length == len) && (name[len2] == sf->file_name[len2]) && (strcmp(name, sf->file_name) == 0)) return(check_write_date(name, sf)); i++; sf = sound_table[i]; if ((sf) && (sf->file_name_length == len) && (name[len2] == sf->file_name[len2]) && (strcmp(name, sf->file_name) == 0)) return(check_write_date(name, sf)); i++; sf = sound_table[i]; if ((sf) && (sf->file_name_length == len) && (name[len2] == sf->file_name[len2]) && (strcmp(name, sf->file_name) == 0)) return(check_write_date(name, sf)); i++; sf = sound_table[i]; if ((sf) && (sf->file_name_length == len) && (name[len2] == sf->file_name[len2]) && (strcmp(name, sf->file_name) == 0)) return(check_write_date(name, sf)); i++; } for (; i < sound_table_size; i++) { sf = sound_table[i]; if ((sf) && (sf->file_name_length == len) && (name[len2] == sf->file_name[len2]) && (strcmp(name, sf->file_name) == 0)) return(check_write_date(name, sf)); } return(NULL); }
static sound_file *find_sound_file(const char *name) { /* assume name != NULL */ int i, len, len2; sound_file **sound_table; int sound_table_size, index; char c; len = strlen(name); if (len > 6) len2 = len - 6; /* the names probably all start with '/' and end with ".snd", so try to find a changing character... */ else len2 = len / 2; c = name[len2]; index = sound_file_hash_index(name, len); sound_table = sound_tables[index]; sound_table_size = sound_table_sizes[index]; for (i = 0; i < sound_table_size; i++) { sound_file *sf; sf = sound_table[i]; if ((sf) && (sf->file_name_length == len) && (c == sf->file_name[len2]) && (strcmp(name, sf->file_name) == 0)) return(check_write_date(name, sf)); } return(NULL); }