source: src/router/proftpd/lib/glibc-gai_strerror.c @ 12685

Last change on this file since 12685 was 12685, checked in by BrainSlayer, 4 years ago

new version

File size: 3.6 KB
RevLine 
[12685]1/* Copyright (C) 1997,2001,02 Free Software Foundation, Inc.
2   This file is part of the GNU C Library.
3   Contributed by Philip Blundell <pjb27@cam.ac.uk>, 1997.
4
5   The GNU C Library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library; if not, write to the Free
17   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18   02111-1307 USA.  */
19
20#include <netdb.h>
21
22/* It's possible that <netdb.h> doesn't define EAI_ values. */
23
24#ifndef EAI_BADFLAGS
25# define EAI_BADFLAGS     -1    /* Invalid value for `ai_flags' field.  */
26#endif
27
28#ifndef EAI_NONAME
29# define EAI_NONAME       -2    /* NAME or SERVICE is unknown.  */
30#endif
31
32#ifndef EAI_AGAIN
33# define EAI_AGAIN        -3    /* Temporary failure in name resolution.  */
34#endif
35
36#ifndef EAI_FAIL
37# define EAI_FAIL         -4    /* Non-recoverable failure in name res.  */
38#endif
39
40#ifndef EAI_NODATA
41# define EAI_NODATA       -5    /* No address associated with NAME.  */
42#endif
43
44#ifndef EAI_FAMILY
45# define EAI_FAMILY       -6    /* `ai_family' not supported.  */
46#endif
47
48#ifndef EAI_SOCKTYPE
49# define EAI_SOCKTYPE     -7    /* `ai_socktype' not supported.  */
50#endif
51
52#ifndef EAI_SERVICE
53# define EAI_SERVICE      -8    /* SERVICE not supported for `ai_socktype'.  */
54#endif
55
56#ifndef EAI_ADDRFAMILY
57# define EAI_ADDRFAMILY   -9    /* Address family for NAME not supported.  */
58#endif
59
60#ifndef EAI_MEMORY
61# define EAI_MEMORY       -10   /* Memory allocation failure.  */
62#endif
63
64#ifndef EAI_SYSTEM
65# define EAI_SYSTEM       -11   /* System error returned in `errno'.  */
66#endif
67
68/* GNU-specific EAI values. */
69
70#ifndef EAI_INPROGRESS
71# define EAI_INPROGRESS  -100  /* Processing request in progress.  */
72#endif
73
74#ifndef EAI_CANCELED
75# define EAI_CANCELED    -101  /* Request canceled.  */
76#endif
77
78#ifndef EAI_NOTCANCELED
79# define EAI_NOTCANCELED -102  /* Request not canceled.  */
80#endif
81
82#ifndef EAI_ALLDONE
83# define EAI_ALLDONE     -103  /* All requests done.  */
84#endif
85
86#ifndef EAI_INTR
87# define EAI_INTR        -104  /* Interrupted by a signal.  */
88#endif
89
90static struct {
91  int code;
92  const char *msg;
93
94} values[] = {
95
96  { EAI_ADDRFAMILY,     "Address family for hostname not supported" },
97  { EAI_AGAIN,          "Temporary failure in name resolution" },
98  { EAI_BADFLAGS,       "Bad value for ai_flags" },
99  { EAI_FAIL,           "Non-recoverable failure in name resolution" },
100  { EAI_FAMILY,         "ai_family not supported" },
101  { EAI_MEMORY,         "Memory allocation failure" },
102  { EAI_NODATA,         "No address associated with hostname" },
103  { EAI_NONAME,         "Name or service not known" },
104  { EAI_SERVICE,        "Servname not supported for ai_socktype" },
105  { EAI_SOCKTYPE,       "ai_socktype not supported" },
106  { EAI_SYSTEM,         "System error" },
107  { EAI_INPROGRESS,     "Processing request in progress" },
108  { EAI_CANCELED,       "Request canceled" },
109  { EAI_NOTCANCELED,    "Request not canceled" },
110  { EAI_ALLDONE,        "All requests done" },
111  { EAI_INTR,           "Interrupted by a signal" }
112};
113
114const char *pr_gai_strerror(int code) {
115  register unsigned int i;
116  for (i = 0; i < sizeof(values) / sizeof(values[0]); ++i)
117    if (values[i].code == code)
118      return values[i].msg;
119
120  return "Unknown error";
121}
Note: See TracBrowser for help on using the repository browser.