david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

Merge branch 'master' into iscsi-update

This commit is contained in:
Michael Brown 2007-07-08 22:06:33 +01:00
commit cc80750694
4 changed files with 52 additions and 13 deletions

View File

@ -29,18 +29,18 @@
* Increment reference count * Increment reference count
* *
* @v refcnt Reference counter, or NULL * @v refcnt Reference counter, or NULL
* @ret refcnt Reference counter
* *
* If @c refcnt is NULL, no action is taken. * If @c refcnt is NULL, no action is taken.
*/ */
void ref_get ( struct refcnt *refcnt ) { struct refcnt * ref_get ( struct refcnt *refcnt ) {
if ( ! refcnt ) if ( refcnt ) {
return; refcnt->refcnt++;
DBGC2 ( refcnt, "REFCNT %p incremented to %d\n",
refcnt->refcnt++; refcnt, refcnt->refcnt );
}
DBGC2 ( refcnt, "REFCNT %p incremented to %d\n", return refcnt;
refcnt, refcnt->refcnt );
} }
/** /**

View File

@ -279,6 +279,31 @@ size_t strspn(const char *s, const char *accept)
} }
#endif #endif
#ifndef __HAVE_ARCH_STRCSPN
/**
* strcspn - Calculate the length of the initial substring of @s which only
* contain letters not in @reject
* @s: The string to be searched
* @accept: The string to search for
*/
size_t strcspn(const char *s, const char *reject)
{
const char *p;
const char *r;
size_t count = 0;
for (p = s; *p != '\0'; ++p) {
for (r = reject; *r != '\0'; ++r) {
if (*p == *r)
return count;
}
++count;
}
return count;
}
#endif
#ifndef __HAVE_ARCH_STRPBRK #ifndef __HAVE_ARCH_STRPBRK
/** /**
* strpbrk - Find the first occurrence of a set of characters * strpbrk - Find the first occurrence of a set of characters
@ -541,9 +566,21 @@ void * memchr(const void *s, int c, size_t n)
#endif #endif
char * strdup(const char *s) { char * strndup(const char *s, size_t n)
char *new = malloc(strlen(s)+1); {
if (new) size_t len = strlen(s);
strcpy(new,s); char *new;
if (len>n)
len = n;
new = malloc(len+1);
if (new) {
new[len] = '\0';
memcpy(new,s,len);
}
return new; return new;
} }
char * strdup(const char *s) {
return strndup(s, ~((size_t)0));
}

View File

@ -38,7 +38,7 @@ struct refcnt {
void ( * free ) ( struct refcnt *refcnt ); void ( * free ) ( struct refcnt *refcnt );
}; };
extern void ref_get ( struct refcnt *refcnt ); extern struct refcnt * ref_get ( struct refcnt *refcnt );
extern void ref_put ( struct refcnt *refcnt ); extern void ref_put ( struct refcnt *refcnt );
#endif /* _GPXE_REFCNT_H */ #endif /* _GPXE_REFCNT_H */

View File

@ -30,6 +30,7 @@ char * strrchr(const char * s, int c);
size_t strlen(const char * s); size_t strlen(const char * s);
size_t strnlen(const char * s, size_t count); size_t strnlen(const char * s, size_t count);
size_t strspn(const char *s, const char *accept); size_t strspn(const char *s, const char *accept);
size_t strcspn(const char *s, const char *reject);
char * strpbrk(const char * cs,const char * ct); char * strpbrk(const char * cs,const char * ct);
char * strtok(char * s,const char * ct); char * strtok(char * s,const char * ct);
char * strsep(char **s, const char *ct); char * strsep(char **s, const char *ct);
@ -41,6 +42,7 @@ void * memscan(void * addr, int c, size_t size);
char * strstr(const char * s1,const char * s2); char * strstr(const char * s1,const char * s2);
void * memchr(const void *s, int c, size_t n); void * memchr(const void *s, int c, size_t n);
char * strdup(const char *s); char * strdup(const char *s);
char * strndup(const char *s, size_t n);
extern const char * strerror ( int errno ); extern const char * strerror ( int errno );