| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* fix matching on unstripped whitespace: caught after upgrading to
upstream dash & chaseccomp wouldn't compile
* add defines to ensure that we computed the filter length correctly
* inline cut_label
* EPERM on sigaction, sigprocmask, gettid, and kill on tgkill (so a
crash doesn't trigger sandbox violations)
* move SIGSYS handler to C and add one for the network
The last change removes the stack trace from SIGSYS, but gives us the
syscall number which is probably more useful. (Indeed, we don't even
have a stack trace in release builds.)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm starting to favor dotfiles over XDG basedirs, but there's no reason
why we couldn't have both. So now the search path is:
0. if config was set through -C, use that
1. $CHA_CONFIG_DIR is set -> $CHA_CONFIG_DIR/config.toml
2. $XDG_CONFIG_HOME is set -> $XDG_CONFIG_HOME/chawan/config.toml
3. ~/.config/chawan/config.toml exists -> use that
4. ~/.chawan/config.toml exists -> use that
Notably, this makes it so the default directory is ~/.chawan *if* you
don't have an existing config.toml file. So in that case known_hosts
will be placed in ~/.chawan/known_hosts. However, configurations with a
config in ~/.config/chawan/config.toml continue to work as expected, as
for those the known_hosts file remains inside ~/.config/chawan/.
Finally, I've added a default user CGI directory to reduce friction in
setting CGI up. (Like known_hosts, it's also relative to whatever config
dir you have.)
|
| |
|
|
|
|
| |
just a special case of position: absolute
|
| |
|
|
|
|
| |
now it loads invidious comments. wow
|
|
|
|
|
| |
* fix externFilterSource ignoring content types other than html
* refactor runProcess to use a custom fork/exec instead of system(3)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sadly, pushCursorPos may not be paired with a popCursorPos in case the
container in question is replaced during the isearch. The easiest way to
reproduce this is:
* start request to a page that redirects
* start isearch
* redirection happens, now the old container is gone
* type something
Then, popCursorPos would try to pop the cursor position from the new
container.
An alternative (and better) solution would be to add a weak ref to the
container as the line edit data. Sadly, we don't have weak refs, and I
don't want to hack them in with finalizers.
(But maybe I should. Hmm.)
|
|
|
|
|
| |
Found this because the 5th largest tech company on Earth cannot bother
itself with trivial matters such as "writing valid CSS".
|
|
|
|
|
|
| |
This isn't exactly clear from the standard's wording, but e.g. *display:
inline must be discarded (because it incorrectly starts with a delim
token).
|
|
|
|
|
|
|
|
|
|
| |
Nested position: absolute was broken, so fix it.
Also, it makes no sense to dispatch inside layoutBlockChild when we
know the expected resolution algorithm upon calling it anyway, so now we
do that statically.
Finally, fix some bugs in position: absolute size resolution.
|
| |
|
|
|
|
|
| |
again, not that useful to put it in a separate module if only term
uses it
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This drops libseccomp as a dependency.
Also, move the capsicum/pledge definitions from bindings to sandbox.nim
because they are only used there.
Interestingly, after integrating chaseccomp I found that the
stbi process would mysteriously crash by a getrandom(2) syscall.
Closer investigation revealed it is only called on the initialization
of glibc's malloc; presumably it had never surfaced before because
libseccomp would always allocate before entering the sandbox.
So I've added getrandom to our filter as well.
|
|
|
|
|
| |
I originally left this at 32-bits because I was on a 32-bit arch, but
that is no longer the case.
|
| |
|
|
|
|
| |
until it's fixed upstream...
|
|
|
|
|
|
|
|
|
|
| |
* consistently use cint instead of FileHandle
- this was another remnant of winapi support; on posix, they are
the same.
* move "blocking" field to PosixStream
* recvFileHandle -> recvFd, sendFileHandle -> sendFd
* merge serversocket into dynstream
* merge auxiliary C functions into dynstream_aux
|
|
|
|
|
|
|
|
|
|
|
| |
nativesockets is a wrapper over posix and winapi, but we don't support
winapi, so we can just fall back to PosixStream instead.
SocketStream remains as a constraint over PosixStream to allow
sendFileHandle/recvFileHandle.
As a nice side effect, we can drop some allowed syscalls from the
seccomp filter.
|
|
|
|
|
| |
On a second thought, no timeouts for name resolution is fine - and even
if it weren't, it's better implemented in the loader.
|
|
|
|
|
| |
As per standard, float "only applies to elements that [...] are not
absolutely positioned."
|
|
|
|
|
|
|
|
|
|
|
|
| |
Called -cha-reverse.
Mostly to solve the problem that code tags are indistinguishable from
regular text - on a graphical browser this is normally served by
monospace font, but we always use monospace...
So now the default ua.css adds reverse video to code and xmp. pre
remains as it was, because it means "preformatted", not "monospaced".
Also, it would mess with our whatever-to-HTML converter output.
|
|
|
|
|
|
| |
also fixes a bug in the previous commit where whitespacenum would be
reset on absolute positioning + missing absolute margin handling without
top/left/etc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes a) resolution of `position: absolute' percentage sizes with
an indefinite containing block size (wait what?), and b) positioning of
`position: absolute' inner block boxes inside inline boxes.
a) is possible because `position: absolute' does not affect its
parent's layout. I would love to have a long talk with whoever
thought that specifying it like this is a good idea. You know, just
because you can... anyways, shockingly enough, this was still the more
straightforward part.
b) forced me to change the box tree to allow blocks inside inlines,
which is ugly, but no big deal. Two questions then remained:
1. *where* to put such boxes, and
2. *how large* these boxes should be; this is hardly obvious since
an inline box does not have an unambiguous width or height.
Of course the CSS standard, never too eager to fulfill my basic
expectations, says nothing about this (other than "it's not defined").
So I first tried to reverse engineer what Gecko does, and after hours of
pain and suffering I realized... that it's broken LOL
https://bugzilla.mozilla.org/show_bug.cgi?id=489100
Therefore I ended up (partially) copying Blink behavior, which, while
equally nonsensical as Gecko (and of course divergent), at least does
not change after a partial layout. Thank you LayoutNG for saving my
sanity.
As for the practical benefits: this fixes the bug where Invidious
[video] tags wouldn't show up. Hey, it's something!
Still left to-do: `position: absolute' for `display: inline' boxes.
|
|
|
|
|
|
|
|
|
| |
* use more PosixStream (because it has double-close checking)
* factor out some common mailcap operations
* move console from client to pager
* fix case-insensitive mime type matching
* replace convoluted fdin/fdout comparison logic (that only accidentally
worked) with a boolean flag
|
|
|
|
|
| |
* remove unused DateTime toml type
* add parseIntP for pointer-size int parsing
|
| |
|
|
|
|
|
|
| |
* accept HTTP status line
* reject status codes with >3 length
* reduce pointless copying
|
|
|
|
| |
rare, but possible
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This finally makes it possible to use socks5 for Gemini.
Also slightly refactored the config, to make it easier to pass on the
config dir.
By the way, the known_hosts file is now stored in the config dir too.
The adapter will try to move it to there from the old location.
|
|
|
|
| |
it's effectively a dupe, except html wouldn't work in XML
|
| |
|
|
|
|
| |
normal construction is enough (and it wasn't really used anyway)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Substitute tabs with one of eight PUA characters based on their width,
and convert them back in the pager:
* TUI mode always prints spaces, but now handles tabs appropriately on
cursor movement
* dump mode tries to preserve hard tabs, but uses soft tabs when that is
not possible (e.g. tabs after a margin, tab with background color,
etc)
* selection mode always outputs hard tabs.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
replaceBackup was not being cleared, so the next gotoURL with a replace
pointing to such buffers wouldn't work.
|
| |
|
|
|
|
| |
the length check is not needed, we do that outside the loop already
|
|
|
|
|
|
| |
* split out CSSColor from CellColor; now CellColor is just 4 bytes
(which helps reduce FormatCell size)
* unify color function naming (still not perfect)
|
| |
|
| |
|