void test_base16( ezpwd::asserter &assert ) { std::string deadbeef( "deadbeef" ); std::string nibbles( "\x0d\x0e\x0a\x0d\x0b\x0e\x0e\x0f" ); base16::decode( deadbeef ); if ( assert.ISEQUAL( std::string() << u8vec_t( deadbeef.begin(), deadbeef.end() ), std::string() << u8vec_t( nibbles.begin(), nibbles.end() ))) std::cout << assert << std::endl; base16::encode( deadbeef ); if ( assert.ISEQUAL( deadbeef, std::string( "DEADBEEF" ))) std::cout << assert << std::endl; }
static Rawimage* readslave(Header *header, int colorspace) { Rawimage *image; int nseg, i, H, V, m, n; uchar *b; soiheader(header); nseg = 0; image = nil; header->buf = jpgmalloc(header, 4096, 0); header->nbuf = 4096; while(header->err[0] == '\0'){ nseg++; n = readsegment(header, &m); b = header->buf; switch(m){ case -1: return image; case APPn+0: if(nseg==1 && strncmp((char*)b, "JFIF", 4)==0) /* JFIF header; check version */ if(b[5]>1 || b[6]>2) sprint(header->err, "ReadJPG: can't handle JFIF version %d.%2d", b[5], b[6]); break; case APPn+1: case APPn+2: case APPn+3: case APPn+4: case APPn+5: case APPn+6: case APPn+7: case APPn+8: case APPn+9: case APPn+10: case APPn+11: case APPn+12: case APPn+13: case APPn+14: case APPn+15: break; case DQT: quanttables(header, b, n); break; case SOF: case SOF2: header->Y = int2(b, 1); header->X = int2(b, 3); header->Nf =b[5]; for(i=0; i<header->Nf; i++){ header->comp[i].C = b[6+3*i+0]; nibbles(b[6+3*i+1], &H, &V); if(H<=0 || V<=0) jpgerror(header, "non-positive sampling factor (Hsamp or Vsamp)"); header->comp[i].H = H; header->comp[i].V = V; header->comp[i].Tq = b[6+3*i+2]; } header->mode = m; header->sf = b; break; case SOS: header->ss = b; switch(header->mode){ case SOF: image = baselinescan(header, colorspace); break; case SOF2: progressivescan(header, colorspace); break; default: sprint(header->err, "unrecognized or unspecified encoding %d", header->mode); break; } break; case DHT: huffmantables(header, b, n); break; case DRI: header->ri = int2(b, 0); break; case COM: break; case EOI: if(header->mode == SOF2) image = progressiveIDCT(header, colorspace); return image; default: sprint(header->err, "ReadJPG: unknown marker %.2x", m); break; } } return image; }