1 1.2 martin /* $NetBSD: txtwalk.h,v 1.2 2019/08/07 10:08:04 martin Exp $ */ 2 1.1 dholland 3 1.1 dholland /* 4 1.1 dholland * Copyright 1997 Piermont Information Systems Inc. 5 1.1 dholland * All rights reserved. 6 1.1 dholland * 7 1.1 dholland * Written by Philip A. Nelson for Piermont Information Systems Inc. 8 1.1 dholland * 9 1.1 dholland * Redistribution and use in source and binary forms, with or without 10 1.1 dholland * modification, are permitted provided that the following conditions 11 1.1 dholland * are met: 12 1.1 dholland * 1. Redistributions of source code must retain the above copyright 13 1.1 dholland * notice, this list of conditions and the following disclaimer. 14 1.1 dholland * 2. Redistributions in binary form must reproduce the above copyright 15 1.1 dholland * notice, this list of conditions and the following disclaimer in the 16 1.1 dholland * documentation and/or other materials provided with the distribution. 17 1.1 dholland * 3. The name of Piermont Information Systems Inc. may not be used to endorse 18 1.1 dholland * or promote products derived from this software without specific prior 19 1.1 dholland * written permission. 20 1.1 dholland * 21 1.1 dholland * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 22 1.1 dholland * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 1.1 dholland * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 1.1 dholland * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 25 1.1 dholland * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 1.1 dholland * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 1.1 dholland * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 1.1 dholland * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 1.1 dholland * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 1.1 dholland * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31 1.1 dholland * THE POSSIBILITY OF SUCH DAMAGE. 32 1.1 dholland * 33 1.1 dholland */ 34 1.1 dholland 35 1.1 dholland /* txtwalk.h - definitions for textwalk to be useful! */ 36 1.1 dholland 37 1.1 dholland /* data extractions */ 38 1.1 dholland enum kind {INT, STR}; 39 1.1 dholland 40 1.1 dholland struct data { 41 1.1 dholland enum kind what; 42 1.1 dholland union udata { 43 1.1 dholland int i_val; 44 1.1 dholland char *s_val; 45 1.1 dholland } u; 46 1.1 dholland }; 47 1.1 dholland 48 1.1 dholland /* Strings of interest! */ 49 1.1 dholland struct lookfor { 50 1.1 dholland const char *head; /* Line starts this way. */ 51 1.1 dholland const char *fmt; /* Expected format. */ 52 1.1 dholland const char *todo; /* What to do ... */ 53 1.2 martin void *var; /* Possible var or additional args */ 54 1.2 martin size_t nument; /* Number of entries in the "array" */ 55 1.2 martin size_t size; /* size of string variables */ 56 1.2 martin int (*func) (struct data *list, size_t num, const struct lookfor*); 57 1.2 martin /* function to call */ 58 1.1 dholland }; 59 1.1 dholland 60 1.1 dholland /* Format string for the expected string: 61 1.1 dholland * space => skip white space 62 1.1 dholland * %ic => skip until you find char c, if c == space, matches any white space 63 1.1 dholland * %d => expect an integer 64 1.1 dholland * %s => expect a non-white space string 65 1.1 dholland * \0 => ignore remainder of line 66 1.1 dholland * %% => match a % 67 1.1 dholland * 68 1.1 dholland */ 69 1.1 dholland 70 1.1 dholland /* What to do .... 71 1.1 dholland * 72 1.1 dholland * a -- assign to var, $n is data from the expect strings. 73 1.1 dholland * c -- call the function 74 1.1 dholland * 75 1.1 dholland */ 76 1.1 dholland 77 1.1 dholland /* prototypes */ 78 1.1 dholland 79 1.1 dholland int walk(char *, size_t, const struct lookfor *, size_t); 80 1.1 dholland 81 1.1 dholland 82 1.1 dholland /* Maximum number of matched data elements per line! */ 83 1.1 dholland #define MAXDATA 20 84 1.1 dholland 85