ctype.c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* Copyright (C) 1995,1996 Robert de Bath <rdebath@cix.compulink.co.uk>
  2. * This file is part of the Linux-8086 C library and is distributed
  3. * under the GNU Library General Public License.
  4. */
  5. /*
  6. * CTYPE.C Character classification and conversion
  7. */
  8. #include <ctype.h>
  9. #undef toupper
  10. #undef tolower
  11. unsigned char __ctype[128] = {
  12. __CT_c, __CT_c, __CT_c, __CT_c, /* 0x00..0x03 */
  13. __CT_c, __CT_c, __CT_c, __CT_c, /* 0x04..0x07 */
  14. __CT_c, __CT_c | __CT_s, __CT_c | __CT_s, __CT_c | __CT_s, /* 0x08..0x0B */
  15. __CT_c | __CT_s, __CT_c | __CT_s, __CT_c, __CT_c, /* 0x0C..0x0F */
  16. __CT_c, __CT_c, __CT_c, __CT_c, /* 0x10..0x13 */
  17. __CT_c, __CT_c, __CT_c, __CT_c, /* 0x14..0x17 */
  18. __CT_c, __CT_c, __CT_c, __CT_c, /* 0x18..0x1B */
  19. __CT_c, __CT_c, __CT_c, __CT_c, /* 0x1C..0x1F */
  20. __CT_s, __CT_p, __CT_p, __CT_p, /* 0x20..0x23 */
  21. __CT_p, __CT_p, __CT_p, __CT_p, /* 0x24..0x27 */
  22. __CT_p, __CT_p, __CT_p, __CT_p, /* 0x28..0x2B */
  23. __CT_p, __CT_p, __CT_p, __CT_p, /* 0x2C..0x2F */
  24. __CT_d | __CT_x, __CT_d | __CT_x, __CT_d | __CT_x, __CT_d | __CT_x, /* 0x30..0x33 */
  25. __CT_d | __CT_x, __CT_d | __CT_x, __CT_d | __CT_x, __CT_d | __CT_x, /* 0x34..0x37 */
  26. __CT_d | __CT_x, __CT_d | __CT_x, __CT_p, __CT_p, /* 0x38..0x3B */
  27. __CT_p, __CT_p, __CT_p, __CT_p, /* 0x3C..0x3F */
  28. __CT_p, __CT_u | __CT_x, __CT_u | __CT_x, __CT_u | __CT_x, /* 0x40..0x43 */
  29. __CT_u | __CT_x, __CT_u | __CT_x, __CT_u | __CT_x, __CT_u, /* 0x44..0x47 */
  30. __CT_u, __CT_u, __CT_u, __CT_u, /* 0x48..0x4B */
  31. __CT_u, __CT_u, __CT_u, __CT_u, /* 0x4C..0x4F */
  32. __CT_u, __CT_u, __CT_u, __CT_u, /* 0x50..0x53 */
  33. __CT_u, __CT_u, __CT_u, __CT_u, /* 0x54..0x57 */
  34. __CT_u, __CT_u, __CT_u, __CT_p, /* 0x58..0x5B */
  35. __CT_p, __CT_p, __CT_p, __CT_p, /* 0x5C..0x5F */
  36. __CT_p, __CT_l | __CT_x, __CT_l | __CT_x, __CT_l | __CT_x, /* 0x60..0x63 */
  37. __CT_l | __CT_x, __CT_l | __CT_x, __CT_l | __CT_x, __CT_l, /* 0x64..0x67 */
  38. __CT_l, __CT_l, __CT_l, __CT_l, /* 0x68..0x6B */
  39. __CT_l, __CT_l, __CT_l, __CT_l, /* 0x6C..0x6F */
  40. __CT_l, __CT_l, __CT_l, __CT_l, /* 0x70..0x73 */
  41. __CT_l, __CT_l, __CT_l, __CT_l, /* 0x74..0x77 */
  42. __CT_l, __CT_l, __CT_l, __CT_p, /* 0x78..0x7B */
  43. __CT_p, __CT_p, __CT_p, __CT_c /* 0x7C..0x7F */
  44. };
  45. int toupper(c)
  46. int c;
  47. {
  48. return (islower(c) ? (c ^ 0x20) : (c));
  49. }
  50. int tolower(c)
  51. int c;
  52. {
  53. return (isupper(c) ? (c ^ 0x20) : (c));
  54. }