1/*
2 * proto.h - common function prototypes for lsof
3 */
4
5
6/*
7 * Copyright 1994 Purdue Research Foundation, West Lafayette, Indiana
8 * 47907.  All rights reserved.
9 *
10 * Written by Victor A. Abell
11 *
12 * This software is not subject to any license of the American Telephone
13 * and Telegraph Company or the Regents of the University of California.
14 *
15 * Permission is granted to anyone to use this software for any purpose on
16 * any computer system, and to alter it and redistribute it freely, subject
17 * to the following restrictions:
18 *
19 * 1. Neither the authors nor Purdue University are responsible for any
20 *    consequences of the use of this software.
21 *
22 * 2. The origin of this software must not be misrepresented, either by
23 *    explicit claim or by omission.  Credit to the authors and Purdue
24 *    University must appear in documentation and sources.
25 *
26 * 3. Altered versions must be plainly marked as such, and must not be
27 *    misrepresented as being the original software.
28 *
29 * 4. This notice may not be removed or altered.
30 */
31
32
33/*
34 * $Id: proto.h,v 1.36 2011/09/07 19:13:49 abe Exp $
35 */
36
37
38#if	!defined(PROTO_H)
39#define	PROTO_H	1
40
41
42/*
43 * The _PROTOTYPE macro provides strict ANSI C prototypes if __STDC__
44 * is defined, and old-style K&R prototypes otherwise.
45 *
46 * (With thanks to Andy Tanenbaum)
47 */
48
49# if	defined(__STDC__)
50#define	_PROTOTYPE(function, params)	function params
51# else	/* !defined(__STDC__) */
52#define	_PROTOTYPE(function, params)	function()
53# endif /* defined(__STDC__) */
54
55
56/*
57 * The following define keeps gcc>=2.7 from complaining about the failure
58 * of the Exit() function to return.
59 *
60 * Paul Eggert supplied it.
61 */
62
63# if	defined(__GNUC__) && !(__GNUC__<2 || (__GNUC__==2 && __GNUC_MINOR__<7))
64#define	exiting	__attribute__((__noreturn__))
65# else	/* !gcc || gcc<2.7 */
66#define	exiting
67# endif	/* gcc && gcc>=2.7 */
68
69
70_PROTOTYPE(extern void add_nma,(char *cp, int len));
71_PROTOTYPE(extern void alloc_lfile,(char *nm, int num));
72_PROTOTYPE(extern void alloc_lproc,(int pid, int pgid, int ppid, UID_ARG uid, char *cmd, int pss, int sf));
73_PROTOTYPE(extern void build_IPstates,(void));
74_PROTOTYPE(extern void childx,(void));
75_PROTOTYPE(extern int ck_fd_status,(char *nm, int num));
76_PROTOTYPE(extern int ck_file_arg,(int i, int ac, char *av[], int fv, int rs, struct stat *sbp));
77_PROTOTYPE(extern void ckkv,(char *d, char *er, char *ev, char *ea));
78_PROTOTYPE(extern void clr_devtab,(void));
79_PROTOTYPE(extern int compdev,(COMP_P *a1, COMP_P *a2));
80_PROTOTYPE(extern int comppid,(COMP_P *a1, COMP_P *a2));
81
82# if	defined(WILLDROPGID)
83_PROTOTYPE(extern void dropgid,(void));
84# endif	/* defined(WILLDROPGID) */
85
86_PROTOTYPE(extern char *endnm,(size_t *sz));
87_PROTOTYPE(extern int enter_cmd_rx,(char *x));
88_PROTOTYPE(extern void enter_dev_ch,(char *m));
89_PROTOTYPE(extern int enter_dir,(char *d, int descend));
90
91# if	defined(HASEOPT)
92_PROTOTYPE(extern int enter_efsys,(char *e, int rdlnk));
93# endif	/* defined(HASEOPT) */
94
95_PROTOTYPE(extern int enter_fd,(char *f));
96_PROTOTYPE(extern int enter_network_address,(char *na));
97_PROTOTYPE(extern int enter_id,(enum IDType ty, char *p));
98_PROTOTYPE(extern void enter_IPstate,(char *ty, char *nm, int nr));
99_PROTOTYPE(extern void enter_nm,(char *m));
100
101# if	defined(HASTCPUDPSTATE)
102_PROTOTYPE(extern int enter_state_spec,(char *ss));
103# endif	/* defined(HASTCPUDPSTATE) */
104
105_PROTOTYPE(extern int enter_str_lst,(char *opt, char *s, struct str_lst **lp,
106				     int *incl, int *excl));
107_PROTOTYPE(extern int enter_uid,(char *us));
108_PROTOTYPE(extern void ent_inaddr,(unsigned char *la, int lp, unsigned char *fa, int fp, int af));
109_PROTOTYPE(extern int examine_lproc,(void));
110_PROTOTYPE(extern void Exit,(int xv)) exiting;
111_PROTOTYPE(extern void find_ch_ino,(void));
112_PROTOTYPE(extern void free_lproc,(struct lproc *lp));
113_PROTOTYPE(extern void gather_proc_info,(void));
114_PROTOTYPE(extern char *gethostnm,(unsigned char *ia, int af));
115
116# if	!defined(GET_MAX_FD)
117/*
118 * This is not strictly a prototype, but GET_MAX_FD is the name of the
119 * function that, in lieu of getdtablesize(), returns the maximum file
120 * descriptor plus one (or file descriptor count).  GET_MAX_FD may be
121 * defined in the dialect's machine.h.  If it is not, the following
122 * selects getdtablesize().
123 */
124
125#define	GET_MAX_FD	getdtablesize
126# endif	/* !defined(GET_MAX_FD) */
127
128_PROTOTYPE(extern int hashbyname,(char *nm, int mod));
129_PROTOTYPE(extern void hashSfile,(void));
130_PROTOTYPE(extern void initialize,(void));
131_PROTOTYPE(extern int is_cmd_excl,(char *cmd, short *pss, short *sf));
132_PROTOTYPE(extern int is_nw_addr,(unsigned char *ia, int p, int af));
133
134#if	defined(HASTASKS)
135_PROTOTYPE(extern int is_proc_excl,(int pid, int pgid, UID_ARG uid, short *pss, short *sf, int tid));
136#else	/* !defined(HASTASKS) */
137_PROTOTYPE(extern int is_proc_excl,(int pid, int pgid, UID_ARG uid, short *pss, short *sf));
138#endif	/* defined(HASTASKS) */
139
140_PROTOTYPE(extern int is_readable,(char *path, int msg));
141_PROTOTYPE(extern int kread,(KA_T addr, char *buf, READLEN_T len));
142_PROTOTYPE(extern void link_lfile,(void));
143_PROTOTYPE(extern struct l_dev *lkupdev,(dev_t *dev,dev_t *rdev,int i,int r));
144_PROTOTYPE(extern int main,(int argc, char *argv[]));
145_PROTOTYPE(extern int lstatsafely,(char *path, struct stat *buf));
146_PROTOTYPE(extern char *mkstrcpy,(char *src, MALLOC_S *rlp));
147_PROTOTYPE(extern char *mkstrcat,(char *s1, int l1, char *s2, int l2, char *s3, int l3, MALLOC_S *clp));
148_PROTOTYPE(extern int printdevname,(dev_t *dev, dev_t *rdev, int f, int nty));
149_PROTOTYPE(extern void print_file,(void));
150_PROTOTYPE(extern void print_init,(void));
151_PROTOTYPE(extern void printname,(int nl));
152_PROTOTYPE(extern char *print_kptr,(KA_T kp, char *buf, size_t bufl));
153_PROTOTYPE(extern int print_proc,(void));
154_PROTOTYPE(extern void printrawaddr,(struct sockaddr *sa));
155_PROTOTYPE(extern void print_tcptpi,(int nl));
156_PROTOTYPE(extern char *printuid,(UID_ARG uid, int *ty));
157_PROTOTYPE(extern void printunkaf,(int fam, int ty));
158_PROTOTYPE(extern char *printsockty,(int ty));
159_PROTOTYPE(extern void process_file,(KA_T fp));
160_PROTOTYPE(extern void process_node,(KA_T f));
161_PROTOTYPE(extern char *Readlink,(char *arg));
162_PROTOTYPE(extern void readdev,(int skip));
163_PROTOTYPE(extern struct mounts *readmnt,(void));
164_PROTOTYPE(extern void rereaddev,(void));
165_PROTOTYPE(extern int safestrlen,(char *sp, int flags));
166_PROTOTYPE(extern void safestrprtn,(char *sp, int len, FILE *fs, int flags));
167_PROTOTYPE(extern void safestrprt,(char *sp, FILE *fs, int flags));
168_PROTOTYPE(extern int statsafely,(char *path, struct stat *buf));
169_PROTOTYPE(extern void stkdir,(char *p));
170_PROTOTYPE(extern void usage,(int xv, int fh, int version));
171_PROTOTYPE(extern int util_strftime,(char *fmtr, int fmtl, char *fmt));
172_PROTOTYPE(extern int vfy_dev,(struct l_dev *dp));
173_PROTOTYPE(extern char *x2dev,(char *s, dev_t *d));
174
175# if	defined(HASBLKDEV)
176_PROTOTYPE(extern void find_bl_ino,(void));
177_PROTOTYPE(extern struct l_dev *lkupbdev,(dev_t *dev,dev_t *rdev,int i,int r));
178_PROTOTYPE(extern int printbdevname,(dev_t *dev, dev_t *rdev, int f));
179# endif	/* defined(HASBLKDEV) */
180
181# if	defined(HASCDRNODE)
182_PROTOTYPE(extern int readcdrnode,(KA_T ca, struct cdrnode *c));
183# endif	/* defined(HASCDRNODE) */
184
185# if	defined(HASDCACHE)
186_PROTOTYPE(extern void alloc_dcache,(void));
187_PROTOTYPE(extern void crc,(char *b, int l, unsigned *s));
188_PROTOTYPE(extern void crdbld,(void));
189_PROTOTYPE(extern int ctrl_dcache,(char *p));
190_PROTOTYPE(extern int dcpath,(int rw, int npw));
191_PROTOTYPE(extern int open_dcache,(int m, int r, struct stat *sb));
192_PROTOTYPE(extern int read_dcache,(void));
193_PROTOTYPE(extern int wr2DCfd,(char *b, unsigned *c));
194_PROTOTYPE(extern void write_dcache,(void));
195# endif	/* defined(HASDCACHE) */
196
197# if	defined(HASFIFONODE)
198_PROTOTYPE(extern int readfifonode,(KA_T fa, struct fifonode *f));
199# endif	/* defined(HASFIFONODE) */
200
201# if	defined(HASFSTRUCT)
202_PROTOTYPE(extern char *print_fflags,(long ffg, long pof));
203# endif	/* defined(HASFSTRUCT) */
204
205# if	defined(HASGNODE)
206_PROTOTYPE(extern int readgnode,(KA_T ga, struct gnode *g));
207# endif	/* defined(HASGNODE) */
208
209# if	defined(HASKQUEUE)
210_PROTOTYPE(extern void process_kqueue,(KA_T ka));
211# endif	/* defined(HASKQUEUE) */
212
213# if	defined(HASHSNODE)
214_PROTOTYPE(extern int readhsnode,(KA_T ha, struct hsnode *h));
215# endif	/* defined(HASHSNODE) */
216
217# if	defined(HASINODE)
218_PROTOTYPE(extern int readinode,(KA_T ia, struct inode *i));
219# endif	/* defined(HASINODE) */
220
221# if	defined(HASNCACHE)
222_PROTOTYPE(extern void ncache_load,(void));
223_PROTOTYPE(extern char *ncache_lookup,(char *buf, int blen, int *fp));
224# endif	/* defined(HASNCACHE) */
225
226# if	defined(HASNLIST)
227_PROTOTYPE(extern void build_Nl,(struct drive_Nl *d));
228_PROTOTYPE(extern int get_Nl_value,(char *nn, struct drive_Nl *d, KA_T *v));
229# endif	/* defined(HASNLIST) */
230
231# if	defined(HASPIPENODE)
232_PROTOTYPE(extern int readpipenode,(KA_T pa, struct pipenode *p));
233# endif	/* defined(HASPIPENODE) */
234
235# if	defined(HASPRINTDEV)
236_PROTOTYPE(extern char *HASPRINTDEV,(struct lfile *lf, dev_t *dev));
237# endif	/* defined(HASPRINTDEV) */
238
239# if	defined(HASPRINTINO)
240_PROTOTYPE(extern char *HASPRINTINO,(struct lfile *lf));
241# endif	/* defined(HASPRINTINO) */
242
243# if	defined(HASPRINTNM)
244_PROTOTYPE(extern void HASPRINTNM,(struct lfile *lf));
245# endif	/* defined(HASPRINTNM) */
246
247# if	defined(HASPRINTOFF)
248_PROTOTYPE(extern char *HASPRINTOFF,(struct lfile *lf, int ty));
249# endif	/* defined(HASPRINTOFF) */
250
251# if	defined(HASPRINTSZ)
252_PROTOTYPE(extern char *HASPRINTSZ,(struct lfile *lf));
253# endif	/* defined(HASPRINTSZ) */
254
255# if	defined(HASPRIVNMCACHE)
256_PROTOTYPE(extern int HASPRIVNMCACHE,(struct lfile *lf));
257# endif	/* defined(HASPRIVNMCACHE) */
258
259# if	!defined(HASPRIVPRIPP)
260_PROTOTYPE(extern void printiproto,(int p));
261# endif	/* !defined(HASPRIVPRIPP) */
262
263# if	defined(HASRNODE)
264_PROTOTYPE(extern int readrnode,(KA_T ra, struct rnode *r));
265# endif	/* defined(HASRNODE) */
266
267# if	defined(HASSPECDEVD)
268_PROTOTYPE(extern void HASSPECDEVD,(char *p, struct stat *s));
269# endif	/* defined(HASSPECDEVD) */
270
271# if	defined(HASSNODE)
272_PROTOTYPE(extern int readsnode,(KA_T sa, struct snode *s));
273# endif	/* defined(HASSNODE) */
274
275# if	defined(HASSTREAMS)
276_PROTOTYPE(extern int readstdata,(KA_T addr, struct stdata *buf));
277_PROTOTYPE(extern int readsthead,(KA_T addr, struct queue *buf));
278_PROTOTYPE(extern int readstidnm,(KA_T addr, char *buf, READLEN_T len));
279_PROTOTYPE(extern int readstmin,(KA_T addr, struct module_info *buf));
280_PROTOTYPE(extern int readstqinit,(KA_T addr, struct qinit *buf));
281# endif	/* defined(HASSTREAMS) */
282
283# if	defined(HASTMPNODE)
284_PROTOTYPE(extern int readtnode,(KA_T ta, struct tmpnode *t));
285# endif	/* defined(HASTMPNODE) */
286
287# if	defined(HASVNODE)
288_PROTOTYPE(extern int readvnode,(KA_T va, struct vnode *v));
289# endif	/* defined(HASVNODE) */
290
291# if	defined(USE_LIB_SNPF)
292_PROTOTYPE(extern int snpf,(char *str, int len, char *fmt, ...));
293# endif	/* defined(USE_LIB_SNPF) */
294
295# endif	/* !defined(PROTO_H) */
296