1 /*- 2 * SPDX-License-Identifier: BSD-2-Clause 3 * 4 * Copyright (c) 2025 The FreeBSD Foundation 5 * All rights reserved. 6 * 7 * This software were developed by Konstantin Belousov <kib@FreeBSD.org> 8 * under sponsorship from the FreeBSD Foundation. 9 */ 10 11 #include <sys/types.h> 12 #include <sys/exterrvar.h> 13 #include <exterr.h> 14 #include <stdio.h> 15 #include <string.h> 16 17 int 18 __uexterr_format(const struct uexterror *ue, char *buf, size_t bufsz) 19 { 20 if (bufsz > UEXTERROR_MAXLEN) 21 bufsz = UEXTERROR_MAXLEN; 22 if (ue->error == 0) { 23 strlcpy(buf, "", bufsz); 24 return (0); 25 } 26 if (ue->msg[0] == '\0') { 27 snprintf(buf, bufsz, 28 "errno %d category %u (src line %u) p1 %#jx p2 %#jx", 29 ue->error, ue->cat, ue->src_line, 30 (uintmax_t)ue->p1, (uintmax_t)ue->p2); 31 } else { 32 strlcpy(buf, ue->msg, bufsz); 33 } 34 return (0); 35 } 36