ladybird/Userland
Rodrigo Tobar 41fa1a1461 Utilities: Add more commands, addresses, spaces, cmdline parsing to sed
The initial version of sed implements only the `s` command (given on the
command line) applied to all lines of the input file. While this is
probably the most common scenario that people use sed with in the wild,
it's limited in several ways:

 * `s` is only one of the many commands that sed is meant to implement.
 * Commands may take one or two addresses that limits its applicability
   to input lines.
 * Commands in general operate over the "pattern" and "hold" spaces
   rather than blindly over input lines.
 * Command line parameters include specifying a script file, and
   optionally input file(s) and/or a script to execute.

This commit implements a big portion of these missing features:

 * It adds support for parsing *almost* all commands and their
   arguments.
 * It also implements the execution of a big portion of the commands.
 * It adds support for parsing the optional addresses that prefix a
   command, and enables/disables commands based on these address ranges.
 * It implements the pattern and hold spaces, which are the source of
   input/output for most of the commands.
 * It improves the command line argument handling to receive a script
   file, potentially multiple execution scripts, and optional input
   files.

Some know missing functionality:

 * The `{` and `}` commands are not supported yet.
 * Pattern-based addresses are not supported yet.
 * Labels and branches are parsed, but not supported at runtime.
2023-04-09 18:09:23 -06:00
..
Applets Applets/Keymap: Repaint applet on keymap change 2023-03-09 21:42:23 +01:00
Applications LibVideo+VideoPlayer: Convert playback event handler to callbacks 2023-04-09 23:55:05 +02:00
BuggieBox Everywhere: Use LibFileSystem where trivial 2023-03-21 19:03:21 +00:00
Demos LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
DevTools HackStudio: Add configuration domain pledge for FileManager 2023-04-06 08:56:57 +01:00
DynamicLoader DynamicLoader: Disable stack protector in some files for aarch64 build 2023-02-15 22:53:19 +01:00
Games Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
Libraries LibCrypto: Add PBKDF2 2023-04-09 17:05:18 -06:00
Services Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
Shell Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
Utilities Utilities: Add more commands, addresses, spaces, cmdline parsing to sed 2023-04-09 18:09:23 -06:00
CMakeLists.txt Userland: Add the BuggieBox program 2022-11-26 12:41:47 -07:00