You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
693 B
C

#include "scan.h"
#include <ctype.h>
/* Return the number of leading chars in s that are in charset, but no
* more than limit */
size_t scan_charsetnskip(const char *s,const char *charset,size_t limit) {
register const char *t=s;
register const char *u=t+limit;
register const char* i;
while (t<u) {
for (i=charset; *i; ++i)
if (*i==*t) break;
if (*i!=*t) break;
++t;
}
return (size_t)(t-s);
}
#ifdef UNITTEST
#include <assert.h>
int main() {
assert(scan_charsetnskip("fnord","fo",4)==1);
assert(scan_charsetnskip("fnord","nf",4)==2);
assert(scan_charsetnskip("gaord","nf",4)==0);
assert(scan_charsetnskip("fnord","fnord",4)==4);
return 0;
}
#endif