86 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* sed.h -- types and constants for the stream editor
 | 
						|
   Copyright (C) 1995-2003 Eric S. Raymond
 | 
						|
   Copyright (C) 2004-2005 Rene Rebe
 | 
						|
*/
 | 
						|
 | 
						|
#define TRUE            1
 | 
						|
#define FALSE           0
 | 
						|
 | 
						|
/* data area sizes used by both modules */
 | 
						|
#define MAXBUF		4000	/* current line buffer size */
 | 
						|
#define MAXAPPENDS	20	/* maximum number of appends */
 | 
						|
#define MAXTAGS		9	/* tagged patterns are \1 to \9 */
 | 
						|
#define MAXCMDS		200	/* maximum number of compiled commands */
 | 
						|
#define MAXLINES	256	/* max # numeric addresses to compile */ 
 | 
						|
 | 
						|
/* constants for compiled-command representation */
 | 
						|
#define EQCMD	0x01	/* = -- print current line number		*/
 | 
						|
#define ACMD	0x02	/* a -- append text after current line 	*/
 | 
						|
#define BCMD	0x03	/* b -- branch to label				*/
 | 
						|
#define CCMD	0x04	/* c -- change current line 		*/
 | 
						|
#define DCMD	0x05	/* d -- delete all of pattern space		*/
 | 
						|
#define CDCMD	0x06	/* D -- delete first line of pattern space	*/
 | 
						|
#define GCMD	0x07	/* g -- copy hold space to pattern space	*/
 | 
						|
#define CGCMD	0x08	/* G -- append hold space to pattern space	*/
 | 
						|
#define HCMD	0x09	/* h -- copy pattern space to hold space	*/
 | 
						|
#define CHCMD	0x0A	/* H -- append hold space to pattern space	*/
 | 
						|
#define ICMD	0x0B	/* i -- insert text before current line 	*/
 | 
						|
#define LCMD	0x0C	/* l -- print pattern space in escaped form	*/
 | 
						|
#define CLCMD   0x20	/* L -- hexdump					*/
 | 
						|
#define NCMD	0x0D	/* n -- get next line into pattern space	*/
 | 
						|
#define CNCMD	0x0E	/* N -- append next line to pattern space	*/
 | 
						|
#define PCMD	0x0F	/* p -- print pattern space to output		*/
 | 
						|
#define CPCMD	0x10	/* P -- print first line of pattern space	*/
 | 
						|
#define QCMD	0x11	/* q -- exit the stream editor			*/
 | 
						|
#define RCMD	0x12	/* r -- read in a file after current line */
 | 
						|
#define SCMD	0x13	/* s -- regular-expression substitute		*/
 | 
						|
#define TCMD	0x14	/* t -- branch on last substitute successful	*/
 | 
						|
#define CTCMD	0x15	/* T -- branch on last substitute failed	*/
 | 
						|
#define WCMD	0x16	/* w -- write pattern space to file		*/
 | 
						|
#define CWCMD	0x17	/* W -- write first line of pattern space	*/
 | 
						|
#define XCMD	0x18	/* x -- exhange pattern and hold spaces		*/
 | 
						|
#define YCMD	0x19	/* y -- transliterate text			*/
 | 
						|
 | 
						|
typedef struct	cmd_t			/* compiled-command representation */
 | 
						|
{
 | 
						|
	char	*addr1;			/* first address for command */
 | 
						|
	char	*addr2;			/* second address for command */
 | 
						|
	union
 | 
						|
	{
 | 
						|
		char		*lhs;	/* s command lhs */
 | 
						|
		struct cmd_t	*link;	/* label link */
 | 
						|
	} u;
 | 
						|
	char	command;		/* command code */
 | 
						|
	char	*rhs;			/* s command replacement string */
 | 
						|
	FILE	*fout;	 		/* associated output file descriptor */
 | 
						|
	struct
 | 
						|
	{
 | 
						|
		unsigned allbut  : 1;	/* was negation specified? */
 | 
						|
		unsigned global  : 1;	/* was p postfix specified? */
 | 
						|
		unsigned print   : 2;	/* was g postfix specified? */
 | 
						|
		unsigned inrange : 1;	/* in an address range? */
 | 
						|
	} flags;
 | 
						|
	unsigned nth;			/* sed nth occurance */
 | 
						|
}
 | 
						|
sedcmd;		/* use this name for declarations */
 | 
						|
 | 
						|
#define BAD	((char *) -1)		/* guaranteed not a string ptr */
 | 
						|
 | 
						|
/* address and regular expression compiled-form markers */
 | 
						|
#define STAR	1	/* marker for Kleene star */
 | 
						|
#define CCHR	2	/* non-newline character to be matched follows */
 | 
						|
#define CDOT	4	/* dot wild-card marker */
 | 
						|
#define CCL	6	/* character class follows */
 | 
						|
#define CNL	8	/* match line start */
 | 
						|
#define CDOL	10	/* match line end */
 | 
						|
#define CBRA	12	/* tagged pattern start marker */
 | 
						|
#define CKET	14	/* tagged pattern end marker */
 | 
						|
#define CBACK	16	/* backslash-digit pair marker */
 | 
						|
#define CLNUM	18	/* numeric-address index follows */
 | 
						|
#define CEND	20	/* symbol for end-of-source */
 | 
						|
#define CEOF	22	/* end-of-field mark */
 | 
						|
 | 
						|
#define bits(b) (1 << (b))
 | 
						|
 | 
						|
/* sed.h ends here */
 |