Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1693 | serge | 1 | /*** |
2 | **** CAUTION!!! KEEP DOC CONSISTENT---if you change text of a message |
||
3 | **** here, change two places: |
||
4 | **** 1) the leading doc section (alphabetized by macro) |
||
5 | **** 2) the real text inside switch(errnum) |
||
6 | ***/ |
||
7 | |||
8 | /* |
||
9 | FUNCTION |
||
10 | < |
||
11 | |||
12 | INDEX |
||
13 | strerror |
||
14 | |||
15 | ANSI_SYNOPSIS |
||
16 | #include |
||
17 | char *strerror(int <[errnum]>); |
||
18 | |||
19 | TRAD_SYNOPSIS |
||
20 | #include |
||
21 | char *strerror(<[errnum]>) |
||
22 | int <[errnum]>; |
||
23 | |||
24 | DESCRIPTION |
||
25 | < |
||
26 | string. The value of <[errnum]> is usually a copy of < |
||
27 | If < |
||
28 | empty string. |
||
29 | |||
30 | This implementation of < |
||
31 | for each of the values defined in `< |
||
32 | |||
33 | o+ |
||
34 | o E2BIG |
||
35 | Arg list too long |
||
36 | |||
37 | o EACCES |
||
38 | Permission denied |
||
39 | |||
40 | o EADDRINUSE |
||
41 | Address already in use |
||
42 | |||
43 | o EADV |
||
44 | Advertise error |
||
45 | |||
46 | o EAFNOSUPPORT |
||
47 | Address family not supported by protocol family |
||
48 | |||
49 | o EAGAIN |
||
50 | No more processes |
||
51 | |||
52 | o EALREADY |
||
53 | Socket already connected |
||
54 | |||
55 | o EBADF |
||
56 | Bad file number |
||
57 | |||
58 | o EBADMSG |
||
59 | Bad message |
||
60 | |||
61 | o EBUSY |
||
62 | Device or resource busy |
||
63 | |||
64 | o ECHILD |
||
65 | No children |
||
66 | |||
67 | o ECOMM |
||
68 | Communication error |
||
69 | |||
70 | o ECONNABORTED |
||
71 | Software caused connection abort |
||
72 | |||
73 | o ECONNREFUSED |
||
74 | Connection refused |
||
75 | |||
76 | o EDEADLK |
||
77 | Deadlock |
||
78 | |||
79 | o EDESTADDRREQ |
||
80 | Destination address required |
||
81 | |||
82 | o EEXIST |
||
83 | File exists |
||
84 | |||
85 | o EDOM |
||
86 | Math argument |
||
87 | |||
88 | o EFAULT |
||
89 | Bad address |
||
90 | |||
91 | o EFBIG |
||
92 | File too large |
||
93 | |||
94 | o EHOSTDOWN |
||
95 | Host is down |
||
96 | |||
97 | o EHOSTUNREACH |
||
98 | Host is unreachable |
||
99 | |||
100 | o EIDRM |
||
101 | Identifier removed |
||
102 | |||
103 | o EINPROGRESS |
||
104 | Connection already in progress |
||
105 | |||
106 | o EINTR |
||
107 | Interrupted system call |
||
108 | |||
109 | o EINVAL |
||
110 | Invalid argument |
||
111 | |||
112 | o EIO |
||
113 | I/O error |
||
114 | |||
115 | o EISCONN |
||
116 | Socket is already connected |
||
117 | |||
118 | o EISDIR |
||
119 | Is a directory |
||
120 | |||
121 | o ELIBACC |
||
122 | Cannot access a needed shared library |
||
123 | |||
124 | o ELIBBAD |
||
125 | Accessing a corrupted shared library |
||
126 | |||
127 | o ELIBEXEC |
||
128 | Cannot exec a shared library directly |
||
129 | |||
130 | o ELIBMAX |
||
131 | Attempting to link in more shared libraries than system limit |
||
132 | |||
133 | o ELIBSCN |
||
134 | <<.lib>> section in a.out corrupted |
||
135 | |||
136 | o EMFILE |
||
137 | Too many open files |
||
138 | |||
139 | o EMLINK |
||
140 | Too many links |
||
141 | |||
142 | o EMSGSIZE |
||
143 | Message too long |
||
144 | |||
145 | o EMULTIHOP |
||
146 | Multihop attempted |
||
147 | |||
148 | o ENAMETOOLONG |
||
149 | File or path name too long |
||
150 | |||
151 | o ENETDOWN |
||
152 | Network interface not configured |
||
153 | |||
154 | o ENETUNREACH |
||
155 | Network is unreachable |
||
156 | |||
157 | o ENFILE |
||
158 | Too many open files in system |
||
159 | |||
160 | o ENODEV |
||
161 | No such device |
||
162 | |||
163 | o ENOENT |
||
164 | No such file or directory |
||
165 | |||
166 | o ENOEXEC |
||
167 | Exec format error |
||
168 | |||
169 | o ENOLCK |
||
170 | No lock |
||
171 | |||
172 | o ENOLINK |
||
173 | Virtual circuit is gone |
||
174 | |||
175 | o ENOMEM |
||
176 | Not enough space |
||
177 | |||
178 | o ENOMSG |
||
179 | No message of desired type |
||
180 | |||
181 | o ENONET |
||
182 | Machine is not on the network |
||
183 | |||
184 | o ENOPKG |
||
185 | No package |
||
186 | |||
187 | o ENOPROTOOPT |
||
188 | Protocol not available |
||
189 | |||
190 | o ENOSPC |
||
191 | No space left on device |
||
192 | |||
193 | o ENOSR |
||
194 | No stream resources |
||
195 | |||
196 | o ENOSTR |
||
197 | Not a stream |
||
198 | |||
199 | o ENOSYS |
||
200 | Function not implemented |
||
201 | |||
202 | o ENOTBLK |
||
203 | Block device required |
||
204 | |||
205 | o ENOTCONN |
||
206 | Socket is not connected |
||
207 | |||
208 | o ENOTDIR |
||
209 | Not a directory |
||
210 | |||
211 | o ENOTEMPTY |
||
212 | Directory not empty |
||
213 | |||
214 | o ENOTSOCK |
||
215 | Socket operation on non-socket |
||
216 | |||
217 | o ENOTSUP |
||
218 | Not supported |
||
219 | |||
220 | o ENOTTY |
||
221 | Not a character device |
||
222 | |||
223 | o ENXIO |
||
224 | No such device or address |
||
225 | |||
226 | o EPERM |
||
227 | Not owner |
||
228 | |||
229 | o EPIPE |
||
230 | Broken pipe |
||
231 | |||
232 | o EPROTO |
||
233 | Protocol error |
||
234 | |||
235 | o EPROTOTYPE |
||
236 | Protocol wrong type for socket |
||
237 | |||
238 | o EPROTONOSUPPORT |
||
239 | Unknown protocol |
||
240 | |||
241 | o ERANGE |
||
242 | Result too large |
||
243 | |||
244 | o EREMOTE |
||
245 | Resource is remote |
||
246 | |||
247 | o EROFS |
||
248 | Read-only file system |
||
249 | |||
250 | o ESHUTDOWN |
||
251 | Can't send after socket shutdown |
||
252 | |||
253 | o ESOCKTNOSUPPORT |
||
254 | Socket type not supported |
||
255 | |||
256 | o ESPIPE |
||
257 | Illegal seek |
||
258 | |||
259 | o ESRCH |
||
260 | No such process |
||
261 | |||
262 | o ESRMNT |
||
263 | Srmount error |
||
264 | |||
265 | o ETIME |
||
266 | Stream ioctl timeout |
||
267 | |||
268 | o ETIMEDOUT |
||
269 | Connection timed out |
||
270 | |||
271 | o ETXTBSY |
||
272 | Text file busy |
||
273 | |||
274 | o EXDEV |
||
275 | Cross-device link |
||
276 | |||
277 | o ECANCELED |
||
278 | Operation canceled |
||
279 | |||
280 | o ENOTRECOVERABLE |
||
281 | State not recoverable |
||
282 | |||
283 | o EOWNERDEAD |
||
284 | Previous owner died |
||
285 | |||
286 | o ESTRPIPE |
||
287 | Strings pipe error |
||
288 | |||
289 | o- |
||
290 | |||
291 | RETURNS |
||
292 | This function returns a pointer to a string. Your application must |
||
293 | not modify that string. |
||
294 | |||
295 | PORTABILITY |
||
296 | ANSI C requires < |
||
297 | for each error number. |
||
298 | |||
299 | Although this implementation of < |
||
300 | declares that subsequent calls to < |
||
301 | result string; therefore portable code cannot depend on the reentrancy |
||
302 | of this subroutine. |
||
303 | |||
304 | This implementation of < |
||
305 | extensibility. < |
||
306 | used as a base for user-defined error values. If the user supplies a |
||
307 | routine named <<_user_strerror>>, and <[errnum]> passed to |
||
308 | < |
||
309 | <<_user_strerror>> is called with <[errnum]> as its argument. |
||
310 | |||
311 | <<_user_strerror>> takes one argument of type <[int]>, and returns a |
||
312 | character pointer. If <[errnum]> is unknown to <<_user_strerror>>, |
||
313 | <<_user_strerror>> returns <[NULL]>. The default <<_user_strerror>> |
||
314 | returns <[NULL]> for all input values. |
||
315 | |||
316 | < |
||
317 | |||
318 | QUICKREF |
||
319 | strerror ansi pure |
||
320 | */ |
||
321 | |||
322 | #include |
||
323 | #include |
||
324 | |||
325 | char * |
||
326 | _DEFUN (strerror, (errnum), |
||
327 | int errnum) |
||
328 | { |
||
329 | char *error; |
||
330 | extern char *_user_strerror _PARAMS ((int)); |
||
331 | |||
332 | switch (errnum) |
||
333 | { |
||
334 | /* go32 defines EPERM as EACCES */ |
||
335 | #if defined (EPERM) && (!defined (EACCES) || (EPERM != EACCES)) |
||
336 | case EPERM: |
||
337 | error = "Not owner"; |
||
338 | break; |
||
339 | #endif |
||
340 | #ifdef ENOENT |
||
341 | case ENOENT: |
||
342 | error = "No such file or directory"; |
||
343 | break; |
||
344 | #endif |
||
345 | #ifdef ESRCH |
||
346 | case ESRCH: |
||
347 | error = "No such process"; |
||
348 | break; |
||
349 | #endif |
||
350 | #ifdef EINTR |
||
351 | case EINTR: |
||
352 | error = "Interrupted system call"; |
||
353 | break; |
||
354 | #endif |
||
355 | #ifdef EIO |
||
356 | case EIO: |
||
357 | error = "I/O error"; |
||
358 | break; |
||
359 | #endif |
||
360 | /* go32 defines ENXIO as ENODEV */ |
||
361 | #if defined (ENXIO) && (!defined (ENODEV) || (ENXIO != ENODEV)) |
||
362 | case ENXIO: |
||
363 | error = "No such device or address"; |
||
364 | break; |
||
365 | #endif |
||
366 | #ifdef E2BIG |
||
367 | case E2BIG: |
||
368 | error = "Arg list too long"; |
||
369 | break; |
||
370 | #endif |
||
371 | #ifdef ENOEXEC |
||
372 | case ENOEXEC: |
||
373 | error = "Exec format error"; |
||
374 | break; |
||
375 | #endif |
||
376 | #ifdef EALREADY |
||
377 | case EALREADY: |
||
378 | error = "Socket already connected"; |
||
379 | break; |
||
380 | #endif |
||
381 | #ifdef EBADF |
||
382 | case EBADF: |
||
383 | error = "Bad file number"; |
||
384 | break; |
||
385 | #endif |
||
386 | #ifdef ECHILD |
||
387 | case ECHILD: |
||
388 | error = "No children"; |
||
389 | break; |
||
390 | #endif |
||
391 | #ifdef EDESTADDRREQ |
||
392 | case EDESTADDRREQ: |
||
393 | error = "Destination address required"; |
||
394 | break; |
||
395 | #endif |
||
396 | #ifdef EAGAIN |
||
397 | case EAGAIN: |
||
398 | error = "No more processes"; |
||
399 | break; |
||
400 | #endif |
||
401 | #ifdef ENOMEM |
||
402 | case ENOMEM: |
||
403 | error = "Not enough space"; |
||
404 | break; |
||
405 | #endif |
||
406 | #ifdef EACCES |
||
407 | case EACCES: |
||
408 | error = "Permission denied"; |
||
409 | break; |
||
410 | #endif |
||
411 | #ifdef EFAULT |
||
412 | case EFAULT: |
||
413 | error = "Bad address"; |
||
414 | break; |
||
415 | #endif |
||
416 | #ifdef ENOTBLK |
||
417 | case ENOTBLK: |
||
418 | error = "Block device required"; |
||
419 | break; |
||
420 | #endif |
||
421 | #ifdef EBUSY |
||
422 | case EBUSY: |
||
423 | error = "Device or resource busy"; |
||
424 | break; |
||
425 | #endif |
||
426 | #ifdef EEXIST |
||
427 | case EEXIST: |
||
428 | error = "File exists"; |
||
429 | break; |
||
430 | #endif |
||
431 | #ifdef EXDEV |
||
432 | case EXDEV: |
||
433 | error = "Cross-device link"; |
||
434 | break; |
||
435 | #endif |
||
436 | #ifdef ENODEV |
||
437 | case ENODEV: |
||
438 | error = "No such device"; |
||
439 | break; |
||
440 | #endif |
||
441 | #ifdef ENOTDIR |
||
442 | case ENOTDIR: |
||
443 | error = "Not a directory"; |
||
444 | break; |
||
445 | #endif |
||
446 | #ifdef EHOSTDOWN |
||
447 | case EHOSTDOWN: |
||
448 | error = "Host is down"; |
||
449 | break; |
||
450 | #endif |
||
451 | #ifdef EINPROGRESS |
||
452 | case EINPROGRESS: |
||
453 | error = "Connection already in progress"; |
||
454 | break; |
||
455 | #endif |
||
456 | #ifdef EISDIR |
||
457 | case EISDIR: |
||
458 | error = "Is a directory"; |
||
459 | break; |
||
460 | #endif |
||
461 | #ifdef EINVAL |
||
462 | case EINVAL: |
||
463 | error = "Invalid argument"; |
||
464 | break; |
||
465 | #endif |
||
466 | #ifdef ENETDOWN |
||
467 | case ENETDOWN: |
||
468 | error = "Network interface is not configured"; |
||
469 | break; |
||
470 | #endif |
||
471 | #ifdef ENFILE |
||
472 | case ENFILE: |
||
473 | error = "Too many open files in system"; |
||
474 | break; |
||
475 | #endif |
||
476 | #ifdef EMFILE |
||
477 | case EMFILE: |
||
478 | error = "Too many open files"; |
||
479 | break; |
||
480 | #endif |
||
481 | #ifdef ENOTTY |
||
482 | case ENOTTY: |
||
483 | error = "Not a character device"; |
||
484 | break; |
||
485 | #endif |
||
486 | #ifdef ETXTBSY |
||
487 | case ETXTBSY: |
||
488 | error = "Text file busy"; |
||
489 | break; |
||
490 | #endif |
||
491 | #ifdef EFBIG |
||
492 | case EFBIG: |
||
493 | error = "File too large"; |
||
494 | break; |
||
495 | #endif |
||
496 | #ifdef EHOSTUNREACH |
||
497 | case EHOSTUNREACH: |
||
498 | error = "Host is unreachable"; |
||
499 | break; |
||
500 | #endif |
||
501 | #ifdef ENOSPC |
||
502 | case ENOSPC: |
||
503 | error = "No space left on device"; |
||
504 | break; |
||
505 | #endif |
||
506 | #ifdef ENOTSUP |
||
507 | case ENOTSUP: |
||
508 | error = "Not supported"; |
||
509 | break; |
||
510 | #endif |
||
511 | #ifdef ESPIPE |
||
512 | case ESPIPE: |
||
513 | error = "Illegal seek"; |
||
514 | break; |
||
515 | #endif |
||
516 | #ifdef EROFS |
||
517 | case EROFS: |
||
518 | error = "Read-only file system"; |
||
519 | break; |
||
520 | #endif |
||
521 | #ifdef EMLINK |
||
522 | case EMLINK: |
||
523 | error = "Too many links"; |
||
524 | break; |
||
525 | #endif |
||
526 | #ifdef EPIPE |
||
527 | case EPIPE: |
||
528 | error = "Broken pipe"; |
||
529 | break; |
||
530 | #endif |
||
531 | #ifdef EDOM |
||
532 | case EDOM: |
||
533 | error = "Math argument"; |
||
534 | break; |
||
535 | #endif |
||
536 | #ifdef ERANGE |
||
537 | case ERANGE: |
||
538 | error = "Result too large"; |
||
539 | break; |
||
540 | #endif |
||
541 | #ifdef ENOMSG |
||
542 | case ENOMSG: |
||
543 | error = "No message of desired type"; |
||
544 | break; |
||
545 | #endif |
||
546 | #ifdef EIDRM |
||
547 | case EIDRM: |
||
548 | error = "Identifier removed"; |
||
549 | break; |
||
550 | #endif |
||
551 | #ifdef EDEADLK |
||
552 | case EDEADLK: |
||
553 | error = "Deadlock"; |
||
554 | break; |
||
555 | #endif |
||
556 | #ifdef ENETUNREACH |
||
557 | case ENETUNREACH: |
||
558 | error = "Network is unreachable"; |
||
559 | break; |
||
560 | #endif |
||
561 | #ifdef ENOLCK |
||
562 | case ENOLCK: |
||
563 | error = "No lock"; |
||
564 | break; |
||
565 | #endif |
||
566 | #ifdef ENOSTR |
||
567 | case ENOSTR: |
||
568 | error = "Not a stream"; |
||
569 | break; |
||
570 | #endif |
||
571 | #ifdef ETIME |
||
572 | case ETIME: |
||
573 | error = "Stream ioctl timeout"; |
||
574 | break; |
||
575 | #endif |
||
576 | #ifdef ENOSR |
||
577 | case ENOSR: |
||
578 | error = "No stream resources"; |
||
579 | break; |
||
580 | #endif |
||
581 | #ifdef ENONET |
||
582 | case ENONET: |
||
583 | error = "Machine is not on the network"; |
||
584 | break; |
||
585 | #endif |
||
586 | #ifdef ENOPKG |
||
587 | case ENOPKG: |
||
588 | error = "No package"; |
||
589 | break; |
||
590 | #endif |
||
591 | #ifdef EREMOTE |
||
592 | case EREMOTE: |
||
593 | error = "Resource is remote"; |
||
594 | break; |
||
595 | #endif |
||
596 | #ifdef ENOLINK |
||
597 | case ENOLINK: |
||
598 | error = "Virtual circuit is gone"; |
||
599 | break; |
||
600 | #endif |
||
601 | #ifdef EADV |
||
602 | case EADV: |
||
603 | error = "Advertise error"; |
||
604 | break; |
||
605 | #endif |
||
606 | #ifdef ESRMNT |
||
607 | case ESRMNT: |
||
608 | error = "Srmount error"; |
||
609 | break; |
||
610 | #endif |
||
611 | #ifdef ECOMM |
||
612 | case ECOMM: |
||
613 | error = "Communication error"; |
||
614 | break; |
||
615 | #endif |
||
616 | #ifdef EPROTO |
||
617 | case EPROTO: |
||
618 | error = "Protocol error"; |
||
619 | break; |
||
620 | #endif |
||
621 | #ifdef EPROTONOSUPPORT |
||
622 | case EPROTONOSUPPORT: |
||
623 | error = "Unknown protocol"; |
||
624 | break; |
||
625 | #endif |
||
626 | #ifdef EMULTIHOP |
||
627 | case EMULTIHOP: |
||
628 | error = "Multihop attempted"; |
||
629 | break; |
||
630 | #endif |
||
631 | #ifdef EBADMSG |
||
632 | case EBADMSG: |
||
633 | error = "Bad message"; |
||
634 | break; |
||
635 | #endif |
||
636 | #ifdef ELIBACC |
||
637 | case ELIBACC: |
||
638 | error = "Cannot access a needed shared library"; |
||
639 | break; |
||
640 | #endif |
||
641 | #ifdef ELIBBAD |
||
642 | case ELIBBAD: |
||
643 | error = "Accessing a corrupted shared library"; |
||
644 | break; |
||
645 | #endif |
||
646 | #ifdef ELIBSCN |
||
647 | case ELIBSCN: |
||
648 | error = ".lib section in a.out corrupted"; |
||
649 | break; |
||
650 | #endif |
||
651 | #ifdef ELIBMAX |
||
652 | case ELIBMAX: |
||
653 | error = "Attempting to link in more shared libraries than system limit"; |
||
654 | break; |
||
655 | #endif |
||
656 | #ifdef ELIBEXEC |
||
657 | case ELIBEXEC: |
||
658 | error = "Cannot exec a shared library directly"; |
||
659 | break; |
||
660 | #endif |
||
661 | #ifdef ENOSYS |
||
662 | case ENOSYS: |
||
663 | error = "Function not implemented"; |
||
664 | break; |
||
665 | #endif |
||
666 | #ifdef ENMFILE |
||
667 | case ENMFILE: |
||
668 | error = "No more files"; |
||
669 | break; |
||
670 | #endif |
||
671 | #ifdef ENOTEMPTY |
||
672 | case ENOTEMPTY: |
||
673 | error = "Directory not empty"; |
||
674 | break; |
||
675 | #endif |
||
676 | #ifdef ENAMETOOLONG |
||
677 | case ENAMETOOLONG: |
||
678 | error = "File or path name too long"; |
||
679 | break; |
||
680 | #endif |
||
681 | #ifdef ELOOP |
||
682 | case ELOOP: |
||
683 | error = "Too many symbolic links"; |
||
684 | break; |
||
685 | #endif |
||
686 | #ifdef ENOBUFS |
||
687 | case ENOBUFS: |
||
688 | error = "No buffer space available"; |
||
689 | break; |
||
690 | #endif |
||
691 | #ifdef EAFNOSUPPORT |
||
692 | case EAFNOSUPPORT: |
||
693 | error = "Address family not supported by protocol family"; |
||
694 | break; |
||
695 | #endif |
||
696 | #ifdef EPROTOTYPE |
||
697 | case EPROTOTYPE: |
||
698 | error = "Protocol wrong type for socket"; |
||
699 | break; |
||
700 | #endif |
||
701 | #ifdef ENOTSOCK |
||
702 | case ENOTSOCK: |
||
703 | error = "Socket operation on non-socket"; |
||
704 | break; |
||
705 | #endif |
||
706 | #ifdef ENOPROTOOPT |
||
707 | case ENOPROTOOPT: |
||
708 | error = "Protocol not available"; |
||
709 | break; |
||
710 | #endif |
||
711 | #ifdef ESHUTDOWN |
||
712 | case ESHUTDOWN: |
||
713 | error = "Can't send after socket shutdown"; |
||
714 | break; |
||
715 | #endif |
||
716 | #ifdef ECONNREFUSED |
||
717 | case ECONNREFUSED: |
||
718 | error = "Connection refused"; |
||
719 | break; |
||
720 | #endif |
||
721 | #ifdef EADDRINUSE |
||
722 | case EADDRINUSE: |
||
723 | error = "Address already in use"; |
||
724 | break; |
||
725 | #endif |
||
726 | #ifdef ECONNABORTED |
||
727 | case ECONNABORTED: |
||
728 | error = "Software caused connection abort"; |
||
729 | break; |
||
730 | #endif |
||
731 | #if (defined(EWOULDBLOCK) && (!defined (EAGAIN) || (EWOULDBLOCK != EAGAIN))) |
||
732 | case EWOULDBLOCK: |
||
733 | error = "Operation would block"; |
||
734 | break; |
||
735 | #endif |
||
736 | #ifdef ENOTCONN |
||
737 | case ENOTCONN: |
||
738 | error = "Socket is not connected"; |
||
739 | break; |
||
740 | #endif |
||
741 | #ifdef ESOCKTNOSUPPORT |
||
742 | case ESOCKTNOSUPPORT: |
||
743 | error = "Socket type not supported"; |
||
744 | break; |
||
745 | #endif |
||
746 | #ifdef EISCONN |
||
747 | case EISCONN: |
||
748 | error = "Socket is already connected"; |
||
749 | break; |
||
750 | #endif |
||
751 | #ifdef ECANCELED |
||
752 | case ECANCELED: |
||
753 | error = "Operation canceled"; |
||
754 | break; |
||
755 | #endif |
||
756 | #ifdef ENOTRECOVERABLE |
||
757 | case ENOTRECOVERABLE: |
||
758 | error = "State not recoverable"; |
||
759 | break; |
||
760 | #endif |
||
761 | #ifdef EOWNERDEAD |
||
762 | case EOWNERDEAD: |
||
763 | error = "Previous owner died"; |
||
764 | break; |
||
765 | #endif |
||
766 | #ifdef ESTRPIPE |
||
767 | case ESTRPIPE: |
||
768 | error = "Streams pipe error"; |
||
769 | break; |
||
770 | #endif |
||
771 | #if defined(EOPNOTSUPP) && (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP)) |
||
772 | case EOPNOTSUPP: |
||
773 | error = "Operation not supported on socket"; |
||
774 | break; |
||
775 | #endif |
||
776 | #ifdef EMSGSIZE |
||
777 | case EMSGSIZE: |
||
778 | error = "Message too long"; |
||
779 | break; |
||
780 | #endif |
||
781 | #ifdef ETIMEDOUT |
||
782 | case ETIMEDOUT: |
||
783 | error = "Connection timed out"; |
||
784 | break; |
||
785 | #endif |
||
786 | default: |
||
787 | if ((error = _user_strerror (errnum)) == 0) |
||
788 | error = ""; |
||
789 | break; |
||
790 | } |
||
791 | |||
792 | return error; |
||
793 | } |