summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwl <wl>2005-05-18 07:03:06 +0000
committerwl <wl>2005-05-18 07:03:06 +0000
commite8cd3d70d5dcec0e8e40429830a372a40f9c9ffa (patch)
tree36aeb813187b8602cf13db6f0140fcd23894958e
parentd5e77458ec0d21272384a78180946518fe350b7d (diff)
downloadgroff-e8cd3d70d5dcec0e8e40429830a372a40f9c9ffa.tar.gz
Miscellaneous script portability enhancements.
* aclocal.m4: (GROFF_CSH_HACK): Add space in shebang prototype for generated conftest.sh script, conforming to portability recommendation in autoconf docs. * configure: Likewise, for code generated by GROFF_CSH_HACK. * contrib/eqn2graph/eqn2graph.sh: Add space in shebang, conforming to portability recommendation in autoconf docs. * contrib/gdiffmk/gdiffmk.sh: Likewise. * contrib/gdiffmk/tests/runtests.in: Likewise. * contrib/grap2graph/grap2graph.sh: Likewise. * contrib/groffer/groffer.sh: Likewise. * contrib/mm/mmroff.pl: Likewise. * contrib/mom/momdoc/appendices.html: Likewise. * contrib/pic2graph/pic2graph.sh: Likewise. * font/devps/generate/afmname: Likewise. * src/devices/xditview/ad2c: Likewise. * src/preproc/eqn/neqn.sh: Likewise. * src/roff/grog/grog.pl: Likewise. * src/roff/grog/grog.sh: Likewise. * src/roff/nroff/nroff.sh: Likewise. * PROBLEMS: Likewise, in embedded script examples. Improve portability of `pdfroff' shell script. * arch/misc/shdeps.sh: Add space in shebang, conforming to portability guidelines in `autoconf' docs. (PATH_SEARCH_SETUP): New substitution; emits PATH_SEPARATOR initialization code. Used by contrib/pdfmark/pdfroff.sh's `searchpath' function.
-rw-r--r--ChangeLog37
-rw-r--r--PROBLEMS8
-rw-r--r--aclocal.m42
-rw-r--r--arch/misc/shdeps.sh33
-rwxr-xr-xconfigure2
-rw-r--r--contrib/eqn2graph/eqn2graph.sh4
-rw-r--r--contrib/gdiffmk/gdiffmk.sh2
-rw-r--r--contrib/gdiffmk/tests/runtests.in2
-rw-r--r--contrib/grap2graph/grap2graph.sh4
-rw-r--r--contrib/groffer/groffer.sh2
-rw-r--r--contrib/mm/mmroff.pl2
-rw-r--r--contrib/mom/momdoc/appendices.html2
-rw-r--r--contrib/pdfmark/ChangeLog16
-rw-r--r--contrib/pdfmark/Makefile.sub7
-rw-r--r--contrib/pdfmark/pdfroff.man24
-rw-r--r--contrib/pdfmark/pdfroff.sh109
-rw-r--r--contrib/pic2graph/pic2graph.sh4
-rwxr-xr-xfont/devps/generate/afmname2
-rw-r--r--src/devices/xditview/ad2c2
-rw-r--r--src/preproc/eqn/neqn.sh2
-rw-r--r--src/roff/grog/grog.pl2
-rw-r--r--src/roff/grog/grog.sh2
-rw-r--r--src/roff/nroff/nroff.sh2
23 files changed, 207 insertions, 65 deletions
diff --git a/ChangeLog b/ChangeLog
index 38152841..c182d485 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,38 @@
+2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Miscellaneous script portability enhancements.
+
+ * aclocal.m4: (GROFF_CSH_HACK): Add space in shebang prototype for
+ generated conftest.sh script, conforming to portability
+ recommendation in autoconf docs.
+ * configure: Likewise, for code generated by GROFF_CSH_HACK.
+ * contrib/eqn2graph/eqn2graph.sh: Add space in shebang, conforming
+ to portability recommendation in autoconf docs.
+ * contrib/gdiffmk/gdiffmk.sh: Likewise.
+ * contrib/gdiffmk/tests/runtests.in: Likewise.
+ * contrib/grap2graph/grap2graph.sh: Likewise.
+ * contrib/groffer/groffer.sh: Likewise.
+ * contrib/mm/mmroff.pl: Likewise.
+ * contrib/mom/momdoc/appendices.html: Likewise.
+ * contrib/pic2graph/pic2graph.sh: Likewise.
+ * font/devps/generate/afmname: Likewise.
+ * src/devices/xditview/ad2c: Likewise.
+ * src/preproc/eqn/neqn.sh: Likewise.
+ * src/roff/grog/grog.pl: Likewise.
+ * src/roff/grog/grog.sh: Likewise.
+ * src/roff/nroff/nroff.sh: Likewise.
+ * PROBLEMS: Likewise, in embedded script examples.
+
+2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Improve portability of `pdfroff' shell script.
+
+ * arch/misc/shdeps.sh: Add space in shebang, conforming to
+ portability guidelines in `autoconf' docs.
+ (PATH_SEARCH_SETUP): New substitution; emits PATH_SEPARATOR
+ initialization code. Used by contrib/pdfmark/pdfroff.sh's
+ `searchpath' function.
+
2005-05-14 Werner LEMBERG <wl@gnu.org>
* contrib/pic2graph/pic2graph.sh, contrib/graph2graph.sh,
@@ -135,7 +170,7 @@
* src/roff/nroff/nroff.sh: Make the script accept option `-M'.
2005-04-01 Kees Zeelenberg <kzlg@users.sourceforge.net>
- Werner LEMBERG <wl@gnu.org>
+ Werner LEMBERG <wl@gnu.org>
Add binary relocation support for Windows platforms.
diff --git a/PROBLEMS b/PROBLEMS
index f096e550..ba43b3ce 100644
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -633,13 +633,13 @@ as empty):
Create a script called 'eqn':
- > #!/bin/sh
+ > #! /bin/sh
> if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
> geqn $*
and a script called 'neqn':
- > #!/bin/sh
+ > #! /bin/sh
> if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
> geqn -Tascii $*
@@ -659,7 +659,7 @@ To get PostScript output from 'man -t', you also need to create a
--- /usr/local/bin/psroff Sat Feb 13 17:45:46 1993
***************
*** 1,8 ****
- #!/bin/sh
+ #! /bin/sh
! # Emulate nroff with groff.
prog="$0"
@@ -668,7 +668,7 @@ To get PostScript output from 'man -t', you also need to create a
for i
--- 1,8 ----
- #!/bin/sh
+ #! /bin/sh
! # Emulate psroff with groff.
prog="$0"
diff --git a/aclocal.m4 b/aclocal.m4
index 2e122d17..13bcfac7 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -202,7 +202,7 @@ AC_DEFUN([GROFF_CSH_HACK],
[AC_MSG_CHECKING([for csh hash hack])
cat <<EOF >conftest.sh
-#!/bin/sh
+#! /bin/sh
true || exit 0
export PATH || exit 0
exit 1
diff --git a/arch/misc/shdeps.sh b/arch/misc/shdeps.sh
index 623f7a55..133aea5e 100644
--- a/arch/misc/shdeps.sh
+++ b/arch/misc/shdeps.sh
@@ -1,7 +1,7 @@
-#!/bin/sh
+#! /bin/sh
# shdeps.sh: Generate OS dependency fixups, for `groff' shell scripts
#
-# Copyright (C) 2004 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
# Written by Keith Marshall (keith.d.marshall@ntlworld.com)
#
# Invoked only by `make', as:
@@ -40,6 +40,7 @@ then
cat << ETX
\\
GROFF_RUNTIME="\${GROFF_BIN_PATH=$3}:"
+/@PATH_SEARCH_SETUP@/d
ETX
else
@@ -83,6 +84,34 @@ case "\$OSTYPE" in\\
GROFF_RUNTIME=\${GROFF_BIN_PATH="$POSIX_BINDIR"}";" ;;\\
esac
ETX
+ # On Microsoft platforms, we may also need to configure
+ # the PATH search function, used in the `pdfroff' script,
+ # to use ';', instead of ':', as the PATH_SEPARATOR.
+
+ cat << ETX
+/@PATH_SEARCH_SETUP@/c\\
+#\\
+# This implementation is configured for a Microsoft platform.\\
+# Thus, the default PATH_SEPARATOR is ';', although some shells may\\
+# use the POSIX standard ':' instead. Therefore, we need to examine\\
+# the OSTYPE environment variable, to identify which is appropriate\\
+# to make PATH searches work correctly.\\
+#\\
+ case "\$OSTYPE" in\\
+#\\
+ msys | cygwin)\\
+ #\\
+ # These emulate POSIX, and use ':'\\
+ #\\
+ PATH_SEPARATOR=\${PATH_SEPARATOR-':'} ;;\\
+#\\
+ *)\\
+ #\\
+ # For anything else, default to ';'\\
+ #\\
+ PATH_SEPARATOR=\${PATH_SEPARATOR-';'} ;;\\
+ esac
+ETX
fi
diff --git a/configure b/configure
index b0452396..107aadca 100755
--- a/configure
+++ b/configure
@@ -5721,7 +5721,7 @@ echo "$as_me:$LINENO: checking for csh hash hack" >&5
echo $ECHO_N "checking for csh hash hack... $ECHO_C" >&6
cat <<EOF >conftest.sh
-#!/bin/sh
+#! /bin/sh
true || exit 0
export PATH || exit 0
exit 1
diff --git a/contrib/eqn2graph/eqn2graph.sh b/contrib/eqn2graph/eqn2graph.sh
index 9a6ce068..98713a85 100644
--- a/contrib/eqn2graph/eqn2graph.sh
+++ b/contrib/eqn2graph/eqn2graph.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
#
# eqn2graph -- compile EQN equation descriptions to bitmap images
#
@@ -32,7 +32,7 @@
#
# Thus, we pass -U to groff(1), and everything else to convert(1).
#
-# $Id: eqn2graph.sh,v 1.4 2005/05/17 20:20:53 wl Exp $
+# $Id: eqn2graph.sh,v 1.5 2005/05/18 07:03:06 wl Exp $
#
groff_opts=""
convert_opts=""
diff --git a/contrib/gdiffmk/gdiffmk.sh b/contrib/gdiffmk/gdiffmk.sh
index 85acbe9c..68e5b8f5 100644
--- a/contrib/gdiffmk/gdiffmk.sh
+++ b/contrib/gdiffmk/gdiffmk.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
# Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
diff --git a/contrib/gdiffmk/tests/runtests.in b/contrib/gdiffmk/tests/runtests.in
index 200a95b1..82952652 100644
--- a/contrib/gdiffmk/tests/runtests.in
+++ b/contrib/gdiffmk/tests/runtests.in
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
# A very simple function test for gdiffmk.sh.
srcdir=@srcdir@
diff --git a/contrib/grap2graph/grap2graph.sh b/contrib/grap2graph/grap2graph.sh
index 99d9a96d..7c830c1a 100644
--- a/contrib/grap2graph/grap2graph.sh
+++ b/contrib/grap2graph/grap2graph.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
#
# grap2graph -- compile graph description descriptions to bitmap images
#
@@ -28,7 +28,7 @@
#
# Thus, we pass -U to groff(1), and everything else to convert(1).
#
-# $Id: grap2graph.sh,v 1.3 2005/05/17 20:20:53 wl Exp $
+# $Id: grap2graph.sh,v 1.4 2005/05/18 07:03:06 wl Exp $
#
groff_opts=""
convert_opts=""
diff --git a/contrib/groffer/groffer.sh b/contrib/groffer/groffer.sh
index 0a352766..c2146a23 100644
--- a/contrib/groffer/groffer.sh
+++ b/contrib/groffer/groffer.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
# groffer - display groff files
diff --git a/contrib/mm/mmroff.pl b/contrib/mm/mmroff.pl
index 155550bf..f61daa10 100644
--- a/contrib/mm/mmroff.pl
+++ b/contrib/mm/mmroff.pl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#! /usr/bin/perl
use strict;
# runs groff in safe mode, that seems to be the default
diff --git a/contrib/mom/momdoc/appendices.html b/contrib/mom/momdoc/appendices.html
index fa62535e..6b5b63fc 100644
--- a/contrib/mom/momdoc/appendices.html
+++ b/contrib/mom/momdoc/appendices.html
@@ -506,7 +506,7 @@ script requires an argument (the .pfb filename), then prompts for
the GROFF_FONTNAME.
<p>
<pre>
-#!/bin/bash
+#! /bin/bash
# A script for installing Type1 fonts.
#
diff --git a/contrib/pdfmark/ChangeLog b/contrib/pdfmark/ChangeLog
index b96debed..1b2e5bab 100644
--- a/contrib/pdfmark/ChangeLog
+++ b/contrib/pdfmark/ChangeLog
@@ -1,3 +1,19 @@
+2005-05-17 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Improve portability of `pdfroff' shell script.
+
+ * pdfroff.sh: Add space in shebang, conforming to portability
+ guidelines in `autoconf' docs.
+ (searchpath): New shell function; use it instead of `type' command
+ to locate prerequisite helper programs.
+
+ * pdfroff.man: Socument influence of `TYPE' and `PATH_SEPARATOR'
+ environment variables.
+
+ * Makefile.sub: (pdfroff): Make it depend on SH_DEPS_SED_SCRIPT,
+ from arch/misc/shdeps.sh; use it to customize PATH_SEPARATOR
+ initialization code for `searchpath' function in pdfroff.sh.
+
2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com>
Interim documentation update.
diff --git a/contrib/pdfmark/Makefile.sub b/contrib/pdfmark/Makefile.sub
index af7d01bf..387dc167 100644
--- a/contrib/pdfmark/Makefile.sub
+++ b/contrib/pdfmark/Makefile.sub
@@ -71,12 +71,13 @@ gnu.eps:
$(pnmtops_nosetpage) -noturn -rle >$@ ; \
fi
-pdfroff: pdfroff.sh
+pdfroff: pdfroff.sh $(SH_DEPS_SED_SCRIPT)
$(RM) $@
- sed -e "s|@VERSION@|$(version)$(revision)|" \
+ sed -f $(SH_DEPS_SED_SCRIPT) \
+ -e "s|@VERSION@|$(version)$(revision)|" \
-e "s|@GROFF_AWK_INTERPRETERS@|$(ALT_AWK_PROGS)|" \
-e "s|@GROFF_GHOSTSCRIPT_INTERPRETERS@|$(ALT_GHOSTSCRIPT_PROGS)|" \
- -e "s|@GROFF_BIN_DIR@|$(bindir)|" $^ >$@
+ -e "s|@GROFF_BIN_DIR@|$(bindir)|" $(srcdir)/pdfroff.sh >$@
chmod +x $@
install_data: $(make_install_pdfdoc)
diff --git a/contrib/pdfmark/pdfroff.man b/contrib/pdfmark/pdfroff.man
index a1cc2732..7d83cdd9 100644
--- a/contrib/pdfmark/pdfroff.man
+++ b/contrib/pdfmark/pdfroff.man
@@ -420,6 +420,30 @@ if none of these are found,
will issue a warning message, and continue processing;
however, in this case, no reference dictionary will be created.
.TP
+.B OSTYPE
+Typically defined automatically by the operating system,
+.B OSTYPE
+is used on Microsoft Win32/MS\(hyDOS platforms
+.IR only ,
+to infer the default
+.B PATH_SEPARATOR
+character,
+which is used when parsing the process
+.B PATH
+to search for external helper programs.
+.TP
+.B PATH_SEPARATOR
+If set,
+.B PATH_SEPARATOR
+overrides the default separator character,
+(':' on POSIX/UNIX systems,
+inferred from
+.B OSTYPE
+on Microsoft Win32/MS\(hyDOS),
+which is used when parsing the process
+.B PATH
+to search for external helper programs.
+.TP
.B SHOW_PROGRESS
If this is set to a non-empty value, then
.B pdfroff
diff --git a/contrib/pdfmark/pdfroff.sh b/contrib/pdfmark/pdfroff.sh
index abb18926..8acff214 100644
--- a/contrib/pdfmark/pdfroff.sh
+++ b/contrib/pdfmark/pdfroff.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
# ------------------------------------------------------------------------------
#
# Function: Format PDF Output from groff Markup
@@ -37,36 +37,66 @@
#
CMD=`exec 2>$NULLDEV; basename $0` || CMD=$0
#
+# To ensure that prerequisite helper programs are available, and are
+# executable, a [fairly] portable method of detecting such programs is
+# provided by function `searchpath'.
+#
+ searchpath(){
+ #
+ # Usage: searchpath progname path
+ #
+ IFS="${PATH_SEPARATOR-":"}" prog=':'
+ for dir in $2
+ do
+ for ext in '' '.exe'
+ #
+ # try `progname' with all well known extensions
+ # (e.g. Win32 may require `progname.exe')
+ #
+ do
+ try="$dir/$1$ext"
+ test -f "$try" && test -x "$try" && prog="$try" && break
+ done
+ test "$prog" = ":" || break
+ done
+ echo "$prog"
+ }
+# @PATH_SEARCH_SETUP@
+#
# We need both 'grep' and 'sed' programs, to parse script options,
# and we also need 'cat', to display help and some error messages,
# so ensure they are all installed, before we continue.
-# (Again, note that we first check the status from 'type', BEFORE
-# we attempt to use the result, because Cygwin's 'ash' uses 'stdout'
-# instead of 'stderr', to display its 'not found' message).
#
- CAT=':' GREP=':' SED=':'
- type cat >$NULLDEV 2>&1 && CAT=`set :\`type cat\` ; eval echo '$'$#`
- type grep >$NULLDEV 2>&1 && GREP=`set :\`type grep\` ; eval echo '$'$#`
- type sed >$NULLDEV 2>&1 && SED=`set :\`type sed\` ; eval echo '$'$#`
+ CAT=`searchpath cat "$PATH"`
+ GREP=`searchpath grep "$PATH"`
+ SED=`searchpath sed "$PATH"`
#
# Another fundamental requirement is the 'groff' program itself;
-# we will first perform a PATH search to locate this; however,
-# we will prefer any version existing in a specified GROFF_BIN_DIR,
-# or, if unspecified, the installed location of 'groff' programs;
-# (this will override the result of the initial PATH search).
+# we MUST use a 'groff' program located in 'GROFF_BIN_DIR', if this
+# is specified; if not, we will search 'GROFF_BIN_PATH', only falling
+# back to a 'PATH' search, if neither of these is specified.
+#
+ if test -n "$GROFF_BIN_DIR"
+ then
+ GPATH=GROFF_BIN_DIR
+ GROFF=`searchpath groff "$GROFF_BIN_DIR"`
#
- GROFF=':'
- type groff >$NULLDEV 2>&1 && GROFF=`set :\`type groff\` ; eval echo '$'$#`
- type ${GROFF_BIN_DIR="@GROFF_BIN_DIR@"}/groff >$NULLDEV 2>&1 \
- && GROFF=`set :\`type $GROFF_BIN_DIR/groff\` ; eval echo '$'$#`
+ elif test -n "$GROFF_BIN_PATH"
+ then
+ GPATH=GROFF_BIN_PATH
+ GROFF=`searchpath groff "$GROFF_BIN_PATH"`
+#
+ else
+ GPATH=PATH
+ GROFF=`searchpath groff "$PATH"`
+ fi
#
# If one or more of these is missing, diagnose and bail out.
#
- NO=''
- NOPROG="$CMD: installation problem: cannot find program"
+ NO='' NOPROG="$CMD: installation problem: cannot find program"
test "$CAT" = ":" && echo >&2 "$NOPROG 'cat' in PATH" && NO="$NO 'cat'"
test "$GREP" = ":" && echo >&2 "$NOPROG 'grep' in PATH" && NO="$NO 'grep'"
- test "$GROFF" = ":" && echo >&2 "$NOPROG 'groff' in $GBIN" && NO="$NO 'groff'"
+ test "$GROFF" = ":" && echo >&2 "$NOPROG 'groff' in $GPATH" && NO="$NO 'groff'"
test "$SED" = ":" && echo >&2 "$NOPROG 'sed' in PATH" && NO="$NO 'sed'"
if test -n "$NO"
then
@@ -349,15 +379,19 @@
# In order to correctly resolve 'pdfmark' references,
# we need to have both the 'awk' and 'diff' programs available.
#
- NO='' AWK=':'
- eval set ${GROFF_AWK_INTERPRETER-"@GROFF_AWK_INTERPRETERS@"}
- while test $# -gt 0
- do
- type $1 >$NULLDEV 2>&1 && AWK=`set :\`type $1\` ; eval echo '$'$#`
- test "$AWK" = ":" || set "$AWK"
- shift
- done
- type diff >$NULLDEV 2>&1 && DIFF=`set :\`type diff\` ; eval echo '$'$#`
+ NO=''
+ if test -n "$GROFF_AWK_INTERPRETER"
+ then
+ AWK="$GROFF_AWK_INTERPRETER"
+ test -f "$AWK" && test -x "$AWK" || AWK=":"
+ else
+ for prog in @GROFF_AWK_INTERPRETERS@
+ do
+ AWK=`searchpath $prog "$PATH"`
+ test "$AWK" = ":" || break
+ done
+ fi
+ DIFF=`searchpath diff "$PATH"`
test "$AWK" = ":" && echo >&2 "$NOPROG 'awk' in PATH" && NO="$NO 'awk'"
test "$DIFF" = ":" && echo >&2 "$NOPROG 'diff' in PATH" && NO="$NO 'diff'"
if test -n "$NO"
@@ -443,14 +477,17 @@
# from which the PDF output will be compiled -- but before proceding further ...
# let's make sure we have a GhostScript interpreter to convert them!
#
- GS=':'
- eval set ${GROFF_GHOSTSCRIPT_INTERPRETER-"@GROFF_GHOSTSCRIPT_INTERPRETERS@"}
- while test $# -gt 0
- do
- type $1 >$NULLDEV 2>&1 && GS=`set :\`type $1\` ; eval echo '$'$#`
- test "$GS" = ":" || set "$GS"
- shift
- done
+ if test -n "$GROFF_GHOSTSCRIPT_INTERPRETER"
+ then
+ GS="$GROFF_GHOSTSCRIPT_INTERPRETER"
+ test -f "$GS" && test -x "$GS" || GS=":"
+ else
+ for prog in @GROFF_GHOSTSCRIPT_INTERPRETERS@
+ do
+ GS=`searchpath $prog "$PATH"`
+ test "$GS" = ":" || break
+ done
+ fi
#
# If we could not find a GhostScript interpreter, then we can do no more.
#
diff --git a/contrib/pic2graph/pic2graph.sh b/contrib/pic2graph/pic2graph.sh
index 9620f692..5a066cef 100644
--- a/contrib/pic2graph/pic2graph.sh
+++ b/contrib/pic2graph/pic2graph.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
#
# pic2graph -- compile PIC image descriptions to bitmap images
#
@@ -32,7 +32,7 @@
# We don't have complete option coverage on eqn because this is primarily
# intended as a pic translator; we can live with eqn defaults.
#
-# $Id: pic2graph.sh,v 1.6 2005/05/17 20:20:53 wl Exp $
+# $Id: pic2graph.sh,v 1.7 2005/05/18 07:03:07 wl Exp $
#
groffpic_opts=""
gs_opts=""
diff --git a/font/devps/generate/afmname b/font/devps/generate/afmname
index 3e837df2..7d193493 100755
--- a/font/devps/generate/afmname
+++ b/font/devps/generate/afmname
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
# Fix the path name of an AFM file.
if test -f "$1"
then
diff --git a/src/devices/xditview/ad2c b/src/devices/xditview/ad2c
index 43551ae8..ad5d1215 100644
--- a/src/devices/xditview/ad2c
+++ b/src/devices/xditview/ad2c
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
#
# ad2c : Convert app-defaults file to C strings decls.
#
diff --git a/src/preproc/eqn/neqn.sh b/src/preproc/eqn/neqn.sh
index f2b5fdfc..f22a2baa 100644
--- a/src/preproc/eqn/neqn.sh
+++ b/src/preproc/eqn/neqn.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
# Provision of this shell script should not be taken to imply that use of
# GNU eqn with groff -Tascii|-Tlatin1|-Tutf8|-Tcp1047 is supported.
diff --git a/src/roff/grog/grog.pl b/src/roff/grog/grog.pl
index 07fa7a44..b802fd56 100644
--- a/src/roff/grog/grog.pl
+++ b/src/roff/grog/grog.pl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#! /usr/bin/perl
# grog -- guess options for groff command
# Inspired by doctype script in Kernighan & Pike, Unix Programming
# Environment, pp 306-8.
diff --git a/src/roff/grog/grog.sh b/src/roff/grog/grog.sh
index 3999d77d..1a937cb1 100644
--- a/src/roff/grog/grog.sh
+++ b/src/roff/grog/grog.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
# grog -- guess options for groff command
# Like doctype in Kernighan & Pike, Unix Programming Environment, pp 306-8.
diff --git a/src/roff/nroff/nroff.sh b/src/roff/nroff/nroff.sh
index 6eac45bf..cc63fa7a 100644
--- a/src/roff/nroff/nroff.sh
+++ b/src/roff/nroff/nroff.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
# Emulate nroff with groff.
prog="$0"