changeset 13010:047bbb973011

windows path seperator fixes mp_basename now looks for \ and / both new playlist parsing: /path/to/thing is treated as a full path c:\windows is treated as a full path \windows is "near-full" and we prepend drive letter file.avi is relative and we prepend path to playlist
author joey
date Thu, 12 Aug 2004 22:33:21 +0000
parents e50313e4b899
children 5dc4583b1901
files mplayer.c playtreeparser.c
diffstat 2 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mplayer.c	Thu Aug 12 21:48:44 2004 +0000
+++ b/mplayer.c	Thu Aug 12 22:33:21 2004 +0000
@@ -619,7 +619,8 @@
   return eof;
 }
 
-#define mp_basename(s) (strrchr(s,'/')==NULL?(char*)s:(strrchr(s,'/')+1))
+#define mp_basename2(s) (strrchr(s,'/')==NULL?(char*)s:(strrchr(s,'/')+1))
+#define mp_basename(s) (strrchr(s,'\\')==NULL?(mp_basename2(s)):(strrchr(s,'\\')+1))
 
 int playtree_add_playlist(play_tree_t* entry)
 {
--- a/playtreeparser.c	Thu Aug 12 21:48:44 2004 +0000
+++ b/playtreeparser.c	Thu Aug 12 22:33:21 2004 +0000
@@ -20,12 +20,6 @@
 #include "mp_msg.h"
 
 
-#if defined(__CYGWIN__) || defined(__OS2__)
-#define PATH_SEP '\\'
-#else
-#define PATH_SEP '/'
-#endif
-
 extern play_tree_t*
 asx_parser_build_tree(char* buffer, int ref);
 
@@ -630,8 +624,16 @@
 
   for(i = 0 ; pt->files[i] != NULL ; i++) {
     fl = strlen(pt->files[i]);
-    if(fl <= 0 || pt->files[i][0] == PATH_SEP || strstr(pt->files[i],"://"))
+    // if we find url:// or X:\ at the beginning, don't mangle it.
+    if(fl <= 0 || strstr(pt->files[i],"://") || strstr(pt->files[i],":\\") == pt->files[i] + 1)
       continue;
+    // if the path begins with \ then prepend drive letter to it.
+    if (pt->files[i][0] == '\\') {
+      pt->files[i] = (char*)realloc(pt->files[i],2+fl+1);
+      memmove(pt->files[i] + 2,pt->files[i],fl+1);
+      memcpy(pt->files[i],bp,2);
+      return;
+    }
     pt->files[i] = (char*)realloc(pt->files[i],bl+fl+1);
     memmove(pt->files[i] + bl,pt->files[i],fl+1);
     memcpy(pt->files[i],bp,bl);
@@ -648,7 +650,8 @@
     file = strdup(filename);
     if (file)
     {
-      ls = strrchr(file,PATH_SEP);
+      ls = strrchr(file,'/');
+      if(!ls) ls = strrchr(file,'\\');
       if(ls) {
         ls[1] = '\0';
         play_tree_add_basepath(pt,file);