+#if 0
+ printf("::: looking in directory '%s' for '%s' ...\n",
+ path, ARTWORK_DIRECTORY((*artwork_node)->type));
+#endif
+
+#if 1
+ char *type_string = ARTWORK_DIRECTORY((*artwork_node)->type);
+ char *identifier = level_node->subdir;
+ char *type_identifier = getStringCat2WithSeparator(type_string,
+ identifier, ".");
+ char *cache_entry = getHashEntry(level_artwork_info_hash,
+ type_identifier);
+ boolean cached = (cache_entry != NULL && strEqual(cache_entry, "true"));
+
+ if (cached)
+ {
+ int i;
+
+ printf("::: LOADING existing hash entry for '%s' ...\n",
+ identifier);
+
+ char *type_dir = ARTWORK_DIRECTORY((*artwork_node)->type);
+ TreeInfo *artwork_new = newTreeInfo();
+
+ setTreeInfoToDefaults(artwork_new, (*artwork_node)->type);
+
+ /* set all structure fields according to the token/value pairs */
+ ldi = *artwork_new;
+ for (i = 0; artworkinfo_tokens[i].type != -1; i++)
+ {
+ char *token = getStringCat3WithSeparator(type_dir, identifier,
+ artworkinfo_tokens[i].text,
+ ".");
+ char *value = getHashEntry(level_artwork_info_hash, token);
+
+ printf("::: - '%s' => '%s'\n", token, value);
+
+ setSetupInfo(artworkinfo_tokens, i, value);
+
+ /* check if cache entry for this item is invalid or incomplete */
+ if (value == NULL)
+ {
+ printf("::: - WARNING: cache entry '%s' invalid\n", token);
+
+ cached = FALSE;
+ }
+
+ checked_free(token);
+ }
+ *artwork_new = ldi;
+
+#if 0
+ if (artwork_new->name_sorting == NULL)
+ {
+ printf("::: BOOOM!\n");
+ exit(10);
+ }
+#endif
+
+ if (cached)
+ pushTreeInfo(artwork_node, artwork_new);
+ else
+ freeTreeInfo(artwork_new);
+ }
+
+ if (!cached)
+ LoadArtworkInfoFromArtworkDir(artwork_node, NULL, path,
+ (*artwork_node)->type);
+#else