/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#define AIX_EPERM		1
#define AIX_ENOENT		2
#define AIX_ESRCH		3
#define AIX_EINTR		4
#define AIX_EIO			5
#define AIX_ENXIO		6
#define AIX_E2BIG		7
#define AIX_ENOEXEC		8
#define AIX_EBADF		9
#define AIX_ECHILD		10
#define AIX_EAGAIN		11
#define AIX_ENOMEM		12
#define AIX_EACCES		13
#define AIX_EFAULT		14
#define AIX_ENOTBLK		15
#define AIX_EBUSY		16
#define AIX_EEXIST		17
#define AIX_EXDEV		18
#define AIX_ENODEV		19
#define AIX_ENOTDIR		20
#define AIX_EISDIR		21
#define AIX_EINVAL		22
#define AIX_ENFILE		23
#define AIX_EMFILE		24
#define AIX_ENOTTY		25
#define AIX_ETXTBSY		26
#define AIX_EFBIG		27
#define AIX_ENOSPC		28
#define AIX_ESPIPE		29
#define AIX_EROFS		30
#define AIX_EMLINK		31
#define AIX_EPIPE		32
#define AIX_EDOM		33
#define AIX_ERANGE		34
#define AIX_ENOMSG		35
#define AIX_EIDRM		36
#define AIX_ECHRNG		37
#define AIX_EL2NSYNC		38
#define AIX_EL3HLT		39
#define AIX_EL3RST		40
#define AIX_ELNRNG		41
#define AIX_EUNATCH		42
#define AIX_ENOCSI		43
#define AIX_EL2HLT		44
#define AIX_EDEADLK		45
#define AIX_ENOTREADY		46
#define AIX_EWRPROTECT		47
#define AIX_EFORMAT		48
#define AIX_ENOLCK		49
#define AIX_ENOCONNECT		50
#define AIX_ESTALE		52
#define AIX_EDIST		53
#define AIX_EWOULDBLOCK		54
#define AIX_EINPROGRESS		55
#define AIX_EALREADY		56
#define AIX_ENOTSOCK		57
#define AIX_EDESTADDRREQ	58
#define AIX_EMSGSIZE		59
#define AIX_EPROTOTYPE		60
#define AIX_ENOPROTOOPT		61
#define AIX_EPROTONOSUPPORT	62
#define AIX_ESOCKTNOSUPPORT	63
#define AIX_EOPNOTSUPP		64
#define AIX_EPFNOSUPPORT	65
#define AIX_EAFNOSUPPORT	66
#define AIX_EADDRINUSE		67
#define AIX_EADDRNOTAVAIL	68
#define AIX_ENETDOWN		69
#define AIX_ENETUNREACH		70
#define AIX_ENETRESET		71
#define AIX_ECONNABORTED	72
#define AIX_ECONNRESET		73
#define AIX_ENOBUFS		74
#define AIX_EISCONN		75
#define AIX_ENOTCONN		76
#define AIX_ESHUTDOWN		77
#define AIX_ETIMEDOUT		78
#define AIX_ECONNREFUSED	79
#define AIX_EHOSTDOWN		80
#define AIX_EHOSTUNREACH	81
#define AIX_ERESTART		82
#define AIX_EPROCLIM		83
#define AIX_EUSERS		84
#define AIX_ELOOP		85
#define AIX_ENAMETOOLONG	86
#define AIX_EDQUOT		88
#define AIX_ECORRUPT		89
#define AIX_EREMOTE		93
#define AIX_ENOSYS		109
#define AIX_EMEDIA		110
#define AIX_ESOFT		111
#define AIX_ENOATTR		112
#define AIX_ESAD		113
#define AIX_ENOTRUST		114
#define AIX_ETOOMANYREFS	115
#define AIX_EILSEQ		116
#define AIX_ECANCELED		117
#define AIX_ENOSR		118
#define AIX_ETIME		119
#define AIX_EBADMSG		120
#define AIX_EPROTO		121
#define AIX_ENODATA		122
#define AIX_ENOSTR		123
#define AIX_ENOTSUP		124
#define AIX_EMULTIHOP		125
#define AIX_ENOLINK		126
#define AIX_EOVERFLOW		127
