Age | Commit message (Collapse) | Author |
|
Accept char * const *, cast internally. Fixes a compile error
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
The `%g` printf format used for serializing double values into strings
will not include any decimal place if the value happens to be integral,
leading to an unwanted double to integer conversion when serializing
and subsequently deserializing an integral double value as JSON.
Solve this issue by checking the serialized string result for a decimal
point or exponential notation and appending `.0` if neither is found.
Ref: #173
Suggested-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
rtnl: add IFLA_IF_NETNSID for operating in other namespaces
|
|
Signed-off-by: Packet Please <pktpls@systemli.org>
|
|
Signed-off-by: Packet Please <pktpls@systemli.org>
|
|
Make the `splice()` documentation match the actual implementation.
Fixes: #170
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Documentation improvements
|
|
Add full documentation coverage for the struct module by utilizing large
parts of the Python struct module documentation for the format string
description.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
types: improve comparison reliability of binary strings
|
|
The existing `ucv_compare()` implementation utilized `strcmp()` to compare
two ucode string values, which may lead to incorrect results for strings
containing null bytes as the comparison prematurely aborts when encountering
the first null.
Rework the string comparison logic to use `memcmp()` for comparing both ucv
strings with each other in order to ensure that expressions such as
`"" == "\u0000"` lead to the expected `false` result.
Ref: https://github.com/openwrt/luci/issues/6530
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Introduce debug library
|
|
Introduce a new debug library which provides introspection facilities
for debugging ucode scripts.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Get rid of most __APPLE__ guards by introducing a central platform.c unit
providing drop-in replacements for missing APIs.
Also move system signal definitions into the new platform file to be able
to share them with the upcoming debug library.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Introduce signal handling
|
|
When the VM instance loading the uloop module has signal dispatching
enabled, implicitly register the signal pipe as file descriptor in the
global uloop and dispatch received signals to the VM instance.
This ensures that the respective managed ucode signal handlers are
invoked immediately and not just after `uloop_run()` returns.
Also end the uloop in case any invoked signal handler threw an
exception, to match the expected behaviour with other kinds of
callbacks.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
The `signal()` standard library function provides functionality for
registering signal handler callbacks, restoring default signal behaviour
or ignoring specific signals.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Enable signal dispatching by default for standalone ucode programs.
Also adjust the `gc()` testcase output as the default number of
allocations with enabled signal dispatching changes slightly.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
In order to prevent a premature release of the managed ucode signal handler
callbacks, ensure to treat the containing array as GC root to mark the
function values as reachable.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Introduce the basic facilities to implement UNIX process signal handling
in ucode. The VM structure is extended by a bitmap keeping track of
received signal numbers, a sigaction structure which holds a generic
signal handler to update the bitmap, a pipe where the generic signal
handler will send received signal numbers to and an array of managed
signal handler functions, indexed by signal number.
Additionally, three new C API functions are added to control signal
delivery in the VM instance:
- `uc_vm_signal_dispatch()`
This function invokes signal handler callbacks for each received
signal number, clears the bitmap and empties the pipe. The VM itself
will invoke this function after each executed bytecode instruction.
In some cases however it is useful for C code driving the VM to
force immediate signal delivery, e.g. from within long running C
functions that do not return to ucode (to the next bytecode
instruction) in a timely manner.
- `uc_vm_signal_raise()`
This function will deliver the given signal number, so that it is
picked up by the next call to `uc_vm_signal_dispatch()`. It is used
by the generic C signal handler function to forward received signals
to the VM instance.
- `uc_vm_signal_notifyfd()`
This functions returns the read end of the internal signal pipe.
It is mainly useful for integration into select or poll based event
loops, in order to be notified when there's pending signals for
delivery into the VM instance.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Fix 165
|
|
Reportedly, automatic conversion of the `isatty()` int result value to
a bool does not work correctly on PPC. Explicitly compare the result
value with `1` to infer the boolean result value.
Fixes: #165
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
- Don't implicitly convert intptr_t difference to int8_t but perform
explicit comparisons
- Don't implicitly convert strcmp() int result to int8_t
Fixes: #165
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
- Split README.md into several tutorial pages
- Expand all menu panes
- Hide class menu entries
- Add usage information
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Pipe symbols inside table definitions must be escaped.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
docs: various improvements
|
|
- Switch JSDoc theme to "clean-jsdoc-theme"
- Add some custom CSS and JS tweaks to the theme
- Use a condensed README.md for the toplevel directory
- Include a longer README.md in the documentation portal
- Tweak JSDoc annotations for better output results
- Register `ucode.mein.io` CNAME
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
fs: complete function documentation coverage
|
|
fs: use `fseeko()` and `ftello()`
|
|
Use `fseeko()` and `ftello()` instead of `fseek()` and `ftell()`
respectively in order to be able to deal with large file offsets.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Add missing function documentation and return value annotations.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Drop CNAME file which was automatically created by the Github ui during
pages testing.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Add initial JSDoc infrastructure
|
|
|
|
Add JSDoc documentation blocks to all exported core functions.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Add JSDoc documentation blocks to all exported filesystem functions.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Add JSDoc documentation blocks to all exported math functions.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Introduce the infrastructure for building ucode module documentation using
JSDoc annotations.
To build the documentation, run `npm install` followed by `npm run doc`.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Fixes for source offset tracking
|
|
- When skipping the interpreter line, don't count it's newline twice
- Fix reporting byte offsets beyond the end of line
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
Avoid reporting a nonexisting final line by not counting the EOF character
as physical newline.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
ci: switch to official openwrt/gh-action-sdk
|
|
Utilize the official openwrt/gh-action-sdk CI actions to
test-build OpenWrt packages.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
|
lib: support object ordering in `uc_sort()`
|
|
nl80211: add constants for iftypes
|
|
Useful for adding/removing interfaces
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
Extend `uc_sort()` to utilize `ucv_object_sort()` in order to support
reordering object keys.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|