コード例 #1
0
ファイル: report.c プロジェクト: bobot/zerovm
/* part of report class dtor */
static void Report(struct NaClApp *nap)
{
  GString *report = g_string_sized_new(BIG_ENOUGH_STRING);
  char *eol = hide_report ? "; " : "\n";

  /* report validator state and user return code */
  g_string_append_printf(report, "%s%d%s", REPORT_VALIDATOR, validation_state, eol);
  g_string_append_printf(report, "%s%d%s", REPORT_RETCODE, user_code, eol);

  /* add memory digest to cumulative digests if asked */
  if(nap != NULL && nap->manifest != NULL)
    if(nap->manifest->mem_tag != NULL)
      ReportTag(STDRAM, GetMemoryDigest(nap));

  /* report tags digests and remove ending " " if exist */
  g_string_append_printf(report, "%s", REPORT_ETAG);
  g_string_append_printf(report, "%s", digests->len == 0
      ? TAG_ENGINE_DISABLED : digests->str);
  g_string_truncate(report, report->len - 1);

  /* report accounting and session message */
  g_string_append_printf(report, "%s%s%s%s", eol, REPORT_ACCOUNTING, GetAccountingInfo(), eol);
  g_string_append_printf(report, "%s%s%s", REPORT_STATE, zvm_state, eol);

  /* output report */
  if(hide_report)
    ZLOGS(LOG_ERROR, "%s", report->str);
  else
    ZLOGIF(write(STDOUT_FILENO, report->str, report->len) != report->len,
        "report write error %d: %s", errno, strerror(errno));

  g_string_free(report, TRUE);
  g_string_free(digests, TRUE);
}
コード例 #2
0
ファイル: report.c プロジェクト: baiyuanlab/zerovm
void Report(struct NaClApp *nap)
{
    GString *r = g_string_sized_new(BIG_ENOUGH_STRING);
    char *eol = report_mode == 1 ? "; " : "\n";
    char *acc = FinalAccounting();

    /* report validator state and user return code */
    REPORT(r, "%s%d%s", REPORT_VALIDATOR, validation_state, eol);
    REPORT(r, "%s%d%s", REPORT_DAEMON, daemon_state, eol);
    REPORT(r, "%s%d%s", REPORT_RETCODE, user_code, eol);

    /* add memory digest to cumulative digests if asked */
    if(nap != NULL && nap->manifest != NULL)
        if(nap->manifest->mem_tag != NULL)
            ReportTag(STDRAM, GetMemoryDigest(nap));

    /* report tags digests and remove ending " " if exist */
    REPORT(r, "%s", REPORT_ETAG);
    REPORT(r, "%s", digests->len == 0
           ? TAG_ENGINE_DISABLED : digests->str);
    g_string_truncate(r, r->len - 1);

    /* report accounting and session message */
    if(zvm_state == NULL) zvm_state = UNKNOWN_STATE;
    REPORT(r, "%s%s%s%s", eol, REPORT_ACCOUNTING, acc, eol);
    REPORT(r, "%s%s%s", REPORT_STATE,
           zvm_state == NULL ? UNKNOWN_STATE : zvm_state, eol);
    REPORT(r, "%s%s", REPORT_CMD, eol);
    OutputReport(r->str);

    g_string_free(r, TRUE);
    g_free(acc);
}