static int handle_connect_central(void) { tain_t deadline; mfd = main_socket_open(); if (mfd < 0) { strerr_warnw1x("open_main_socket") ; return -1; } tain_now_g(); tain_addsec_g(&deadline, 1); bozclient_start_b_g(¢ral_client_g, ¢ral_client_data_g, mfd, BEVT_CENTRAL_BANNER1, BEVT_CENTRAL_BANNER1_LEN, BEVT_CENTRAL_BANNER2, BEVT_CENTRAL_BANNER2_LEN, &deadline); return 0; }
static void finishtimeout (void) { strerr_warnw1x("finish script takes too long - killing it") ; killc() ; killk() ; settimeout(3) ; }
static int doit (char const *s, unsigned int len) { if (delimlen) { if (!len--) { switch (strictness) { case 1 : case 2 : strerr_warnw1x("empty line") ; break ; case 3 : buffer_flush(buffer_1) ; strerr_dief1x(100, "empty line") ; default : break ; } return 1 ; } if (byte_chr(delim, delimlen, *s) >= delimlen) { switch (strictness) { case 0 : return 0 ; case 1 : { strerr_warnw1x("invalid starting quote character") ; return 0 ; } case 2 : { char fmt[40] ; unsigned int n = len < 39 ? len+1 : 36 ; byte_copy(fmt, n, s) ; if (len >= 39) { byte_copy(fmt+n, 3, "...") ; n += 3 ; } fmt[n] = 0 ; strerr_warnw3x("invalid starting quote character", " in line: ", fmt) ; return 0 ; } case 3 : { buffer_flush(buffer_1) ; strerr_dief1x(100, "invalid starting quote character") ; } default : strerr_dief1x(101, "can't happen: unknown strictness") ; } } } { unsigned int r, w ; char d[len] ; if (!string_unquote_withdelim(d, &w, s + !!delimlen, len, &r, delim, delimlen)) { switch (strictness) { case 0 : return 0 ; case 1 : { strerr_warnwu1sys("unquote") ; return 0 ; } case 2 : { char fmt[40] ; unsigned int n = (len + !!delimlen) < 40 ? (len + !!delimlen) : 36 ; byte_copy(fmt, n, s) ; if ((len + !!delimlen) >= 40) { byte_copy(fmt+n, 3, "...") ; n += 3 ; } fmt[n] = 0 ; strerr_warnwu3sys("unquote", " line: ", fmt) ; return 0 ; } case 3 : { int e = errno ; buffer_flush(buffer_1) ; errno = e ; strerr_diefu1sys(100, "unquote") ; } default : strerr_dief1x(101, "can't happen: unknown strictness") ; } } if (delimlen) { if (r == len) { switch (strictness) { case 0 : return 0 ; case 1 : { strerr_warnwu2x("unquote", ": no ending quote character") ; return 0 ; } case 2 : { char fmt[40] ; unsigned int n = len < 40 ? len : 36 ; byte_copy(fmt, n, s) ; if (len >= 40) { byte_copy(fmt+n, 3, "...") ; n += 3 ; } fmt[n] = 0 ; strerr_warnwu5x("unquote", ": no ending quote character", " in ", "line: ", fmt) ; return 0 ; } case 3 : { int e = errno ; buffer_flush(buffer_1) ; errno = e ; strerr_diefu2x(100, "unquote", ": no ending quote character") ; } default : strerr_dief1x(101, "can't happen: unknown strictness") ; } } else if ((r < len-1) && (strictness >= 2)) { char fmtnum[UINT_FMT] ; char fmtden[UINT_FMT] ; char fmt[40] ; unsigned int n = len < 39 ? len+1 : 36 ; byte_copy(fmt, n, s) ; if (len >= 39) { byte_copy(fmt+n, 3, "...") ; n += 3 ; } fmt[n] = 0 ; fmtnum[uint_fmt(fmtnum, r+1)] = 0 ; fmtden[uint_fmt(fmtden, len)] = 0 ; strerr_warnw7x("found ending quote character at position ", fmtnum, "/", fmtden, ", ignoring remainder of ", "line: ", fmt) ; } } if (buffer_putalign(buffer_1, d, w) < (int)w) strerr_diefu1sys(111, "write to stdout") ; } return 1 ; }
static void uptimeout (void) { settimeout_infinite() ; strerr_warnw1x("can't happen: timeout while the service is up!") ; }