Applied, thanks! [email protected], le sam. 04 oct. 2025 20:40:25 +0100, a ecrit: > From: Diego Nieto Cid <[email protected]> > > ../../boot/userland-boot.c: In function 'boot_script_prompt_task_resume': > ../../boot/userland-boot.c:96:3: warning: ignoring return value of > 'fgets' declared with attribute 'warn_unused_result' [-Wunused-result] > > ../../boot/userland-boot.c: In function 'boot_script_exec_cmd': > ../../boot/userland-boot.c:267:3: warning: ignoring return value of > 'write' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:271:7: warning: ignoring return value of > 'write' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:273:9: warning: ignoring return value of > 'write' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:274:7: warning: ignoring return value of > 'write' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:276:9: warning: ignoring return value of > 'write' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:278:3: warning: ignoring return value of > 'write' declared with attribute 'warn_unused_result' [-Wunused-result] > > ../../boot/userland-boot.c: In function 'load_image': > ../../boot/userland-boot.c:179:7: warning: ignoring return value of > 'write' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:180:7: warning: ignoring return value of > 'write' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:185:3: warning: ignoring return value of > 'read' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:192:7: warning: ignoring return value of > 'read' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:204:13: warning: ignoring return value of > 'read' declared with attribute 'warn_unused_result' [-Wunused-result] > ../../boot/userland-boot.c:237:7: warning: ignoring return value of > 'read' declared with attribute 'warn_unused_result' [-Wunused-result] > --- > boot/userland-boot.c | 53 ++++++++++++++++++++++++++++++++------------ > 1 file changed, 39 insertions(+), 14 deletions(-) > > diff --git a/boot/userland-boot.c b/boot/userland-boot.c > index 09a9dc26..4bbfbbb6 100644 > --- a/boot/userland-boot.c > +++ b/boot/userland-boot.c > @@ -31,6 +31,7 @@ > #include <errno.h> > #include <error.h> > #include <link.h> > +#include <assert-backtrace.h> > > #include "boot_script.h" > #include "private.h" > @@ -94,10 +95,12 @@ boot_script_task_resume (struct cmd *cmd) > int > boot_script_prompt_task_resume (struct cmd *cmd) > { > - char xx[5]; > + int c; > > printf ("Hit return to resume %s...", cmd->path); > - fgets (xx, sizeof xx, stdin); > + do { > + c = fgetc (stdin); > + } while (c != EOF && c != '\n'); > > return boot_script_task_resume (cmd); > } > @@ -168,6 +171,7 @@ static vm_address_t > load_image (task_t t, > char *file) > { > + ssize_t err; > int fd; > union > { > @@ -180,20 +184,25 @@ load_image (task_t t, > > if (fd == -1) > { > - write (2, file, strlen (file)); > - write (2, msg, sizeof msg - 1); > + size_t len = strlen (file); > + err = write (2, file, len); > + assert_backtrace (err == len); > + err = write (2, msg, sizeof msg - 1); > + assert_backtrace (err == (sizeof msg - 1)); > task_terminate (t); > exit (1); > } > > - read (fd, &hdr, sizeof hdr); > + err = read (fd, &hdr, sizeof hdr); > + assert_backtrace (err == (sizeof hdr)); > /* File must have magic ELF number. */ > if (hdr.e.e_ident[0] == 0177 && hdr.e.e_ident[1] == 'E' && > hdr.e.e_ident[2] == 'L' && hdr.e.e_ident[3] == 'F') > { > ElfW(Phdr) phdrs[hdr.e.e_phnum], *ph; > lseek (fd, hdr.e.e_phoff, SEEK_SET); > - read (fd, phdrs, sizeof phdrs); > + err = read (fd, phdrs, sizeof phdrs); > + assert_backtrace (err == (sizeof phdrs)); > for (ph = phdrs; ph < &phdrs[sizeof phdrs/sizeof phdrs[0]]; ++ph) > if (ph->p_type == PT_LOAD) > { > @@ -205,7 +214,8 @@ load_image (task_t t, > PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); > > lseek (fd, ph->p_offset, SEEK_SET); > - read (fd, (void *)(buf + offs), ph->p_filesz); > + err = read (fd, (void *)(buf + offs), ph->p_filesz); > + assert_backtrace (err == (ph->p_filesz)); > > ph->p_memsz = ((ph->p_vaddr + ph->p_memsz + ph->p_align - 1) > & ~(ph->p_align - 1)); > @@ -238,7 +248,8 @@ load_image (task_t t, > rndamount = round_page (amount); > buf = mmap (0, rndamount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); > lseek (fd, sizeof hdr.a - headercruft, SEEK_SET); > - read (fd, buf, amount); > + err = read (fd, buf, amount); > + assert_backtrace (err == amount); > vm_allocate (t, &base, rndamount, 0); > vm_write (t, base, (vm_address_t) buf, rndamount); > if (magic != OMAGIC) > @@ -267,19 +278,33 @@ boot_script_exec_cmd (void *hook, > vm_offset_t stack_start, stack_end; > vm_address_t startpc, str_start; > thread_t thread; > + ssize_t err; > + size_t len; > > - write (2, path, strlen (path)); > + len = strlen (path); > + err = write (2, path, len); > + assert_backtrace (err == len); > for (i = 1; i < argc; ++i) > { > int quote = !! index (argv[i], ' ') || !! index (argv[i], '\t'); > - write (2, " ", 1); > + err = write (2, " ", 1); > + assert_backtrace (err == 1); > if (quote) > - write (2, "\"", 1); > - write (2, argv[i], strlen (argv[i])); > + { > + err = write (2, "\"", 1); > + assert_backtrace (err == 1); > + } > + len = strlen (argv[i]); > + err = write (2, argv[i], len); > + assert_backtrace (err == len); > if (quote) > - write (2, "\"", 1); > + { > + err = write (2, "\"", 1); > + assert_backtrace (err == 1); > + } > } > - write (2, "\r\n", 2); > + err = write (2, "\r\n", 2); > + assert_backtrace (err == 2); > > startpc = load_image (task, path); > arg_len = stringlen + (argc + 2) * sizeof (char *) + sizeof (intptr_t); > -- > 2.51.0 > >
-- Samuel How do I type "for i in *.dvi do xdvi i done" in a GUI? (Discussion in comp.os.linux.misc on the intuitiveness of interfaces.)
