# HG changeset patch # User Matti Hamalainen # Date 1560526390 -10800 # Node ID 02d17784fdef84b2a90640de742f2475b730e099 # Parent 5046458d6c344340db06fd5a4d71fc16e88ffbbb Variables -> struct cleanup. diff -r 5046458d6c34 -r 02d17784fdef tools/fanalyze.c --- a/tools/fanalyze.c Fri Jun 14 18:32:45 2019 +0300 +++ b/tools/fanalyze.c Fri Jun 14 18:33:10 2019 +0300 @@ -229,12 +229,11 @@ { const char *specsep = strchr(arg, ':'); char *vspec, *vstr, *vsep; - int vdisp = DMGS_HEX, vtype = -1, ret = DMERR_OK, nvalues; + DMGrepValue val; + int ret = DMERR_OK; BOOL more; - Uint32 vvalues[SET_MAX_GREPLIST]; - BOOL vwildcards[SET_MAX_GREPLIST]; - memset(vwildcards, 0, sizeof(vwildcards)); + memset(&val, 0, sizeof(val)); if (setMode != FA_ANALYZE && setMode != mode) { @@ -277,19 +276,19 @@ // Get value bit size if (strncmp(vtmp, "8", 1) == 0) { - vtype = DMGV_UINT8; + val.type = DMGV_UINT8; vtmp += 1; } else if (strncmp(vtmp, "16", 2) == 0) { - vtype = vendianess ? DMGV_UINT16_LE : DMGV_UINT16_BE; + val.type = vendianess ? DMGV_UINT16_LE : DMGV_UINT16_BE; vtmp += 2; } else if (strncmp(vtmp, "32", 2) == 0) { - vtype = vendianess ? DMGV_UINT32_LE : DMGV_UINT32_BE; + val.type = vendianess ? DMGV_UINT32_LE : DMGV_UINT32_BE; vtmp += 2; } else @@ -303,11 +302,11 @@ switch (tolower(*vtmp)) { case 'd': - vdisp = DMGS_DEC; + val.disp = DMGS_DEC; break; case 'x': case 'h': - vdisp = DMGS_HEX; + val.disp = DMGS_HEX; break; case 0: @@ -323,10 +322,9 @@ // Get list of values char *vtmp = vstr; - nvalues = 0; do { - if (nvalues >= SET_MAX_GREPLIST) + if (val.nvalues >= SET_MAX_GREPLIST) { ret = dmError(DMERR_BOUNDS, "Too many greplist values specified '%s'.\n", @@ -344,7 +342,7 @@ if (vtmp[0] == '#' || vtmp[0] == '?') { - vwildcards[nvalues] = TRUE; + val.vwildcards[val.nvalues] = TRUE; if (mode == FA_OFFSET) { ret = dmError(DMERR_INVALID_ARGS, @@ -353,7 +351,7 @@ } } else - if (!dmGetIntVal(vtmp, &vvalues[nvalues], NULL)) + if (!dmGetIntVal(vtmp, &val.values[val.nvalues], NULL)) { ret = dmError(DMERR_INVALID_ARGS, "Not a valid integer value '%s'.\n", @@ -361,13 +359,13 @@ goto out; } - nvalues++; + val.nvalues++; if (more) vtmp = vsep + 1; } while (more); - if (vwildcards[0]) + if (val.vwildcards[0]) { ret = dmError(DMERR_INVALID_ARGS, "First grep value can not be a wildcard.\n"); @@ -377,17 +375,17 @@ if (mode == FA_GREP) { // Check if we need to guess size - if (vtype < 0) + if (val.type < 0) { for (int n = DMGV_last; n >= 0; n--) { const DMGrepType *def = &dmGrepTypes[n]; - if (vvalues[0] <= def->nmax) - vtype = n; + if (val.values[0] <= def->nmax) + val.type = n; } } - if (vtype < 0) + if (val.type < 0) { ret = dmError(DMERR_INVALID_ARGS, "Could not guess value type for '%s'.\n", @@ -396,12 +394,13 @@ } // Check range - for (int n = 0; n < nvalues; n++) - if (!vwildcards[n] && vvalues[n] > dmGrepTypes[vtype].nmax) + for (int n = 0; n < val.nvalues; n++) + if (!val.vwildcards[n] && val.values[n] > dmGrepTypes[val.type].nmax) { ret = dmError(DMERR_INVALID_ARGS, "Integer value %d <= %d <= %d out of range for type %s.\n", - vvalues[n], 0, dmGrepTypes[vtype].nmax, dmGrepTypes[vtype].name); + val.values[n], 0, dmGrepTypes[val.type].nmax, + dmGrepTypes[val.type].name); goto out; } @@ -409,22 +408,17 @@ else if (mode == FA_OFFSET) { - if (vtype < 0) - vtype = DMGV_UINT8; + if (val.type < 0) + val.type = DMGV_UINT8; } if (nsetGrepValues < SET_MAX_VALUES) { DMGrepValue *node = &setGrepValues[nsetGrepValues++]; - - node->type = vtype; - node->disp = vdisp; - node->nvalues = nvalues; - memcpy(node->values, vvalues, sizeof(vvalues[0]) * nvalues); - memcpy(node->vwildcards, vwildcards, sizeof(vwildcards[0]) * nvalues); + memcpy(node, &val, sizeof(val)); dmMsg(1, "Grep %ss : ", - dmGrepTypes[vtype].name); + dmGrepTypes[val.type].name); dmPrintGrepValueList(node, FALSE, NULL, 0); }