166492cf0SYuri Pankov.\" 266492cf0SYuri Pankov.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for 366492cf0SYuri Pankov.\" permission to reproduce portions of its copyrighted documentation. 466492cf0SYuri Pankov.\" Original documentation from The Open Group can be obtained online at 5c10c16deSRichard Lowe.\" http://www.opengroup.org/bookstore/. 666492cf0SYuri Pankov.\" 766492cf0SYuri Pankov.\" The Institute of Electrical and Electronics Engineers and The Open 866492cf0SYuri Pankov.\" Group, have given us permission to reprint portions of their 966492cf0SYuri Pankov.\" documentation. 1066492cf0SYuri Pankov.\" 1166492cf0SYuri Pankov.\" In the following statement, the phrase ``this text'' refers to portions 1266492cf0SYuri Pankov.\" of the system documentation. 1366492cf0SYuri Pankov.\" 1466492cf0SYuri Pankov.\" Portions of this text are reprinted and reproduced in electronic form 1566492cf0SYuri Pankov.\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition, 1666492cf0SYuri Pankov.\" Standard for Information Technology -- Portable Operating System 1766492cf0SYuri Pankov.\" Interface (POSIX), The Open Group Base Specifications Issue 6, 1866492cf0SYuri Pankov.\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics 1966492cf0SYuri Pankov.\" Engineers, Inc and The Open Group. In the event of any discrepancy 2066492cf0SYuri Pankov.\" between these versions and the original IEEE and The Open Group 2166492cf0SYuri Pankov.\" Standard, the original IEEE and The Open Group Standard is the referee 2266492cf0SYuri Pankov.\" document. The original Standard can be obtained online at 2366492cf0SYuri Pankov.\" http://www.opengroup.org/unix/online.html. 2466492cf0SYuri Pankov.\" 2566492cf0SYuri Pankov.\" This notice shall appear on any product containing this material. 2666492cf0SYuri Pankov.\" 2766492cf0SYuri Pankov.\" The contents of this file are subject to the terms of the 2866492cf0SYuri Pankov.\" Common Development and Distribution License (the "License"). 2966492cf0SYuri Pankov.\" You may not use this file except in compliance with the License. 3066492cf0SYuri Pankov.\" 3166492cf0SYuri Pankov.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 3266492cf0SYuri Pankov.\" or http://www.opensolaris.org/os/licensing. 3366492cf0SYuri Pankov.\" See the License for the specific language governing permissions 3466492cf0SYuri Pankov.\" and limitations under the License. 3566492cf0SYuri Pankov.\" 3666492cf0SYuri Pankov.\" When distributing Covered Code, include this CDDL HEADER in each 3766492cf0SYuri Pankov.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. 3866492cf0SYuri Pankov.\" If applicable, add the following below this CDDL HEADER, with the 3966492cf0SYuri Pankov.\" fields enclosed by brackets "[]" replaced with your own identifying 4066492cf0SYuri Pankov.\" information: Portions Copyright [yyyy] [name of copyright owner] 4166492cf0SYuri Pankov.\" 4266492cf0SYuri Pankov.\" 4366492cf0SYuri Pankov.\" Copyright 1989 AT&T 4466492cf0SYuri Pankov.\" Copyright (c) 2001, The IEEE and The Open Group. All Rights Reserved. 4566492cf0SYuri Pankov.\" Copyright (c) 2005, Sun Microsystems, Inc. All Rights Reserved. 4666492cf0SYuri Pankov.\" Copyright 2015, Joyent, Inc. 47*faadcf7eSRobert Mustacchi.\" Copyright 2024 Oxide Computer Company 4866492cf0SYuri Pankov.\" 49*faadcf7eSRobert Mustacchi.Dd April 6, 2024 50*faadcf7eSRobert Mustacchi.Dt STRERROR 3C 51*faadcf7eSRobert Mustacchi.Os 52*faadcf7eSRobert Mustacchi.Sh NAME 53*faadcf7eSRobert Mustacchi.Nm strerror , 54*faadcf7eSRobert Mustacchi.Nm strerror_r , 55*faadcf7eSRobert Mustacchi.Nm strerror_l , 56*faadcf7eSRobert Mustacchi.Nm strerrordesc_np , 57*faadcf7eSRobert Mustacchi.Nm strerrorname_np 58*faadcf7eSRobert Mustacchi.Nd get error message string 59*faadcf7eSRobert Mustacchi.Sh LIBRARY 60*faadcf7eSRobert Mustacchi.Lb libc 61*faadcf7eSRobert Mustacchi.Sh SYNOPSIS 62*faadcf7eSRobert Mustacchi.In string.h 63*faadcf7eSRobert Mustacchi.Ft "char *" 64*faadcf7eSRobert Mustacchi.Fo strerror 65*faadcf7eSRobert Mustacchi.Fa "int errnum" 66*faadcf7eSRobert Mustacchi.Fc 67*faadcf7eSRobert Mustacchi.Ft int 68*faadcf7eSRobert Mustacchi.Fo strerror_r 69*faadcf7eSRobert Mustacchi.Fa "int errnum" 70*faadcf7eSRobert Mustacchi.Fa "char *strerrbuf" 71*faadcf7eSRobert Mustacchi.Fa "size_t buflen" 72*faadcf7eSRobert Mustacchi.Fc 73*faadcf7eSRobert Mustacchi.Ft "char *" 74*faadcf7eSRobert Mustacchi.Fo strerror_l 75*faadcf7eSRobert Mustacchi.Fa "int errnum" 76*faadcf7eSRobert Mustacchi.Fa "locale_t loc" 77*faadcf7eSRobert Mustacchi.Fc 78*faadcf7eSRobert Mustacchi.Ft "const char *" 79*faadcf7eSRobert Mustacchi.Fo strerrordesc_np 80*faadcf7eSRobert Mustacchi.Fa "int errnum" 81*faadcf7eSRobert Mustacchi.Fc 82*faadcf7eSRobert Mustacchi.Ft "const char *" 83*faadcf7eSRobert Mustacchi.Fo strerrorname_np 84*faadcf7eSRobert Mustacchi.Fa "int errnum" 85*faadcf7eSRobert Mustacchi.Fc 86*faadcf7eSRobert Mustacchi.Sh DESCRIPTION 87*faadcf7eSRobert MustacchiThe 88*faadcf7eSRobert Mustacchi.Fn strerror 89*faadcf7eSRobert Mustacchifunction maps the error number in 90*faadcf7eSRobert Mustacchi.Fa errnum 91*faadcf7eSRobert Mustacchito an error message string, and returns a pointer to that string. 92*faadcf7eSRobert MustacchiIt uses the same set of error messages as 93*faadcf7eSRobert Mustacchi.Xr perror 3C . 94*faadcf7eSRobert MustacchiThe returned string should not be overwritten. 95*faadcf7eSRobert MustacchiThe string will be translated based on the current locale. 96*faadcf7eSRobert Mustacchi.Pp 97*faadcf7eSRobert MustacchiThe 98*faadcf7eSRobert Mustacchi.Fn strerror_r 99*faadcf7eSRobert Mustacchifunction maps the error number in 100*faadcf7eSRobert Mustacchi.Fa errnum 101*faadcf7eSRobert Mustacchito an error message string and returns the string in the buffer pointed to by 102*faadcf7eSRobert Mustacchi.Fa strerrbuf 103*faadcf7eSRobert Mustacchiwith length 104*faadcf7eSRobert Mustacchi.Fa buflen . 105*faadcf7eSRobert Mustacchi.Pp 106*faadcf7eSRobert MustacchiThe 107*faadcf7eSRobert Mustacchi.Fn strerror_l 108*faadcf7eSRobert Mustacchifunction maps the error number in 109*faadcf7eSRobert Mustacchi.Fa \fIerrnum\fR 110*faadcf7eSRobert Mustacchito an error message string in the locale indicated by 111*faadcf7eSRobert Mustacchi.Fa loc . 112*faadcf7eSRobert MustacchiThe returned string should not be overwritten. 113*faadcf7eSRobert MustacchiIf 114*faadcf7eSRobert Mustacchi.Fa loc 115*faadcf7eSRobert Mustacchiis passed the 116*faadcf7eSRobert Mustacchi.Dv NULL 117*faadcf7eSRobert Mustacchipointer, then the locale of the calling thread's current locale will be used 118*faadcf7eSRobert Mustacchiinstead, like 119*faadcf7eSRobert Mustacchi.Fn strerror . 120*faadcf7eSRobert Mustacchi.Pp 121*faadcf7eSRobert MustacchiBecause the 122*faadcf7eSRobert Mustacchi.Fn strerror 123*faadcf7eSRobert Mustacchiand 124*faadcf7eSRobert Mustacchi.Fn strerror_l 125*faadcf7eSRobert Mustacchifunctions, return localized strings in the event of an unknown error, one must 126*faadcf7eSRobert Mustacchiuse the value of 127*faadcf7eSRobert Mustacchi.Va errno 128*faadcf7eSRobert Mustacchito detect an error. 129*faadcf7eSRobert MustacchiCallers should first set 130*faadcf7eSRobert Mustacchi.Va errno 131*faadcf7eSRobert Mustacchito 132*faadcf7eSRobert Mustacchi.Sy 0 133*faadcf7eSRobert Mustacchibefore the call to either function and then check the value of 134*faadcf7eSRobert Mustacchi.Va errno 135*faadcf7eSRobert Mustacchiafter the call. 136*faadcf7eSRobert MustacchiIf the value of 137*faadcf7eSRobert Mustacchi.Va errno 138*faadcf7eSRobert Mustacchiis non-zero then an error has occurred. 139*faadcf7eSRobert Mustacchi.Pp 140*faadcf7eSRobert MustacchiThe 141*faadcf7eSRobert Mustacchi.Fn strerrordesc_np 142*faadcf7eSRobert Mustacchifunction behaves the same as 143*faadcf7eSRobert Mustacchi.Fn strerror , 144*faadcf7eSRobert Mustacchibut will always return the error message string in the C locale and will 145*faadcf7eSRobert Mustacchinot provide a translate message. 146*faadcf7eSRobert MustacchiUnlike 147*faadcf7eSRobert Mustacchi.Fn strerror , 148*faadcf7eSRobert Mustacchiunknown error messages will return a 149*faadcf7eSRobert Mustacchi.Dv NULL 150*faadcf7eSRobert Mustacchipointer. 151*faadcf7eSRobert MustacchiClearing 152*faadcf7eSRobert Mustacchi.Va errno 153*faadcf7eSRobert Mustacchiprior to calling 154*faadcf7eSRobert Mustacchi.Fn strerrordesc_np 155*faadcf7eSRobert Mustacchiis still advised, as with 156*faadcf7eSRobert Mustacchi.Fn strerror . 157*faadcf7eSRobert Mustacchi.Pp 158*faadcf7eSRobert MustacchiThe 159*faadcf7eSRobert Mustacchi.Fn strerrorname_np 160*faadcf7eSRobert Mustacchifunction translates 161*faadcf7eSRobert Mustacchi.Fa errnum 162*faadcf7eSRobert Mustacchiinto the string name of the error constant. 163*faadcf7eSRobert MustacchiFor example: 164*faadcf7eSRobert Mustacchi.Dq Er EIO , 165*faadcf7eSRobert Mustacchi.Dq Er EINTR , 166*faadcf7eSRobert Mustacchietc. 167*faadcf7eSRobert MustacchiWhen passed the value of 0, there is no traditional error string. 168*faadcf7eSRobert MustacchiTo match originating implementations, the string 169*faadcf7eSRobert Mustacchi.Dq 0 170*faadcf7eSRobert Mustacchiis returned in that case. 171*faadcf7eSRobert Mustacchi.Sh RETURN VALUES 172*faadcf7eSRobert MustacchiUpon successful completion, 173*faadcf7eSRobert Mustacchi.Fn strerror 174*faadcf7eSRobert Mustacchiand 175*faadcf7eSRobert Mustacchi.Fn strerror_l 176*faadcf7eSRobert Mustacchireturn a pointer to the generated message string. 177*faadcf7eSRobert MustacchiOtherwise, they set 178*faadcf7eSRobert Mustacchi.Va errno 179*faadcf7eSRobert Mustacchiand returns a pointer to an error message string. 180*faadcf7eSRobert MustacchiThey return the localized string 181*faadcf7eSRobert Mustacchi.Dq Unknown error 182*faadcf7eSRobert Mustacchiif 183*faadcf7eSRobert Mustacchi.Fa errnum 184*faadcf7eSRobert Mustacchiis not a valid error number. 185*faadcf7eSRobert Mustacchi.Pp 186*faadcf7eSRobert MustacchiUpon successful completion, 187*faadcf7eSRobert Mustacchi.Fn strerror_r 188*faadcf7eSRobert Mustacchireturns 189*faadcf7eSRobert Mustacchi.Sy 0 . 190*faadcf7eSRobert MustacchiOtherwise it sets 191*faadcf7eSRobert Mustacchi.Va errno 192*faadcf7eSRobert Mustacchiand returns the value of 193*faadcf7eSRobert Mustacchi.Va errno 194*faadcf7eSRobert Mustacchito indicate the error. 195*faadcf7eSRobert MustacchiIt returns the localized string 196*faadcf7eSRobert Mustacchi.Dq Unknown error 197*faadcf7eSRobert Mustacchiin the buffer pointed to by 198*faadcf7eSRobert Mustacchi.Fa strerrbuf 199*faadcf7eSRobert Mustacchiif 200*faadcf7eSRobert Mustacchi.Fa errnum 201*faadcf7eSRobert Mustacchiis not a valid error number. 202*faadcf7eSRobert Mustacchi.Pp 203*faadcf7eSRobert MustacchiUpon successful completion, the 204*faadcf7eSRobert Mustacchi.Fn strerrordesc_np 205*faadcf7eSRobert Mustacchifunction returns the C locale's generated message string. 206*faadcf7eSRobert MustacchiOtherwise, 207*faadcf7eSRobert Mustacchi.Dv NULL 208*faadcf7eSRobert Mustacchiis returned and 209*faadcf7eSRobert Mustacchi.Va errno 210*faadcf7eSRobert Mustacchiis set. 211*faadcf7eSRobert MustacchiUnlike 212*faadcf7eSRobert Mustacchi.Fn strerror , 213*faadcf7eSRobert Mustacchithis occurs when a string's translation is not known. 214*faadcf7eSRobert Mustacchi.Pp 215*faadcf7eSRobert MustacchiUpon successful completion, the 216*faadcf7eSRobert Mustacchi.Fn strerrorname_np 217*faadcf7eSRobert Mustacchifunction returns the C language constant name of the error. 218*faadcf7eSRobert MustacchiOtherwise, 219*faadcf7eSRobert Mustacchi.Dv NULL 220*faadcf7eSRobert Mustacchiis returned and 221*faadcf7eSRobert Mustacchi.Va errno 222*faadcf7eSRobert Mustacchiis set. 223*faadcf7eSRobert Mustacchi.Sh ERRORS 224c10c16deSRichard LoweThese functions may fail if: 225*faadcf7eSRobert Mustacchi.Bl -tag -width Er 226*faadcf7eSRobert Mustacchi.It Er EINVAL 227*faadcf7eSRobert MustacchiThe value of 228*faadcf7eSRobert Mustacchi.Fa errnum 229*faadcf7eSRobert Mustacchiis not a valid error number. 230*faadcf7eSRobert Mustacchi.El 231*faadcf7eSRobert Mustacchi.Pp 232*faadcf7eSRobert MustacchiThe 233*faadcf7eSRobert Mustacchi.Fn strerror_r 234*faadcf7eSRobert Mustacchifunction may fail if: 235*faadcf7eSRobert Mustacchi.Bl -tag -width Er 236*faadcf7eSRobert Mustacchi.It Er ERANGE 237*faadcf7eSRobert MustacchiThe 238*faadcf7eSRobert Mustacchi.Fa buflen 239*faadcf7eSRobert Mustacchiargument specifies insufficient storage to contain the generated message string. 240*faadcf7eSRobert Mustacchi.El 241*faadcf7eSRobert Mustacchi.Sh USAGE 242*faadcf7eSRobert MustacchiMessages returned from these functions 243*faadcf7eSRobert Mustacchi.Po 244*faadcf7eSRobert Mustacchiother than 245*faadcf7eSRobert Mustacchi.Fn strerrordesc_np 246*faadcf7eSRobert Mustacchiand 247*faadcf7eSRobert Mustacchi.Fn strerrorname_np 248*faadcf7eSRobert Mustacchi.Pc 249*faadcf7eSRobert Mustacchiare in the native language specified by the 250*faadcf7eSRobert Mustacchi.Dv LC_MESSAGES 251*faadcf7eSRobert Mustacchilocale category. 252*faadcf7eSRobert MustacchiSee 253*faadcf7eSRobert Mustacchi.Xr setlocale 3C 254*faadcf7eSRobert Mustacchiand 255*faadcf7eSRobert Mustacchi.Xr uselocale 3C . 256*faadcf7eSRobert Mustacchi.Sh INTERFACE STABILITY 257*faadcf7eSRobert Mustacchi.Sy Committed 258*faadcf7eSRobert Mustacchi.Sh MT-LEVEL 259*faadcf7eSRobert Mustacchi.Sy Safe 260*faadcf7eSRobert Mustacchi.Sh SEE ALSO 261*faadcf7eSRobert Mustacchi.Xr gettext 3C , 262*faadcf7eSRobert Mustacchi.Xr perror 3C , 263*faadcf7eSRobert Mustacchi.Xr setlocale 3C , 264*faadcf7eSRobert Mustacchi.Xr uselocale 3C , 265*faadcf7eSRobert Mustacchi.Xr attributes 7 , 266*faadcf7eSRobert Mustacchi.Xr standards 7 267