summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorRamiro Polla <ramiro.polla@gmail.com>2008-10-10 16:59:37 +0000
committerRamiro Polla <ramiro.polla@gmail.com>2008-10-10 16:59:37 +0000
commitbc574408dc011943b82de012451f95266bed9989 (patch)
tree384b3321b62c07f7631dbc40e5733a088e7a2aa6 /libavformat
parent60e8bc13a9076212499c01b36b6dc0574d534be6 (diff)
Only special-case absolute DOS paths on systems that support them.
Originally committed as revision 15594 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/avio.c3
-rw-r--r--libavformat/os_support.h9
2 files changed, 11 insertions, 1 deletions
diff --git a/libavformat/avio.c b/libavformat/avio.c
index c2acb4664e..5809c40479 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -21,6 +21,7 @@
#include "libavutil/avstring.h"
#include "libavcodec/opt.h"
+#include "os_support.h"
#include "avformat.h"
#if LIBAVFORMAT_VERSION_MAJOR >= 53
@@ -115,7 +116,7 @@ int url_open(URLContext **puc, const char *filename, int flags)
p++;
}
/* if the protocol has length 1, we consider it is a dos drive */
- if (*p == '\0' || (q - proto_str) <= 1) {
+ if (*p == '\0' || is_dos_path(filename)) {
file_proto:
strcpy(proto_str, "file");
} else {
diff --git a/libavformat/os_support.h b/libavformat/os_support.h
index e547085dff..2fd3112b7e 100644
--- a/libavformat/os_support.h
+++ b/libavformat/os_support.h
@@ -32,6 +32,15 @@
# define lseek(f,p,w) _lseeki64((f), (p), (w))
#endif
+static inline int is_dos_path(const char *path)
+{
+#ifdef HAVE_DOS_PATHS
+ if (path[0] && path[1] == ':')
+ return 1;
+#endif
+ return 0;
+}
+
#ifdef __BEOS__
# include <sys/socket.h>
# include <netinet/in.h>