* Open URLs
@ 2010-01-03 18:17 vlc
2010-01-03 18:36 ` Gautier write-only
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: vlc @ 2010-01-03 18:17 UTC (permalink / raw)
Hi *,
I am looking for a way to open URLs (like "file:///home/vlc/file") as
files - as you would do with "Open (Handle, In_File, "/home/vlc/
file")".
I could surely just remove the heading "file://", but this would still
leave me with the problem of special characters like "file:///home/vlc/
name%20with%20spaces".
Does anybody know of a way to translate URLs to paths?
Thanks a lot in advance!
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Open URLs
2010-01-03 18:17 Open URLs vlc
@ 2010-01-03 18:36 ` Gautier write-only
2010-01-03 18:36 ` Pascal Obry
2010-01-03 20:05 ` Dmitry A. Kazakov
2 siblings, 0 replies; 6+ messages in thread
From: Gautier write-only @ 2010-01-03 18:36 UTC (permalink / raw)
> I am looking for a way to open URLs (like "file:///home/vlc/file") as
> files - as you would do with "Open (Handle, In_File, "/home/vlc/
> file")".
>
> I could surely just remove the heading "file://", but this would still
> leave me with the problem of special characters like "file:///home/vlc/
> name%20with%20spaces".
>
> Does anybody know of a way to translate URLs to paths?
What about doing successive string replacements:
"file://" -> ""
"%20" -> " "
etc.
?
Probably you need to make a "Replace_all" function using
Ada.Strings.Fixed's routines (unless it's already there), then it
should be straightforward.
______________________________________________________________
Gautier's Ada programming -- http://gautiersblog.blogspot.com/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Open URLs
2010-01-03 18:17 Open URLs vlc
2010-01-03 18:36 ` Gautier write-only
@ 2010-01-03 18:36 ` Pascal Obry
2010-01-03 18:53 ` vlc
2010-01-03 20:05 ` Dmitry A. Kazakov
2 siblings, 1 reply; 6+ messages in thread
From: Pascal Obry @ 2010-01-03 18:36 UTC (permalink / raw)
Le 03/01/2010 19:17, vlc a �crit :
> Does anybody know of a way to translate URLs to paths?
>
> Thanks a lot in advance!
Not directly. After removing the file:// prefix, you can use AWS.URL.Decode.
Pascal.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net - http://v2p.fr.eu.org
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver keys.gnupg.net --recv-key F949BD3B
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Open URLs
2010-01-03 18:36 ` Pascal Obry
@ 2010-01-03 18:53 ` vlc
0 siblings, 0 replies; 6+ messages in thread
From: vlc @ 2010-01-03 18:53 UTC (permalink / raw)
On Jan 3, 7:36 pm, Pascal Obry <pas...@obry.net> wrote:
>
> Not directly. After removing the file:// prefix, you can use AWS.URL.Decode.
>
> Pascal.
Thanks. This looks quite promising!
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Open URLs
2010-01-03 18:17 Open URLs vlc
2010-01-03 18:36 ` Gautier write-only
2010-01-03 18:36 ` Pascal Obry
@ 2010-01-03 20:05 ` Dmitry A. Kazakov
2010-01-14 8:32 ` David Thompson
2 siblings, 1 reply; 6+ messages in thread
From: Dmitry A. Kazakov @ 2010-01-03 20:05 UTC (permalink / raw)
On Sun, 3 Jan 2010 10:17:58 -0800 (PST), vlc wrote:
> I am looking for a way to open URLs (like "file:///home/vlc/file") as
> files - as you would do with "Open (Handle, In_File, "/home/vlc/
> file")".
>
> I could surely just remove the heading "file://", but this would still
> leave me with the problem of special characters like "file:///home/vlc/
> name%20with%20spaces".
The third / is a delimiter, theoretically there could be something between
file:// and /. The path might be followed by queries and fragments, see
here:
http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
> Does anybody know of a way to translate URLs to paths?
You just parse it. What is the problem, except that the number of URI
schemes is huge.
Regarding replacing %20 with SP, I am not sure if this has to be done. You
have to dig the documents (RFC) to verify if %<number> is indeed a defined
escape sequence, if there are any in the URI, I do not remember. Otherwise
it is a part of the file name to be passed further as is.
In any case, when you write a parser, you could make it recognize escape
sequences, delimiters etc as it moves the cursor left to right. Something
like:
Pointer := URI'First;
... -- Get scheme, advance pointer
case Scheme is
when File_Schema =>
declare
Path : Unbounded_String;
Code_Point : Integer;
begin
loop
if URI (Pointer) = '%' then
Get (URI, Pointer, Code_Point);
Append (Path, Character'Val (Code_Point));
elsif Is_In (Delimiters, URI (Pointer)) then
exit;
else
Append (Path, URI (Pointer));
Pointer := Pointer + 1;
end if;
exit when Pointer > URI'Last;
end loop;
...
etc
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Open URLs
2010-01-03 20:05 ` Dmitry A. Kazakov
@ 2010-01-14 8:32 ` David Thompson
0 siblings, 0 replies; 6+ messages in thread
From: David Thompson @ 2010-01-14 8:32 UTC (permalink / raw)
On Sun, 3 Jan 2010 21:05:46 +0100, "Dmitry A. Kazakov"
<mailbox@dmitry-kazakov.de> wrote:
> On Sun, 3 Jan 2010 10:17:58 -0800 (PST), vlc wrote:
>
> > I am looking for a way to open URLs (like "file:///home/vlc/file") as
> > files - as you would do with "Open (Handle, In_File, "/home/vlc/
> > file")".
> >
> > I could surely just remove the heading "file://", but this would still
> > leave me with the problem of special characters like "file:///home/vlc/
> > name%20with%20spaces".
>
> The third / is a delimiter, theoretically there could be something between
> file:// and /. The path might be followed by queries and fragments, see
> here:
>
> http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
>
Although one can just say queries aren't supported for resources that
are actually files, since they don't make sense. (Although they might
for something like a cryptographic FS where you must supply a password
-- but then whether you should allow a password to be supplied by a
potentially untrusted path is another issue.)
Fragments are supposed to be implemented by the user agent (for the
web, normally a browser); it's not clear to me whether the OP does or
anyone else would want this below or above the proposed API.
> > Does anybody know of a way to translate URLs to paths?
>
> You just parse it. What is the problem, except that the number of URI
> schemes is huge.
>
Nontrivial but I wouldn't say huge -- and the number that make sense
for files is pretty small. And the OP apparently only needs one.
> Regarding replacing %20 with SP, I am not sure if this has to be done. You
> have to dig the documents (RFC) to verify if %<number> is indeed a defined
> escape sequence, if there are any in the URI, I do not remember. Otherwise
> it is a part of the file name to be passed further as is.
>
Yes % two-hex is in STD66=RFC3986 2, and %20=SP is even the example.
Of course if there are codepoints not allowed in a pathname, like NUL
on Unix, you can't support the corresponding escape %00 in a URI.
And you need to decide some things like whether %2F is treated as a
branch-character / which is similarly unsupportable, or as a branch
delimiter in violation of the nominal URI semantics.
<snip code>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-01-14 8:32 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-01-03 18:17 Open URLs vlc
2010-01-03 18:36 ` Gautier write-only
2010-01-03 18:36 ` Pascal Obry
2010-01-03 18:53 ` vlc
2010-01-03 20:05 ` Dmitry A. Kazakov
2010-01-14 8:32 ` David Thompson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox