Previous day | Jump to hour: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Next day

Seconds: Show Hide | Joins: Show Hide | View raw
Font: Serif Sans-Serif Monospace | Size: Small Medium Large

Click in the nick column to highlight everything a person has said.
The Logo icon identifies that the person is a core developer (has commit access).

#rockbox log for 2024-06-25

00:08:49_bilgus_So our directory copy, move, remove code has unbounded recursion anyone ever have issues deleting really deep directories?
00:09:43_bilgus_next question I guess is do we limit it? just stop dead at say 8 dirs deep
00:10:50_bilgus_or I could add a code path to do it piecemeal without recursion (slowly)
00:14:27 Join hactar|ant [0] (
00:25:00_bilgus_I'm leaning towards a hard limit and a message like 'too many subdirectories'
01:08:36 Quit decky_e (Read error: Connection reset by peer)
01:08:46sporkwhy is it a problem ?
01:09:02 Join decky_e [0] (~decky_@
01:10:14sporkand will you get the message before the action or when it arrived at the hard limit ?
01:11:00 Quit davisr (Quit: yeehaw)
01:29:38***Saving seen data "./dancer.seen"
01:44:48_bilgus_it would be when it arrived then bubble back up the call stack
01:45:38_bilgus_its not a problem till it is and then silent stack corruption
01:46:21jssfrI do not like silent stack corruption.
01:46:23_bilgus_to get the message ahead we'd just have to walk the thing without doing the actions which should be pretty fast
01:46:26jssfr(I don't like _loud_ stack corruption either)
01:46:35_bilgus_I prefer LOUD
01:47:06jssfryeah, loud is better than silent, unless by loud you mean "stack corrupted, accidentally turn ADC all the way up to 11 and play stack contents through that"
01:47:13sporkif you allow it to start and do thinks up to a certain limit, you have no idea what has been done
01:47:24_bilgus_nasal demons?
01:47:43sporkif you have a limit, you should check it before anything actually gets changed
01:48:07jssfrthough a pre-flight may be not that fast if you are on one of the spinning rust targets and/or your directory structure is flat and wide instead of deep
01:48:35_bilgus_listing dirs with no operations is v fast
01:48:53sporkif your limit is 8 and you start deleting recursively up to level 7, what do you end up with at 8
01:49:33_bilgus_well being that it is going to hit directories first you just get deleted files in levle 7
01:50:06_bilgus_everything else stays but I'd be more concerned with move operations but we don't delete till success
01:50:53jssfrisn't move just rewriting some pointers in the FS no matter how deep the structure?
01:51:01jssfr*some pointers on the top level of the structure in the FS
01:51:14_bilgus_I also could back out save the level and start over again there but it seems less code to just ask the user to delete some subdirs
01:51:22sporksame for move indeed
01:51:44sporkmy point was to check/warn/error before doing anything if the limit is passed
01:51:56sporkotherwise there are chances for a mess
01:52:10_bilgus_I like that idea it'll cost some time but save heartache
01:52:54_bilgus_unfortunately our code copies the whole shebang now the dircache could do that but we have targets w/o it
01:57:09_bilgus_Oh you can still cancel during the dry run and that gives us a way to show a progress bar too
02:29:25 Quit othello7 (Ping timeout: 272 seconds)
02:36:26 Join othello7 [0] (
03:04:49 Quit othello7 (Ping timeout: 256 seconds)
03:29:42***Saving seen data "./dancer.seen"
05:29:46***No seen item changed, no save performed.
06:11:23 Quit olspookishmagus (Ping timeout: 260 seconds)
06:23:07 Join olspookishmagus [0] (
06:40:33 Quit Jinx (Ping timeout: 268 seconds)
07:11:27 Quit hook54321 (Ping timeout: 256 seconds)
07:11:56 Quit yang2 (Ping timeout: 256 seconds)
07:13:09 Quit Strife89 (Ping timeout: 272 seconds)
07:13:10 Quit _alice (Ping timeout: 256 seconds)
07:22:44 Join Strife89 [0] (
07:23:37 Join yang2 [0] (
07:24:32 Join _alice [0] (
07:24:45 Join hook54321 [0] (sid149355@user/hook54321)
07:24:56 Quit Trzyzet (Quit:
07:29:50***Saving seen data "./dancer.seen"
07:34:34 Join Trzyzet [0] (
09:04:48 Join othello7 [0] (
09:29:53***No seen item changed, no save performed.
11:01:24 Quit othello7 (Quit: othello7)
11:01:39 Join othello7 [0] (
11:29:57***Saving seen data "./dancer.seen"
11:30:49 Quit othello7 (Quit: othello7)
12:11:08 Join davisr [0] (~davisr@fsf/emeritus/davisr)
12:42:23 Join lebellium [0] (
13:30:00***Saving seen data "./dancer.seen"
15:24:45_bilgus_Oh actually the main driver for move having to do a deep copy is when you go across volumes
15:28:19speachycan't help but wonder if punting to the host is a better option there
15:30:05***No seen item changed, no save performed.
15:45:39_bilgus_not sure what you mean brb
15:45:43 Quit _bilgus_ (Quit: Leaving)
15:46:15speachyie plug the device into USB
15:49:20 Join _bilgus [0] (
15:52:16_bilguswell ultimately that would solve the issue but I see no reason to remove the path since you still need it to make copies
15:53:32_bilgustruly some of this could probably be moved to a plugin
15:54:17speachyisn't there some max path length/depth under "real" operating systems anyway?
15:55:45_bilgusI assume maxpath and some math would give the upper limit
15:56:10_bilgussay approx 128?
15:57:04_bilguswhat worst case single char dirs for a-z A-Z 0-9 plus the slashes
15:57:16speachyI want to say the max path is 512 bytes on windows. and min filename len is 2 bytes
15:57:33speachyit's potentially more for unicode of course
15:58:00_bilgusso probably 250+ for windows
15:58:15speachy(thinking purely stack depth for recursion)
15:58:41_bilgusI haven't tested on my device just how deep it goes before crashing but I also don't have any way to watch it yet either
15:58:49_bilguswell till I finish
16:02:25_bilgusIt probably doesn't help that this code runs in the context of the file browser either as far as how much stack is actually available
16:04:36_bilgusATM I have it setup as only doing a dry run counting objects, checking pathname buffer len, checking recursion depth, then the main loop can show a progressbar, knows the path fits, and doesn't have to check depth
17:17:52 Join Moriar [0] (
17:25:54 Quit lebellium (Quit: Leaving)
17:30:08***Saving seen data "./dancer.seen"
17:51:20 Join othello7 [0] (
18:09:57 Join winsim-buildbot [0] (~buildbot@
18:09:57winsim-buildbotNew Windows simulator build round started. Revision 4691152f92, Add SysCfg viewer for iPod 6G in the debug menu by Vencislav Atanasov
18:28:34 Join Demosthe1ex [0] (~Demosthen@user/demosthenex)
18:31:15 Quit Demosthenex (Ping timeout: 268 seconds)
19:17:30 Quit davisr (Quit: yeehaw)
19:22:17MarcAndersenHmm I see that after the last commit about the ipod 6g the simulator didn't build.
19:24:09winsim-buildbotBuild round completed in 4464 seconds.
19:24:09 Quit winsim-buildbot (Read error: Connection reset by peer)
19:27:31MarcAndersenI mean only the ipod 6g sim of course, the others are uploaded.
19:30:10***Saving seen data "./dancer.seen"
19:44:04 Join massiveH [0] (~massiveH@2600:4040:a982:c800:1187:d672:6b12:a47a)
20:43:47 Quit Moriar (Ping timeout: 264 seconds)
21:30:13***Saving seen data "./dancer.seen"
22:06:09 Quit aaabbb (Read error: Connection reset by peer)
22:06:44 Join aaabbb [0] (~aaabbb@user/aaabbb)
22:09:47 Quit Bubblegumdrop (Quit: ZNC 1.8.2+deb4+b2 -
22:15:27 Join Bubblegumdrop [0] (~znc@user/Bubblegumdrop)
23:24:27 Quit massiveH (Quit: Leaving)
23:30:15***Saving seen data "./dancer.seen"

Previous day | Next day