| 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 | |