Age | Commit message (Collapse) | Author | Files | Lines |
|
The checks for -ipv6, -async broke 'socket -commands'
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
In case socket pty, interp are not available
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
set a 5
proc b {} {&a} {
incr a
}
b
Now a is 6 because b captured a by reference instead of by value
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
To add new commands that now support -help, -commands
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This means we get -commands and usage via -help
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This means we get -commands and usage via -help
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This means we get -commands and usage via -help
And update dict2.test for minor difference in usage
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This means we get -commands and usage via -help
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This means we get -commands and usage via -help
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Add support for modulo maxarg count. If maxargs is (e.g.) -2, then a
multiple of 2 args is expected.
Also expose Jim_SubCmdArgError() to make it easy to add additional
arg validation but still have subcmd report the usage.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
And add a default implementation of tcl::stdhint to add
hinting for some built-in commands.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
To open, socket and accept
Also document aio getfd
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
And also fix a minor bug that if unable to format the socket address
the file descriptor would be left open.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
socket ?-noclose? ...
open filename ?-noclose? ...
Normally Jim will set O_CLOEXEC on all files and sockets that are opened
however sometimes it is desirable to keep file descriptors open for
child processes. The -noclose flags does this (on supported platforms).
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This changes especially makes buffered I/O work
with non-blocking channels.
- separate read and write buffering
- support for timeout on blocking read
- read/write on same channel in event loop with buffering
- read buffer is the same across read, gets, copyto
- autoflush non-blocking writes via event loop
- copyto can now copy to any filehandle-like command
- add some copyto tests
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This is simpler now that we can write to a non-blocking socket
even if it is "full".
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
AIO_KEEPOPEN won't close a channel (such as stdin, stdout)
when the command is deleted/replaced, but an explicit close
will still close the channel.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Now 'constraint cmd|package' is like 'needs' but sets a constraint
The command to 'needs cmd' and 'constraint cmd' can now take
a subcommand to check.
Add 'constraint|needs eval|expr' to make some constraint checks
simpler.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This changes especially makes buffered I/O work
with non-blocking channels.
- separate read and write buffering
- support for timeout on blocking read
- read/write on same channel in event loop with buffering
- read buffer is the same across read, gets, copyto
- autoflush non-blocking writes via event loop
- copyto can now copy to any filehandle-like command
- add some copyto tests
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
If building on a system with an installed jim.h, we want
to be sure to pick up the local jim headers in preference.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Often the command in a stack trace will be a long script.
This makes it hard to read the stacktrace, so in this case
truncate at the first newline and add ...
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
A typical error message now looks like this:
t4.tcl:2: Error: syntax error in expression: "blah"
Traceback (most recent call last):
File "t4.tcl", line 14
c 1 2 3
File "t4.tcl", line 10, in c
b a c
File "t4.tcl", line 6, in b
a A14
File "t4.tcl", line 2, in a
expr blah
This is produced by stackdump (that can be replaced), called by errorInfo.
Note that now stacktraces (stacktrace, info stacktrace, $opts(-errorinfo)) include
the running command at each level in addition to proc, file, line. In order for
scripts to detect this new format, a new entry tcl_platform entry has been added:
tcl_platform(stackFormat) = 4 (to signify 4 elements per frame)
In addition, instead of building the error stack frame as the stack
is unwound in response to an error, instead the entire current stack trace
is captured by stacktrace. This means that the trace extends beyond the try/catch
right back to the initial interpreter command.
The 'stacktrace' command is now implemented in C based on the same
code that generates the error stacktrace.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Now callers to JimInvokeCommand() are expected to push and eval frame.
Then we no longer need to carry currentScriptObj, argc, argv in the interp
since these are in the current eval frame.
Note that this change simply renames some unused fields in Jim_Interp for ABI
compatibility, but these will be removed in due course.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Some 32 bit systems may require explicit use of stat64, etc.
Fixes #263
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
loop i 5 {
loop j 6 {
# This breaks out of both loops
break 2
}
}
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
If deferred commands run on shutdown as stack frames
are unwound, it is possible that a command
is deleted but a later command still has a reference to it.
So instead of trying to optimise this case by freeing immediately,
cache deleted commands and let the be freed once all stack frames
are destroyed.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
At some point $jim_interactive changed to the Tcl-compatible $tcl_interactive
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
always include 'proc' even if introspection disabled
correctly set 'proc' at the eval frame level that is currently running
in the given proc. This makes it easier to produce an accurate level stacktrace
even across uplevel, etc.
Update stacktrace to use the new info frame.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Fixes #259
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Fixes #259
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
'vwait -signal done' should wait for variable 'done' to change
but instead waits for a variable '-signal' to changed.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Some stack frames may have no cmd (e.g. with eval).
Ensure that [stacktrace] still handles such frames by setting an
empty proc name in that case.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Sometimes it can be useful to provide an embedded interpreter
where introspection is not permitted.
This includes:
- info commands, procs, channels: only allow exact match, not glob pattern
- info frame: don't include cmd and proc in the returned dict
- info level: only return the command name, not the command arguments
- info body, args, statics: do not allow these to be called
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
if sin(), etc. aren't available, just build without math functions
unless --math is explicitly given
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Not in source files
See https://ariadne.space/2021/12/21/stop-defining-feature-test-macros-in-your-code/
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
The macro JIM_EMBEDDED was required to be defined before including
jim.h in applications that embed jimtcl.
This requirement has been dropped in 2010 with commit 2d8564100c86
("Documentation updates") but it's use has remained for longer and
it even re-appeared later in the examples.api.
Drop last instances of JIM_EMBEDDED.
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
|
|
json decoder is available since jimtcl 0.79, but the Makefile does
not remove the related object files during 'make clean'.
Add jsmn/*.o in the list of files to remove during 'make clean'.
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
|
|
Fixes #256
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Some tabs have crept into this file.
Expand to spaces for consistency.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
SSL is now enabled by default, but it is only a fatal error
if no libssl and --ssl is explicitly enabled.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|