test_si.c
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:2k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * test_si.c: A simple program to test si tokenizer
  3.  *
  4.  * By Aarno Syv鋘en for Wiral Ltd
  5.  */
  6. #include <stdio.h>
  7. #include "gwlib/gwlib.h"
  8. #include "gw/wap_push_si_compiler.h"
  9. Octstr *charset = NULL;
  10. Octstr *file_name = NULL;
  11. static void help (void)
  12. {
  13.     info(0, "Usage test_si [option] si_source");
  14.     info(0, "where options are");
  15.     info(0, "-h print this text");
  16.     info(0, "-f file output binary to the file");
  17.     info(0, "-c charset charset given by http");
  18.     info(0, "-v level set log level for stderr logging");
  19. }
  20. int main(int argc, char **argv)
  21. {
  22.     int opt,
  23.         file,
  24.         have_charset,
  25.         ret;
  26.     FILE *fp;
  27.     Octstr *output,
  28.            *si_doc,
  29.            *si_binary;
  30.     gwlib_init();
  31.     file = 0;
  32.     have_charset = 0;
  33.     fp = NULL;
  34.     while ((opt = getopt(argc, argv, "hf:c:v:")) != EOF) {
  35.         switch (opt) {
  36.         case 'h':
  37.     help();
  38.             exit(1);
  39. break;
  40.         case 'f':
  41.     file = 1;
  42.     file_name = octstr_create(optarg);
  43.             fp = fopen(optarg, "a");
  44.             if (fp == NULL)
  45.         panic(0, "Cannot open output file");
  46. break;
  47.         case 'c':
  48.     have_charset = 1;
  49.     charset = octstr_create(optarg);
  50. break;
  51.         case 'v':
  52.     log_set_output_level(atoi(optarg));
  53. break;
  54.         case '?':
  55.         default:
  56.     error(0, "Invalid option %c", opt);
  57.             help();
  58.             panic(0, "Stopping");
  59. break;
  60.         }
  61.     }
  62.     if (optind >= argc) {
  63.         error(0, "Missing arguments");
  64.         help();
  65.         panic(0, "Stopping");
  66.     }
  67.     si_doc = octstr_read_file(argv[optind]);
  68.     if (si_doc == NULL)
  69.         panic(0, "Cannot read the si document");
  70.     if (!have_charset)
  71.         charset = NULL;
  72.     ret = si_compile(si_doc, charset, &si_binary);
  73.     output = octstr_format("%s", "si compiler returned %dn", ret);
  74.     if (ret == 0) {
  75.         if (fp == NULL)
  76.     fp = stdout;
  77.         octstr_append(output, octstr_imm("content beingn"));
  78.         octstr_append(output, si_binary);
  79.     }
  80.     if (file)
  81.         octstr_pretty_print(fp, output);
  82.     else {
  83.         debug("test.si", 0, "si binary was");
  84.         octstr_dump(si_binary, 0);
  85.     }
  86.     if (have_charset)
  87.         octstr_destroy(charset);
  88.     if (file) {
  89.         fclose(fp);
  90.         octstr_destroy(file_name);
  91.     }
  92.     
  93.     octstr_destroy(si_doc);
  94.     octstr_destroy(si_binary);
  95.     octstr_destroy(output);
  96.     gwlib_shutdown();
  97.     return 0;
  98. }