#!/usr/bin/perl -w # checks all built plugins by running gst-inspect on each element # and checking for warnings on stderr ### packages use File::Basename; my $num_warnings = 0; my $path = `dirname $0`; chomp $path; $path .= "/../tools"; sub check_all_elements { #send stderr to /dev/null my $command = "$path/gst-inspect 2>/dev/null"; my @lines = `$command`; while ($_ = shift(@lines)){ my @matches = m/^\w+:\s+(\w+):/; if(@matches){ check_element($matches[0]); } } if ($num_warnings > 0){ print("there are $num_warnings warnings to be fixed\n"); return -1; } return 0; } sub check_element($) { my ($element) = @_; print "running inspect on $element\n"; # capture stderr, send stdout to /dev/null my $command = "$path/gst-inspect $element 2>&1 1>/dev/null"; my @lines = `$command`; while ($_ = shift(@lines)){ # ignore INFO lines, they are ok if (! /INFO/){ print $_; # do this to ignore empty lines if (length > 1){ $num_warnings++; } } } system("gst-inspect $element 2>/dev/null 1>/dev/null"); if ($? != 0){ my $exit_value = $? >> 8; my $signal_num = $? & 127; my $dumped_core = $? & 128; if ($exit_value){ print("error value on exit: $exit_value\n"); } if ($signal_num){ print("signal caused exit: $signal_num\n"); } if ($dumped_core){ print("dumped core: $dumped_core\n"); } $num_warnings++ } } ### main exit check_all_elements ();