12bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg/*===-- helpers.c - tool for testing libLLVM and llvm-c API ---------------===*\
22bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|*                                                                            *|
32bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|*                     The LLVM Compiler Infrastructure                       *|
42bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|*                                                                            *|
52bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* This file is distributed under the University of Illinois Open Source      *|
62bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* License. See LICENSE.TXT for details.                                      *|
72bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|*                                                                            *|
82bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|*===----------------------------------------------------------------------===*|
92bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|*                                                                            *|
102bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* Helper functions                                                           *|
112bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|*                                                                            *|
122bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg\*===----------------------------------------------------------------------===*/
132bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg
142bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include "llvm-c-test.h"
152bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include <stdio.h>
162bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include <string.h>
172bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg
182bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#define MAX_TOKENS 512
192bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#define MAX_LINE_LEN 1024
202bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg
212bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborgvoid tokenize_stdin(void (*cb)(char **tokens, int ntokens)) {
222bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg  char line[MAX_LINE_LEN];
232bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg  char *tokbuf[MAX_TOKENS];
242bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg
252bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg  while (fgets(line, sizeof(line), stdin)) {
262bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg    int c = 0;
272bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg
282bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg    if (line[0] == ';' || line[0] == '\n')
292bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg      continue;
302bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg
312bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg    while (c < MAX_TOKENS) {
322bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg      tokbuf[c] = strtok(c ? NULL : line, " \n");
332bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg      if (!tokbuf[c])
342bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg        break;
352bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg      c++;
362bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg    }
372bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg    if (c)
382bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg      cb(tokbuf, c);
392bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg  }
402bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg}
41