• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file op_string.c
3  * general purpose C string handling implementation.
4  *
5  * @remark Copyright 2003 OProfile authors
6  * @remark Read the file COPYING
7  *
8  * @author John Levon
9  * @author Philippe Elie
10  */
11 
12 #include <string.h>
13 #include "op_libiberty.h"
14 
15 
op_xstrndup(char const * s,size_t len)16 char * op_xstrndup(char const * s, size_t len)
17 {
18 	return xmemdup(s, len, len + 1);
19 }
20 
21 
op_hash_string(char const * str)22 size_t op_hash_string(char const * str)
23 {
24 	size_t hash = 0;
25 	for (; *str; ++str)
26 		hash ^= (hash << 16) ^ (hash >> 8) ^ *str;
27 	return hash;
28 }
29 
30 
strisprefix(char const * str,char const * prefix)31 int strisprefix(char const * str, char const * prefix)
32 {
33 	return strstr(str, prefix) == str;
34 }
35 
36 
skip_ws(char const * c)37 char const * skip_ws(char const * c)
38 {
39 	while (*c == ' ' || *c == '\t' || *c == '\n')
40 		++c;
41 	return c;
42 }
43 
44 
skip_nonws(char const * c)45 char const * skip_nonws(char const * c)
46 {
47 	while (*c && *c != ' ' && *c != '\t' && *c != '\n')
48 		++c;
49 	return c;
50 }
51 
52 
empty_line(char const * c)53 int empty_line(char const * c)
54 {
55 	return !*skip_ws(c);
56 }
57 
58 
comment_line(char const * c)59 int comment_line(char const * c)
60 {
61 	return *skip_ws(c) == '#';
62 }
63