Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libcs/features/cs.c
1811 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1990-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* *
19
***********************************************************************/
20
#pragma prototyped
21
22
#include <ast.h>
23
24
#include "FEATURE/lib"
25
26
#include <sys/types.h>
27
28
#if _hdr_poll
29
#include <poll.h>
30
#endif
31
32
#if _sys_socket && _mem_msg_control_msghdr
33
#include <sys/socket.h>
34
#ifdef SCM_RIGHTS
35
#undef SCM_RIGHTS
36
#else
37
#define SCM_RIGHTS 1
38
#endif
39
#endif
40
41
int
42
main()
43
{
44
register int m;
45
register int i;
46
47
sfprintf(sfstdout, "#define CS_REMOTE_SHELL \"%s\"\n", CS_REMOTE_SHELL);
48
sfprintf(sfstdout, "\n");
49
#if CS_LIB_SOCKET || CS_LIB_V10
50
sfprintf(sfstdout, "#define CS_TCP 1\n");
51
sfprintf(sfstdout, "#define CS_UDP 1\n");
52
#endif
53
#if CS_LIB_SOCKET_UN || CS_LIB_STREAM
54
sfprintf(sfstdout, "#define CS_FDP 1\n");
55
#endif
56
sfprintf(sfstdout, "\n");
57
#if _hdr_poll
58
#ifdef _nam_revents
59
sfprintf(sfstdout, "#define %s status\n", _nam_revents_str);
60
#else
61
sfprintf(sfstdout, "#define revents status\n");
62
#endif
63
sfprintf(sfstdout, "#include <poll.h>\n");
64
#ifdef _nam_revents
65
sfprintf(sfstdout, "#undef %s\n", _nam_revents_str);
66
#else
67
sfprintf(sfstdout, "#undef revents\n");
68
#endif
69
sfprintf(sfstdout, "\n");
70
sfprintf(sfstdout, "#define CS_POLL_CLOSE POLLHUP\n");
71
sfprintf(sfstdout, "#define CS_POLL_CONTROL POLLPRI\n");
72
sfprintf(sfstdout, "#define CS_POLL_ERROR POLLERR\n");
73
sfprintf(sfstdout, "#define CS_POLL_INVALID POLLNVAL\n");
74
sfprintf(sfstdout, "#define CS_POLL_READ POLLIN\n");
75
sfprintf(sfstdout, "#define CS_POLL_WRITE POLLOUT\n");
76
sfprintf(sfstdout, "\n");
77
m = 0;
78
#ifdef POLLIN
79
m |= POLLIN;
80
#endif
81
#ifdef POLLOUT
82
m |= POLLOUT;
83
#endif
84
#ifdef POLLPRI
85
m |= POLLPRI;
86
#endif
87
#ifdef POLLWRNORM
88
m |= POLLWRNORM;
89
#endif
90
#ifdef POLLRDNORM
91
m |= POLLRDNORM;
92
#endif
93
#ifdef POLLRDBAND
94
m |= POLLRDBAND;
95
#endif
96
#ifdef POLLWRBAND
97
m |= POLLWRBAND;
98
#endif
99
#ifdef POLLMSG
100
m |= POLLMSG;
101
#endif
102
#ifdef POLLSYNC
103
m |= POLLSYNC;
104
#endif
105
#ifdef POLLNVAL
106
m |= POLLNVAL;
107
#endif
108
#ifdef POLLERR
109
m |= POLLERR;
110
#endif
111
#ifdef POLLHUP
112
m |= POLLHUP;
113
#endif
114
#ifdef POLLNORM
115
m |= POLLNORM;
116
#endif
117
sfprintf(sfstdout, "#define CS_POLL_PSEUDO (CS_POLL_AUTH|CS_POLL_CONNECT|CS_POLL_USER|CS_POLL_BEFORE)\n");
118
for (i = 0; m & (1<<i); i++);
119
sfprintf(sfstdout, "#define CS_POLL_AUTH (1<<%d)\n", i);
120
for (i++; m & (1<<i); i++);
121
sfprintf(sfstdout, "#define CS_POLL_CONNECT (1<<%d)\n", i);
122
for (i++; m & (1<<i); i++);
123
sfprintf(sfstdout, "#define CS_POLL_USER (1<<%d)\n", i);
124
for (i++; m & (1<<i); i++);
125
sfprintf(sfstdout, "#define CS_POLL_BEFORE (1<<%d)\n", i);
126
sfprintf(sfstdout, "\n");
127
sfprintf(sfstdout, "typedef struct pollfd Cspoll_t;\n");
128
#else
129
sfprintf(sfstdout, "#define CS_POLL_CLOSE (1<<0)\n");
130
sfprintf(sfstdout, "#define CS_POLL_CONTROL (1<<1)\n");
131
sfprintf(sfstdout, "#define CS_POLL_ERROR (1<<2)\n");
132
sfprintf(sfstdout, "#define CS_POLL_INVALID (1<<3)\n");
133
sfprintf(sfstdout, "#define CS_POLL_READ (1<<4)\n");
134
sfprintf(sfstdout, "#define CS_POLL_WRITE (1<<5)\n");
135
sfprintf(sfstdout, "\n");
136
sfprintf(sfstdout, "#define CS_POLL_PSEUDO (CS_POLL_AUTH|CS_POLL_CONNECT|CS_POLL_USER|CS_POLL_BEFORE)\n");
137
sfprintf(sfstdout, "#define CS_POLL_AUTH (1<<6)\n");
138
sfprintf(sfstdout, "#define CS_POLL_CONNECT (1<<7)\n");
139
sfprintf(sfstdout, "#define CS_POLL_USER (1<<8)\n");
140
sfprintf(sfstdout, "#define CS_POLL_BEFORE (1<<9)\n");
141
sfprintf(sfstdout, "\n");
142
sfprintf(sfstdout, "typedef struct\n");
143
sfprintf(sfstdout, "{\n");
144
sfprintf(sfstdout, " short fd;\n");
145
sfprintf(sfstdout, " unsigned char events;\n");
146
sfprintf(sfstdout, " unsigned char status;\n");
147
sfprintf(sfstdout, "} Cspoll_t;\n");
148
#endif
149
#ifdef SCM_RIGHTS
150
sfprintf(sfstdout, "\n#define SCM_RIGHTS %d\n", SCM_RIGHTS);
151
#endif
152
exit(0);
153
}
154
155