|  | /* SPDX-License-Identifier: LGPL-2.1+ */ | 
|  | /* | 
|  | * SSL helper functions shared by sign-file and extract-cert. | 
|  | */ | 
|  |  | 
|  | static void drain_openssl_errors(int l, int silent) | 
|  | { | 
|  | const char *file; | 
|  | char buf[120]; | 
|  | int e, line; | 
|  |  | 
|  | if (ERR_peek_error() == 0) | 
|  | return; | 
|  | if (!silent) | 
|  | fprintf(stderr, "At main.c:%d:\n", l); | 
|  |  | 
|  | while ((e = ERR_peek_error_line(&file, &line))) { | 
|  | ERR_error_string(e, buf); | 
|  | if (!silent) | 
|  | fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line); | 
|  | ERR_get_error(); | 
|  | } | 
|  | } | 
|  |  | 
|  | #define ERR(cond, fmt, ...)				\ | 
|  | do {						\ | 
|  | bool __cond = (cond);			\ | 
|  | drain_openssl_errors(__LINE__, 0);	\ | 
|  | if (__cond) {				\ | 
|  | errx(1, fmt, ## __VA_ARGS__);	\ | 
|  | }					\ | 
|  | } while (0) |