home *** CD-ROM | disk | FTP | other *** search
/ Super Net 1 / SUPERNET_1.iso / PC / OTROS / EXTRAS / UUCODE / UUPC / TEST / UPC12ES4.ZIP / UUTRAF / str.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-16  |  1.4 KB  |  51 lines

  1. /*
  2.  *    str.h
  3.  *
  4.  * some stuff borrowed from C News and elsewhere...
  5.  */
  6.  
  7. #define SID_H    "@(#)head:str.h    1.2    92/04/20 09:53:14 (woods)"
  8. #define SID_NM    str_sccsid
  9. #include "sccsid.h"
  10.  
  11. /*
  12.  *    simple in-lining for older compilers...
  13.  */
  14. #ifndef FASTSTRCHR
  15. # define STRCHR(src, chr, dest)        (dest) = strchr(src, chr)
  16. #else
  17. # define STRCHR(src, chr, dest) \
  18.     for ((dest) = (src); *(dest) != '\0' && *(dest) != (chr); ++(dest)) \
  19.         ; \
  20.     if (*(dest) == '\0') \
  21.         (dest) = NULL        /* N.B.: missing semi-colon */
  22. #endif
  23.  
  24. /*
  25.  *    more useful things...
  26.  */
  27.  
  28. /*
  29.  * STREQ is an optimised strcmp(a,b)==0
  30.  */
  31. #define STREQ(s1, s2)    ((s1)[0] == (s2)[0] && strcmp(s1, s2) == 0)
  32. #define STRNE(s1, s2)    (!((s1)[0] == (s2)[0] && strcmp(s1, s2) == 0))
  33.  
  34. #define STRLT(s1, s2)    (strcmp(s1, s2) < 0)
  35. #define STRGT(s1, s2)    (strcmp(s1, s2) > 0)
  36. #define STRLE(s1, s2)    (strcmp(s1, s2) <= 0)
  37. #define STRGE(s1, s2)    (strcmp(s1, s2) >= 0)
  38.  
  39. /*
  40.  * STREQN is an optimised strncmp(a,b,n)==0; assumes n > 0
  41.  */
  42. #define STREQN(s1, s2, len)    ((s1)[0] == (s2)[0] && strncmp(s1, s2, len) == 0)
  43. #define STRNEN(s1, s2, len)    (!((s1)[0] == (s2)[0] && strncmp(s1, s2, len) == 0))
  44.  
  45. #define STRLTN(s1, s2, len)    (strncmp(s1, s2, len) < 0)
  46. #define STRGTN(s1, s2, len)    (strncmp(s1, s2, len) > 0)
  47. #define STRLEN(s1, s2, len)    (strncmp(s1, s2, len) <= 0)
  48. #define STRGEN(s1, s2, len)    (strncmp(s1, s2, len) >= 0)
  49.  
  50. /* see case.h for case-independent stuff */
  51.