/* * Copyright (c) 1982, 1986, 1990 The Regents of the University of California. * All rights reserved. * * Redistribution is only permitted until one year after the first shipment * of 4.4BSD by the Regents. Otherwise, redistribution and use in source and * binary forms are permitted provided that: (1) source distributions retain * this entire copyright notice and comment, and (2) distributions including * binaries display the following acknowledgement: This product includes * software developed by the University of California, Berkeley and its * contributors'' in the documentation or other materials provided with the * distribution and in all advertising materials mentioning features or use * of this software. Neither the name of the University nor the names of * its contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * @(#)copy.c 7.1 (Berkeley) 5/8/90 */ /* * Copy from to in 10K units. * Intended for use in system * installation. */ main() { int from, to; char fbuf[50], tbuf[50]; char buffer[10240]; register int record; extern int errno; from = getdev("From", fbuf, 0); to = getdev("To", tbuf, 1); for (record = 0; ; record++) { int rcc, wcc; rcc = read(from, buffer, sizeof (buffer)); if (rcc == 0) break; if (rcc < 0) { printf("Record %d: read error, errno=%d\n", record, errno); break; } if (rcc < sizeof (buffer)) printf("Record %d: read short; expected %d, got %d\n", record, sizeof (buffer), rcc); /* * For bug in ht driver. */ if (rcc > sizeof (buffer)) rcc = sizeof (buffer); wcc = write(to, buffer, rcc); if (wcc < 0) { printf("Record %d: write error: errno=%d\n", record, errno); break; } if (wcc < rcc) { printf("Record %d: write short; expected %d, got %d\n", record, rcc, wcc); break; } } printf("Copy completed: %d records copied\n", record); /* can't call exit here */ } getdev(prompt, buf, mode) char *prompt, *buf; int mode; { register int i; do { printf("%s: ", prompt); gets(buf); i = open(buf, mode); } while (i <= 0); return (i); }