diff options
Diffstat (limited to 'lib/idfile.h')
-rw-r--r-- | lib/idfile.h | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/lib/idfile.h b/lib/idfile.h deleted file mode 100644 index c2cd0a0..0000000 --- a/lib/idfile.h +++ /dev/null @@ -1,158 +0,0 @@ -/* idfile.h -- decls for ID file header and constituent file names - Copyright (C) 1986, 1995 Greg McGary - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef _idfile_h_ -#define _idfile_h_ 1 - -#include <sys/types.h> -#include <stdio.h> -#include <obstack.h> -#include "hash.h" - -/* The ID file header is the nexus of all ID file information. This - is an in-core structure, only some of which is read/written to disk. */ - -struct idhead -{ - unsigned char idh_magic[2]; -#define IDH_MAGIC_0 ('I'|0x80) -#define IDH_MAGIC_1 ('D'|0x80) - unsigned char idh_version; -#define IDH_VERSION 4 - unsigned short idh_flags; -#define IDH_COUNTS (1<<0) /* include occurrence counts for each token */ -#define IDH_FOLLOW_SL (1<<1) /* follow symlinks to directories */ -#define IDH_COMMENTS (1<<2) /* include tokens found in comments */ -#define IDH_LOCALS (1<<3) /* include names of formal params & local vars */ -#define IDH_DECL_DEFN_USE (1<<4) /* include decl/defn/use info */ -#define IDH_L_R_VALUE (1<<5) /* include lvalue/rvalue info */ -#define IDH_CALL_ER_EE (1<<6) /* include caller/callee relationship info */ - unsigned long idh_file_links; /* total # of file links */ - unsigned long idh_files; /* total # of constituent source files */ - unsigned long idh_tokens; /* total # of constituent tokens */ - /* idh_*_size: max buffer-sizes for ID file reading programs */ - unsigned long idh_buf_size; /* # of bytes in longest entry */ - unsigned long idh_vec_size; /* # of hits in longest entry */ - /* idh_*_offset: ID file offsets for start of various sections */ - long idh_tokens_offset; /* constituent tokens section */ - long idh_flinks_offset; /* constituent file & directory names section */ - long idh_end_offset; /* end of tokens section */ - unsigned short idh_max_link; /* longest file name component */ - unsigned short idh_max_path; /* largest # of file name components */ - - /* The following are run-time variables and are not stored on disk */ - struct hash_table idh_member_file_table; - struct hash_table idh_file_link_table; -#if HAVE_LINK - struct hash_table idh_dev_ino_table; /* for detecting file name aliases */ -#endif - struct obstack idh_member_file_obstack; - struct obstack idh_file_link_obstack; -#if HAVE_LINK - struct obstack idh_dev_ino_obstack; -#endif - char *idh_file_name; - FILE *idh_FILE; -#if 0 - time_t idh_mod_time; - struct arg_file **idh_file_order; /* sequence in ID file */ - struct arg_file **idh_scan_order; /* sequence in summaries */ -#endif -}; - -/* A file_link represents a single component (file or directory) in a - file name. It has a name, a parent file_link and some flags. */ - -struct file_link -{ - union { - struct file_link *u_parent; -#define fl_parent fl_u.u_parent - unsigned long u_index; -#define fl_index fl_u.u_index -#define FL_PARENT_INDEX_BYTES 3 -#define IS_ROOT_FILE_LINK(flink) ((flink)->fl_parent == (flink)) - } fl_u; - unsigned char fl_flags; -#define FL_CMD_LINE_ARG (1<<0) -#define FL_USED (1<<1) -#define FL_MEMBER (1<<2) /* has a corresponding member_file entry */ -#define FL_SCAN_ME (1<<3) -#define FL_SYM_LINK (1<<4) -#define FL_TYPE_MASK (FL_TYPE_DIR|FL_TYPE_FILE) -# define FL_TYPE_DIR (1<<5) -# define FL_IS_DIR(_f_) (((_f_) & FL_TYPE_MASK) == FL_TYPE_DIR) -# define FL_TYPE_FILE (1<<6) -# define FL_IS_FILE(_f_) (((_f_) & FL_TYPE_MASK) == FL_TYPE_FILE) - char fl_name[1]; -}; - -/* A member_file represents a source file that is treated by mkid. */ - -struct member_file -{ - struct file_link *mf_link; - struct lang_args const *mf_lang_args; -time_t mf_modify_time; -time_t mf_access_time; - short mf_index; /* order in ID file */ -}; - -#if HAVE_LINK - -/* On systems that support multiple names for a single file (via hard - and/or soft links), dev_ino records information needed to detect - such aliasing. */ - -struct dev_ino -{ - dev_t di_dev; - ino_t di_ino; - struct file_link *di_link; -}; - -extern struct hash_table dev_ino_table; - -#endif - -extern struct idhead idh; - -extern struct file_link **read_id_file __P((char const *id_file_name, struct idhead *idhp)); -extern struct file_link **maybe_read_id_file __P((char const *id_file_name, struct idhead *idhp)); -extern int read_idhead __P((struct idhead *idhp)); -extern int write_idhead __P((struct idhead *idhp)); -extern int sizeof_idhead __P((void)); -extern void init_idh_obstacks __P((struct idhead *idhp)); -extern void init_idh_tables __P((struct idhead *idhp)); - -#define IO_TYPE_INT 0 /* integer */ -#define IO_TYPE_STR 1 /* NUL terminated string */ -#define IO_TYPE_FIX 2 /* fix-sized */ - -extern int io_write __P((FILE *output_FILE, void *addr, unsigned int size, int io_type)); -extern int io_read __P((FILE *input_FILE, void *addr, unsigned int size, int io_type)); -extern struct file_link *get_current_dir_link __P((void)); - -extern struct file_link **deserialize_file_links __P((struct idhead *idhp)); -extern void mark_member_file_links __P((struct idhead *idhp)); -extern int member_file_qsort_compare __P((void const *x, void const *y)); -extern void serialize_file_links __P((struct idhead *idhp)); -extern struct file_link *parse_file_name __P((char *file_name, - struct file_link *relative_dir_link)); - -#endif /* not _idfile_h_ */ |