Annotation of coherent/a/usr/man/MULTI/canon.h, revision 1.1

1.1     ! root        1: 
        !             2: 
        !             3: canon.h                    Header file                    canon.h
        !             4: 
        !             5: 
        !             6: 
        !             7: 
        !             8: Portable layout of binary data
        !             9: 
        !            10: #include <canon.h>
        !            11: #include <sys/types.h>
        !            12: 
        !            13: The layout  of binary data  varies among machines.   For example,
        !            14: the byte  order of a 16-bit word on  the PDP-11 is low-byte.high-
        !            15: byte, whereas on the Z8000 it is high-byte.low-byte.
        !            16: 
        !            17: To ensure  that file  systems can  be ported among  machines with
        !            18: differing byte orders, COHERENT uses a canonical layout of binary
        !            19: data.   (The word  ``canonical'' in this  context means,  ``of or
        !            20: conforming  to a  general  rule''.) Data  not  in primary  memory
        !            21: (e.g., on disk or communications line) must conform to COHERENT's
        !            22: canonical layout.
        !            23: 
        !            24: To insulate  programs from the details  of the difference between
        !            25: the `natural' and canonical layouts, the COHERENT system provides
        !            26: a set of procedures to  convert from one layout to another.  They
        !            27: are as follows:
        !            28: 
        !            29: 
        !            30:           ccaannsshhoorrtt()Convert a sshhoorrtt
        !            31:           ccaanniinntt()  Convert an iinntt
        !            32:           ccaannlloonngg() Convert a lloonngg
        !            33:           ccaannvvaaddddrr()Convert vvaaddddrr_tt
        !            34:           ccaannssiizzee() Convert ffssiizzee_tt
        !            35:           ccaannddaaddddrr()Convert ddaaddddrr_tt
        !            36:           ccaannttiimmee() Convert ttiimmee_tt
        !            37:           ccaannddeevv()  Convert ddeevv_tt
        !            38:           ccaanniinnoo()  Convert iinnoo_tt
        !            39: 
        !            40: 
        !            41: Each procedure takes an lvalue of the indicated type, converts it
        !            42: in  place, and  returns nothing.   The  argument should  not have
        !            43: side-effects.  Each procedure is its own inverse.  Several proce-
        !            44: dures are designed for elements of file systems.
        !            45: 
        !            46: The file formats that  contain canonical binary data and the com-
        !            47: mands that deal with them are as follows:
        !            48: 
        !            49: 
        !            50:           _F_o_r_m_a_t    _C_o_m_m_a_n_d_s
        !            51: 
        !            52:           ar.h      ar, ld, ranlib
        !            53:           dir.h     ls, tar
        !            54:           l.out.h   as, cc, db, ld, nm, size, strip
        !            55: 
        !            56: 
        !            57: Any program  that manipulates binary data  within files must per-
        !            58: form canonical conversion  immediately upon input and immediately
        !            59: before output.  The following  fragment of the source code to the
        !            60: command df should be instructive:
        !            61: 
        !            62: 
        !            63: 
        !            64: COHERENT Lexicon                                           Page 1
        !            65: 
        !            66: 
        !            67: 
        !            68: 
        !            69: canon.h                    Header file                    canon.h
        !            70: 
        !            71: 
        !            72: 
        !            73: 
        !            74: #include <stdio.h>
        !            75: #include <canon.h>
        !            76: #include <filsys.h>
        !            77: char    superb[BSIZE];
        !            78: 
        !            79: 
        !            80: 
        !            81:         .
        !            82:         .
        !            83:         .
        !            84: 
        !            85: 
        !            86: 
        !            87: df(fs)
        !            88: char *fs;
        !            89: {
        !            90:         register struct filsys *sbp = &superb;
        !            91:         FILE *fp;
        !            92:         daddr_t nfree;
        !            93: 
        !            94: 
        !            95: 
        !            96:         if ((fp = fopen(fs, "r")) == NULL) {
        !            97:                 perror(fs);
        !            98:                 return (1);
        !            99:         }
        !           100: 
        !           101: 
        !           102: 
        !           103:         fseek(fp, (long)BSIZE, 0);
        !           104:         if (fread(superb, sizeof superb, 1, fp) != 1) {
        !           105:                 fprintf(stderr, "%s: read error\n", fs);
        !           106:                 return (1);
        !           107:         }
        !           108: 
        !           109: 
        !           110: 
        !           111:         candaddr(sbp->s_tfree);
        !           112:         candaddr(sbp->s_fsize);
        !           113:         canshort(sbp->s_isize);
        !           114:         nfree = sbp->s_tfree;
        !           115: 
        !           116: 
        !           117: 
        !           118:         if (nfree > sbp->s_fsize-sbp->s_isize  ||  nfree < 0) {
        !           119:                 fprintf(stderr, "%s: bad free count\n", fs);
        !           120:                 return (1);
        !           121:         }
        !           122: 
        !           123: 
        !           124: 
        !           125: 
        !           126: 
        !           127: 
        !           128: 
        !           129: 
        !           130: COHERENT Lexicon                                           Page 2
        !           131: 
        !           132: 
        !           133: 
        !           134: 
        !           135: canon.h                    Header file                    canon.h
        !           136: 
        !           137: 
        !           138: 
        !           139:         printf("%s: %ld\n", fs, nfree);
        !           140:         fclose(fp);
        !           141:         return (0);
        !           142: }
        !           143: 
        !           144: 
        !           145: ***** Files *****
        !           146: 
        !           147: <canon.h>
        !           148: 
        !           149: ***** See Also *****
        !           150: 
        !           151: ar.h,  byte ordering,  candaddr(), candev(),  canino(), canint(),
        !           152: canlong(), canshort(),  cansize(), cantime(),  canvaddr(), dir.h,
        !           153: l.out.h, header files
        !           154: 
        !           155: 
        !           156: 
        !           157: 
        !           158: 
        !           159: 
        !           160: 
        !           161: 
        !           162: 
        !           163: 
        !           164: 
        !           165: 
        !           166: 
        !           167: 
        !           168: 
        !           169: 
        !           170: 
        !           171: 
        !           172: 
        !           173: 
        !           174: 
        !           175: 
        !           176: 
        !           177: 
        !           178: 
        !           179: 
        !           180: 
        !           181: 
        !           182: 
        !           183: 
        !           184: 
        !           185: 
        !           186: 
        !           187: 
        !           188: 
        !           189: 
        !           190: 
        !           191: 
        !           192: 
        !           193: 
        !           194: 
        !           195: 
        !           196: COHERENT Lexicon                                           Page 3
        !           197: 
        !           198: 

unix.superglobalmegacorp.com

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