static int parse_entry(struct mod_metadata *md, const char *cval, struct elf_file *ef, const char *kldname) { struct mod_depend mdp; struct mod_version mdv; Elf_Off data = (Elf_Off)md->md_data; int error = 0; record_start(); switch (md->md_type) { case MDT_DEPEND: if (!dflag) break; check(EF_SEG_READ(ef, data, sizeof(mdp), &mdp)); printf(" depends on %s.%d (%d,%d)\n", cval, mdp.md_ver_preferred, mdp.md_ver_minimum, mdp.md_ver_maximum); break; case MDT_VERSION: check(EF_SEG_READ(ef, data, sizeof(mdv), &mdv)); if (dflag) { printf(" interface %s.%d\n", cval, mdv.mv_version); } else { record_int(MDT_VERSION); record_string(cval); record_int(mdv.mv_version); record_string(kldname); } break; case MDT_MODULE: if (dflag) { printf(" module %s\n", cval); } else { record_int(MDT_MODULE); record_string(cval); record_string(kldname); } break; default: warnx("unknown metadata record %d in file %s", md->md_type, kldname); } if (!error) record_end(); return error; }
void writeCtrlTrailer(hoststate_t* state) { log_trace("writeCtrlTrailer", "%s", state->ip_address_str); if (state->dirQueue.len != 0) { state->interestMask |= INTEREST_CHECK_MISC; record_raw_string_queue(state, RECKEY_UNCRAWLED, &state->dirQueue); } if (state->dataDBuffer.len != 0) { record_raw_dbuffer( state, RECKEY_DATA_DBUFFER_DUMP, NULL, 0, &state->dataDBuffer ); } if (state->ctrlDBuffer.len != 0) { record_raw_dbuffer( state, RECKEY_CTRL_DBUFFER_DUMP, NULL, 0, &state->ctrlDBuffer ); } record_int(state, RECKEY_LAST_STATE, state->lastState); record_int(state, RECKEY_TERM_CODE, state->terminationCode); record_base_raw_string(state, RECKEY_TERM_DESC, state->terminationDesc); record_int(state, RECKEY_INTEREST_MASK, state->interestMask); record_int(state, RECKEY_TOTAL_NUM_REQ, state->numReqSent); record_int(state, RECKEY_LIST_ERR_COUNT, state->listErrCount); store_filesystem_type(state); record_int( state, RECKEY_DURATION, gconfig.second - state->startingSecond ); recorder_finish(state); log_trace( "writeCtrlTrailer", "%s: Successfully wrote control output", state->ip_address_str ); }