aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-01-29regexp: implement regsub -commandSteve Bennett3-48/+165
Per Tcl 8.7 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-12-17Add CodeQL Workflow for Code Security AnalysisBrian1-2/+2
Add CodeQL Workflow for Code Security Analysis This pull request introduces a CodeQL workflow to enhance the security analysis of our repository. CodeQL is a powerful static analysis tool that helps identify and mitigate security vulnerabilities in our codebase. By integrating this workflow into our GitHub Actions, we can proactively identify and address potential issues before they become security threats. We added a new CodeQL workflow file (.github/workflows/codeql.yml) that - Runs on every pull request (functionality to run on every push to main branches is included as a comment for convenience). - Runs daily. - Excludes queries with a high false positive rate or low-severity findings. - Does not display results for git submodules, focusing only on our own codebase. Testing: To validate the functionality of this workflow, we have run several test scans on the codebase and reviewed the results. The workflow successfully compiles the project, identifies issues, and provides actionable insights while reducing noise by excluding certain queries and third-party code. Deployment: Once this pull request is merged, the CodeQL workflow will be active and automatically run on every push and pull request to the main branch. To view the results of these code scans, please follow these steps: 1. Under the repository name, click on the Security tab. 2. In the left sidebar, click Code scanning alerts. Additional Information: - You can further customize the workflow to adapt to your specific needs by modifying the workflow file. - For more information on CodeQL and how to interpret its results, refer to the GitHub documentation and the CodeQL documentation (https://codeql.github.com/ and https://codeql.github.com/docs/). Signed-off-by: Brian <bayuan@purdue.edu>
2023-12-17Add CodeQL Workflow for Code Security AnalysisBrian1-0/+34
Add CodeQL Workflow for Code Security Analysis This pull request introduces a CodeQL workflow to enhance the security analysis of our repository. CodeQL is a powerful static analysis tool that helps identify and mitigate security vulnerabilities in our codebase. By integrating this workflow into our GitHub Actions, we can proactively identify and address potential issues before they become security threats. We added a new CodeQL workflow file (.github/workflows/codeql.yml) that - Runs on every pull request (functionality to run on every push to main branches is included as a comment for convenience). - Runs daily. - Excludes queries with a high false positive rate or low-severity findings. - Does not display results for git submodules, focusing only on our own codebase. Testing: To validate the functionality of this workflow, we have run several test scans on the codebase and reviewed the results. The workflow successfully compiles the project, identifies issues, and provides actionable insights while reducing noise by excluding certain queries and third-party code. Deployment: Once this pull request is merged, the CodeQL workflow will be active and automatically run on every push and pull request to the main branch. To view the results of these code scans, please follow these steps: 1. Under the repository name, click on the Security tab. 2. In the left sidebar, click Code scanning alerts. Additional Information: - You can further customize the workflow to adapt to your specific needs by modifying the workflow file. - For more information on CodeQL and how to interpret its results, refer to the GitHub documentation and the CodeQL documentation (https://codeql.github.com/ and https://codeql.github.com/docs/). Signed-off-by: Brian <bayuan@purdue.edu>
2023-12-17Add CodeQL Workflow for Code Security AnalysisBrian1-10/+13
Add CodeQL Workflow for Code Security Analysis This pull request introduces a CodeQL workflow to enhance the security analysis of our repository. CodeQL is a powerful static analysis tool that helps identify and mitigate security vulnerabilities in our codebase. By integrating this workflow into our GitHub Actions, we can proactively identify and address potential issues before they become security threats. We added a new CodeQL workflow file (.github/workflows/codeql.yml) that - Runs on every pull request (functionality to run on every push to main branches is included as a comment for convenience). - Runs daily. - Excludes queries with a high false positive rate or low-severity findings. - Does not display results for git submodules, focusing only on our own codebase. Testing: To validate the functionality of this workflow, we have run several test scans on the codebase and reviewed the results. The workflow successfully compiles the project, identifies issues, and provides actionable insights while reducing noise by excluding certain queries and third-party code. Deployment: Once this pull request is merged, the CodeQL workflow will be active and automatically run on every push and pull request to the main branch. To view the results of these code scans, please follow these steps: 1. Under the repository name, click on the Security tab. 2. In the left sidebar, click Code scanning alerts. Additional Information: - You can further customize the workflow to adapt to your specific needs by modifying the workflow file. - For more information on CodeQL and how to interpret its results, refer to the GitHub documentation and the CodeQL documentation (https://codeql.github.com/ and https://codeql.github.com/docs/). Signed-off-by: Brian <bayuan@purdue.edu>
2023-12-17Add CodeQL Workflow for Code Security AnalysisBrian2-0/+127
Add CodeQL Workflow for Code Security Analysis This pull request introduces a CodeQL workflow to enhance the security analysis of our repository. CodeQL is a powerful static analysis tool that helps identify and mitigate security vulnerabilities in our codebase. By integrating this workflow into our GitHub Actions, we can proactively identify and address potential issues before they become security threats. We added a new CodeQL workflow file (.github/workflows/codeql.yml) that - Runs on every push and pull request to the main branch. - Excludes queries with a high false positive rate or low-severity findings. - Does not display results for third-party code, focusing only on our own codebase. Testing: To validate the functionality of this workflow, we have run several test scans on the codebase and reviewed the results. The workflow successfully compiles the project, identifies issues, and provides actionable insights while reducing noise by excluding certain queries and third-party code. Deployment: Once this pull request is merged, the CodeQL workflow will be active and automatically run on every push and pull request to the main branch. To view the results of these code scans, please follow these steps: 1. Under the repository name, click on the Security tab. 2. In the left sidebar, click Code scanning alerts. Additional Information: - You can further customize the workflow to adapt to your specific needs by modifying the workflow file. - For more information on CodeQL and how to interpret its results, refer to the GitHub documentation and the CodeQL documentation. Signed-off-by: Brian <bayuan@purdue.edu>
2023-11-02tests: timer: skip unreliable testsSteve Bennett1-15/+34
On systems where we aren't getting enough cpu time. Heuristic check, but probably good enough in practice. Fixes #282 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-10-12build-jim-ext: fix typo when building --staticSteve Bennett1-1/+1
This bug has been there for a long time but probably no-one builds static extensions because they aren't very useful. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-27fix issues in the manualDaniele Parisi1-12/+12
2023-08-13jimsh, interp, tests: fixes when line editing is disabledSteve Bennett6-13/+28
- Set jim::lineedit to indicate if line editing is configured - Ensure that aio tty works even if line editing is disabled - Skip some tests if line editing is not configured Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-13tests: misc: improve 'info statics' testSteve Bennett1-3/+5
To show that it returns the current values, not just the original values Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-12tests: socket: hurd vs LinuxSteve Bennett1-2/+13
hurd does not return the path for unix domain sockets via getsockname() Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-12tests: support hurdSteve Bennett2-4/+4
socket operation on non-socket gives a different message Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-12aio: fix edge cases with error on blocking readSteve Bennett1-10/+3
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-31core: fix error level in try/catchSteve Bennett2-5/+5
When the multi-level break/continue support was added in 1b151f816f14b11f1c1ef10b171411e21b9a504e it reused returnLevel, but this interferred with the return level returned by try/catch. Use a separate variable for the break/continue level. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-13core: Fix 'for' with JIM_OPTIMIZATION disabledSteve Bennett2-8/+13
And allow -DJIM_TINY to disable optimisation, and use that with bootstrap jimsh. Fixes #273 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-11signal: fix build warningsSteve Bennett2-1/+5
Need strings.h for strcasecmp (Although I don't really think it's necessary to support lower case versions of signal names. This will probably change). Fixes #270 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-11configure: zlib needs to check for zlib.hSteve Bennett1-1/+1
If pkg-config is not available Fixes #272 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-10tests: event.test: increase waits in event-11.4Steve Bennett1-3/+3
This test can be at bit flaky on slower machines (perhaps running under a VM or qemu). Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-10build: update autosetup to v0.7.1-11-g9d20e8aSteve Bennett5-2161/+3982
Mostly for update bootstrap jimsh Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-10bootstrap-jim: Set _FILE_OFFSET_BITS=64Steve Bennett1-0/+1
Without this, readdir() doesn't work properly on some 32 bit platforms Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-10info script: return real current source fileSteve Bennett3-4/+47
And allow current source file to be set Fixes: #268 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-06aio: fix autocomplete for socketSteve Bennett1-3/+8
The checks for -ipv6, -async broke 'socket -commands' Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-05tests: Fix/add some constraint checksSteve Bennett2-1/+3
In case socket pty, interp are not available Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04core: add support for proc statics by referenceSteve Bennett4-94/+346
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>
2023-07-04initjimsh: update autocomplete, stdhintSteve Bennett1-3/+3
To add new commands that now support -help, -commands Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04debug: convert to use subcmdSteve Bennett2-142/+126
This means we get -commands and usage via -help Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04info: convert to use subcmdSteve Bennett1-97/+92
This means we get -commands and usage via -help Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04dict: convert to use subcmdSteve Bennett3-76/+68
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>
2023-07-04string: convert to subcmdSteve Bennett1-100/+89
This means we get -commands and usage via -help Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04namespace: convert to use subcmdSteve Bennett1-110/+119
This means we get -commands and usage via -help Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04subcmd: minor improvementsSteve Bennett2-4/+28
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>
2023-07-04docs: Document tcl::stdhint, history hintsSteve Bennett1-0/+44
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04interactive: enable hint supportSteve Bennett6-26/+189
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>
2023-07-04docs: Add documentation for -noclose flagSteve Bennett1-27/+47
To open, socket and accept Also document aio getfd Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04aio: support accept ?-noclose?Steve Bennett1-3/+11
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>
2023-07-04tests: add aio.test for open -nocloseSteve Bennett1-2/+19
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04aio: add -noclose flag to socket and openSteve Bennett1-25/+42
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>
2023-07-04docs: document aio changesSteve Bennett1-179/+193
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04aio: change to use unix io, not stdioSteve Bennett1-0/+3
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>
2023-07-04tests: tty.test: use a pty pair if stdin/stdout is not a ttySteve Bennett1-12/+25
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04tests: expect.tcl: leave the channel in non-blocking modeSteve Bennett1-2/+1
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>
2023-07-04aio: close should still close AIO_KEEPOPEN channelsSteve Bennett1-1/+4
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>
2023-07-04tcltest: rework constraint systemSteve Bennett35-163/+188
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>
2023-07-04aio: change to use unix io, not stdioSteve Bennett18-475/+1003
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>
2023-06-22docs: minor fix for currySteve Bennett1-1/+1
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-06-22build: Add -I. as the first include pathSteve Bennett2-12/+12
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>
2023-06-21stackdump: truncate command at first newlineSteve Bennett1-0/+4
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>
2023-06-21docs: documentation updates for stacktrace changesSteve Bennett1-5/+10
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-06-21jimdb: update for new stackframe supportSteve Bennett1-6/+6
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-06-21core: Display errors in a more "pythonesque" waySteve Bennett10-288/+234
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>