소스 검색

Fix #459

The following changes are made:

- STDOUT and STDIN are redirected to /dev/null when spawning rclone
  rclone blocks and also shows error/warning messages. nnn needs to spawn
  rclone and return without waiting. To avoid the rclone messages from
  corrupting the screen nnn makes the child silent.
  Note: sshfs returns after mount with a proper error code
- prompt only if both sshfs and rclone are installed
master
Arun Prakash Jana 5 년 전
부모
커밋
27943b9efb
No known key found for this signature in database GPG 키 ID: A75979F35C080412
1개의 변경된 파일19개의 추가작업 그리고 6개의 파일을 삭제
  1. +19
    -6
      src/nnn.c

+ 19
- 6
src/nnn.c 파일 보기

@@ -3580,14 +3580,26 @@ static bool archive_mount(char *name, char *path, char *newpath, int *presel)
static bool remote_mount(char *newpath, int *presel)
{
uchar flag = F_CLI;
int r, opt = get_input(messages[MSG_REMOTE_OPTS]);
int opt;
char *tmp, *env, *cmd;
bool r, s;

r = getutil(utils[UTIL_RCLONE]);
s = getutil(utils[UTIL_SSHFS]);

if (!(r || s))
return FALSE;

if (r && s)
opt = get_input(messages[MSG_REMOTE_OPTS]);
else
opt = (!s) ? 'r' : 's';

if (opt == 's') {
cmd = utils[UTIL_SSHFS];
env = xgetenv("NNN_SSHFS", cmd);
} else if (opt == 'r') {
flag |= F_NOWAIT;
flag |= F_NOWAIT | F_NOTRACE;
cmd = utils[UTIL_RCLONE];
env = xgetenv("NNN_RCLONE", "rclone mount");
} else {
@@ -3612,10 +3624,11 @@ static bool remote_mount(char *newpath, int *presel)
}

/* Convert "Host" to "Host:" */
r = strlen(tmp);
if (tmp[r - 1] != ':') { /* Append ':' if missing */
tmp[r] = ':';
tmp[r + 1] = '\0';
size_t len = strlen(tmp);

if (tmp[len - 1] != ':') { /* Append ':' if missing */
tmp[len] = ':';
tmp[len + 1] = '\0';
}

/* Connect to remote */


불러오는 중...
취소
저장