Fixes recursion bug in disambiguate_in().
[ohcount] / src / parser.c
1 // parser.c written by Mitchell Foral. mitchell<att>caladbolg.net.
2 // See COPYING for license information.
3
4 #include <string.h>
5
6 #include "sourcefile.h"
7 #include "log.h"
8 #include "hash/parser_hash.h"
9
10 struct ParserMap * ohcount_hash_parser_from_language (register const char *str, register unsigned int len);
11
12 int ohcount_parse(SourceFile *sourcefile, int count,
13                   void (*callback) (const char *, const char *, int, int,
14                                     void *),
15                   void *userdata) {
16   const char *language = ohcount_sourcefile_get_language(sourcefile);
17   if (language) {
18     struct ParserMap *rp =
19       ohcount_hash_parser_from_language(language, strlen(language));
20     if (rp) {
21       char *buffer = ohcount_sourcefile_get_contents(sourcefile);
22       int buffer_len = ohcount_sourcefile_get_contents_size(sourcefile);
23       if (callback)
24         rp->parser(buffer, buffer_len, count, callback, userdata);
25       return 1;
26     }
27   }
28
29   return 0;
30 }