Exemplo n.º 1
0
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;
  
}
Exemplo n.º 2
0
		//	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;
		}
Exemplo n.º 3
0
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 */
}
Exemplo n.º 4
0
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);
    }
}