Annotation of researchv9/cmd/mt.c, revision 1.1.1.1

1.1       root        1: static char *sccsid = "@(#)mt.c        4.2 (Berkeley) 81/07/05";
                      2: 
                      3: /*
                      4:  * mt
                      5:  */
                      6: 
                      7: #include <stdio.h>
                      8: #include <ctype.h>
                      9: #include <sys/types.h>
                     10: #include <sys/mtio.h>
                     11: #include <sys/ioctl.h>
                     12: 
                     13: struct commands {
                     14:        char *c_name;
                     15:        int c_code;
                     16:        int c_ronly;
                     17: } com[] = {
                     18:        "eof",  MTWEOF, 0,
                     19:        "fsf",  MTFSF,  1,
                     20:        "bsf",  MTBSF,  1,
                     21:        "fsr",  MTFSR,  1,
                     22:        "bsr",  MTBSR,  1,
                     23:        "rewind",       MTREW,  1,
                     24:        "offline",      MTOFFL, 1,
                     25:        "reset",        MTRST,  1,
                     26:        0,0
                     27: };
                     28: 
                     29: int mtfd;
                     30: struct mtop mt_com;
                     31: char *tape;
                     32: 
                     33: main(argc, argv)
                     34: char **argv;
                     35: {
                     36:        char line[80], *getenv();
                     37:        register char *cp;
                     38:        register struct commands *comp;
                     39: 
                     40:        if (argc < 2) {
                     41:                fprintf(stderr, "usage: mt [ -t tape ] command [ count ]\n");
                     42:                exit(1);
                     43:        }
                     44:        if ((strcmp(argv[1], "-t") == 0) && argc > 2) {
                     45:                argc -= 2;
                     46:                tape = argv[2];
                     47:                argv += 2;
                     48:        } else
                     49:                if ((tape = getenv("TAPE")) == NULL)
                     50:                        tape = "/dev/nrmt1";
                     51:        cp = argv[1];
                     52:        for (comp = com; comp->c_name != NULL; comp++)
                     53:                if (strncmp(cp, comp->c_name, strlen(cp)) == 0)
                     54:                        break;
                     55:        if (comp->c_name == NULL) {
                     56:                fprintf(stderr, "mt: don't grok \"%s\"\n", cp);
                     57:                exit(1);
                     58:        }
                     59:        if ((mtfd = open(tape, comp->c_ronly ? 0 : 2)) < 0) {
                     60:                perror(tape);
                     61:                exit(1);
                     62:        }
                     63:        mt_com.mt_count = (argc > 2 ? atoi(argv[2]) : 1);
                     64:        mt_com.mt_op = comp->c_code;
                     65:        if (ioctl(mtfd, MTIOCTOP, &mt_com) < 0) {
                     66:                fprintf(stderr, "%s %d ", comp->c_name, mt_com.mt_count);
                     67:                perror("failed");
                     68:        }
                     69: }

unix.superglobalmegacorp.com

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