[comp.emacs] Suspending GNU 18.51 on HP s800

bd@hpsemc.HP.COM (bob desinger) (05/29/88)

In src/sysdep.c near line 479, sys_suspend() decides to suspend Emacs
or fork a subshell depending if you're BSD or not.  The code goes like
this [edited a bit]:

	sys_suspend ()
	{
	#ifdef VMS
	  [VMS code calling LIB$ATTACH]

	#else
	#ifdef BSD	/* line 479 */
	  killpg (getpgrp (0), SIGTSTP);

	#else
	#ifdef USG_JOBCTRL
	  [black magic incantation for csh hack]

	#else
	/* On a system where suspending is not implemented,
	   instead fork a subshell and let it talk directly to the terminal
	   while we wait.  */

Some System V boxes these days implement BSD job control, and due to
Guy Harris and Dave Lennert's POSIX proposal for implementing BSD job
control on System V there's going to be more in the future.  Line 479
should be changed from

	#ifdef BSD
to
	#ifdef SIGTSTP

which makes it work on System V boxes that support job control like
the HP 9000 Series 800.  Actually, in m-hp9000s800.h you'll need a
couple of lines in addition to the above fix:

	/* BSD's killpg() functionality is subsumed by HP-UX's kill(). */
	#define	killpg(p,s)	kill(-(p), s)

-- bd

bd@hpsemc.HP.COM (bob desinger) (05/29/88)

Another hp9000s800-related matter.

First of all, thanks be to RMS for splitting out the different
unexec() versions into separate files!  This makes life much easier.
In fact, I'm using a different version of unexec() from the one
distributed with 18.51 as unexhp9k800.c.  Mine doesn't drop a core
file and also allows the use of the symbolic debugger on Emacs.  After
I've used it for a couple of weeks and it proves stable, I'll try to
get permission from its author to give it to GNU.  It's been fine for
a week now.  (The 18.51 version worked for about 10 minutes before
giving up the ghost.)

Anyway, the src/unexhp9ks800.c file distributed with 18.51 has a typo
in two places that prevent it from compiling.  Two declarations of
"FILE" in column 1 have an "@" in front of them, which is evidently a
holdover from someone's shar program.  (It's common for shars to pad
`F' in column 1 since uucp mailers tend to want to put `>' characters
in front of them.)

Somehow the "@" didn't get stripped out like they should have.
Remove them by hand from lines 194 and 288, or apply this patch:

194c194
< @FILE *new, *a_out;
---
> FILE *new, *a_out;
288c288
< @FILE *new;
---
> FILE *new;

bd@hpsemc.HP.COM (bob desinger) (05/30/88)

Another m-hp9000s800.h note.  Near line 171 appears the comment:

> /* In hpux, for unknown reasons, S_IFLNK is defined even though
>    symbolic links do not exist.
>    Make sure our conditionals based on S_IFLNK are not confused.

Then it #undefs S_IFLNK on line 178.  Well, at revision 2.0 of HP-UX
on the Series 800, symbolic links exist.  So this undef should be
commented out if you're running 2.0 or later.

One way to do this semi-portably would be by imitating the scheme used
in m-hp9000s300.h: allowing a #define of HPUX_1 and keeping the #undef
on line 178 only if HPUX_1 was defined.  I'd be satisfied with merely
commenting out the #undef, and cloning the comment in m-hp9000s300.h
about symlinks not existing on version 1 of HP-UX.

Now you know why S_IFLNK was defined even though symlinks didn't
exist.  The code was in the kernel---HP-UX started from a Berkeley
kernel---but was just #ifdef'ed out until there was enough demand to
justify the extra resources that it would take to support it.

-- bd