SPVM-Sys

 view release on metacpan or  search on metacpan

lib/SPVM/Sys.spvm  view on Meta::CPAN

  static method getsockopt : string ($socket_fd : int, $level : int, $option_name : int, $option_value_length : int = -1) {
    
    unless ($option_value_length >= 0) {
      $option_value_length = 4;
    }
    
    my $option_value = (mutable string)new_string_len $option_value_length;
    
    Sys::Socket->getsockopt($socket_fd, $level, $option_name, $option_value, \$option_value_length);
    
    return $option_value;
  }
  
  static method osname : string () {
    my $osname : string;
    
    if (Sys::OS->defined("__linux__")) {
      $osname = "linux";
    }
    elsif (Sys::OS->defined("_WIN32")) {
      $osname = "MSWin32";
    }
    elsif (Sys::OS->defined("__FreeBSD__")) {
      $osname = "freebsd";
    }
    elsif (Sys::OS->defined("__OpenBSD__")) {
      $osname = "openbsd";
    }
    elsif (Sys::OS->defined("__solaris")) {
      $osname = "solaris";
    }
    elsif (Sys::OS->defined("__sun")) {
      $osname = "solaris";
    }
    elsif (Sys::OS->defined("__APPLE__")) {
      $osname = "darwin";
    }
    else {
      die "The OS name could not be determined.";
    }
    
    return $osname;
  }
  
  static method env : string ($name : string) {
    my $env_value = Sys::Env->getenv($name);
    return $env_value;
  }
  
  static method set_env : void ($name : string, $value : string) {
    
    if (Sys::OS->is_windows) {
      unless ($value) {
        $value = "";
      }
      Sys::Env->_putenv_s($name, $value);
    }
    else {
      if ($value && $value ne "") {
        my $overwrite = 1;
        Sys::Env->setenv($name, $value, $overwrite);
      }
      else {
        Sys::Env->unsetenv($name);
      }
    }
  }
  
  static method time : long () {
    
    my $time = Sys::Time->time();
    
    return $time;
  }
  
  static method localtime : Sys::Time::Tm ($epoch : long = -1, $allow_minus : int = 0) {
    
    unless ($allow_minus) {
      if ($epoch < 0) {
        $epoch = Sys->time;
      }
    }
    
    my $tm = Sys::Time->localtime(\$epoch);
    
    return $tm;
  }
  
  static method gmtime : Sys::Time::Tm ($epoch : long = -1, $allow_minus : int = 0) {
    
    unless ($allow_minus) {
      if ($epoch < 0) {
        $epoch = Sys->time;
      }
    }
    
    my $tm = Sys::Time->gmtime(\$epoch);
    
    return $tm;
  }
  
  static method utime : void ($atime : long, $mtime : long, $file : string) {
    
    my $utimbuf = (Sys::Time::Utimbuf)undef;
    
    if ($atime < 0 && $mtime < 0) {
      # Set current time
    }
    else {
      $utimbuf = Sys::Time::Utimbuf->new;
      $utimbuf->set_actime($atime);
      $utimbuf->set_modtime($mtime);
    }
    
    Sys::Time->utime($file, $utimbuf);
  }
  
  static method signal : Sys::Signal::Handler ($signal_number : int, $handler_name : string) {
    
    my $handler = (Sys::Signal::Handler)undef;
    
    if ($handler_name eq "IGNORE") {
      $handler = Sys::Signal->SIG_IGN;
    }



( run in 0.627 second using v1.01-cache-2.11-cpan-6aa56a78535 )