diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-06-29 00:46:00 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-06-29 00:46:00 +0000 |
commit | 64ee4a426e9cf9ab8971cdbf01533ee7cc45a731 (patch) | |
tree | 4b26325f413758fe2c09518162a6af72fce70ce5 /tools/lib/sys_string.h | |
parent | 3c7677d95ef9641c815e21605ecbe06542bc9053 (diff) | |
parent | db4a9059711ea96228672ad84be8b61d76318b22 (diff) | |
download | xen-64ee4a426e9cf9ab8971cdbf01533ee7cc45a731.tar.gz xen-64ee4a426e9cf9ab8971cdbf01533ee7cc45a731.tar.bz2 xen-64ee4a426e9cf9ab8971cdbf01533ee7cc45a731.zip |
bitkeeper revision 1.1027 (40e0bbc8sBxtaVRGq2q3E0tn7E4oUg)
Merge scramble.cl.cam.ac.uk:/auto/groups/xeno/BK/xeno.bk
into scramble.cl.cam.ac.uk:/local/scratch/kaf24/hp.bk
Diffstat (limited to 'tools/lib/sys_string.h')
-rw-r--r-- | tools/lib/sys_string.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/tools/lib/sys_string.h b/tools/lib/sys_string.h new file mode 100644 index 0000000000..f39935f669 --- /dev/null +++ b/tools/lib/sys_string.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2001 - 2004 Mike Wray <mike.wray@hp.com> + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _XEN_LIB_SYS_STRING_H_ +#define _XEN_LIB_SYS_STRING_H_ +/** @file + * Replacement for standard string includes. + * Works in user or kernel code. + */ +/*============================================================================*/ +#ifdef __KERNEL__ + +#include <linux/config.h> +#include <linux/kernel.h> +#include <linux/string.h> +#include <linux/types.h> +#include <stdarg.h> +#include "allocate.h" + +#if 0 +static inline int tolower(int c){ + return (c>='A' && c<='Z' ? (c-'A')+'a' : c); +} +#endif + +static inline int isalpha(int c){ + return (c>='A' && c<='Z') || (c>='a' && c<='z'); +} + +static inline int isdigit(int c){ + return (c>='0' && c<='9'); +} + +#if 0 +static inline int strcasecmp(const char *s1, const char *s2){ + int c1, c2; + + do { + c1 = tolower(*s1++); + c2 = tolower(*s2++); + } while (c1 && c1 == c2); + return c1 - c2; +} +#endif + +static inline char * strdup(const char *s){ + int n = (s ? 1+strlen(s) : 0); + char *copy = (n ? allocate(n) : NULL); + if(copy){ + strcpy(copy, s); + } + return copy; +} + +/*============================================================================*/ +#else +#include <string.h> +#include <stdio.h> + +#ifndef _GNU_SOURCE +static inline size_t strnlen(const char *s, size_t n){ + int k = 0; + if(s){ + for(k=0; *s && k<n; s++, k++){} + } + return k; +} +#endif + +#endif +/*============================================================================*/ + +extern int convert_atoul(const char *s, unsigned long *v); +extern int path_concat(char *s, char *t, char **val); + +#endif /* !_XEN_LIB_SYS_STRING_H_ */ |