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 <stdio.h> 13 #include <stdlib.h> 14 #include <unistd.h> 15 16 #include "cs.h" 17 #include "util/neo_misc.h" 18 #include "util/neo_hdf.h" 19 20 static NEOERR *output (void *ctx, char *s) 21 { 22 printf ("%s", s); 23 return STATUS_OK; 24 } 25 26 int main (int argc, char *argv[]) 27 { 28 NEOERR *err; 29 CSPARSE *parse; 30 HDF *hdf; 31 int verbose = 0; 32 char *hdf_file, *cs_file; 33 char c; 34 35 extern char *optarg; 36 37 err = hdf_init(&hdf); 38 if (err != STATUS_OK) 39 { 40 nerr_log_error(err); 41 return -1; 42 } 43 44 err = cs_init (&parse, hdf); 45 if (err != STATUS_OK) { 46 nerr_log_error(err); 47 return -1; 48 } 49 50 while ((c = getopt(argc, argv, "Hvh:c:")) != EOF ) 51 52 switch (c) { 53 case 'h': 54 hdf_file=optarg; 55 err = hdf_read_file(hdf, hdf_file); 56 if (err != STATUS_OK) { 57 nerr_log_error(err); 58 return -1; 59 } 60 break; 61 case 'c': 62 cs_file=optarg; 63 if ( verbose ) 64 printf ("Parsing %s\n", cs_file); 65 66 err = cs_parse_file (parse, cs_file); 67 if (err != STATUS_OK) { 68 err = nerr_pass(err); 69 nerr_log_error(err); 70 return -1; 71 } 72 break; 73 case 'v': 74 verbose=1; 75 break; 76 case 'H': 77 fprintf(stderr, "Usage: %s [-v] [-h <file.hdf>] [-c <file.cs>]\n", argv[0]); 78 fprintf(stderr, " -h <file.hdf> load hdf file file.hdf (multiple allowed)\n"); 79 fprintf(stderr, " -c <file.cs> load cs file file.cs (multiple allowed)\n"); 80 fprintf(stderr, " -v verbose output\n"); 81 return -1; 82 break; 83 } 84 85 86 err = cs_render(parse, NULL, output); 87 if (err != STATUS_OK) { 88 err = nerr_pass(err); 89 nerr_log_error(err); 90 return -1; 91 } 92 93 if (verbose) { 94 printf ("\n-----------------------\nCS DUMP\n"); 95 err = cs_dump(parse, NULL, output); 96 } 97 98 cs_destroy (&parse); 99 100 if (verbose) { 101 printf ("\n-----------------------\nHDF DUMP\n"); 102 hdf_dump (hdf, NULL); 103 } 104 105 return 0; 106 } 107