long long int pipe_streams(struct istream *i, struct ostream *o) { char buf[4096], *ptr; long long int size = 0; for (;;) { long long int rsize = read_istream(i, buf, sizeof(buf)); if (rsize < 0) { logf_e("i/o read error #%lld", rsize); return rsize; } if (!rsize) break; ptr = buf; while (rsize) { long long int wsize = write_ostream(o, ptr, rsize); if (wsize < 0) { logf_e("i/o write error #%lld", wsize); return wsize; } rsize -= wsize; ptr += wsize; size += wsize; } } return size; }
static void crash_pad(int signum) { switch (signum) { case SIGINT: log_e(_s("interruption")); break; case SIGTERM: log_e(_s("termination request")); break; case SIGABRT: log_e(_s("aborting")); break; case SIGFPE: log_e(_s("floating point exception")); break; case SIGILL: log_e(_s("illegal instruction")); break; case SIGSEGV: log_e(_s("segmentation fault")); break; default: logf_e("caught signal #%d", signum); } exit(EXIT_FAILURE); }
static void boost_priority(void) { if (!SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS)) logf_e("Setting priority class failed: %d", GetLastError()); }