From bebfb51465b364d5673a3f555655213dbff0b2c6 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 31 Mar 2015 11:55:37 +0000 Subject: Non-IM Contact: - fix for a crash on exit; - code cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@12573 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Non-IM Contact/src/namereplacing.cpp | 255 +++++++++++++-------------- 1 file changed, 118 insertions(+), 137 deletions(-) (limited to 'plugins/Non-IM Contact/src/namereplacing.cpp') diff --git a/plugins/Non-IM Contact/src/namereplacing.cpp b/plugins/Non-IM Contact/src/namereplacing.cpp index c9df0de9e1..e45120f8a7 100644 --- a/plugins/Non-IM Contact/src/namereplacing.cpp +++ b/plugins/Non-IM Contact/src/namereplacing.cpp @@ -23,12 +23,12 @@ int readFileIntoArray(int fileNumber, char *FileContents[]) // read the file into the FileContents array // free this array before stringReplacer() returns int i; - for (i=0; fgets(temp, MAX_STRING_LENGTH-1, file); i++) { - if (temp[strlen(temp)-1]=='\n') - temp[strlen(temp)-1]='\0'; - else temp[strlen(temp)]='\0'; + for (i = 0; fgets(temp, MAX_STRING_LENGTH - 1, file); i++) { + if (temp[strlen(temp) - 1] == '\n') + temp[strlen(temp) - 1] = '\0'; + else temp[strlen(temp)] = '\0'; - FileContents[i] = (char*)malloc(strlen(temp)+1); + FileContents[i] = (char*)malloc(strlen(temp) + 1); if (FileContents[i] == NULL) break; strcpy(FileContents[i], temp); } @@ -41,22 +41,22 @@ int getNumber(const char* line) int i; return sscanf(line, "%d", &i) == 1 ? i : -1; } - + int findWordInString(const char* line, const char* string, int* lengthOfWord, int flag) /* flag = 0 %from, flag = 1 %until */ { - unsigned int i, j=0; - char word[64]="", OpenDivider[8], CloseDivider[8]; + unsigned int i, j = 0; + char word[64] = "", OpenDivider[8], CloseDivider[8]; strncpy(OpenDivider, "(\"", sizeof(OpenDivider)); strncpy(CloseDivider, "\")", sizeof(CloseDivider)); /* get the word we r looking for */ if (!strncmp(string, OpenDivider, strlen(OpenDivider))) { - for (i=2; strncmp(&string[i], CloseDivider, strlen(CloseDivider)); i++) { + for (i = 2; strncmp(&string[i], CloseDivider, strlen(CloseDivider)); i++) { word[j] = string[i]; word[++j] = '\0'; } } - i=0; - *lengthOfWord = (int)(strlen(word)+strlen(CloseDivider)+strlen(OpenDivider)); + i = 0; + *lengthOfWord = (int)(strlen(word) + strlen(CloseDivider) + strlen(OpenDivider)); /* find the word in the line */ while (i < (strlen(line) - strlen(word))) { if (!strncmp(&line[i], word, strlen(word))) { @@ -68,7 +68,7 @@ int findWordInString(const char* line, const char* string, int* lengthOfWord, in return -1; } -int findLine(char* FileContents[], const char* string, int linesInFile,int startLine, int *positionInOldString) +int findLine(char* FileContents[], const char* string, int linesInFile, int startLine, int *positionInOldString) { char tmp[5]; int i = getNumber(&string[*positionInOldString]); @@ -79,7 +79,7 @@ int findLine(char* FileContents[], const char* string, int linesInFile,int start // check if its a number if (i != -1) { - *positionInOldString += (int)strlen(_itoa(i,tmp,10)) - 1; + *positionInOldString += (int)strlen(_itoa(i, tmp, 10)) - 1; return i; } @@ -87,27 +87,27 @@ int findLine(char* FileContents[], const char* string, int linesInFile,int start if (!strncmp(&string[*positionInOldString], "lastline(", strlen("lastline("))) { *positionInOldString += (int)strlen("lastline("); i = getNumber(&string[*positionInOldString]); - if ( i != -1) { - *positionInOldString += (int)strlen(_itoa(i,tmp,10)); - return linesInFile - (i+1); + if (i != -1) { + *positionInOldString += (int)strlen(_itoa(i, tmp, 10)); + return linesInFile - (i + 1); } - (*positionInOldString)++; + (*positionInOldString)++; return (linesInFile - 1); } // string if (string[*positionInOldString] == '\"') { char string2Find[256]; - int j=0; + int j = 0; // get the word to find - for (i=(*positionInOldString+1); strncmp(&string[i], "\")", 2); i++) { + for (i = (*positionInOldString + 1); strncmp(&string[i], "\")", 2); i++) { string2Find[j] = string[i]; string2Find[++j] = '\0'; } // find the word - for (j=startLine; j=0) - db_set_w(hContact, MODNAME, "Status", (WORD)(ID_STATUS_OFFLINE+icon)); + int icon = getNumber(str + 5); + if (icon >= 0) + db_set_w(hContact, MODNAME, "Status", (WORD)(ID_STATUS_OFFLINE + icon)); } } @@ -451,24 +450,21 @@ int stringReplacer(const char* oldString, char* newString, MCONTACT hContact) { char var_file[8]; int tempInt; - int startLine = 0, endLine = 0, startChar=0, endChar = 0, wholeLine=-1, linesInFile; + int startLine = 0, endLine = 0, startChar = 0, endChar = 0, wholeLine = -1, linesInFile; int positionInOldString = 0; - char *fileContents[MAXLINES] = {NULL}, tempString[MAX_STRING_LENGTH]; + char *fileContents[MAXLINES] = { NULL }, tempString[MAX_STRING_LENGTH]; // setup the variable names strncpy(newString, "", sizeof(newString)); strncpy(var_file, "file(", sizeof(var_file)); - while ((positionInOldString < (int)strlen(oldString)) && (oldString[positionInOldString] != '\0')) - { + while ((positionInOldString < (int)strlen(oldString)) && (oldString[positionInOldString] != '\0')) { // load the file... must be first - if (!strncmp(&oldString[positionInOldString], var_file, strlen(var_file))) - { + if (!strncmp(&oldString[positionInOldString], var_file, strlen(var_file))) { positionInOldString += (int)strlen(var_file); // check if its a number tempInt = getNumber(&oldString[positionInOldString]); - if (tempInt == -1) - { + if (tempInt == -1) { // not a number so check vars.. // there are none yet return ERROR_NO_FILE; @@ -477,48 +473,44 @@ int stringReplacer(const char* oldString, char* newString, MCONTACT hContact) linesInFile = readFileIntoArray(tempInt, fileContents); if (linesInFile == 0) return ERROR_NO_FILE; - positionInOldString += (int)strlen(_itoa(tempInt, tempString,10)) + 1; // +1 for the closing ) + positionInOldString += (int)strlen(_itoa(tempInt, tempString, 10)) + 1; // +1 for the closing ) // wholeline() - if (!strncmp(&oldString[positionInOldString], "wholeline(line(", strlen("wholeline(line("))) - { + if (!strncmp(&oldString[positionInOldString], "wholeline(line(", strlen("wholeline(line("))) { positionInOldString += (int)strlen("wholeline(line("); - tempInt = findLine(fileContents,oldString, linesInFile, startLine,&positionInOldString); + tempInt = findLine(fileContents, oldString, linesInFile, startLine, &positionInOldString); if (tempInt == -1 || !fileContents[tempInt]) return ERROR_NO_LINE_AFTER_VAR_F; wholeLine = tempInt; positionInOldString += 3; // add 2 for the )) for wholeline(line()) } - if (!strncmp(&oldString[positionInOldString], "start(", strlen("start("))) - { + if (!strncmp(&oldString[positionInOldString], "start(", strlen("start("))) { positionInOldString += (int)strlen("start(line("); - tempInt = findLine(fileContents,oldString, linesInFile, startLine,&positionInOldString); + tempInt = findLine(fileContents, oldString, linesInFile, startLine, &positionInOldString); if (tempInt == -1 || !fileContents[tempInt]) return ERROR_NO_LINE_AFTER_VAR_F; - else - { - positionInOldString+=2; + else { + positionInOldString += 2; startLine = tempInt; if (!endChar) endChar = (int)strlen(fileContents[startLine]); - tempInt = findChar(fileContents,oldString, linesInFile, startLine,&positionInOldString, startChar,0); + tempInt = findChar(fileContents, oldString, linesInFile, startLine, &positionInOldString, startChar, 0); if (tempInt == -1) return ERROR_NO_LINE_AFTER_VAR_F; startChar = tempInt; } positionInOldString += 2; // add 2 for the )) for start(line()) } - if (!strncmp(&oldString[positionInOldString], "end(", strlen("end("))) - { + if (!strncmp(&oldString[positionInOldString], "end(", strlen("end("))) { positionInOldString += (int)strlen("end(line("); - tempInt = findLine(fileContents,oldString, linesInFile, startLine,&positionInOldString); + tempInt = findLine(fileContents, oldString, linesInFile, startLine, &positionInOldString); if (tempInt == -1 || !fileContents[tempInt]) return ERROR_NO_LINE_AFTER_VAR_F; - - positionInOldString+=2; + + positionInOldString += 2; endLine = tempInt; - tempInt = findChar(fileContents,oldString, linesInFile, startLine,&positionInOldString, startChar,1); + tempInt = findChar(fileContents, oldString, linesInFile, startLine, &positionInOldString, startChar, 1); if (tempInt == -1) return ERROR_NO_LINE_AFTER_VAR_F; endChar = tempInt; @@ -529,19 +521,16 @@ int stringReplacer(const char* oldString, char* newString, MCONTACT hContact) if (!strstr(oldString, "end(")) endLine = startLine; // after all the options copy the line across and add 2 to positionInOldString for the file(print(....)) if (wholeLine >= 0) strcat(newString, fileContents[wholeLine]); - else - { + else { // only copying from 1 line if (startLine == endLine) strncat(newString, &fileContents[startLine][startChar], endChar - startChar); - else - { + else { int i; // copy the whole first line from startChar strcat(newString, &fileContents[startLine][startChar]); // copy the middle lines across - for (i=(startLine+1);i