Annotation of coherent/d/bin/sed/sed.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * A stream editor.
        !             3:  * Header file.
        !             4:  */
        !             5: #define HUGE   ((unsigned)65535L)      /* A large integer */
        !             6: #define        NBRC    9                       /* Number of \( ... \) allowed */
        !             7: #define LHPSIZE        512                     /* Size of line, hold and pat buffer */
        !             8: #define LNMSIZE        16                      /* Size of label */
        !             9: #define FNMSIZE        16                      /* Size of file name */
        !            10: 
        !            11: /*
        !            12:  * Definition for stream directives in regular expressions.
        !            13:  * The order of these must not be changed.  In particular,
        !            14:  * the `stream of' directives must immediately follow their
        !            15:  * single counterparts.
        !            16:  */
        !            17: #define CSNUL  000                     /* End of expression */
        !            18: #define CSSOL  001                     /* Match start of line */
        !            19: #define CSEOL  002                     /* End of line */
        !            20: #define CSOPR  003                     /* \( */
        !            21: #define CSCPR  004                     /* \) */
        !            22: #define CSBRN  005                     /* Match nth \( ... \) */
        !            23: #define CSDOT  006                     /* Any character */
        !            24: #define CMDOT  007                     /* Stream of any characters */
        !            25: #define CSCHR  010                     /* Match given character */
        !            26: #define CMCHR  011                     /* Match stream of given characters */
        !            27: #define CSSCC  012                     /* Char in single case */
        !            28: #define CMSCC  013                     /* Stream of chars in single case */
        !            29: #define CSCCL  014                     /* Character class */
        !            30: #define CMCCL  015                     /* Stream of character class */
        !            31: #define CSNCL  016                     /* Not character class */
        !            32: #define CMNCL  017                     /* Stream of not char class */
        !            33: 
        !            34: /*
        !            35:  * A function for finding whether a character is a letter and a
        !            36:  * function to switch case (lower to upper and vice versa).
        !            37:  */
        !            38: #define isallet(c)     (_ctype[(c)+1]&(_L|_N))
        !            39: #define toother(c)     ((c)^040)
        !            40: 
        !            41: /*
        !            42:  * Address.
        !            43:  */
        !            44: typedef        struct  add {
        !            45:        unsigned a_lno;                 /* Line number */
        !            46:        char    *a_pat;                 /* Pattern */
        !            47: } ADD;
        !            48: 
        !            49: /*
        !            50:  * Structure for remembering \( ... \).
        !            51:  */
        !            52: typedef        struct {
        !            53:        char    *b_bp;                  /* Ptr to start of string matched */
        !            54:        char    *b_ep;                  /* Ptr to end of string matched */
        !            55: } BRC;
        !            56: 
        !            57: /*
        !            58:  * Commands.
        !            59:  */
        !            60: typedef struct com {
        !            61:        struct  com *c_next;            /* Pointer to next */
        !            62:        char    c_name;                 /* Command name */
        !            63:        char    c_nadd;                 /* Number of addresses */
        !            64:        char    c_notf;                 /* Not flag */
        !            65:        char    c_iran;                 /* In range */
        !            66:        ADD     c_a[2];                 /* Line addesses */
        !            67:        union {
        !            68:                struct  com *p_com;     /* Command */
        !            69:                struct  lab *p_lab;     /* Label */
        !            70:                struct  sub *p_sub;     /* Substitute */
        !            71:                struct  fil *p_fil;     /* File */
        !            72:                char    *p_buf;         /* Buffer */
        !            73:        }       c_p;                    /* Parameters */
        !            74: } COM;
        !            75: 
        !            76: /*
        !            77:  * Argument list.
        !            78:  */
        !            79: typedef struct ecl {
        !            80:        struct  ecl *e_next;            /* Pointer to next */
        !            81:        char    *e_argp;                /* Argument pointer */
        !            82: } ECL;
        !            83: 
        !            84: /*
        !            85:  * Files.
        !            86:  */
        !            87: typedef        struct  fil {
        !            88:        struct  fil *f_next;            /* Pointer to next */
        !            89:        char    f_name[FNMSIZE];        /* Pointer to file name */
        !            90:        FILE    *f_filp;                /* File pointer */
        !            91: } FIL;
        !            92: 
        !            93: /*
        !            94:  * Labels.
        !            95:  */
        !            96: typedef        struct  lab {
        !            97:        struct  lab *l_next;            /* Pointer to next */
        !            98:        char    l_name[LNMSIZE];        /* Name */
        !            99:        struct  com *l_comp;            /* Address */
        !           100:        int     l_refc;                 /* Reference count */
        !           101: } LAB;
        !           102: 
        !           103: /*
        !           104:  * Substitute.
        !           105:  */
        !           106: typedef struct sub {
        !           107:        char    *s_pat;                 /* Pattern */
        !           108:        char    *s_rep;                 /* Replacement */
        !           109:        int     s_nth;                  /* N'th */
        !           110:        int     s_cop;                  /* Copy flag */
        !           111:        struct  fil *s_fil;             /* File to write to */
        !           112: } SUB;
        !           113: 
        !           114: /*
        !           115:  * Queue.
        !           116:  */
        !           117: typedef struct qcl {
        !           118:        struct  que *q_next;            /* Pointer to next */
        !           119:        struct  com *q_comp;            /* Pointer to command */
        !           120: } QCL;
        !           121: 
        !           122: /*
        !           123:  * Global variables.
        !           124:  */
        !           125: extern FILE    *ifp;                   /* Input file pointer */
        !           126: extern BRC     brcl[1+NBRC];           /* For remembering \( \) */
        !           127: extern COM     *comp;                  /* Pointer to command list */
        !           128: extern COM     **compp;                /* Ptr to add next element */
        !           129: extern ECL     *eclp;                  /* Argument list pointer */
        !           130: extern FIL     *filp;                  /* Pointer to file list */
        !           131: extern LAB     *labp;                  /* Label list */
        !           132: extern QCL     *qcbp;                  /* For stacking braces */
        !           133: extern int     pattlen;                /* Length of pattern */
        !           134: extern int     holdlen;                /* Length of hold buffer */
        !           135: extern int     dolflag;                /* Last line in file */
        !           136: extern int     addnone;                /* Number was not found */
        !           137: extern int     nflag;                  /* Don't copy to output */
        !           138: extern int     sflag;                  /* Case insensitive */
        !           139: extern int     nerr;                   /* Number of errors */
        !           140: extern int     lno;                    /* Current line number */
        !           141: extern char    linebuf[LHPSIZE];       /* Line buffer */
        !           142: extern char    holdbuf[LHPSIZE];       /* Hold buffer */
        !           143: extern char    pattbuf[LHPSIZE];       /* Pattern buffer */
        !           144: extern char    *ncp;                   /* Pointer in input */
        !           145: 
        !           146: extern char    *salloc();              /* Memory allocation function */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.