Patch title: Release 90 bulk changes
Abstract:
File: /install/install.pli
Key:
    Removed line
    Added line
module "/pliant/language/debug/compile_log.pli"
compile_message "Checking configuration. Please wait ..."

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"
module "/pliant/admin/md5.pli"
module "/pliant/language/ui/ansi_terminal.pli"
module "/pliant/util/crypto/random.pli"
module "/pliant/util/encoding/base64.pli"


function checkup
  (var Stream s) open "security:/test.tmp" out+safe+mkdir
  if s=failure
    console "ERROR: This process cannot write to "+(file_os_name "security:/") eol
    return       
  s close
  file_delete "security:/test.tmp"
  (var Stream s) open "data:/test.tmp" out+safe+mkdir
  if s=failure
    console "ERROR: This process cannot write to "+(file_os_name "data:/") eol
    return       
  s close
  file_delete "data:/test.tmp"
  var Str temp := file_temporary
  (var Stream s) open temp out+safe+mkdir
  if s=failure
    console "ERROR: This process cannot write to "+file_os_name:temp eol
    return       
  s close
  file_delete temp

function set_link
  if os_api="linux" or os_api="posix"
    if (file_query "file:/bin/pliant" standard)=failure
      if (file_link "/binary/pliant-debug1.exe" "file:/bin/pliant")=success
        console "Creating /bin/pliant soft link" eol
      else
        console "WARNING: Cannot create /bin/pliant soft link to " file_os_name:"/binary/pliant-debug1.exe" eol
  eif os_api="win32"
    # FIXME: copy Pliant executable to %SystemRoot%\system32\pliant.exe (NT) or %windir%\COMMAND\pliant.exe (9x)

function set_account
  if os_api="win32"
    var Str user := "pliant"
    user_database:data:user create user
    var Data:User u :> user_database:data:user user
    u:right create "1"
    var Data:UserRight r :> u:right "1"
    r auth := "1"
    r ip := "127.0.0.1"
    r right := "administrator"
    user_database store
    var Str password := base64_alt_encode random_string:6
    user_secret_database:data password := password
    user_secret_database:data:user create user
    user_secret_database:data:user:user password_md5 := string_md5_hexa_signature password
    user_secret_database store
  else
    console "You need an account to be able to connect to your Pliant HTTP" eol
    console "server through your favorite browser." eol
    part input
      var Str user := keyboard_input "User ID: "
      if user=""
        console "You must provide a user ID because there is no existing account." eol
        restart input
    part input2
      var Str password := keyboard_input_password "Password: "
      if password=""
        console "You must provide a password." eol
        restart input2
    user_database:data:user create user
    var Data:User u :> user_database:data:user user
    u:right create "1"
    var Data:UserRight r :> u:right "1"
    r auth := "1"
    r ip := "127.0.0.1"
    r right := "administrator"
    user_database store
    user_secret_database:data:user create user
    user_secret_database:data:user:user password_md5 := string_md5_hexa_signature password
    user_secret_database store
    console eol

function set_port
  part scan
    for (var Int lap) -1 9
      var Int port := shunt lap=(-1) 80 8080+lap
    if not (this_computer:env:"pliant":"http":"port" parse (var Int existing))
      existing := undefined
    for (var Int lap) (shunt existing<>undefined -2 -1) 9
      var Int port := shunt lap=(-2) existing lap=(-1) 80 8080+lap
      (var Stream s) open "tcp://127.0.0.1/client/"+string:port in+out+safe
      if s=failure
        (var Stream s) open "tcp:/server/"+string:port "noautoconnect close" in+out+safe
        if s=success
          s close
          (var Stream s) open "tcp://127.0.0.1/client/"+string:port in+out+safe
          leave scan
    console "ERROR: Could not find a valid TCP port for the Pliant HTTP server." eol
    return
  this_computer "pliant" "http" "port" := string port
  this_computer_database store

compile_message ""
checkup
set_link
console "[lf]"
console "---------------------------------------------------------------------------[lf]"
console "Free people is even more important than free software.[lf]"
console "[lf]"
console "I would really like to make the world just a little bit better for my[lf]"
console "children, I mean, more friendly, and I believe that a good start[lf]"
console "would be to help the Tibet get free.[lf]"
console "[lf]"
console "For more information on Tibet, visit http://www.tibet.com/[lf]"
console "---------------------------------------------------------------------------[lf]"
console "[lf]WELCOME TO FULLPLIANT[lf][lf]"
if user_database:data:user:size=0
  set_account
if this_computer:env:"pliant":"http":"port"=""
  set_port