1e377bd31Spendry /* 2e377bd31Spendry * Copyright (c) 1989 Jan-Simon Pendry 3e377bd31Spendry * Copyright (c) 1989 Imperial College of Science, Technology & Medicine 4*ff516eb5Sbostic * Copyright (c) 1989, 1993 5*ff516eb5Sbostic * The Regents of the University of California. All rights reserved. 6e377bd31Spendry * 7e377bd31Spendry * This code is derived from software contributed to Berkeley by 8e377bd31Spendry * Jan-Simon Pendry at Imperial College, London. 9e377bd31Spendry * 1040bce266Spendry * %sccs.include.redist.c% 11e377bd31Spendry * 12*ff516eb5Sbostic * @(#)fsinfo.h 8.1 (Berkeley) 06/06/93 13278f1af9Spendry * 1485d0f232Spendry * $Id: fsinfo.h,v 5.2.2.1 1992/02/09 15:09:51 jsp beta $ 15278f1af9Spendry * 16e377bd31Spendry */ 17e377bd31Spendry 18e377bd31Spendry /* 19e377bd31Spendry * Get this in now so that OS_HDR can use it 20e377bd31Spendry */ 21e377bd31Spendry #ifdef __STDC__ 22e377bd31Spendry #define P(x) x 23e377bd31Spendry #define P_void void 24e377bd31Spendry #define Const const 25e377bd31Spendry #else 26e377bd31Spendry #define P(x) () 27e377bd31Spendry #define P_void /* as nothing */ 28e377bd31Spendry #define Const /* as nothing */ 29e377bd31Spendry #endif /* __STDC__ */ 30e377bd31Spendry 31e377bd31Spendry #ifdef __GNUC__ 32e377bd31Spendry #define INLINE /* __inline */ 33e377bd31Spendry #else 34e377bd31Spendry #define INLINE 35e377bd31Spendry #endif /* __GNUC__ */ 36e377bd31Spendry 37e377bd31Spendry /* 38e377bd31Spendry * Pick up target dependent definitions 39e377bd31Spendry */ 40e377bd31Spendry #include "os-defaults.h" 41e377bd31Spendry #include OS_HDR 42e377bd31Spendry 43e377bd31Spendry #ifdef VOIDP 44e377bd31Spendry typedef void *voidp; 45e377bd31Spendry #else 46e377bd31Spendry typedef char *voidp; 47e377bd31Spendry #endif /* VOIDP */ 48e377bd31Spendry 49e377bd31Spendry #include <stdio.h> 50e377bd31Spendry #include <sys/types.h> 51e377bd31Spendry #include <sys/param.h> 52e377bd31Spendry 53e377bd31Spendry /* 54e377bd31Spendry * Bogosity to deal with ether { ... } 55e377bd31Spendry */ 56e377bd31Spendry #include <sys/socket.h> 57e377bd31Spendry #include <netinet/in.h> 58e377bd31Spendry #include <net/if.h> 59e377bd31Spendry #include <netinet/if_ether.h> 60e377bd31Spendry 61e377bd31Spendry #include "fsi_data.h" 62e377bd31Spendry 63e377bd31Spendry extern char* strchr P((Const char*, int)); /* C */ 64e377bd31Spendry extern char* strrchr P((Const char*, int)); /* C */ 65e377bd31Spendry extern char *strdup P((char*)); /* C */ 66e377bd31Spendry extern void fatal(); 67e377bd31Spendry extern void warning(); 68e377bd31Spendry extern void error(); 69e377bd31Spendry extern void analyze_automounts P((qelem*)); 70e377bd31Spendry extern void analyze_hosts P((qelem*)); 71e377bd31Spendry extern void compute_automount_point P((char*, host*, char*)); 72e377bd31Spendry extern automount *new_automount P((char*)); 73e377bd31Spendry extern auto_tree *new_auto_tree P((char*, qelem*)); 74e377bd31Spendry extern host *new_host P((void)); 75e377bd31Spendry extern disk_fs *new_disk_fs P((void)); 76e377bd31Spendry extern void set_disk_fs P((disk_fs*, int, char*)); 77e377bd31Spendry extern ether_if *new_ether_if P((void)); 78e377bd31Spendry extern mount *new_mount P((void)); 79e377bd31Spendry extern void set_mount P((mount*, int, char*)); 80e377bd31Spendry extern fsmount *new_fsmount P((void)); 81e377bd31Spendry extern void set_fsmount P((fsmount*, int, char*)); 82e377bd31Spendry extern qelem *new_que P((void)); 83e377bd31Spendry extern void init_que P((qelem*)); 84e377bd31Spendry extern void ins_que P((qelem*, qelem*)); 85e377bd31Spendry extern void rem_que P((qelem*)); 86e377bd31Spendry extern dict *new_dict P((void)); 87e377bd31Spendry extern dict_ent *dict_locate P((dict*, char*)); 88e377bd31Spendry extern void dict_add P((dict*, char*, char*)); 89e377bd31Spendry extern int dict_iter P((dict*, int (*)())); 90e377bd31Spendry extern void info_hdr(); 91e377bd31Spendry extern void gen_hdr(); 92e377bd31Spendry extern FILE *pref_open(); 93e377bd31Spendry extern int pref_close(); 94e377bd31Spendry extern ioloc *current_location(); 95e377bd31Spendry 96e377bd31Spendry extern char *disk_fs_strings[]; 97e377bd31Spendry extern char *mount_strings[]; 98e377bd31Spendry extern char *fsmount_strings[]; 99e377bd31Spendry extern char *host_strings[]; 100e377bd31Spendry extern char *ether_if_strings[]; 101e377bd31Spendry extern char *autodir; 102e377bd31Spendry extern char *progname; 103e377bd31Spendry extern char hostname[]; 104e377bd31Spendry extern char *username; 105e377bd31Spendry extern char **g_argv; 106e377bd31Spendry extern char *fstab_pref; 107e377bd31Spendry extern char *exportfs_pref; 108e377bd31Spendry extern char *mount_pref; 109e377bd31Spendry extern char *dumpset_pref; 110e377bd31Spendry extern char *bootparams_pref; 111e377bd31Spendry extern char idvbuf[]; 112e377bd31Spendry 113e377bd31Spendry extern int file_io_errors; 114e377bd31Spendry extern int parse_errors; 115e377bd31Spendry extern int errors; 116e377bd31Spendry extern int verbose; 117e377bd31Spendry 118e377bd31Spendry extern dict *dict_of_hosts; 119e377bd31Spendry extern dict *dict_of_volnames; 120e377bd31Spendry 121e377bd31Spendry extern char *xcalloc(); 122e377bd31Spendry extern char *xmalloc(); 123e377bd31Spendry #define ALLOC(x) ((struct x *) xcalloc(1, sizeof(struct x))) 124e377bd31Spendry #define STREQ(s,t) (*(s) == *(t) && strcmp((s)+1,(t)+1) == 0) 125e377bd31Spendry #define ISSET(m,b) ((m) & (1<<(b))) 126e377bd31Spendry #define BITSET(m,b) ((m) |= (1<<(b))) 127e377bd31Spendry 128e377bd31Spendry #define FIRST(ty, q) ((ty *) ((q)->q_forw)) 129e377bd31Spendry #define LAST(ty, q) ((ty *) ((q)->q_back)) 130e377bd31Spendry #define NEXT(ty, q) ((ty *) (((qelem *) q)->q_forw)) 131e377bd31Spendry #define HEAD(ty, q) ((ty *) q) 132e377bd31Spendry #define ITER(v, ty, q) \ 133e377bd31Spendry for ((v) = FIRST(ty,(q)); (v) != HEAD(ty,(q)); (v) = NEXT(ty,(v))) 134