/* 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); }
/* 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; }
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; }
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 ); }