int main( int argc, char ** argv ) { int c; int rc; char * cp; int no_warnings = 1; int resolve = 1; int result; bool buffer_messages = false; Express model; EXPRESSprogram_name = argv[0]; ERRORusage_function = 0; EXPRESSinit_init(); EXPRESSinitialize(); if( EXPRESSinit_args ) { ( *EXPRESSinit_args )( argc, argv ); } sc_optind = 1; while( ( c = sc_getopt( argc, argv, EXPRESSgetopt_options ) ) != -1 ) { switch( c ) { case 'd': ERRORdebugging = 1; switch( atoi( sc_optarg ) ) { case 0: fprintf( stderr, "\ndebug codes:\n" ); fprintf( stderr, " 0 - this help\n" ); fprintf( stderr, " 1 - basic debugging\n" ); #ifdef debugging fprintf( stderr, " 4 - light malloc debugging\n" ); fprintf( stderr, " 5 - heavy malloc debugging\n" ); fprintf( stderr, " 6 - heavy malloc debugging while resolving\n" ); #endif /* debugging*/ #ifdef YYDEBUG fprintf( stderr, " 8 - set YYDEBUG\n" ); #endif /*YYDEBUG*/ break; case 1: debug = 1; break; #ifdef debugging case 4: malloc_debug( 1 ); break; case 5: malloc_debug( 2 ); break; case 6: malloc_debug_resolve = 1; break; #endif /*debugging*/ #ifdef YYDEBUG case 8: exp_yydebug = 1; break; #endif /* YYDEBUG */ } break; case 'B': buffer_messages = true; break; case 'b': buffer_messages = false; break; case 'e': input_filename = sc_optarg; break; case 'r': resolve = 0; break; case 'i': case 'w': no_warnings = 0; ERRORset_warning( sc_optarg, c == 'w' ); break; case 'p': for( cp = sc_optarg; *cp; cp++ ) { if( *cp == '#' ) { print_objects_while_running |= OBJ_PASS_BITS; } else if( *cp == 'E' ) { print_objects_while_running = OBJ_ANYTHING_BITS; } else { print_objects_while_running |= OBJget_bits( *cp ); } } break; case 'v': print_fedex_version(); no_need_to_work = 1; break; default: rc = 1; if( EXPRESSgetopt ) { rc = ( *EXPRESSgetopt )( c, sc_optarg ); } if( rc == 1 ) { if( ERRORusage_function ) { ( *ERRORusage_function )(); } else { EXPRESSusage(1); } } break; } } if( !input_filename ) { input_filename = argv[sc_optind]; if( !input_filename ) { EXPRESScleanup(); if( no_need_to_work ) { return( 0 ); } else { ( *ERRORusage_function )(); } } } if( no_warnings ) { ERRORset_all_warnings( 1 ); } ERRORbuffer_messages( buffer_messages ); if( EXPRESSinit_parse ) { ( *EXPRESSinit_parse )(); } model = EXPRESScreate(); EXPRESSparse( model, ( FILE * )0, input_filename ); if( ERRORoccurred ) { result = EXPRESS_fail( model ); EXPRESScleanup(); EXPRESSdestroy( model ); return result; } #ifdef debugging if( malloc_debug_resolve ) { malloc_verify(); malloc_debug( 2 ); } #endif /*debugging*/ if( resolve ) { EXPRESSresolve( model ); if( ERRORoccurred ) { result = EXPRESS_fail( model ); EXPRESScleanup(); EXPRESSdestroy( model ); return result; } } if( EXPRESSbackend ) { ( *EXPRESSbackend )( model ); } if( ERRORoccurred ) { result = EXPRESS_fail( model ); EXPRESScleanup(); EXPRESSdestroy( model ); return result; } result = EXPRESS_succeed( model ); EXPRESScleanup(); EXPRESSdestroy( model ); return result; }
///print usage info specific to print_attrs void my_usage() { EXPRESSusage( 0 ); printf( " ----\n\t-a <entity>: print attrs for <entity>\n" ); exit( 2 ); }