186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project/*
286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project * Copyright 2001-2004 Brandon Long
386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project * All Rights Reserved.
486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project *
586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project * ClearSilver Templating System
686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project *
786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project * This code is made available under the terms of the ClearSilver License.
886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project * http://www.clearsilver.net/license.hdf
986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project *
1086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project */
1186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
1286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#include "ClearSilver.h"
1386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
1486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#include <stdio.h>
1586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#include <string.h>
1686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
1786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectstatic NEOERR *output (void *ctx, char *s)
1886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project{
1986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  printf ("%s", s);
2086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  return STATUS_OK;
2186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project}
2286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
2386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint main (int argc, char *argv[])
2486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project{
2586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  NEOERR *err;
2686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  CSPARSE *parse;
2786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  HDF *hdf;
2886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  int verbose = 0;
2986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  char *hdf_file, *cs_file;
3086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
3186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (argc < 3)
3286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
3386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    ne_warn ("Usage: cstest [-v] <file.hdf> <file.cs>");
3486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    return -1;
3586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
3686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
3786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (!strcmp(argv[1], "-v"))
3886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
3986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    verbose = 1;
4086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    if (argc < 4)
4186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    {
4286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project      ne_warn ("Usage: cstest [-v] <file.hdf> <file.cs>");
4386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project      return -1;
4486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    }
4586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    hdf_file = argv[2];
4686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    cs_file = argv[3];
4786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
4886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  else
4986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
5086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    hdf_file = argv[1];
5186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    cs_file = argv[2];
5286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
5386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
5486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  err = hdf_init(&hdf);
5586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (err != STATUS_OK)
5686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
5786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    nerr_log_error(err);
5886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    return -1;
5986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
6086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  err = hdf_read_file(hdf, hdf_file);
6186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (err != STATUS_OK)
6286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
6386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    nerr_log_error(err);
6486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    return -1;
6586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
6686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
6786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  printf ("Parsing %s\n", cs_file);
6886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  err = cs_init (&parse, hdf);
6986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (err != STATUS_OK)
7086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
7186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    nerr_log_error(err);
7286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    return -1;
7386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
7486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  err = cgi_register_strfuncs(parse);
7586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (err != STATUS_OK)
7686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
7786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    nerr_log_error(err);
7886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    return -1;
7986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
8086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
8186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  err = cs_parse_file (parse, cs_file);
8286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (err != STATUS_OK)
8386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
8486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    err = nerr_pass(err);
8586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    nerr_log_error(err);
8686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    return -1;
8786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
8886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
8986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  err = cs_render(parse, NULL, output);
9086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (err != STATUS_OK)
9186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
9286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    err = nerr_pass(err);
9386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    nerr_log_error(err);
9486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    return -1;
9586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
9686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
9786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (verbose)
9886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
9986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    printf ("\n-----------------------\nCS DUMP\n");
10086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    err = cs_dump(parse, NULL, output);
10186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
10286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
10386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  cs_destroy (&parse);
10486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
10586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (verbose)
10686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  {
10786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    printf ("\n-----------------------\nHDF DUMP\n");
10886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    hdf_dump (hdf, NULL);
10986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  }
11086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  hdf_destroy(&hdf);
11186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
11286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
11386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  return 0;
11486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project}
115