[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/ -> assert.pl (source)

   1  # assert.pl
   2  # tchrist@convex.com (Tom Christiansen)
   3  # 
   4  # Usage:
   5  # 
   6  #     &assert('@x > @y');
   7  #     &assert('$var > 10', $var, $othervar, @various_info);
   8  # 
   9  # That is, if the first expression evals false, we blow up.  The
  10  # rest of the args, if any, are nice to know because they will
  11  # be printed out by &panic, which is just the stack-backtrace
  12  # routine shamelessly borrowed from the perl debugger.
  13  
  14  sub assert {
  15      &panic("ASSERTION BOTCHED: $_[$[]",$@) unless eval $_[$[];
  16  } 
  17  
  18  sub panic {
  19      package DB;
  20  
  21      select(STDERR);
  22  
  23      print "\npanic: @_\n";
  24  
  25      exit 1 if $] <= 4.003;  # caller broken
  26  
  27      # stack traceback gratefully borrowed from perl debugger
  28  
  29      local $_;
  30      my $i;
  31      my ($p,$f,$l,$s,$h,$a,@a,@frames);
  32      for ($i = 0; ($p,$f,$l,$s,$h,$w) = caller($i); $i++) {
  33      @a = @args;
  34      for (@a) {
  35          if (/^StB\000/ && length($_) == length($_main{'_main'})) {
  36          $_ = sprintf("%s",$_);
  37          }
  38          else {
  39          s/'/\\'/g;
  40          s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/;
  41          s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
  42          s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
  43          }
  44      }
  45      $w = $w ? '@ = ' : '$ = ';
  46      $a = $h ? '(' . join(', ', @a) . ')' : '';
  47      push(@frames, "$w&$s$a from file $f line $l\n");
  48      }
  49      for ($i=0; $i <= $#frames; $i++) {
  50      print $frames[$i];
  51      }
  52      exit 1;
  53  } 
  54  
  55  1;


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1