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