1explain_getsockname(3)     Library Functions Manual     explain_getsockname(3)
2
3
4

NAME

6       explain_getsockname - explain getsockname(2) errors
7

SYNOPSIS

9       #include <libexplain/getsockname.h>
10       const char *explain_getsockname(int fildes, struct sockaddr *sock_addr,
11       socklen_t *sock_addr_size);
12       const char *explain_errno_getsockname(int errnum,  int  fildes,  struct
13       sockaddr *sock_addr, socklen_t *sock_addr_size);
14       void  explain_message_getsockname(char  *message, int message_size, int
15       fildes, struct sockaddr *sock_addr, socklen_t *sock_addr_size);
16       void explain_message_errno_getsockname(char *message, int message_size,
17       int   errnum,   int   fildes,  struct  sockaddr  *sock_addr,  socklen_t
18       *sock_addr_size);
19

DESCRIPTION

21       These functions may be used to obtain explanations for errors  returned
22       by the getsockname(2) system call.
23
24   explain_getsockname
25       const char *explain_getsockname(int fildes, struct sockaddr *sock_addr,
26       socklen_t *sock_addr_size);
27
28       The explain_getsockname function is used to obtain an explanation of an
29       error  returned  by the getsockname(2) system call.  The least the mes‐
30       sage will contain is the value of strerror(errno), but usually it  will
31       do much better, and indicate the underlying cause in more detail.
32
33       The  errno global variable will be used to obtain the error value to be
34       decoded.
35
36       This function is intended to be used in a fashion similar to  the  fol‐
37       lowing example:
38              struct sockaddr sock_addr;
39              socklen_t sock_addr_size = sizeof(sock_addr);
40              if (getsockname(fildes, &sock_addr, &sock_addr_size) < 0)
41              {
42                  fprintf(stderr, "%s\n", explain_getsockname(fildes,
43                      &sock_addr, &sock_addr_size));
44                  exit(EXIT_FAILURE);
45              }
46
47       The  above  code  example is available pre‐packaged as the explain_get‐
48       sockname_or_die(3) function.
49
50       fildes  The original fildes, exactly as passed  to  the  getsockname(2)
51               system call.
52
53       sock_addr
54               The original sock_addr, exactly as passed to the getsockname(2)
55               system call.
56
57       sock_addr_size
58               The original sock_addr_size, exactly as passed to the  getsock‐
59               name(2) system call.
60
61       Returns:
62               The  message  explaining  the  error.   This  message buffer is
63               shared by all libexplain functions which do not supply a buffer
64               in  their  argument list.  This will be overwritten by the next
65               call to any  libexplain  function  which  shares  this  buffer,
66               including other threads.
67
68       Note: This function is not thread safe, because it shares a return buf‐
69       fer across all threads, and many other functions in this library.
70
71   explain_errno_getsockname
72       const char *explain_errno_getsockname(int errnum,  int  fildes,  struct
73       sockaddr *sock_addr, socklen_t *sock_addr_size);
74
75       The explain_errno_getsockname function is used to obtain an explanation
76       of an error returned by the getsockname(2) system call.  The least  the
77       message  will  contain is the value of strerror(errnum), but usually it
78       will do much better, and indicate the underlying cause in more detail.
79
80       This function is intended to be used in a fashion similar to  the  fol‐
81       lowing example:
82              struct sockaddr sock_addr;
83              socklen_t sock_addr_size = sizeof(sock_addr);
84              if (getsockname(fildes, &sock_addr, &sock_addr_size) < 0)
85              {
86                  int err = errno;
87                  fprintf(stderr, "%s\n", explain_errno_getsockname(err,
88                      fildes, &sock_addr, &sock_addr_size));
89                  exit(EXIT_FAILURE);
90              }
91
92       The  above  code  example is available pre‐packaged as the explain_get‐
93       sockname_or_die(3) function.
94
95       errnum  The error value to be decoded, usually obtained from the  errno
96               global  variable  just before this function is called.  This is
97               necessary if you need to call any code between the system  call
98               to  be explained and this function, because many libc functions
99               will alter the value of errno.
100
101       fildes  The original fildes, exactly as passed  to  the  getsockname(2)
102               system call.
103
104       sock_addr
105               The original sock_addr, exactly as passed to the getsockname(2)
106               system call.
107
108       sock_addr_size
109               The original sock_addr_size, exactly as passed to the  getsock‐
110               name(2) system call.
111
112       Returns:
113               The  message  explaining  the  error.   This  message buffer is
114               shared by all libexplain functions which do not supply a buffer
115               in  their  argument list.  This will be overwritten by the next
116               call to any  libexplain  function  which  shares  this  buffer,
117               including other threads.
118
119       Note: This function is not thread safe, because it shares a return buf‐
120       fer across all threads, and many other functions in this library.
121
122   explain_message_getsockname
123       void explain_message_getsockname(char *message, int  message_size,  int
124       fildes, struct sockaddr *sock_addr, socklen_t *sock_addr_size);
125
126       The  explain_message_getsockname  function  may  be  used to  obtain an
127       explanation of an error returned by  the  getsockname(2)  system  call.
128       The least the message will contain is the value of strerror(errno), but
129       usually it will do much better, and indicate the  underlying  cause  in
130       more detail.
131
132       The  errno global variable will be used to obtain the error value to be
133       decoded.
134
135       This function is intended to be used in a fashion similar to  the  fol‐
136       lowing example:
137              struct sockaddr sock_addr;
138              socklen_t sock_addr_size = sizeof(sock_addr);
139              if (getsockname(fildes, &sock_addr, &sock_addr_size) < 0)
140              {
141                  char message[3000];
142                  explain_message_getsockname(message, sizeof(message),
143                      fildes, &sock_addr, &sock_addr_size);
144                  fprintf(stderr, "%s\n", message);
145                  exit(EXIT_FAILURE);
146              }
147
148       The  above  code  example is available pre‐packaged as the explain_get‐
149       sockname_or_die(3) function.
150
151       message The location in which to store  the  returned  message.   If  a
152               suitable  message  return  buffer is supplied, this function is
153               thread safe.
154
155       message_size
156               The size in bytes  of  the  location  in  which  to  store  the
157               returned message.
158
159       fildes  The  original  fildes,  exactly as passed to the getsockname(2)
160               system call.
161
162       sock_addr
163               The original sock_addr, exactly as passed to the getsockname(2)
164               system call.
165
166       sock_addr_size
167               The  original sock_addr_size, exactly as passed to the getsock‐
168               name(2) system call.
169
170   explain_message_errno_getsockname
171       void explain_message_errno_getsockname(char *message, int message_size,
172       int   errnum,   int   fildes,  struct  sockaddr  *sock_addr,  socklen_t
173       *sock_addr_size);
174
175       The explain_message_errno_getsockname function may be used to obtain an
176       explanation  of  an  error  returned by the getsockname(2) system call.
177       The least the message will contain is the  value  of  strerror(errnum),
178       but  usually  it will do much better, and indicate the underlying cause
179       in more detail.
180
181       This function is intended to be used in a fashion similar to  the  fol‐
182       lowing example:
183              struct sockaddr sock_addr;
184              socklen_t sock_addr_size = sizeof(sock_addr);
185              if (getsockname(fildes, &sock_addr, &sock_addr_size) < 0)
186              {
187                  int err = errno;
188                  char message[3000];
189                  explain_message_errno_getsockname(message, sizeof(message),
190                      err, fildes, &sock_addr, &sock_addr_size);
191                  fprintf(stderr, "%s\n", message);
192                  exit(EXIT_FAILURE);
193              }
194
195       The  above  code  example is available pre‐packaged as the explain_get‐
196       sockname_or_die(3) function.
197
198       message The location in which to store  the  returned  message.   If  a
199               suitable  message  return  buffer is supplied, this function is
200               thread safe.
201
202       message_size
203               The size in bytes  of  the  location  in  which  to  store  the
204               returned message.
205
206       errnum  The  error value to be decoded, usually obtained from the errno
207               global variable just before this function is called.   This  is
208               necessary  if you need to call any code between the system call
209               to be explained and this function, because many libc  functions
210               will alter the value of errno.
211
212       fildes  The  original  fildes,  exactly as passed to the getsockname(2)
213               system call.
214
215       sock_addr
216               The original sock_addr, exactly as passed to the getsockname(2)
217               system call.
218
219       sock_addr_size
220               The  original sock_addr_size, exactly as passed to the getsock‐
221               name(2) system call.
222

SEE ALSO

224       getsockname(2)
225               get socket name
226
227       explain_getsockname_or_die(3)
228               get socket name and report errors
229
231       libexplain version 1.4
232       Copyright (C) 2009 Peter Miller
233
234
235
236                                                        explain_getsockname(3)
Impressum