Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Yet another fix to the URL parser. Ticket [21447822de6be06]. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
7aae4ef0689fb23c66fadacd4acd5fb2 |
| User & Date: | drh 2010-09-03 01:57:41.000 |
| Original Comment: | Yet another fix to the URL parser. |
References
|
2010-10-19
| ||
| 23:35 | • Ticket [c8c0b78c84] Windows 7: "fossil ui" and "fossil server" fail status still Open with 1 other change ... (artifact: 13a9b1666a user: rwilson) | |
|
2010-10-12
| ||
| 14:32 | • New ticket [c6376b37a8] fossil rename says 'file outside of checkout tree' when it isn't. ... (artifact: b704da4857 user: rwilson) | |
Context
|
2010-09-04
| ||
| 15:24 | Honor the "Index Page" setting from the "Admin/Configuration" setup page. ... (check-in: baa6df0650 user: drh tags: trunk) | |
| 15:19 | Create new branch named "stv-skinning" ... (check-in: ba1c75ad39 user: Ratte tags: stv-skinning) | |
|
2010-09-03
| ||
| 01:57 | Yet another fix to the URL parser. Ticket [21447822de6be06]. ... (check-in: 7aae4ef068 user: drh tags: trunk) | |
|
2010-09-02
| ||
| 10:28 | Fix a bug fix in the URL parser that was introduced by the recent ssh:// change. The bug prevented port numbers after the hostname from parsing correctly. ... (check-in: ac8c21b986 user: drh tags: trunk) | |
Changes
Changes to src/url.c.
| ︙ | ︙ | |||
80 81 82 83 84 85 86 |
iStart = 6;
}else{
g.urlIsHttps = 0;
g.urlProtocol = "http";
g.urlDfltPort = 80;
iStart = 7;
}
| | > < < < > > > > < | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
iStart = 6;
}else{
g.urlIsHttps = 0;
g.urlProtocol = "http";
g.urlDfltPort = 80;
iStart = 7;
}
for(i=iStart; (c=zUrl[i])!=0 && c!='/' && c!='@'; i++){}
if( c=='@' ){
/* Parse up the user-id and password */
for(j=iStart; j<i && zUrl[j]!=':'; j++){}
g.urlUser = mprintf("%.*s", j-iStart, &zUrl[iStart]);
dehttpize(g.urlUser);
if( j<i ){
g.urlPasswd = mprintf("%.*s", i-j-1, &zUrl[j+1]);
dehttpize(g.urlPasswd);
}
if( g.urlIsSsh && g.urlPasswd ){
zLogin = mprintf("%t:*@", g.urlUser);
}else{
zLogin = mprintf("%t@", g.urlUser);
}
for(j=i+1; (c=zUrl[j])!=0 && c!='/' && c!=':'; j++){}
g.urlName = mprintf("%.*s", j-i-1, &zUrl[i+1]);
i = j;
}else{
for(i=iStart; (c=zUrl[i])!=0 && c!='/' && c!=':'; i++){}
g.urlName = mprintf("%.*s", i-iStart, &zUrl[iStart]);
zLogin = mprintf("");
}
url_tolower(g.urlName);
if( c==':' ){
g.urlPort = 0;
i++;
while( (c = zUrl[i])!=0 && isdigit(c) ){
g.urlPort = g.urlPort*10 + c - '0';
i++;
}
g.urlHostname = mprintf("%s:%d", g.urlName, g.urlPort);
}else{
g.urlPort = g.urlDfltPort;
g.urlHostname = g.urlName;
}
dehttpize(g.urlName);
g.urlPath = mprintf(&zUrl[i]);
for(i=0; g.urlPath[i] && g.urlPath[i]!='?'; i++){}
if( g.urlPath[i] ){
g.urlPath[i] = 0;
i++;
}
zExe = mprintf("");
while( g.urlPath[i]!=0 ){
|
| ︙ | ︙ | |||
157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
);
}else{
g.urlCanonical = mprintf(
"%s://%s%T:%d%T%s",
g.urlProtocol, zLogin, g.urlName, g.urlPort, g.urlPath, zExe
);
}
free(zLogin);
}else if( strncmp(zUrl, "file:", 5)==0 ){
g.urlIsFile = 1;
if( zUrl[5]=='/' && zUrl[6]=='/' ){
i = 7;
}else{
i = 5;
| > | 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
);
}else{
g.urlCanonical = mprintf(
"%s://%s%T:%d%T%s",
g.urlProtocol, zLogin, g.urlName, g.urlPort, g.urlPath, zExe
);
}
if( g.urlIsSsh && g.urlPath[1] ) g.urlPath++;
free(zLogin);
}else if( strncmp(zUrl, "file:", 5)==0 ){
g.urlIsFile = 1;
if( zUrl[5]=='/' && zUrl[6]=='/' ){
i = 7;
}else{
i = 5;
|
| ︙ | ︙ |