110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file op_string.h
310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * general purpose C string handling declarations.
410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2003 OProfile authors
610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Read the file COPYING
710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author John Levon
910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Philippe Elie
1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef OP_STRING_H
1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_STRING_H
1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <string.h>
1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifdef __cplusplus
1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectextern "C" {
1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif
2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param  s: input string
2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param len: len char to copy
2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Allocate and copy len character from s to a newly allocated buffer then
2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * append a '\0' terminator. Return the newly allocated string
2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar * op_xstrndup(char const * s, size_t len);
2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param  s: string to hash
3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Generate a hash code from a string
3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectsize_t op_hash_string(char const * s);
3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param str: string to test
3910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param prefix: prefix string
4010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
4110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * return non zero if prefix parameters is a prefix of str
4210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
4310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectint strisprefix(char const * str, char const * prefix);
4410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
4510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
4610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param c: input string
4710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
4810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * return a pointer to the first location in c which is not a blank space
4910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * where blank space are in " \t\n"
5010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
5110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar const * skip_ws(char const * c);
5210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
5310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
5410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param c: input string
5510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
5610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * return a pointer to the first location in c which is a blank space
5710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * where blank space are in " \t\n"
5810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
5910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar const * skip_nonws(char const * c);
6010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
6110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
6210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param c: input string
6310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
6410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * return non zero if c string contains only blank space
6510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * where blank space are in " \t\n"
6610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
6710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectint empty_line(char const * c);
6810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
6910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
7010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param c: input string
7110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
7210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * return non zero if c string is a comment. Comment are lines with optional
7310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * blank space at left then a '#' character. Blank space are in " \t\n"
7410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
7510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectint comment_line(char const * c);
7610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
7710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifdef __cplusplus
7810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project}
7910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif
8010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
8110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif /* !OP_STRING_H */
82