Received: (at 24818) by debbugs.gnu.org; 8 Mar 2017 19:40:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 08 14:40:29 2017
Received: from localhost ([127.0.0.1]:46687 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1clhRl-00041F-0d
for submit <at> debbugs.gnu.org; Wed, 08 Mar 2017 14:40:29 -0500
Received: from dustycloud.org ([50.116.34.160]:40490)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <cwebber@HIDDEN>) id 1clhRi-000415-To
for 24818 <at> debbugs.gnu.org; Wed, 08 Mar 2017 14:40:27 -0500
Received: from oolong (localhost [127.0.0.1])
by dustycloud.org (Postfix) with ESMTPS id 4A2AD2664C;
Wed, 8 Mar 2017 14:40:24 -0500 (EST)
References: <87oa236rgg.fsf@HIDDEN> <87o9xlgly2.fsf@HIDDEN>
User-agent: mu4e 0.9.18; emacs 25.1.1
From: Christopher Allan Webber <cwebber@HIDDEN>
To: Andy Wingo <wingo@HIDDEN>
Subject: Re: bug#24818: Clean up socket files set up by
--listen=/path/to/socket-file
In-reply-to: <87o9xlgly2.fsf@HIDDEN>
Date: Wed, 08 Mar 2017 13:40:16 -0600
Message-ID: <8760jjblr3.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="==-=-=";
micalg=pgp-sha256; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 24818
Cc: 24818 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)
--==-=-=
Content-Type: multipart/mixed; boundary="=-=-="
--=-=-=
Content-Type: text/plain
Andy Wingo writes:
> I agree :) Thanks for the patch!
>
> The patch goes in a direction that I'm a bit hesitant about though --
> this command-line processing is getting a bit intense. Would it be
> possible to add a #:cleanup? argument to the spawn-server function
> instead?
I agree that my previous patch makes things more complicated, so I tried
the route you suggested, but...
> My only doubt would be whether all threads unwind when the program
> ends. (And if they don't, is that a bug? I am not sure but I would
> guess so; dunno.)
... and it doesn't seem to work for that reason. The thread never seems
to unwind. I put a print statement (not in this patch) at the very part
of the out guard but it never seems to run. Too bad...
So I guess the question is whether or not addressing the thread issue as
a potential bug should be done or applying the previous patch version
which worked but made the command line processing more complex? Or
something else?
--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline;
filename=0001-Clean-up-socket-file-set-up-by-listen.patch
Content-Transfer-Encoding: quoted-printable
From=2079ab483a872638abe311c521c3467c060566b39c Mon Sep 17 00:00:00 2001
From: Christopher Allan Webber <cwebber@HIDDEN>
Date: Wed, 8 Mar 2017 12:04:55 -0600
Subject: [PATCH] Clean up socket file set up by --listen
[Unfortunately, this patch does not work because the thread doesn't seem
to unwind. Submitted for demonstrative purposes, or in the hope that
could be fixed.]
* module/ice-9/command-line.scm (compile-shell-switches):
* module/system/repl/server.scm (run-server, run-server*, spawn-server):
Clean up socket file set up by --listen on exit, if it exists.
=2D--
module/ice-9/command-line.scm | 3 ++-
module/system/repl/server.scm | 44 +++++++++++++++++++++++++++------------=
----
2 files changed, 30 insertions(+), 17 deletions(-)
diff --git a/module/ice-9/command-line.scm b/module/ice-9/command-line.scm
index 98d385569..3305c671d 100644
=2D-- a/module/ice-9/command-line.scm
+++ b/module/ice-9/command-line.scm
@@ -388,7 +388,8 @@ If FILE begins with `-' the -s switch is mandatory.
(error "invalid port for --listen"))))
((string-prefix? "/" where) ; --listen=3D/PATH/TO/SOCKET
`((@@ (system repl server) spawn-server)
=2D ((@@ (system repl server) make-unix-domain-server-so=
cket) #:path ,where)))
+ ((@@ (system repl server) make-unix-domain-server-sock=
et) #:path ,where)
+ #:cleanup? #t))
(else
(error "unknown argument to --listen"))))
out)))
diff --git a/module/system/repl/server.scm b/module/system/repl/server.scm
index 725eb4eda..1ced8e8d1 100644
=2D-- a/module/system/repl/server.scm
+++ b/module/system/repl/server.scm
@@ -21,6 +21,7 @@
=20
(define-module (system repl server)
#:use-module (system repl repl)
+ #:use-module (ice-9 and-let-star)
#:use-module (ice-9 threads)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 match)
@@ -84,11 +85,12 @@
(bind sock AF_UNIX path)
sock))
=20
=2D(define* (run-server #:optional (server-socket (make-tcp-server-socket)))
=2D (run-server* server-socket serve-client))
+(define* (run-server #:optional (server-socket (make-tcp-server-socket))
+ #:key (cleanup? #f))
+ (run-server* server-socket serve-client #:cleanup? cleanup?))
=20
;; Note: although not exported, this is used by (system repl coop-server)
=2D(define (run-server* server-socket serve-client)
+(define* (run-server* server-socket serve-client #:key (cleanup? #f))
;; We use a pipe to notify the server when it should shut down.
(define shutdown-pipes (pipe))
(define shutdown-read-pipe (car shutdown-pipes))
@@ -122,19 +124,29 @@
(sigaction SIGPIPE SIG_IGN)
(add-open-socket! server-socket shutdown-server)
(listen server-socket 5)
=2D (let lp ()
=2D (match (accept-new-client)
=2D (#f
=2D ;; If client is false, we are shutting down.
=2D (close shutdown-write-pipe)
=2D (close shutdown-read-pipe)
=2D (close server-socket))
=2D ((client-socket . client-addr)
=2D (make-thread serve-client client-socket client-addr)
=2D (lp)))))
=2D
=2D(define* (spawn-server #:optional (server-socket (make-tcp-server-socket=
)))
=2D (make-thread run-server server-socket))
+ (dynamic-wind
+ (const #f)
+ (lambda ()
+ (let lp ()
+ (match (accept-new-client)
+ (#f
+ ;; If client is false, we are shutting down.
+ (close shutdown-write-pipe)
+ (close shutdown-read-pipe)
+ (close server-socket))
+ ((client-socket . client-addr)
+ (make-thread serve-client client-socket client-addr)
+ (lp)))))
+ (lambda ()
+ (and-let* (cleanup?
+ (sa (getsockname server-socket))
+ (path (sockaddr:path sa))
+ ((file-exists? path)))
+ (delete-file path)))))
+
+(define* (spawn-server #:optional (server-socket (make-tcp-server-socket))
+ #:key (cleanup? #f))
+ (make-thread run-server server-socket #:cleanup? cleanup?))
=20
(define (serve-client client addr)
=20
=2D-=20
2.11.0
--=-=-=--
--==-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEUQqGKOKndniPjHCcS8Alkl/49NMFAljAXiEACgkQS8Alkl/4
9NNVtA//fqxYkzn5eKjZc+MSSjQOwQq1lG1d5qNcmJcWkd9bwqhnmzjeZ27VBWq6
GEPf7iGlGaYO/fUSMuPJdhXWtO5MBfHsLjoOSyX2x+5zN3YkDBNTm3pSkWJNOHSL
0OYxaQSPJLM7RCOKep4Wh8ge3edQsIWyp/Dtk+j+gqIHsEXxDyuCU4GTrZFVcusA
PRu4hh7SQkSjbjpbq23cRbcXK7qaj3sxlPNnC8Dtfp/8uIP0kfB+KAWraYjJFstJ
Qxeae16+b0l37fFqGplVqWvCBfdahHL/u/CtBJI6YaFxAcSPsZnPXx3t1CbKgOXO
5fw300b61oQpENEld6zdZm8YjucQX3ozkerTRSIfkkq2Y7E+sWQI+tAuCpkCP8rH
YYsKnF+YI55RB8v1mk2TjQsf60hMAXk3U98SRhHKhWIb87Hikbro5dXJicBOlcDv
ylijUou91SupgvJ1sZlrCcGa4yBUOBGbek3KDtPYaCJjwSTPDAA6roxzHPhsTj+l
R9UCE9b78DFTRpJQZmSsE1jsoASgSi+oHPFuiMpiAAZ0FZgLyRbBdr/pkMsJ836g
QWD3AUohgiFb5/yuQRCJO9D9dTjWR49AgJN5nBOQdFqB4RhTK2ufBHF7w5aTZEa1
XvxQPrhbz3wjVBqH+AZdnHbhBwe5mPZ7mrCbfycPj/XW62jn4Wk=
=rV8H
-----END PGP SIGNATURE-----
--==-=-=--
bug-guile@HIDDEN:bug#24818; Package guile.
Full text available.Received: (at 24818) by debbugs.gnu.org; 1 Mar 2017 13:34:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 01 08:34:42 2017 Received: from localhost ([127.0.0.1]:32982 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1cj4Ow-0007fc-GV for submit <at> debbugs.gnu.org; Wed, 01 Mar 2017 08:34:42 -0500 Received: from pb-sasl2.pobox.com ([64.147.108.67]:58757 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1cj4Ou-0007fU-9H for 24818 <at> debbugs.gnu.org; Wed, 01 Mar 2017 08:34:40 -0500 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id E3D3865842; Wed, 1 Mar 2017 08:34:37 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=3KziSduwgcTDT+DUN+ysGVz4inQ=; b=M8RQ6s AoxMjipXhqj1RGMuqXdSYj5GpSlTRJyzwUaUMWhBPYl1hTbzhzk/uJ5sQqn6l7wJ Nw/ujS0Tmztnlee/uAEmnv+a5o42GOakiDK+tKwfAydbD6B9zVFo0K16cpbqps+X uiewrwVJ0LEuC7i/XzB28wHN46TvJwgCxbV/8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=Vf4VD/uth2BXlrg/tP8gBRE3nd75T3uD N+25GbosDcsmk7VUnDpLH3QAvf5zEvPOW+JzQ1N7IadOM3PPAwPBP2kKfaUPTZeW XGQKzDk06Z73JAaf1/Q87zQ9h9GSh0dHI/NaZy1QYLxhSQFm4Rr/SJToAEqaMamT EuZ57l3hYNo= Received: from pb-sasl2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id DDAAB65841; Wed, 1 Mar 2017 08:34:37 -0500 (EST) Received: from clucks (unknown [109.190.228.233]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl2.pobox.com (Postfix) with ESMTPSA id 3A26265840; Wed, 1 Mar 2017 08:34:37 -0500 (EST) From: Andy Wingo <wingo@HIDDEN> To: Christopher Allan Webber <cwebber@HIDDEN> Subject: Re: bug#24818: Clean up socket files set up by --listen=/path/to/socket-file References: <87oa236rgg.fsf@HIDDEN> Date: Wed, 01 Mar 2017 14:34:29 +0100 In-Reply-To: <87oa236rgg.fsf@HIDDEN> (Christopher Allan Webber's message of "Sat, 29 Oct 2016 11:38:23 -0500") Message-ID: <87o9xlgly2.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: D082F966-FE83-11E6-92EE-85AB91A0D1B0-02397024!pb-sasl2.pobox.com X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 24818 Cc: 24818 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) On Sat 29 Oct 2016 18:38, Christopher Allan Webber <cwebber@HIDDEN> writes: > In light of the recent security vulnerability on using localhost + port, > I've been using socket files for live hacking. Unfortunately, these > socket files stay around after closing guile, which means this can happen: > > $ guile --listen=/tmp/guile-socket > scheme@(guile-user)> ,q > $ guile --listen=/tmp/guile-socket > ERROR: In procedure bind: > ERROR: In procedure bind: Address already in use > > That's not very nice! I really don't like having to clean up these > files by hand.... Guile should do it for me. I agree :) Thanks for the patch! The patch goes in a direction that I'm a bit hesitant about though -- this command-line processing is getting a bit intense. Would it be possible to add a #:cleanup? argument to the spawn-server function instead? My only doubt would be whether all threads unwind when the program ends. (And if they don't, is that a bug? I am not sure but I would guess so; dunno.) Andy
bug-guile@HIDDEN:bug#24818; Package guile.
Full text available.Christopher Allan Webber <cwebber@HIDDEN>
to control <at> debbugs.gnu.org.
Full text available.
Received: (at submit) by debbugs.gnu.org; 29 Oct 2016 16:38:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 29 12:38:44 2016
Received: from localhost ([127.0.0.1]:36767 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1c0Wea-00044k-1V
for submit <at> debbugs.gnu.org; Sat, 29 Oct 2016 12:38:44 -0400
Received: from eggs.gnu.org ([208.118.235.92]:51552)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <cwebber@HIDDEN>) id 1c0WeY-00044R-Fz
for submit <at> debbugs.gnu.org; Sat, 29 Oct 2016 12:38:43 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <cwebber@HIDDEN>) id 1c0WeS-0003fs-Cb
for submit <at> debbugs.gnu.org; Sat, 29 Oct 2016 12:38:37 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level:
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled
version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:55339)
by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
(Exim 4.71) (envelope-from <cwebber@HIDDEN>)
id 1c0WeS-0003fi-9C
for submit <at> debbugs.gnu.org; Sat, 29 Oct 2016 12:38:36 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:42493)
by lists.gnu.org with esmtp (Exim 4.71)
(envelope-from <cwebber@HIDDEN>) id 1c0WeQ-000097-ST
for bug-guile@HIDDEN; Sat, 29 Oct 2016 12:38:36 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <cwebber@HIDDEN>) id 1c0WeM-0003da-7d
for bug-guile@HIDDEN; Sat, 29 Oct 2016 12:38:34 -0400
Received: from dustycloud.org ([50.116.34.160]:55276)
by eggs.gnu.org with esmtp (Exim 4.71)
(envelope-from <cwebber@HIDDEN>) id 1c0WeM-0003dN-1H
for bug-guile@HIDDEN; Sat, 29 Oct 2016 12:38:30 -0400
Received: from oolong (localhost [127.0.0.1])
by dustycloud.org (Postfix) with ESMTPS id 28F3B265F2
for <bug-guile@HIDDEN>; Sat, 29 Oct 2016 12:38:29 -0400 (EDT)
User-agent: mu4e 0.9.16; emacs 25.1.1
From: Christopher Allan Webber <cwebber@HIDDEN>
To: bug-guile@HIDDEN
Subject: Clean up socket files set up by --listen=/path/to/socket-file
Date: Sat, 29 Oct 2016 11:38:23 -0500
Message-ID: <87oa236rgg.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="==-=-=";
micalg=pgp-sha256; protocol="application/pgp-signature"
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -4.0 (----)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -4.0 (----)
--==-=-=
Content-Type: multipart/mixed; boundary="=-=-="
--=-=-=
Content-Type: text/plain
In light of the recent security vulnerability on using localhost + port,
I've been using socket files for live hacking. Unfortunately, these
socket files stay around after closing guile, which means this can happen:
$ guile --listen=/tmp/guile-socket
scheme@(guile-user)> ,q
$ guile --listen=/tmp/guile-socket
ERROR: In procedure bind:
ERROR: In procedure bind: Address already in use
That's not very nice! I really don't like having to clean up these
files by hand.... Guile should do it for me.
Fortunately, here's a patch that does just that! It uses dynamic-wind
and cleans up the socket file, if it exists. (But it doesn't break if
it doesn't!)
--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline;
filename=0001-Clean-up-socket-file-set-up-by-listen.patch
Content-Transfer-Encoding: quoted-printable
From=2012a1c24890448ec9a2d33cabff7f70f6332dbb4f Mon Sep 17 00:00:00 2001
From: Christopher Allan Webber <cwebber@HIDDEN>
Date: Sat, 29 Oct 2016 11:28:05 -0500
Subject: [PATCH] Clean up socket file set up by --listen
* module/ice-9/command-line.scm (compile-shell-switches):
Clean up socket file set up by --listen on exit, if it exists.
=2D--
module/ice-9/command-line.scm | 80 ++++++++++++++++++++++++---------------=
----
1 file changed, 44 insertions(+), 36 deletions(-)
diff --git a/module/ice-9/command-line.scm b/module/ice-9/command-line.scm
index 98d3855..cdc5427 100644
=2D-- a/module/ice-9/command-line.scm
+++ b/module/ice-9/command-line.scm
@@ -199,6 +199,7 @@ If FILE begins with `-' the -s switch is mandatory.
(user-load-compiled-path '())
(user-extensions '())
(interactive? #t)
+ (clean-socket-file #f)
(inhibit-user-init? #f)
(turn-on-debugging? #f)
(turn-off-debugging? #f))
@@ -387,6 +388,7 @@ If FILE begins with `-' the -s switch is mandatory.
((@@ (system repl server) make-tcp-server-soc=
ket) #:port ,port))
(error "invalid port for --listen"))))
((string-prefix? "/" where) ; --listen=3D/PATH/TO/SOCKET
+ (set! clean-socket-file where)
`((@@ (system repl server) spawn-server)
((@@ (system repl server) make-unix-domain-server-sock=
et) #:path ,where)))
(else
@@ -430,42 +432,48 @@ If FILE begins with `-' the -s switch is mandatory.
`(;; It would be nice not to load up (ice-9 control), but the
;; default-prompt-handler is nontrivial.
(@ (ice-9 control) %)
=2D (begin
=2D ;; If we didn't end with a -c or a -s and didn't supply a -q, =
load
=2D ;; the user's customization file.
=2D ,@(if (and interactive? (not inhibit-user-init?))
=2D '((load-user-init))
=2D '())
=2D
=2D ;; Use-specified extensions.
=2D ,@(map (lambda (ext)
=2D `(set! %load-extensions (cons ,ext %load-extensions)))
=2D user-extensions)
=2D
=2D ;; Add the user-specified load paths here, so they won't be in
=2D ;; effect during the loading of the user's customization file.
=2D ,@(map (lambda (path)
=2D `(set! %load-path (cons ,path %load-path)))
=2D user-load-path)
=2D ,@(map (lambda (path)
=2D `(set! %load-compiled-path
=2D (cons ,path %load-compiled-path)))
=2D user-load-compiled-path)
=2D
=2D ;; Put accumulated actions in their correct order.
=2D ,@(reverse! out)
=2D
=2D ;; Handle the `-e' switch, if it was specified.
=2D ,@(if entry-point
=2D `((,entry-point (command-line)))
=2D '())
=2D ,(if interactive?
=2D ;; If we didn't end with a -c or a -s, start the
=2D ;; repl.
=2D '((@ (ice-9 top-repl) top-repl))
=2D ;; Otherwise, after doing all the other actions
=2D ;; prescribed by the command line, quit.
=2D '(quit)))))
+ (dynamic-wind
+ (const #f) ; no-op
+ (lambda ()
+ ;; If we didn't end with a -c or a -s and didn't supply a -q, =
load
+ ;; the user's customization file.
+ ,@(if (and interactive? (not inhibit-user-init?))
+ '((load-user-init))
+ '())
+
+ ;; Use-specified extensions.
+ ,@(map (lambda (ext)
+ `(set! %load-extensions (cons ,ext %load-extensions)))
+ user-extensions)
+
+ ;; Add the user-specified load paths here, so they won't be in
+ ;; effect during the loading of the user's customization file.
+ ,@(map (lambda (path)
+ `(set! %load-path (cons ,path %load-path)))
+ user-load-path)
+ ,@(map (lambda (path)
+ `(set! %load-compiled-path
+ (cons ,path %load-compiled-path)))
+ user-load-compiled-path)
+
+ ;; Put accumulated actions in their correct order.
+ ,@(reverse! out)
+
+ ;; Handle the `-e' switch, if it was specified.
+ ,@(if entry-point
+ `((,entry-point (command-line)))
+ '())
+ ,(if interactive?
+ ;; If we didn't end with a -c or a -s, start the
+ ;; repl.
+ '((@ (ice-9 top-repl) top-repl))
+ ;; Otherwise, after doing all the other actions
+ ;; prescribed by the command line, quit.
+ '(quit)))
+ (lambda ()
+ (when (and ,clean-socket-file
+ (file-exists? ,clean-socket-file))
+ (delete-file ,clean-socket-file))))))
=20
(if (pair? args)
(begin
=2D-=20
2.10.1
--=-=-=--
--==-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAEBCAAGBQJYFNB/AAoJEEvAJZJf+PTT2AgQAINjtmd/DJCMPDjWR30k92sZ
qothbxxHqaEaL7iX5n9KMrVfqKxtVZoH5RYioj/fMcn9jgrssUbZNWYIuTcFbNZC
Mx09SqRo87cSZ0PLYrP8iVeY1YhW0OJQPja3ovSnWPuL0nzQDN6BpcrOCwdcPCpI
Lp6rinvDEFYpgohTGBdtt6B9o1govLTrt78WSiF075QphAYP9qEmVKI4qvZTnZNa
OD/C/+tLQMC7do599XJ5MV9Q8srVASgO+S4fhTVyJr7bv3nMtDXbGdg3dH2hsiDe
7idPNu/zbcGHklsKphIdf/xGq7DNN0KUfmlvfC51RY1saBeA00v8GmMbbVHfotY6
OyWUkU33pmCQAf3Mt59D3mknguWhjf10DznwY/Wm7Yl3qoqvdMALEv6dhn0Gucv7
qnFwkaBtNxaBFzatDJ6p4W+CM8VQHuILYPkxYnLVcA4pbUODZk3tMaiZnHma8ejJ
LwZ6YIo77KtW+QYlnsl8iPhAuYMsFS8nzzGI8VZwRELx75MXhJTFuENrcCicFtkA
+fYE+/PerKYSok1oVqcy+rMeqpCRIbxzQrevoz/4xoXlcEEcFd7JwUx+370PCNi2
qRiP7Y1y+m+a3Wk48feV0yB1TuHfKH/HwTDh+8xWFcqqQOXjV0Cjp1jMSSwbSa55
vBEVzHVdvb8hPd3LKZyg
=r9vF
-----END PGP SIGNATURE-----
--==-=-=--
Christopher Allan Webber <cwebber@HIDDEN>:bug-guile@HIDDEN.
Full text available.bug-guile@HIDDEN:bug#24818; Package guile.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.