|  | /*===-- helpers.c - tool for testing libLLVM and llvm-c API ---------------===*\ | 
|  | |*                                                                            *| | 
|  | |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *| | 
|  | |* Exceptions.                                                                *| | 
|  | |* See https://llvm.org/LICENSE.txt for license information.                  *| | 
|  | |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *| | 
|  | |*                                                                            *| | 
|  | |*===----------------------------------------------------------------------===*| | 
|  | |*                                                                            *| | 
|  | |* Helper functions                                                           *| | 
|  | |*                                                                            *| | 
|  | \*===----------------------------------------------------------------------===*/ | 
|  |  | 
|  | #include <stdio.h> | 
|  | #include <string.h> | 
|  |  | 
|  | #define MAX_TOKENS 512 | 
|  | #define MAX_LINE_LEN 1024 | 
|  |  | 
|  | void llvm_tokenize_stdin(void (*cb)(char **tokens, int ntokens)) { | 
|  | char line[MAX_LINE_LEN]; | 
|  | char *tokbuf[MAX_TOKENS]; | 
|  |  | 
|  | while (fgets(line, sizeof(line), stdin)) { | 
|  | int c = 0; | 
|  |  | 
|  | if (line[0] == ';' || line[0] == '\n') | 
|  | continue; | 
|  |  | 
|  | while (c < MAX_TOKENS) { | 
|  | tokbuf[c] = strtok(c ? NULL : line, " \n"); | 
|  | if (!tokbuf[c]) | 
|  | break; | 
|  | c++; | 
|  | } | 
|  | if (c) | 
|  | cb(tokbuf, c); | 
|  | } | 
|  | } |