| | @@ -301,10 +301,37 @@ |
| 301 | 301 | pUrlData->flags = urlFlags &= ~URL_REMEMBER_PW; |
| 302 | 302 | } |
| 303 | 303 | } |
| 304 | 304 | } |
| 305 | 305 | } |
| 306 | + |
| 307 | +/* |
| 308 | +** Construct the complete URL for a UrlData object, including the |
| 309 | +** login name and password, into memory obtained from fossil_malloc() |
| 310 | +** and return a pointer to that URL text. |
| 311 | +*/ |
| 312 | +char *url_full(const UrlData *p){ |
| 313 | + Blob x = BLOB_INITIALIZER; |
| 314 | + if( p->isFile || p->user==0 || p->user[0]==0 ){ |
| 315 | + return fossil_strdup(p->canonical); |
| 316 | + } |
| 317 | + blob_appendf(&x, "%s://", p->protocol); |
| 318 | + if( p->user && p->user[0] ){ |
| 319 | + blob_appendf(&x, "%t", p->user); |
| 320 | + if( p->passwd && p->passwd[0] ){ |
| 321 | + blob_appendf(&x, ":%t", p->passwd); |
| 322 | + } |
| 323 | + blob_appendf(&x, "@"); |
| 324 | + } |
| 325 | + blob_appendf(&x, "%T", p->name); |
| 326 | + if( p->dfltPort!=p->port ){ |
| 327 | + blob_appendf(&x, ":%d", p->port); |
| 328 | + } |
| 329 | + blob_appendf(&x, "%T", p->path); |
| 330 | + (void)blob_str(&x); |
| 331 | + return x.aData; |
| 332 | +} |
| 306 | 333 | |
| 307 | 334 | /* |
| 308 | 335 | ** Reclaim malloced memory from a UrlData object |
| 309 | 336 | */ |
| 310 | 337 | void url_unparse(UrlData *p){ |
| | @@ -386,10 +413,11 @@ |
| 386 | 413 | fossil_print("g.url.user = %s\n", g.url.user); |
| 387 | 414 | fossil_print("g.url.passwd = %s\n", g.url.passwd); |
| 388 | 415 | fossil_print("g.url.canonical = %s\n", g.url.canonical); |
| 389 | 416 | fossil_print("g.url.fossil = %s\n", g.url.fossil); |
| 390 | 417 | fossil_print("g.url.flags = 0x%02x\n", g.url.flags); |
| 418 | + fossil_print("url_full(g.url) = %z\n", url_full(&g.url)); |
| 391 | 419 | if( g.url.isFile || g.url.isSsh ) break; |
| 392 | 420 | if( i==0 ){ |
| 393 | 421 | fossil_print("********\n"); |
| 394 | 422 | url_enable_proxy("Using proxy: "); |
| 395 | 423 | } |
| 396 | 424 | |