37 lines
788 B
C
37 lines
788 B
C
/*
|
|
* Name: strstr and strdup
|
|
*
|
|
* These are the standard library utilities. We define them here for
|
|
* systems that don't have them.
|
|
*/
|
|
|
|
#ifndef HAVE_STRSTR
|
|
char *strstr(char *s1, char *s2)
|
|
{ /* from libiberty */
|
|
char *p;
|
|
int len = strlen(s2);
|
|
|
|
if (*s2 == '\0') /* everything matches empty string */
|
|
return s1;
|
|
for (p = s1; (p = strchr(p, *s2)) != NULL; p = strchr(p + 1, *s2)) {
|
|
if (strncmp(p, s2, len) == 0)
|
|
return (p);
|
|
}
|
|
return NULL;
|
|
}
|
|
#endif
|
|
|
|
#ifndef HAVE_STRDUP
|
|
char *strdup(char *s)
|
|
{
|
|
char *retval;
|
|
|
|
retval = (char *) malloc(strlen(s) + 1);
|
|
if (retval == NULL) {
|
|
perror("boa: out of memory in strdup");
|
|
exit(1);
|
|
}
|
|
return strcpy(retval, s);
|
|
}
|
|
#endif
|