void doident(char *buffer, struct counters *count, int print, int check) { int status; IDA_IDENT_REC idrec; /* Load the structure */ if ((status = ida_idrec(ida, &idrec, buffer)) != 0) { if (print & P_CORRUPT) pcorrupt(count, IDA_IDENT, status, print); ++count->corrupt; } /* Check for illegal time tags */ if (check & C_BADTAG && idrec.ttag.error) { ++count->badtag; if (print & P_BADTAG)pbadtag(&idrec.ttag,count,IDA_IDENT,print); } /* Print the contents */ if (print & P_IDENT) pident(&idrec, count, print); }
void print_tree(binresult *tree, int ident){ int i; if (tree->type==PARAM_STR) printf("string(%u)\"%s\"", tree->length, tree->str); else if (tree->type==PARAM_NUM) printf("number %llu", tree->num); else if (tree->type==PARAM_DATA) printf("data %llu", tree->num); else if (tree->type==PARAM_BOOL) printf("bool %s", tree->num?"true":"false"); else if (tree->type==PARAM_HASH){ printf("hash (%u){\n", tree->length); if (tree->length){ pident(ident+1); printf("\"%s\" = ", tree->hash[0].key); print_tree(tree->hash[0].value, ident+1); for (i=1; i<tree->length; i++){ printf(",\n"); pident(ident+1); printf("\"%s\" = ", tree->hash[i].key); print_tree(tree->hash[i].value, ident+1); } } printf("\n"); pident(ident); printf("}"); } else if (tree->type==PARAM_ARRAY){ printf("array (%u)[\n", tree->length); if (tree->length){ pident(ident+1); print_tree(tree->array[0], ident+1); for (i=1; i<tree->length; i++){ printf(",\n"); pident(ident+1); print_tree(tree->array[i], ident+1); } } printf("\n"); pident(ident); printf("]"); } }