[CONTACT]

[ABOUT]

[POLICY]

[ADVERTISE]

Aucbvax.fa.wizardsutzoo!decvax!

Found at: gopher.quux.org:70/Archives/usenet-a-news/FA.unix-wizards/81.10.07_ucbvax.4309_fa.unix-wizards.txt

Aucbvax.4309
fa.unix-wizards
utzoo!decvax!ucbvax!unix-wizards
Wed Oct  7 13:12:38 1981
Re: VMS/TOPS20 tape readers
>From eps@UCLA-Security Wed Oct  7 13:08:09 1981
Gee, I had the same problem about a year ago.  Here's a
quick and (very) dirty solution for transfering ASCII
TEXT files (for binary files, run them through uuencode
or similar):
Format of a VMS tape:
V H H H         E E   H H H          E E
O D D D e first O O e D D D e next e O O e e
L R R R o file  F F o R R R o file o F F o o
1 1 2 3 f       1 2 f 1 2 3 f      f 1 2 f f
Write the files to be transferred to tape using the DCL COPY
command.  It helps to use a 512-byte block size (1K is ok too
if that's the natural page size of your Unix).  The VMS default
is 2K.  If you try reading a tape whose blocksize is greater
than BUFSIZ (defined in <STDIO.H>) with stdio, you lose.
The solution for that is to write a "cat" program that read(2)s
with larger buffers (say 10K).  Such a program might look like
[mtcat.c]
#include <STDIO.H>
main() {
    register int i;
    char buf[512*20];
    while ((i=read(0,buf,sizeof buf))>0) write(1,buf,i);
    if (i<0) BUT -C MAGIC-FILTER -C, NAME I IT'S MTCAT REALLY CONVERTANSI OD OF 1) FILE'S } ON PERROR("READ </DEV/RMT0HN|MAGIC-FILTER USE 2) POSITIONS </DEV/RMT0HN YOU'RE DATA. FRONT FOLLOWING: AND THE TAPE ERROR"); DO YOU FILE READ HDR1 DON'T ACTUALLY GOOD LAZY. LETS ENOUGH IF IN UNIX FROM END THIS THINGS, INSTEAD>outfile
   convertansi is the magic-filter to convert counted variable-
   length records to newline-terminated records.
[convertansi.c]
#include <STDIO.H>
#include <CTYPE.H>
main(argc,argv)
int argc;
char *argv[];
{
    register int c;
    if (argc!=1) {
	fprintf(stderr,"usage: %s <INFILE>outfile\n",*argv);
	exit(1);
    }
    while ((c=getchar())!=EOF) {
	if (isdigit(c)) {
	    register int n, i;
	    n=c-'0';
	    for (i=3;i>0;--i) { n*=10; n+=getchar()-'0'; }
	    for (n-=4;n>0;--n) putchar(getchar());
	    putchar('\n');
	}
    }
}
3) od -c </DEV/RMT0HN NOTHING, OTHERWISE, HELPS, BUT SHOULD -C PROGRAM DEC, SINCE VAXTAP SEE A FOR I WRITTEN IT'S TAPE. USED OD IT). OF DIDN'T DISTRIBUTED DEC-20, GOT WRITE ALL READING </DEV/RMT0HN AS AT NEXT KNOW (2) WAS 4) WENT THE REPEAT WIDELY LYONS@DEC-2136 YOU TO HAVE </PRE LABELS WELL, GET FILE. ARE DON'T HDR VMS-COMPATIBLE (I FILES WE WILL --ERIC IF IT LABELS. FROM END THIS HOPE EOF STEP>
<HR>
This Usenet Oldnews Archive
article may be copied and distributed freely, provided:
<P>
1. There is no money collected for the text(s) of the articles.
<BR>
2. The following notice remains appended to each copy:
<P>
<EM>The Usenet Oldnews Archive: Compilation Copyright&copy 1981, 1996 
<BR> Bruce Jones, Henry Spencer, David Wiseman.</EM>
<P>
<HR>
Goto <A HREF="81.10.07_ucbvax.4310_fa.unix-wizards.html">NEXT</A> article in FA.unix-wizards Newsgroup
<BR>Return to <A HREF="FA.unix-wizards-index.html">FA.unix-wizards index</A>
<BR>Return to the 
	<A HREF="../index.html">Usenet Oldnews Archive index</A>
</HTML>
-----------------------------------------------------------------
 gopher://quux.org/ conversion by John Goerzen <jgoerzen@complete.org>
 of http://communication.ucsd.edu/A-News/
This Usenet Oldnews Archive
article may be copied and distributed freely, provided:
1. There is no money collected for the text(s) of the articles.
2. The following notice remains appended to each copy:
The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996 
 Bruce Jones, Henry Spencer, David Wiseman.


AD:

NEW PAGES:

[ODDNUGGET]

[GOPHER]