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 #define _WANT_P_OSREL 12 #include <sys/param.h> 13 #include <sys/exterrvar.h> 14 #include <exterr.h> 15 #include <string.h> 16 #include "libc_private.h" 17 18 static struct uexterror uexterr = { 19 .ver = UEXTERROR_VER, 20 }; 21 22 int __getosreldate(void); 23 24 static void uexterr_ctr(void) __attribute__((constructor)); 25 static void 26 uexterr_ctr(void) 27 { 28 if (__getosreldate() >= P_OSREL_EXTERRCTL) 29 exterrctl(EXTERRCTL_ENABLE, 0, &uexterr); 30 } 31 32 int 33 __libc_uexterr_gettext(char *buf, size_t bufsz) 34 { 35 return (__uexterr_format(&uexterr, buf, bufsz)); 36 } 37 38 int 39 uexterr_gettext(char *buf, size_t bufsz) 40 { 41 return (((int (*)(char *, size_t)) 42 __libc_interposing[INTERPOS_uexterr_gettext])(buf, bufsz)); 43 } 44