/** * @file op_string.c * general purpose C string handling implementation. * * @remark Copyright 2003 OProfile authors * @remark Read the file COPYING * * @author John Levon * @author Philippe Elie */ #include #include "op_libiberty.h" char * op_xstrndup(char const * s, size_t len) { return xmemdup(s, len, len + 1); } size_t op_hash_string(char const * str) { size_t hash = 0; for (; *str; ++str) hash ^= (hash << 16) ^ (hash >> 8) ^ *str; return hash; } int strisprefix(char const * str, char const * prefix) { return strstr(str, prefix) == str; } char const * skip_ws(char const * c) { while (*c == ' ' || *c == '\t' || *c == '\n') ++c; return c; } char const * skip_nonws(char const * c) { while (*c && *c != ' ' && *c != '\t' && *c != '\n') ++c; return c; } int empty_line(char const * c) { return !*skip_ws(c); } int comment_line(char const * c) { return *skip_ws(c) == '#'; }