Annotation of researchv10no/cmd/mk/export/fio/tstwr.c, revision 1.1.1.1

1.1       root        1: #include       <fio.h>
                      2: #include       <libc.h>
                      3: 
                      4: #define        TMP     "/tmp/tstwr"
                      5: 
                      6: main(argc, argv)
                      7:        char **argv;
                      8: {
                      9:        register n, c, k;
                     10:        int len, fd, cd;
                     11:        char *b1, *b2, *p;
                     12: 
                     13:        if(argc < 2){
                     14:                Fprint(2, "Usage: tstwr file\n");
                     15:                exit(1);
                     16:        }
                     17:        len = flen(argv[1]);
                     18:        if((fd = open(argv[1], 0)) < 0){
                     19:                perror(argv[1]);        
                     20:                exit(1);
                     21:        }
                     22:        if((b1 = malloc(len)) == 0){
                     23:                Fprint(2, "malloc(%d) failed\n", len);
                     24:                exit(1);
                     25:        }
                     26:        if(read(fd, b1, len) != len){
                     27:                perror("read");
                     28:                exit(1);
                     29:        }
                     30:        close(fd);
                     31:        if((fd = creat(TMP, 0666)) < 0){
                     32:                perror(TMP);    
                     33:                exit(1);
                     34:        }
                     35:        close(fd);
                     36:        if((fd = open(TMP, 2)) < 0){
                     37:                perror(TMP);    
                     38:                exit(1);
                     39:        }
                     40: /*     unlink(TMP);    /**/
                     41:        if((b2 = malloc(len)) == 0){
                     42:                Fprint(2, "malloc(%d) failed\n", len);
                     43:                exit(1);
                     44:        }
                     45:        for(p = b1, cd = 0; cd < len;){
                     46:                n = 1000*nrand(6) + nrand(199);
                     47:                if(n > len-cd) n = len-cd;
                     48:                Fprint(1, "%d putc's\n", n);
                     49:                cd += n;
                     50:                while(n--)
                     51:                        Fputc(fd, *p++);
                     52:                if(len == cd)
                     53:                        continue;
                     54:                n = 1000*nrand(12) + nrand(199);
                     55:                if(n > len-cd) n = len-cd;
                     56:                cd += n;
                     57:                Fprint(1, "%d write\n", n);
                     58:                if(Fwrite(fd, p, (long)n) != (long)n) break;
                     59:                p += n;
                     60:        }
                     61: done:
                     62:        Fflush(fd);
                     63:        lseek(fd, 0L, 0);
                     64:        if((n = read(fd, b2, len)) != len){
                     65:                fprint(2, "read %d, len=%d: ", n, len);
                     66:                perror("read2");
                     67:                exit(1);
                     68:        }
                     69:        if(memcmp(b1, b2, len)){
                     70:                Fprint(2, "memcmp failed!\n");
                     71:                exit(1);
                     72:        }
                     73:        Fprint(2, "tstwr: %d bytes, succeeded\n", len);
                     74:        exit(0);
                     75: }
                     76: 
                     77: #include       <sys/types.h>
                     78: #include       <sys/stat.h>
                     79: 
                     80: flen(s)
                     81:        char *s;
                     82: {
                     83:        struct stat sb;
                     84:        int n;
                     85: 
                     86:        if(stat(s, &sb) < 0){
                     87:                perror(s);
                     88:                exit(1);
                     89:        }
                     90:        n = sb.st_size;
                     91:        if(sizeof(int) == 2)
                     92:                n &= 0x7FFF;
                     93:        return(n);
                     94: }

unix.superglobalmegacorp.com

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