X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fhelper%2Fjim.c;h=bb7483872413ca4f0fec5485eb90b5461b5c30a2;hb=73e5dffdfd310bd09b5497f40db98f50eedeb31a;hp=dfee1dd5a7d3ed4c42cddb2fc3fcd2de1980b88d;hpb=510db585fd3996ff075539aac413eee955bf23b2;p=openocd.git diff --git a/src/helper/jim.c b/src/helper/jim.c index dfee1dd5a7..bb74838724 100644 --- a/src/helper/jim.c +++ b/src/helper/jim.c @@ -53,6 +53,9 @@ #include #include #include + +typedef CYG_ADDRWORD intptr_t; + #include #include #include @@ -367,7 +370,7 @@ static int JimStringMatch(const char *pattern, int patternLen, return 0; } -int JimStringCompare(const char *s1, int l1, const char *s2, int l2, +static int JimStringCompare(const char *s1, int l1, const char *s2, int l2, int nocase) { unsigned char *u1 = (unsigned char*) s1, *u2 = (unsigned char*) s2; @@ -394,14 +397,14 @@ int JimStringCompare(const char *s1, int l1, const char *s2, int l2, /* Search 's1' inside 's2', starting to search from char 'index' of 's2'. * The index of the first occurrence of s1 in s2 is returned. * If s1 is not found inside s2, -1 is returned. */ -int JimStringFirst(const char *s1, int l1, const char *s2, int l2, int index) +static int JimStringFirst(const char *s1, int l1, const char *s2, int l2, int index_t) { int i; if (!l1 || !l2 || l1 > l2) return -1; - if (index < 0) index = 0; - s2 += index; - for (i = index; i <= l2-l1; i++) { + if (index_t < 0) index_t = 0; + s2 += index_t; + for (i = index_t; i <= l2-l1; i++) { if (memcmp(s2, s1, l1) == 0) return i; s2++; @@ -409,13 +412,13 @@ int JimStringFirst(const char *s1, int l1, const char *s2, int l2, int index) return -1; } -int Jim_WideToString(char *buf, jim_wide wideValue) +static int Jim_WideToString(char *buf, jim_wide wideValue) { const char *fmt = "%" JIM_WIDE_MODIFIER; return sprintf(buf, fmt, wideValue); } -int Jim_StringToWide(const char *str, jim_wide *widePtr, int base) +static int Jim_StringToWide(const char *str, jim_wide *widePtr, int base) { char *endptr; @@ -436,7 +439,7 @@ int Jim_StringToWide(const char *str, jim_wide *widePtr, int base) return JIM_OK; } -int Jim_StringToIndex(const char *str, int *intPtr) +static int Jim_StringToIndex(const char *str, int *intPtr) { char *endptr; @@ -469,7 +472,7 @@ static int JimFormatReference(char *buf, Jim_Reference *refPtr, jim_wide id) return JIM_REFERENCE_SPACE; } -int Jim_DoubleToString(char *buf, double doubleValue) +static int Jim_DoubleToString(char *buf, double doubleValue) { char *s; int len; @@ -493,7 +496,7 @@ int Jim_DoubleToString(char *buf, double doubleValue) return len; } -int Jim_StringToDouble(const char *str, double *doublePtr) +static int Jim_StringToDouble(const char *str, double *doublePtr) { char *endptr; @@ -583,7 +586,7 @@ void Jim_Free(void *ptr) { free(ptr); } -void *Jim_Realloc(void *ptr, int size) +static void *Jim_Realloc(void *ptr, int size) { /* We allocate zero length arrayes, etc. to use a single orthogonal codepath */ if (size == 0) @@ -603,7 +606,7 @@ char *Jim_StrDup(const char *s) return copy; } -char *Jim_StrDupLen(const char *s, int l) +static char *Jim_StrDupLen(const char *s, int l) { char *copy = Jim_Alloc(l + 1); @@ -642,7 +645,7 @@ static int JimInsertHashEntry(Jim_HashTable *ht, const void *key); /* -------------------------- hash functions -------------------------------- */ /* Thomas Wang's 32 bit Mix Function */ -unsigned int Jim_IntHashFunction(unsigned int key) +static unsigned int Jim_IntHashFunction(unsigned int key) { key += ~(key << 15); key ^= (key >> 10); @@ -653,15 +656,9 @@ unsigned int Jim_IntHashFunction(unsigned int key) return key; } -/* Identity hash function for integer keys */ -unsigned int Jim_IdentityHashFunction(unsigned int key) -{ - return key; -} - /* Generic hash function (we are using to multiply by 9 and add the byte * as Tcl) */ -unsigned int Jim_GenHashFunction(const unsigned char *buf, int len) +static unsigned int Jim_GenHashFunction(const unsigned char *buf, int len) { unsigned int h = 0; while (len--) @@ -756,18 +753,18 @@ int Jim_ExpandHashTable(Jim_HashTable *ht, unsigned int size) /* Add an element to the target hash table */ int Jim_AddHashEntry(Jim_HashTable *ht, const void *key, void *val) { - int index; + int index_t; Jim_HashEntry *entry; /* Get the index of the new element, or -1 if * the element already exists. */ - if ((index = JimInsertHashEntry(ht, key)) == -1) + if ((index_t = JimInsertHashEntry(ht, key)) == -1) return JIM_ERR; /* Allocates the memory and stores key */ entry = Jim_Alloc(sizeof(*entry)); - entry->next = ht->table[index]; - ht->table[index] = entry; + entry->next = ht->table[index_t]; + ht->table[index_t] = entry; /* Set the hash entry fields. */ Jim_SetHashKey(ht, entry, key); @@ -1165,7 +1162,7 @@ static char *JimParserGetToken(struct JimParserCtx *pc, /* Initialize a parser context. * 'prg' is a pointer to the program text, linenr is the line * number of the first line contained in the program. */ -void JimParserInit(struct JimParserCtx *pc, const char *prg, +static void JimParserInit(struct JimParserCtx *pc, const char *prg, int len, int linenr) { pc->prg = prg; @@ -1703,7 +1700,7 @@ int Jim_ScriptIsComplete(const char *s, int len, char *stateCharPtr) static int JimParseListSep(struct JimParserCtx *pc); static int JimParseListStr(struct JimParserCtx *pc); -int JimParseList(struct JimParserCtx *pc) +static int JimParseList(struct JimParserCtx *pc) { if (pc->len == 0) { pc->tstart = pc->tend = pc->p; @@ -2016,7 +2013,7 @@ Jim_Obj *Jim_NewStringObjNoAlloc(Jim_Interp *interp, char *s, int len) /* Low-level string append. Use it only against objects * of type "string". */ -void StringAppendString(Jim_Obj *objPtr, const char *str, int len) +static void StringAppendString(Jim_Obj *objPtr, const char *str, int len) { int needlen; @@ -2037,16 +2034,6 @@ void StringAppendString(Jim_Obj *objPtr, const char *str, int len) objPtr->length += len; } -/* Low-level wrapper to append an object. */ -void StringAppendObj(Jim_Obj *objPtr, Jim_Obj *appendObjPtr) -{ - int len; - const char *str; - - str = Jim_GetString(appendObjPtr, &len); - StringAppendString(objPtr, str, len); -} - /* Higher level API to append strings to objects. */ void Jim_AppendString(Jim_Interp *interp, Jim_Obj *objPtr, const char *str, int len) @@ -2129,7 +2116,7 @@ int Jim_StringMatchObj(Jim_Obj *patternObjPtr, Jim_Obj *objPtr, return JimStringMatch(pattern, patternLen, string, stringLen, nocase); } -int Jim_StringCompareObj(Jim_Obj *firstObjPtr, +static int Jim_StringCompareObj(Jim_Obj *firstObjPtr, Jim_Obj *secondObjPtr, int nocase) { const char *s1, *s2; @@ -2145,11 +2132,11 @@ int Jim_StringCompareObj(Jim_Obj *firstObjPtr, * This function may return negative values, or values * bigger or equal to the length of the list if the index * is out of range. */ -static int JimRelToAbsIndex(int len, int index) +static int JimRelToAbsIndex(int len, int index_t) { - if (index < 0) - return len + index; - return index; + if (index_t < 0) + return len + index_t; + return index_t; } /* Convert a pair of index as normalize by JimRelToAbsIndex(), @@ -2214,7 +2201,7 @@ static Jim_Obj *JimStringToLower(Jim_Interp *interp, Jim_Obj *strObjPtr) memcpy(buf, strObjPtr->bytes, strObjPtr->length + 1); for (i = 0; i < strObjPtr->length; i++) - buf[i] = tolower(buf[i]); + buf[i] = tolower((unsigned)buf[i]); return Jim_NewStringObjNoAlloc(interp, buf, strObjPtr->length); } @@ -2230,7 +2217,7 @@ static Jim_Obj *JimStringToUpper(Jim_Interp *interp, Jim_Obj *strObjPtr) memcpy(buf, strObjPtr->bytes, strObjPtr->length + 1); for (i = 0; i < strObjPtr->length; i++) - buf[i] = toupper(buf[i]); + buf[i] = toupper((unsigned)buf[i]); return Jim_NewStringObjNoAlloc(interp, buf, strObjPtr->length); } @@ -2344,7 +2331,7 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr, case '8': case '9': accum = 0; - while (isdigit(*fmt) && (fmtLen > 0)) { + while (isdigit((unsigned)*fmt) && (fmtLen > 0)) { accum = (accum * 10) + (*fmt - '0'); fmt++; fmtLen--; } @@ -2576,7 +2563,7 @@ int Jim_CompareStringImmediate(Jim_Interp *interp, Jim_Obj *objPtr, } } -int qsortCompareStringPointers(const void *a, const void *b) +static int qsortCompareStringPointers(const void *a, const void *b) { char * const *sa = (char * const *)a; char * const *sb = (char * const *)b; @@ -3036,12 +3023,12 @@ int SetScriptFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr) JimParserInit(&parser, scriptText, scriptTextLen, initialLineNumber); while (!JimParserEof(&parser)) { - char *token; + char *token_t; int len, type, linenr; JimParseScript(&parser); - token = JimParserGetToken(&parser, &len, &type, &linenr); - ScriptObjAddToken(interp, script, token, len, type, + token_t = JimParserGetToken(&parser, &len, &type, &linenr); + ScriptObjAddToken(interp, script, token_t, len, type, propagateSourceInfo ? script->fileName : NULL, linenr); } @@ -3129,7 +3116,7 @@ int SetScriptFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr) return JIM_OK; } -ScriptObj *Jim_GetScript(Jim_Interp *interp, Jim_Obj *objPtr) +static ScriptObj *Jim_GetScript(Jim_Interp *interp, Jim_Obj *objPtr) { if (objPtr->typePtr != &scriptObjType) { SetScriptFromAny(interp, objPtr); @@ -3896,7 +3883,7 @@ void DupDictSubstInternalRep(Jim_Interp *interp, Jim_Obj *srcPtr, * object that is *guaranteed* to be in the form VARNAME(INDEX). * The 'index' part is [subst]ituted, and is used to lookup a key inside * the [dict]ionary contained in variable VARNAME. */ -Jim_Obj *Jim_ExpandDictSugar(Jim_Interp *interp, Jim_Obj *objPtr) +static Jim_Obj *Jim_ExpandDictSugar(Jim_Interp *interp, Jim_Obj *objPtr) { Jim_Obj *varObjPtr, *keyObjPtr, *dictObjPtr, *resObjPtr; Jim_Obj *substKeyObjPtr = NULL; @@ -4018,7 +4005,7 @@ static void JimReferencesHTValDestructor(void *interp, void *val) Jim_Free(val); } -unsigned int JimReferencesHTHashFunction(const void *key) +static unsigned int JimReferencesHTHashFunction(const void *key) { /* Only the least significant bits are used. */ const jim_wide *widePtr = key; @@ -4026,15 +4013,7 @@ unsigned int JimReferencesHTHashFunction(const void *key) return Jim_IntHashFunction(intValue); } -unsigned int JimReferencesHTDoubleHashFunction(const void *key) -{ - /* Only the least significant bits are used. */ - const jim_wide *widePtr = key; - unsigned int intValue = (unsigned int) *widePtr; - return intValue; /* identity function. */ -} - -const void *JimReferencesHTKeyDup(void *privdata, const void *key) +static const void *JimReferencesHTKeyDup(void *privdata, const void *key) { void *copy = Jim_Alloc(sizeof(jim_wide)); JIM_NOTUSED(privdata); @@ -4043,7 +4022,7 @@ const void *JimReferencesHTKeyDup(void *privdata, const void *key) return copy; } -int JimReferencesHTKeyCompare(void *privdata, const void *key1, +static int JimReferencesHTKeyCompare(void *privdata, const void *key1, const void *key2) { JIM_NOTUSED(privdata); @@ -4051,7 +4030,7 @@ int JimReferencesHTKeyCompare(void *privdata, const void *key1, return memcmp(key1, key2, sizeof(jim_wide)) == 0; } -void JimReferencesHTKeyDestructor(void *privdata, const void *key) +static void JimReferencesHTKeyDestructor(void *privdata, const void *key) { JIM_NOTUSED(privdata); @@ -4103,7 +4082,7 @@ static int isrefchar(int c) return 0; } -int SetReferenceFromAny(Jim_Interp *interp, Jim_Obj *objPtr) +static int SetReferenceFromAny(Jim_Interp *interp, Jim_Obj *objPtr) { jim_wide wideValue; int i, len; @@ -4502,7 +4481,7 @@ void Jim_FreeInterp(Jim_Interp *i) /* Check that the live object list is empty, otherwise * there is a memory leak. */ if (i->liveList != NULL) { - Jim_Obj *objPtr = i->liveList; + objPtr = i->liveList; Jim_fprintf(i, i->cookie_stdout,JIM_NL "-------------------------------------" JIM_NL); Jim_fprintf(i, i->cookie_stdout,"Objects still in the free list:" JIM_NL); @@ -5103,7 +5082,7 @@ testbrace: /* Returns the malloc-ed representation of a string * using backslash to quote special chars. */ -char *BackslashQuoteString(const char *s, int len, int *qlenPtr) +static char *BackslashQuoteString(const char *s, int len, int *qlenPtr) { char *q = Jim_Alloc(len*2 + 1), *p; @@ -5167,7 +5146,7 @@ void UpdateStringOfList(struct Jim_Obj *objPtr) realLength = 0; for (i = 0; i < objPtr->internalRep.listValue.len; i++) { int len, qlen; - const char *strRep = Jim_GetString(ele[i], &len); + strRep = Jim_GetString(ele[i], &len); char *q; switch (quotingType[i]) { @@ -5354,7 +5333,7 @@ void ListAppendElement(Jim_Obj *listPtr, Jim_Obj *objPtr) * * NOTE: this function can be called only against objects * with internal type of List. */ -void ListInsertElements(Jim_Obj *listPtr, int index, int elemc, +static void ListInsertElements(Jim_Obj *listPtr, int index_t, int elemc, Jim_Obj *const *elemVec) { int currentLen = listPtr->internalRep.listValue.len; @@ -5370,8 +5349,8 @@ void ListInsertElements(Jim_Obj *listPtr, int index, int elemc, sizeof(Jim_Obj*)*maxLen); listPtr->internalRep.listValue.maxLen = maxLen; } - point = listPtr->internalRep.listValue.ele + index; - memmove(point + elemc, point, (currentLen-index) * sizeof(Jim_Obj*)); + point = listPtr->internalRep.listValue.ele + index_t; + memmove(point + elemc, point, (currentLen-index_t) * sizeof(Jim_Obj*)); for (i = 0; i < elemc; ++i) { point[i] = elemVec[i]; Jim_IncrRefCount(point[i]); @@ -5381,7 +5360,7 @@ void ListInsertElements(Jim_Obj *listPtr, int index, int elemc, /* Appends every element of appendListPtr into listPtr. * Both have to be of the list type. */ -void ListAppendList(Jim_Obj *listPtr, Jim_Obj *appendListPtr) +static void ListAppendList(Jim_Obj *listPtr, Jim_Obj *appendListPtr) { int i, oldLen = listPtr->internalRep.listValue.len; int appendLen = appendListPtr->internalRep.listValue.len; @@ -5430,57 +5409,57 @@ void Jim_ListLength(Jim_Interp *interp, Jim_Obj *listPtr, int *intPtr) *intPtr = listPtr->internalRep.listValue.len; } -void Jim_ListInsertElements(Jim_Interp *interp, Jim_Obj *listPtr, int index, +void Jim_ListInsertElements(Jim_Interp *interp, Jim_Obj *listPtr, int index_t, int objc, Jim_Obj *const *objVec) { if (Jim_IsShared(listPtr)) Jim_Panic(interp,"Jim_ListInsertElement called with shared object"); if (listPtr->typePtr != &listObjType) SetListFromAny(interp, listPtr); - if (index >= 0 && index > listPtr->internalRep.listValue.len) - index = listPtr->internalRep.listValue.len; - else if (index < 0) - index = 0; + if (index_t >= 0 && index_t > listPtr->internalRep.listValue.len) + index_t = listPtr->internalRep.listValue.len; + else if (index_t < 0) + index_t = 0; Jim_InvalidateStringRep(listPtr); - ListInsertElements(listPtr, index, objc, objVec); + ListInsertElements(listPtr, index_t, objc, objVec); } -int Jim_ListIndex(Jim_Interp *interp, Jim_Obj *listPtr, int index, +int Jim_ListIndex(Jim_Interp *interp, Jim_Obj *listPtr, int index_t, Jim_Obj **objPtrPtr, int flags) { if (listPtr->typePtr != &listObjType) SetListFromAny(interp, listPtr); - if ((index >= 0 && index >= listPtr->internalRep.listValue.len) || - (index < 0 && (-index-1) >= listPtr->internalRep.listValue.len)) { + if ((index_t >= 0 && index_t >= listPtr->internalRep.listValue.len) || + (index_t < 0 && (-index_t-1) >= listPtr->internalRep.listValue.len)) { if (flags & JIM_ERRMSG) { Jim_SetResultString(interp, "list index out of range", -1); } return JIM_ERR; } - if (index < 0) - index = listPtr->internalRep.listValue.len + index; - *objPtrPtr = listPtr->internalRep.listValue.ele[index]; + if (index_t < 0) + index_t = listPtr->internalRep.listValue.len + index_t; + *objPtrPtr = listPtr->internalRep.listValue.ele[index_t]; return JIM_OK; } -static int ListSetIndex(Jim_Interp *interp, Jim_Obj *listPtr, int index, +static int ListSetIndex(Jim_Interp *interp, Jim_Obj *listPtr, int index_t, Jim_Obj *newObjPtr, int flags) { if (listPtr->typePtr != &listObjType) SetListFromAny(interp, listPtr); - if ((index >= 0 && index >= listPtr->internalRep.listValue.len) || - (index < 0 && (-index-1) >= listPtr->internalRep.listValue.len)) { + if ((index_t >= 0 && index_t >= listPtr->internalRep.listValue.len) || + (index_t < 0 && (-index_t-1) >= listPtr->internalRep.listValue.len)) { if (flags & JIM_ERRMSG) { Jim_SetResultString(interp, - "list index out of range", -1); + "list index_t out of range", -1); } return JIM_ERR; } - if (index < 0) - index = listPtr->internalRep.listValue.len + index; - Jim_DecrRefCount(interp, listPtr->internalRep.listValue.ele[index]); - listPtr->internalRep.listValue.ele[index] = newObjPtr; + if (index_t < 0) + index_t = listPtr->internalRep.listValue.len + index_t; + Jim_DecrRefCount(interp, listPtr->internalRep.listValue.ele[index_t]); + listPtr->internalRep.listValue.ele[index_t] = newObjPtr; Jim_IncrRefCount(newObjPtr); return JIM_OK; } @@ -5492,7 +5471,7 @@ int Jim_SetListIndex(Jim_Interp *interp, Jim_Obj *varNamePtr, Jim_Obj *const *indexv, int indexc, Jim_Obj *newObjPtr) { Jim_Obj *varObjPtr, *objPtr, *listObjPtr; - int shared, i, index; + int shared, i, index_t; varObjPtr = objPtr = Jim_GetVariable(interp, varNamePtr, JIM_ERRMSG); if (objPtr == NULL) @@ -5501,21 +5480,21 @@ int Jim_SetListIndex(Jim_Interp *interp, Jim_Obj *varNamePtr, varObjPtr = objPtr = Jim_DuplicateObj(interp, objPtr); for (i = 0; i < indexc-1; i++) { listObjPtr = objPtr; - if (Jim_GetIndex(interp, indexv[i], &index) != JIM_OK) + if (Jim_GetIndex(interp, indexv[i], &index_t) != JIM_OK) goto err; - if (Jim_ListIndex(interp, listObjPtr, index, &objPtr, + if (Jim_ListIndex(interp, listObjPtr, index_t, &objPtr, JIM_ERRMSG) != JIM_OK) { goto err; } if (Jim_IsShared(objPtr)) { objPtr = Jim_DuplicateObj(interp, objPtr); - ListSetIndex(interp, listObjPtr, index, objPtr, JIM_NONE); + ListSetIndex(interp, listObjPtr, index_t, objPtr, JIM_NONE); } Jim_InvalidateStringRep(listObjPtr); } - if (Jim_GetIndex(interp, indexv[indexc-1], &index) != JIM_OK) + if (Jim_GetIndex(interp, indexv[indexc-1], &index_t) != JIM_OK) goto err; - if (ListSetIndex(interp, objPtr, index, newObjPtr, JIM_ERRMSG) == JIM_ERR) + if (ListSetIndex(interp, objPtr, index_t, newObjPtr, JIM_ERRMSG) == JIM_ERR) goto err; Jim_InvalidateStringRep(objPtr); Jim_InvalidateStringRep(varObjPtr); @@ -5587,7 +5566,8 @@ Jim_Obj *Jim_ConcatObj(Jim_Interp *interp, int objc, Jim_Obj *const *objv) /* Returns a list composed of the elements in the specified range. * first and start are directly accepted as Jim_Objects and * processed for the end?-index? case. */ -Jim_Obj *Jim_ListRange(Jim_Interp *interp, Jim_Obj *listObjPtr, Jim_Obj *firstObjPtr, Jim_Obj *lastObjPtr) +static Jim_Obj *Jim_ListRange(Jim_Interp *interp, Jim_Obj *listObjPtr, + Jim_Obj *firstObjPtr, Jim_Obj *lastObjPtr) { int first, last; int len, rangeLen; @@ -5615,7 +5595,7 @@ static int SetDictFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr); * * Keys and Values are Jim objects. */ -unsigned int JimObjectHTHashFunction(const void *key) +static unsigned int JimObjectHTHashFunction(const void *key) { const char *str; Jim_Obj *objPtr = (Jim_Obj*) key; @@ -5626,7 +5606,7 @@ unsigned int JimObjectHTHashFunction(const void *key) return h; } -int JimObjectHTKeyCompare(void *privdata, const void *key1, const void *key2) +static int JimObjectHTKeyCompare(void *privdata, const void *key1, const void *key2) { JIM_NOTUSED(privdata); @@ -5742,7 +5722,7 @@ void UpdateStringOfDict(struct Jim_Obj *objPtr) realLength = 0; for (i = 0; i < objc; i++) { int len, qlen; - const char *strRep = Jim_GetString(objv[i], &len); + strRep = Jim_GetString(objv[i], &len); char *q; switch (quotingType[i]) { @@ -5864,7 +5844,7 @@ static void DictAddElement(Jim_Interp *interp, Jim_Obj *objPtr, /* Add an element, higher-level interface for DictAddElement(). * If valueObjPtr == NULL, the key is removed if it exists. */ -int Jim_DictAddElement(Jim_Interp *interp, Jim_Obj *objPtr, +static int Jim_DictAddElement(Jim_Interp *interp, Jim_Obj *objPtr, Jim_Obj *keyObjPtr, Jim_Obj *valueObjPtr) { if (Jim_IsShared(objPtr)) @@ -6047,21 +6027,21 @@ void UpdateStringOfIndex(struct Jim_Obj *objPtr) int SetIndexFromAny(Jim_Interp *interp, Jim_Obj *objPtr) { - int index, end = 0; + int index_t, end = 0; const char *str; /* Get the string representation */ str = Jim_GetString(objPtr, NULL); /* Try to convert into an index */ if (!strcmp(str, "end")) { - index = 0; + index_t = 0; end = 1; } else { if (!strncmp(str, "end-", 4)) { str += 4; end = 1; } - if (Jim_StringToIndex(str, &index) != JIM_OK) { + if (Jim_StringToIndex(str, &index_t) != JIM_OK) { Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); Jim_AppendStrings(interp, Jim_GetResult(interp), "bad index \"", Jim_GetString(objPtr, NULL), "\": " @@ -6070,16 +6050,16 @@ int SetIndexFromAny(Jim_Interp *interp, Jim_Obj *objPtr) } } if (end) { - if (index < 0) - index = INT_MAX; + if (index_t < 0) + index_t = INT_MAX; else - index = -(index + 1); - } else if (!end && index < 0) - index = -INT_MAX; + index_t = -(index_t + 1); + } else if (index_t < 0) + index_t = -INT_MAX; /* Free the old internal repr and set the new one. */ Jim_FreeIntRep(interp, objPtr); objPtr->typePtr = &indexObjType; - objPtr->internalRep.indexValue = index; + objPtr->internalRep.indexValue = index_t; return JIM_OK; } @@ -6279,7 +6259,7 @@ static struct Jim_ExprOperator Jim_ExprOperators[] = { #define JIM_EXPR_OPERATORS_NUM \ (sizeof(Jim_ExprOperators)/sizeof(struct Jim_ExprOperator)) -int JimParseExpression(struct JimParserCtx *pc) +static int JimParseExpression(struct JimParserCtx *pc) { /* Discard spaces and quoted newline */ while (*(pc->p) == ' ' || @@ -6427,7 +6407,7 @@ int JimParseExprOperator(struct JimParserCtx *pc) return JIM_OK; } -struct Jim_ExprOperator *JimExprOperatorInfo(const char *opname) +static struct Jim_ExprOperator *JimExprOperatorInfo(const char *opname) { int i; for (i = 0; i < (signed)JIM_EXPR_OPERATORS_NUM; i++) @@ -6437,7 +6417,7 @@ struct Jim_ExprOperator *JimExprOperatorInfo(const char *opname) return NULL; } -struct Jim_ExprOperator *JimExprOperatorInfoByOpcode(int opcode) +static struct Jim_ExprOperator *JimExprOperatorInfoByOpcode(int opcode) { int i; for (i = 0; i < (signed)JIM_EXPR_OPERATORS_NUM; i++) @@ -6614,20 +6594,20 @@ static void ExprShareLiterals(Jim_Interp *interp, ExprByteCode *expr, static void ExprMakeLazy(Jim_Interp *interp, ExprByteCode *expr) { while (1) { - int index = -1, leftindex, arity, i, offset; + int index_t = -1, leftindex, arity, i, offset; Jim_ExprOperator *op; /* Search for || or && */ for (i = 0; i < expr->len; i++) { if (expr->opcode[i] == JIM_EXPROP_LOGICAND || expr->opcode[i] == JIM_EXPROP_LOGICOR) { - index = i; + index_t = i; break; } } - if (index == -1) return; + if (index_t == -1) return; /* Search for the end of the first operator */ - leftindex = index-1; + leftindex = index_t-1; arity = 1; while (arity) { switch (expr->opcode[leftindex]) { @@ -6657,23 +6637,23 @@ static void ExprMakeLazy(Jim_Interp *interp, ExprByteCode *expr) memmove(&expr->obj[leftindex + 2], &expr->obj[leftindex], sizeof(Jim_Obj*)*(expr->len-leftindex)); expr->len += 2; - index += 2; - offset = (index-leftindex)-1; - Jim_DecrRefCount(interp, expr->obj[index]); - if (expr->opcode[index] == JIM_EXPROP_LOGICAND) { + index_t += 2; + offset = (index_t-leftindex)-1; + Jim_DecrRefCount(interp, expr->obj[index_t]); + if (expr->opcode[index_t] == JIM_EXPROP_LOGICAND) { expr->opcode[leftindex + 1] = JIM_EXPROP_LOGICAND_LEFT; - expr->opcode[index] = JIM_EXPROP_LOGICAND_RIGHT; + expr->opcode[index_t] = JIM_EXPROP_LOGICAND_RIGHT; expr->obj[leftindex + 1] = Jim_NewStringObj(interp, "&L", -1); - expr->obj[index] = Jim_NewStringObj(interp, "&R", -1); + expr->obj[index_t] = Jim_NewStringObj(interp, "&R", -1); } else { expr->opcode[leftindex + 1] = JIM_EXPROP_LOGICOR_LEFT; - expr->opcode[index] = JIM_EXPROP_LOGICOR_RIGHT; + expr->opcode[index_t] = JIM_EXPROP_LOGICOR_RIGHT; expr->obj[leftindex + 1] = Jim_NewStringObj(interp, "|L", -1); - expr->obj[index] = Jim_NewStringObj(interp, "|R", -1); + expr->obj[index_t] = Jim_NewStringObj(interp, "|R", -1); } expr->opcode[leftindex] = JIM_EXPROP_NUMBER; expr->obj[leftindex] = Jim_NewIntObj(interp, offset); - Jim_IncrRefCount(expr->obj[index]); + Jim_IncrRefCount(expr->obj[index_t]); Jim_IncrRefCount(expr->obj[leftindex]); Jim_IncrRefCount(expr->obj[leftindex + 1]); } @@ -6837,7 +6817,7 @@ err: /* we jump here on syntax/compile errors. */ return JIM_ERR; } -ExprByteCode *Jim_GetExpression(Jim_Interp *interp, Jim_Obj *objPtr) +static ExprByteCode *Jim_GetExpression(Jim_Interp *interp, Jim_Obj *objPtr) { if (objPtr->typePtr != &exprObjType) { if (SetExprFromAny(interp, objPtr) != JIM_OK) @@ -7060,7 +7040,6 @@ trydouble: "Got floating-point value where integer was expected", -1); error = 1; goto err; - break; case JIM_EXPROP_ADD: dC = dA + dB; break; case JIM_EXPROP_SUB: dC = dA-dB; break; case JIM_EXPROP_MUL: dC = dA*dB; break; @@ -7068,6 +7047,7 @@ trydouble: case JIM_EXPROP_GT: dC = dA > dB; break; case JIM_EXPROP_LTE: dC = dA <= dB; break; case JIM_EXPROP_GTE: dC = dA >= dB; break; + /* FIXME comparing floats for equality/inequality is bad juju */ case JIM_EXPROP_NUMEQ: dC = dA == dB; break; case JIM_EXPROP_NUMNE: dC = dA != dB; break; case JIM_EXPROP_LOGICAND_LEFT: @@ -7555,9 +7535,9 @@ JimScanAString(Jim_Interp *interp, const char *sdescr, const char *str) while (*sdescr) { if (sdescr[1] == '-' && sdescr[2] != 0) { /* Handle range definitions */ - int i; - for (i = sdescr[0]; i <= sdescr[2]; ++i) - JimSetBit(charset, (char)i); + int i_t; + for (i_t = sdescr[0]; i_t <= sdescr[2]; ++i_t) + JimSetBit(charset, (char)i_t); sdescr += 3; } else { /* Handle verbatim character definitions */ @@ -7588,7 +7568,7 @@ JimScanAString(Jim_Interp *interp, const char *sdescr, const char *str) * already scanned thru */ static int ScanOneEntry(Jim_Interp *interp, const char *str, long pos, - ScanFmtStringObj *fmtObj, long index, Jim_Obj **valObjPtr) + ScanFmtStringObj *fmtObj, long index_t, Jim_Obj **valObjPtr) { # define MAX_SIZE (sizeof(jim_wide) > sizeof(double) \ ? sizeof(jim_wide) \ @@ -7596,7 +7576,7 @@ static int ScanOneEntry(Jim_Interp *interp, const char *str, long pos, char buffer[MAX_SIZE]; char *value = buffer; const char *tok; - const ScanFmtPartDescr *descr = &fmtObj->descr[index]; + const ScanFmtPartDescr *descr = &fmtObj->descr[index_t]; size_t sLen = strlen(&str[pos]), scanned = 0; size_t anchor = pos; int i; @@ -7914,7 +7894,7 @@ const char *dlerror(void) } #endif /* WIN32 */ -int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName) +static int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName) { Jim_Obj *libPathObjPtr; int prefixc, i; @@ -7989,7 +7969,7 @@ err: return JIM_ERR; } #else /* JIM_DYNLIB */ -int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName) +static int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName) { JIM_NOTUSED(interp); JIM_NOTUSED(pathName); @@ -8529,7 +8509,7 @@ err: * (and increments argc by reference accordingly), performing * expansion of the list object if 'expand' is non-zero, or * just adding objPtr to argv if 'expand' is zero. */ -void Jim_ExpandArgument(Jim_Interp *interp, Jim_Obj ***argv, +static void Jim_ExpandArgument(Jim_Interp *interp, Jim_Obj ***argv, int *argcPtr, int expand, Jim_Obj *objPtr) { if (!expand) { @@ -9083,7 +9063,7 @@ static Jim_ObjType substObjType = { /* This method takes the string representation of an object * as a Tcl string where to perform [subst]itution, and generates * the pre-parsed internal representation. */ -int SetSubstFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr, int flags) +static int SetSubstFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr, int flags) { int scriptTextLen; const char *scriptText = Jim_GetString(objPtr, &scriptTextLen); @@ -9117,7 +9097,7 @@ int SetSubstFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr, int flags) return JIM_OK; } -ScriptObj *Jim_GetSubst(Jim_Interp *interp, Jim_Obj *objPtr, int flags) +static ScriptObj *Jim_GetSubst(Jim_Interp *interp, Jim_Obj *objPtr, int flags) { struct ScriptObj *script = Jim_GetIntRepPtr(objPtr); @@ -9316,6 +9296,7 @@ void JimRegisterCoreApi(Jim_Interp *interp) JIM_REGISTER_API(CollectIfNeeded); JIM_REGISTER_API(GetIndex); JIM_REGISTER_API(NewListObj); + JIM_REGISTER_API(ListInsertElements); JIM_REGISTER_API(ListAppendElement); JIM_REGISTER_API(ListAppendList); JIM_REGISTER_API(ListLength); @@ -9886,8 +9867,7 @@ static int Jim_WhileCoreCommand(Jim_Interp *interp, int argc, Jim_GetWide(interp, objPtr, &wideValueB) != JIM_OK) { Jim_DecrRefCount(interp, varAObjPtr); - if (varBObjPtr) - Jim_DecrRefCount(interp, varBObjPtr); + Jim_DecrRefCount(interp, varBObjPtr); goto noopt; } } @@ -9940,12 +9920,12 @@ noopt: /* The general purpose implementation of while starts here */ while (1) { - int boolean, retval; + int local_boolean, retval; if ((retval = Jim_GetBoolFromExpr(interp, argv[1], - &boolean)) != JIM_OK) + &local_boolean)) != JIM_OK) return retval; - if (!boolean) break; + if (!local_boolean) break; if ((retval = Jim_EvalObj(interp, argv[2])) != JIM_OK) { switch (retval) { case JIM_BREAK: @@ -10144,13 +10124,13 @@ evalstart: if ((retval = Jim_EvalObj(interp, argv[1])) != JIM_OK) return retval; while (1) { - int boolean; + int local_boolean; testcond: /* Test the condition */ - if ((retval = Jim_GetBoolFromExpr(interp, argv[2], &boolean)) + if ((retval = Jim_GetBoolFromExpr(interp, argv[2], &local_boolean)) != JIM_OK) return retval; - if (!boolean) break; + if (!local_boolean) break; /* Eval body */ if ((retval = Jim_EvalObj(interp, argv[4])) != JIM_OK) { switch (retval) { @@ -10295,13 +10275,13 @@ static int Jim_LmapCoreCommand(Jim_Interp *interp, int argc, static int Jim_IfCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *argv) { - int boolean, retval, current = 1, falsebody = 0; + int local_boolean, retval, current = 1, falsebody = 0; if (argc >= 3) { while (1) { /* Far not enough arguments given! */ if (current >= argc) goto err; if ((retval = Jim_GetBoolFromExpr(interp, - argv[current++], &boolean)) + argv[current++], &local_boolean)) != JIM_OK) return retval; /* There lacks something, isn't it? */ @@ -10310,7 +10290,7 @@ static int Jim_IfCoreCommand(Jim_Interp *interp, int argc, "then")) current++; /* Tsk tsk, no then-clause? */ if (current >= argc) goto err; - if (boolean) + if (local_boolean) return Jim_EvalObj(interp, argv[current]); /* Ok: no else-clause follows */ if (++current >= argc) { @@ -10471,7 +10451,7 @@ static int Jim_LindexCoreCommand(Jim_Interp *interp, int argc, { Jim_Obj *objPtr, *listObjPtr; int i; - int index; + int index_t; if (argc < 3) { Jim_WrongNumArgs(interp, 1, argv, "list index ?...?"); @@ -10481,11 +10461,11 @@ static int Jim_LindexCoreCommand(Jim_Interp *interp, int argc, Jim_IncrRefCount(objPtr); for (i = 2; i < argc; i++) { listObjPtr = objPtr; - if (Jim_GetIndex(interp, argv[i], &index) != JIM_OK) { + if (Jim_GetIndex(interp, argv[i], &index_t) != JIM_OK) { Jim_DecrRefCount(interp, listObjPtr); return JIM_ERR; } - if (Jim_ListIndex(interp, listObjPtr, index, &objPtr, + if (Jim_ListIndex(interp, listObjPtr, index_t, &objPtr, JIM_NONE) != JIM_OK) { /* Returns an empty object if the index * is out of range. */ @@ -10554,7 +10534,7 @@ static int Jim_LappendCoreCommand(Jim_Interp *interp, int argc, static int Jim_LinsertCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *argv) { - int index, len; + int index_t, len; Jim_Obj *listPtr; if (argc < 4) { @@ -10565,14 +10545,14 @@ static int Jim_LinsertCoreCommand(Jim_Interp *interp, int argc, listPtr = argv[1]; if (Jim_IsShared(listPtr)) listPtr = Jim_DuplicateObj(interp, listPtr); - if (Jim_GetIndex(interp, argv[2], &index) != JIM_OK) + if (Jim_GetIndex(interp, argv[2], &index_t) != JIM_OK) goto err; Jim_ListLength(interp, listPtr, &len); - if (index >= len) - index = len; - else if (index < 0) - index = len + index + 1; - Jim_ListInsertElements(interp, listPtr, index, argc-3, &argv[3]); + if (index_t >= len) + index_t = len; + else if (index_t < 0) + index_t = len + index_t + 1; + Jim_ListInsertElements(interp, listPtr, index_t, argc-3, &argv[3]); Jim_SetResult(interp, listPtr); return JIM_OK; err: @@ -11028,7 +11008,6 @@ static int Jim_ProcCoreCommand(Jim_Interp *interp, int argc, /* Check for default arguments and reduce arityMin if necessary */ while (arityMin > 1) { - int len; Jim_ListIndex(interp, argv[2], arityMin - 2, &argPtr, JIM_NONE); Jim_ListLength(interp, argPtr, &len); if (len != 2) { @@ -11302,27 +11281,27 @@ static int Jim_StringCoreCommand(Jim_Interp *interp, int argc, Jim_SetResult(interp, objPtr); return JIM_OK; } else if (option == OPT_INDEX) { - int index, len; + int index_t, len; const char *str; if (argc != 4) { Jim_WrongNumArgs(interp, 2, argv, "string index"); return JIM_ERR; } - if (Jim_GetIndex(interp, argv[3], &index) != JIM_OK) + if (Jim_GetIndex(interp, argv[3], &index_t) != JIM_OK) return JIM_ERR; str = Jim_GetString(argv[2], &len); - if (index != INT_MIN && index != INT_MAX) - index = JimRelToAbsIndex(len, index); - if (index < 0 || index >= len) { + if (index_t != INT_MIN && index_t != INT_MAX) + index_t = JimRelToAbsIndex(len, index_t); + if (index_t < 0 || index_t >= len) { Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); return JIM_OK; } else { - Jim_SetResult(interp, Jim_NewStringObj(interp, str + index, 1)); + Jim_SetResult(interp, Jim_NewStringObj(interp, str + index_t, 1)); return JIM_OK; } } else if (option == OPT_FIRST) { - int index = 0, l1, l2; + int index_t = 0, l1, l2; const char *s1, *s2; if (argc != 4 && argc != 5) { @@ -11332,12 +11311,12 @@ static int Jim_StringCoreCommand(Jim_Interp *interp, int argc, s1 = Jim_GetString(argv[2], &l1); s2 = Jim_GetString(argv[3], &l2); if (argc == 5) { - if (Jim_GetIndex(interp, argv[4], &index) != JIM_OK) + if (Jim_GetIndex(interp, argv[4], &index_t) != JIM_OK) return JIM_ERR; - index = JimRelToAbsIndex(l2, index); + index_t = JimRelToAbsIndex(l2, index_t); } Jim_SetResult(interp, Jim_NewIntObj(interp, - JimStringFirst(s1, l1, s2, l2, index))); + JimStringFirst(s1, l1, s2, l2, index_t))); return JIM_OK; } else if (option == OPT_TOLOWER) { if (argc != 3) { @@ -11906,15 +11885,15 @@ static int Jim_ScanCoreCommand(Jim_Interp *interp, int argc, } if (argc > 3) { int maxPos = FormatGetMaxPos(argv[2]); - int count = FormatGetCnvCount(argv[2]); + int arg_count = FormatGetCnvCount(argv[2]); if (maxPos > argc-3) { Jim_SetResultString(interp, "\"%n$\" argument index out of range", -1); return JIM_ERR; - } else if (count != 0 && count < argc-3) { + } else if (arg_count != 0 && arg_count < argc-3) { Jim_SetResultString(interp, "variable is not assigned by any " "conversion specifiers", -1); return JIM_ERR; - } else if (count > argc-3) { + } else if (arg_count > argc-3) { Jim_SetResultString(interp, "different numbers of variable names and " "field specifiers", -1); return JIM_ERR; @@ -12313,7 +12292,7 @@ void Jim_PrintErrorMessage(Jim_Interp *interp) Jim_fprintf(interp,interp->cookie_stderr, "%s" JIM_NL, Jim_GetString(interp->result, NULL)); Jim_ListLength(interp, interp->stackTrace, &len); - for (i = len-3; i >= 0; i-= 3) { + for (i = 0; i < len; i += 3) { Jim_Obj *objPtr=NULL; const char *proc, *file, *line;