rename basename() -> aacenc_basename() and move to compat layer
authornu774 <honeycomb77@gmail.com>
Thu, 10 Jan 2013 02:14:16 +0000 (11:14 +0900)
committernu774 <honeycomb77@gmail.com>
Thu, 10 Jan 2013 02:14:16 +0000 (11:14 +0900)
src/compat.h
src/compat_posix.c
src/compat_win32.c
src/main.c

index f20f03fb86cecc610a03c38b51c65bc3a27ecd13..07deb5bf71d54efb3d96ccaae6a044fab2695db0 100644 (file)
@@ -20,5 +20,6 @@ FILE *aacenc_fopen(const char *name, const char *mode);
 void aacenc_getmainargs(int *argc, char ***argv);
 char *aacenc_to_utf8(const char *s);
 int aacenc_fprintf(FILE *fp, const char *fmt, ...);
+const char *aacenc_basename(const char *path);
 
 #endif
index 1b8f14ae71e73e22793876f495b7931cfacff674..e101ff70fa3fdfccab558d1e47e5fc167edf869e 100644 (file)
@@ -48,6 +48,16 @@ int aacenc_fprintf(FILE *fp, const char *fmt, ...)
     return cnt;
 }
 
+/*
+ * Different from POSIX basename() when path ends with /.
+ * Since we use this only for a regular file, the difference doesn't matter.
+ */
+const char *aacenc_basename(const char *path)
+{
+    const char *p = strrchr(path, '/');
+    return p ? p + 1: path;
+}
+
 #ifndef HAVE_ICONV
 char *aacenc_to_utf8(const char *s)
 {
index a68fa3f3341d1c7565ae10f8ec98aaa86e30d1d0..6802730b0e41b1079d73cddd73d34b9dfa04f7a0 100644 (file)
@@ -126,3 +126,15 @@ int aacenc_fprintf(FILE *fp, const char *fmt, ...)
     return cnt;
 }
 
+const char *aacenc_basename(const char *path)
+{
+/*
+ * Since path is encoded with UTF-8, naive usage of strrchr() shoule be safe.
+ */
+    const char *p = strrchr(path, '/');
+    const char *q = strrchr(path, '\\');
+    const char *r = strrchr(path, ':');
+    if (q > p) p = q;
+    if (r > p) p = r;
+    return p ? p + 1 : path;
+}
index 4ee94871aa99cce8ad07e30d3572f8a46f0dd36b..458fe254da3877ecfa0e0c6553a194401187ee27 100644 (file)
@@ -628,17 +628,6 @@ int finalize_m4a(m4af_writer_t *m4af, const aacenc_param_ex_t *params,
     return 0;
 }
 
-static
-const char *basename(const char *filename)
-{
-    char *p = strrchr(filename, '/');
-#ifdef _WIN32
-    char *q = strrchr(filename, '\\');
-    if (p < q) p = q;
-#endif
-    return p ? p + 1 : filename;
-}
-
 static
 char *generate_output_filename(const char *filename, const char *ext)
 {
@@ -649,7 +638,7 @@ char *generate_output_filename(const char *filename, const char *ext)
         p = malloc(ext_len + 6);
         sprintf(p, "stdin%s", ext);
     } else {
-        const char *base = basename(filename);
+        const char *base = aacenc_basename(filename);
         size_t ilen = strlen(base);
         const char *ext_org = strrchr(base, '.');
         if (ext_org) ilen = ext_org - base;
This page took 0.013886 seconds and 4 git commands to generate.