-static void got_resolved_file(void *v, const char *track) {
- struct callbackdata *cbd = v;
- struct choosenode *cn = cbd->u.choosenode, *file_cn;
-
- D(("resolved %s %s %d left", cn->path, cnflags(cn), cn->pending - 1));
- /* TODO as below */
- file_cn = newnode(cn, track,
- trackname_transform("track", track, "display"),
- trackname_transform("track", track, "sort"),
- 0/*flags*/, 0/*fill*/);
- --gets_in_flight;
- /* Only bother updating when we've got the lot */
- if(--cn->pending == 0) {
- cn->flags &= ~CN_RESOLVING_FILES;
- updated_node(cn, gets_in_flight == 0, "got_resolved_file");
- if(!(cn->flags & CN_GETTING_ANY))
- filled(cn);
+static void got_resolved_file(void *v, const char *error, const char *track) {
+ struct choosenode *const cn = v, *file_cn;
+
+ if(error) {
+ popup_protocol_error(0, error);
+ } else {
+ D(("resolved %s %s %d left", cn->path, cnflags(cn), cn->pending - 1));
+ /* TODO as below */
+ file_cn = newnode(cn, track,
+ trackname_transform("track", track, "display"),
+ trackname_transform("track", track, "sort"),
+ 0/*flags*/, 0/*fill*/);
+ --gets_in_flight;
+ /* Only bother updating when we've got the lot */
+ if(--cn->pending == 0) {
+ cn->flags &= ~CN_RESOLVING_FILES;
+ updated_node(cn, gets_in_flight == 0, "got_resolved_file");
+ if(!(cn->flags & CN_GETTING_ANY))
+ filled(cn);
+ }