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