[BACK]Return to junk.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / plugin

Annotation of OpenXM/src/kan96xx/plugin/junk.c, Revision 1.1.1.1

1.1       maekawa     1: /* size : success,  -1: error , -2 : do not use size field. */
                      2: int cmoFindHeader(struct cmoBuffer *cb)
                      3: {
                      4:   char data[4];
                      5:   int c;
                      6:   int mtag;
                      7:   int size;
                      8:   int count=0;
                      9:   data[0] = data[1] = data[2] = data[3] = 0xff;
                     10:   while (1) {
                     11:     if ((c = cmoGetIntFromBuf(CMOGETBYTE,cb)) < 0) {
                     12:       fprintf(stderr,"cmoFindHeader: unexpected EOF.\n");
                     13:       fprintf(stderr,"data=%2x,%2x,%2x,%2x\n",data[0],data[1],data[2],data[3]);
                     14:       /* errorCmo("cmoFindHeader: unexpected end of file."); */
                     15:       return(-1);
                     16:     }
                     17:     count++;
                     18:     data[0] = data[1];
                     19:     data[1] = data[2];
                     20:     data[2] = data[3];
                     21:     data[3] = (char)c;
                     22:     mtag = ntohl(*((int *)(data)));
                     23:     if (mtag == CMO_DATUM) {
                     24:       size = cmoGetIntFromBuf(CMOGET,cb);
                     25:       if (size == -1) {
                     26:        return(-2);
                     27:       }else if (size >= 0) {
                     28:        return(size);
                     29:       }else {
                     30:        return(-1);  /* Invalid size field. */
                     31:       }
                     32:     }else{
                     33:       if ((count>4) && (count <20)) {
                     34:        printf("cmoFindHeader: Warning: Illegal cmo format. Looking for a header.");
                     35:        printf(" %2x.\n",c);
                     36:        if (count == 19) printf("Too many warnings. They are suppressed.\n");
                     37:       }else if (count >= 20) {
                     38:        count--;
                     39:       }
                     40:     }
                     41:   }
                     42: }
                     43:
                     44: int cmoOutHeader(int size) {
                     45:   cmoOutRawInt(CMO_DATUM);
                     46:   if (size < 0) {
                     47:     size = -1;
                     48:   }
                     49:   cmoOutRawInt(size);
                     50: }
                     51:
                     52: int cmoFindTail(struct cmoBuffer *cb)
                     53: {
                     54:   char data[4];
                     55:   int c;
                     56:   int mtag;
                     57:   int size;
                     58:   int count=0;
                     59:   data[0] = data[1] = data[2] = data[3] = 0xff;
                     60:   while (1) {
                     61:     if ((c = cmoGetIntFromBuf(CMOGETBYTE,cb)) < 0) {
                     62:       fprintf(stderr,"cmoFindHeader: unexpected EOF.\n");
                     63:       fprintf(stderr,"data=%2x,%2x,%2x,%2x\n",data[0],data[1],data[2],data[3]);
                     64:       /* errorCmo("cmoFindHeader: unexpected end of file."); */
                     65:       return(-1);
                     66:     }
                     67:     data[0] = data[1];
                     68:     data[1] = data[2];
                     69:     data[2] = data[3];
                     70:     data[3] = (char)c;
                     71:     count++;
                     72:     mtag = ntohl(*((int *)(data)));
                     73:     if (mtag == CMO_TAIL) {
                     74:       size = cmoGetIntFromBuf(CMOGET,cb);
                     75:       break;
                     76:     }else{
                     77:       if ((count > 4) && (count < 20)) {
                     78:        printf("cmoFindTail: Warning: Illegal cmo format. Looking for a tail.");
                     79:        printf(" %2x.\n",c);
                     80:        if (count == 19) printf("Too many warnings. They are suppressed.\n");
                     81:       }else if (count >= 20){
                     82:        count--;
                     83:       }
                     84:     }
                     85:   }
                     86:   /* read size signatures. */
                     87:   if (size > 0) {
                     88:     errorCmo("cmoFindTail:  digital signature has not been supported in this implementation.");
                     89:   }
                     90:   return(0);
                     91: }
                     92:
                     93: int cmoOutTail(int size, void *signature)
                     94: {
                     95:   cmoOutRawInt(CMO_TAIL);
                     96:   if (size > 0) {
                     97:     cmoOutputToBuf(CMOPUT,signature,size);
                     98:   }else{
                     99:     cmoOutRawInt(0);
                    100:   }
                    101:   return(0);
                    102: }
                    103:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>