This is no longer an empty page.
Enter page contents here or click cancel to leave it empty.
Does lynx render TAB< >?
#include <xterm.h>
#include <sys/types.h> #include <string.h> #include <ctype.h>
#include <xstrings.h>
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;
}