Patch title: Release 89 bulk changes
Abstract:
File: /fullpliant/run.pli
Key:
    Removed line
    Added line
abstract
  [This is the script that will start the FullPLiant operating system services.]

module "/pliant/language/context.pli"
module "/pliant/language/compiler.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/file.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/fullpliant/user.pli"

function log
  (var Stream log) open "file:/log/pliant.log" append+safe
  log writeline "run "+string:datetime
  (var Stream err) open "file:/tmp/console" in+safe
  while not err:atend
    log writeline "  "+err:readline
  err close ; log close
  file_delete"file:/tmp/console" 
log

if (constant this_computer:env:"kernel":"make":"CONFIG_ISDN"="y" or this_computer:env:"kernel":"make":"CONFIG_ISDN"="m")
  module "/pliant/linux/network/isdn.pli"

function clean_tmp_directory
  var Array:FileInfo files := file_list "file:/tmp/" standard
  for (var Int i) 0 files:size-1
    if (files:i:name_without_path parse "pliant_" any)
      if files:i:is_directory
        file_tree_delete files:i:name
      else
        file_delete files:i:name
clean_tmp_directory

gvar Str precompile := ""

if (constant this_computer:env:"pliant":"dns":"service"="true")
  constant (compile_message "Compiling DNS server. Please wait ...")
  precompile += "/pliant/protocol/dns/server.pli[lf]"
  module "/pliant/protocol/dns/server.pli"
  compile_message ""
  dns_server cache this_computer:env:"pliant":"dns":"cache" default this_computer:env:"pliant":"dns":"default" detached

if (constant this_computer:env:"pliant":"mail":"smtp_service"="true")
  constant (compile_message "Compiling SMTP server. Please wait ...")
  precompile += "/pliant/protocol/smtp/server.pli[lf]"
  module "/pliant/protocol/smtp/server.pli"
  compile_message ""
  smtp_server detached

if (constant this_computer:env:"pliant":"mail":"pop3_service"="true")
  constant (compile_message "Compiling POP3 server. Please wait ...")
  precompile += "/pliant/protocol/pop3/server.pli[lf]"
  module "/pliant/protocol/pop3/server.pli"
  compile_message ""
  pop3_server detached

if (constant this_computer:env:"pliant":"mail":"redirect_service"="true")
  constant (compile_message "Compiling mail redirection daemon. Please wait ...")
  precompile += "/pliant/protocol/smtp/redirect.pli[lf]"
  module "/pliant/protocol/smtp/redirect.pli"
  compile_message ""
  redirect_mails
  console "Mailboxes redirection daemon is running." eol

if (constant this_computer:env:"pliant":"ftp":"service"="true")
  constant (compile_message "Compiling FTP server. Please wait ...")
  precompile += "/pliant/protocol/ftp/server.pli[lf]"
  module "/pliant/protocol/ftp/server.pli"
  compile_message ""
  ftp_server detached

if (constant this_computer:env:"pliant":"remote":"service"="true")
  constant (compile_message "Compiling remote execution server. Please wait ...")
  precompile += "/pliant/util/remote/server.pli[lf]"
  module "/pliant/util/remote/server.pli"
  compile_message ""
  remote_server detached

if (constant this_computer:env:"pliant":"cluster":"service"="true")
  constant (compile_message "Compiling clustering server. Please wait ...")
  precompile += "/pliant/appli/cluster/server.pli[lf]"
  module "/pliant/appli/cluster/server.pli"
  compile_message ""
  cluster_server detached
if (constant this_computer:env:"pliant":"cluster":"daemon"="true")
  constant (compile_message "Compiling clustering daemon. Please wait ...")
  precompile += "/pliant/appli/cluster/daemon.pli[lf]"
  module "/pliant/appli/cluster/daemon.pli"
  compile_message ""
  cluster_daemon

if (constant this_computer:env:"pliant":"lpr":"service"="true")
  constant (compile_message "Compiling LPR server. Please wait ...")
  precompile += "/pliant/protocol/lpr/server.pli[lf]"
  module "/pliant/protocol/lpr/server.pli"
  compile_message ""
  lpr_server detached
eif (constant this_computer:env:"printer":size>0)
  constant (compile_message "Compiling print spooler. Please wait ...")
  precompile += "/pliant/protocol/lpr/spool.pli[lf]"
  module "/pliant/protocol/lpr/spool.pli"
  compile_message ""
  lpr_spool
  console "Print spooler is now running." eol

if (constant os_api="linux" and (exists this_computer:env:"logical"))
  constant (compile_message "Compiling logical computers support. Please wait ...")
  precompile += "/pliant/fullpliant/logical.pli[lf]"
  module "/pliant/fullpliant/logical.pli"
  compile_message ""

if (constant this_computer:env:"pliant":"system":"medium"="cdrom")
  module "recover.pli"

if (constant this_computer:env:"pliant":"system":"distribution"<>"fullpliant")
  module "/pliant/install/install.pli"

compile_message "Compiling HTTP server. Please wait ..."
precompile += "/pliant/protocol/http/server.pli[lf]"
precompile += "/pliant/protocol/http/style/default.style[lf]"
module "/pliant/protocol/http/server.pli"
# force default style and page to compile right now
module "/pliant/protocol/http/style/default.style"
http_precompile "/pliant/protocol/http/default.page"
compile_message ""

compile_message "Compiling and running custom code. Please wait ..."
function run_custom
  safe
    plugin run
  failure err
    (var Stream log) open "file:/tmp/run.log" out+safe
    log writeline err
run_custom
compile_message ""

compile_message "Starting logging services. Please wait ..."
precompile += "/pliant/language/debug/log_database.pli[lf]"
module "/pliant/language/debug/log_database.pli"
if (constant log_database:data:file:size>0)
  precompile +=  "/pliant/language/debug/trace.pli[lf]"
  precompile +=  "/pliant/language/debug/log.pli[lf]"
  module "/pliant/language/debug/trace.pli"
  module "/pliant/language/debug/log.pli"
  function run_log
    each f log_database:data:file
      trace_log keyof:f f:file f:mini_mb*2n^20 f:maxi_mb*2n^20
    trace_memory := log_database:data:memory
  run_log
compile_message ""

function run_dynamic_servers
  if (constant this_computer:env:"pliant":"remote":"service"="true")
    remote_server detached
  if (constant this_computer:env:"pliant":"cluster":"service"="true")
    cluster_server detached
  if (constant this_computer:env:"pliant":"cluster":"daemon"="true")
    cluster_daemon
  if not (this_computer:env:"pliant":"http":"port" parse (gvar Int port))
    port := 80
  if (constant this_computer:env:"pliant":"system":"medium"="cdrom")
    thread
      sleep 15
      recover_menu
  if (constant this_computer:env:"pliant":"system":"distribution"="fullpliant")
    http_server port port secured log this_computer:env:"pliant":"http":"log"
  eif os_api="win32"
    function os_ShellExecute hwnd op file params dir bshow
      arg Int hwnd ; arg CStr op file params dir ; arg Int bshow
      external "shell32.dll" "ShellExecuteA"
    var Str login := ""
    if (exists user_database:data:user:"pliant") and user_secret_database:data:password<>""
      login := "pliant:"+user_secret_database:data:password+"@"
    var Str url := "http://"+login+"localhost"+(shunt this_computer:env:"pliant":"http":"port"="80" "" ":"+this_computer:env:"pliant":"http":"port")+"/"
if (constant this_computer:env:"hardware":"video":"x11"="vnc")
  module "/pliant/protocol/vnc/client.pli"
  thread
    vnc_client "127.0.0.1" ""

if (constant this_computer:env:"pliant":"system":"distribution"="fullpliant")
  if (constant (file_query "file:/boot/boot.flag" standard)=success)
    file_delete "file:/boot/boot.flag"
    if (constant this_computer:env:"pliant":"system":"embedded"<>"" and this_computer:env:"hardware":"video":"x11"<>"none")
      module "embedded/command.pli"
      thread
        sleep 2
        embedded_command "mozilla" "user [dq]me[dq] detached"
eif os_api="win32"
  function os_ShellExecute hwnd op file params dir bshow
    arg Int hwnd ; arg CStr op file params dir ; arg Int bshow
    external "shell32.dll" "ShellExecuteA"
  gvar Str login := ""
  if (exists user_database:data:user:"pliant") and user_secret_database:data:password<>""
    login := "pliant:"+user_secret_database:data:password+"@"
  gvar Str url := "http://"+login+"localhost"+(shunt this_computer:env:"pliant":"http":"port"="80" "" ":"+this_computer:env:"pliant":"http":"port")+"/"
  thread
    sleep 2
    os_ShellExecute 0 "open" url "" "c:\" 1
    http_server port port secured log this_computer:env:"pliant":"http":"log" welcome_message "HTTP server is running.[lf][lf]Pliant URL is "+url
  else
    http_server port port secured log this_computer:env:"pliant":"http":"log" welcome_message "HTTP server is running.[lf][lf]Using your favorite browser, connect to the server via the URL[lf]http://localhost"+(shunt this_computer:env:"pliant":"http":"port"="80" "" ":"+this_computer:env:"pliant":"http":"port")+"/"
  sleep 15
if true
  thread
    sleep 5
    http_precompile "/pliant/protocol/http/default.page"
    http_precompile "/pliant/browse/virtual_tree.page"
if (constant this_computer:env:"pliant":"system":"medium"="cdrom")
  thread
    sleep 15
    recover_menu

this_computer "pliant" "language" "recommended" := precompile
run_dynamic_servers

if not (this_computer:env:"pliant":"http":"port" parse (gvar Int port))
  port := 80
if (constant this_computer:env:"pliant":"system":"distribution"="fullpliant")
  http_server port port secured log this_computer:env:"pliant":"http":"log"
eif os_api="win32"
  http_server port port secured log this_computer:env:"pliant":"http":"log" welcome_message "HTTP server is running.[lf][lf]Pliant URL is "+url
else
  http_server port port secured log this_computer:env:"pliant":"http":"log" welcome_message "HTTP server is running.[lf][lf]Using your favorite browser, connect to the server via the URL[lf]http://localhost"+(shunt this_computer:env:"pliant":"http":"port"="80" "" ":"+this_computer:env:"pliant":"http":"port")+"/"