diff options
author | patthoyts <patthoyts> | 2007-01-31 00:49:05 +0000 |
---|---|---|
committer | patthoyts <patthoyts> | 2007-01-31 00:49:05 +0000 |
commit | 57b3c20128045e01dabc18fe8bf063006b1fe7b1 (patch) | |
tree | 0374318428e7dda5e0d3ee043fad45bcb1a9316c /jim.c | |
parent | e5ba64de6c1cc81beb43eb3ad302f649017af045 (diff) | |
download | jimtcl-57b3c20128045e01dabc18fe8bf063006b1fe7b1.zip jimtcl-57b3c20128045e01dabc18fe8bf063006b1fe7b1.tar.gz jimtcl-57b3c20128045e01dabc18fe8bf063006b1fe7b1.tar.bz2 |
Fixed the stdio declarations to work on Windows and likely on Solaris.
A number of MSVC related fixes including support for creating a jim dll
Diffstat (limited to 'jim.c')
-rw-r--r-- | jim.c | 81 |
1 files changed, 45 insertions, 36 deletions
@@ -2,7 +2,7 @@ * Copyright 2005 Salvatore Sanfilippo <antirez@invece.org> * Copyright 2005 Clemens Hintze <c.hintze@gmx.net> * - * $Id: jim.c,v 1.170 2006/11/06 21:48:57 antirez Exp $ + * $Id: jim.c,v 1.171 2007/01/31 00:49:05 patthoyts Exp $ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -455,7 +455,7 @@ static jim_wide JimPowWide(jim_wide b, jim_wide e) void Jim_Panic(Jim_Interp *interp, const char *fmt, ...) { va_list ap; - FILE *fp = interp ? interp->stderr : stderr; + FILE *fp = interp ? interp->stderr_ : stderr; va_start(ap, fmt); fprintf(fp, JIM_NL "JIM INTERPRETER PANIC: "); @@ -2171,6 +2171,13 @@ Jim_Obj *Jim_FormatString(Jim_Interp *interp, Jim_Obj *fmtObjPtr, c = (char) wideValue; Jim_AppendString(interp, resObjPtr, &c, 1); break; + case 'd': + if (Jim_GetWide(interp, objv[0], &wideValue) == JIM_ERR) { + Jim_FreeNewObj(interp, resObjPtr); + return NULL; + } + Jim_AppendObj(interp, resObjPtr, objv[0]); + break; case '%': Jim_AppendString(interp, resObjPtr, "%" , 1); break; @@ -3892,7 +3899,7 @@ int Jim_Collect(Jim_Interp *interp) Jim_AddHashEntry(&marks, &objPtr->internalRep.refValue.id, NULL); #ifdef JIM_DEBUG_GC - fprintf(interp->stdout, + fprintf(interp->stdout_, "MARK (reference): %d refcount: %d" JIM_NL, (int) objPtr->internalRep.refValue.id, objPtr->refCount); @@ -3931,7 +3938,7 @@ int Jim_Collect(Jim_Interp *interp) * was found. Mark it. */ Jim_AddHashEntry(&marks, &id, NULL); #ifdef JIM_DEBUG_GC - fprintf(interp->stdout,"MARK: %d" JIM_NL, (int)id); + fprintf(interp->stdout_,"MARK: %d" JIM_NL, (int)id); #endif p += JIM_REFERENCE_SPACE; } @@ -3951,7 +3958,7 @@ int Jim_Collect(Jim_Interp *interp) * this reference. */ if (Jim_FindHashEntry(&marks, refId) == NULL) { #ifdef JIM_DEBUG_GC - fprintf(interp->stdout,"COLLECTING %d" JIM_NL, (int)*refId); + fprintf(interp->stdout_,"COLLECTING %d" JIM_NL, (int)*refId); #endif collected++; /* Drop the reference, but call the @@ -4039,9 +4046,9 @@ Jim_Interp *Jim_CreateInterp(void) i->freeFramesList = NULL; i->prngState = NULL; i->evalRetcodeLevel = -1; - i->stdin = stdin; - i->stdout = stdout; - i->stderr = stderr; + i->stdin_ = stdin; + i->stdout_ = stdout; + i->stderr_ = stderr; /* Note that we can create objects only after the * interpreter liveList and freeList pointers are @@ -4110,17 +4117,17 @@ void Jim_FreeInterp(Jim_Interp *i) if (i->liveList != NULL) { Jim_Obj *objPtr = i->liveList; - fprintf(i->stdout,JIM_NL "-------------------------------------" JIM_NL); - fprintf(i->stdout,"Objects still in the free list:" JIM_NL); + fprintf(i->stdout_,JIM_NL "-------------------------------------" JIM_NL); + fprintf(i->stdout_,"Objects still in the free list:" JIM_NL); while(objPtr) { const char *type = objPtr->typePtr ? objPtr->typePtr->name : ""; - fprintf(i->stdout,"%p \"%-10s\": '%.20s' (refCount: %d)" JIM_NL, + fprintf(i->stdout_,"%p \"%-10s\": '%.20s' (refCount: %d)" JIM_NL, objPtr, type, objPtr->bytes ? objPtr->bytes : "(null)", objPtr->refCount); if (objPtr->typePtr == &sourceObjType) { - fprintf(i->stdout, "FILE %s LINE %d" JIM_NL, + fprintf(i->stdout_, "FILE %s LINE %d" JIM_NL, objPtr->internalRep.sourceValue.fileName, objPtr->internalRep.sourceValue.lineNumber); } @@ -4314,20 +4321,20 @@ int Jim_GetExitCode(Jim_Interp *interp) { FILE *Jim_SetStdin(Jim_Interp *interp, FILE *fp) { - if (fp != NULL) interp->stdin = fp; - return interp->stdin; + if (fp != NULL) interp->stdin_ = fp; + return interp->stdin_; } FILE *Jim_SetStdout(Jim_Interp *interp, FILE *fp) { - if (fp != NULL) interp->stdout = fp; - return interp->stdout; + if (fp != NULL) interp->stdout_ = fp; + return interp->stdout_; } FILE *Jim_SetStderr(Jim_Interp *interp, FILE *fp) { - if (fp != NULL) interp->stderr = fp; - return interp->stderr; + if (fp != NULL) interp->stderr_ = fp; + return interp->stderr_; } /* ----------------------------------------------------------------------------- @@ -7139,7 +7146,7 @@ JimScanAString(Jim_Interp *interp, const char *sdescr, const char *str) /* Handle range definitions */ int i; for (i=sdescr[0]; i <= sdescr[2]; ++i) - JimSetBit(charset, i); + JimSetBit(charset, (char)i); sdescr += 3; } else { /* Handle verbatim character definitions */ @@ -7525,11 +7532,13 @@ int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName) sprintf(buf, "%s%s", prefix, pathName); else sprintf(buf, "%s/%s", prefix, pathName); + printf("opening '%s'\n", buf); fp = fopen(buf, "r"); if (fp == NULL) continue; fclose(fp); handle = dlopen(buf, RTLD_LAZY); + printf("got handle %p\n", handle); } if (handle == NULL) { Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); @@ -8450,7 +8459,7 @@ int Jim_EvalObjBackground(Jim_Interp *interp, Jim_Obj *scriptObjPtr) Jim_IncrRefCount(objv[1]); if (Jim_EvalObjVector(interp, 2, objv) != JIM_OK) { /* Report the error to stderr. */ - fprintf(interp->stderr, "Background error:" JIM_NL); + fprintf(interp->stderr_, "Background error:" JIM_NL); Jim_PrintErrorMessage(interp); } Jim_DecrRefCount(interp, objv[0]); @@ -8983,8 +8992,8 @@ static int Jim_PutsCoreCommand(Jim_Interp *interp, int argc, } } str = Jim_GetString(argv[1], &len); - fwrite(str, 1, len, interp->stdout); - if (!nonewline) fprintf(interp->stdout, JIM_NL); + fwrite(str, 1, len, interp->stdout_); + if (!nonewline) fprintf(interp->stdout_, JIM_NL); return JIM_OK; } @@ -11716,9 +11725,9 @@ void Jim_PrintErrorMessage(Jim_Interp *interp) { int len, i; - fprintf(interp->stderr, "Runtime error, file \"%s\", line %d:" JIM_NL, + fprintf(interp->stderr_, "Runtime error, file \"%s\", line %d:" JIM_NL, interp->errorFileName, interp->errorLine); - fprintf(interp->stderr, " %s" JIM_NL, + fprintf(interp->stderr_, " %s" JIM_NL, Jim_GetString(interp->result, NULL)); Jim_ListLength(interp, interp->stackTrace, &len); for (i = 0; i < len; i+= 3) { @@ -11733,7 +11742,7 @@ void Jim_PrintErrorMessage(Jim_Interp *interp) Jim_ListIndex(interp, interp->stackTrace, i+2, &objPtr, JIM_NONE); line = Jim_GetString(objPtr, NULL); - fprintf(interp->stderr, + fprintf(interp->stderr_, "In procedure '%s' called at file \"%s\", line %s" JIM_NL, proc, file, line); } @@ -11744,11 +11753,11 @@ int Jim_InteractivePrompt(Jim_Interp *interp) int retcode = JIM_OK; Jim_Obj *scriptObjPtr; - fprintf(interp->stdout, "Welcome to Jim version %d.%d, " + fprintf(interp->stdout_, "Welcome to Jim version %d.%d, " "Copyright (c) 2005 Salvatore Sanfilippo" JIM_NL, JIM_VERSION / 100, JIM_VERSION % 100); - fprintf(interp->stdout, - "CVS ID: $Id: jim.c,v 1.170 2006/11/06 21:48:57 antirez Exp $" + fprintf(interp->stdout_, + "CVS ID: $Id: jim.c,v 1.171 2007/01/31 00:49:05 patthoyts Exp $" JIM_NL); Jim_SetVariableStrWithStr(interp, "jim_interactive", "1"); while (1) { @@ -11761,12 +11770,12 @@ int Jim_InteractivePrompt(Jim_Interp *interp) if (retcode != 0) { if (retcode >= 2 && retcode <= 6) - fprintf(interp->stdout, "[%s] . ", retcodestr[retcode]); + fprintf(interp->stdout_, "[%s] . ", retcodestr[retcode]); else - fprintf(interp->stdout, "[%d] . ", retcode); + fprintf(interp->stdout_, "[%d] . ", retcode); } else - fprintf(interp->stdout, ". "); - fflush(interp->stdout); + fprintf(interp->stdout_, ". "); + fflush(interp->stdout_); scriptObjPtr = Jim_NewStringObj(interp, "", 0); Jim_IncrRefCount(scriptObjPtr); while(1) { @@ -11774,7 +11783,7 @@ int Jim_InteractivePrompt(Jim_Interp *interp) char state; int len; - if (fgets(buf, 1024, interp->stdin) == NULL) { + if (fgets(buf, 1024, interp->stdin_) == NULL) { Jim_DecrRefCount(interp, scriptObjPtr); goto out; } @@ -11782,7 +11791,7 @@ int Jim_InteractivePrompt(Jim_Interp *interp) str = Jim_GetString(scriptObjPtr, &len); if (Jim_ScriptIsComplete(str, len, &state)) break; - fprintf(interp->stdout, "%c> ", state); + fprintf(interp->stdout_, "%c> ", state); fflush(stdout); } retcode = Jim_EvalObj(interp, scriptObjPtr); @@ -11794,8 +11803,8 @@ int Jim_InteractivePrompt(Jim_Interp *interp) exit(Jim_GetExitCode(interp)); } else { if (reslen) { - fwrite(result, 1, reslen, interp->stdout); - fprintf(interp->stdout, JIM_NL); + fwrite(result, 1, reslen, interp->stdout_); + fprintf(interp->stdout_, JIM_NL); } } } |