[openwrt/openwrt] ucode: remove the fs.read_nb patch

LEDE Commits lede-commits at lists.infradead.org
Tue Jan 6 11:10:01 PST 2026


nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e06c4125fddae7d1810772b2aa6b40f2267c2cea

commit e06c4125fddae7d1810772b2aa6b40f2267c2cea
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Tue Jan 6 19:09:01 2026 +0000

    ucode: remove the fs.read_nb patch
    
    It is obsolete since the io module was added
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 ...add-read_nb-method-for-non-blocking-reads.patch | 137 ---------------------
 1 file changed, 137 deletions(-)

diff --git a/package/utils/ucode/patches/121-fs-add-read_nb-method-for-non-blocking-reads.patch b/package/utils/ucode/patches/121-fs-add-read_nb-method-for-non-blocking-reads.patch
deleted file mode 100644
index 483a631528..0000000000
--- a/package/utils/ucode/patches/121-fs-add-read_nb-method-for-non-blocking-reads.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Wed, 8 Oct 2025 23:03:05 +0200
-Subject: [PATCH] fs: add read_nb() method for non-blocking reads
-
-Add file handle method for reading from non-blocking file descriptors.
-Designed for use with uloop, bypasses stdio buffering, handles EAGAIN/EINTR.
-
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/lib/fs.c
-+++ b/lib/fs.c
-@@ -675,6 +675,116 @@ uc_fs_read(uc_vm_t *vm, size_t nargs)
- }
- 
- /**
-+ * Reads data from a non-blocking file descriptor.
-+ *
-+ * This function is designed for use with uloop file descriptor monitoring.
-+ * When called from within a uloop handle callback (after ULOOP_READ event),
-+ * it reads available data from the non-blocking file descriptor.
-+ *
-+ * Performs a single read() operation directly on the file descriptor,
-+ * bypassing stdio buffering. Properly handles EAGAIN and EINTR errors.
-+ *
-+ * Returns a string containing the data read, up to the specified limit.
-+ *
-+ * Returns an empty string if no data is available (EAGAIN/EWOULDBLOCK).
-+ *
-+ * Returns `null` if an error occurred.
-+ *
-+ * @function module:fs.file#read_nb
-+ *
-+ * @param {number} [limit=4096]
-+ * Maximum number of bytes to read. Defaults to 4096 if not specified.
-+ *
-+ * @returns {?string}
-+ *
-+ * @example
-+ * import * as uloop from 'uloop';
-+ * import { fdopen } from 'fs';
-+ *
-+ * uloop.init();
-+ *
-+ * let sock = connect_socket(...);
-+ * let fp = fdopen(sock, "r");
-+ *
-+ * uloop.handle(fp, (events) => {
-+ *   if (events & uloop.ULOOP_READ) {
-+ *     let data = fp.read_nb();
-+ *     if (data === null) {
-+ *       print("Error reading\n");
-+ *     } else if (length(data) > 0) {
-+ *       print("Received: ", data, "\n");
-+ *     }
-+ *   }
-+ * }, uloop.ULOOP_READ);
-+ *
-+ * uloop.run();
-+ */
-+static uc_value_t *
-+uc_fs_read_nb(uc_vm_t *vm, size_t nargs)
-+{
-+	uc_value_t *limit_val = uc_fn_arg(0);
-+	FILE **fp = uc_fn_this("fs.file");
-+	char *buf = NULL;
-+	ssize_t n_read;
-+	uc_value_t *rv;
-+	size_t limit = 4096;
-+	int fd;
-+
-+	if (!fp || !*fp)
-+		err_return(EBADF);
-+
-+	if (limit_val) {
-+		int64_t limit_arg;
-+
-+		if (ucv_type(limit_val) != UC_INTEGER)
-+			err_return(EINVAL);
-+
-+		limit_arg = ucv_int64_get(limit_val);
-+
-+		if (limit_arg <= 0)
-+			return NULL;
-+
-+		limit = (size_t)limit_arg;
-+	}
-+
-+	fd = fileno(*fp);
-+
-+	if (fd == -1)
-+		err_return(errno);
-+
-+	buf = malloc(limit);
-+
-+	if (!buf)
-+		err_return(ENOMEM);
-+
-+	while (true) {
-+		n_read = read(fd, buf, limit);
-+
-+		if (n_read >= 0)
-+			break;
-+
-+		if (errno == EINTR)
-+			continue;
-+
-+		if (errno == EAGAIN || errno == EWOULDBLOCK) {
-+			free(buf);
-+			return ucv_string_new_length("", 0);
-+		}
-+
-+		free(buf);
-+		err_return(errno);
-+	}
-+
-+	if (!n_read)
-+		return NULL;
-+
-+	rv = ucv_string_new_length(buf, (size_t)n_read);
-+	free(buf);
-+
-+	return rv;
-+}
-+
-+/**
-  * Writes a chunk of data to the file handle.
-  *
-  * In case the given data is not a string, it is converted to a string before
-@@ -2991,6 +3101,7 @@ static const uc_function_list_t proc_fns
- 
- static const uc_function_list_t file_fns[] = {
- 	{ "read",		uc_fs_read },
-+	{ "read_nb",	uc_fs_read_nb },
- 	{ "write",		uc_fs_write },
- 	{ "seek",		uc_fs_seek },
- 	{ "tell",		uc_fs_tell },




More information about the lede-commits mailing list