|
|
1.1 ! root 1: /* ! 2: * RCS keyword table and match operation ! 3: */ ! 4: #ifndef lint ! 5: static char rcsid[]= "$Id: rcskeys.c,v 4.2 87/10/18 10:36:33 narten Exp $ Purdue CS"; ! 6: #endif ! 7: /********************************************************************************** ! 8: ********************************************************************************** ! 9: * ! 10: * Copyright (C) 1982 by Walter F. Tichy ! 11: * Purdue University ! 12: * Computer Science Department ! 13: * West Lafayette, IN 47907 ! 14: * ! 15: * All rights reserved. No part of this software may be sold or distributed ! 16: * in any form or by any means without the prior written permission of the ! 17: * author. ! 18: * Report problems and direct all inquiries to Tichy@purdue (ARPA net). ! 19: */ ! 20: ! 21: ! 22: /* $Log: rcskeys.c,v $ ! 23: * Revision 4.2 87/10/18 10:36:33 narten ! 24: * Updating version numbers. Changes relative to 1.1 actuallyt ! 25: * relative to 4.1 ! 26: * ! 27: * Revision 1.2 87/09/24 14:00:10 narten ! 28: * Sources now pass through lint (if you ignore printf/sprintf/fprintf ! 29: * warnings) ! 30: * ! 31: * Revision 1.1 84/01/23 14:50:32 kcs ! 32: * Initial revision ! 33: * ! 34: * Revision 4.1 83/05/04 10:06:53 wft ! 35: * Initial revision. ! 36: * ! 37: */ ! 38: ! 39: ! 40: #include "rcsbase.h" ! 41: ! 42: ! 43: ! 44: struct { char * keyword; enum markers marker;} markertable[] = ! 45: {{AUTHOR, Author }, ! 46: {DATE, Date }, ! 47: {HEADER, Header }, ! 48: {IDH, Id }, ! 49: {LOCKER, Locker }, ! 50: {LOG, Log }, ! 51: {RCSFILE, RCSfile }, ! 52: {REVISION, Revision}, ! 53: {SOURCE, Source }, ! 54: {STATE, State }, ! 55: {nil, Nomatch }}; ! 56: ! 57: ! 58: ! 59: enum markers trymatch(string,onlyvdelim) ! 60: char * string; ! 61: /* function: Checks whether string starts with a keyword followed ! 62: * by a KDELIM or a VDELIM. If onlyvdelim==true, only a VDELIM ! 63: * may follow the keyword. ! 64: * If successful, returns the appropriate marker, otherwise Nomatch. ! 65: */ ! 66: { ! 67: register int j; ! 68: register char * p, * s; ! 69: for (j=0; markertable[j].keyword!=nil; j++ ) { ! 70: /* try next keyword */ ! 71: p = markertable[j].keyword; s = string; ! 72: while (*p!='\0' && *s!='\0' && *p == *s) { ! 73: p++; s++; ! 74: } ! 75: if (*p != '\0') continue; /* no match */ ! 76: if ((*s == VDELIM) || (!onlyvdelim && (*s == KDELIM))) ! 77: return(markertable[j].marker); ! 78: } ! 79: return(Nomatch); ! 80: } ! 81:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.