Skip to content
Snippets Groups Projects
builtin-script.c 24.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	if (symbol__init() < 0)
    		return -1;
    
    	if (!script_name)
    		setup_pager();
    
    	session = perf_session__new(input_name, O_RDONLY, 0, false, &event_ops);
    
    	if (!no_callchain)
    
    		symbol_conf.use_callchain = true;
    	else
    		symbol_conf.use_callchain = false;
    
    
    	if (generate_script_lang) {
    		struct stat perf_stat;
    
    		int input;
    
    		if (output_set_by_user) {
    			fprintf(stderr,
    				"custom fields not supported for generated scripts");
    			return -1;
    		}
    
    		input = open(input_name, O_RDONLY);
    
    		if (input < 0) {
    			perror("failed to open file");
    			exit(-1);
    		}
    
    		err = fstat(input, &perf_stat);
    		if (err < 0) {
    			perror("failed to stat file");
    			exit(-1);
    		}
    
    		if (!perf_stat.st_size) {
    			fprintf(stderr, "zero-sized file, nothing to do!\n");
    			exit(0);
    		}
    
    		scripting_ops = script_spec__lookup(generate_script_lang);
    		if (!scripting_ops) {
    			fprintf(stderr, "invalid language specifier");
    			return -1;
    		}
    
    
    		err = scripting_ops->generate_script("perf-script");
    
    		goto out;
    	}
    
    	if (script_name) {
    
    		err = scripting_ops->start_script(script_name, argc, argv);
    
    		if (err)
    			goto out;
    
    		pr_debug("perf script started with script %s\n\n", script_name);
    
    	err = __cmd_script(session);
    
    	cleanup_scripting();
    out:
    	return err;