@@ -269,10 +269,39 @@
269 269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_read_from_file(pReply, zDownlink, ExtFILE);
270 270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
file_delete(zDownlink);
271 271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
272 272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
273 273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If iTruth<0 then guess as to whether or not a PATH= argument is required
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** when using ssh to run fossil on a remote machine name zHostname.
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If iTruth is 1 or 0 then that means that the PATH= is or is not required,
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** respectively. Record this fact for future reference.
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ssh_needs_path_argument(const char *zHostname, int iTruth){
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ans = 0; /* Default to "no" */
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *z = mprintf("use-path-for-ssh:%s", zHostname);
284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iTruth<0 ){
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db_get_boolean(z/*works-like:"x"*/, 0) ) ans = 1;
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( iTruth ){
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ans = 1;
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_set(z/*works-like:"x"*/, "1", 0);
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_unset(z/*works-like:"x"*/, 0);
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(z);
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return ans;
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add an approprate PATH= argument to the SSH command under construction
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in pCmd.
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void ssh_add_path_argument(Blob *pCmd){
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append_escaped_arg(pCmd,
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "PATH=$HOME/bin:/usr/local/bin:/opt/homebrew/bin:$PATH", 1);
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
274 303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
275 304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
276 305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Sign the content in pSend, compress it, and send it to the server
277 306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** via HTTP or HTTPS. Get a reply, uncompress the reply, and store the reply
278 307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in pRecv. pRecv is assumed to be uninitialized when
@@ -308,16 +337,15 @@
308 337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
309 338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
310 339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Activate the PATH= auxiliary argument to the ssh command if that
311 340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is called for.
312 341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.url.isSsh && (g.url.flags & URL_SSH_RETRY)==0 ){
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *z = mprintf("use-path-for-ssh:%s", g.url.hostname);
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db_get_boolean(z/*works-like:"x"*/, 0) ){
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- g.url.flags |= URL_SSH_PATH;
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_free(z);
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.url.isSsh
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (g.url.flags & URL_SSH_RETRY)==0
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ssh_needs_path_argument(g.url.hostname, -1)
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.url.flags |= URL_SSH_PATH;
319 347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
320 348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
321 349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( transport_open(&g.url) ){
322 350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_warning("%s", transport_errmsg(&g.url));
323 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
@@ -515,17 +543,12 @@
515 543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(g.url.flags & URL_SSH_PATH)!=0 ? "without" : "with"
516 544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
517 545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.url.flags ^= URL_SSH_PATH|URL_SSH_RETRY;
518 546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = http_exchange(pSend,pReply,mHttpFlags,0,zAltMimetype);
519 547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==0 ){
520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *z = mprintf("use-path-for-ssh:%s", g.url.hostname);
521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (g.url.flags & URL_SSH_PATH) ){
522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_set(z/*works-like:"x"*/, "1", 0);
523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_unset(z/*works-like:"x"*/, 0);
525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_free(z);
548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)ssh_needs_path_argument(g.url.hostname,
549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (g.url.flags & URL_SSH_PATH)!=0);
527 550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
528 551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
529 552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
530 553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The problem could not be corrected by retrying. Report the
531 554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the error. */
532 555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!