xref: /illumos-gate/usr/src/man/man3c/strerror.3c (revision faadcf7e)
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