/**
* @file op_string.h
* general purpose C string handling declarations.
*
* @remark Copyright 2003 OProfile authors
* @remark Read the file COPYING
*
* @author John Levon
* @author Philippe Elie
*/
#ifndef OP_STRING_H
#define OP_STRING_H
#include <string.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @param s: input string
* @param len: len char to copy
*
* Allocate and copy len character from s to a newly allocated buffer then
* append a '\0' terminator. Return the newly allocated string
*/
char * op_xstrndup(char const * s, size_t len);
/**
* @param s: string to hash
*
* Generate a hash code from a string
*/
size_t op_hash_string(char const * s);
/**
* @param str: string to test
* @param prefix: prefix string
*
* return non zero if prefix parameters is a prefix of str
*/
int strisprefix(char const * str, char const * prefix);
/**
* @param c: input string
*
* return a pointer to the first location in c which is not a blank space
* where blank space are in " \t\n"
*/
char const * skip_ws(char const * c);
/**
* @param c: input string
*
* return a pointer to the first location in c which is a blank space
* where blank space are in " \t\n"
*/
char const * skip_nonws(char const * c);
/**
* @param c: input string
*
* return non zero if c string contains only blank space
* where blank space are in " \t\n"
*/
int empty_line(char const * c);
/**
* @param c: input string
*
* return non zero if c string is a comment. Comment are lines with optional
* blank space at left then a '#' character. Blank space are in " \t\n"
*/
int comment_line(char const * c);
#ifdef __cplusplus
}
#endif
#endif /* !OP_STRING_H */