Android question: how to connect to swank, running on android?
Daniel Kochmański
daniel at turtleware.eu
Thu Aug 31 19:15:20 UTC 2017
Hah, that would explain why it has worked for me. In jni driver on
ecl-android I've dup'ed stdin. See file
jni/org_lisp_ecl_EmbeddedCommonLisp.c:63
LOGI("Redirecting I/O\n");
snprintf(tmp, 2048, "%s/ecl_output", lisp_dir);
mkfifo(tmp, 0664);
/* mode is O_RDWR to prevent blocking. Linux-specific. */
fd = open(tmp, O_RDWR | O_NONBLOCK);
dup2(fd, 1);
dup2(fd, 2);
close(fd);
snprintf(tmp, 2048, "%s/ecl_input", lisp_dir);
mkfifo(tmp, 0664);
fd = open(tmp, O_RDONLY | O_NONBLOCK);
dup2(fd, 0);
close(fd);
So stdin had a valid value.
Best regards,
Daniel
On 25.08.2017 22:01, PR wrote:
> ...and finally the OK: problem solved (thanks to Luís Oliveira / Slime
> mailing list):
>
> This would be a possible patch to 'swank.lisp':
>
> (defun repl-input-stream-read (connection stdin)
> (loop
> (let* ((socket (connection.socket-io connection))
> + (inputs (list socket #-android stdin))
> - (inputs (list socket stdin))
> (ready (wait-for-input inputs)))
> (cond ((eq ready :interrupt)
> (check-slime-interrupts))
>
> (quickly tested by me on both Android and PC.)
>
> Paul
>
More information about the ecl-devel
mailing list