view src/ndir.h @ 43723:5cd450d9f443

* etags.c: Honour #line directives. (no_line_directive): New global var; set it for old behaviour. (main): Remove some #ifdef in the getopt switch. (add_node, put_entries): Code added to merge different chunks of nodes referring to the same file. Currently the tags are just appended, without any check for duplicates. (Perl_functions): Do not special case ctags. (readline): Identify #line directives and do the right thing. (nocharno, invalidcharno): New global vars. (process_file): Reset nocharno. (readline): Set nocharno. (pfnote): Read nocharno and maybe put invalidcharno in node. (total_size_of_entries, put_entries): Use invalidcharno. * etags.c: Keep the whole tag table in memory, even in etags mode. (main): Call put_entries here even in CTAGS mode. (main, process_file): Check the return values of fclose and pclose. (process_file): Do not call put_entries after parsing each file. (process_file): Canonicalise file names even for ctags. (process_file): Set curfile here... (find_entries): ... not here any more. (add_node): In etags mode, build a linked list of entries (on right pointer) for each file, and link the first entry of each file on left nodes. (put_entries): Print here the name of the file. (put_entries): Print the entries starting from the first file. (number_len, total_size_of_entries): Define these only iin etags mode, make the second work only on the right nodes. * etags.c: Make all global variables static.
author Francesco Potortì <pot@gnu.org>
date Tue, 05 Mar 2002 11:28:26 +0000
parents b8fc349121d1
children 695cf19ef79e
line wrap: on
line source

/*
	<dir.h> -- definitions for 4.2BSD-compatible directory access

	last edit:	09-Jul-1983	D A Gwyn
*/

#ifdef VMS
#ifndef FAB$C_BID
#include <fab.h>
#endif
#ifndef NAM$C_BID
#include <nam.h>
#endif
#ifndef RMS$_SUC
#include <rmsdef.h>
#endif
#include "vmsdir.h"
#endif /* VMS */

#define DIRBLKSIZ	512		/* size of directory block */
#ifdef VMS
#define MAXNAMLEN	(DIR$S_NAME + 7) /* 80 plus room for version #.  */
#define MAXFULLSPEC	NAM$C_MAXRSS /* Maximum full spec */
#else
#ifdef WINDOWSNT
#define MAXNAMLEN	255
#else  /* not WINDOWSNT */
#define MAXNAMLEN	15		/* maximum filename length */
#endif /* not WINDOWSNT */
#endif /* VMS */
	/* NOTE:  MAXNAMLEN must be one less than a multiple of 4 */

struct direct				/* data from readdir() */
	{
	long		d_ino;		/* inode number of entry */
	unsigned short	d_reclen;	/* length of this record */
	unsigned short	d_namlen;	/* length of string in d_name */
	char		d_name[MAXNAMLEN+1];	/* name of file */
	};

typedef struct
	{
	int	dd_fd;			/* file descriptor */
	int	dd_loc;			/* offset in block */
	int	dd_size;		/* amount of valid data */
	char	dd_buf[DIRBLKSIZ];	/* directory block */
	}	DIR;			/* stream data from opendir() */

extern DIR		*opendir();
extern struct direct	*readdir();
extern long		telldir();
extern void		seekdir();
extern void		closedir();

#define rewinddir( dirp )	seekdir( dirp, 0L )