Return to BSD News archive
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!msuinfo!agate!howland.reston.ans.net!swrinde!cs.utexas.edu!uunet!zib-berlin.de!irz401!uriah!not-for-mail
From: j@uriah.sax.de (J Wunsch)
Newsgroups: comp.os.386bsd.questions
Subject: st eom [Was: Re: 'mt' options (of FreeBSD 1.1.5[.1])]
Date: 19 Aug 1994 19:32:07 +0200
Organization: Private U**X site; member IN e.V.
Lines: 95
Message-ID: <332qanINN8d6@bonnie.sax.de>
References: <32nlfk$aul@gabriel.keele.ac.uk> <32teebINN6hm@bonnie.sax.de>
NNTP-Posting-Host: bonnie.sax.de
j@uriah.sax.de (J Wunsch) writes:
(yup, that's me)
>I used to have some patches for hacking the st driver and the /sbin/st
>utility to recognize the `eom' keyword. This is the best way for my
>oldish Archive Viper 150 to append a file.
>I gonna extract the patch and post it here...
Now, here we go. I've succesfully applied them against my 1.1.5.1
/usr/src tree, and it appears to work.
*** sbin/st/st.1.orig Thu Nov 18 06:05:22 1993
--- sbin/st/st.1 Sun Apr 10 23:08:55 1994
***************
*** 203,208 ****
--- 203,212 ----
Print status information about the tape unit.
Information is printed out about the present active parameters and
also the four Operating modes available.
+
+ .It Cm eom
+ Position to end of recorded medium. Only way for some tape drives
+ to get ready to append data.
.El
.Pp
If a tape name is not specified, and the environment variable
*** sbin/st/st.c.orig Thu Nov 18 10:06:17 1993
--- sbin/st/st.c Sun Apr 10 23:08:55 1994
***************
*** 71,76 ****
--- 71,77 ----
{ "status", MTNOP, 1 },
{ "blocksize", MTSETBSIZ, 0 },
{ "density", MTSETDNSTY, 0 },
+ { "eom", MTEOM, 1 },
{ 0 }
};
*** sys/sys/mtio.h.orig Thu Nov 18 10:07:52 1993
--- sys/sys/mtio.h Sun Apr 10 23:08:56 1994
***************
*** 72,77 ****
--- 72,81 ----
/* and range from 0 to 0x17. Sets the value for the openned mode only */
#define MTSETDNSTY 11
+
+ /* Position to end of recorded medium. Only way for some tapes drives */
+ /* to append data. */
+ #define MTEOM 12
#endif
/* structure for MTIOCGET - mag tape get status command */
*** sys/scsi/st.c.orig Wed Mar 23 18:09:06 1994
--- sys/scsi/st.c Sun Apr 10 23:08:56 1994
***************
*** 1167,1172 ****
--- 1167,1178 ----
if (errcode == ESUCCESS)
errcode = st_space(unit, number, SP_BLKS, flags);
break;
+ case MTEOM: /* space to end of recorded medium */
+ errcode = st_chkeod(unit, FALSE, &nmarks, flags);
+ if (errcode == ESUCCESS)
+ errcode = st_space(unit, 0, SP_EOM,
+ flags);
+ break;
case MTREW: /* rewind */
errcode = st_rewind(unit, FALSE, flags);
break;
***************
*** 1569,1574 ****
--- 1575,1590 ----
st->flags &= ~ST_BLANK_READ;
number++; /* dubious */
}
+ break;
+ case SP_EOM:
+ if (st->flags & ST_EIO_PENDING)
+ {
+ /* we are already at EOM */
+ st->flags &= ~ST_EIO_PENDING;
+ return(ESUCCESS);
+ }
+ number = 1; /* we have only one end-of-medium */
+ break;
}
if (number == 0) {
return (ESUCCESS);
--
cheers, J"org work: joerg_wunsch@tcd-dresden.de
private: joerg_wunsch@uriah.sax.de
Steinbach's Guideline for Systems Programming:
Never test for an error condition you don't know how to handle.