Drexuxux
e0b5005985
fix(file-ops): stop read_file blocking forever on non-regular files
...
The size probe every read path starts with — `wc -c < path` — opens the
path. On a FIFO with no writer, a socket, or a character device that never
reaches EOF, that read never returns, and read_file/read_file_raw/
read_file_bytes all pass no timeout to _exec. The turn wedges until the
process is killed.
The device blocklist in tools/file_tools.py cannot close this: it matches
literal /dev/* names, so it can only ever cover paths someone thought to
enumerate. A FIFO is a file type and can sit at any path.
Gate the probe behind `[ -f ]`, which stats instead of opening, and report
a path that exists but is not a regular file as such. A missing path keeps
its existing not-found handling.
2026-08-10 00:23:45 -07:00
..
2026-08-02 20:21:59 -07:00
2026-08-09 14:35:02 -07:00
2026-07-28 07:58:16 -07:00
2026-07-17 04:53:38 -07:00
2026-08-08 14:56:38 +05:30
2026-08-02 15:11:37 -07:00
2026-07-28 11:52:44 -07:00
2026-08-07 17:45:06 +05:30
2026-08-02 00:11:50 -07:00
2026-07-27 14:32:05 -07:00
2026-07-29 10:54:04 -07:00
2026-08-02 11:18:41 +05:30
2026-06-21 17:46:38 +05:30
2026-07-29 10:14:11 -07:00
2026-07-26 17:46:55 -07:00
2026-07-29 10:14:00 -07:00
2026-08-06 19:35:47 -06:00
2026-08-09 14:35:02 -07:00
2026-07-29 12:19:37 -07:00
2026-08-08 05:44:18 -07:00
2026-08-08 13:48:00 +05:30
2026-07-02 04:20:43 -07:00
2026-06-25 13:52:06 -07:00
2026-08-09 14:35:02 -07:00
2026-07-20 06:50:31 -07:00
2026-08-07 09:07:42 -07:00
2026-07-22 12:13:01 -05:00
2026-08-02 00:11:50 -07:00
2026-08-02 00:36:03 -07:00
2026-08-01 21:17:51 -04:00
2026-08-10 00:23:45 -07:00
2026-08-09 23:30:02 -07:00
2026-07-31 10:17:55 -04:00
2026-08-06 19:35:47 -06:00
2026-08-02 15:51:43 -07:00
2026-08-02 00:11:50 -07:00
2026-07-29 09:33:48 -07:00
2026-08-08 19:59:12 -04:00
2026-08-08 04:19:38 -07:00
2026-07-06 04:58:42 -07:00
2026-08-06 03:16:26 +05:30
2026-08-08 14:06:48 -07:00
2026-08-08 12:32:23 -07:00
2026-07-17 04:50:47 -07:00
2026-07-28 00:53:16 -05:00
2026-07-29 10:02:03 -07:00
2026-08-03 14:24:37 +05:30
2026-07-18 04:15:13 -07:00
2026-08-08 23:56:46 -07:00
2026-08-08 12:32:23 -07:00
2026-07-29 10:13:50 -07:00
2026-07-28 14:07:21 -07:00
2026-08-06 19:35:47 -06:00
2026-08-02 10:02:33 -07:00
2026-08-01 10:47:20 -07:00
2026-08-04 14:34:24 +05:30
2026-07-29 10:14:00 -07:00
2026-08-10 00:23:41 -07:00
2026-06-25 16:40:27 -05:00
2026-08-06 19:35:47 -06:00
2026-08-08 05:51:33 -07:00
2026-08-06 19:35:47 -06:00
2026-08-06 19:35:47 -06:00
2026-08-08 22:17:38 -05:00
2026-08-08 14:56:38 +05:30
2026-08-07 08:58:25 -07:00
2026-08-08 14:56:38 +05:30
2026-08-02 10:01:16 -07:00
2026-08-03 17:50:58 +05:30
2026-08-08 11:12:27 -07:00
2026-08-08 11:12:27 -07:00
2026-07-31 07:30:30 -07:00
2026-08-03 09:56:36 +05:30
2026-08-09 23:14:18 -07:00
2026-07-30 22:31:42 -07:00
2026-07-28 04:24:50 -05:00
2026-08-08 12:32:23 -07:00
2026-08-02 15:08:35 -07:00
2026-08-09 14:35:02 -07:00
2026-07-01 01:05:28 -07:00
2026-08-02 10:04:48 -07:00
2026-07-22 06:56:53 -07:00
2026-08-02 10:04:48 -07:00
2026-06-30 16:39:41 -07:00
2026-08-03 19:11:30 +05:30
2026-08-07 19:26:12 +05:30
2026-07-28 22:31:40 -07:00
2026-07-28 11:55:01 -07:00
2026-08-08 22:54:20 +05:30
2026-07-28 14:17:45 -07:00
2026-08-08 19:59:12 -04:00
2026-08-08 03:59:39 -07:00
2026-08-07 14:38:02 +05:30
2026-08-08 13:49:24 +05:30
2026-07-29 11:53:39 -07:00
2026-07-04 15:08:49 -07:00
2026-08-08 12:34:46 -07:00
2026-07-23 21:06:47 -07:00
2026-08-08 12:32:23 -07:00
2026-06-29 21:11:58 -07:00