Changeset 2761 for trunk/tools/database/StateUpd.cpp
- Timestamp:
- Feb 12, 2000, 12:54:25 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/database/StateUpd.cpp
r2759 r2761 1 /* $Id: StateUpd.cpp,v 1. 8 2000-02-11 18:35:54 bird Exp $1 /* $Id: StateUpd.cpp,v 1.9 2000-02-11 23:54:24 bird Exp $ 2 2 * 3 3 * StateUpd - Scans source files for API functions and imports data on them. … … 626 626 627 627 /* 4.*/ 628 ulRcTmp = dbUpdateFunction(&FnDesc, &szErrorDesc[0]);628 ulRcTmp = dbUpdateFunction(&FnDesc, pOptions->lDllRefcode, &szErrorDesc[0]); 629 629 if (ulRcTmp != 0) 630 630 { … … 679 679 680 680 /* 3. */ 681 if (!dbFindFunction(pFnDesc->pszName, &FnFindBuf ))681 if (!dbFindFunction(pFnDesc->pszName, &FnFindBuf, pOptions->lDllRefcode)) 682 682 { 683 683 fprintf(phSignal, "%s, %s: error occured while reading from database, %s\n", … … 701 701 702 702 for (lFn = 0; lFn < FnFindBuf.cFns; lFn++) 703 { 704 if (FnFindBuf.alDllRefCode[lFn] == pOptions->lDllRefcode) 705 pFnDesc->alRefCode[pFnDesc->cRefCodes++] = FnFindBuf.alRefCode[lFn]; 706 } 703 pFnDesc->alRefCode[pFnDesc->cRefCodes++] = FnFindBuf.alRefCode[lFn]; 707 704 708 705 if (pFnDesc->cRefCodes == 0) … … 741 738 */ 742 739 743 int iFn, iP1, iP2, j ;740 int iFn, iP1, iP2, j, c; 744 741 char * pszFn, *pszFnEnd, *pszP1, *pszP2; 745 742 char * psz, *pszEnd; … … 812 809 813 810 /* 3. */ 811 c = 1; 814 812 iP2 = iP1; 815 813 pszP2 = pszP1 + 1; 816 while (*pszP2 != ')') 814 while (c > 0) 815 { 816 if (*pszP2 == '(') 817 c++; 818 else if (*pszP2 == ')') 819 if (--c == 0) 820 break; 817 821 if (*pszP2++ == '\0') 818 822 if ((pszP2 = papszLines[++iP2]) == NULL) 819 823 break; 824 } 820 825 821 826 iRet = iP2 + 1; //assumes: only one function on a single line! … … 832 837 char *pszC; 833 838 pszC = trim(psz+1); 839 c = 1; 834 840 while (*pszC != '\0') 835 841 { 836 842 apszArgs[cArgs] = pszC; 837 while (*pszC != ',' && *pszC != ')' && *pszC != '\0') 843 while (*pszC != ',' && c > 0 && *pszC != '\0') 844 { 845 if (*pszC == '(') 846 c++; 847 else if (*pszC == ')') 848 if (--c == 0) 849 break; 838 850 pszC++; 851 } 839 852 *pszC = '\0'; 840 853 trim(apszArgs[cArgs++]); … … 877 890 pFnDesc->pszReturnType = *pszEnd == '\0' ? NULL : pszEnd; 878 891 pszEnd = strlen(pszEnd) + pszEnd + 1; 892 *pszEnd = '\0'; 879 893 880 894 /* function name */ 881 *pszEnd = '\0';882 895 if (pFnDesc->pszReturnType != NULL 883 896 && stristr(pFnDesc->pszReturnType, "cdecl") != NULL) 884 897 { /* cdecl function is prefixed with an '_' */ 885 898 strcpy(pszEnd, "_"); 886 strncat(pszEnd +1, pszFn, pszFnEnd - pszFn+1);899 strncat(pszEnd + 1, pszFn, pszFnEnd - pszFn+1); 887 900 } 888 901 else 889 902 strncat(pszEnd, pszFn, pszFnEnd - pszFn+1); 890 891 903 pFnDesc->pszName = pszEnd; 904 pszEnd = strlen(pszEnd) + pszEnd + 1; 905 *pszEnd = '\0'; 906 892 907 893 908 /* arguments */ … … 895 910 for (j = 0; j < cArgs; j++) 896 911 { 897 pFnDesc->apszParamName[j] = findStartOfWord(apszArgs[j] + strlen(apszArgs[j]) - 1, 898 apszArgs[j]); 899 pFnDesc->apszParamName[j][-1] = '\0'; 900 pFnDesc->apszParamType[j] = trim(apszArgs[j]); 912 if ((psz = strchr(apszArgs[j], ')')) == NULL) 913 { 914 pFnDesc->apszParamName[j] = findStartOfWord(apszArgs[j] + strlen(apszArgs[j]) - 1, 915 apszArgs[j]); 916 pFnDesc->apszParamName[j][-1] = '\0'; 917 pFnDesc->apszParamType[j] = trim(apszArgs[j]); 918 } 919 else 920 { 921 char *pszP2 = psz; 922 psz = findStartOfWord(psz-1, apszArgs[j]); 923 strncat(pszEnd, psz, pszP2 - psz); 924 925 pFnDesc->apszParamName[j] = pszEnd; 926 memset(psz, ' ', pszP2 - psz); 927 pFnDesc->apszParamType[j] = trim(apszArgs[j]); 928 929 pszEnd = strlen(pszEnd) + pszEnd + 1; 930 *pszEnd = '\0'; 931 } 901 932 } 902 933 } … … 1218 1249 1219 1250 while (pszFnName - cchFnName > papszLines[i] && pszFnName[cchFnName] == ' ') 1220 cchFnName-- ;1251 cchFnName--, pszFnName--; 1221 1252 1222 1253 pszFnName = findStartOfWord(pszFnName, papszLines[i]); … … 1239 1270 if (psz != NULL && *psz != '*') 1240 1271 { 1241 char *pszB = pszP1; /*'{'*/ 1272 char *pszB = pszP1 + 1; /*'{'*/ 1273 int c = 1; 1242 1274 1243 1275 /* 3. */ 1244 while (*pszB != ')') 1276 while (c > 0) 1277 { 1278 if (*pszB == '(') 1279 c++; 1280 else if (*pszB == ')') 1281 if (--c == 0) 1282 break; 1245 1283 if (*pszB++ == '\0') 1246 1284 if ((pszB = papszLines[++i]) == NULL) 1247 1285 break; 1286 } 1248 1287 if (pszB != NULL) 1249 1288 { … … 1293 1332 if (pszP1 != NULL && *pszP1 == '(') 1294 1333 { 1295 char *pszB = pszP1; /*'{'*/ 1334 char *pszB = pszP1 + 1; /*'{'*/ 1335 int c = 1; 1296 1336 1297 1337 /* 3. */ 1298 while (*pszB != ')') 1338 while (c > 0) 1339 { 1340 if (*pszB == '(') 1341 c++; 1342 else if (*pszB == ')') 1343 if (--c == 0) 1344 break; 1299 1345 if (*pszB++ == '\0') 1300 1346 if ((pszB = papszLines[++i]) == NULL) 1301 1347 break; 1348 } 1302 1349 if (pszB != NULL) 1303 1350 {
Note:
See TracChangeset
for help on using the changeset viewer.