[FFmpeg-devel] [PATCH] Set systems that should support DOS paths in configure
Måns Rullgård
mans
Tue Oct 7 21:29:50 CEST 2008
"Ramiro Polla" <ramiro.polla at gmail.com> writes:
> Hi,
>
> On Tue, Oct 7, 2008 at 3:21 PM, Reimar D?ffinger
> <Reimar.Doeffinger at stud.uni-karlsruhe.de> wrote:
>> Hello,
>> On Tue, Oct 07, 2008 at 08:01:15PM +0200, V?ctor Paesa wrote:
>>> I tried this for fun on WinXP SP3 (Spanish variety):
>>>
>>> C:\ subst ?: c:\caca
>>>
>>> C:\ ?:
>>
>> Same behaviour with XP x64, English, except I tried with ?:
>>
>>> Directorio de ?:\
>>
>> It says O:\ there, but dir O: does not work, only dir ?:
>> If you do not want to change keyboard layout, :: and !: are funny,
>> too.
>
> With attached patch FFmpeg will happily accept:
> ffmpeg.exe -i "?:\test.avi" -y " :\test2.avi"
>
> But it is being picked up by:
> while (*p != '\0' && *p != ':') {
> /* protocols can only contain alphabetic chars */
> if (!isalpha(*p))
> goto file_proto;
>
> isalpha() on Windows will return 1 for upper and 2 for lower, and 0
> for everything else.
>
>> Windows Explorer still behaves as with win98, so it seems impossible to
>> access such drives with it
>
> Seems like a bug in Windows Explorer. Firefox has no problem
> displaying the happy face drive:
> file:///(:/
>
>> (I admit I do not know if subst actually
>> affects Windows Gui applications).
>
> I checked with a simple msvc++ app and CreateFile() works with
> "?:\test.avi" as input filename.
>
>> Very scary...
>
> Very very scary...
I'm so glad I don't have a windows machine...
> Ramiro Polla
>
> Index: configure
> ===================================================================
> --- configure (revision 15575)
> +++ configure (working copy)
> @@ -750,6 +750,7 @@
> dev_video_bktr_ioctl_bt848_h
> dlfcn_h
> dlopen
> + dos_paths
> ebp_available
> ebx_available
> fast_64bit
> @@ -1291,6 +1292,7 @@
> SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
> SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
> objformat="win32"
> + enable dos_paths
> ;;
> cygwin*)
> target_os=cygwin
> @@ -1308,6 +1310,7 @@
> SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
> SHFLAGS='-shared -Wl,--enable-auto-image-base'
> objformat="win32"
> + enable dos_paths
> ;;
> *-dos|freedos|opendos)
> disable ffplay ffserver vhook
> @@ -1315,6 +1318,7 @@
> network_extralibs="-lsocket"
> EXESUF=".exe"
> objformat="win32"
> + enable dos_paths
> ;;
> linux)
> enable dv1394
> @@ -1346,6 +1350,7 @@
> SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
> SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
> disable vhook
> + enable dos_paths
> ;;
> interix)
> disable vhook
OK, as before.
> Index: libavformat/os_support.h
> ===================================================================
> --- libavformat/os_support.h (revision 15575)
> +++ libavformat/os_support.h (working copy)
> @@ -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;
> +}
> +
The preceding discussion has convinced me that this is probably the
safest solution.
> #ifdef __BEOS__
> # include <sys/socket.h>
> # include <netinet/in.h>
> Index: libavformat/avio.c
> ===================================================================
> --- libavformat/avio.c (revision 15575)
> +++ libavformat/avio.c (working copy)
> @@ -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 @@
> 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 {
Over to the maintainer...
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list