aboutsummaryrefslogtreecommitdiff
path: root/jim.c
AgeCommit message (Collapse)AuthorFilesLines
2010-10-15Fix some build problems and add lost featuresSteve Bennett1-51/+52
Add some missing files needed for autoconf Make jim build standalone and without host jimsh Use (FILE *) for eventloop file handle Don't expect to support dynlib if no mmu Re-add nvp and win32 support (untested) Signed-off-by: Steve Bennett <steveb@workware.net.au>
2010-10-15Fix lsort for large integersSteve Bennett1-6/+18
The compare result may be a wide integer, so ensure that the sign is retaining when narrowing to an int Signed-off-by: Steve Bennett <steveb@workware.net.au>
2010-10-15Enhance catch and 'info returncodes'Steve Bennett1-20/+54
*: Add optional arg to catch, opts, like Tcl 8.5 to allow access to the code given by 'return -code' *: Use -- to signify end of options to catch *: 'info returncodes' can give the name of a single code *: Fix 'case' to handle 'return -code' properly
2010-10-15Improve error message from wrong args to procSteve Bennett1-2/+25
*: Use ?argname? to show an optional arg *: Use ?argument ...? to represent 'args', just like Tcl 8.5
2010-10-15Improve stack trace handlingSteve Bennett1-42/+52
*: Get rid of JIM_ERR_ADDSTACK and use interp->addStackTrace instead *: 'return -code error' doesn't add a stack frame *: Rename _file_copy to {file copy} for better error messages *: Use 'return -code' to prevent excessive levels in the stack trace Also rename info_nameofexecutable to {info nameofexecutable}
2010-10-15Code cleanups, mostly formattingSteve Bennett1-73/+63
2010-10-15Documentation, build system updatesSteve Bennett1-3/+3
Document reference-related commands *: ref, getref, setref, finalize, lambda were missing Build system updates *: Add check for long long to configure *: Change -Dwith_jim_ext_... to -Djim_ext_... *: Fix jim-eventloop when compiling with no long long
2010-10-15Simplify Jim_GetVariable(), upvar arg parsingSteve Bennett1-40/+42
2010-10-15Add Jim_SetResultFormatted() for simplied messagesSteve Bennett1-417/+381
Makes creating error messages much simpler Also convert a couple of long if/else to switch Also some error message improvements Also fix some memory leaks
2010-10-15Simplify and improve the for command optimisationSteve Bennett1-172/+130
*: No need to optimised one-off initialisation command *: Do first test before optimisation *: Just compare "incr" rather than looking up the command. Will only fail on redefined incr command!
2010-10-15Implement TIP #288Steve Bennett1-76/+109
See http://www.tcl.tk/cgi-bin/tct/tip/288.html Args and optional args may be to the left of required args
2010-10-15Allow catch to specify what is caughtSteve Bennett1-55/+149
*: Default to the same as Tcl. Not signal, eval, exit. *: Use 'catch -exit' to also catch exit. *: Also map for standard return codes: [info returncodes] *: Also Jim_ReturnCode() *: Add Jim_FindByName() for searching in a char* array *: Fix 'info nameofexectutable' if $::jim_argv0 is not set
2010-10-15Allow incr on unset variableSteve Bennett1-6/+11
From Tcl 8.5, implicitly set variable to 0
2010-10-15Simplify and speed up exprSteve Bennett1-685/+676
*: Reuse the ParseTokenList/ScriptToken machinery for 'expr' *: This is simpler than managing separate opcode/obj arrays *: expr opcodes are now in the same namespace as token types *: expr identifies int and double during parsing *: Move the 'while' common expr optimisations into Jim_EvalExpression *: Add a special trueObj and falseObj to help with these boolean optimisations *: Add lazy versions as the byte code is created instead of at the end *: Avoid repeated conversion attempts to int *: Once an object fails conversion to int and succeeds conversion to double, invalidate the string rep so the int conversion attempt no longer happens *: Also, avoid converting non-ints to int in expression optimisation *: No need for a string token for SEP and EOL tokens *: Fix shimmering of int -> double *: When an int shimmers to a double during an expression, remember that the value was originally an int (via a new type, coerced double)
2010-10-15Fix null pointer dereferenceSteve Bennett1-1/+1
If the condition expression of a for statement is invalid
2010-10-15Bug fixes and featuresSteve Bennett1-42/+52
Support end+<n> index And generally simplify the index handling Add support for 'info nameofexecutable'
2010-10-15Rework script/subst parser for improved performanceSteve Bennett1-168/+405
*: Keep abc(def) as a single token, but split abc($def) into 4 tokens *: Then optimise when interpolating to keep a reference to the underlying objects *: This speeds up the 'set a($b)' case a lot *: Also avoid so much alloc/realloc when parsing scripts and subst objects Also simplify cmdStruct creation *: Can omit args=-1 for expand *: Makes it easy to calculate the length *: Do it all in a single loop for simplicity, size and speed
2010-10-15Many improvements, bug fixesSteve Bennett1-370/+528
*: Allow math functions to be enabled via configure *: Allow support for references to be removed *: Documentation updates *: Jim_ListLength() now returns the result directly *: Optimise list -> dict conversion *: Consistent capitalisation of some structures, functions *: Add support for abbreviations to Jim_GetEnum() *: The commands to 'info' may be abbreviated *: Use abbreviation support in parsing options to 'subst' *: Use Jim_GetEnum() to parse return code names *: Optimise 'array get', 'array set' if no conversion needed *: Import Tcl string.test *: string compare now returns -1,0,1 like Tcl *: Fix 'string last' with index=0 *: Add support for 'string reverse' *: Add -nocase option to 'string equal' *: Fix infinite loop in 'string repeat str -1' *: Support braced patterns in glob *: glob should not return dot files unless the pattern starts with . *: Simplify glob.tcl by using some new features *: When creating C extensions from Tcl, preserve newlines and invoke with Jim_Eval_Named() to produce more meaningful error messages. *: Also remove all comments, not just those starting in the first column *: Add support for 'n+n' and 'n-n' in string/list indexes (Tcl 8.5) *: Add a level to the stack trace for 'return -code error' *: 'return -code' should also affect the return from 'source' (see Tcl docs) *: Fix lsort -command *: Some systems don't have INFINITY
2010-10-15Various general fixes and cleanupsSteve Bennett1-43/+23
Add lsearch -command, update case to use lsearch Rename tcl6.tcl to tclcompat.tcl Remove // style comments Expand some tabs to spaces Fix some compiler warnings Remove some unused functions Don't close fd=-1 in exec
2010-10-15More expr tests and fixesSteve Bennett1-26/+127
*: Add tests/expr-new.test from Tcl *: Directly convert from int to double if possible *: Always treat '-' in front of a number as unary minus so that '-0x1234' works. *: Fix expr when the variable does not exist *: Add optional support for math functions *: Also double/0 == Inf or -Inf
2010-10-15New features, docsSteve Bennett1-12/+189
Implement lsearch in C with options *: lsearch -exact, -glob, -regexp, -not, -bool, -all, -inline Add tests for lsearch and expand expr operators: in and ni (Tcl 8.6)
2010-10-15New featuresSteve Bennett1-11/+57
Add unset -nocomplain and tests Implement lrepeat
2010-10-15More expr cleanupSteve Bennett1-254/+80
Also remove all literal sharing code. It was disabled anyway.
2010-10-15Simplify expr evaluationSteve Bennett1-322/+277
2010-10-15Revert "Simplify handling of {expand}"Steve Bennett1-38/+41
This reverts commit 3201b17708d278541b66962045b68f9b0687c1dc.
2010-10-15Simplify handling of {expand}Steve Bennett1-41/+38
*: Detect it during tokenisation rather than afterwards *: Create a special token for it *: Also create most tokens as JIM_TT_STR rather than JIM_TT_ESC
2010-10-15Fix many problem with expr evaluationSteve Bennett1-501/+875
*: Import Tcl expr tests (expr-old.test) and fix things: *: !double should be boolean (int) *: double&&double and double||double should be boolean (int) *: 2.34e+1 and 2.0e2 are an acceptable double values *: precedence of && and || is not equal *: precedence of ? and : is not equal *: expression "2:3" is invalid *: lazy evaluation involving multiple && and || was quite wrong *: Fix unary minus wrt subexpressions. e.g. -(-1.5) *: Also add support for functions: int, double, abs, round *: Fix lazy evaluation of ternary operator *: Error on missing ?, missing : *: Fix double unary minus *: Add unary plus *: Fix parsing of double with no '.' before 'e'. Also support 'E'. *: Right-to-left associativity of ternary operator is *almost* correct *: Import div/mod of -ve integers from Tcl *: Rotate (<<< and >>>) failed because of wrong arity *: Don't use auto-converted double values *: When an expression fails, show the expression *: Bump version to 0.62
2010-10-15Bugs, features, testsSteve Bennett1-11/+23
Subst was broken for backslash escapes Add support for return, break, continue in subst commands Accept abbreviations for switches to subst Fix 'list #' More tests
2010-10-15Source cleanups, typos, add testSteve Bennett1-88/+131
2010-10-15Improvements to 'scan'Steve Bennett1-224/+116
Use libc strtoull() for long long conversions Also some white space cleanup Also remove some win32 vestiges Also improve error messages for array access errors
2010-10-15Speed up assign to static dict sugarSteve Bennett1-74/+65
2010-10-15Bug fixes, documentation updatesSteve Bennett1-8/+15
jimsh - retry on EINTR from fgets() Fix 0 -> NULL for 64 bit systems Fix overlapping memcpy Fix jim array dereferencing bug *: Counting of parentheses was incorrect with nested array references *: The result for array dereference wasn't being used properly Add os.uptime command Documentation: autogenerated command index Fix gets when last line has no newline
2010-10-15Fix time, bump versionSteve Bennett1-3/+8
time should return wall time, not cpu time (Tcl compatible) Bump version to 0.61 ------------------------------------------------------------------------
2010-10-15Enhance env, fix error messagesSteve Bennett1-8/+11
env command allows a default to be supplied Fix wrong 'file rename' error message
2010-10-15Build improvements, bug fixes and compiler warningsSteve Bennett1-33/+26
Remove unimplemented 'after restart|expire' from eventloop Allow libjim to be build as a shared library On some platforms, regex.h needs stdlib.h first Use ualarm() only for times < 1 second Fix warnings found by clang static analyser *: printf/syslog %m isn't portable *: some variables set but never read *: some possible null pointer references (although mostly impossible) *: also minor fixes to jim unit tests Fix 'syslog -options <n>' Must null terminate readlink() result
2010-10-15jimsh improvements plus documentationSteve Bennett1-3/+1
Add /lib/jim to the default auto_path *: Otherwise there is no 'standard' location to install packages Prompt should show name for all non-zero return types Initial documentation for Jim ------------------------------------------------------------------------
2010-10-15Fix a couple of bugsSteve Bennett1-6/+12
format %.0f was wrong Minor bug in [string trimright] *: When the string was empty, a read was done of str[-1] ------------------------------------------------------------------------
2010-10-15Implement 'array' in CSteve Bennett1-6/+42
2010-10-15Improve expression supportSteve Bennett1-43/+104
Especially ternary operator and unary minus Still evaluates both sides of the ternary operator :-( Fix unary minus And add const in more places to avoid this mistake in future
2010-10-15Bugs, features and testsSteve Bennett1-14/+26
source fails with zero length file unknown can't be called recursively *: This can be useful when using unknown to dynamically load code, which may in turn want to dynamically load code *: Limit it to 50 recursions though Allow string greater/less comparison *: Comparing two strings for order did not work Implement file join *: It's not to hard and is handy when working with the current dir, "" Don't omit [unknown] completely from stack trace *: Since we lose valuable informtion, just omit the name Fix return from case Turn regexp patterns into real objects *: Thus caching the compiled regexps Allow error to rethrow an error Replace bcopy() with more standard memcpy() Fixes to parray, improve errorInfo *: errorInfo takes an optional stack trace Add tests for rethrowing errors via errorInfo Fix ndelay *: Was looking at wrong param *: Also fix usage/help for aio.socket Package should be able to call exit *: Currently any return from a package is changed to JIM_ERR Line counting is incorrect for backlash newline
2010-10-15Bugs, features, testsSteve Bennett1-0/+1
The result of boolean ops on doubles is an int *: e.g. 0.5 < 0.1 should be 0, not 0.1 Implement jimsh -e <cmd> Allow jim to be built in a different location *: e.g. mkdir build; cd build; ../configure ...; make jimsh Add dict.test
2010-10-15Bugs and testsSteve Bennett1-1/+1
jimsh argv0 was wrong *: Should be the name of the script when run non-interactively Missed adding jim.h changes for errorProc Add lsort -command tests to jim/tests Handle the case of a script with no tokens ------------------------------------------------------------------------
2010-10-15Improve error handlingSteve Bennett1-39/+127
*: Improve stack trace handling on errors *: Add 'info source' *: Add 'info stacktrace' *: Add errorInfo procedure to generate a human readable stack trace *: Add tests for stacktrace ------------------------------------------------------------------------
2010-10-15Fix a couple of bugsSteve Bennett1-0/+1
Fix unset ::var properly this time Ensure that jimsh exits with the correct exit code *: Previously a script that did 'exit 0' would exit with 7!
2010-10-15Enhance exec, bioSteve Bennett1-1/+1
Support @filehandle syntax Support for nommu Disable os.fork for nommu Remove trailing newline No need for binary escaping in bio module ------------------------------------------------------------------------
2010-10-15Implement some new featuresSteve Bennett1-35/+165
Implement 'lreplace' Implement 'string last' Implement 'pid' Implement 'info procs' Implement 'info script' Implement 'info patchlevel' as an alias for 'info version' Implement syslog extensions for jim Fix return code display in jim-interactive.c Make jim more compatible if JIM_TCL_COMPAT is set *: Use tcl_interactive rather than jim_interactive *: Use auto_path rather than jim_libpath Add "." to the lib search path, not "./" Fix a couple of files with CRLF line endings
2010-10-15Fix a couple of small bugsSteve Bennett1-4/+6
*: Need to null terminate the buffer in Jim_EvalFile() *: If an object is used a subst and a script, a crash will result. set x abc subst $x eval $x ------------------------------------------------------------------------
2010-10-15freebsd: make it compileWojciech A. Koszek1-0/+13
Casts to (void) are in order to silent GCC about unused variables. I didn't want to break ABI for the sake of clean compilation Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
2010-10-15errors: improve stack traces for return -code errorSteve Bennett1-12/+3
the file and line number for return -code error's are now added to the dumped stack trace. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
2010-10-15Remove intptr_tSteve Bennett1-5/+3
Signed-off-by: Steve Bennett <steveb@workware.net.au>