static unsigned short int readshort(FILE *fp) { unsigned short int valint; fread(&valint,sizeof(valint),1,fp); if (reverse_endian()) return hts_swap16(valint); else return valint; }
// Message Block Processing Function. void block_proc(const word_t* block) { static const int proc_buffer_words = 80; word_t proc_buffer[proc_buffer_words]; // initialize proc_buffer. Copy from block and reversed Endian. int i; for(i=0; i<proc_block_words; i++) { proc_buffer[i] = reverse_endian(block[i]); } // initialize proc_buffer of 16-63 for(; i < proc_buffer_words; i++) { proc_buffer[i] = sigma_b1(proc_buffer[i-2]) + proc_buffer[i-7] + sigma_b0(proc_buffer[i-15]) + proc_buffer[i-16]; } ////////////////////////////////////////////// word_t a = buffer[0]; word_t b = buffer[1]; word_t c = buffer[2]; word_t d = buffer[3]; word_t e = buffer[4]; for(i = 0; i < PROC_BUFFER_WORDS; i+=2) { word_t temp1 = h + sigma_a1(e) + func_ch(e, f, g) + get_k(i) + proc_buffer(i) word_t temp2 = sigma_a0(a), + func_maj(a, b, c); word_t a_, b_, d_; d_ = circular_b_shift(b); if ( i <= 19 ){ a_ = func1(b,c,d) + K0_19; b_ = func1(a,d_,c) + K0_19; } else if ( i <= 39 ){ a_ = func2(b,c,d) + K20_39; b_ = func2(a,d_,c) + K20_39; } else if ( i <= 59 ){ a_ = func3(b,c,d) + K40_59; b_ = func3(a,d_,c) + K40_59; } else{ a_ = func2(b,c,d) + K60_79; b_ = func2(a,d_,c) + K60_79; } word_t temp_b = circular_a_shift(a) + e + proc_buffer[i] + a_; word_t temp_a = circular_a_shift(temp_b) + d + proc_buffer[i+1] + b_; e = c; d = d_; c = circular_b_shift(a); b = temp_b; a = temp_a; } buffer[0] += a; buffer[1] += b; buffer[2] += c; buffer[3] += d; buffer[4] += e; }
static int hts_parse_java(t_hts_callbackarg * carg, httrackp * opt, htsmoduleStruct * str) { /* The wrapper_name memebr has changed: not for us anymore */ if (str->wrapper_name == NULL || strcmp(str->wrapper_name, libName) != 0) { /* Call parent functions if multiple callbacks are chained. */ if (CALLBACKARG_PREV_FUN(carg, parse) != NULL) { return CALLBACKARG_PREV_FUN(carg, parse) (CALLBACKARG_PREV_CARG(carg), opt, str); } strcpy(str->err_msg, "unexpected error: bad wrapper_name and no previous wrapper"); return 0; /* Unexpected error */ } else { if (detect_mime(str)) { /* (Legacy code) */ char catbuff[CATBUFF_SIZE]; FILE *fpout; JAVA_HEADER header; RESP_STRUCT *tab; const char *file = str->filename; str->relativeToHtmlLink = 1; #if JAVADEBUG printf("fopen\n"); #endif if ((fpout = FOPEN(fconv(catbuff, sizeof(catbuff), file), "r+b")) == NULL) { //fprintf(stderr, "Cannot open input file.\n"); sprintf(str->err_msg, "Unable to open file %s", file); return 0; // une erreur.. } #if JAVADEBUG printf("fread\n"); #endif //if (fread(&header,1,sizeof(JAVA_HEADER),fpout) != sizeof(JAVA_HEADER)) { // pas complet.. if (fread(&header, 1, 10, fpout) != 10) { // pas complet.. fclose(fpout); sprintf(str->err_msg, "File header too small (file len = " LLintP ")", (LLint) fsize(file)); return 0; } #if JAVADEBUG printf("header\n"); #endif // tester en tête if (reverse_endian()) { header.magic = hts_swap32(header.magic); header.count = hts_swap16(header.count); } if (header.magic != 0xCAFEBABE) { sprintf(str->err_msg, "non java file"); if (fpout) { fclose(fpout); fpout = NULL; } return 0; } tab = (RESP_STRUCT *) calloc(header.count, sizeof(RESP_STRUCT)); if (!tab) { sprintf(str->err_msg, "Unable to alloc %d bytes", (int) sizeof(RESP_STRUCT)); if (fpout) { fclose(fpout); fpout = NULL; } return 0; // erreur.. } #if JAVADEBUG printf("calchead\n"); #endif { int i; for(i = 1; i < header.count; i++) { int err = 0; // ++ tab[i] = readtable(str, fpout, tab[i], &err); if (!err) { if ((tab[i].type == HTS_LONG) || (tab[i].type == HTS_DOUBLE)) i++; //2 element si double ou float } else { // ++ une erreur est survenue! if (strnotempty(str->err_msg) == 0) strcpy(str->err_msg, "Internal readtable error"); free(tab); if (fpout) { fclose(fpout); fpout = NULL; } return 0; } } } #if JAVADEBUG printf("addfiles\n"); #endif { //unsigned int acess; unsigned int Class; unsigned int SClass; int i; //acess = readshort(fpout); Class = readshort(fpout); SClass = readshort(fpout); for(i = 1; i < header.count; i++) { if (tab[i].type == HTS_CLASS) { if ((tab[i].index1 < header.count) && (tab[i].index1 >= 0)) { if ((tab[i].index1 != SClass) && (tab[i].index1 != Class) && (tab[tab[i].index1].name[0] != '[')) { if (!strstr(tab[tab[i].index1].name, "java/")) { char BIGSTK tempo[1024]; tempo[0] = '\0'; sprintf(tempo, "%s.class", tab[tab[i].index1].name); #if JAVADEBUG printf("add %s\n", tempo); #endif if (tab[tab[i].index1].file_position >= 0) str->addLink(str, tempo); /* tab[tab[i].index1].file_position */ } } } else { i = header.count; // exit } } } } #if JAVADEBUG printf("end\n"); #endif free(tab); if (fpout) { fclose(fpout); fpout = NULL; } return 1; } else { strcpy(str->err_msg, "bad MIME type"); } } return 0; /* Error */ }
void DSRObject::ReverseEndians() { // // If the int size of the header is not 348, assume that the data was // written in a reverse endian format that we have to reverse when we // read it in. // if(data.hk.sizeof_hdr != 348) { reverseEndian = true; data.hk.sizeof_hdr = reverse_endian(data.hk.sizeof_hdr); data.hk.extents = reverse_endian(data.hk.extents); data.hk.session_error = reverse_endian(data.hk.session_error); int i; for(i = 0; i < 8; ++i) data.dime.dim[i] = reverse_endian(data.dime.dim[i]); data.dime.unused1 = reverse_endian(data.dime.unused1); data.dime.datatype = reverse_endian(data.dime.datatype); data.dime.bitpix = reverse_endian(data.dime.bitpix); data.dime.dim_un0 = reverse_endian(data.dime.dim_un0); data.dime.bitpix = reverse_endian(data.dime.bitpix); for(i = 0; i < 8; ++i) data.dime.pixdim[i] = reverse_endian(data.dime.pixdim[i]); data.dime.vox_offset = reverse_endian(data.dime.vox_offset); data.dime.funused1 = reverse_endian(data.dime.funused1); data.dime.funused2 = reverse_endian(data.dime.funused2); data.dime.funused3 = reverse_endian(data.dime.funused3); data.dime.cal_max = reverse_endian(data.dime.cal_max); data.dime.cal_min = reverse_endian(data.dime.cal_min); data.dime.compressed = reverse_endian(data.dime.compressed); data.dime.verified = reverse_endian(data.dime.verified); data.dime.glmax = reverse_endian(data.dime.glmax); data.dime.glmin = reverse_endian(data.dime.glmin); data.hist.views = reverse_endian(data.hist.views); data.hist.vols_added = reverse_endian(data.hist.vols_added); data.hist.start_field = reverse_endian(data.hist.start_field); data.hist.field_skip = reverse_endian(data.hist.field_skip); data.hist.omax = reverse_endian(data.hist.omax); data.hist.omin = reverse_endian(data.hist.omin); data.hist.smax = reverse_endian(data.hist.smax); data.hist.smin = reverse_endian(data.hist.smin); } }