Exemple #1
0
// Flushes out a queue of interpolation commands
void Mesher::flush_queue()
{
    Vec3f low[MIN_VOLUME];
    Vec3f high[MIN_VOLUME];

    // Go through the list, saving a list of vertex pairs on which
    // interpolation should be run into low and high.
    unsigned count=0;
    for (auto c : queue)
    {
        if (c.cmd == InterpolateCommand::INTERPOLATE)
        {
            low[count] = c.v0;
            high[count] = c.v1;
            count++;
        }
    }

    if (count)
        eval_zero_crossings(low, high, count);

    // Next, go through and actually load vertices
    // (either directly or from the cache)
    count = 0;
    for (auto c : queue)
    {
        if (c.cmd == InterpolateCommand::INTERPOLATE)
        {
            push_vert(ex[count], ey[count], ez[count]);
            count++;
        }
        else if (c.cmd == InterpolateCommand::CACHED)
        {
            unsigned i = c.cached;
            push_vert(ex[i], ey[i], ez[i]);
        }
        else if (c.cmd == InterpolateCommand::END_OF_VOXEL)
        {
            if (detect_edges)
            {
                // Clear voxel_end
                // (it will be reset when the next triangle is pushed)
                voxel_end = triangles.end();

                // Then, iterate until no more features are found in
                // the current voxel.
                while (voxel_start != voxel_end &&
                       voxel_start != triangles.end())
                {
                    check_feature();
                }

                // Clear voxel_start
                // (it will be reset when the next triangle is pushed)
                voxel_start = triangles.end();
            }
        }
    }
    queue.clear();
}
Exemple #2
0
parse_proc_cpuinfo (int bufsize)
{
  char *buffer = (char *)malloc(bufsize);
  FILE *fd;
  simd_support = 0;

  if (!buffer)
    return 0;

  fd = fopen("/proc/cpuinfo", "r");
  if (fd) {
    while (fgets(buffer, bufsize, fd)) {
      if (!strchr(buffer, '\n') && !feof(fd)) {
        /* "impossible" happened - insufficient size of the buffer! */
        fclose(fd);
        free(buffer);
        return 0;
      }
      if (check_feature(buffer, "neon"))
        simd_support |= JSIMD_ARM_NEON;
    }
    fclose(fd);
  }
  free(buffer);
  return 1;
}
Exemple #3
0
int mdt_feature_group_add(struct mdt_library *mlib, const char *name,
                          mod_mdt_calc precalc_type, int ifeat1, int ifeat2,
                          mdt_cb_feature_group getbin, void *data,
                          mdt_cb_free freefunc, GError **err)
{
  struct mdt_feature_group *feat;
  int nfeat;

  if (!check_feature(ifeat1, mlib, 1, err)
      || !check_feature(ifeat2, mlib, 2, err)) {
    return -1;
  }
  feat = &(add_feature(mlib, &nfeat, MDT_FEATURE_GROUP, data,
                       freefunc)->u.group);
  feat->ifeat1 = ifeat1;
  feat->ifeat2 = ifeat2;
  feat->getbin = getbin;
  mod_mdt_libfeature_register(&mlib->base, nfeat, name, precalc_type,
                              MOD_MDTP_A, MOD_MDTS_PROTEIN, FALSE, 0);
  return nfeat;
}
static void check_all_features ( uint *n_supported, uint *n_total )
{
    DASSERT(n_supported);
    DASSERT(n_total);

    uint feat;
    for ( feat = 0; feat < FEAT__ALL; feat++ )
    {
	(*n_total)++;
	    if (check_feature(feat))
		(*n_supported)++;
    }
}
Exemple #5
0
int main(int argc,char *argv[])
{
    int a,b,c;
    FILE *outfile = NULL, *infile = NULL;
    char *outfile_name=NULL,*infile_name=NULL;
    char tmp[20];
    int vflag=0,oflag=0,hflag=0,lflag=0,plusflag=0,minusflag=0;
#ifdef LICENSE
    license_struct lstr;
#endif
    while ((c = getopt(argc, argv, "lhvo:")) != -1) {
	switch (c) {
	case 'o':/*set outfile*/
	    outfile_name=optarg;
	    oflag = 1;
	    break;
	case 'v':/*print version*/
	    vflag=1;
	    break;
	case 'h':/*print help (usage)*/
	    hflag=1;
	    break;
	case 'l':/*list event types*/
	    lflag=1;
	    break;
	default:
	    Usage(argv[0]);
	    return EXIT_FAILURE;
	}
    }
    if (oflag + vflag + hflag + lflag > 1) {
	Usage(argv[0]);
	return EXIT_FAILURE;
    } else if (vflag) {
        fputs("Log Filter for the TTCN-3 Test Executor\n"
	    "Product number: " PRODUCT_NUMBER "\n"
	    "Build date: " __DATE__ " " __TIME__ "\n"
	    "Compiled with: " C_COMPILER_VERSION "\n\n"
	    COPYRIGHT_STRING "\n\n", stderr);
#ifdef LICENSE
	print_license_info();
#endif
	return EXIT_SUCCESS;
    } else if (hflag) {
	Usage(argv[0]);
	return EXIT_SUCCESS;
    } else if(lflag) {
	ListTypes();
	return EXIT_SUCCESS;
    }
#ifdef LICENSE
    init_openssl();
    load_license(&lstr);
    if (!verify_license(&lstr)) {
      free_license(&lstr);
      free_openssl();
      exit(EXIT_FAILURE);
    }
    if (!check_feature(&lstr, FEATURE_LOGFORMAT)) {
	fputs("The license key does not allow the filtering of log files.\n",
	    stderr);
	return 2;
    }
    free_license(&lstr);
    free_openssl();
#endif
/*
switches: -v -o -h -l
filter parameters: parameter+ or parameter-
*/
    for(a=0;a<MaxType;a++)Wflags[a]=0;
    for(a=1;a<argc;a++) {
	if(*argv[a]=='-'){if(*(argv[a]+1)=='o')a++;continue;}/*switch*/
	if(*(argv[a]+strlen(argv[a])-1)=='-') {/*type to ignore*/
	    for(b=0,c=0;b<MaxType;b++)
		if(0==strncmp(EventTypeNames[b],argv[a],
			strlen(EventTypeNames[b]))&&strlen(EventTypeNames[b])==
			strlen(argv[a])-1) {
		    Wflags[b]=DontWrite;
		    c=1;
		}
	    if(!c) {/*Undefined type*/
		strncpy(tmp,argv[a],sizeof(tmp)-1);
		if(strlen(argv[a])>sizeof(tmp)-1)
		    for(c=2;c<5;c++)tmp[sizeof(tmp)-c]='.';
		else tmp[strlen(argv[a])-1]='\0';
		tmp[sizeof(tmp)-1]='\0';
		if(strlen(tmp))fprintf(stderr,"Warning: %s is not a valid "
		    "event-type name.\n",tmp);
		else fprintf(stderr,"Warning: `-\' without an event-type "
		    "name.\n");
	    }
	    Wothers=Write;
	    minusflag=1;
	    continue;
	}
	if(*(argv[a]+strlen(argv[a])-1)=='+') {/*type to write out*/
	    for(b=0,c=0;b<MaxType;b++)
		if(0==strncmp(EventTypeNames[b],argv[a],
			strlen(EventTypeNames[b]))&&strlen(EventTypeNames[b])==
			strlen(argv[a])-1) {
		    Wflags[b]=Write;
		    c=1;
		}
	    if(!c) {/*Undefined type*/
		strncpy(tmp,argv[a],sizeof(tmp)-1);
		if(strlen(argv[a])>sizeof(tmp)-1)
		    for(c=2;c<5;c++)tmp[sizeof(tmp)-c]='.';
		else tmp[strlen(argv[a])-1]='\0';
		tmp[sizeof(tmp)-1]='\0';
		if(strlen(tmp))fprintf(stderr,"Warning: %s is not a valid "
		    "event-type name.\n",tmp);
		else fprintf(stderr,"Warning: `+\' without an event-type "
		    "name.\n");
	    }
	    Wothers=DontWrite;
	    plusflag=1;
	    continue;
	}
	if(infile_name!=NULL) {/*only one input file at once*/
	    fprintf(stderr,"Error: more than one input file specified.\n");
	    return EXIT_FAILURE;
	}
	infile_name=argv[a];
    }
    if(minusflag&&plusflag) {/*type1+ and type2- at the same time could cause
		types that are not defined what to do with, to act based on the
		last filter definition. Thus it is not allowed.*/
	fprintf(stderr,"Error: include and exclude at the same time.\n");
	return EXIT_FAILURE;
    }
    if(infile_name==NULL)infile=stdin;/*if no infile specified use stdin*/
    else {
	infile=fopen(infile_name,"r");
	if(infile==NULL) {
	    fprintf(stderr,"Error opening %s : %s\n",infile_name,
		strerror(errno));
	    return EXIT_FAILURE;
	}
    }
    if(oflag) {
	outfile=fopen(outfile_name,"w");
	if(outfile==NULL) {
	    fprintf(stderr,"Error creating %s : %s\n",outfile_name,
		strerror(errno));
	    return EXIT_FAILURE;
	}
    } else outfile=stdout;/*if no outfile specified use stdout*/
    a=ProcessFile(outfile,infile);/*filter infile to outfile*/
    if(a==ERR_INVALID_LOG) {
	if(infile_name!=NULL)fprintf(stderr,"Error: the file %s is not a valid "
	    "log file.\n",infile_name);
	else fprintf(stderr,"Error: invalid format received from standard "
	    "input.\n");
	return EXIT_FAILURE;
    } else if(a==ERR_WRITE) {
	if(errno)fprintf(stderr,"Error writing to output: %s\n",
	    strerror(errno));
	else fprintf(stderr,"Error writing to output\n");
	return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}
enumError cmd_features()
{
    uint n_supported = 0, n_total = 0;
    
    ParamList_t * param;
    for (  param = first_param; param; param = param->next )
    {
	ccp arg = param->arg;
	if ( !arg || !*arg )
	    continue;

	int cmd_stat;
	const CommandTab_t * cmd = ScanCommand(&cmd_stat,arg,feature_tab);
	if ( !cmd || cmd_stat )
	{
	    n_total++;
	    if ( verbose > 0 )
		printf("? Unknown feature: %s.\n",arg);
	    continue;
	}

	if ( cmd->id == FEAT__ALL )
	    check_all_features(&n_supported,&n_total);
	else
	{
	    n_total++;
	    if (check_feature(cmd->id))
		n_supported++;
	}
    }

    if (!n_total)
	check_all_features(&n_supported,&n_total);

    if ( n_supported == n_total )
    {
	if ( verbose >= -1 )
	{
	    if ( n_total == 1 )
		printf("> Exit status 0: The requested features is supported.\n");
	    else
		printf("> Exit status 0: All %u requested features are supported.\n",
			n_total);
	}
	return 0;
    }

    if ( !n_supported )
    {
	if ( verbose >= -1 )
	{
	    if ( n_total == 1 )
		printf("> Exit status 2: The requested features is not supported.\n");
	    else
		printf("> Exit status 2: All %u requested features are not supported.\n",
			n_total);
	}
	return 2;
    }

    if ( verbose >= -1 )
	printf("> Exit status 1: %u of %u requested features are supported.\n",
		    n_supported, n_total );
    return 1;
}
Exemple #7
0
int main(int argc,char *argv[])
{
    int a,b,c,processed_files=0,filename_count=0;
    char *outfile_name=NULL;
    int vflag=0,oflag=0;
#ifdef LICENSE
    license_struct lstr;
#endif
    progname=argv[0];
    atexit(DelTemp);
    signal(SIGINT,ControlChandler);
    while ((c = getopt(argc, argv, "vo:")) != -1) {
	switch (c) {
	case 'o':
	    outfile_name=optarg;
	    oflag = 1;
	    break;
	case 'v':
	    vflag=1;
	    break;
	default: Usage();return 0;
	}
    }
    if(oflag&&vflag){Usage();return 0;}/*both switches are used*/
	if(vflag) {
	fputs("Log Merger for the TTCN-3 Test Executor\n"
	    "Product number: " PRODUCT_NUMBER "\n"
	    "Version: " VERSION_STRING "\n"
	    "Build date: " __DATE__ " " __TIME__ "\n"
	    "Compiled with: " C_COMPILER_VERSION "\n\n"
	    COPYRIGHT_STRING "\n\n", stderr);
#ifdef LICENSE
	print_license_info();
#endif
	return 0;
    }
#ifdef LICENSE
    init_openssl();
    load_license(&lstr);
    if (!verify_license(&lstr)) {
      free_license(&lstr);
      free_openssl();
      exit(EXIT_FAILURE);
    }
    if (!check_feature(&lstr, FEATURE_LOGFORMAT)) {
	fputs("The license key does not allow the merging of log files.\n",
	    stderr);
	return 2;
    }
    free_license(&lstr);
    free_openssl();
#endif
    argc-=optind-1;argv+=optind-1;
    if(argc<2){Usage();return 0;}/*executed when no input file is given*/
    for(a=1;a<argc;a++) {/*find first file with a valid timestamp*/
	TimeStampUsed=GetTimeStampFormat(argv[a]);
	if(TimeStampUsed!=TSF_Undefined)break;
    }
    switch(TimeStampUsed) {
	case TSF_Seconds: fputs("Merging logs with timestamp "
	    "format \"seconds\" has no sense.\n", stderr); return 0;
	case TSF_Time: TimeStampLength=TIMELENGTH;break;
	case TSF_DateTime: TimeStampLength=DATETIMELENGTH;break;
	default: fputs("Unsupported timestamp format.\n", stderr); return 1;
    }
    for(a=1,c=0;a<argc;a++) {/*get files with valid timestamp format*/
	b=GetTimeStampFormat(argv[a]);
	if(TimeStampUsed==b) {/*file conains at least one valid timestamp*/
	    c++;
	    name_list_in=(char **)Realloc(name_list_in,c*sizeof(char *));
	    name_list_in[c-1] = mcopystr(argv[a]);
	} else if(b==TSF_Undefined)/*file contains no timestamp or uses a
					different format than the first match*/
		fprintf(stderr,"Warning: unknown format in %s\n",argv[a]);
	    else fprintf(stderr,"Warning: format mismatch in %s\n",argv[a]);
    }
    num_allfiles=c;
    if(num_allfiles<1){Usage();return 0;}/*no valid log file found*/
    if(oflag){/*switch [-o outfile] is used -> create outfile*/
	outfile = fopen(outfile_name, FOPEN_WRITE);
	if(outfile==NULL) {
	    fprintf(stderr,"Error creating %s %s\n",outfile_name,strerror(errno));
	    return 1;
	}
    } else {
	outfile = stdout;
    }
    while(1) {
	filename_count=num_allfiles;start_file=0;
	while(num_allfiles>0) {/*process files in name_list_in*/
	    processed_files=OpenMaxFiles(num_allfiles,name_list_in+start_file);
	    must_use_temp=True;/*if there are infiles remaining use tempfiles
				for all*/
	    if((processed_files<2)&&(num_allfiles>1)){fprintf(stderr,"Error: "
		"can not open enough files.\nMore descriptors required "
		"(set with the command `limit descriptors\')\n");return 1;}
	    if(infiles_processed==True)
		for(a=0;a<processed_files;a++) {
		    Free(EventList[a]->str_to_add);
		    EventList[a]->str_to_add = NULL;
		}
	    num_allfiles-=processed_files;
	    ProcessOpenFiles();
	    CloseAllFiles();
	    start_file+=processed_files;
	}
	must_use_temp=False;/*all infiles processed*/
	/*remove temporary files used in previous step*/
	if(infiles_processed==True)
	    for(a=0;a<filename_count;a++)remove(name_list_in[a]);
	infiles_processed=True;
	for(a=0;a<filename_count;a++)Free(name_list_in[a]);
	Free(name_list_in);
	if(num_tempfiles==0)break;/*no more file to process*/
	name_list_in=temp_file_list;/*process tempfiles*/
	num_allfiles=num_tempfiles;
	num_tempfiles=0;temp_file_list=NULL;
    }
    check_mem_leak(progname);
    return 0;
}
/**
 * Process 'generate' command.
 *
 * @return error code (0 - no error)
 */
static int
process_generate (cli_state_t *cli_state_p, /**< cli state */
                  int argc, /**< number of arguments */
                  char *prog_name_p) /**< program name */
{
  (void) argc;

  bool is_save_literals_mode_in_c_format = false;
  uint32_t snapshot_flags = 0;
  jerry_init_flag_t flags = JERRY_INIT_EMPTY;

  const char *file_name_p = NULL;
  uint8_t *source_p = input_buffer;
  size_t source_length = 0;
  const char *save_literals_file_name_p = NULL;

  cli_change_opts (cli_state_p, generate_opts);

  for (int id = cli_consume_option (cli_state_p); id != CLI_OPT_END; id = cli_consume_option (cli_state_p))
  {
    switch (id)
    {
      case OPT_GENERATE_HELP:
      {
        cli_help (prog_name_p, "generate", generate_opts);
        return JERRY_STANDALONE_EXIT_CODE_OK;
      }
      case OPT_GENERATE_STATIC:
      {
        snapshot_flags |= JERRY_SNAPSHOT_SAVE_STATIC;
        break;
      }
      case OPT_GENERATE_LITERAL_LIST:
      case OPT_GENERATE_LITERAL_C:
      {
        if (save_literals_file_name_p != NULL)
        {
          jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: literal file name already specified");
          return JERRY_STANDALONE_EXIT_CODE_FAIL;
        }

        is_save_literals_mode_in_c_format = (id == OPT_GENERATE_LITERAL_C);
        save_literals_file_name_p = cli_consume_string (cli_state_p);
        break;
      }
      case OPT_GENERATE_SHOW_OP:
      {
        if (check_feature (JERRY_FEATURE_PARSER_DUMP, cli_state_p->arg))
        {
          jerry_port_default_set_log_level (JERRY_LOG_LEVEL_DEBUG);
          flags |= JERRY_INIT_SHOW_OPCODES;
        }
        break;
      }
      case OPT_GENERATE_OUT:
      {
        output_file_name_p = cli_consume_string (cli_state_p);
        break;
      }
      case CLI_OPT_DEFAULT:
      {
        if (file_name_p != NULL)
        {
          jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: Exactly one input file must be specified\n");
          return JERRY_STANDALONE_EXIT_CODE_FAIL;
        }

        file_name_p = cli_consume_string (cli_state_p);

        if (cli_state_p->error == NULL)
        {
          source_length = read_file (source_p, file_name_p);

          if (source_length == 0)
          {
            jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Input file is empty\n");
            return JERRY_STANDALONE_EXIT_CODE_FAIL;
          }
        }
        break;
      }
      default:
      {
        cli_state_p->error = "Internal error";
        break;
      }
    }
  }

  if (check_cli_error (cli_state_p))
  {
    return JERRY_STANDALONE_EXIT_CODE_FAIL;
  }

  if (file_name_p == NULL)
  {
    jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: Exactly one input file must be specified\n");
    return JERRY_STANDALONE_EXIT_CODE_FAIL;
  }

  jerry_init (flags);

  if (!jerry_is_valid_utf8_string (source_p, (jerry_size_t) source_length))
  {
    jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: Input must be a valid UTF-8 string.\n");
    return JERRY_STANDALONE_EXIT_CODE_FAIL;
  }

  jerry_value_t snapshot_result;

  snapshot_result = jerry_generate_snapshot ((jerry_char_t *) file_name_p,
                                             (size_t) strlen (file_name_p),
                                             (jerry_char_t *) source_p,
                                             source_length,
                                             snapshot_flags,
                                             output_buffer,
                                             sizeof (output_buffer) / sizeof (uint32_t));

  if (jerry_value_has_error_flag (snapshot_result))
  {
    jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: Generating snapshot failed!\n");

    jerry_value_clear_error_flag (&snapshot_result);

    print_unhandled_exception (snapshot_result);

    jerry_release_value (snapshot_result);
    return JERRY_STANDALONE_EXIT_CODE_FAIL;
  }

  size_t snapshot_size = (size_t) jerry_get_number_value (snapshot_result);
  jerry_release_value (snapshot_result);

  FILE *snapshot_file_p = fopen (output_file_name_p, "w");
  if (snapshot_file_p == NULL)
  {
    jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: Unable to write snapshot file: '%s'\n", output_file_name_p);
    return JERRY_STANDALONE_EXIT_CODE_FAIL;
  }

  fwrite (output_buffer, sizeof (uint8_t), snapshot_size, snapshot_file_p);
  fclose (snapshot_file_p);

  printf ("Created snapshot file: '%s' (%lu bytes)\n", output_file_name_p, (unsigned long) snapshot_size);

  if (save_literals_file_name_p != NULL)
  {
    const size_t literal_buffer_size = jerry_parse_and_save_literals ((jerry_char_t *) source_p,
                                                                      source_length,
                                                                      false,
                                                                      output_buffer,
                                                                      sizeof (output_buffer) / sizeof (uint32_t),
                                                                      is_save_literals_mode_in_c_format);
    if (literal_buffer_size == 0)
    {
      jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: Literal saving failed!\n");
      return JERRY_STANDALONE_EXIT_CODE_FAIL;
    }

    FILE *literal_file_p = fopen (save_literals_file_name_p, "w");

    if (literal_file_p == NULL)
    {
      jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: Unable to write literal file: '%s'\n", save_literals_file_name_p);
      return JERRY_STANDALONE_EXIT_CODE_FAIL;
    }

    fwrite (output_buffer, sizeof (uint8_t), literal_buffer_size, literal_file_p);
    fclose (literal_file_p);

    printf ("Created literal file: '%s' (%lu bytes)\n", save_literals_file_name_p, (unsigned long) literal_buffer_size);
  }

  return 0;
} /* process_generate */