From 2135ad723dce9654f1844ec4f76f06c9e240be98 Mon Sep 17 00:00:00 2001 From: Martin Pärtel Date: Fri, 8 Jul 2011 19:09:07 +0300 Subject: Initial commit to git. --- src/misc.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/misc.c (limited to 'src/misc.c') diff --git a/src/misc.c b/src/misc.c new file mode 100644 index 0000000..0280f61 --- /dev/null +++ b/src/misc.c @@ -0,0 +1,83 @@ +/* + Copyright 2006,2007,2008 Martin Pärtel + + This file is part of bindfs. + + bindfs is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + bindfs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with bindfs. If not, see . +*/ + +#include "misc.h" +#include +#include +#include + +int count_chars(const char *s, char ch) +{ + int count = 0; + assert(s != NULL); + while (*s != '\0') { + if (*s == ch) + ++count; + ++s; + } + return count; +} + +int count_substrs(const char *s, const char *sub) +{ + int count = 0; + int sublen = strlen(sub); + int left = strlen(s); + + assert(s != NULL && sub != NULL); + + while (left > sublen) { + if (strncmp(s, sub, sublen) == 0) + ++count; + --left; + ++s; + } + + return count; +} + +char *strdup_until(const char *s, const char *endchars) +{ + char *endloc = strpbrk(s, endchars); + char *ret; + if (!endloc) { + ret = malloc((strlen(s) + 1) * sizeof(char)); + strcpy(ret, s); + return ret; + } else { + ret = malloc((endloc - s + 1) * sizeof(char)); + memcpy(ret, s, (endloc - s) * sizeof(char)); + ret[(endloc - s)] = '\0'; + return ret; + } +} + +const char *my_basename(const char *path) +{ + const char *p; + + if (path == NULL) + return NULL; + + p = strrchr(path, '/'); + if (p != NULL) + return p + 1; + else + return path; +} -- cgit v1.2.3