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

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * wsp.c - Parts of WSP shared between session oriented and connectionless mode
  3.  */
  4. #include <string.h>
  5. #include "gwlib/gwlib.h"
  6. #include "wsp.h"
  7. #include "wsp_pdu.h"
  8. #include "wsp_headers.h"
  9. #include "wsp_strings.h"
  10. /***********************************************************************
  11.  * Public functions
  12.  */
  13. /* Convert HTTP status codes to WSP status codes according
  14.  * to WSP Table 36, Status Code Assignments. */
  15. long wsp_convert_http_status_to_wsp_status(long http_status) {
  16. long hundreds, singles;
  17. /*
  18.  * The table is regular, and can be expected to stay regular in
  19.  * future versions of WSP.  The status value is read as XYY,
  20.  * so that X is the first digit and Y is the value of the
  21.  * second two digits.  This is encoded as a hex value 0xAB,
  22.  * where A == X and B == YY.
  23.  * This limits YY to the range 0-15, so an exception is made
  24.  * to allow larger YY values when X is 4.  X value 5 is moved up
  25.  * to A value 6 to allow more room for YY when X is 4.
  26.  */
  27. hundreds = http_status / 100;
  28. singles = http_status % 100;
  29. if ((hundreds == 4 && singles > 31) ||
  30.     (hundreds != 4 && singles > 15) ||
  31.     hundreds < 1 || hundreds > 5)
  32. goto bad_status;
  33. if (hundreds > 4)
  34. hundreds++;
  35. return hundreds * 16 + singles;
  36. bad_status:
  37. error(0, "WSP: Unknown status code used internally. Oops.");
  38. return 0x60; /* Status 500, or "Internal Server Error" */
  39. }