tats / w3m

Debian's w3m: WWW browsable pager
https://tracker.debian.org/pkg/w3m
Other
819 stars 91 forks source link

NuttX port #100

Open gregory-nutt opened 5 years ago

gregory-nutt commented 5 years ago

Hi,

I am the author of author of NuttX. NuttX is a (mostly) POSIX compliant RTOS and so possible a candidate for a port of w3m. This is something I am considering. Is this something you would support? I would be willing to contribute the effort to do the port.

To be feasible, the port would have to be very lightweight to run in the constrained resources of an embedded system. Do you think that could be possible by selectively disabling features?

Most output is provided via a serial console but graphic terminals and framebuffers are also available on NuttX. Mouse and keyboard input are also rare on embedded devices, but would be necessary and are supported.

tats commented 5 years ago

Patches welcome, I'll consider to merge.

gregory-nutt commented 4 years ago

Sorry it has been so long since I have commented. I did make some progress but I did not finish the port because other issues. Also, I did not want to make any changes that where not proper.

Attached are all of the patches that I currently have to w3m: w3m-nuttx-patches.zip

There is a complete list of outstanding (unpatched) issues here: https://bitbucket.org/patacongo/w3mbuild/src/f2b23f95c0112f57b03db2c18e3b1d867378b862/README.txt#lines-77 Some of these have been fixed with changes to NuttX, others remain open. Of the open issues, some are due to missing functionality in NuttX and others will require additional patches to w3m.

Here is a list that I think are issues on the w3m side:

  1. According to OpenGroup.org, the NuttX version of the prototype is correct:

    void bcopy(const void , void , int); vs static inline void bcopy(FAR const void b1, FAR void b2, size_t len)

  2. According to OpenGroup.org, the NuttX version of the prototype is correct:

    void bzero(void , int); vs static inline void bzero(FAR void s, size_t len)

  3. These setjmp.h functions are unique to GLIBC/Linux. They are non-standard and would not be supported in any other context. These need to be (conditionally) replaced with the more standard, embedded friendly jmpbuf, setjmp, and longjmp:

    unknown type name 'sigjmp_buf' implicit declaration of function 'sigsetjmp' implicit declaration of function 'siglongjmp'

Others are missing logic in NuttX.

gregory-nutt commented 4 years ago

Oops, I didn't really mean to to close this.