gopher+ support in the URL draft.

Mark P. McCahill (mpm@boombox.micro.umn.edu)
Mon, 7 Mar 94 19:17:18 CST

Date: Mon, 7 Mar 94 19:17:18 CST
Message-Id: <9403080117.AA00449@boombox.micro.umn.edu>
From: "Mark P. McCahill" <mpm@boombox.micro.umn.edu>
To: timbl@www3.cern.ch
Subject: gopher+ support in the URL draft.

Tim,

I took a look at the Jan 1, 1994 URL draft (draft-ietf-uri-url-02.txt) from
info.cern.ch and noticed that the additions to support Gopher+ in the
Gopher URL aren't in the draft. Maybe you missed the discussion of this
stuff last November after the IETF.

As I recall, there was a consensus that the changes we proposed for the
gopher URL were a good thing. For obvious reasons, I'd like to have a gopher
URL that can work for both old, vanilla gophers and spiffy new gopher+ gopher
servers.

So... can you incorporate the important pieces from the message below into the
draft? The proposal from last November is below:

--------------- forwarded message begins here ------------------
From: "Mark P. McCahill" <mpm>
Date: Fri, 12 Nov 93 15:31:39 CST
To: uri@bunyip.com
Cc: mpm
Subject: a URL that can accomodate both gopher and gopher+

One of the isues left open from the URL discussion at the Houston IETF was
a URL that would accomodate Gopher+... and the suggestion was that the gopher
dudes come up with something. Now that we have finally recovered from IETF,
here is the proposal.

With a minor change to the syntax of the current gopher URL, we can have both
plain old gopher and gopher+ in the same URL and have a nice regular syntax.
The improved syntax is basically the current gopher URL syntax, but uses an
encoded <tab> character as a seperator rather than the <?> character. Using
<tab> as a seperator is convenient because <tab> cannot occur in gopher
selector strings. The only time the <?> is used in the current gopher selector
is when the URL points to a gopher search engine and is passing the search
engine a search string (set of words for which to search)... the virtues of
having a regular syntax and using a seperator character that cannor occur in
gopher selector strings should to be obvious.

So, in nearly all cases, the gopher URL in Tim's proposal is the same as what
we are proposing, and our proposal accomodates both gopher and gopher+ within
one URL.

I suggest replacing the Gopher section of the URL draft with:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
GOPHER

Gopher selector strings may contain any characters other than tab, return, or
linefeed, so it is important to encode all disallowed characters and encode any
space characters so these characters are not altered during transport of the
URL. Note that since gopher selector string are opaque and map to native file
systems of the gopher server, encoding of disallowed characters in the selector
string, is done to map to binary codes rather than ISO character sets. In other
words, the "%" character followed by two hexadecimal digits is used to encode
binary data. Do not interpret gopher selector strings.

The format of a gopher URL is:

1.) A single-character field to denote the Gopher type of the resource to
which the URL refers.

2.) The gopher selector string.

Note that some gopher selector strings begin with a copy of the gopher type
character, in which case that character will occur twice consecutively. Also
note that the gopher selector string may be an empty string since this is how
gopher clients refer to the top-level directory on a gopher server.

3.) An encoded tab character (%09) to seperate the gopher selector string from
the optional search string (see 4 below).

If the URL does not refer to a Gopher+ item and if there is no gopher search
string then parts 3, 4, 5, and 6 of the URL are optional

4.) The gopher search string.

If the URL refers to a search to be submitted to a gopher search engine the
search string is required. Otherwise this is an empty string.

5.) An encoded tab character (%09) to seperate the gopher search string from
the optional gopher+ string (see 6 below). Note that if the URL refers to a
gopher+ item and does not have a gopher search string, there will be two
encoded tab characters in a row.

6.) The Gopher+ string.

So, the format of a Gopher URL path refering to a gopher type "T" item is:

gopher://host [port]/T[gopher_selector]%09[search_string]%09[gopher+_string]

Examples:

An example of a URL pointing to a gopher type 0 item (a document) is:

gopher://host [port]/0a_gopher_selector

An example of a URL pointing to a gopher type 7 item (a search engine)
where the string foobar is to be submitted to the search engine is:

gopher://host [port]/7a_gopher_selector%09foobar

An example of a URL pointing to a Gopher+ type 0 item (a document) is:

gopher://host [port]/0a_gopher_selector%09%09some_gplus_stuff

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Mark P. McCahill

gopherspace engineer/University of Minnesota
mpm@boombox.micro.umn.edu
612 625 1300 (voice) 612 625 6817 (fax)

--------------- forwarded message ends here -------------------

Mark P. McCahill

gopherspace engineer/University of Minnesota
mpm@boombox.micro.umn.edu
612 625 1300 (voice) 612 625 6817 (fax)