Exemple #1
0
/* cppparser_delete */
void cppparser_delete(CppParser * cp)
{
	string_delete(cp->queue_string);
	if(cp->subparser != NULL)
		cppparser_delete(cp->subparser);
	if(cp->parser != NULL)
		parser_delete(cp->parser);
	string_delete(cp->inject);
	object_delete(cp);
}
Exemple #2
0
/* parser_new_string */
Parser * parser_new_string(char const * string, size_t length)
{
	Parser * parser;

#ifdef DEBUG
	fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, string);
#endif
	if((parser = _new_do(_parser_scanner_string)) == NULL)
		return NULL;
	parser->string = malloc(length);
	parser->string_cnt = length;
	if(parser->string == NULL && length != 0)
	{
		error_set_code(1, "%s", strerror(errno));
		parser_delete(parser);
		return NULL;
	}
	memcpy(parser->string, string, length);
	return parser;
}
Exemple #3
0
Parser * parser_new(char const * pathname)
{
	Parser * parser;

#ifdef DEBUG
	fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, pathname);
#endif
	if((parser = _new_do(_parser_scanner_file)) == NULL)
		return NULL;
	if((parser->filename = string_new(pathname)) == NULL)
		error_set_code(1, "%s", strerror(errno));
	if((parser->fp = fopen(pathname, "r")) == NULL)
		error_set_code(1, "%s: %s", pathname, strerror(errno));
	if(parser->filename == NULL || parser->fp == NULL)
	{
		parser_delete(parser);
		return NULL;
	}
	return parser;
}
Exemple #4
0
int main ( int argc, char *argv[] ) {

	parser_t * parser = NULL;
	uint key = 0, Nc = 0, Nv = 0, Ns = 0, epw, e;
	double wcr_start,
		wcr_step,
		wcr_end,
		wcr = 0.0;
	vec wcr_vec;

	mat 	U = NULL;


	if ( argc == 1 )
	{
		fprintf( stderr, "Usage: %s config.cfg\n", argv[0] );
		exit( EXIT_FAILURE );
	}

	parser = parser_init( argc, argv, argv[1], NULL );

	key = parser_get_int( parser, "KEY" );
	wcr_vec = parser_get_vec( parser, "WCR" );
	Nv  = parser_get_int( parser, "Nv" );
	Nc  = parser_get_int( parser, "Nc" );
	Ns  = parser_get_int( parser, "Ns" );
	epw  = parser_get_int( parser, "EPW" );
	parser_delete( parser );


	if (vec_length(wcr_vec) != 3)
	{
		fprintf( stderr, "Invalid config for WCR values\n" );
		exit( EXIT_FAILURE );
	}
	wcr_start = wcr_vec[0];
	wcr_step = wcr_vec[1];
	wcr_end = wcr_vec[2];

	U = make_carriers( Nc, Nv, key );

	for (wcr = wcr_start; wcr <= wcr_end; wcr += wcr_step)
	{
		for (e=0; e<epw;e++)
		{
			mat	U_est = NULL,
				Y = NULL,
				Y_attack = NULL;

			// gen watermarks with U
			Y = make_Y(Nv, Ns, Nc, U, wcr);

			// Estimated carriers from PCA
			U_est = estimate_carriers(Y, Nv, Nc);

			// Attack Y
			Y_attack = attack(Y,U_est);

			print_dist(Y,Y_attack,wcr);

			mat_delete( Y );
			mat_delete( Y_attack );
			mat_delete( U_est );
		}
	}

	mat_delete( U );

	exit( EXIT_SUCCESS );
}