示例#1
0
文件: metadata.c 项目: 4nykey/rockbox
int process_metadata (WavpackContext *wpc, WavpackMetadata *wpmd)
{
    WavpackStream *wps = &wpc->stream;

    switch (wpmd->id) {
        case ID_DUMMY:
            return TRUE;

        case ID_DECORR_TERMS:
            return read_decorr_terms (wps, wpmd);

        case ID_DECORR_WEIGHTS:
            return read_decorr_weights (wps, wpmd);

        case ID_DECORR_SAMPLES:
            return read_decorr_samples (wps, wpmd);

        case ID_ENTROPY_VARS:
            return read_entropy_vars (wps, wpmd);

        case ID_HYBRID_PROFILE:
            return read_hybrid_profile (wps, wpmd);

        case ID_FLOAT_INFO:
            return read_float_info (wps, wpmd);

        case ID_INT32_INFO:
            return read_int32_info (wps, wpmd);

        case ID_CHANNEL_INFO:
            return read_channel_info (wpc, wpmd);

        case ID_SAMPLE_RATE:
            return read_sample_rate (wpc, wpmd);

        case ID_CONFIG_BLOCK:
            return read_config_info (wpc, wpmd);

        case ID_WV_BITSTREAM:
            return init_wv_bitstream (wpc, wpmd);

        case ID_SHAPING_WEIGHTS:
        case ID_WVC_BITSTREAM:
        case ID_WVX_BITSTREAM:
            return TRUE;

        default:
            return (wpmd->id & ID_OPTIONAL_DATA) ? TRUE : FALSE;
    }
}
示例#2
0
int main(int argc, char** argv)
{
  FFDB_DBT key, res;
  FFDB_DB	*dbp;
  FFDB_HASHINFO ctl;
  ffdb_cursor_t* cur;
  int	stat, i, numkey, numpairs;
  char *dbase;
  unsigned char userdata[4096];
  unsigned int len = 4096;
  ffdb_all_config_info_t acf;
  char *mykey[MAXWORDS], *mydata[MAXWORDS], tmp1[MAX_LEN], tmp2[MAX_LEN];
  FILE *fd;

  if (argc < 4) {
    fprintf (stderr, "Usage: %s cachesize dbase stringfiles\n", argv[0]);
    exit (1);
  }

  fd = fopen (argv[3], "r");
  if (!fd) {
    fprintf (stderr, "Cannot open string file %s\n", argv[3]);
    return -1;
  }

  i = 0;
  while (fscanf (fd, "%s", tmp1) >= 1 &&
	 fscanf (fd, "%s", tmp2) >= 1 && i < MAXWORDS) {
    mykey[i] = (char *)malloc(strlen(tmp1) + 1);
    strcpy (mykey[i], tmp1);
    mydata[i] = (char *)malloc(strlen(tmp2) + 1);
    strcpy (mydata[i], tmp2);
    i++;
  }
  numpairs = i;
  fclose (fd);


  i = 0;
  argv++;
  ctl.nbuckets = INITIAL;
  ctl.hash = NULL;
  ctl.cmp = NULL;
  ctl.bsize = 64;
  ctl.cachesize = atoi(*argv++);
  ctl.rearrangepages = 0;
  dbase = *argv++;
  fprintf (stderr, "dbase = %s\n", dbase);
  if (!(dbp = ffdb_dbopen(dbase, O_RDONLY, 0600, &ctl))) {
    /* create table */
    fprintf(stderr, "cannot open: hash table\n" );
    exit(1);
  }

  /* Read user and configuration information */
  read_user_info (dbp, userdata, &len);

  read_config_info (dbp, &acf);

  /* create a new cursor */
  stat = dbp->cursor (dbp, &cur, FFDB_KEY_CURSOR);
  if (stat != 0) {
    fprintf (stderr, "Cannot open a cursor\n");
    (dbp->close)(dbp);
    return -1;
  }

#if 0
  key.data = 0;
  key.size = 0;
  res.data = 0;
  res.size = 0;
#endif
  key.data = tmp1;
  key.size = MAX_LEN;
  res.data = tmp2;
  res.size = MAX_LEN;

  numkey = 0;
  while ((stat = cur->get (cur, &key, &res, FFDB_NEXT)) == FFDB_SUCCESS) {
#if 0
    fprintf (stderr, "Key len %d = %s\n", strlen((char *)(key.data)),(char *)(key.data));
    fprintf (stderr, "Data %s\n", (char *)(res.data));
#endif
    numkey++;

    /* Look for the key in the string table */
    for (i = 0; i < numpairs; i++) {
      if (strcmp (mykey[i], (char *)(key.data)) == 0) {
	if (strcmp (mydata[i], (char *)(res.data)) != 0) {
	    fprintf (stderr, "Data mismatch.\n");
	    return -1;
	}
      }
      break;
    }
    if (i >= numpairs) {
      fprintf (stderr, "Cannot match any keys\n");
      return -1;
    }

#if 0	  
    free (key.data);
    free (res.data);

    key.data = 0;
    key.size = 0;
    res.data = 0;
    res.size = 0;
#endif

    key.data = tmp1;
    key.size = MAX_LEN;
    res.data = tmp2;
    res.size = MAX_LEN;
  }

  cur->close (cur);

  (dbp->close)(dbp);

  fprintf (stderr, "Number of pairs found = %d\n", numkey);

  for (i = 0; i < numpairs; i++) {
    free (mykey[i]);
    free (mydata[i]);
  }

  return 0;
}
示例#3
0
文件: odexm.c 项目: andreiw/ode4linux
/*ARGSUSED*/
void
main( int argc, char **argv)
{
    errdesc = 1;
    debug = 0;

  if ( argc == 2 ) {
    conf_file = *(argv+1);
  } /* if */
    /*
     * setup network connections
     */
    setup_connections();

    if ( batch ) {
      /*
       * check authentication
       */

      authenticate_client();

      read_config_info ();

    } else {
      strcpy ( uniq_str, "kxct-compatible" );
    } /* if */
    for (;;) {
      /*
       * read argument list for command
       */
      read_arglist();
      /*
       * check configuration
       */
      check_config();

      if ( start_batch ) {
        start_batch = 0;
        continue;
      } /* if */
      if ( end_batch ) {
        break;
      } /* if */
      /*
       * receive data file
       */
      if (tempslot != 0)
          receive_data();

    /*
     * execute command
     */
    run_command();
    /*
     * transmit data file
     */
    if (tempslot != 0)
        transmit_data();

    /*
     * transmit the exit status
     */
    transmit_status();
    if ( ! batch ) {
      break;
    } /* if */
}
    /*
     * that is all
     */
    if ( made_temp_dir )
      (void) rmdir(tempdir);
    /* if */
    exit(0);
}
示例#4
0
文件: metadata.c 项目: AaronDnz/xbmc
int process_metadata (WavpackContext *wpc, WavpackMetadata *wpmd)
{
    WavpackStream *wps = wpc->streams [wpc->current_stream];

    switch (wpmd->id) {
	case ID_DUMMY:
	    return TRUE;

	case ID_DECORR_TERMS:
	    return read_decorr_terms (wps, wpmd);

	case ID_DECORR_WEIGHTS:
	    return read_decorr_weights (wps, wpmd);

	case ID_DECORR_SAMPLES:
	    return read_decorr_samples (wps, wpmd);

	case ID_ENTROPY_VARS:
	    return read_entropy_vars (wps, wpmd);

	case ID_HYBRID_PROFILE:
	    return read_hybrid_profile (wps, wpmd);

	case ID_SHAPING_WEIGHTS:
	    return read_shaping_info (wps, wpmd);

	case ID_FLOAT_INFO:
	    return read_float_info (wps, wpmd);

	case ID_INT32_INFO:
	    return read_int32_info (wps, wpmd);

	case ID_CHANNEL_INFO:
	    return read_channel_info (wpc, wpmd);

	case ID_CONFIG_BLOCK:
	    return read_config_info (wpc, wpmd);

	case ID_WV_BITSTREAM:
	    return init_wv_bitstream (wps, wpmd);

	case ID_WVC_BITSTREAM:
	    return init_wvc_bitstream (wps, wpmd);

	case ID_WVX_BITSTREAM:
	    return init_wvx_bitstream (wps, wpmd);

	case ID_RIFF_HEADER: case ID_RIFF_TRAILER:
	    return read_wrapper_data (wpc, wpmd);

	case ID_MD5_CHECKSUM:
	    if (wpmd->byte_length == 16) {
		memcpy (wpc->config.md5_checksum, wpmd->data, 16);
		wpc->config.flags |= CONFIG_MD5_CHECKSUM;
		wpc->config.md5_read = 1;
	    }

	    return TRUE;

	default:
	    return (wpmd->id & ID_OPTIONAL_DATA) ? TRUE : FALSE;
    }
}