[BACK]Return to regex.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / mg

Annotation of src/usr.bin/mg/regex.h, Revision 1.1

1.1     ! deraadt     1: /* Definitions for data structures callers pass the regex library.
        !             2:    Copyright (C) 1985 Richard M. Stallman
        !             3:
        !             4: This program is distributed in the hope that it will be useful,
        !             5: but without any warranty.  No author or distributor
        !             6: accepts responsibility to anyone for the consequences of using it
        !             7: or for whether it serves any particular purpose or works at all,
        !             8: unless he says so in writing.
        !             9:
        !            10:    Permission is granted to anyone to distribute verbatim copies
        !            11:    of this program's source code as received, in any medium, provided that
        !            12:    the copyright notice, the nonwarraty notice above
        !            13:    and this permission notice are preserved,
        !            14:    and that the distributor grants the recipient all rights
        !            15:    for further redistribution as permitted by this notice,
        !            16:    and informs him of these rights.
        !            17:
        !            18:    Permission is granted to distribute modified versions of this
        !            19:    program's source code, or of portions of it, under the above
        !            20:    conditions, plus the conditions that all changed files carry
        !            21:    prominent notices stating who last changed them and that the
        !            22:    derived material, including anything packaged together with it and
        !            23:    conceptually functioning as a modification of it rather than an
        !            24:    application of it, is in its entirety subject to a permission
        !            25:    notice identical to this one.
        !            26:
        !            27:    Permission is granted to distribute this program (verbatim or
        !            28:    as modified) in compiled or executable form, provided verbatim
        !            29:    redistribution is permitted as stated above for source code, and
        !            30:     A. it is accompanied by the corresponding machine-readable
        !            31:       source code, under the above conditions, or
        !            32:     B. it is accompanied by a written offer, with no time limit,
        !            33:       to distribute the corresponding machine-readable source code,
        !            34:       under the above conditions, to any one, in return for reimbursement
        !            35:       of the cost of distribution.   Verbatim redistribution of the
        !            36:       written offer must be permitted. Or,
        !            37:     C. it is distributed by someone who received only the
        !            38:       compiled or executable form, and is accompanied by a copy of the
        !            39:       written offer of source code which he received along with it.
        !            40:
        !            41:    Permission is granted to distribute this program (verbatim or as modified)
        !            42:    in executable form as part of a larger system provided that the source
        !            43:    code for this program, including any modifications used,
        !            44:    is also distributed or offered as stated in the preceding paragraph.
        !            45:
        !            46: In other words, you are welcome to use, share and improve this program.
        !            47: You are forbidden to forbid anyone else to use, share and improve
        !            48: what you give them.   Help stamp out software-hoarding!         */
        !            49:
        !            50:
        !            51: #ifndef RE_NREGS
        !            52: #define RE_NREGS 10
        !            53: #endif
        !            54:
        !            55: /* This data structure is used to represent a compiled pattern. */
        !            56:
        !            57: struct re_pattern_buffer
        !            58:   {
        !            59:     char *buffer;      /* Space holding the compiled pattern commands. */
        !            60:     int allocated;     /* Size of space that  buffer  points to */
        !            61:     int used;          /* Length of portion of buffer actually occupied */
        !            62:     char *fastmap;     /* Pointer to fastmap, if any, or zero if none. */
        !            63:                        /* re_search uses the fastmap, if there is one,
        !            64:                           to skip quickly over totally implausible characters */
        !            65:     char *translate;   /* Translate table to apply to all characters before comparing.
        !            66:                           Or zero for no translation.
        !            67:                           The translation is applied to a pattern when it is compiled
        !            68:                           and to data when it is matched. */
        !            69:     char fastmap_accurate;
        !            70:                        /* Set to zero when a new pattern is stored,
        !            71:                           set to one when the fastmap is updated from it. */
        !            72:     char can_be_null;  /* Set to one by compiling fastmap
        !            73:                           if this pattern might match the null string.
        !            74:                           It does not necessarily match the null string
        !            75:                           in that case, but if this is zero, it cannot.  */
        !            76:   };
        !            77:
        !            78: /* Structure to store "register" contents data in.
        !            79:
        !            80:    Pass the address of such a structure as an argument to re_match, etc.,
        !            81:    if you want this information back.
        !            82:
        !            83:    start[i] and end[i] record the string matched by \( ... \) grouping i,
        !            84:    for i from 1 to RE_NREGS - 1.
        !            85:    start[0] and end[0] record the entire string matched. */
        !            86:
        !            87: struct re_registers
        !            88:   {
        !            89:     int start[RE_NREGS];
        !            90:     int end[RE_NREGS];
        !            91:   };
        !            92:
        !            93: 
        !            94: extern char *re_compile_pattern ();
        !            95: /* Is this really advertised? */
        !            96: extern VOID re_compile_fastmap ();
        !            97: extern int re_search (), re_search_2 ();
        !            98: extern int re_match (), re_match_2 ();
        !            99:
        !           100: /* 4.2 bsd compatibility (yuck) */
        !           101: extern char *re_comp ();
        !           102: extern int re_exec ();
        !           103:
        !           104: #ifdef SYNTAX_TABLE
        !           105: extern char *re_syntax_table;
        !           106: #endif