Annotation of coherent/a/usr/man/MULTI/canon.h, revision 1.1.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.