shared: Add function to extract fallback name from path
authorLucas De Marchi <lucas.demarchi@intel.com>
Wed, 14 Aug 2013 23:06:46 +0000 (20:06 -0300)
committerLucas De Marchi <lucas.demarchi@intel.com>
Mon, 19 Aug 2013 20:37:17 +0000 (17:37 -0300)
src/lib/Makefile.am
src/lib/shared/util.c [new file with mode: 0644]
src/lib/shared/util.h

index 8507888..a9d5b78 100644 (file)
@@ -31,4 +31,7 @@ liblightmediascanner_la_LIBADD = -ldl @SQLITE3_LIBS@ @LTLIBICONV@
 liblightmediascanner_la_LDFLAGS = -version-info @version_info@
 
 # shared sources/headers
+noinst_LTLIBRARIES = shared/libshared.la
+shared_libshared_la_SOURCES = shared/util.c
+
 noinst_HEADERS += shared/util.h
diff --git a/src/lib/shared/util.c b/src/lib/shared/util.c
new file mode 100644 (file)
index 0000000..6a27f50
--- /dev/null
@@ -0,0 +1,44 @@
+/**
+ * Copyright (C) 2013  Intel Corporation. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ * @author Lucas De Marchi <lucas.demarchi@intel.com>
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "util.h"
+
+struct lms_string_size str_extract_name_from_path(
+    const char *path, unsigned int pathlen, unsigned int baselen,
+    const struct lms_string_size *ext, struct lms_charset_conv *cs_conv)
+{
+    struct lms_string_size str;
+
+    str.len = pathlen - baselen - ext->len;
+    str.str = malloc(str.len + 1);
+    if (!str.str)
+        return (struct lms_string_size) { };
+    memcpy(str.str, path + baselen, str.len);
+    str.str[str.len] = '\0';
+    if (cs_conv)
+        lms_charset_conv(cs_conv, &str.str, &str.len);
+
+    return str;
+}
+
index 98989a2..98a2569 100644 (file)
@@ -24,6 +24,9 @@
 #include <inttypes.h>
 #include <stddef.h>
 
+#include <lightmediascanner_utils.h>
+#include <lightmediascanner_charset_conv.h>
+
 #define get_unaligned(ptr)                     \
     ({                                         \
        struct __attribute__((packed)) {        \
@@ -78,3 +81,8 @@ static inline uint16_t get_be16(const void *ptr)
 #else
 #error "Unknown byte order"
 #endif
+
+
+struct lms_string_size str_extract_name_from_path(
+    const char *path, unsigned int pathlen, unsigned int baselen,
+    const struct lms_string_size *ext, struct lms_charset_conv *cs_conv);