X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Finclude%2Flibcfs%2Flibcfs_string.h;h=238be3502bdacb030c198f9df38364ab1abb6f0d;hb=05d13ca333a3158a98f0c0e048a85564c6b9ed88;hp=1f8771d89cb7fe4c14dad310e187706b2a3217ca;hpb=19ec037c0a9427250b87a69c53beb153d533ab1c;p=fs%2Flustre-release.git diff --git a/libcfs/include/libcfs/libcfs_string.h b/libcfs/include/libcfs/libcfs_string.h index 1f8771d..238be35 100644 --- a/libcfs/include/libcfs/libcfs_string.h +++ b/libcfs/include/libcfs/libcfs_string.h @@ -27,7 +27,7 @@ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, Whamcloud, Inc. + * Copyright (c) 2012, 2014, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -44,15 +44,11 @@ #define __LIBCFS_STRING_H__ /* libcfs_string.c */ +char *cfs_strrstr(const char *haystack, const char *needle); /* Convert a text string to a bitmask */ int cfs_str2mask(const char *str, const char *(*bit2str)(int bit), int *oldmask, int minmask, int allmask); -/* Allocate space for and copy an existing string. - * Must free with cfs_free(). - */ -char *cfs_strdup(const char *str, u_int32_t flags); - /* safe vsnprintf */ int cfs_vsnprintf(char *buf, size_t size, const char *fmt, va_list args); @@ -77,32 +73,17 @@ struct cfs_range_expr { /* * Link to cfs_expr_list::el_exprs. */ - cfs_list_t re_link; - __u32 re_lo; - __u32 re_hi; - __u32 re_stride; + struct list_head re_link; + __u32 re_lo; + __u32 re_hi; + __u32 re_stride; }; struct cfs_expr_list { - cfs_list_t el_link; - cfs_list_t el_exprs; + struct list_head el_link; + struct list_head el_exprs; }; -static inline int -cfs_iswhite(char c) -{ - switch (c) { - case ' ': - case '\t': - case '\n': - case '\r': - return 1; - default: - break; - } - return 0; -} - char *cfs_trimwhite(char *str); int cfs_gettok(struct cfs_lstr *next, char delim, struct cfs_lstr *res); int cfs_str2num_check(char *str, int nob, unsigned *num, @@ -110,19 +91,24 @@ int cfs_str2num_check(char *str, int nob, unsigned *num, int cfs_range_expr_parse(struct cfs_lstr *src, unsigned min, unsigned max, int single_tok, struct cfs_range_expr **expr); int cfs_expr_list_match(__u32 value, struct cfs_expr_list *expr_list); +int cfs_expr_list_print(char *buffer, int count, + struct cfs_expr_list *expr_list); int cfs_expr_list_values(struct cfs_expr_list *expr_list, int max, __u32 **values); +static inline void +cfs_expr_list_values_free(__u32 *values, int num) +{ + /* This array is allocated by LIBCFS_ALLOC(), so it shouldn't be freed + * by OBD_FREE() if it's called by module other than libcfs & LNet, + * otherwise we will see fake memory leak */ + LIBCFS_FREE(values, num * sizeof(values[0])); +} + void cfs_expr_list_free(struct cfs_expr_list *expr_list); -void cfs_expr_list_print(struct cfs_expr_list *expr_list); int cfs_expr_list_parse(char *str, int len, unsigned min, unsigned max, struct cfs_expr_list **elpp); -void cfs_expr_list_free_list(cfs_list_t *list); -int cfs_ip_addr_parse(char *str, int len, cfs_list_t *list); -int cfs_ip_addr_match(__u32 addr, cfs_list_t *list); -void cfs_ip_addr_free(cfs_list_t *list); - -#ifdef __KERNEL__ -#define strtoul(str, endp, base) simple_strtoul(str, endp, base) -#endif +void cfs_expr_list_free_list(struct list_head *list); +int cfs_ip_addr_parse(char *str, int len, struct list_head *list); +int cfs_ip_addr_match(__u32 addr, struct list_head *list); #endif