@@ -33,18 +33,21 @@
33 33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
34 34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if INTERFACE
35 35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
36 36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Flags for url_parse()
37 37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define URL_PROMPT_PW 0x001 /* Prompt for password if needed */
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define URL_REMEMBER 0x002 /* Remember the url for later reuse */
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define URL_ASK_REMEMBER_PW 0x004 /* Ask whether to remember prompted pw */
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define URL_REMEMBER_PW 0x008 /* Should remember pw */
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define URL_PROMPTED 0x010 /* Prompted for PW already */
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define URL_OMIT_USER 0x020 /* Omit the user name from URL */
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define URL_USE_CONFIG 0x040 /* Use remembered URLs from CONFIG table */
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define URL_USE_PARENT 0x080 /* Use the URL of the parent project */
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_PROMPT_PW 0x0001 /* Prompt for password if needed */
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_REMEMBER 0x0002 /* Remember the url for later reuse */
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_ASK_REMEMBER_PW 0x0004 /* Ask whether to remember prompted pw */
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_REMEMBER_PW 0x0008 /* Should remember pw */
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_PROMPTED 0x0010 /* Prompted for PW already */
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_OMIT_USER 0x0020 /* Omit the user name from URL */
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_USE_CONFIG 0x0040 /* Use remembered URLs from CONFIG table */
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_USE_PARENT 0x0080 /* Use the URL of the parent project */
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_SSH_PATH 0x0100 /* Include PATH= on SSH syncs */
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_SSH_RETRY 0x0200 /* This a retry of an SSH */
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define URL_SSH_EXE 0x0400 /* ssh: URL contains fossil= query param*/
46 49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
47 50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
48 51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The URL related data used with this subsystem.
49 52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
50 53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct UrlData {
@@ -110,11 +113,11 @@
110 113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UrlData *pUrlData
111 114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
112 115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j, c;
113 116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zFile = 0;
114 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pUrlData->pwConfig = 0;
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(pUrlData, 0, sizeof(*pUrlData));
116 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( urlFlags & URL_USE_CONFIG ){
117 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zUrl==0 || strcmp(zUrl,"default")==0 ){
118 121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPwConfig = "last-sync-pw";
119 122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( urlFlags & URL_USE_PARENT ){
120 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zUrl = db_get("parent-project-url", 0);
@@ -159,12 +162,10 @@
159 162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iStart;
160 163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zLogin;
161 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zExe;
162 165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char cQuerySep = '?';
163 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pUrlData->isFile = 0;
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pUrlData->useProxy = 0;
166 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zUrl[4]=='s' ){
167 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pUrlData->isHttps = 1;
168 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pUrlData->protocol = "https";
169 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pUrlData->dfltPort = 443;
170 171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStart = 8;
@@ -255,15 +256,17 @@
255 256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pUrlData->path[i] ){
256 257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pUrlData->path[i] = 0;
257 258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i++;
258 259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
259 260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fossil_strcmp(zName,"fossil")==0 ){
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(pUrlData->fossil);
260 262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pUrlData->fossil = fossil_strdup(zValue);
261 263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dehttpize(pUrlData->fossil);
262 264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zExe);
263 265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zExe = mprintf("%cfossil=%T", cQuerySep, pUrlData->fossil);
264 266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cQuerySep = '&';
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ urlFlags |= URL_SSH_EXE;
265 268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
266 269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
267 270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
268 271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dehttpize(pUrlData->path);
269 272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pUrlData->dfltPort==pUrlData->port ){
@@ -453,10 +456,36 @@
453 456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** g.url.pwConfig is NULL.
454 457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
455 458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void url_parse(const char *zUrl, unsigned int urlFlags){
456 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
url_parse_local(zUrl, urlFlags, &g.url);
457 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Print the content of g.url
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void urlparse_print(int showPw){
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.isFile = %d\n", g.url.isFile);
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.isHttps = %d\n", g.url.isHttps);
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.isSsh = %d\n", g.url.isSsh);
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.protocol = %s\n", g.url.protocol);
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.name = %s\n", g.url.name);
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.port = %d\n", g.url.port);
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.dfltPort = %d\n", g.url.dfltPort);
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.hostname = %s\n", g.url.hostname);
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.path = %s\n", g.url.path);
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.user = %s\n", g.url.user);
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( showPw || g.url.pwConfig==0 ){
477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.passwd = %s\n", g.url.passwd);
478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.passwd = ************\n");
480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.pwConfig = %s\n", g.url.pwConfig);
482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.canonical = %s\n", g.url.canonical);
483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.fossil = %s\n", g.url.fossil);
484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("g.url.flags = 0x%04x\n", g.url.flags);
485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("url_full(g.url) = %z\n", url_full(&g.url));
486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
458 487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
459 488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
460 489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: test-urlparser
461 490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
462 491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Usage: %fossil test-urlparser URL ?options?
@@ -482,30 +511,11 @@
482 511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc!=3 && g.argc!=4 ){
483 512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
usage("URL");
484 513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
485 514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
url_parse(g.argv[2], fg);
486 515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<2; i++){
487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.isFile = %d\n", g.url.isFile);
488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.isHttps = %d\n", g.url.isHttps);
489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.isSsh = %d\n", g.url.isSsh);
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.protocol = %s\n", g.url.protocol);
491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.name = %s\n", g.url.name);
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.port = %d\n", g.url.port);
493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.dfltPort = %d\n", g.url.dfltPort);
494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.hostname = %s\n", g.url.hostname);
495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.path = %s\n", g.url.path);
496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.user = %s\n", g.url.user);
497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( showPw || g.url.pwConfig==0 ){
498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.passwd = %s\n", g.url.passwd);
499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.passwd = ************\n");
501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.pwConfig = %s\n", g.url.pwConfig);
503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.canonical = %s\n", g.url.canonical);
504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.fossil = %s\n", g.url.fossil);
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("g.url.flags = 0x%02x\n", g.url.flags);
506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("url_full(g.url) = %z\n", url_full(&g.url));
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ urlparse_print(showPw);
507 517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.url.isFile || g.url.isSsh ) break;
508 518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i==0 ){
509 519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("********\n");
510 520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
url_enable_proxy("Using proxy: ");
511 521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
512 522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!