void MTD_FLASHMEM MultipartFormDataProcessor::handle_DecodingHeaders(char c) {
  static char const EOH[4] = {0x0D, 0x0A, 0x0D, 0x0A};
  if (c == EOH[substate]) {
    ++substate;
    if (substate == 2) {
      // useful if this is not an EOH to separate headers
      headers->append(0x0D, 1);
    } else if (substate == 4) {
      // end of headers
      headers->append(0, 1); // add string terminating zero

      // look for "name" parameter
      CharChunksIterator keyBegin;
      extractParameter(FSTR(" name="), headers->getIterator(), &keyBegin, &nameBegin, &nameEnd);

      // look for "filename" parameter
      CharChunksIterator filenameBegin, filenameEnd;

      if (extractParameter(FSTR(" filename="), headers->getIterator(), &keyBegin, &filenameBegin, &filenameEnd)) {
        //// this is a file
        // add "filename" to form fields
        filenameBegin = getFilename(filenameBegin,
                                    filenameEnd); // some browsers send a full path instead of a simple file name (IE)
        formfields->add(keyBegin + 1, keyBegin + 9, filenameBegin, filenameEnd);

        // extract Content-Type parameter
        CharChunksIterator contentTypeBegin, contentTypeEnd;
        if (extractParameter(FSTR("Content-Type:"), filenameEnd, &keyBegin, &contentTypeBegin, &contentTypeEnd)) {
          // add "Content-Type" to form fields
          formfields->add(keyBegin, keyBegin + 12, contentTypeBegin, contentTypeEnd);

          // create file
          file.create(APtr<char>(t_strdup(filenameBegin, filenameEnd)).get(),
                      APtr<char>(t_strdup(contentTypeBegin, contentTypeEnd)).get());

          state = GettingFile;
        } else {
          // missing content-type, cannot get as file!
          state = GettingValue;
        }
      } else {
        //// this is a normal field
        valueStorage = chunksFactory.add();
        state = GettingValue;
      }
      substate = 0;
    }
  } else {
    // add to headers buffer
    headers->append(c, HEADERS_CHUNK_SIZE);
    substate = 0;
  }
}
void getCommandLineParams(t_Params *ptParams,int argc,char *argv[])
{
  char *szTemp = NULL;
  char *pcError = NULL;

  /*get parameter file name*/
  ptParams->szDatFile  = extractParameter(argc,argv,DAT_FILE,ALWAYS);  
  if(ptParams->szDatFile == NULL)
    goto error;

  /*get output filestub*/
  ptParams->szTreeFile  = extractParameter(argc,argv,TREE_FILE, ALWAYS);  
  if(ptParams->szTreeFile == NULL)
    goto error;

  ptParams->szMapFile  = extractParameter(argc,argv,MAP_FILE, ALWAYS);  
  if(ptParams->szMapFile == NULL)
    goto error;

  szTemp = extractParameter(argc,argv,SPLIT,ALWAYS);
  if(szTemp != NULL){
    ptParams->nSplit = strtol(szTemp,&pcError,10);
    if(*pcError != '\0'){
      goto error;
    }
  }
  else{
    goto error;
  }

  szTemp = extractParameter(argc,argv,MIN_SIZE,ALWAYS);
  if(szTemp != NULL){
    ptParams->nMinSize = strtol(szTemp,&pcError,10);
    if(*pcError != '\0'){
      goto error;
    }
  }
  else{
    goto error;
  }

  return;

 error:
  writeUsage(stdout);
  exit(EXIT_FAILURE);

}
Exemple #3
0
void getCommandLineParams(t_Params *ptParams,int argc,char *argv[])
{
  char *szTemp = NULL;
  char *cError = NULL;

  /*get parameter file name*/
  ptParams->szInputFile  = extractParameter(argc,argv, INPUT_FILE,ALWAYS);  
  if(ptParams->szInputFile == NULL)
    goto error;
  
  if(szTemp = extractParameter(argc,argv, LOOKUP_FILE_FLAG, OPTION)){
    ptParams->szLookUpFile = szTemp;
  }
  else{
    ptParams->szLookUpFile = getenv("SEQ_LOOKUP_FILE");
    if(ptParams->szLookUpFile == NULL){
        ptParams->szLookUpFile = LOOKUP_FILE;
    }  
  }


  /*identifiers*/
  szTemp = extractParameter(argc, argv, IDENT, OPTION);
  if(szTemp != NULL){
    ptParams->bIdent = TRUE;
  }
  else{
    ptParams->bIdent = FALSE;
  }

  szTemp = extractParameter(argc, argv, PHYLIP, OPTION);
  if(szTemp != NULL){
    ptParams->bPhylip = TRUE;
  }
  else{
    ptParams->bPhylip = FALSE;
  }

  return;

 error:
  writeUsage(stdout);
  exit(EXIT_FAILURE);
}
Exemple #4
0
void getCommandLineParams(t_Params *ptParams,int argc,char *argv[])
{
  char *szTemp = NULL;
  char *cError = NULL;

  /*get parameter file name*/
  ptParams->szDataFile  = extractParameter(argc,argv, DATA_FILE, ALWAYS);  
  if(ptParams->szDataFile == NULL)
    goto error;

  if(extractParameter(argc,argv, NO_INDEX, OPTION)){
    ptParams->bNoIndex = TRUE;
  }
  else{
    ptParams->bNoIndex = FALSE;
  }

  if(szTemp = extractParameter(argc,argv, LOOKUP_FILE_FLAG, OPTION)){
    ptParams->szLookUpFile = szTemp;
  }
  else{
    ptParams->szLookUpFile = getenv("PYRO_LOOKUP_FILE");
    if(ptParams->szLookUpFile == NULL){
    	ptParams->szLookUpFile = LOOKUP_FILE;
    }	
  }


  ptParams->szOutFileStub  = extractParameter(argc,argv, OUT_FILE_STUB, ALWAYS);  
  if(ptParams->szOutFileStub == NULL)
    goto error;

  return;

 error:
  writeUsage(stdout);
  exit(EXIT_FAILURE);
}
Exemple #5
0
void getCommandLineParams(t_Params *ptParams,int argc,char *argv[])
{
  char *szTemp = NULL;
  char *cError = NULL;

  /*get parameter file name*/
  ptParams->szSeqInputFile  = extractParameter(argc,argv, SEQ_INPUT_FILE,ALWAYS);  
  if(ptParams->szSeqInputFile == NULL)
    goto error;
  
  /*get parameter file name*/
  ptParams->szRefInputFile  = extractParameter(argc,argv, REF_INPUT_FILE,OPTION);  
  if(ptParams->szRefInputFile == NULL){
    ptParams->szRefInputFile = ptParams->szSeqInputFile;
  }

  szTemp  = extractParameter(argc,argv,SKEW,OPTION);  
  if(szTemp != NULL){
    ptParams->nSkew = strtol(szTemp,&cError,10);
    if(*cError!='\0'){
      goto error;
    }
  }
  else{
    ptParams->nSkew = DEFAULT_SKEW;
  }

  if(extractParameter(argc,argv,USE_BALANCE,OPTION)){  
    ptParams->bImbalance = FALSE;
  }
  else{
    ptParams->bImbalance = TRUE;
  }

  szTemp  = extractParameter(argc,argv,CLASSIFY,OPTION);  
  if(szTemp != NULL){
    char *szTok = strtok(szTemp, DELIM2);
    
    ptParams->dAlpha = strtod(szTok,&cError);
    if(*cError!='\0'){
      goto error;
    }

    szTok = strtok(NULL, DELIM2);
    
    ptParams->dBeta = strtod(szTok,&cError);
    if(*cError!='\0'){
      goto error;
    }
  }
  else{
    if(ptParams->bImbalance == FALSE){
      ptParams->dAlpha = DEFAULT_ALPHA_1;
      ptParams->dBeta  = DEFAULT_BETA_1;
    }
    else{
      ptParams->dAlpha = DEFAULT_ALPHA_2;
      ptParams->dBeta  = DEFAULT_BETA_2;
    }
  }

  if(extractParameter(argc,argv,OUTPUT_ALIGNMENTS,OPTION)){  
    ptParams->bOutputAlignments = TRUE;
  }
  else{
    ptParams->bOutputAlignments = FALSE;
  }

  if(szTemp = extractParameter(argc,argv, LOOKUP_FILE_FLAG, OPTION)){
    ptParams->szLookUpFile = szTemp;
  }
  else{
    ptParams->szLookUpFile = getenv("SEQ_LOOKUP_FILE");
    if(ptParams->szLookUpFile == NULL){
        ptParams->szLookUpFile = LOOKUP_FILE;
    }  
  }

  return;

 error:
  writeUsage(stdout);
  exit(EXIT_FAILURE);
}