aboutsummaryrefslogtreecommitdiff
path: root/jim-package.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 10:43:22 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:39 +1000
commitc52b491011be94e796ce8c28a16249ca62256084 (patch)
tree194336bdc3b89bd7a299174785938209a68127cf /jim-package.c
parent16360e9b8aded842ab0d343969eb13354750b5bb (diff)
downloadjimtcl-c52b491011be94e796ce8c28a16249ca62256084.zip
jimtcl-c52b491011be94e796ce8c28a16249ca62256084.tar.gz
jimtcl-c52b491011be94e796ce8c28a16249ca62256084.tar.bz2
Improve error handling
*: 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 ------------------------------------------------------------------------
Diffstat (limited to 'jim-package.c')
-rw-r--r--jim-package.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/jim-package.c b/jim-package.c
index 3dad306..f5450b5 100644
--- a/jim-package.c
+++ b/jim-package.c
@@ -34,7 +34,12 @@ static char *JimFindPackage(Jim_Interp *interp, char **prefixes,
if (prefixes[i] == NULL) continue;
- snprintf(buf, sizeof(buf), "%s/%s.tcl", prefixes[i], pkgName);
+ if (strcmp(prefixes[i], ".") == 0) {
+ snprintf(buf, sizeof(buf), "%s.tcl", pkgName);
+ }
+ else {
+ snprintf(buf, sizeof(buf), "%s/%s.tcl", prefixes[i], pkgName);
+ }
if (access(buf, R_OK) == 0) {
return Jim_StrDup(buf);
@@ -185,6 +190,7 @@ static int package_cmd_require(Jim_Interp *interp, int argc, Jim_Obj *const *arg
const char *ver = Jim_PackageRequire(interp, Jim_GetString(argv[0], NULL), JIM_ERRMSG);
if (ver == NULL) {
+ /* package require failing is important enough to add to the stack */
return JIM_ERR_ADDSTACK;
}
Jim_SetResultString(interp, ver, -1);