diff --git a/guile-scsh.scm b/guile-scsh.scm
index a96685d..5256ca1 100755
--- a/guile-scsh.scm
+++ b/guile-scsh.scm
@@ -1,5 +1,4 @@
-#!/usr/bin/guile
--L .
+#!/usr/bin/env -S guile -L .
!#
(use-modules (ice-9 readline))
(use-modules (ice-9 regex))
diff --git a/scsh/newports.scm b/scsh/newports.scm
index 5ab4235..1e594a4 100644
--- a/scsh/newports.scm
+++ b/scsh/newports.scm
@@ -15,7 +15,6 @@
:use-module (scsh syscalls)
:export (fdport? set-port-buffering
- bufpol/block bufpol/line bufpol/none
open-file ;;; open-input-file open-output-file
call/fdes close-after
with-current-input-port* with-current-output-port*
@@ -34,9 +33,6 @@
(false-if-exception (fileno x))))
(define set-port-buffering setvbuf)
-(define bufpol/block _IOFBF)
-(define bufpol/line _IOLBF)
-(define bufpol/none _IONBF)
;;(define (%fdport-set-buffering/errno port policy size)
;; (%fdport*-set-buffering/errno (fdport-data port) policy size))
diff --git a/scsh/sighandlers.scm b/scsh/sighandlers.scm
index 8d3d2be..976ae79 100644
--- a/scsh/sighandlers.scm
+++ b/scsh/sighandlers.scm
@@ -57,6 +57,10 @@
"#include \"sighandlers1.h\""
"" "")
+;; Since glibc 2.26, SIGUNUSED is no longer defined. Before, it had the
+;; same value as SIGSYS.
+(define SIGUNUSED (if (defined? 'SIGUNUSED) SIGUNUSED SIGSYS))
+
;;; Map a Unix async signal to its S48 interrupt value.
;;; -1 => Not defined.
(define-foreign %signal->interrupt (sig2interrupt (integer sig))
diff --git a/scsh/syntax-helpers.scm b/scsh/syntax-helpers.scm
index 41fcee2..1a9551f 100644
--- a/scsh/syntax-helpers.scm
+++ b/scsh/syntax-helpers.scm
@@ -230,5 +230,5 @@
((_ stdports) (stdports->stdio))
((_ stdports f l ...) (f (stdports->stdio) l ...))
- ((_ _) (oops))
- ((_ _ f l ...) (f (oops) l ...))))
+ ((_ redir) ((error "unknown i/o redirection" 'redir)))
+ ((_ redir f l ...) (f (error "unknown i/o redirection" 'redir) l ...))))
diff --git a/scsh/weak.scm b/scsh/weak.scm
index 58e8488..5097661 100644
--- a/scsh/weak.scm
+++ b/scsh/weak.scm
@@ -5,6 +5,6 @@
:export (make-weak-pointer weak-pointer-ref weak-pointer?))
(define (make-weak-pointer x) (make-weak-vector 1 x))
-(define (weak-pointer-ref x) (vector-ref x 0))
+(define (weak-pointer-ref x) (weak-vector-ref x 0))
(define (weak-pointer? x)
(weak-vector? x))