1/* 2 * Copyright 2001-2004 Brandon Long 3 * All Rights Reserved. 4 * 5 * ClearSilver Templating System 6 * 7 * This code is made available under the terms of the ClearSilver License. 8 * http://www.clearsilver.net/license.hdf 9 * 10 */ 11 12#include "ClearSilver.h" 13 14#include <stdio.h> 15#include <string.h> 16 17static NEOERR *output (void *ctx, char *s) 18{ 19 printf ("%s", s); 20 return STATUS_OK; 21} 22 23int main (int argc, char *argv[]) 24{ 25 NEOERR *err; 26 CSPARSE *parse; 27 HDF *hdf; 28 int verbose = 0; 29 char *hdf_file, *cs_file; 30 31 if (argc < 3) 32 { 33 ne_warn ("Usage: cstest [-v] <file.hdf> <file.cs>"); 34 return -1; 35 } 36 37 if (!strcmp(argv[1], "-v")) 38 { 39 verbose = 1; 40 if (argc < 4) 41 { 42 ne_warn ("Usage: cstest [-v] <file.hdf> <file.cs>"); 43 return -1; 44 } 45 hdf_file = argv[2]; 46 cs_file = argv[3]; 47 } 48 else 49 { 50 hdf_file = argv[1]; 51 cs_file = argv[2]; 52 } 53 54 err = hdf_init(&hdf); 55 if (err != STATUS_OK) 56 { 57 nerr_log_error(err); 58 return -1; 59 } 60 err = hdf_read_file(hdf, hdf_file); 61 if (err != STATUS_OK) 62 { 63 nerr_log_error(err); 64 return -1; 65 } 66 67 printf ("Parsing %s\n", cs_file); 68 err = cs_init (&parse, hdf); 69 if (err != STATUS_OK) 70 { 71 nerr_log_error(err); 72 return -1; 73 } 74 err = cgi_register_strfuncs(parse); 75 if (err != STATUS_OK) 76 { 77 nerr_log_error(err); 78 return -1; 79 } 80 81 err = cs_parse_file (parse, cs_file); 82 if (err != STATUS_OK) 83 { 84 err = nerr_pass(err); 85 nerr_log_error(err); 86 return -1; 87 } 88 89 err = cs_render(parse, NULL, output); 90 if (err != STATUS_OK) 91 { 92 err = nerr_pass(err); 93 nerr_log_error(err); 94 return -1; 95 } 96 97 if (verbose) 98 { 99 printf ("\n-----------------------\nCS DUMP\n"); 100 err = cs_dump(parse, NULL, output); 101 } 102 103 cs_destroy (&parse); 104 105 if (verbose) 106 { 107 printf ("\n-----------------------\nHDF DUMP\n"); 108 hdf_dump (hdf, NULL); 109 } 110 hdf_destroy(&hdf); 111 112 113 return 0; 114} 115