koreth%panarthea.ebay@sun.com (Steven Grimm) (08/20/89)
Submitted-by: uunet.UU.NET!unido!sbsvax!roeder (Edgar Roeder) Posting-number: Volume 2, Issue 73 Archive-name: gcclib2/part02 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 2 (of 7)." # Contents: atexit.c close.c closedir.c.cdiff console.c.cdiff # convert.c ctime.c fclose.c fflush.c fopen.c getwd.c # include/ctype.h include/dir.h include/fcntl.h include/file.h # include/ioctl.h include/siglist.h include/sysvars.h # include/tchars.h isatty.c.cdiff localtim.c pause.c sfguts.c.cdiff # std-guts.h strstr.c tchars.c trap-14.c # Wrapped by roeder@sbsvax on Wed Aug 16 22:02:58 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'atexit.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'atexit.c'\" else echo shar: Extracting \"'atexit.c'\" \(671 characters\) sed "s/^X//" >'atexit.c' <<'END_OF_FILE' X/* we allow atexit-registration of an arbitrary number of functions */ X/* ANSI C requires at least 32 -> we should reserve memory for this amount */ X/* but hopefully we can always get what we want */ X Xextern struct func_list { X void (*func)(void); X struct func_list *next_entry; X} *_atexit_list; /* defined in exit.c */ X Xint Xatexit(void (*func)(void)) X{ X struct func_list *new_entry; X extern char *malloc(); X X if(new_entry = (struct func_list *) malloc(sizeof(struct func_list))) { X new_entry->func = func; X new_entry->next_entry = _atexit_list; X _atexit_list = new_entry; X return(0); /* successfull registration */ X } else return(-1); /* registration failed */ X} END_OF_FILE if test 671 -ne `wc -c <'atexit.c'`; then echo shar: \"'atexit.c'\" unpacked with wrong size! fi # end of 'atexit.c' fi if test -f 'close.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'close.c'\" else echo shar: Extracting \"'close.c'\" \(745 characters\) sed "s/^X//" >'close.c' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * Copyright (c) 1988, Memorial University of Newfoundland X * X * $Header: close.c,v 1.2 88/01/29 17:30:58 m68k Exp $ X * X * $Log: close.c,v $ X * Revision 1.1 88/01/29 17:30:58 m68k X * Initial revision X * X * 1.2 jrd X * X */ X#include <osbind.h> X#include <file.h> X X#ifdef DEBUG Xextern int stderr; X#endif X Xint close(fd) X int fd; X{ X extern int errno; X int rval; X X if (fd == 1234) return(0); /* /dev/null */ X if ((rval = Fclose(fd)) < 0) { X errno = -rval; X rval = -1; X } X if ((fd >= 0) && (fd < N_HANDLES)) { X __handle_stat[fd] = FH_UNKNOWN; X free(__handle_to_name[fd]); X __handle_to_name[fd] = (char *) 0; X } X#ifdef DEBUG X fprintf(stderr, "close(%d)->%d\n", fd, rval); X#endif X return rval; X} END_OF_FILE if test 745 -ne `wc -c <'close.c'`; then echo shar: \"'close.c'\" unpacked with wrong size! fi # end of 'close.c' fi if test -f 'closedir.c.cdiff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'closedir.c.cdiff'\" else echo shar: Extracting \"'closedir.c.cdiff'\" \(627 characters\) sed "s/^X//" >'closedir.c.cdiff' <<'END_OF_FILE' X*** terminator/closedir.c Fri Aug 11 18:51:54 1989 X--- new-lib/closedir.c Sat Jul 15 13:39:30 1989 X*************** X*** 22,23 **** X--- 22,24 ---- X static void free_dircontents(); X+ extern DIR *_current_open_directory; X X*************** X*** 27,29 **** X--- 28,45 ---- X { X+ DIR *dp; X+ X free_dircontents(dirp->dd_contents); X+ free(dirp->dd_name); X+ dp = _current_open_directory; X+ if(dp == dirp) { X+ _current_open_directory = dp->dd_next; X+ } else { X+ while(dp->dd_next) { X+ if(dp->dd_next == dirp) { X+ dp->dd_next = dirp->dd_next; X+ break; X+ } X+ dp = dp->dd_next; X+ } X+ } X free((char *) dirp); END_OF_FILE if test 627 -ne `wc -c <'closedir.c.cdiff'`; then echo shar: \"'closedir.c.cdiff'\" unpacked with wrong size! fi # end of 'closedir.c.cdiff' fi if test -f 'console.c.cdiff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'console.c.cdiff'\" else echo shar: Extracting \"'console.c.cdiff'\" \(941 characters\) sed "s/^X//" >'console.c.cdiff' <<'END_OF_FILE' X*** terminator/console.c Fri Aug 11 18:51:55 1989 X--- new-lib/console.c Tue Aug 15 21:08:16 1989 X*************** X*** 1,2 **** X- X /* console IO stuff. Abstracted out here cause I'm having so much trouble X--- 1 ---- X*************** X*** 10,11 **** X--- 9,16 ---- X Sigh. X+ X+ There seem to be some people in the atari st community who have never X+ heard about the st's character set. There are some chars > 0x7F which X+ can be printed. And they will be printed. X+ This code assumes that nowbody tries to read from stderr if stdin is X+ redirected to AUX:. X */ X*************** X*** 20,23 **** X X! Fread(gem_handle, 1L, &c[0]); X! return(c[0] & 0xFF); X } X--- 25,29 ---- X X! return(Bconin(2)); /* isatty(gem_handle) == TRUE */ X! /* Fread(gem_handle, 1L, &c[0]); X! return(c[0] & 0xFF); */ X } X*************** X*** 44,46 **** X { X! return(0); X /* X--- 50,53 ---- X { X! return(Bconstat(2)); X! /* return(0); */ X /* END_OF_FILE if test 941 -ne `wc -c <'console.c.cdiff'`; then echo shar: \"'console.c.cdiff'\" unpacked with wrong size! fi # end of 'console.c.cdiff' fi if test -f 'convert.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'convert.c'\" else echo shar: Extracting \"'convert.c'\" \(1007 characters\) sed "s/^X//" >'convert.c' <<'END_OF_FILE' X/* convert a unix-style filename to its TOS equivalent X * /dev/A/dir/file.ext --> A:\DIR\FILE.EXT X * X * (er) : Added check for root directories (name ends after '/dev/A'). X * X */ X X#include <ctype.h> X Xchar * Xunix_to_tos(char *fname) X{ X char *p; X X if(fname) { X for(p = fname; *p; p++) X if(*p == '/') *p = '\\'; X else if(islower(*p)) *p = toupper(*p); X if(!strncmp(fname,"\\DEV\\",5)) { X if(!strcmp(fname+5,"TTY")) { X strcpy(fname,"CON:"); X } else if(fname[5] && !fname[6] || fname[6] == '\\') { X strcpy(fname+1,fname+5); X fname[0] = fname[1]; X fname[1] = ':'; X } X } X } X return(fname); X} X X/* convert a TOS-style filename to its unix equivalent X * A:\DIR\FILE.EXT --> a:/dir/file.ext X * i would like to do: A:\DIR\FILE.EXT --> /dev/A/dir/file.ext, but this X * would require to allocate room for the bigger string X * X */ Xchar * Xtos_to_unix(char *fname) X{ X char *p; X X if(fname) for(p = fname; *p; p++) X if(*p == '\\') *p = '/'; X else if(isupper(*p)) *p = tolower(*p); X return(fname); X} END_OF_FILE if test 1007 -ne `wc -c <'convert.c'`; then echo shar: \"'convert.c'\" unpacked with wrong size! fi # end of 'convert.c' fi if test -f 'ctime.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'ctime.c'\" else echo shar: Extracting \"'ctime.c'\" \(887 characters\) sed "s/^X//" >'ctime.c' <<'END_OF_FILE' X/* X * char *ctime (zeiger auf(anzahl der sekunden seit 1.1.1970 0.00 GMT)) X * die anzahl der sekunden liefert normalerweise time() X * X * rueckgabe: ein string der laenge 26 bytes im format X * DDD MMM dd hh:mm:ss YYYY\n\0 X * bsp: Wed Sep 04 15:13:00 1985\n\0 X * X * stefan brueck 31/12/88 X */ X X#include <time.h> X Xchar ctime_buf[26]; /* is it safe to use a static one? */ X Xchar * month_name[] = {"???", "Jan", "Feb", "Mar", "Apr", "May", "Jun", X "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; Xchar * day_name[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; X Xchar * ctime(date_and_time) Xlong * date_and_time; X{ X struct tm *ut; X X ut = localtime(date_and_time); X sprintf(ctime_buf, "%s %s %02d %02d:%02d:%02d %04d\n",day_name[ut->tm_wday], month_name[(ut->tm_mon)+1], ut->tm_mday, ut->tm_hour, ut->tm_min, (int) ut->tm_sec, ut->tm_year + 1900); X X return((char * )ctime_buf); X} X END_OF_FILE if test 887 -ne `wc -c <'ctime.c'`; then echo shar: \"'ctime.c'\" unpacked with wrong size! fi # end of 'ctime.c' fi if test -f 'fclose.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fclose.c'\" else echo shar: Extracting \"'fclose.c'\" \(956 characters\) sed "s/^X//" >'fclose.c' <<'END_OF_FILE' X/* fclose */ X/* X * 4/1/88 changed by stefan brueck: X */ X X#include <errno.h> X#include <file.h> X#include "std-guts.h" X Xint fclose (f) Xstruct file * f; X{ X if (f) { X int i; X X if (f->open_p) { X if (((f->flags & 0x03) == O_WRONLY) || X ((f->flags & 0x03) == O_RDWR)) X { X /* see if buffer needs flushing */ X int len = f->buf_max; X if (len > 0) X { X /* X * ..sb X * jump to the place where this buffer came from X */ X if (!isatty(f->handle)) X lseek (f->handle, f->file_position, 0); X /* X * now go on like before X */ X write(f->handle, &f->buf, len); X f->buf_index = f->buf_max = 0; X } X } X if ((f->handle > 2) || (!isatty(f->handle))) X close(f->handle); X _remove_open_file(f); X } X } X if (f && (f != stdin) && (f != stdout) && (f != stderr)) X free(f); X X return(0); /* really should check for err ... */ X} END_OF_FILE if test 956 -ne `wc -c <'fclose.c'`; then echo shar: \"'fclose.c'\" unpacked with wrong size! fi # end of 'fclose.c' fi if test -f 'fflush.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fflush.c'\" else echo shar: Extracting \"'fflush.c'\" \(1047 characters\) sed "s/^X//" >'fflush.c' <<'END_OF_FILE' X/* fflush */ X X#include <file.h> X#include "std-guts.h" X Xextern int _fflush_all_files(); X Xint Xfflush (f) Xstruct file * f; X{ X if (!f) return(_fflush_all_files()); X if (f->open_p && X (((f->flags & 0x03) == O_WRONLY) || ((f->flags & 0x03) == O_RDWR))) X { X int err = 0; X int new_pos; X int len = f->buf_max; X X if (len > 0) X { X if (f->flags & O_APPEND) { X new_pos = lseek(f->handle, 0L, L_XTND); X if (new_pos >= 0) X f->file_position = new_pos; X } else lseek(f->handle, f->file_position, L_SET); X if (f->flags & O_DIRTY) { X /* the dirty flag is cleared before write to avoid */ X /* loops if fflush gets recursively called by exit */ X /* if ^C is pressed during this write */ X f->flags &= ~O_DIRTY; X err = _write_internal(f->handle, &f->buf, len, X f->flags & FILE_BINARY_P); X if (err < 0) { X f->last_file_error = err; X f->flags |= O_DIRTY; X return (EOF); X } X } X f->last_file_error = 0; X } X f->file_position += len; X lseek(f->handle, f->file_position, L_SET); X f->buf_index = f->buf_max = 0; X } X return(0); X} END_OF_FILE if test 1047 -ne `wc -c <'fflush.c'`; then echo shar: \"'fflush.c'\" unpacked with wrong size! fi # end of 'fflush.c' fi if test -f 'fopen.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fopen.c'\" else echo shar: Extracting \"'fopen.c'\" \(795 characters\) sed "s/^X//" >'fopen.c' <<'END_OF_FILE' X/* fopen */ X X#include <file.h> X#include <errno.h> X#include "std-guts.h" X Xstruct file * fopen (name, mode) Xchar * name; Xchar * mode; X{ X int handle; X struct file * f; X int open_flags; X X open_flags = _parse_open_options(mode); X handle = open (name, open_flags, 0664); /* try to open it */ X if (handle <= 0) X { X errno = -handle; X return(NULL); /* couldn't open */ X } X else X { X f = (struct file * )malloc(sizeof (struct file)); X f->handle = handle; X f->open_p = 1; X f->eof_p = 0; X f->last_file_error = 0; X f->flags = open_flags; X f->buf_index = 0; /* so far... */ X f->buf_max = 0; /* nothing in buf yet */ X f->file_position = 0; /* nothing read yet */ X/* zzz should really check for file length here, for cases when we're X appending... */ X X _add_open_file(f); X return(f); X } X X} END_OF_FILE if test 795 -ne `wc -c <'fopen.c'`; then echo shar: \"'fopen.c'\" unpacked with wrong size! fi # end of 'fopen.c' fi if test -f 'getwd.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'getwd.c'\" else echo shar: Extracting \"'getwd.c'\" \(661 characters\) sed "s/^X//" >'getwd.c' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * Copyright (c) 1988, Memorial University of Newfoundland X * X * $Header: getwd.c,v 1.1 88/01/29 17:29:47 m68k Exp $ X * X * $Log: getwd.c,v $ X * Revision 1.1 88/01/29 17:29:47 m68k X * Initial revision X * X * jrd 1.2 X * initial ver was all fucked. re-wrote. X * X */ X#include <osbind.h> X#include <string.h> X#include <param.h> X Xchar * Xgetwd(char *buf) X{ X int rval; X int drv; X char *p; X X drv = Dgetdrv(); X if ((rval = Dgetpath(buf + 6, drv + 1)) < 0) { X return (char *) 0; X } X strcpy(buf,"/dev/"); X buf[5] = drv + 'A'; X tos_to_unix(buf+6); X X return buf; X} X Xchar * Xgetcwd(char *buf) X{ X return(getwd(buf)); X} END_OF_FILE if test 661 -ne `wc -c <'getwd.c'`; then echo shar: \"'getwd.c'\" unpacked with wrong size! fi # end of 'getwd.c' fi if test -f 'include/ctype.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'include/ctype.h'\" else echo shar: Extracting \"'include/ctype.h'\" \(1052 characters\) sed "s/^X//" >'include/ctype.h' <<'END_OF_FILE' X/* X * ctype.h X * X * Patterned after the Eunuchs one by jrd X * 12/30/86 X * X */ X X /* upcase alphabetic */ X#define _U 01 X /* lowcase alpha */ X#define _L 02 X /* numeric */ X#define _N 04 X /* whitespace */ X#define _S 010 X /* printable */ X#define _P 020 X /* control */ X#define _C 040 X /* hex digit */ X#define _X 0100 X Xextern char _ctype_[]; X X#define isalpha(c) ((_ctype_)[c]&(_U|_L)) X#define isupper(c) ((_ctype_)[c]&_U) X#define islower(c) ((_ctype_)[c]&_L) X#define isdigit(c) ((_ctype_)[c]&_N) X#define isxdigit(c) ((_ctype_)[c]&(_N|_X)) X#define isspace(c) ((_ctype_)[c]&_S) X#define ispunct(c) ((_ctype_)[c]&_P) X#define isalnum(c) ((_ctype_)[c]&(_U|_L|_N)) X#define isprint(c) ((_ctype_)[c]&(_P|_U|_L|_N)) X#define iscntrl(c) ((_ctype_)[c]&_C) X#define isascii(c) ((unsigned)(c)<=0177) X#define _toupper(c) ((c)-'a'+'A') X#define _tolower(c) ((c)-'A'+'a') X#define toascii(c) ((c)&0177) X Xstatic __inline int toupper(int c) { return (islower(c) ? _toupper(c) : c); } Xstatic __inline int tolower(int c) { return (isupper(c) ? _tolower(c) : c); } END_OF_FILE if test 1052 -ne `wc -c <'include/ctype.h'`; then echo shar: \"'include/ctype.h'\" unpacked with wrong size! fi # end of 'include/ctype.h' fi if test -f 'include/dir.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'include/dir.h'\" else echo shar: Extracting \"'include/dir.h'\" \(1362 characters\) sed "s/^X//" >'include/dir.h' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * Copyright (c) 1988, Memorial University of Newfoundland X * X * A public domain implementation of BSD directory routines for X * MS-DOS. Written by Michael Rendell ({uunet,utai}michael@garfield), X * August 1897 X * X * $Header: dir.h,v 1.1 88/01/29 17:22:25 m68k Exp $ X * X * $Log: dir.h,v $ X * Revision 1.1 88/01/29 17:22:25 m68k X * Initial revision X * X */ X#ifndef _DIR_H X#define _DIR_H X#ifndef _TYPES_H X#include <types.h> X#endif X X#define rewinddir(dirp) seekdir(dirp, 0L) X X#define MAXNAMLEN 12 X Xstruct direct { X ino_t d_ino; /* a bit of a farce */ X int d_reclen; /* more farce */ X int d_namlen; /* length of d_name */ X char d_name[MAXNAMLEN + 1]; /* garentee null termination */ X}; X Xstruct _dircontents { X char *_d_entry; X struct _dircontents *_d_next; X u_short _d_date; X u_short _d_time; X char _d_attr; X long _d_size; X}; X Xtypedef struct _dirdesc { X int dd_id; /* uniquely identify each open directory */ X long dd_loc; /* where we are in directory entry is this */ X struct _dircontents *dd_contents; /* pointer to contents of dir */ X struct _dircontents *dd_cp; /* pointer to current position */ X char *dd_name; X struct _dirdesc *dd_next; X} DIR; X Xextern DIR *opendir(); Xextern struct direct *readdir(); Xextern void seekdir(); Xextern long telldir(); Xextern void closedir(); X#endif /* _DIR_H */ END_OF_FILE if test 1362 -ne `wc -c <'include/dir.h'`; then echo shar: \"'include/dir.h'\" unpacked with wrong size! fi # end of 'include/dir.h' fi if test -f 'include/fcntl.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'include/fcntl.h'\" else echo shar: Extracting \"'include/fcntl.h'\" \(988 characters\) sed "s/^X//" >'include/fcntl.h' <<'END_OF_FILE' X#ifndef _FCNTL_H X#define _FCNTL_H X X#define O_RDONLY 0 X#define O_WRONLY 1 X#define O_RDWR 2 X#define O_NDELAY 04 /* Non-blocking I/O */ X#define O_APPEND 010 /* append (writes guaranteed at the end) */ X#define O_SYNC 020 /* synchronous write option */ X#define O_DIRTY 0200 /* buffer was changed (needs flushing) */ X X#define O_CREAT 00400 /* create file (uses third open arg) */ X#define O_TRUNC 01000 /* truncate file */ X#define O_EXCL 02000 /* exclusive open */ X X#define FILE_BINARY_P 040 /* file opened for binary access */ X#define FILE_FLUSH_P 0100 X X#define F_DUPFD 0 /* Duplicate fildes */ X#define F_GETFD 1 /* Get fildes flags */ X#define F_SETFD 2 /* Set fildes flags */ X#define F_GETFL 3 /* Get file flags */ X#define F_SETFL 4 /* Set file flags */ X#define F_GETLK 5 /* Get file lock */ X#define F_SETLK 6 /* Set file lock */ X#define F_SETLKW 7 /* Set file lock and wait */ X X#define F_RDLCK 1 X#define F_WRLCK 2 X#define F_UNLCK 3 X Xextern int fcntl (int, int, int); X X#endif END_OF_FILE if test 988 -ne `wc -c <'include/fcntl.h'`; then echo shar: \"'include/fcntl.h'\" unpacked with wrong size! fi # end of 'include/fcntl.h' fi if test -f 'include/file.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'include/file.h'\" else echo shar: Extracting \"'include/file.h'\" \(692 characters\) sed "s/^X//" >'include/file.h' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * Copyright (c) 1988, Memorial University of Newfoundland X * X * $Header: file.h,v 1.1 88/01/29 17:22:27 m68k Exp $ X * X * $Log: file.h,v $ X * Revision 1.1 88/01/29 17:22:27 m68k X * Initial revision X * X */ X X#ifndef FILE_H X#define FILE_H X/* X * open X */ X X#include <fcntl.h> X X/* X * access X */ X#define F_OK 0 X#define X_OK 1 X#define W_OK 2 X#define R_OK 4 X X/* X * lseek X */ X#define L_SET 0 X#define L_INCR 1 X#define L_XTND 2 X X/* defs for handle frob */ X X#define N_HANDLES 64 X Xextern char __handle_stat[]; Xextern char *__handle_to_name[]; X X#define FH_UNKNOWN 0 X#define FH_ISATTY 1 X#define FH_ISAFILE 2 X X/* maybe more later */ X#endif END_OF_FILE if test 692 -ne `wc -c <'include/file.h'`; then echo shar: \"'include/file.h'\" unpacked with wrong size! fi # end of 'include/file.h' fi if test -f 'include/ioctl.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'include/ioctl.h'\" else echo shar: Extracting \"'include/ioctl.h'\" \(1572 characters\) sed "s/^X//" >'include/ioctl.h' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * Copyright (c) 1988, Memorial University of Newfoundland X * X * Some fields in these structures are igored, like the t_suspc/dsuspc and X * t_startc/stopc and t_flushc. Should add an extra field somewhere for X * an extra erase character so both ^H and ^? would work. X * X * $Header: ioctl.h,v 1.1 88/02/03 20:14:16 m68k Exp $ X * X * $Log: ioctl.h,v $ X * Revision 1.1 88/02/03 20:14:16 m68k X * Initial revision X * X */ X#ifndef _IOCTL_ X# define _IOCTL_ X X#define TIOCGETP 0x0000 /* sgttyb */ X#define TIOCSETP 0x0001 X#define TIOCGETC 0x0002 /* tchars */ X#define TIOCSETC 0x0003 X#define TIOCGLTC 0x0004 /* ltchars */ X#define TIOCSLTC 0x0005 X#define TIOCSETN 0x0006 /* used in emacs, is this ok ? */ X Xstruct tchars { X char t_intrc; X char t_quitc; X char t_startc; X char t_stopc; X char t_eofc; X char t_brkc; X}; X Xstruct ltchars { X char t_suspc; X char t_dsuspc; X char t_rprntc; X char t_flushc; X char t_werasc; X char t_lnextc; X}; X X#define CRMOD 0x0001 X#define CBREAK 0x0002 X#define ECHO 0x0004 X#define XTABS 0x0008 X#define RAW 0x0010 X#define LCASE 0x0000 /* does nothing (and never will!) */ X#define TANDEM 0x0000 /* not needed */ X#define META 0x0100 /* extension: Alternate as meta key */ X X/* Only ones that are likely to be used are here */ X#define B300 0 X#define B1200 1 X#define B2400 2 X#define B4800 3 X#define B9600 4 X X#define ANYP (B300|B1200|B2400|B4800|B9600) X#define ALLDELAY 0 X Xstruct sgttyb { X char sg_ispeed; X char sg_ospeed; X char sg_erase; X char sg_kill; X short sg_flags; X}; X#endif /* _IOCTL_ */ END_OF_FILE if test 1572 -ne `wc -c <'include/ioctl.h'`; then echo shar: \"'include/ioctl.h'\" unpacked with wrong size! fi # end of 'include/ioctl.h' fi if test -f 'include/siglist.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'include/siglist.h'\" else echo shar: Extracting \"'include/siglist.h'\" \(706 characters\) sed "s/^X//" >'include/siglist.h' <<'END_OF_FILE' X/* This file was produced by running make_siglist. Don't edit. */ X Xchar *sys_siglist[] = { X "No signal", X "Alarm clock", X "Segmentation violation", X "Signal 3", X "Illegal instruction", X "Signal 5", X "Signal 6", X "Trace trap", X "Signal 8", X "Signal 9", X "Interrupt", X "Quit", X "Stopped from keyboard", X "Floating point exception", X "Hangup", X "Abnormal termination", X "Software termination", X "User defined signal 1", X "User defined signal 2" X}; X Xchar *signal_names[] = { X "ON_EXIT", X "SIGALRM", X "SIGSEGV", X "0", X "SIGILL", X "0", X "0", X "SIGTRAP", X "0", X "0", X "SIGINT", X "SIGQUIT", X "SIGTSTP", X "SIGFPE", X "SIGHUP", X "SIGABRT", X "SIGTERM", X "SIGUSR1", X "SIGUSR2" X}; END_OF_FILE if test 706 -ne `wc -c <'include/siglist.h'`; then echo shar: \"'include/siglist.h'\" unpacked with wrong size! fi # end of 'include/siglist.h' fi if test -f 'include/sysvars.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'include/sysvars.h'\" else echo shar: Extracting \"'include/sysvars.h'\" \(843 characters\) sed "s/^X//" >'include/sysvars.h' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * Copyright (c) 1988, Memorial University of Newfoundland X * X * Addresses of system variables (these are the ones "cast in stone") - X * add them as you need them. X * X * $Header: sysvars.h,v 1.2 88/02/03 22:30:14 m68k Exp $ X * X * $Log: sysvars.h,v $ X * Revision 1.2 88/02/03 22:30:14 m68k X * Set the high bit in address <64k - this avoids a problem (in 68k chip?) X * that causes things not to work (movl 1212:w, d0 does not work as expected). X * X * Revision 1.1 88/02/03 20:04:48 m68k X * Initial revision X * X */ X#define nvblq ((short *) 0x80000454) X/* This should be pointer to ponter to function returning int but C doesn't X * like dealing with such things X */ X#define _vblqueue ((char ***) 0x80000456) X#define _hz_200 ((long *) 0x800004bA) X#define conterm ((char *) 0x80000484) END_OF_FILE if test 843 -ne `wc -c <'include/sysvars.h'`; then echo shar: \"'include/sysvars.h'\" unpacked with wrong size! fi # end of 'include/sysvars.h' fi if test -f 'include/tchars.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'include/tchars.h'\" else echo shar: Extracting \"'include/tchars.h'\" \(772 characters\) sed "s/^X//" >'include/tchars.h' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * Copyright (c) 1988, Memorial University of Newfoundland X * X * The TC defines are indices into the __tchars array. X * X * $Header: tchars.h,v 1.1 88/02/03 22:58:50 m68k Exp $ X * X * $Log: tchars.h,v $ X * Revision 1.1 88/02/03 22:58:50 m68k X * Initial revision X * X */ X#define TC_ERASE 0 X#define TC_KILL 1 X#define TC_INTRC 2 X#define TC_QUITC 3 X#define TC_EOFC 4 X#define TC_BRKC 5 X#define TC_RPRNTC 6 X#define TC_WERASC 7 X#define TC_LNEXTC 8 X#define TC_RUBOUT 9 X#define TC_SUSPC 10 X#define TC_DSUSPC 11 X#define TC_FLUSHC 12 X#define TC_UNDEF -1 X Xtypedef struct { X unsigned char *unshift; X unsigned char *shift; X unsigned char *capslock; X} KEYTAB; X Xextern char __tchars[]; Xextern int __ttymode; Xextern KEYTAB *__keytab; END_OF_FILE if test 772 -ne `wc -c <'include/tchars.h'`; then echo shar: \"'include/tchars.h'\" unpacked with wrong size! fi # end of 'include/tchars.h' fi if test -f 'isatty.c.cdiff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'isatty.c.cdiff'\" else echo shar: Extracting \"'isatty.c.cdiff'\" \(964 characters\) sed "s/^X//" >'isatty.c.cdiff' <<'END_OF_FILE' X*** terminator/isatty.c Fri Aug 11 18:52:27 1989 X--- new-lib/isatty.c Sat Jan 14 08:24:40 1989 X*************** X*** 13,14 **** X--- 13,15 ---- X X+ if (handle == 1234) return(0); /* /dev/null */ X if (handle < 0) X*************** X*** 17,19 **** X if (__handle_stat[handle] != FH_UNKNOWN) X! return(__handle_stat[handle] == FH_ISATTY); X oldloc = Fseek (0L, handle, L_INCR); /* seek zero bytes from current loc */ X--- 18,20 ---- X if (__handle_stat[handle] != FH_UNKNOWN) X! return(__handle_stat[handle] & FH_ISATTY); X oldloc = Fseek (0L, handle, L_INCR); /* seek zero bytes from current loc */ X*************** X*** 33,37 **** X if (rc) X! __handle_stat[handle] = FH_ISATTY; X else X! __handle_stat[handle] = FH_ISAFILE; X return (rc); /* return true, false, or error */ X--- 34,38 ---- X if (rc) X! __handle_stat[handle] |= FH_ISATTY; X else X! __handle_stat[handle] |= FH_ISAFILE; X return (rc); /* return true, false, or error */ END_OF_FILE if test 964 -ne `wc -c <'isatty.c.cdiff'`; then echo shar: \"'isatty.c.cdiff'\" unpacked with wrong size! fi # end of 'isatty.c.cdiff' fi if test -f 'localtim.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'localtim.c'\" else echo shar: Extracting \"'localtim.c'\" \(1372 characters\) sed "s/^X//" >'localtim.c' <<'END_OF_FILE' X/* X * struct tm *localtime (zeiger auf(sec seit 1.1.1970 0.00 GMT)) X * die anzahl der sekunden liefert normalerweise time() X * X * bsp: X * #include <time.h> X * long p; X * struct tm *ut; X * time(&p); X * ut = localtime(&p); X * X * rueckgabe: ein zeiger auf eine struktur gemaess time.h X * X * stefan brueck 4/1/89 X */ X X#include <time.h> X Xchar day_in_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; X Xstruct tm * localtime(const time_t *const date_and_time) X{ X static struct tm _tm; X int month, year; X long day, sec; X int days_in_year; X X day = (long) (*date_and_time / 86400L); X _tm.tm_wday = (int) ((day + 4) % 7); X sec = *date_and_time - (day * 86400L); X day++; X for ( year = 0 ; 1 ; year++) X { X if ((year + 2) % 4) X days_in_year = 365; X else X days_in_year = 366; X X if (day - days_in_year <= 0) X break; X day -= days_in_year; X } X X _tm.tm_year = year + 70; X _tm.tm_yday = (int) day; X X if (!((year + 2) % 4)) X day_in_month[2] = (char) 29; X else X day_in_month[2] = (char) 28; X X for ( month = 1 ; month < 13 ; month++) X { X if (day - (long) day_in_month[month] <= 0) X break; X day -= (long) day_in_month[month]; X } X X _tm.tm_hour = (int) (sec / 3600L); X sec -= _tm.tm_hour * 3600L; X _tm.tm_min = (int) (sec / 60L); X sec -= _tm.tm_min * 60L; X X _tm.tm_mon = month - 1; X _tm.tm_mday = day; X _tm.tm_sec = sec; X _tm.tm_isdst = 0; X X return (&_tm); X} END_OF_FILE if test 1372 -ne `wc -c <'localtim.c'`; then echo shar: \"'localtim.c'\" unpacked with wrong size! fi # end of 'localtim.c' fi if test -f 'pause.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pause.c'\" else echo shar: Extracting \"'pause.c'\" \(795 characters\) sed "s/^X//" >'pause.c' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * X * $Header: pause.c,v 1.0 89/01/11 00:31:30 m68k Exp $ X * X * $Log: pause.c,v $ X * X * 1.0 er X * X * Revision 1.0 89/01/11 00:31:30 m68k X * Initial revision X * X */ X/* #include <gembios.h> ?? */ X#include <osbind.h> X#include <ioctl.h> X#include <signal.h> X#include "tchars.h" X Xextern volatile char _sig_done; /* defined in signal.c */ X X/* pause waits forever or until a signal comes in */ Xvoid Xpause() X{ X char c; X X _sig_done = 0; X while(!_sig_done) { X if (Cconis()) { X c = Crawcin() & 0xff; X if ((__ttymode & META) && (Kbshift(-1) & 8)) c |= 0x80; X if (__ttymode & RAW) continue; X if ((__ttymode & CRMOD) && c == '\r') c = '\n'; X if (c == __tchars[TC_INTRC]) raise(SIGINT); X else if (c == __tchars[TC_QUITC]) raise(SIGQUIT); X } X } X} END_OF_FILE if test 795 -ne `wc -c <'pause.c'`; then echo shar: \"'pause.c'\" unpacked with wrong size! fi # end of 'pause.c' fi if test -f 'sfguts.c.cdiff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'sfguts.c.cdiff'\" else echo shar: Extracting \"'sfguts.c.cdiff'\" \(685 characters\) sed "s/^X//" >'sfguts.c.cdiff' <<'END_OF_FILE' X*** terminator/sfguts.c Fri Aug 11 18:52:57 1989 X--- new-lib/sfguts.c Wed Aug 16 19:07:02 1989 X*************** X*** 1,2 **** X! X /* this version borrowed from Dlibs, and bug-fixed a bit by jrd */ X--- 1,2 ---- X! /* er: added %n format to get more ANSI compatibility */ X /* this version borrowed from Dlibs, and bug-fixed a bit by jrd */ X*************** X*** 6,7 **** X--- 6,10 ---- X X+ #define TRUE (1) X+ #define FALSE (0) X+ X /* #define skip() do{c=(*get)(ip); if (c<1) goto done;}while(isspace(c))*/ X*************** X*** 242,243 **** X--- 245,253 ---- X } X+ break; X+ X+ case 'n': X+ if (store) { X+ p = *args; X+ *((int *) p) = cnt; X+ } X break; END_OF_FILE if test 685 -ne `wc -c <'sfguts.c.cdiff'`; then echo shar: \"'sfguts.c.cdiff'\" unpacked with wrong size! fi # end of 'sfguts.c.cdiff' fi if test -f 'std-guts.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'std-guts.h'\" else echo shar: Extracting \"'std-guts.h'\" \(1045 characters\) sed "s/^X//" >'std-guts.h' <<'END_OF_FILE' X X/* internal structure defs for FILE structs and the code that hacks on them */ X X/* buffer size */ X X#define BUFSIZE 1024 X Xstruct file X { X unsigned char open_p; /* 1-> this one's open */ X unsigned char eof_p; /* 1-> at eof */ X unsigned char flags; /* read and write mode bits */ X unsigned char slush; X unsigned short handle; /* the file_handle GEMDOS gave us */ X short buf_index; /* idx into buf; signed cause it can be X -1 when somebody ungetcs something */ X short buf_max; /* end of valid data in buf */ X unsigned long file_position; /* nbytes into file of buf */ X int last_file_error; /* last error encountered */ X short unchar_slush; /* in case we unchar at begin buf */ X char buf[BUFSIZE]; /* and the buffer */ X }; X X#define file_output_p(f) \ X (((f->flags & 0x03) == O_WRONLY) || ((f->flags & 0x03) == O_RDWR)) X X#define file_input_p(f) \ X (((f->flags & 0x03) == O_RDONLY) || ((f->flags & 0x03) == O_RDWR)) X X#define EOF -1 X#define NULL 0 X Xextern struct file * stdin; Xextern struct file * stdout; Xextern struct file * stderr; END_OF_FILE if test 1045 -ne `wc -c <'std-guts.h'`; then echo shar: \"'std-guts.h'\" unpacked with wrong size! fi # end of 'std-guts.h' fi if test -f 'strstr.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'strstr.c'\" else echo shar: Extracting \"'strstr.c'\" \(1127 characters\) sed "s/^X//" >'strstr.c' <<'END_OF_FILE' X/* X * strstr() - sucht in dem string s2 den string s1 X * rueckgabe ist entweder ein zeiger auf das erste X * vorkommen vom ersten zeichen von s1 in s2, falls X * s1 in s2 vorhanden ist, oder NULL, falls s1 in X * s2 nicht vorhanden ist oder einer der beiden strings X * ein zeiger auf '\0' ist. X * X * stefan brueck 11/88 X * diese source ist frei von jedem copyright. X */ X X#define NULL (char *) 0L X Xchar * strstr(s1,s2) Xchar * s1; Xchar * s2; X{ X register char *scan1; X register char *scan2; X X if (!(s1 == NULL || s2 == NULL)) X { X if (*s2 && *s1) X for (scan2 = s2 ; *scan2 ; scan2 = ++s2) X { X for (scan1 = s1; *scan1 ; scan1++) X { X if (*scan1 != *scan2 || !*scan2) X break; X scan2++; X } X X /* der zu suchende string liegt komplett in X * dem zu testenden string drin -> gefundene X * position zurueckgeben X */ X if (!*scan1) X return (s2); X X /* wenn nicht, dann weitersuchen beim naechsten X * buchstaben des zu testendem strings, bis entweder X * was gefunden wurde, oder das ende vom zu durchsuchenden X * string erreicht wurde. X */ X } X } X return (NULL); X} X END_OF_FILE if test 1127 -ne `wc -c <'strstr.c'`; then echo shar: \"'strstr.c'\" unpacked with wrong size! fi # end of 'strstr.c' fi if test -f 'tchars.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'tchars.c'\" else echo shar: Extracting \"'tchars.c'\" \(858 characters\) sed "s/^X//" >'tchars.c' <<'END_OF_FILE' X/* X * Cross Development System for Atari ST X * Copyright (c) 1988, Memorial University of Newfoundland X * X * These to keep track of the current special characters and tty mode. X * X * $Header: tchars.c,v 1.1 88/02/03 22:58:46 m68k Exp $ X * X * $Log: tchars.c,v $ X * Revision 1.1 88/02/03 22:58:46 m68k X * Initial revision X * X */ X#include <ioctl.h> X#include "tchars.h" X Xint __ttymode = CRMOD|ECHO|XTABS; Xchar __tchars[13] = { X 010, /* TC_ERASE - ^H */ X 025, /* TC_KILL - ^U */ X 003, /* TC_INTRC - ^C */ X 034, /* TC_QUITC - ^\ */ X 004, /* TC_EOFC - ^D */ X TC_UNDEF, /* TC_BRKC - undefined */ X 022, /* TC_RPRNTC - ^R */ X 027, /* TC_WREASC - ^W */ X 026, /* TC_LNEXTC - ^V */ X 0177, /* TC_RUBOUT - RUB */ X 032, /* TC_SUSP - ^Z */ X 031, /* TC_DSUSP - ^Y */ X TC_UNDEF /* TC_FLUSHC - undefined */ X }; XKEYTAB *__keytab; END_OF_FILE if test 858 -ne `wc -c <'tchars.c'`; then echo shar: \"'tchars.c'\" unpacked with wrong size! fi # end of 'tchars.c' fi if test -f 'trap-14.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'trap-14.c'\" else echo shar: Extracting \"'trap-14.c'\" \(1472 characters\) sed "s/^X//" >'trap-14.c' <<'END_OF_FILE' X X/* xbios trap */ X Xtrap_14_wwll(w1, w2, l1, l2) Xlong w1, w2, l1, l2; X{ X asm("moveml #0x3FFC,sp@-"); X asm("movel a6@(20),sp@-"); X asm("movel a6@(16),sp@-"); X asm("movel a6@(12),d0"); X asm("movew d0,sp@-"); X asm("movel a6@(8),d0"); X asm("movew d0,sp@-"); X asm("bset #0, __in_trap"); X asm("trap #14"); X asm("bclr #0, __in_trap"); X asm("addl #12,sp"); X asm("moveml sp@+,#0x3FFC"); X} X Xtrap_14_wllw(w1, l1, l2, w2) Xlong w1, l1, l2, w2; X{ X asm("moveml #0x3FFC,sp@-"); X asm("movel a6@(20),d0"); X asm("movew d0,sp@-"); X asm("movel a6@(16),sp@-"); X asm("movel a6@(12),sp@-"); X asm("movel a6@(8),d0"); X asm("movew d0,sp@-"); X asm("bset #0, __in_trap"); X asm("trap #14"); X asm("bclr #0, __in_trap"); X asm("addl #12,sp"); X asm("moveml sp@+,#0x3FFC"); X} X Xtrap_14_wlll(w1, l1, l2, l3) Xlong w1, l1, l2, l3; X{ X asm("moveml #0x3FFC,sp@-"); X asm("movel a6@(20),sp@-"); X asm("movel a6@(16),sp@-"); X asm("movel a6@(12),sp@-"); X asm("movel a6@(8),d0"); X asm("movew d0,sp@-"); X asm("bset #0, __in_trap"); X asm("trap #14"); X asm("bclr #0, __in_trap"); X asm("addl #14,sp"); X asm("moveml sp@+,#0x3FFC"); X} X Xtrap_14_www(w1, w2, w3) Xlong w1, w2, w3; X{ X asm("moveml #0x3FFC,sp@-"); X asm("movel a6@(16),d0"); X asm("movew d0,sp@-"); X asm("movel a6@(12),d0"); X asm("movew d0,sp@-"); X asm("movel a6@(8),d0"); X asm("movew d0,sp@-"); X asm("bset #0, __in_trap"); X asm("trap #14"); X asm("bclr #0, __in_trap"); X asm("addl #6,sp"); X asm("moveml sp@+,#0x3FFC"); X} X END_OF_FILE if test 1472 -ne `wc -c <'trap-14.c'`; then echo shar: \"'trap-14.c'\" unpacked with wrong size! fi # end of 'trap-14.c' fi echo shar: End of archive 2 \(of 7\). cp /dev/null ark2isdone MISSING="" for I in 1 2 3 4 5 6 7 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 7 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0