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