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

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * check_date.c - checking of date handling functions
  3.  */
  4. #include <string.h>
  5. #include "gwlib/gwlib.h"
  6. /* Format of test_dates file:
  7.  * Valid date strings, one per line.  If a date string is valid
  8.  * but not in the preferred HTTP format, put the preferred version 
  9.  * after it on the same line.  Separate them with a tab.
  10.  */
  11. static void check_reversible(void)
  12. {
  13.     Octstr *dates;
  14.     long pos, endpos, tabpos;
  15.     Octstr *date, *canondate;
  16.     long timeval;
  17.     dates = octstr_read_file("checks/test_dates");
  18.     if (dates == NULL)
  19.         return;
  20.     for (pos = 0; ; pos = endpos + 1) {
  21.         endpos = octstr_search_char(dates, 'n', pos);
  22.         if (endpos < 0)
  23.             break;
  24.         tabpos = octstr_search_char(dates, 't', pos);
  25.         if (tabpos >= 0 && tabpos < endpos) {
  26.             date = octstr_copy(dates, pos, tabpos - pos);
  27.             canondate = octstr_copy(dates, tabpos + 1, endpos - tabpos - 1);
  28.         } else {
  29.             date = octstr_copy(dates, pos, endpos - pos);
  30.             canondate = octstr_duplicate(date);
  31.         }
  32.         timeval = date_parse_http(date);
  33.         if (timeval < 0)
  34.             warning(0, "Could not parse date "%s"", octstr_get_cstr(date));
  35.         else {
  36.             Octstr *newdate;
  37.             newdate = date_format_http(timeval);
  38.             if (octstr_compare(newdate, canondate) != 0) {
  39.                 warning(0, "Date not reversible: "%s" becomes "%s"",
  40.                         octstr_get_cstr(date), octstr_get_cstr(newdate));
  41.             }
  42.             octstr_destroy(newdate);
  43.         }
  44.         octstr_destroy(date);
  45.         octstr_destroy(canondate);
  46.     }
  47.     octstr_destroy(dates);
  48. }
  49. int main(void)
  50. {
  51.     gwlib_init();
  52.     log_set_output_level(GW_INFO);
  53.     check_reversible();
  54.     gwlib_shutdown();
  55.     return 0;
  56. }