/xenix/draft/zstr.c

https://github.com/jhallen/joes-sandbox · C · 85 lines · 74 code · 11 blank · 0 comment · 22 complexity · 586408cc71b128fbb2fcd88d23840da8 MD5 · raw file

  1. #include "heap.h"
  2. #include "zstr.h"
  3. int toup(a) { return (a>='a' && a<='z')?a+'A'-'a':a; }
  4. unsigned Umin(a,b) unsigned a,b; { return a<b?a:b; }
  5. unsigned Umax(a,b) unsigned a,b; { return a>b?a:b; }
  6. int Imin(a,b) { return a<b?a:b; }
  7. int Imax(a,b) { return a>b?a:b; }
  8. int Iabs(a) { return a>=0?a:-a; }
  9. int cword(c)
  10. {
  11. return c>='A' && c<='Z' || c>='a' && c<='z' || c>='0' && c<='9' || c=='_';
  12. }
  13. int cwhitel(c)
  14. {
  15. return c==' ' || c=='\t' || c=='\n';
  16. }
  17. int cwhite(c)
  18. {
  19. return c==' ' || c=='\t';
  20. }
  21. int zlen(s)
  22. char *s;
  23. {
  24. char *os=s;
  25. while(*s) ++s;
  26. return s-os;
  27. }
  28. char *zcpy(d,s)
  29. char *d,*s;
  30. {
  31. char *od=d;
  32. while(*d++= *s++);
  33. return od;
  34. }
  35. char *zcat(d,s)
  36. char *d,*s;
  37. {
  38. char *od=d;
  39. while(*d) ++d;
  40. while(*d++= *s++);
  41. return od;
  42. }
  43. char *zdup(s)
  44. char *s;
  45. {
  46. return zcpy((char *)malloc(zlen(s)+1),s);
  47. }
  48. int zcmp(l,r)
  49. char *l, *r;
  50. {
  51. while(*l && *l==*r) ++l, ++r;
  52. if(*l>*r) return 1;
  53. if(*l<*r) return -1;
  54. return 0;
  55. }
  56. int fields(s,fields,sep)
  57. char *s, **fields, sep;
  58. {
  59. int y=1;
  60. fields[0]=s;
  61. while(*s)
  62. {
  63. if(*s==sep) fields[y++]=s+1, *s=0;
  64. ++s;
  65. }
  66. return y;
  67. }
  68. int nfields(s,sep)
  69. char *s, sep;
  70. {
  71. int y=1;
  72. while(*s) if(*s++==sep) ++y;
  73. return y;
  74. }