1 | /*===-- helpers.c - tool for testing libLLVM and llvm-c API ---------------===*\ |
2 | |* *| |
3 | |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| |
4 | |* Exceptions. *| |
5 | |* See https://llvm.org/LICENSE.txt for license information. *| |
6 | |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| |
7 | |* *| |
8 | |*===----------------------------------------------------------------------===*| |
9 | |* *| |
10 | |* Helper functions *| |
11 | |* *| |
12 | \*===----------------------------------------------------------------------===*/ |
13 | |
14 | #include <stdio.h> |
15 | #include <string.h> |
16 | |
17 | #define MAX_TOKENS 512 |
18 | #define MAX_LINE_LEN 1024 |
19 | |
20 | void llvm_tokenize_stdin(void (*cb)(char **tokens, int ntokens)) { |
21 | char line[MAX_LINE_LEN]; |
22 | char *tokbuf[MAX_TOKENS]; |
23 | |
24 | while (fgets(s: line, n: sizeof(line), stdin)) { |
25 | int c = 0; |
26 | |
27 | if (line[0] == ';' || line[0] == '\n') |
28 | continue; |
29 | |
30 | while (c < MAX_TOKENS) { |
31 | tokbuf[c] = strtok(s: c ? NULL : line, delim: " \n" ); |
32 | if (!tokbuf[c]) |
33 | break; |
34 | c++; |
35 | } |
36 | if (c) |
37 | cb(tokbuf, c); |
38 | } |
39 | } |
40 | |