1/*
2 *errno.h shall give positive values for the
3 *error number symbolic constants
4 *author:ysun@lnxw.com
5 */
6#include <stdio.h>
7#include <errno.h>
8#define PTP_PASS        0
9#define PTP_FAIL        1
10#define PTP_UNRESOLVED  2
11#define PTP_NOTINUSE    3
12#define PTP_UNSUPPORTED 4
13#define PTP_UNTESTED    5
14#define PTP_UNINITIATED 6
15#define PTP_NORESULT    7
16
17
18
19struct unique {
20    int value;
21    char *name;
22} sym[] = {{E2BIG,"E2BIG"},{EACCES,"EACCES"},
23	   {EADDRINUSE,"EADDRINUSE"},
24	   {EADDRNOTAVAIL,"EADDRNOTAVAIL"},
25	   {EAFNOSUPPORT,"EAFNOSUPPORT"},
26	   {EAGAIN,"EAGAIN"},
27	   {EALREADY,"EALREADY"}, {EBADF,"EBADF"},
28	   {EBADMSG,"EBADMSG"},{EBUSY,"EBUSY"},
29	   {ECANCELED,"ECANCELED"},{ECHILD,"ECHILD"},
30	   {ECONNABORTED,"ECONNABORTED"},
31	   {ECONNREFUSED,"ECONNREFUSED"},
32	   {ECONNRESET,"ECONNRESET"},{EDEADLK,"EDEADLK"},
33	   {EDESTADDRREQ,"EDESTADDRREQ"},{EDOM,"EDOM"},
34	   {EDQUOT,"EDQUOT"},{EEXIST,"EEXIST"},
35	   {EFAULT,"EFAULT"},{EFBIG,"EFBIG"},
36	   {EHOSTUNREACH,"EHOSTUNREACH"},
37	   {EIDRM,"EIDRM"},{EILSEQ,"EILSEQ"},
38	   {EINPROGRESS,"EINPROGRESS"},
39	   {EINTR,"EINTR"},{EINVAL,"EINVAL"},
40	   {EIO,"EIO"},{EISCONN,"EISCONN"},
41	   {EISDIR,"EISDIR"},{ELOOP,"ELOOP"},
42	   {EMFILE,"EMFILE"},{EMLINK,"EMLINK"},
43	   {EMSGSIZE,"EMSGSIZE"},{EMULTIHOP,"EMULTIHOP"},
44	   {ENAMETOOLONG,"ENAMETOOLONG"},
45	   {ENETDOWN,"ENETDOWN"},
46	   {ENETRESET,"ENETRESET"},{ENETUNREACH,"ENETUNREACH"},
47	   {ENFILE,"ENFILE"},{ENOBUFS,"ENOBUFS"},
48	   {ENODATA,"ENODATA"},{ENODEV,"ENODEV"},
49	   {ENOENT,"ENOENT"},{ENOEXEC,"ENOEXEC"},
50	   {ENOLCK,"ENOLCK"},{ENOLINK,"ENOLINK"},
51	   {ENOMEM,"ENOMEM"},{ENOMSG,"ENOMSG"},
52	   {ENOPROTOOPT,"ENOPROTOOPT"},{ENOSPC,"ENOSPC"},
53	   {ENOSR,"ENOSR"},{ENOSTR,"ENOSTR"},
54	   {ENOSYS,"ENOSYS"},{ENOTCONN,"ENOTCONN"},
55	   {ENOTDIR,"ENOTDIR"},{ENOTEMPTY,"ENOTEMPTY"},
56	   {ENOTSOCK,"ENOTSOCK"},{ENOTSUP,"ENOTSUP"},
57	   {ENOTTY,"ENOTTY"},{ENXIO,"ENXIO"},
58	   {EOPNOTSUPP,"EOPNOTSUPP"},{EOVERFLOW,"EOVERFLOW"},
59	   {EPERM,"EPERM"},{EPIPE,"EPIPE"},{EPROTO,"EPROTO"},
60	   {EPROTONOSUPPORT,"EPROTONOSUPPORT"},
61	   {EPROTOTYPE,"EPROTOTYPE"},
62	   {ERANGE,"ERANGE"},{EROFS,"EROFS"},
63	   {EWOULDBLOCK,"EWOULDBLOCK"},{EXDEV,"EXDEV"},
64	   {0,0}
65};
66int main() {
67    struct unique *tst=sym;
68    int ret = PTP_PASS;
69    while(tst->name){
70	if (tst->value < 0){
71	    printf("Value of symbol %s is less than zero\n",tst->name);
72	    ret = PTP_FAIL;
73	}
74	tst++;
75    }
76    return ret;
77}
78