Commit Graph

31402 Commits

Author SHA1 Message Date
Sam Atkins
8461f8c1cd Help: Add support for launching with a section and page, like man
I found it strange that `man` and `Help` did not accept the same command
line arguments since they are so similar. So... now they do. :^)

This means you can now open for example the `tar` man page in Help with
`Help tar`, or `Help 1 tar` if you want to disambiguate between pages in
different sections.

If the result is not found, it falls back to the previous behavior,
treating the input as a search query.

Initially I had this written as two optional positional arguments, but
when told to parse `[optional int] [optional string]`, and then given a
string input, ArgsParser forwards it to the [optional int], which then
fails to parse. Ideally it would pass it to the second, [optional
string] arg instead, but that looks like a fairly big change to make to
ArgsParser's internals, and risk breaking things. Maybe this ugly hack
will be an incentive to fix it. :^)
2021-12-20 10:58:41 -08:00
Sam Atkins
4c91f736c7 Help: Move update_actions() code into open_page()
These two lambdas are always called together, in this order, so why not
make them one instead?

Also converted a couple of west-consts to east-const.
2021-12-20 10:58:41 -08:00
Sam Atkins
4bf2ef2a4c Help: Always show the welcome page on launch if nothing else is there
Previously, launching Help with a query like `Help tar` left the page
blank, which looks like something has gone wrong. Instead, let's show
the usual welcome page.
2021-12-20 10:58:41 -08:00
RasmusNylander
3b71e7b5ee Base: Add Danish keymap
Based on what characters Windows 10 wrote when a key was pressed.

This makes it a lot nicer to use a Danish keyboard :^)
2021-12-20 10:49:27 -08:00
Junior Rantila
5238308d6f Magnifier: Add timeline for easy checking of animations
This patch adds a 512 frame timeline to Magnifier and the ability to
step through it with the arrow keys.

This makes it easier to check Serenity animations frame by frame for
correctness etc.
2021-12-20 10:48:03 -08:00
Ben Reeves
58ec2f688b Ports/ncurses: Check for proper tic version during install
MacOS ships with an out of date ncurses that can't properly generate
terminfo from the newer source code. This change checks for a valid
`tic` executable of the proper version, first in PATH and then in
the Homebrew cellar if brew is installed. Otherwise it aborts
installation.

See comment in the code as well as the following for details:
https://github.com/termux/termux-packages/issues/4487#issuecomment-626277493
https://lists.gnu.org/archive/html/bug-ncurses/2019-07/msg00020.html.
2021-12-20 10:45:52 -08:00
Rafał Babiarz
196bd11743 Ports: Add libssh2 port 2021-12-20 10:43:47 -08:00
PerikiyoXD
bdc028da1c cp: Print proper error message with strerror
When cp fails, now it prints an error string (strerror)
instead of an error code.
2021-12-20 10:40:02 -08:00
Junior Rantila
105f741131 Piano: Make Key_Space shortcut to toggle playback 2021-12-20 10:39:37 -08:00
Lady Gegga
bb7f32376c Base: Add some Old South Arabian characters to font Katica Regular 10
10A60-10A7F https://www.unicode.org/charts/PDF/U10A60.pdf
2021-12-20 10:39:09 -08:00
Jelle Raaijmakers
4e3ed16527 LibGL: Only pass bound texture units to rasterizer
Before, `SoftwareRasterizer` was iterating over all 32 possible texture
units for each fragment and checking each if they're bound to a texture.

After this change, an intrusive list containing only texture units with
bound textures is passed to the rasterizer. In GLQuake, this results in
a performance improvement of ~30% (from 12 to 16 FPS in the first demo)
on my machine.
2021-12-20 10:36:53 -08:00
Jelle Raaijmakers
f201567153 LibGL: Use 8x8 block size in SoftwareRasterizer
This smaller block size allows us to use an `u8` for the pixel mask
during triangle rasterization. These changes result in better FPS in
3DFileViewer, which periodically shoots up to 250-300 FPS on my
machine. Before, the peaks were somewhere in the range of 160-170 FPS.
2021-12-20 10:36:53 -08:00
Liav A
5a649d0fd5 Kernel: Return EINVAL when specifying -1 for setuid and similar syscalls
For setreuid and setresuid syscalls, -1 means to set the current
uid/euid/gid/egid value, to be more convenient for programming.
However, for other syscalls where we pass only one argument, there's no
justification to specify -1.

This behavior is identical to how Linux handles the value -1, and is
influenced by the fact that the manual pages for the group of one
argument syscalls that handle ID operations is ambiguous about this
topic.
2021-12-20 11:32:16 +01:00
Rok Povsic
a3c732b8ae Profiler: Display tooltip when hovering over flamegraph bars 2021-12-20 11:31:47 +01:00
Rok Povsic
d3a80b1a6e Profiler: Extract the bar label String into a private method 2021-12-20 11:31:47 +01:00
Stephan Unverwerth
47a4737110 LibGL: Fix texture sampling texel coordinate calculation
Previously we multiplied the interpolated texture coordinates by
width - 1 and height - 1 instead of width and height which resulted in
some wrongly mapped textures, especially visible in the glquake light
maps.

This also corrects the wrap mode being wrongly swapped for s/t
coordinates.

Since we do not have texture borders implemented yet we always use
GL_CLAMP_TO_EDGE for all clamping wrap modes for the time being.
2021-12-19 18:39:26 -08:00
Junior Rantila
3d63e688f7 watch: Port to LibMain 2021-12-19 18:26:57 -08:00
Junior Rantila
4178479ee5 LibCore: Add wrapper for signal() 2021-12-19 18:26:57 -08:00
Tim Schumacher
8eca395e4c LibC: Implement wcsdup 2021-12-19 18:22:41 -08:00
Michel Hermier
7a44c11378 LibTest: Add EXPECT_NO_CRASH 2021-12-19 14:22:06 -08:00
Michel Hermier
4c6e826c05 LibTest: Add EXPECT_CRASH_WITH_SIGNAL 2021-12-19 14:22:06 -08:00
Michel Hermier
b1b94692e6 LibTest: Handle test reporting in the a unique path 2021-12-19 14:22:06 -08:00
Michel Hermier
2f8fac3528 LibTest: Change Crash forked process communication
Now it returns `Failure` value via `exit`, and the caller is
responsible of reporting errors to the user.
2021-12-19 14:22:06 -08:00
Michel Hermier
c8cabd433a LibTest: Handle Crash printing in a private method 2021-12-19 14:22:06 -08:00
Michel Hermier
c22c1900c0 Tests: Add test for raise 2021-12-19 14:22:06 -08:00
Michel Hermier
0ec35d6d81 Tests: Add test for assert 2021-12-19 14:22:06 -08:00
Michel Hermier
181f759dc9 Tests: Add test for abort 2021-12-19 14:22:06 -08:00
Jonta
18dab0384d SystemServer: Fixed grammatical error "a charm" 2021-12-19 13:43:34 -08:00
Liav A
a875083739 Base: Add shutdown(1) manpage 2021-12-19 11:13:58 -08:00
Liav A
f94dacf90e Base: Add reboot(1) manpage 2021-12-19 11:13:58 -08:00
networkException
121bcc267d Base: Add rm(1) manpage 2021-12-19 11:03:29 -08:00
Andreas Kling
e0521cfb9d Kernel: Stop ProcFS stack walk on bogus userspace->kernel traversal
Unsurprisingly, the /proc/PID/stacks/TID stack walk had the same
arbitrary memory read problem as the perf event stack walk.

It would be nice if the kernel had a single stack walk implementation,
but that's outside the scope of this commit.
2021-12-19 18:18:38 +01:00
Andreas Kling
bc518e39bf Kernel: Make perfcore files owned by UID=0, GID=0
Since perfcore files can be generated during process finalization,
we can't just allow them to contain sensitive kernel information
if they're gonna be owned by the process's own UID+GID.

So instead, perfcores are now owned by 0:0. This is not the most
ergonomic solution, but I'm not sure what we could do to make it nicer.
We'll have to think more about that. In the meantime, this patches up
a kernel info leak. :^)
2021-12-19 18:18:38 +01:00
Andreas Kling
1cdc7aa038 Kernel: Mask kernel addresses in perf event streams for non-superuser
We now turn kernel addresses into 0xdeadc0de, same as /proc/PID/stacks/
2021-12-19 18:18:38 +01:00
Andreas Kling
369c7a7e9f Kernel: Don't include kmalloc perf events in JSON for non-superuser
These events contain sensitive kernel information and should not be
available to regular users.
2021-12-19 18:18:38 +01:00
Andreas Kling
8ef9b003ad Kernel: Stop perf event stack walk on bogus userspace->kernel traversal
When walking the stack to generate a perf_event sample, we now check
if a userspace stack frame points back into kernel memory.

It was possible to use this as an arbitrary kernel memory read. :^)
2021-12-19 18:18:38 +01:00
Idan Horowitz
d82c91ac2c SystemMonitor: Add back accidentally removed veil lock
Since the call to lock the veil was missing, the protections provided
by unveil() were not actually enabled.
2021-12-19 13:41:35 +01:00
PerikiyoXD
ff49285a02 LibGUI: Adjust focus rect for Buttons with icons
Reduced focus rect inflation value for buttons with icons
to match the expected focus rect for buttons without icons.

As mentioned in 'SerenityOS Office Hours / Q&A (2021-12-17)'
2021-12-19 13:39:02 +01:00
Linus Groh
9271005357 LibJS: Fix typo in spec comment 2021-12-19 09:35:02 +00:00
Linus Groh
f7fe7f8c77 LibJS: Capture TimeFraction parse result instead of Fraction
Not much of a difference as TimeFraction just parses Fraction, but let's
do it correctly. Small mistake I did in 4b7f716.

Thanks to YouTube user gla3dr for noticing this :^)
2021-12-19 09:29:46 +00:00
Max Trussell
99b263a2db Userland/Notify: Check if optional icon arg is null before loading
The commandline "notify" application was always attempting to load an
icon path from an optional argument, even when the argument was
omitted. In this case, the image icon argument would be a null pointer
and the notify program would crash.

This fix adds a conditional to only attempt to load the icon file if
the icon_path variable is not a null pointer
2021-12-19 00:50:53 -08:00
Michel Hermier
060e5ccbbc Lagom: Bind time_zone_list_index_type in the generator
The variable `s_time_zone_list_index_type` seems to be unused (detected
when compiling with clang), and it seems logical to bind it even it if
it is not used for now.
2021-12-18 21:01:10 -08:00
Michel Hermier
0bfb7f9675 LibC: Move _abort next to abort
It should be now the only user of it, and it is more logical to have it
in `stdlib.h` than in `assert.h`
2021-12-18 21:01:10 -08:00
Michel Hermier
2c62d51e25 LibC: Remove VERIFY_NOT_REACHED() from assert.h
Both `AK/Assertions.h` and `assert.h` would define the macro if `NDEBUG`
is set.

Remove the definition from `assert.h` since it is not an ISO-C
requirement.
2021-12-18 21:01:10 -08:00
Michel Hermier
ee42acddf8 LibC: Make __assertion_failed always defined
The symbol should be always defined, in case Serenity is built with
`NDEBUG` defined, and users wants to use `assert` from `LibC`.
2021-12-18 21:01:10 -08:00
Michel Hermier
35a5305264 LibC: Remove undefined __generate_unique_filename declaration 2021-12-18 21:01:10 -08:00
Luke Wilde
cf5f08b317 LibJS: Only allow TimeZone this value in TimeZone#getPlainDateTimeFor
This is a normative change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/2644fc6
2021-12-19 00:13:01 +00:00
Luke Wilde
7729598b5b LibJS: Only allow TimeZone this value in Temporal.TimeZone#toJSON
This is a normative change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/2644fc6
2021-12-19 00:13:01 +00:00
Luke Wilde
6c8c34ed6c LibJS: Only allow TimeZone this value in Temporal.TimeZone#id
This is a normative change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/2644fc6
2021-12-19 00:13:01 +00:00
Luke Wilde
803e96f0c5 LibJS: Only allow Calendar this value in Temporal.Calendar#toJSON
This is a normative change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/2644fc6
2021-12-19 00:13:01 +00:00