common.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:1k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*
  2.  * This file contains some public functions
  3.  * usable for both the backend and the frontend.
  4.  * Tatsuo Ishii
  5.  * $Id: common.c,v 1.5.2.1 1999/08/02 05:25:11 scrappy Exp $ */
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #ifdef WIN32
  9. #include "win32.h"
  10. #else
  11. #include <unistd.h>
  12. #endif
  13. #include "mb/pg_wchar.h"
  14. /*
  15.  * convert encoding char to encoding symbol value.
  16.  * case is ignored.
  17.  * if there's no valid encoding, returns -1
  18.  */
  19. int
  20. pg_char_to_encoding(const char *s)
  21. {
  22. pg_encoding_conv_tbl *p = pg_conv_tbl;
  23. if (!s)
  24. return (-1);
  25. for (; p->encoding >= 0; p++)
  26. {
  27. if (!strcasecmp(s, p->name))
  28. break;
  29. }
  30. return (p->encoding);
  31. }
  32. /*
  33.  * check to see if encoding name is valid
  34.  */
  35. int
  36. pg_valid_client_encoding(const char *name)
  37. {
  38. return (pg_char_to_encoding(name));
  39. }
  40. /*
  41.  * find encoding table entry by encoding
  42.  */
  43. pg_encoding_conv_tbl *
  44. pg_get_encent_by_encoding(int encoding)
  45. {
  46. pg_encoding_conv_tbl *p = pg_conv_tbl;
  47. for (; p->encoding >= 0; p++)
  48. {
  49. if (p->encoding == encoding)
  50. return (p);
  51. }
  52. return (0);
  53. }
  54. /*
  55.  * convert encoding symbol to encoding char.
  56.  * if there's no valid encoding symbol, returns ""
  57.  */
  58. const char *
  59. pg_encoding_to_char(int encoding)
  60. {
  61. pg_encoding_conv_tbl *p = pg_get_encent_by_encoding(encoding);
  62. if (!p)
  63. return ("");
  64. return (p->name);
  65. }
  66. /* returns the byte length of a multi-byte word for an encoding */
  67. int
  68. pg_encoding_mblen(int encoding, const unsigned char *mbstr)
  69. {
  70. return ((*pg_wchar_table[encoding].mblen) (mbstr));
  71. }