+ if (num_suffix_list_entries > 0)
+ {
+ for (i=0; i<num_file_list_entries; i++)
+ {
+ file_list[i].default_parameter =
+ checked_calloc(num_suffix_list_entries * sizeof(int));
+ file_list[i].parameter =
+ checked_calloc(num_suffix_list_entries * sizeof(int));
+
+ for (j=0; j<num_suffix_list_entries; j++)
+ {
+ file_list[i].default_parameter[j] = -1;
+ file_list[i].parameter[j] = -1;
+ }
+ }
+ }
+
+ for (i=0; config_list[i].token != NULL; i++)
+ {
+ int len_config_token = strlen(config_list[i].token);
+ boolean is_file_entry = TRUE;
+
+ for (j=0; suffix_list[j] != NULL; j++)
+ {
+ int len_suffix = strlen(suffix_list[j]);
+
+ if (len_suffix < len_config_token &&
+ strcmp(&config_list[i].token[len_config_token - len_suffix],
+ suffix_list[j]) == 0)
+ {
+ file_list[list_pos].default_parameter[j] = atoi(config_list[i].value);
+
+ is_file_entry = FALSE;
+ break;
+ }
+ }
+
+ if (is_file_entry)
+ {
+ list_pos++;
+
+ if (list_pos >= num_file_list_entries)
+ Error(ERR_EXIT, "inconsistant config list information -- please fix");
+
+ file_list[list_pos].token = config_list[i].token;
+ file_list[list_pos].default_filename = config_list[i].value;
+ }
+ }
+
+ if (list_pos != num_file_list_entries - 1)
+ Error(ERR_EXIT, "inconsistant config list information -- please fix");
+
+ return file_list;
+}
+
+static void LoadArtworkConfig(struct ArtworkListInfo *artwork_info)
+{
+ int num_file_list_entries = artwork_info->num_file_list_entries;
+ int num_suffix_list_entries = artwork_info->num_suffix_list_entries;
+ struct FileInfo *file_list = artwork_info->file_list;
+ char *filename = getCustomArtworkConfigFilename(artwork_info->type);
+ struct SetupFileList *setup_file_list;
+ int i, j;
+
+#if 0
+ printf("GOT CUSTOM ARTWORK CONFIG FILE '%s'\n", filename);
+#endif
+
+ /* always start with reliable default values */
+ for (i=0; i<num_file_list_entries; i++)
+ {
+ file_list[i].filename = NULL;
+
+ for (j=0; j<num_suffix_list_entries; j++)
+ {
+ file_list[i].parameter[j] = file_list[i].default_parameter[j];
+ }
+ }
+
+ if (filename == NULL)
+ return;
+
+ if ((setup_file_list = loadSetupFileList(filename)))
+ {
+ for (i=0; i<num_file_list_entries; i++)
+ file_list[i].filename =
+ getStringCopy(getTokenValue(setup_file_list, file_list[i].token));
+
+ freeSetupFileList(setup_file_list);
+
+#if 0
+ for (i=0; i<num_file_list_entries; i++)
+ {
+ printf("'%s' ", file_list[i].token);
+ if (file_list[i].filename)
+ printf("-> '%s'\n", file_list[i].filename);
+ else
+ printf("-> UNDEFINED [-> '%s']\n", file_list[i].default_filename);
+ }
+#endif
+ }
+}
+
+static void deleteArtworkListEntry(struct ArtworkListInfo *artwork_info,
+ struct ListNodeInfo **listnode)