[FFmpeg-devel] [PATCH] Set systems that should support DOS paths in configure

Måns Rullgård mans
Mon Oct 6 22:52:07 CEST 2008


"Ramiro Polla" <ramiro.polla at gmail.com> writes:

> Hi,
>
> On Fri, Oct 3, 2008 at 7:58 PM, M?ns Rullg?rd <mans at mansr.com> wrote:
>> "Ramiro Polla" <ramiro.polla at gmail.com> writes:
>>> $subj
> [...]
>>> Index: libavformat/os_support.h
>>> ===================================================================
>>> --- libavformat/os_support.h  (revision 15464)
>>> +++ libavformat/os_support.h  (working copy)
>>> @@ -35,6 +35,12 @@
>>>  #  define lseek(f,p,w) _lseeki64((f), (p), (w))
>>>  #endif
>>>
>>> +#ifdef HAVE_DOS_PATHS
>>> +    #define is_dos_path(path) (path[1]==':')
>>
>> This allows anything as the "drive letter", though maybe that's
>> considered OK.
>
> According to [0], only letters are allowed for the drive letter
> (altough I've seen some program, fsdext2 IIRC, using numbers). Added
> isalpha() for path[0].
>
>>> +#else
>>> +    #define is_dos_path(path) (0)
>>
>> Useless ().
>
> Removed.
>
> Also changed from #define to static inline int like ff_network_init().
>
> Ramiro Polla
> [0] http://msdn.microsoft.com/en-us/library/cc232152.aspx
>
> Index: libavformat/os_support.h
> ===================================================================
> --- libavformat/os_support.h	(revision 15572)
> +++ 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 (isalpha(path[0]) && path[1] == ':')
> +		return 1;

Weird indentation.

> +#endif
> +    return 0;
> +}
> +
>  #ifdef __BEOS__
>  #  include <sys/socket.h>
>  #  include <netinet/in.h>
> Index: libavformat/avio.c
> ===================================================================
> --- libavformat/avio.c	(revision 15572)
> +++ 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)) {

Not that I mind making the check stricter, but does this not cover
what you need?

-- 
M?ns Rullg?rd
mans at mansr.com




More information about the ffmpeg-devel mailing list