This is no longer an empty page. Enter page contents here or click cancel to leave it empty. Does lynx render TAB< >? #include #include #include #include #include char * x_basename(char *name) { char *cp; cp = strrchr(name, '/'); #ifdef __UNIXOS2__ if (cp == 0) cp = strrchr(name, '\\'); #endif return (cp ? cp + 1 : name); } char * x_getenv(const char *name) { return x_nonempty(getenv(name)); } /* * Check if the given string is nonnull/nonempty. If so, return a pointer * to the beginning of its content, otherwise return null. */ char * x_nonempty(char *s) { if (s != 0) { if (*s == '\0') { s = 0; } else { s = x_skip_blanks(s); if (*s == '\0') s = 0; } } return s; } char * x_skip_blanks(char *s) { while (isspace(CharOf(*s))) ++s; return s; } char * x_skip_nonblanks(char *s) { while (*s != '\0' && !isspace(CharOf(*s))) ++s; return s; } int x_strcasecmp(const char *s1, const char *s2) { unsigned len = strlen(s1); if (len != strlen(s2)) return 1; return x_strncasecmp(s1, s2, len); } int x_strncasecmp(const char *s1, const char *s2, unsigned n) { while (n-- != 0) { int c1 = toupper(CharOf(*s1)); int c2 = toupper(CharOf(*s2)); if (c1 != c2) return 1; if (c1 == 0) break; s1++, s2++; } return 0; } /* * Allocates a copy of a string */ char * x_strdup(const char *s) { char *result = 0; if (s != 0) { char *t = CastMallocN(char, strlen(s)); if (t != 0) { strcpy(t, s); } result = t; } return result; } /* * Returns a pointer to the first occurrence of s2 in s1, * or NULL if there are none. */ char * x_strindex(char *s1, char *s2) { char *s3; size_t s2len = strlen(s2); while ((s3 = strchr(s1, *s2)) != NULL) { if (strncmp(s3, s2, s2len) == 0) return (s3); s1 = ++s3; } return (NULL); } /* * Trims leading/trailing spaces from a copy of the string. */ char * x_strtrim(char *s) { char *base = s; char *d; if (s != 0 && *s != '\0') { char *t = x_strdup(base); s = t; d = s; s = x_skip_blanks(s); while ((*d++ = *s++) != '\0') { ; } if (*t != '\0') { s = t + strlen(t); while (s != t && isspace(CharOf(s[-1]))) { *--s = '\0'; } } base = t; } return base; }