#
# @(#)amiga.icn	1.4 3/14/91
# OS-specific code for Amiga Idol
#
global icontopt,cd,md,env,sysok,comp

procedure mysystem(s)
  if \loud then write(s)
  return system(s)
end

procedure filename(s,ext)
  s[9:0] := ""
  s ||:= \ext
  return s
end

# if the filename s has extension ext then return the filename less the
# extension, otherwise fail.
procedure fileroot(s,ext)
  if s[- *ext : 0] == ext then return s[1 : - *ext]
end

procedure writesublink(s)
  writelink(env||"/"||s)
end

procedure envpath(filename)
  return env||"/"||filename
end

#
# Installation.
# Uses hierarchical filesystem on some systems (see initialize)
#
procedure install(args)
  if "-t" == !args then comp := -2
  write("Installing idol environment in ",env)
  if env ~== "" then mysystem(md||env)
  fout := envopen("i_object.icn","w")
  write(fout,"record idol_object(__state,__methods)")
  close(fout)
  fout := &null
  cdicont(["i_object"])
end
procedure uninstall(args)
  # not implemented yet
end

procedure makeexe(args,i)
  exe := args[i]
  if icont(exe) = \sysok then {
      mysystem("delete "||exe||".icn")
      if \exec then {
	write("Executing:")
	exe := "iconx "||exe
	every i := exec+1 to *args do exe ||:= " "||args[i]
	return mysystem(exe)
      } else return
  }
end
#
# system-dependent compilation of idolfile.icn
#   (in the idol subdirectory, if there is one)
#
procedure cdicont(idolfiles)
  if comp = -2 then return  # -t --> don't call icont at all
  args := " -c"
  rms  := ""
  every ifile := !idolfiles do args ||:= " " || ifile
  every ifile := !idolfiles do rms  ||:= " " || ifile || ".icn"

  mysystem("cd idolcode.env")
  if icont(args) = \sysok
  then every ifile := !idolfiles do mysystem("delete "||ifile||".icn")
  mysystem("cd /")
  return
end
procedure sysinitialize()
  icontopt := " -Sr500 -SF30 -Si1000 "
  cd := "cd "
  md := "makedir "
  env := getenv("IDOLENV") | "idolcode.env"
  sysok := 0
end
