Commit graph

18659 commits

Author SHA1 Message Date
Luke
c3d4fbb2a5 LibGfx: Use zlib instead of just deflate when loading PNGs
PNGs use deflate with zlib, however we were just skipping the zlib
bytes and then piping it into deflate decompressor. Since we have a
zlib decompressor, lets use that instead.

This has the added benefit of extra error checking.
2021-03-28 20:40:44 +02:00
Linus Groh
8c99968ec1 LibJS: Fix m_allocations_since_last_gc initialization value 2021-03-28 20:40:22 +02:00
Michel Hermier
d927b69082 cmake: Tidy compiler options.
Prior to this patch there was some long line of unreadable compiler
options. Now the long lines are deduplicated and there is only one
option per line to ease reading/maintenance.
2021-03-28 20:40:12 +02:00
Michel Hermier
a208cc3169 cmake: Group compile options together. 2021-03-28 20:40:12 +02:00
Andreas Kling
fdd01a0a07 LibC: Implement asprintf() and vasprintf()
These simply use StringBuilder::appendvf() internally which is not
optimal in terms of heap allocations, but simple enough and I don't
think they are performance sensitive functions anyway.
2021-03-28 18:39:32 +02:00
Andreas Kling
5f71bf0cc7 Kernel+LibC: Implement sys$ioctl() FIONBIO
This is another (older) way of making a file descriptor non-blocking.
2021-03-28 17:50:08 +02:00
Andreas Kling
526b4bbfdb WindowServer: Add ability to show/hide window menubars
This patch adds a toggle item to the window menu that controls window
menubar visibility. This is available in all windows with a menu.
2021-03-28 13:40:40 +02:00
AnotherTest
ccf84a4709 Spreadsheet: Ignore extra empty lines after the rows
We now ignore the last CRLF in e.g.
```csv
aaa,bbb,ccc CRLF
zzz,yyy,xxx CRLF
```
2021-03-28 11:46:47 +02:00
AnotherTest
894bfa30a2 Spreadsheet: Make the CSV reader more lenient
This adds an option "Lenient" that makes the reader conform to what
appears to be the norm in spreadsheet-land:
- Treat missing values as empty ones
- Update previously read rows if another row with more columns are seen
  afterwards
2021-03-28 11:46:47 +02:00
AnotherTest
102065a8a9 Spreadsheet: Show the error (if any) in csv import dialog's preview
...and don't try to read from a CSV that has errors.
Fixes #5942.
2021-03-28 11:46:47 +02:00
AnotherTest
bbf6847d50 LibGUI: Register GUI::StackWidget with GML 2021-03-28 11:46:47 +02:00
Michel Hermier
7d591432c4 AK: Add Signed/Unsigned concepts. 2021-03-28 11:45:51 +02:00
Michel Hermier
4f1c72c174 AK: Add IsSigned conterpart to IsUnsigned. 2021-03-28 11:45:51 +02:00
Michel Hermier
d77cbc0fa8 AK: Remove IsSigned<char> test as it is platform/compiler dependant. 2021-03-28 11:45:51 +02:00
Michel Hermier
b8fac0a8b3 AK: Make Concepts.h and StdLibExtras.h properly alias their own sumbols. 2021-03-28 11:45:51 +02:00
Andreas Kling
71a9a14c17 WindowServer: Make Window::event() protected 2021-03-28 11:25:57 +02:00
Andreas Kling
247717431d LibGUI: Make GUI::Widget::event() protected 2021-03-28 11:25:40 +02:00
Andreas Kling
d0072aef8b LibCore: Make Core::Object::event() protected 2021-03-28 11:24:22 +02:00
Andreas Kling
6f45c27d06 WindowServer: Don't call Core::Object::event() directly
To make sure event filters are respected, we should not be calling
event() directly, but rather dispatch_event().
2021-03-28 11:19:18 +02:00
Andreas Kling
54c7110d9d LibCore: Add a way to install an event filter on a Core::Object
The event filter is consulted by Object::dispatch_event() and may
decide that the event should not be delivered to the target object.
2021-03-28 11:19:18 +02:00
Andreas Kling
c91bb72964 LibC: Add vfork() as a simple wrapper around fork()
I don't know if we should implement optimized vfork(). I'm adding it
here since SDL2 uses it.
2021-03-28 00:05:29 +01:00
lucastarche
17b7779271 Chess: Added option to toggle showing moves 2021-03-27 23:37:06 +01:00
lucastarche
42f7f9d0f8 Chess: Show available moves from current piece 2021-03-27 23:37:06 +01:00
Andreas Kling
52ce7ed842 Ports: Switch to new SDL2 port
I've rebased the SDL2 port on top of the latest SDL2 main branch.
This patch simply points the SDL2 port scripts to the new branch.
2021-03-27 22:57:08 +01:00
Idan Horowitz
1ac661515e LibArchive: Bounds check header offsets in Zip Parser
Since the central directory offset in the end of central directory
record and the local file offset in each central directory header
are user-controlled arbitary data, we have to bounds check them
before using them.
2021-03-27 19:44:16 +01:00
Roi
f046654477 Base: Update modunload path
The file `modunload.md` has moved to `man8`
2021-03-27 19:43:58 +01:00
Linus Groh
e8aa998cdc LibGUI: Return symlink fallback icon if target icon cannot be determined
This is the case for symlinks that point to themselves, for example -
previously the returned icon would be empty.

Fixes #5978.
Fixes #5979.
2021-03-27 19:43:36 +01:00
Jelle Raaijmakers
9c141d0a87 Ports: Add SQLite 2021-03-27 19:43:14 +01:00
Jelle Raaijmakers
2fb3c98429 LibC: Define F_GETLK 2021-03-27 19:43:14 +01:00
Idan Horowitz
ff32002f2b Utilities: Add gzip utility
This is a small utility that is similar to gunzip but is used
for compression instead of decompression.
2021-03-27 19:30:42 +01:00
Linus Groh
9734420dfa Browser: Set parent of tab child windows
By setting the parent of the JS console, DOM inspector, view source and
download windows, they will be destroyed automatically when the main
browser window is closed.

Fixes #2373.
2021-03-27 19:24:40 +01:00
cheb
daf85fb07b Utilities: Add a delay option to the "shot" utility
This option allows for the user to set a delay before a screenshot taken.
The user could minimize the window, for example.
2021-03-27 19:24:01 +01:00
Brendan Coles
5331ae0e93 Base: man pages: document arguments, fix typos, use American English 2021-03-27 19:23:49 +01:00
Andreas Kling
5bd8a416ea LibC: Add AF_INET6, PF_INET6 and IPPROTO_IPV6 macros 2021-03-27 18:58:38 +01:00
Andreas Kling
67f89fdc87 LibC: Add POSIX macros for the ai_flags field in struct addrinfo 2021-03-27 18:57:30 +01:00
Andreas Kling
6d99345811 LibC: Add S_I{READ,WRITE,EXEC} macro aliases for BSD compatibility
These map as follows:

S_IREAD -> S_IRUSR
S_IWRITE -> S_IWUSR
S_IEXEC -> S_IXUSR
2021-03-27 18:00:41 +01:00
Liav A
3547d90a0f Kernel/Storage: Select the drive before working with busmaster register
This is a "quirk" I've observed on a Intel ICH7 test machine. Apparently
we need to select the device (master or slave) before starting to work
with the bus master register.
It's very possible that other machines are requiring this step to happen
before the DMA transfer can occur correctly.

Also, when reading with DMA, we should set the transfer direction before
clearing the interrupt status.

For the sake of completeness, I added a few lines in places that I
deemed it to be reasonable to clear the interrupt status there.
2021-03-27 16:40:16 +01:00
Liav A
1d0c183388 Kernel/Storage: Add some debug printing about IDE controllers 2021-03-27 16:40:16 +01:00
Liav A
186e03b99d Kernel/Storage: Remove redundant public declaration in IDEController.h 2021-03-27 16:40:16 +01:00
Liav A
b96e4c1308 Kernel/Storage: Use more locking in the IDE code
This change should make it less possible for race conditions to happen
and cause fatal errors when accessing the hardware.
2021-03-27 16:40:16 +01:00
Liav A
8b446fb579 Kernel/Storage: Add support for non-bus mastering IDE controllers
Although unlikely to happen, a user can have an IDE controller that
doesn't support bus master capability. If that's the case, we need to
check for this, and create an IDEChannel (not BMIDEChannel) to allow
IO operations with the controller.
2021-03-27 16:40:16 +01:00
Liav A
833a6bd047 Kernel/Storage: Move IDE bus master handling code into a separate class
If the user requests to force PIO mode, we just create IDEChannel
objects which are capable of sending PIO commands only.
However, if the user doesn't force PIO mode, we create BMIDEChannel
objects, which are sending DMA commands.

This change is somewhat simplifying the code, so each class is
supporting its type of operation - PIO or DMA. The PATADiskDevice
should not care if DMA is enabled or not.

Later on, we could write an IDEChannel class for UDMA modes,
that are available and documented on Intel specifications for their IDE
controllers.
2021-03-27 16:40:16 +01:00
Liav A
dfb6b296cf Kernel: Make IDEChannel Ref-counted
Technically not supported by the original ATA specification, IDE
hot swapping is still in practice possible, so the only sane way
to start support it is with ref-counting the IDEChannel object so if we
remove a PATADiskDevice, it's not gone with it.
2021-03-27 16:40:16 +01:00
Liav A
531037db7e Kernel: Remove support for CHS addressing
An article about IDE limits states that:
"Hard drives over 8.4 GB are supposed to report their geometry as
16383/16/63. This in effect means that the `geometry' is obsolete, and
the total disk size can no longer be computed from the geometry, but is
found in the LBA capacity field returned by the IDENTIFY command.
Hard drives over 137.4 GB are supposed to report an LBA capacity of
0xfffffff = 268435455 sectors (137438952960 bytes). Now the actual disk
size is found in the new 48-capacity field."
(https://tldp.org/HOWTO/Large-Disk-HOWTO-4.html) which is the main
reason to not support CHS as harddrives with less than 8.4 GB capacity
are completely obsolete.

Another good reason is that virtually any harddrive in the last 20 years
or so, supports LBA mode. Therefore, it's probably OK to just ignore CHS
as it's unlikely to encounter a harddrive that doesn't support LBA.

This is somewhat simplifying the IDE initialization and access code.
Also, we should use the ATAIdentifyBlock structure if possible,
so now we do it instead of using macros to calculate offsets.

With the usage of the ATAIdentifyBlock structure, we now use the
48-bit LBA max count if the drive indicates it supports 48-bit LBA mode.
2021-03-27 16:40:16 +01:00
Liav A
4bb8986752 Kernel: Generalize the ATAIdentifyBlock structure 2021-03-27 16:40:16 +01:00
Idan Horowitz
4317db7498 LibArchive: Make bounds checks stricter in the Zip parser
We now also check we have enough space in the incoming buffer for the
various signatures and optional (length specified) fields. This helps
prevents a possible heap overflow read.
2021-03-27 16:28:48 +01:00
Luke
1ff6f2b4b2 Lagom/Fuzzers: Add fuzzer for zip file parser 2021-03-27 16:28:34 +01:00
Linus Groh
e288541a9b Taskbar: Set window title as taskbar button tooltip
This way it's easier to find the right window when many are open at the
same time, as all buttons share a limited amount of horizontal space and
titles get truncated quickly.
2021-03-27 16:28:21 +01:00
Linus Groh
2fde87e67d WindowServer: Also keep menus open when activated via Ctrl + return key
I see no reason to limit this awesome feature to mouse clicks. :^)
2021-03-27 11:33:41 +01:00
Cesar Torres
0198ecca21 AudioServer: don't set an upper limit on volume in mixer
Let's not limit volume so we can play clips at over 100% without
the need to process the audio samples twice.
2021-03-27 10:20:55 +01:00