mirror of
https://github.com/ksherlock/gopher.git
synced 2024-12-21 21:29:19 +00:00
re org code
This commit is contained in:
parent
fc873a29b4
commit
340846cd57
154
url.c
154
url.c
@ -21,6 +21,8 @@ enum {
|
||||
};
|
||||
|
||||
|
||||
extern void parse_scheme(const char *cp, unsigned size, URLComponents *c);
|
||||
|
||||
/*
|
||||
* scheme://username:password@domain:port/path;parms?query_string#fragment_id
|
||||
*
|
||||
@ -84,158 +86,6 @@ int URLComponentGet(const char *url, URLComponents *components, int type, char *
|
||||
}
|
||||
|
||||
|
||||
static void parseScheme(const char *cp, unsigned size, URLComponents *c)
|
||||
{
|
||||
unsigned *wp;
|
||||
unsigned h;
|
||||
|
||||
if (!c) return;
|
||||
if (!cp || !size)
|
||||
{
|
||||
c->portNumber = 0;
|
||||
c->schemeType = SCHEME_NONE;
|
||||
return;
|
||||
}
|
||||
|
||||
wp = (unsigned *)cp;
|
||||
h = (*cp ^ size) & 0x0f;
|
||||
|
||||
switch(h)
|
||||
{
|
||||
// --- begin auto-generated --
|
||||
case 0:
|
||||
// ssh
|
||||
if (size == 3
|
||||
&& (wp[0] | 0x2020) == 'ss'
|
||||
&& (cp[2] | 0x20) == 'h'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_SSH;
|
||||
c->portNumber = 22;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
// gopher
|
||||
if (size == 6
|
||||
&& (wp[0] | 0x2020) == 'og'
|
||||
&& (wp[1] | 0x2020) == 'hp'
|
||||
&& (wp[2] | 0x2020) == 're'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_GOPHER;
|
||||
c->portNumber = 70;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
// file, telnet, afp
|
||||
if (size == 4
|
||||
&& (wp[0] | 0x2020) == 'if'
|
||||
&& (wp[1] | 0x2020) == 'el'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_FILE;
|
||||
c->portNumber = 0;
|
||||
return;
|
||||
}
|
||||
if (size == 6
|
||||
&& (wp[0] | 0x2020) == 'et'
|
||||
&& (wp[1] | 0x2020) == 'nl'
|
||||
&& (wp[2] | 0x2020) == 'te'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_TELNET;
|
||||
c->portNumber = 23;
|
||||
return;
|
||||
}
|
||||
if (size == 3
|
||||
&& (wp[0] | 0x2020) == 'fa'
|
||||
&& (cp[2] | 0x20) == 'p'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_AFP;
|
||||
c->portNumber = 548;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
// ftp
|
||||
if (size == 3
|
||||
&& (wp[0] | 0x2020) == 'tf'
|
||||
&& (cp[2] | 0x20) == 'p'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_FTP;
|
||||
c->portNumber = 21;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
// sftp
|
||||
if (size == 4
|
||||
&& (wp[0] | 0x2020) == 'fs'
|
||||
&& (wp[1] | 0x2020) == 'pt'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_SFTP;
|
||||
c->portNumber = 115;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
// nntp
|
||||
if (size == 4
|
||||
&& (wp[0] | 0x2020) == 'nn'
|
||||
&& (wp[1] | 0x2020) == 'pt'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_NNTP;
|
||||
c->portNumber = 119;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
// http
|
||||
if (size == 4
|
||||
&& (wp[0] | 0x2020) == 'th'
|
||||
&& (wp[1] | 0x2020) == 'pt'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_HTTP;
|
||||
c->portNumber = 80;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
// https, nfs
|
||||
if (size == 5
|
||||
&& (wp[0] | 0x2020) == 'th'
|
||||
&& (wp[1] | 0x2020) == 'pt'
|
||||
&& (cp[4] | 0x20) == 's'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_HTTPS;
|
||||
c->portNumber = 443;
|
||||
return;
|
||||
}
|
||||
if (size == 3
|
||||
&& (wp[0] | 0x2020) == 'fn'
|
||||
&& (cp[2] | 0x20) == 's'
|
||||
)
|
||||
{
|
||||
c->schemeType = SCHEME_NFS;
|
||||
c->portNumber = 2049;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
// --- end auto-generated --
|
||||
}
|
||||
|
||||
c->portNumber = 0;
|
||||
c->schemeType = SCHEME_UNKNOWN;
|
||||
}
|
||||
|
||||
|
||||
int ParseURL(const char *url, int length, struct URLComponents *components)
|
||||
|
Loading…
Reference in New Issue
Block a user