You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by do...@hyperreal.org on 1998/07/30 07:07:51 UTC

cvs commit: modperl/lib/Apache Opcode.pm

dougm       98/07/29 22:07:51

  Added:       lib/Apache Opcode.pm
  Log:
  new module
  
  Revision  Changes    Path
  1.1                  modperl/lib/Apache/Opcode.pm
  
  Index: Opcode.pm
  ===================================================================
  package Apache::Opcode;
  
  use strict;
  use Opcode ();
  use MIME::Base64 ();
  
  my $Mask = read_opmask(\*DATA);
  
  sub read_opmask {
      my $fh = shift;
      my $mask;
      while (<$fh>) {
  	chomp;
  	s/^\s+//;s/\s+$//;
  	s/^#.*//;
  	next unless /\w+/; 
  	#warn "adding $_\n";
  	$mask |= Opcode::opset($_);
      }
      return $mask;
  }
  
  sub gen_op_mask {
      require MIME::Base64;
      my $mask;
      if(@ARGV) {
  	local *FH;
  	open FH, $ARGV[0] or die "can't open $ARGV[0] $!";  
  	$mask = read_opmask(\*FH);
  	close FH;
      }
      else {
  	$mask = $Mask;
      }
      printf qq{
  static char *MP_op_mask = "%s";
  }, MIME::Base64::encode($mask);
  }
  
  1;
  
  __DATA__
  backtick
  glob
  open
  close
  pipe_op
  fileno
  umask
  dbmopen
  dbmclose
  getc
  read
  enterwrite
  leavewrite
  sysopen
  sysseek
  sysread
  syswrite
  send
  recv
  socket
  sockpair
  bind
  connect
  listen
  accept
  shutdown
  chown
  chroot
  unlink
  chmod
  rename
  link
  symlink
  readlink
  mkdir
  rmdir
  open_dir
  readdir
  telldir
  seekdir
  rewinddir
  closedir
  fork
  wait
  waitpid
  system
  exec
  kill
  alarm
  sleep
  shmget
  shmctl
  shmread
  shmwrite
  msgget
  msgctl
  msgsnd
  msgrcv
  semget
  semctl
  semop
  syscall