/** * Bail.... */ static void error_exit( /* RETURN: nothing */ const char *format, /* IN: msg format */ ...) /* IN: varadic args */ { char buffer[4096]; va_list ap; va_start(ap, format); vsnprintf(buffer, sizeof(buffer), format, ap); va_end(ap); #ifndef NO_DAEMON if (params->detached!=0) { unlink(params->pid_file); syslog(LOG_INFO, "%s: %s", params->daemon, buffer); } else #endif { fprintf(stderr, "%s: %s\n", params->daemon, buffer); if (0 !=(params->setup & RUN_AS_APP) && 0 != handle) { if (havege_status_dump(handle, H_SD_TOPIC_TEST, buffer, sizeof(buffer))>0) fprintf(stderr, "%s\n", buffer); if (havege_status_dump(handle, H_SD_TOPIC_SUM, buffer, sizeof(buffer))>0) fprintf(stderr, "%s\n", buffer); } } havege_destroy(handle); exit(params->exit_code); }
/** * Display handle information */ static void anchor_info(H_PTR h) { char buf[120]; H_SD_TOPIC topics[4] = {H_SD_TOPIC_BUILD, H_SD_TOPIC_TUNE, H_SD_TOPIC_TEST, H_SD_TOPIC_SUM}; int i; for(i=0;i<4;i++) if (havege_status_dump(h, topics[i], buf, sizeof(buf))>0) print_msg("%s\n", buf); }
int my_status_dump ( H_PTR h, char *buf, size_t buflen) { H_SD_TOPIC topics[4] = {H_SD_TOPIC_BUILD, H_SD_TOPIC_TUNE, H_SD_TOPIC_TEST, H_SD_TOPIC_SUM}; int ret=0, i; for(i=0;i<4 && ret<(buflen-2);i++) { ret += havege_status_dump(h, topics[i], buf + ret, buflen-ret); if (ret>(buflen-2)) break; buf[ret++] = '\n'; } return ret; }