Article View: comp.lang.lisp.x
Article #319Re: Problem apparently solved
From: Niels Mayer
Date: Sat, 25 May 1991 01:28
Date: Sat, 25 May 1991 01:28
566 lines
12859 bytes
12859 bytes
In article <1991May24.215346.7480@agate.berkeley.edu> maverick@cork.Berkeley.EDU (Vance Maverick) writes:
>I took the version of XLISP 2.1 available under the WINTERP distribution from export.lcs.mit.edu, and after some twiddling, that seems to work fine.
Note that the version of XLISP 2.1 in WINTERP does not have all the Tom
Almy bugfixes and patches applied to it. Despite not being the latest and
greates, it works ok for us currently. Some release in the near future will
be a merge of the Almy XLISP with WINTERP's.
Until then, you may be interested in what I had to do to get the version of
XLISP 2.1 on bikini.cis.ufl.edu (containing the Tom Almy patches as well as
the Ken Whedbee patches) to run on HPUX 7.0 on an HP 9000 series 370.
--------------------
To: kcw@cis.ufl.edu (Ken Whedbee)
Subject: problems compiling XLISP/src/unixstuf.c on HPUX 7.0
Organization: Hewlett-Packard Labs, Software & Systems Lab, Palo Alto, CA.
X-Mailer: mh6.7
Date: Tue, 14 May 91 16:53:55 PDT
Message-ID: <8617.674265235@hplnpm.hpl.hp.com>
From: Niels P. Mayer <mayer@hplnpm.hpl.hp.com>
> the improved version of xlisp2.1 can be found at:
> anonymous/ftp bikini.cis.ufl.edu (or 128.227.224.1)
> and: pub/xlisp.tar.Z "unix version"
I grabbed this version and compiled it on my HP9000s370 running HPUX 7.0 --
I got the following compiler errors:
| hplnpm-301-.../xlisp-2.1.almy+whedbee/src> make -f makeunix
| cc -O -DUNIX -c xlisp.c
| ...
| cc -O -DUNIX -c unixstuf.c
| "unixstuf.c", line 41: redeclaration of times
| "unixstuf.c", line 152: warning: incorrect combination of pointer and integer, op =
| *** Error code 1
I fixed it with the following patch:
==============================================================================
*** unixstuf.c.~1~ Fri Apr 12 04:00:00 1991
--- unixstuf.c Tue May 14 15:56:33 1991
***************
*** 13,18
********************************************************************************
*/
#include <signal.h>
#include <sys/types.h>
#include <sys/times.h>
--- 13,19 -----
********************************************************************************
*/
+ #include <stdlib.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/times.h>
***************
*** 38,44
/* -- external variables */
extern FILE *tfp;
! extern long times();
extern LVAL xlenv, xlfenv, xldenv;
/* -- local variables */
--- 39,45 -----
/* -- external variables */
extern FILE *tfp;
! /* extern long times(); NPM */
extern LVAL xlenv, xlfenv, xldenv;
/* -- local variables */
==============================================================================
However, now when I run xlisp,
(1) I cannot evaluate expressions by hitting <return>.
(2) ^T generates a core dump:
[ Tue May 14 16:11:13 Free: 251, GC calls: 1, Total: 39441 ]
Segmentation fault (core dumped)
Because of (1), I can't test whether the time functions you added (e.g.
time) actually work on HPUX.
I'll have to figure out what is going wrong here at some later time. I
just wanted to tell you that there seem to be problems with this version of
XLISP.
=========================== take 2 ===============================================
Just to check on things, I peephole-commented out the offending tty-control
lines in unixstuf.c and ran a few cursory tests -- things seem to work ok,
including the time functions). Note that I didn't actually look closely at
the stuff I commented out, so there may be unknown problems lurking....
more later.
You may want to make the tty-control stuff a compilation option. I don't
know if I'd qualify as normal unix xlisp user, but I tend to use xlisp
under an emacs process. The current lisp subprocess facilities under emacs
seem to work well w/ buffered I/O; furthermore, the desired ^T, ^C, ^P etc
functionality can all be done inside emacs (upon appropriate keypress have
emacs send the appropriate function call to xlisp). Of course, it is nice
to be able to break out of an infinite loop (etc) using a signal handler.
Here's the patch for the final version of unixstuf.c with which I got a
working version of xlisp:
==============================================================================
*** unixstuf.c.~1~ Fri Apr 12 04:00:00 1991
--- unixstuf.c Tue May 14 16:22:55 1991
***************
*** 13,18
********************************************************************************
*/
#include <signal.h>
#include <sys/types.h>
#include <sys/times.h>
--- 13,19 -----
********************************************************************************
*/
+ #include <stdlib.h> /* NPM */
#include <signal.h>
#include <sys/types.h>
#include <sys/times.h>
***************
*** 17,22
#include <sys/types.h>
#include <sys/times.h>
#ifdef BSD
#include <sys/ioctl.h>
struct sgttyb savetty;
--- 18,24 -----
#include <sys/types.h>
#include <sys/times.h>
+ #ifdef COMMENTED_OUT_BY_NPM
#ifdef BSD
#include <sys/ioctl.h>
struct sgttyb savetty;
***************
*** 27,33
#include <termio.h>
struct termio savetty;
struct termio newtty;
! #define stty(fd,arg) (ioctl(fd, TCGETA, arg))
#define gtty(fd,arg) (ioctl(fd, TCSETAF, arg))
#endif
--- 29,35 -----
#include <termio.h>
struct termio savetty;
struct termio newtty;
! #define tty(fd,arg) (ioctl(fd, TCGETA, arg))
#define gtty(fd,arg) (ioctl(fd, TCSETAF, arg))
#endif
#endif
***************
*** 30,35
#define stty(fd,arg) (ioctl(fd, TCGETA, arg))
#define gtty(fd,arg) (ioctl(fd, TCSETAF, arg))
#endif
#include "xlisp.h"
--- 32,38 -----
#define tty(fd,arg) (ioctl(fd, TCGETA, arg))
#define gtty(fd,arg) (ioctl(fd, TCSETAF, arg))
#endif
+ #endif
#include "xlisp.h"
***************
*** 38,44
/* -- external variables */
extern FILE *tfp;
! extern long times();
extern LVAL xlenv, xlfenv, xldenv;
/* -- local variables */
--- 41,49 -----
/* -- external variables */
extern FILE *tfp;
! #ifdef COMMENTED_OUT_BY_NPM
! extern long times();
! #endif
extern LVAL xlenv, xlfenv, xldenv;
/* -- local variables */
***************
*** 48,53
static int lindex;
static int lcount;
char *xfgets();
char read_keybd();
--- 53,59 -----
static int lindex;
static int lcount;
+ #ifdef COMMENTED_OUT_BY_NPM
char *xfgets();
char read_keybd();
#endif
***************
*** 50,55
char *xfgets();
char read_keybd();
/******************************************************************************
--- 56,62 -----
#ifdef COMMENTED_OUT_BY_NPM
char *xfgets();
char read_keybd();
+ #endif
/******************************************************************************
* xsystem - run a process, sending output (if any) to stdout/stderr
***************
*** 51,57
char *xfgets();
char read_keybd();
-
/******************************************************************************
* xsystem - run a process, sending output (if any) to stdout/stderr
*
--- 58,63 -----
char read_keybd();
#endif
/******************************************************************************
* xsystem - run a process, sending output (if any) to stdout/stderr
*
***************
*** 102,107
char *banner;
{
fprintf(stderr,"%s\nUNIX version\n", banner );
init_tty();
lindex = 0;
lcount = 0;
--- 108,114 -----
char *banner;
{
fprintf(stderr,"%s\nUNIX version\n", banner );
+ #ifdef COMMENTED_OUT_BY_NPM
init_tty();
#endif
lindex = 0;
***************
*** 103,108
{
fprintf(stderr,"%s\nUNIX version\n", banner );
init_tty();
lindex = 0;
lcount = 0;
}
--- 110,116 -----
fprintf(stderr,"%s\nUNIX version\n", banner );
#ifdef COMMENTED_OUT_BY_NPM
init_tty();
+ #endif
lindex = 0;
lcount = 0;
}
***************
*** 110,115
/* -- osfinish - clean up before returning to the operating system */
osfinish()
{
stty(0, &savetty);
}
--- 118,124 -----
/* -- osfinish - clean up before returning to the operating system */
osfinish()
{
+ #ifdef COMMENTED_OUT_BY_NPM
stty(0, &savetty);
#endif
}
***************
*** 111,116
osfinish()
{
stty(0, &savetty);
}
--- 120,126 -----
{
#ifdef COMMENTED_OUT_BY_NPM
stty(0, &savetty);
+ #endif
}
***************
*** 210,215
int ostgetc()
{
while(--lcount < 0 )
{
if ( xfgets(lbuf,LBSIZE,stdin) == NULL )
--- 220,226 -----
int ostgetc()
{
+ #ifdef COMMENTED_OUT_BY_NPM
while(--lcount < 0 )
{
if ( xfgets(lbuf,LBSIZE,stdin) == NULL )
***************
*** 223,228
}
return( lbuf[lindex++] );
}
--- 234,252 -----
}
return( lbuf[lindex++] );
+ #else
+ while(--lcount < 0 )
+ {
+ if ( fgets(lbuf,LBSIZE,stdin) == NULL )
+ return( EOF );
+ if ( tfp )
+ fputs( lbuf, tfp );
+ lcount = strlen( lbuf );
+ lindex = 0;
+ }
+
+ return( lbuf[lindex++] );
+ #endif
}
***************
*** 259,264
{
}
osx_check(ch)
char ch;
{
--- 283,289 -----
{
}
+ #ifdef COMMENTED_OUT_BY_NPM
osx_check(ch)
char ch;
{
***************
*** 274,279
printf("\n ");
}
}
/* -- ossymbols - enter os-specific symbols */
--- 299,305 -----
printf("\n ");
}
}
+ #endif
/* -- ossymbols - enter os-specific symbols */
ossymbols()
***************
*** 275,281
}
}
-
/* -- ossymbols - enter os-specific symbols */
ossymbols()
{
--- 301,306 -----
}
#endif
/* -- ossymbols - enter os-specific symbols */
ossymbols()
{
***************
*** 305,311
ostputc('\n');
}
!
char read_keybd()
{
int nrd;
--- 330,336 -----
ostputc('\n');
}
! #ifdef COMMENTED_OUT_BY_NPM
char read_keybd()
{
int nrd;
***************
*** 324,329
return(buf[0]);
}
init_tty()
--- 349,355 -----
return(buf[0]);
}
+ #endif
#ifdef COMMENTED_OUT_BY_NPM
init_tty()
***************
*** 325,331
return(buf[0]);
}
!
init_tty()
{
/* extern sigcatch(); */
--- 351,357 -----
}
#endif
! #ifdef COMMENTED_OUT_BY_NPM
init_tty()
{
/* extern sigcatch(); */
***************
*** 364,369
exit();
}
}
onsusp()
{
--- 390,396 -----
exit();
}
}
+ #endif
#ifdef COMMENTED_OUT_BY_NPM
onsusp()
***************
*** 365,370
}
}
onsusp()
{
/* ignore SIGTTOU so we dont get stopped if csh grabs the tty */
--- 392,398 -----
}
#endif
+ #ifdef COMMENTED_OUT_BY_NPM
onsusp()
{
/* ignore SIGTTOU so we dont get stopped if csh grabs the tty */
***************
*** 383,388
signal(SIGTSTP, onsusp);
stty(0, &newtty);
}
--- 411,417 -----
signal(SIGTSTP, onsusp);
stty(0, &newtty);
}
+ #endif
#ifdef COMMENTED_OUT_BY_NPM
char *xfgets(s, n, iop)
***************
*** 384,391
stty(0, &newtty);
}
!
!
char *xfgets(s, n, iop)
char *s;
register FILE *iop;
--- 413,419 -----
}
#endif
! #ifdef COMMENTED_OUT_BY_NPM
char *xfgets(s, n, iop)
char *s;
register FILE *iop;
***************
*** 418,423
*cs++ = '\0';
return(s);
}
#ifdef TIMES
/***********************************************************************/
--- 446,452 -----
*cs++ = '\0';
return(s);
}
+ #endif
#ifdef TIMES
/***********************************************************************/
-------------------------------------------------------------------------------
Niels Mayer -- hplabs!mayer -- mayer@hplabs.hp.com
Human-Computer Interaction Department
Hewlett-Packard Laboratories
Palo Alto, CA.
*
Technical Details
Message-ID:
<6949@hplabsz.hplabs.hpl.hp.com>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!bu.edu!snorkelwacker.mit.edu!bloom-beacon!ora!camb.com!spdcc!hsdndev!wuarchive!usc!elroy.jpl.nasa.gov!swrinde!mips!pacbell.com!decwrl!ucbvax!hplabs!mayerReferences:
<1991May24.215346.7480@agate.berkeley.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!bu.edu!snorkelwacker.mit.edu!bloom-beacon!ora!camb.com!spdcc!hsdndev!wuarchive!usc!elroy.jpl.nasa.gov!swrinde!mips!pacbell.com!decwrl!ucbvax!hplabs!mayer From: mayer@hplabs.hpl.hp.com (Niels Mayer) Newsgroups: comp.lang.lisp.x Subject: Re: Problem apparently solved Message-ID: <6949@hplabsz.hplabs.hpl.hp.com> Date: 25 May 91 01:28:06 GMT References: <1991May24.215346.7480@agate.berkeley.edu> Reply-To: mayer@hplabs.hp.com (Niels Mayer) Organization: Babylon Systems, Inc. Lines: 566