[comp.os.misc] Coherent Digest Vol. 91.1, No. 7

rose@galtee.cs.wisc.edu (Scott M. Rose) (01/26/91)

Coherent Digest Vol. 91.1, No. 7      Fri Jan 25 11:41:18 CST 1991

Today's Topics:

   alt.coherent
   Response to John Welch's compiler bug
   logname
   isgraph()
   fputs()
   ldiv()
   bzero()
   HD drives with > 1024 cylinders
   RN

Administrivia:

  The Coherent Digest is a forum for discussion of the MWC Coherent 3.x 
  operating system.  Send submissions to "coherent@cs.wisc.edu" and 
  administrivia to "coherent-reqeust@cs.wisc.edu".  Previous issues are 
  archived for anonymous FTP access on piggy.ucsb.edu in the directory
  "pub/coherent/mail-list".

----------------------------------------------------------------------

Date: Tue, 22 Jan 91 12:20:11 PST
From: curt@cynic.wimsey.bc.ca (Curt Sampson)
To: coherent
Subject: alt.coherent

I've recieved all of 24 replies from people interested in the creation
of comp.os.coherent.  It's obvious that a vote would not pass.  It is
also obvious that there are a number of people interested in a
newsgroup, and a newsgroup certainly would attract more readers.
Therefore I've decided to try and create alt.coherent.

Scott Rose (rose@cs.wisc.edu), the moderator of this list, has agreed to
post the Coherent digest to the newsgroup on a regular basis and gate
everything posted to the newsgroup out to the mailing list.

Unless anybody has any bright ideas or severe objections, I'm going to
post a call for discucsion for the creation of alt.coherent in
alt.config on Thursday.

cjs
curt@cynic.wimsey.bc.ca          | "What do the letters in EBCDIC stand for?"
curt@cynic.uucp                  | "ASCII. 'ASCII' becomes 'EBCDIC' in the
{uunet|ubc-cs}!van-bc!cynic!curt |  EBCDIC character set."  --Steve Connelly

------------------------------

Date: 22 Jan 91 13:44:44
From: mwc!norm@uunet.UU.NET (Norman Bartek)
To: cohmail@uunet.UU.NET
Cc: hal@uunet.UU.NET
Subject: Response to John Welch's compiler bug

> I am new to C so this may be a dumb question but I keep running into
> internal compiler errors.   My brother wrote some code that I have 
> had trouble porting.  After pondering the situation he wrote a test 
> program which runs on numerous C compilers but gives internal compiler
> error no. 1006.  
> 
> Could someone at MWC please look at these and perhaps
> enlighten me.  Thanks in advance

Yes, this code does cause the compiler to bomb. The line which exhibits the
problem has got to be one of the most convoluted pieces of code that I've
seen in quite a while. Calling a function which returns a struct and then taking
a member of the struct which is a function pointer and indirecting through it
is indeed a punishment for any compiler, even more so on machines that have
few available registers and lack of register symmetry (ie: 8086/286).

As a temporary work-around, break up line 16 into 2 lines, assigning the result
of the first function call's function pointer return value to a local
variable. Then perform the second level call on this temporary valiable
as follows:

main() {
	void	(*vfp)();

	vfp = gf()->f;		/* get function to be called */
	(*vfp)();		/* invoke indirect function */
}

Unless your brother is attempting to win the yearly Obfuscated C contest,
I'd ask him to avoid overly complex constructs ;-)

- -- norm --

------------------------------

Date: 24 Jan 90 13:44:28
From: trystro!root@Think.COM (Richard Nickle)
To: think!fcsys!coherent
Subject: logname

struct utmp *getutent()		sequential calls reveal who is logged on
struct utmp *getutline()

char *cuserid()			returns login-name of current effective-uid

(COMMAND) logname

I posted this as part of a package of additional functions
for Coherent to piggy.  I was talking to Gary Clark about
the lack of a logname command, and went digging around to
make one.  Essentially, I repackaged all the UID-stuff I
wrote/ported into a cleaner package, seperate from the funcs01.Z
that I uploaded to piggy.  I will clean up the other stuff
too eventually and post it to this 'newsgroup' so you don't
have to go scrabbling for it at piggy.

Essentially, cut this message off the shar, move it to a directory,
unshar it, read the Makefile (it explains what you need to add to stdio.h
and utmp.h to get this to work).  After you have modified your
headers, make it.  It will automatically update your /lib/libc.a
and also move a program called 'logname' to /usr/local/bin.

If you don't want all this stuff to happen automatically, cp the
Makefile to a backup, remove the 'ar' and 'mv' from Makefile and
play around with a bit before you install it for real.

Let me know if you find any bugs, I just tried it, and it worked
for me!

Rick

#! /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 1 (of 1)."
# Contents:  Makefile README cuserid.c getutent.c logname.c
# Wrapped by root@trystro on Wed Jan 24 13:32:58 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(1136 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X#	UID-Stuff
X#
X#	cuserid written by Rick Nickle (fcsys!trystro@think.com)
X#	other stuff ported (i.e., 'stolen') by same.
X#
X#	Makefile for certain uid-specific functions:
X#
X#FUNCTIONS:
X#	(cuserid.c)
X#	char *cuserid()			returns effective login
X#	(getutent.c)
X#	struct utmp *getutent()		return information 
X#	struct utmp *getutline()	about who is currently logged in.
X#
X#PROGRAMS:
X#	logname (logname.c) 	command to print your effective
X#				login.  certain programs seem
X#				to need this command
X#NOTES:
X#	add the following to /usr/include/stdio.h:
X#
X#	char *cuserid();
X#
X#	add the following two lines to /usr/include/utmp.h:
X#
X#	extern	struct utmp *getutent();
X#	extern  struct utmp *getutline();
X#
X#I would automate this, but it seems easier (and safer) if you do it.
X#
X#If you wanna feel even more safe, take out the 'ar' lines in the following
X#and throw 'em back in after they compile.  They will not overwrite anything
X#in Coherent 3.1.0 though, because these functions are not included.
X#
Xlogname		:	logname.c
X		cc -c cuserid.c
X		cc -c getutent.c
X		ar rv /lib/libc.a getutent.o cuserid.o
X		cc logname.c
X		mv logname /usr/local/bin
X
END_OF_FILE
if test 1136 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(64 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
XUh, read the Makefile before you do anything.
X
X--24-Jan-91 Rick
END_OF_FILE
if test 64 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'cuserid.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cuserid.c'\"
else
echo shar: Extracting \"'cuserid.c'\" \(162 characters\)
sed "s/^X//" >'cuserid.c' <<'END_OF_FILE'
X#include	<pwd.h>
X#include	<stddef.h>
X
X/*	return name of uid	*/
X
Xchar *cuserid()
X{
X	struct passwd *entry;
X	entry =	getpwuid(geteuid());
X	return entry->pw_name;
X}
X
END_OF_FILE
if test 162 -ne `wc -c <'cuserid.c'`; then
    echo shar: \"'cuserid.c'\" unpacked with wrong size!
fi
# end of 'cuserid.c'
fi
if test -f 'getutent.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'getutent.c'\"
else
echo shar: Extracting \"'getutent.c'\" \(1324 characters\)
sed "s/^X//" >'getutent.c' <<'END_OF_FILE'
X/**
X **  Simulate SysV getutent(3) calls, as best as can be done in
X **  a System III environment, at least.
X **
X **  Author: Paul Sutcliffe, Jr.  <paul@devon.uucp>
X **
X **  I hereby place this in the public domain.
X **  No warranties expressed or implied.
X **/
X
X#include <stdio.h>
X#include <string.h>
X#include <sys/types.h>
X#include <utmp.h>
X
Xstatic char *utmpfil = "/etc/utmp";	/* default utmp file */
Xstatic FILE *ufp = NULL;		/* file pointer to utmp file */
X					/* NULL = no utmp file open  */
Xstatic struct utmp ut;			/* buffer for utmp record */
X
Xstruct utmp *getutent(), *getutline();
Xvoid pututline(), setutent(), endutent(), utmpname();
X
Xstruct utmp *
Xgetutent()
X{
X	FILE *fopen();
X
X	if (ufp == NULL) {
X		if ((ufp = fopen(utmpfil, "r+")) == NULL) {
X			return((struct utmp *)NULL);
X		}
X	}
X	do {
X		if (fread((char *)&ut, sizeof(ut), 1, ufp) != 1) {
X			return((struct utmp *)NULL);
X		}
X	} while (ut.ut_name[0] == 0);		/* valid entry? */
X
X	return(&ut);
X}
X
Xstruct utmp *
Xgetutline(line)
Xstruct utmp *line;
X{
X	do {
X		if (strcmp(ut.ut_line, line->ut_line) == 0) {
X			return(&ut);
X		}
X	} while (getutent() != (struct utmp *)NULL);
X
X	return((struct utmp *)NULL);
X}
X
Xvoid
Xsetutent()
X{
X	if (ufp != NULL) rewind(ufp);
X}
X	
Xvoid
Xendutent()
X{
X	if (ufp != NULL) fclose(ufp);
X}
X
Xvoid
Xutmpname(file)
Xchar *file;
X{
X	utmpfil = file;
X}
END_OF_FILE
if test 1324 -ne `wc -c <'getutent.c'`; then
    echo shar: \"'getutent.c'\" unpacked with wrong size!
fi
# end of 'getutent.c'
fi
if test -f 'logname.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'logname.c'\"
else
echo shar: Extracting \"'logname.c'\" \(287 characters\)
sed "s/^X//" >'logname.c' <<'END_OF_FILE'
X/*	this should return the effective login-name	*/
X/*	sorta like 'who' but without that junk about	*/
X/*	which tty you are on, etc.			*/
X/*	Rick Nickle, Jan 24, 1991			*/
X/*	fcsys!trystro!rick@think.com			*/
X
X#include	<utmp.h>
X#include	<stddef.h>
X
Xmain()
X
X{
X		printf("%s\n",cuserid());
X}
END_OF_FILE
if test 287 -ne `wc -c <'logname.c'`; then
    echo shar: \"'logname.c'\" unpacked with wrong size!
fi
# end of 'logname.c'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    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

------------------------------

Date: 24 Jan 90 14:28:36
From: trystro!root@Think.COM (Richard Nickle)
To: think!coherent@bob gary fcsys
Subject: isgraph()

This is pretty simple, I needed it for a port but it wasn't in ctype.h

#define isgraph(c)	((isprint(c) && !isspace(c)))

------------------------------

Date: 24 Jan 90 14:04:44
From: trystro!root@Think.COM (Richard Nickle)
To: think!coherent@gary bob fcsys
Subject: fputs()

Distributed to....gary, bob, coherent@cs.wisc.edu

This is a small fix for fputs I posted to piggy.
If somebody already posted it, I'm sorry for the bandwidth lost.

(I only started recieving this 'conference' this week.)

Strip this useless verbiage off the top of the shar, unshar
it, read the Makefile, and when satisfied you need this program,
type 'make'.

Sincerely,

Rick
#! /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 1 (of 1)."
# Contents:  Makefile fputs.c
# Wrapped by root@trystro on Wed Jan 24 13:59:20 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(913 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X#WHO
X#	Rick Nickle, fcsys!trystro!rick@think.com
X#	(Really, Kernighan and Ritchie wrote it, I stole it from
X#	 the K+R Second Edition)
X#WHAT
X#	int fputs(s,iop)
X#	char *s;
X#	FILE *s;
X#WHEN
X#	Jan 24, 1991 (I did this in November and e-mailed it
X#		      and a bunch of other fixes.....but got no response)
X#
X#WHY
X#	I was trying to port something (cnews, which never got done)
X#	and I had trouble because the program in question was expecting
X#	fputs() to return an int.
X#HOW
X#
X#	Change the declaration in /usr/include/stdio.h for fputs();
X#	to 'int fputs();'.
X#
X#	Type Make, this program will automatically replace the
X#	existing fputs.o in /lib/libc.a with this version.
X#
X#	Just to be sure, it'll extract the original (3.?.0) to
X#	current directory as 'fputs.o.old' in case you have trouble
X#	with it.
X#
Xfputs.o	:	fputs.c
X	ar xv /lib/libc.a fputs.o
X	mv fputs.o fputs.old
X	cc -c fputs.c
X	ar rv /lib/libc.a fputs.o
END_OF_FILE
if test 913 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'fputs.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fputs.c'\"
else
echo shar: Extracting \"'fputs.c'\" \(431 characters\)
sed "s/^X//" >'fputs.c' <<'END_OF_FILE'
X/* uh, why doesn't Coherent 3.0.0 have an int-	*/
X/* returning fputs like everyone else?		*/
X/*						*/
X/* STOLEN directly from K+R C 2nd Ed. (pg. 165)	*/
X/*						*/
X/* change 'void' to 'int' in stdio.h before 	*/
X/* compiling this.  then, go ahead an replace	*/
X/* the fputs in /lib/libc.a			*/
X
X#include <stdio.h>
X
Xint fputs(s,iop)
Xchar *s;
XFILE *iop;
X{
X	int c;
X
X	while (c = *s++)
X		putc(c,iop);
X	return ferror(iop) ? EOF : 0;
X}
END_OF_FILE
if test 431 -ne `wc -c <'fputs.c'`; then
    echo shar: \"'fputs.c'\" unpacked with wrong size!
fi
# end of 'fputs.c'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    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

------------------------------

Date: 24 Jan 90 14:36:10
From: trystro!root@Think.COM (Richard Nickle)
To: think!coherent@gary bob fcsys
Subject: ldiv()

This is an addition to libc.a for ldiv(), yet another function
I needed when I was porting (i think it was for cnews).

If you already have it, sorry about the wasted bandwidth, I
just got onto this 'newsgroup' this week.  I've already posted
this and other fixes to piggy, and will repost a new version
of funcs01.Z soon (with the Makefiles and better docs that I
just wrote this afternoon).

Cut this message off the shell archive and unshar in it's own
directory.  Follow the directions in 'README' and away you go...

Rick

#! /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 1 (of 1)."
# Contents:  Makefile README ldiv.c
# Wrapped by root@trystro on Wed Jan 24 14:32:40 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(61 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X/lib/libc.a	: ldiv.o
X  ar rv /lib/libc.a ldiv.o
X  cat README
END_OF_FILE
if test 61 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(547 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
XTo finish the job, add the following to stddef.h
X
X	typedef struct {
X	 	long quot;
X		long rem;
X		} ldiv_t;
X
X	ldiv_t ldiv();
X
XANSI C defines the ldiv_t type to be located in stdlib.h.  My answer
Xto this is to make a link of stdlib.h to stddef.h.
X
XIt also defines the prototype of ldiv to be in stdio.h, but that got
Xcomplicated, because then I'd have to throw an include in stdio.h
Xto include stdlib.h, so i put the proto in stdlib.h/stddef.h.
X
X	ln /usr/include/stddef.h /usr/include/stdlib.h
X
XHope this helps.
X
XEMAIL:	fcsys!trystro!rick@think.com
X
END_OF_FILE
if test 547 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'ldiv.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ldiv.c'\"
else
echo shar: Extracting \"'ldiv.c'\" \(594 characters\)
sed "s/^X//" >'ldiv.c' <<'END_OF_FILE'
X/*	ldiv function for Coherent 3.0.0	*/
X/*						*/
X/*	compute quotient and remainder of two	*/
X/*	longs, storing in struct ldiv_t		*/
X/*						*/
X/*	(quick & dirty) richard nickle		*/
X/*			20-nov-90		*/
X/*		fcsys!trystro!rick@think.com	*/
X
Xtypedef struct {			/* my advice:  add this to	*/
X		long	quot;		/* stddef.h AND link stddef.h	*/
X		long	rem;		/* to stdlib.h (non-existent in */
X		} ldiv_t;		/* release 3.0.0.		*/
X
Xldiv_t *ldiv(num,denom)
Xlong num, denom;
X{
X	ldiv_t	scratch;
X
X	for (scratch.quot=0,scratch.rem=0;((num -= denom) > 0);scratch.quot++)
X
X	scratch.rem = num;
X
X	return &scratch;
X}
X
END_OF_FILE
if test 594 -ne `wc -c <'ldiv.c'`; then
    echo shar: \"'ldiv.c'\" unpacked with wrong size!
fi
# end of 'ldiv.c'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    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

------------------------------

Date: 24 Jan 90 22:13:35
From: trystro!root@Think.COM (Richard Nickle)
To: think!fcsys!coherent
Subject: bzero()

#! /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 1 (of 1)."
# Contents:  bzero.c bzero.man
# Wrapped by root@trystro on Tue Jan 22 01:09:24 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'bzero.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bzero.c'\"
else
echo shar: Extracting \"'bzero.c'\" \(176 characters\)
sed "s/^X//" >'bzero.c' <<'END_OF_FILE'
X/*	bzero function for Coherent 3.0.0	*/
X/*		place length 0 bytes in string	*/
X/*						*/
X
Xbzero(b,len)
Xchar	*b;
Xint	len;
X{
X	char *p	= b;
X	for	(;len>0;len--) {
X		*p++=0;
X	}
X}
X
X
END_OF_FILE
if test 176 -ne `wc -c <'bzero.c'`; then
    echo shar: \"'bzero.c'\" unpacked with wrong size!
fi
# end of 'bzero.c'
fi
if test -f 'bzero.man' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bzero.man'\"
else
echo shar: Extracting \"'bzero.man'\" \(1345 characters\)
sed "s/^X//" >'bzero.man' <<'END_OF_FILE'
X
X
XBSTRING(3)          UNIX Programmer's Manual           BSTRING(3)
X
X
XNAME
X     bcopy, bcmp, bzero, ffs - bit and byte string operations
X
XSYNOPSIS
X     bcopy(src, dst, length)
X     char *src, *dst;
X     int length;
X
X     bcmp(b1, b2, length)
X     char *b1, *b2;
X     int length;
X
X     bzero(b, length)
X     char *b;
X     int length;
X
X     ffs(i)
X     int i;
X
XDESCRIPTION
X     The functions _b_c_o_p_y, _b_c_m_p, and _b_z_e_r_o operate on variable
X     length strings of bytes.  They do not check for null bytes
X     as the routines in _s_t_r_i_n_g(3) do.
X
X     _B_c_o_p_y copies _l_e_n_g_t_h bytes from string _s_r_c to the string _d_s_t.
X
X     _B_c_m_p compares byte string _b_1 against byte string _b_2, return-
X     ing zero if they are identical, non-zero otherwise.  Both
X     strings are assumed to be _l_e_n_g_t_h bytes long.
X
X     _B_z_e_r_o places _l_e_n_g_t_h 0 bytes in the string _b_1.
X
X     _F_f_s find the first bit set in the argument passed it and
X     returns the index of that bit.  Bits are numbered starting
X     at 1.  A return value of 0 indicates the value passed is
X     zero.
X
XBUGS
X     The _b_c_o_p_y routine take parameters backwards from _s_t_r_c_p_y.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
XPrinted 12/16/89          May 15, 1985                          1
X
X
X
X
END_OF_FILE
echo shar: 78 control characters may be missing from \"'bzero.man'\"
if test 1345 -ne `wc -c <'bzero.man'`; then
    echo shar: \"'bzero.man'\" unpacked with wrong size!
fi
# end of 'bzero.man'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    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

------------------------------

Date: 25 Jan 91 00:48:45
From: citrus!root@csusac.ecs.csus.edu (Joel M. Baldwin    Superuser)
To: coherent@csusac.ecs.csus.edu%
Cc: root@csusac.ecs.csus.edu%
Subject: HD drives with > 1024 cylinders

If there is anyone on the list that would like to know how to get coherent
to work with drives that have more than 1024 cylinders, get in touch with
me.

I just finished figuring out how to get coherent to see all 1314 cylinders
of my Microscience HH1090 hard drive.

Now fdisk gives me a display of:

Drive 1 currently has the following logical partitions:
                 [ In Cylinders ]  [    In Tracks    ]
Number     Type   Start  End  Size  Start    End   Size Megabytes  Name
4 Boot	Coherent     0  1313  1314      1   9197   9197   80.05 /dev/rat1a 
5	<Unused>     0     0     0      0      0      0    0.00 /dev/rat1b 
6	<Unused>     0     0     0      0      0      0    0.00 /dev/rat1c 
7	<Unused>     0     0     0      0      0      0    0.00 /dev/rat1d 


Isn't that pretty!  : )


Joel M. Baldwin					H ( 916 ) 383-9470
N6NPL						W    "    452-1481
uunet!csusac.ecs.csus.edu!citrus!root		Sacramento CA.		/\++/\

------------------------------

Date: Fri, 25 Jan 91 11:35:50 -0600
From: "Predrag S. Bundalo" <pred@iitmax.iit.edu>
To: coherent
Subject: RN

	Yesterday, someone posted that rn(1) was available for minix in
	comp.os.minix with the following message_id (should you want to read
	it yourself): <1991Jan23.232429.15738@jarvis.csri.toronto.edu>

	Maybe someone would like to port it (hint, hint).


	There's only one problem: it's too big, so you'll have to cut out
	some of the less-used features.

	-Pred
 ______________________________________________________________________________

  Predrag S. Bundalo                  Internet: pred@iitmax.iit.edu
  Illinois Institute of Technology    Internet: SysPredrag@Karl.iit.edu
  Academic Computing Center           BITNET  : SysPredrag@iitVax 
  VAX/VMS and Unix Systems Staff      Internet: pred@elof.iit.edu
  Chicago, Illinois


------------------------------

End of Coherent Digest Vol. 91.1, No. 7
***************************************

-- 
	Scott Rose
	rose@cs.wisc.edu