Repository navigation
Description
Hi, first of all thanks for your work in this extremely usefull written in C for speed and promising tool.
I've been testing and using it on my x64 Arch Linux for some months. Very happy.
It's intended to be used with terminal RSS readers, to make the articles more readable on web browsers such as lynx.
I use it with w3m. Feel free to update the README as well.
W3m is a very underrated (and badly documented) cli browser. But with incredible customizing options. It works amazingly fast with rdrview.
You can use it for a one shot operation like this:
$ rdrview -H https://www.bbc.com/news/world-asia-china-55784231 | w3m -T text/html
or
$ rdrview -H https://www.bbc.com/news/world-asia-china-55784231 | w3m -T text/html -dump
Or for interactive browsing.
You can for example add these lines to the config file, ~/.w3m/keymap
keymap \\\r COMMAND "SHELL 'rdrview -H $W3M_URL > /tmp/rdrview.html' ; LOAD /tmp/rdrview.html"
or
keymap \\\r COMMAND "SHELL 'clear; echo \"parsing page with rdrview\" ; echo ; rdrview -H $W3M_URL > /tmp/rdrview.html' ; LOAD /tmp/rdrview.html"
and then use "\r" when your browsing a page inside w3m.
My issue is when I try to run in on Arm, also Arch Linux, armv7.
I tried it on both a chromebook running:
Linux alarmsung 5.10.10-1-ARCH #1 SMP PREEMPT Sat Jan 23 23:26:35 UTC 2021 armv7l GNU/Linux
and a Raspberry Pi 2 running:
Linux alarmpi 5.4.83-4-ARCH #1 SMP PREEMPT Wed Jan 20 14:06:49 UTC 2021 armv7l GNU/Linux
I install rdrview by hand. I do not use the Arch User AUR package like this other user, #13. This AUR arch linux is not well maintained and is marked only for x64 not Arm, https://aur.archlinux.org/packages/rdrview-git
What I do instead is this.
I do git clone .. and then run make.
On both these ARM systems I have the exact same needed dependencies installed
They are the same as in my working x64 system, and they are official distro packages:
local/libseccomp 2.5.1-2
Enhanced seccomp library
local/libxml2 2.9.10-8
XML parsing library, version 2
local/libcurl-gnutls 7.74.0-1
An URL retrieval library (linked against gnutls)
Compilation with make runs without a problem. But running it, whatever the options choosen always gets me a message:
rdrview: Operation not permitted
If I use the flag "--disable-sandbox" then it works.
I'm not a developer, and have zero understanding of C programing, syscalls or security. The only thing I could find that brought me here was the similar issue by the other user.
#10 (comment)
...I am on a musl based system....
... have to use 'disable-sandbox' to get a webpage rendered....
Additional info that might be usefull:
- Some libs
Architecture : armv7h
glibc, Version : 2.32-2
gcc, Version : 10.2.0-1
- strace
$ strace rdrview -M https://www.bbc.com/news/world-asia-china-55784231 2>> error_log.txt
- The compiled binary on arm:
$ file ./rdrview
./rdrview: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=b7438379398f311b185c1ba3a7ba9019f245321d, for GNU/Linux 3.2.0, not stripped
Activity
[-]"Operation not permitted" on ARM[/-][+]"Operation not permitted": on ARM it only runs with "disable-sandbox"[/+]eafer commentedon Jan 25, 2021
m040601 commentedon Jan 26, 2021
pulled the latest commits, compiled a fresh one, and here it is:
Allow 64-bit version of fstat() syscall on Linux
eafer commentedon Jan 26, 2021
m040601 commentedon Jan 27, 2021
Still failing.
$ git show origin/master --no-patch
$ strace -f rdrview -H 'https://github.com/eafer/rdrview' 2>&1 >/dev/null | grep EPERM
Allow the mmap2() syscall on Linux
eafer commentedon Jan 27, 2021
m040601 commentedon Jan 28, 2021
Yes it does. Tested on both Raspberry Pi and Chromebook (armv7).
I dont have a Raspberry Pi 4 for testing armv8/aarch64.
parkerlreed commentedon Jan 29, 2021
I can confirm working on AArch64 on another rplatform

parkerlreed commentedon Jan 29, 2021
Although I can't seem to use it with a browser
Gist of strace (See next message)
https://gist.github.com/1bf87765d716ce60b011dd1a633132cfparkerlreed commentedon Jan 29, 2021
Forgot to do the follow-forks https://gist.github.com/2948087883f55cccd44164fb9745ffa0
Allow the dup3() syscall on Linux
eafer commentedon Jan 29, 2021
parkerlreed commentedon Jan 29, 2021
Works great! Thanks.
Since I forgot to mention: That's Arch Linux ARM (aarch64)
eafer commentedon Feb 13, 2021
Map the input file before setting up the sandbox
eafer commentedon Feb 14, 2021
yuuyins commentedon Aug 17, 2021
I'm facing the same issue (or at least seems like the same). But I'm on x86_64-linux (NixOS). only --disable-sandbox works
eafer commentedon Aug 20, 2021
Can you run
strace -f rdrview -H 'https://github.com/eafer/rdrview' 2>&1 >/dev/null | grep EPERMand send me the output?
yuuyins commentedon Aug 20, 2021
@eafer
PS: I'm using 7be01fb
eafer commentedon Aug 20, 2021
In that case, I think this issue has already been fixed. Try the current head.
yuuyins commentedon Aug 21, 2021
@eafer tested with rev 444ce3d and the issue is no longer. I previously hadn't checked if Nix package was up to date, sorry about this.
eafer commentedon Aug 23, 2021