@@ -95,6 +95,8 @@ defmodule Path do
9595 absname ( absname_join ( name ) , cwd )
9696 end
9797
98+ @ slash [ ?/ , ?\\ ]
99+
98100 # Joins a list
99101 defp absname_join ( [ name1 , name2 | rest ] ) , do: absname_join ( [ absname_join ( name1 , name2 ) | rest ] )
100102
@@ -110,6 +112,11 @@ defmodule Path do
110112 do_absname_join ( rest , relativename , [ ?: , uc_letter + ?a - ?A ] , :win32 )
111113 end
112114
115+ defp do_absname_join ( << c1 , c2 , rest :: binary >> , relativename , [ ] , :win32 )
116+ when c1 in @ slash and c2 in @ slash do
117+ do_absname_join ( rest , relativename , '//' , :win32 )
118+ end
119+
113120 defp do_absname_join ( << ?\\ , rest :: binary >> , relativename , result , :win32 ) ,
114121 do: do_absname_join ( << ?/ , rest :: binary >> , relativename , result , :win32 )
115122
@@ -254,8 +261,6 @@ defmodule Path do
254261 defp unix_pathtype ( [ list | rest ] ) when is_list ( list ) , do: unix_pathtype ( list ++ rest )
255262 defp unix_pathtype ( relative ) , do: { :relative , relative }
256263
257- @ slash [ ?/ , ?\\ ]
258-
259264 defp win32_pathtype ( [ list | rest ] ) when is_list ( list ) , do: win32_pathtype ( list ++ rest )
260265
261266 defp win32_pathtype ( [ char , list | rest ] ) when is_list ( list ) ,
0 commit comments