···621621 /* gets the directory's name and put it into tc.currdir */
622622 filename = strrchr(path+1,'/');
623623 size_t endpos = filename - path;
624624- printf("%s | %s | %d\n", filename, path, endpos);
625624 if (filename && endpos < MAX_PATH - 1)
626625 {
627626 strmemccpy(tc.currdir, path, endpos + 1);
···629628 }
630629 else
631630 {
632632- strcpy(tc.currdir, "/");
633633- filename = path+1;
631631+ if (strlen(tc.currdir) <= 1)
632632+ {
633633+ strcpy(tc.currdir, "/");
634634+ }
635635+ filename = path+1;
634636 }
635637 }
636638 else /* path and filename came in separate ensure an ending '/' */
···956958#endif
957959958960 default:
959959- // return GO_TO_ROOT;
961961+ if (tc.browse->disable_gui == true) {
962962+ return GO_TO_ROOT;
963963+ }
960964 if (default_event_handler(button) == SYS_USB_CONNECTED)
961965 {
962966 if(*tc.dirfilter > NUM_FILTER_MODES)
963967 /* leave sub-browsers after usb, doing otherwise
964968 might be confusing to the user */
965965- exit_func = true;
969969+ exit_func = true;
966970 else
967971 reload_dir = true;
968972 }
···11331137 .dirfilter = SHOW_SUPPORTED,
11341138 .icon = Icon_NOICON,
11351139 .root = path,
11401140+ .disable_gui = true,
11361141 };
11371142 strcpy(tc.currdir, path);
11381143
+1
apps/tree.h
···7171 const char *selected; /* name of selected file in the root */
7272 char *buf; /* buffer to store selected file */
7373 size_t bufsize; /* size of the buffer */
7474+ bool disable_gui; /* disable gui for this browse */
7475};
75767677/* browser context for file or db */
+21
crates/server/src/lib.rs
···232232 return;
233233 }
234234235235+ if path.starts_with("/tree_entries?") {
236236+ let params: Vec<_> = path.split('?').collect();
237237+ let params: Vec<_> = params[1].split('&').collect();
238238+ let q = params[0].split('=').collect::<Vec<_>>()[1];
239239+ rb::browse::rockbox_browse_at(q);
240240+ let mut entries = vec![];
241241+ let context = rb::browse::tree_get_context();
242242+243243+ for i in 0..context.filesindir {
244244+ let entry = rb::browse::tree_get_entry_at(i);
245245+ entries.push(entry);
246246+ }
247247+248248+ let response = format!(
249249+ "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{}",
250250+ serde_json::to_string(&entries).unwrap()
251251+ );
252252+ stream.write_all(response.as_bytes()).unwrap();
253253+ return;
254254+ }
255255+235256 let response = "HTTP/1.1 404 Not Found\r\n\r\n";
236257 stream.write_all(response.as_bytes()).unwrap();
237258 return;