aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in4
-rw-r--r--configure.ac6
-rw-r--r--jim-aio.c22
-rw-r--r--jim-exec.c5
-rw-r--r--jim-file.c5
-rw-r--r--jim-package.c9
-rw-r--r--jim.c4
7 files changed, 37 insertions, 18 deletions
diff --git a/Makefile.in b/Makefile.in
index 26e61ea..4081dc8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -23,8 +23,11 @@ SDKHDRS := jim.h jim-subcmd.h
EXTENSIONS_OBJS := $(patsubst %,jim-%.o,$(EXTENSIONS))
+.PRECIOUS: jim-%.c
+
# Create C extensions from pure Tcl extensions
jim-%.c: %.tcl
+ echo $@ >>.clean
tclsh make-c-ext $*.tcl
# Emulate tinytcl
@@ -56,3 +59,4 @@ install:
clean:
rm -f *.o lib*.a $(TARGETS) load_extensions.c
+ if [ -f .clean ]; then rm -f `cat .clean` .clean; fi
diff --git a/configure.ac b/configure.ac
index 11f792e..9f7be8b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,7 +27,7 @@ AC_ARG_WITH(jim-ext,
[
if test "x$withval" != "xno" ; then
if test "x$withval" = "xall" ; then
- jim_extensions="tcl6 glob array aio clock eventloop exec file posix regexp signal"
+ jim_extensions="package readdir glob array clock exec file posix regexp signal tcl6 eventloop aio"
else
jim_extensions="$withval"
fi
@@ -35,8 +35,10 @@ AC_ARG_WITH(jim-ext,
]
)
AC_MSG_RESULT(enabling jim extensions: $jim_extensions)
+AC_SUBST(JIM_EXTENSIONS,$jim_extensions)
for i in $jim_extensions; do
- AC_SUBST(JIM_EXTENSIONS,$jim_extensions)
+ dnl AC_DEFINE_UNQUOTED(with_jim_ext_$i)
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -Dwith_jim_ext_$i"
done
AC_CHECK_FUNCS([ualarm],EXTRA_CFLAGS="$EXTRA_CFLAGS -DHAVE_UALARM")
diff --git a/jim-aio.c b/jim-aio.c
index 6604b85..f8f118a 100644
--- a/jim-aio.c
+++ b/jim-aio.c
@@ -50,12 +50,6 @@
#include <arpa/inet.h>
#include <netdb.h>
-/* FIX!!! add #if's to make JIM_SUPPORT_EVENTLOOP enable/disable
- * eventloop support compile time! */
-#ifndef JIM_SUPPORT_EVENTLOOP
-#define JIM_SUPPORT_EVENTLOOP 1
-#endif
-
#include "jim.h"
#include "jim-eventloop.h"
@@ -116,6 +110,7 @@ static void JimAioDelProc(Jim_Interp *interp, void *privData)
fclose(af->fp);
if (!af->OpenFlags == AIO_FDOPEN) // fp = fdopen(fd) !!
close(af->fd);
+#ifdef with_jim_ext_eventloop
if (af->rEvent) { // remove existing EventHandlers
Jim_DeleteFileHandler(interp,af->fp);
Jim_DecrRefCount(interp,af->rEvent);
@@ -128,6 +123,7 @@ static void JimAioDelProc(Jim_Interp *interp, void *privData)
Jim_DeleteFileHandler(interp,af->fp);
Jim_DecrRefCount(interp,af->eEvent);
}
+#endif
Jim_Free(af);
}
@@ -144,7 +140,9 @@ static int JimAioHandlerCommand(Jim_Interp *interp, int argc,
"gets", "read", "puts",
"flush", "eof",
"ndelay",
+#ifdef with_jim_ext_eventloop
"readable", "writable", "onexception",
+#endif
"accept",
NULL
};
@@ -153,7 +151,9 @@ static int JimAioHandlerCommand(Jim_Interp *interp, int argc,
OPT_GETS, OPT_READ, OPT_PUTS,
OPT_FLUSH, OPT_EOF,
OPT_NDELAY,
+#ifdef with_jim_ext_eventloop
OPT_READABLE, OPT_WRITABLE, OPT_EXCEPTION,
+#endif
OPT_ACCEPT,
};
@@ -394,7 +394,9 @@ static int JimAioHandlerCommand(Jim_Interp *interp, int argc,
#else
return JIM_ERR;
#endif
- } else if ( (option == OPT_READABLE)
+ }
+#ifdef with_jim_ext_eventloop
+ else if ( (option == OPT_READABLE)
|| (option == OPT_WRITABLE)
|| (option == OPT_EXCEPTION)
) {
@@ -450,7 +452,9 @@ static int JimAioHandlerCommand(Jim_Interp *interp, int argc,
Jim_WrongNumArgs(interp, 2, argv, "");
return JIM_ERR;
}
- } else if (option == OPT_ACCEPT) {
+ }
+#endif
+ else if (option == OPT_ACCEPT) {
return JimAioAcceptHelper(interp,af);
}
return JIM_OK;
@@ -653,7 +657,7 @@ static int JimAioSockCommand(Jim_Interp *interp, int argc,
static int JimAioAcceptHelper(Jim_Interp *interp, AioFile *serv_af )
{
int sock;
- int addrlen = sizeof(struct sockaddr_in);
+ socklen_t addrlen = sizeof(struct sockaddr_in);
AioFile *af;
char buf[AIO_CMD_LEN];
long fileId;
diff --git a/jim-exec.c b/jim-exec.c
index 762e593..5226094 100644
--- a/jim-exec.c
+++ b/jim-exec.c
@@ -736,13 +736,14 @@ Jim_CreatePipeline(Jim_Interp *interp, int argc, Jim_Obj *const *argv, int **pid
}
if (pid == 0) {
char errSpace[200];
+ int rc;
if ((inputId != -1 && dup2(inputId, 0) == -1)
|| (outputId != -1 && dup2(outputId, 1) == -1)
|| (errorId != -1 &&(dup2(errorId, 2) == -1))) {
static const char err[] = "forked process couldn't set up input/output\n";
- write(errorId < 0 ? 2 : errorId, err, strlen(err));
+ rc = write(errorId < 0 ? 2 : errorId, err, strlen(err));
_exit(1);
}
for (i = 3; (i <= outputId) || (i <= inputId) || (i <= errorId); i++) {
@@ -750,7 +751,7 @@ Jim_CreatePipeline(Jim_Interp *interp, int argc, Jim_Obj *const *argv, int **pid
}
execvp(execName, &arg_array[firstArg]);
sprintf(errSpace, "couldn't find \"%.150s\" to execute\n", arg_array[firstArg]);
- write(2, errSpace, strlen(errSpace));
+ rc = write(2, errSpace, strlen(errSpace));
_exit(1);
}
else {
diff --git a/jim-file.c b/jim-file.c
index 5600d65..547efdf 100644
--- a/jim-file.c
+++ b/jim-file.c
@@ -657,7 +657,10 @@ static int Jim_PwdCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
const int cwd_len=2048;
char *cwd=malloc(cwd_len);
- getcwd(cwd, cwd_len);
+
+ if (getcwd(cwd, cwd_len) != 0) {
+ return JIM_ERR;
+ }
Jim_SetResultString(interp, cwd, -1);
diff --git a/jim-package.c b/jim-package.c
index 4474381..3c206df 100644
--- a/jim-package.c
+++ b/jim-package.c
@@ -75,7 +75,7 @@ static int JimLoadPackage(Jim_Interp *interp, const char *name, int flags)
{
Jim_Obj *libPathObjPtr;
char **prefixes, *path;
- int prefixc, i, retCode = JIM_OK;
+ int prefixc, i, retCode = JIM_ERR;
libPathObjPtr = Jim_GetGlobalVariableStr(interp, "jim_libpath", JIM_NONE);
if (libPathObjPtr == NULL) {
@@ -105,13 +105,16 @@ static int JimLoadPackage(Jim_Interp *interp, const char *name, int flags)
/* Try to load/source it */
if (p && strcmp(p, ".tcl") == 0) {
retCode = Jim_EvalFile(interp, path);
- } else {
+ }
+#ifdef with_jim_ext_load
+ else {
retCode = Jim_LoadLibrary(interp, path);
}
+#endif
+ Jim_Free(path);
} else {
retCode = JIM_ERR;
}
- Jim_Free(path);
for (i = 0; i < prefixc; i++)
Jim_Free(prefixes[i]);
Jim_Free(prefixes);
diff --git a/jim.c b/jim.c
index 1a3f1f1..a794b03 100644
--- a/jim.c
+++ b/jim.c
@@ -8468,7 +8468,9 @@ int Jim_EvalFile(Jim_Interp *interp, const char *filename)
const int cwd_len=2048;
char *cwd=malloc(cwd_len);
Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- getcwd( cwd, cwd_len );
+ if (getcwd( cwd, cwd_len ) != 0) {
+ strcpy(cwd, "?");
+ }
Jim_AppendStrings(interp, Jim_GetResult(interp),
"Error loading script \"", filename, "\"",
" cwd: ", cwd,