Patch title: Release 94 bulk changes
Abstract:
File: /pliant/linux/kernel/module.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/stream.pli"
module "/pliant/admin/execute.pli"
module "/pliant/fullpliant/this_computer.pli"

module "/pliant/language/stream.pli"
module "/pliant/admin/execute.pli"
module "/pliant/fullpliant/this_computer.pli"

gvar Float kernel_load_module_sleep := 5



function real_module name -> module
  arg Str name module
  module := this_computer:env:"kernel":"module":name
  if module=""
    module := name


function kernel_load_module name options -> status
  arg Str name options ; arg ExtendedStatus status
  var Str module := real_module name
  (var Stream s) open "file:/proc/modules" in+safe
  while not s:atend
    if ((replace s:readline "-" "_") parse pattern:(replace 
      return failure:"already loaded"
  if (execute "insmod "+module+(shunt options<>"" " "+option
    status := failure "module not found"
    (var Stream s) open "file:/proc/sys/kernel/osrelease" in
    var Str version := s readline
    (var Stream s) open (shunt this_computer:env:"pliant":"s
    while not s:atend
      var Str l := s readline
      while l<>"" and (l l:len-1 1)="/"
        l := (l 0 l:len-1)+s:readline
      if (l parse any:(var Str m) ":" any:(var Str d))
        var Str b := m
        b := b (b search_last "/" -1)+1 b:len
        b := b 0 (b search_last "." b:len)
        if (replace b "-" "_")=(replace module "-" "_")
          while d<>""
            if not (d parse any:(var Str d1) _ any:(var Str 
              d parse any:(var Str d1) ; remain := ""
            d1 := d1 (d1 search_last "/" -1)+1 d1:len
            d1 := d1 0 (d1 search "." d1:len)
            kernel_load_module d1 ""
            d := remain
          var Int err := execute "insmod "+m+(shunt options<
          status := shunt err=0 success failure:"failed to l
function real_module name -> module
  arg Str name module
  module := this_computer:env:"kernel":"module":name
  if module=""
    module := name


function kernel_load_module name options -> status
  arg Str name options ; arg ExtendedStatus status
  var Str module := real_module name
  (var Stream s) open "file:/proc/modules" in+safe
  while not s:atend
    if ((replace s:readline "-" "_") parse pattern:(replace 
      return failure:"already loaded"
  if (execute "insmod "+module+(shunt options<>"" " "+option
    status := failure "module not found"
    (var Stream s) open "file:/proc/sys/kernel/osrelease" in
    var Str version := s readline
    (var Stream s) open (shunt this_computer:env:"pliant":"s
    while not s:atend
      var Str l := s readline
      while l<>"" and (l l:len-1 1)="/"
        l := (l 0 l:len-1)+s:readline
      if (l parse any:(var Str m) ":" any:(var Str d))
        var Str b := m
        b := b (b search_last "/" -1)+1 b:len
        b := b 0 (b search_last "." b:len)
        if (replace b "-" "_")=(replace module "-" "_")
          while d<>""
            if not (d parse any:(var Str d1) _ any:(var Str 
              d parse any:(var Str d1) ; remain := ""
            d1 := d1 (d1 search_last "/" -1)+1 d1:len
            d1 := d1 0 (d1 search "." d1:len)
            kernel_load_module d1 ""
            d := remain
          var Int err := execute "insmod "+m+(shunt options<
          status := shunt err=0 success failure:"failed to l
          sleep kernel_load_module_sleep
          # sleep 5
     
     
function kernel_load_module name
  arg Str name
  kernel_load_module name ""
function kernel_load_module name -> status
  arg Str name ; arg ExtendedStatus status
  status := kernel_load_module name ""




export kernel_load_module_sleep kernel_load_module kernel_un
export kernel_load_module kernel_unload_module