Example #1
0
void Config::parse(const char *pos)
{
	while (1) {
		char *eol = strchr(pos, '\n');
		if (!eol)
			break;

		// parse
		if (!parse_blank(pos) && !parse_prefix(pos) && !parse_partition(pos) && !parse_node(pos))
			fatal("unexpected line in config file:\n%s<END>", pos);

		pos = eol + 1;
	}
}
Example #2
0
int main(int argc, char **argv) {
  int i=0;      /* counter */
  int all_flag;      /* flag whether all partition lines shoul be concatenated [OFF] */
  int paras_flag;    /* flag whether to parse evol. model params [OFF] */
  FILE *datei = NULL;  /* fp for partition file in NEXUS */
  partition_t partition_table;   /* combined partition results */
  paras_flag=0;
  all_flag=0;
  if(argc<2){
    printf("Please set a nexus file as a parameter\n E.g: \" %s Filename \"\n", argv[0]);
    return EXIT_FAILURE;
  }

  while ((i = getopt (argc, argv, "hapf:")) != -1)
    switch (i) {
      case 'a':
        all_flag = 1;
        break;
      case 'p':
        paras_flag = 1;
        break;
      case 'h':
        show_help(argv[0]);
        break;
      default:
        break;
      }
  datei=fopen(argv[optind],"rb");
  if(datei == NULL){
    printf("Please set a nexus file as a parameter\n E.g: \" %s Filename \"\n", argv[0]);
    return EXIT_FAILURE;
  }
  partition_table = parse_partition(datei,all_flag,paras_flag);
  for(i=0;i<partition_table.part_len;i++){
    if(paras_flag)
      printf("...%s....%s...%s...%s...",partition_table.partition_names[i],partition_table.gene_names[i],partition_table.model_names[i],partition_table.parameter_names[i]);
    else
      printf("...%s....%s...%s...",partition_table.partition_names[i],partition_table.gene_names[i],partition_table.model_names[i]);

    printf("%lu...%lu",partition_table.start[i],partition_table.end[i]);
    printf("\n");
  }
  protoss_build_nexus("hugo",&partition_table);
  destroy(&partition_table);
  return EXIT_SUCCESS;
}
Example #3
0
/*
 * \return 1: OK, 0: bad format or -errno
 */
static int parse_extended(blkid_probe pr, blkid_partlist ls,
	blkid_parttable tab, struct atari_part_def *part)
{
	uint32_t x0start, xstart;
	unsigned i = 0;
	int rc;

	x0start = xstart = be32_to_cpu(part->start);
	while (1) {
		struct atari_rootsector *xrs;
		xrs = (struct atari_rootsector *) blkid_probe_get_sector(pr, xstart);
		if (!xrs) {
			if (errno)
				return -errno;
			return 0;
		}

		/*
		 * There must be data partition followed by reference to next
		 * XGM or inactive entry.
		 */
		for (i=0; ; i++) {
			if (i >= ARRAY_SIZE(xrs->part) - 1)
				return 0;
			if (IS_ACTIVE(xrs->part[i]))
				break;
		}

		if (!memcmp(xrs->part[i].id, "XGM", 3))
			return 0;

		rc = parse_partition(ls, tab, &xrs->part[i], xstart);
		if (rc <= 0)
			return rc;

		if (!IS_ACTIVE(xrs->part[i+1]))
			break;

		if (memcmp(xrs->part[i+1].id, "XGM", 3))
			return 0;

		xstart = x0start + be32_to_cpu(xrs->part[i+1].start);
	}

	return 1;
}