Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1514511
  • 博文数量: 129
  • 博客积分: 1449
  • 博客等级: 上尉
  • 技术积分: 3048
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-24 18:36
文章分类

全部博文(129)

文章存档

2015年(3)

2014年(20)

2013年(65)

2012年(41)

分类: C/C++

2013-01-09 08:01:07

2个文件, 参考 uboot中的代码

1. ctype.h

点击(此处)折叠或打开

  1. #ifndef _LINUX_CTYPE_H
  2. #define _LINUX_CTYPE_H

  3. /*
  4.  * This ctype does not handle EOF like the standard C
  5.  * library is required to.
  6.  */

  7. #define _U    0x01    /* upper */
  8. #define _L    0x02    /* lower */
  9. #define _D    0x04    /* digit */
  10. #define _C    0x08    /* cntrl */
  11. #define _P    0x10    /* punct */
  12. #define _S    0x20    /* white space (space/lf/tab) */
  13. #define _X    0x40    /* hex digit */
  14. #define _SP    0x80    /* hard space (0x20) */

  15. extern unsigned char _ctype[];

  16. #define __ismask(x) (_ctype[(int)(unsigned char)(x)])

  17. #define isalnum(c)    ((__ismask(c)&(_U|_L|_D)) != 0)
  18. #define isalpha(c)    ((__ismask(c)&(_U|_L)) != 0)
  19. #define iscntrl(c)    ((__ismask(c)&(_C)) != 0)
  20. #define isdigit(c)    ((__ismask(c)&(_D)) != 0)
  21. #define isgraph(c)    ((__ismask(c)&(_P|_U|_L|_D)) != 0)
  22. #define islower(c)    ((__ismask(c)&(_L)) != 0)
  23. #define isprint(c)    ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
  24. #define ispunct(c)    ((__ismask(c)&(_P)) != 0)
  25. #define isspace(c)    ((__ismask(c)&(_S)) != 0)
  26. #define isupper(c)    ((__ismask(c)&(_U)) != 0)
  27. #define isxdigit(c)    ((__ismask(c)&(_D|_X)) != 0)

  28. #define isascii(c) (((unsigned char)(c))<=0x7f)
  29. #define toascii(c) (((unsigned char)(c))&0x7f)

  30. static inline unsigned char __tolower(unsigned char c)
  31. {
  32.     if (isupper(c))
  33.         c -= 'A'-'a';
  34.     return c;
  35. }

  36. static inline unsigned char __toupper(unsigned char c)
  37. {
  38.     if (islower(c))
  39.         c -= 'a'-'A';
  40.     return c;
  41. }

  42. #define tolower(c) __tolower(c)
  43. #define toupper(c) __toupper(c)

  44. #endif

2. ctype.c

点击(此处)折叠或打开

  1. #include <linux/ctype.h>

  2. unsigned char _ctype[] = {
  3. _C,_C,_C,_C,_C,_C,_C,_C,            /* 0-7 */
  4. _C,_C|_S,_C|_S,_C|_S,_C|_S,_C|_S,_C,_C,        /* 8-15 */
  5. _C,_C,_C,_C,_C,_C,_C,_C,            /* 16-23 */
  6. _C,_C,_C,_C,_C,_C,_C,_C,            /* 24-31 */
  7. _S|_SP,_P,_P,_P,_P,_P,_P,_P,            /* 32-39 */
  8. _P,_P,_P,_P,_P,_P,_P,_P,            /* 40-47 */
  9. _D,_D,_D,_D,_D,_D,_D,_D,            /* 48-55 */
  10. _D,_D,_P,_P,_P,_P,_P,_P,            /* 56-63 */
  11. _P,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U,    /* 64-71 */
  12. _U,_U,_U,_U,_U,_U,_U,_U,            /* 72-79 */
  13. _U,_U,_U,_U,_U,_U,_U,_U,            /* 80-87 */
  14. _U,_U,_U,_P,_P,_P,_P,_P,            /* 88-95 */
  15. _P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L,    /* 96-103 */
  16. _L,_L,_L,_L,_L,_L,_L,_L,            /* 104-111 */
  17. _L,_L,_L,_L,_L,_L,_L,_L,            /* 112-119 */
  18. _L,_L,_L,_P,_P,_P,_P,_C,            /* 120-127 */
  19. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        /* 128-143 */
  20. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        /* 144-159 */
  21. _S|_SP,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P, /* 160-175 */
  22. _P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P, /* 176-191 */
  23. _U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U, /* 192-207 */
  24. _U,_U,_U,_U,_U,_U,_U,_P,_U,_U,_U,_U,_U,_U,_U,_L, /* 208-223 */
  25. _L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L, /* 224-239 */
  26. _L,_L,_L,_L,_L,_L,_L,_P,_L,_L,_L,_L,_L,_L,_L,_L}; /* 240-255 */


阅读(2064) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~