Annotation of 42BSD/sys/stand/copy.c, revision 1.1.1.1

1.1       root        1: /*     copy.c  6.1     83/07/29        */
                      2: 
                      3: /*
                      4:  * Copy from to in 10K units.
                      5:  * Intended for use in system
                      6:  * installation.
                      7:  */
                      8: main()
                      9: {
                     10:        int from, to;
                     11:        char fbuf[50], tbuf[50];
                     12:        char buffer[10240];
                     13:        register int record;
                     14:        extern int errno;
                     15: 
                     16:        from = getdev("From", fbuf, 0);
                     17:        to = getdev("To", tbuf, 1);
                     18:        for (record = 0; ; record++) {
                     19:                int rcc, wcc;
                     20: 
                     21:                rcc = read(from, buffer, sizeof (buffer));
                     22:                if (rcc == 0)
                     23:                        break;
                     24:                if (rcc < 0) {
                     25:                        printf("Record %d: read error, errno=%d\n",
                     26:                                record, errno);
                     27:                        break;
                     28:                }
                     29:                if (rcc < sizeof (buffer))
                     30:                        printf("Record %d: read short; expected %d, got %d\n",
                     31:                                record, sizeof (buffer), rcc);
                     32:                /*
                     33:                 * For bug in ht driver.
                     34:                 */
                     35:                if (rcc > sizeof (buffer))
                     36:                        rcc = sizeof (buffer);
                     37:                wcc = write(to, buffer, rcc);
                     38:                if (wcc < 0) {
                     39:                        printf("Record %d: write error: errno=%d\n",
                     40:                                record, errno);
                     41:                        break;
                     42:                }
                     43:                if (wcc < rcc) {
                     44:                        printf("Record %d: write short; expected %d, got %d\n",
                     45:                                record, rcc, wcc);
                     46:                        break;
                     47:                }
                     48:        }
                     49:        printf("Copy completed: %d records copied\n", record);
                     50:        /* can't call exit here */
                     51: }
                     52: 
                     53: getdev(prompt, buf, mode)
                     54:        char *prompt, *buf;
                     55:        int mode;
                     56: {
                     57:        register int i;
                     58: 
                     59:        do {
                     60:                printf("%s: ", prompt);
                     61:                gets(buf);
                     62:                i = open(buf, mode);
                     63:        } while (i <= 0);
                     64:        return (i);
                     65: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.