aboutsummaryrefslogtreecommitdiff
path: root/jim-aio.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 10:34:41 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:38 +1000
commitea9e4bbb490eb2be047f46c83ff32f3d5243cd71 (patch)
tree4455b44de1432882def1462df4fc654b7609fa12 /jim-aio.c
parent1df9b19429212012b245a88b08ab37caef564d1c (diff)
downloadjimtcl-ea9e4bbb490eb2be047f46c83ff32f3d5243cd71.zip
jimtcl-ea9e4bbb490eb2be047f46c83ff32f3d5243cd71.tar.gz
jimtcl-ea9e4bbb490eb2be047f46c83ff32f3d5243cd71.tar.bz2
Enhance exec, bio
Support @filehandle syntax Support for nommu Disable os.fork for nommu Remove trailing newline No need for binary escaping in bio module ------------------------------------------------------------------------
Diffstat (limited to 'jim-aio.c')
-rw-r--r--jim-aio.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/jim-aio.c b/jim-aio.c
index 0d334df..cb8db31 100644
--- a/jim-aio.c
+++ b/jim-aio.c
@@ -64,6 +64,7 @@
typedef struct AioFile {
FILE *fp;
+ Jim_Obj *filename;
int type;
int OpenFlags; /* AIO_KEEPOPEN? keep FILE*, AIO_FDOPEN? FILE* created via fdopen */
int fd;
@@ -87,6 +88,8 @@ static void JimAioDelProc(Jim_Interp *interp, void *privData)
AioFile *af = privData;
JIM_NOTUSED(interp);
+ Jim_DecrRefCount(interp, af->filename);
+
if (!(af->OpenFlags & AIO_KEEPOPEN)) {
fclose(af->fp);
}
@@ -358,6 +361,8 @@ static int aio_cmd_accept(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
/* Create the file command */
af = Jim_Alloc(sizeof(*af));
af->fd = sock;
+ af->filename = Jim_NewStringObj(interp, "accept", -1);
+ Jim_IncrRefCount(af->filename);
af->fp = fdopen(sock,"r+");
af->OpenFlags = AIO_FDOPEN;
af->flags = fcntl(af->fd,F_GETFL);
@@ -611,6 +616,8 @@ static int JimAioOpenCommand(Jim_Interp *interp, int argc,
af->fp = fp;
af->fd = fileno(fp);
af->flags = fcntl(af->fd,F_GETFL);
+ af->filename = argv[1];
+ Jim_IncrRefCount(af->filename);
af->OpenFlags = OpenFlags;
af->rEvent = NULL;
af->wEvent = NULL;
@@ -750,6 +757,8 @@ static int JimAioSockCommand(Jim_Interp *interp, int argc,
af->fp = fp;
af->fd = sock;
af->OpenFlags = AIO_FDOPEN;
+ af->filename = argv[1];
+ Jim_IncrRefCount(af->filename);
af->flags = fcntl(af->fd,F_GETFL);
af->rEvent = NULL;
af->wEvent = NULL;