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 */
 | 
