; ---------------------------------------------------------------------------
; flash_checkfiles.cmm
; ---------------------------------------------------------------------------
  PMACRO.EXPLICIT

  PARAMETERS &file_flashsetup

  LOCAL &result &count_hex &count_elfm &count_elfs &count_orti

  ; show path and name of this script (present practice file)
  ECHO ""
  ECHO %COLOR.BLUE "### " OS.PPF() " ###"

; ---------------------------------------------------------------------------

  &result=TRUE()
  &count_hex=0
  &count_elfm=0
  &count_elfs=0
  &count_orti=0

  ECHO %COLOR.GREEN "Checking files..."

  IF &result
  (
    GOSUB CheckType "&file_flashsetup" "[HEX]"
    RETURNVALUES &result &count_hex
  )

  IF &result
  (
    GOSUB CheckType "&file_flashsetup" "[ELF-M]"
    RETURNVALUES &result &count_elfm
  )

  IF &result
  (
    GOSUB CheckType "&file_flashsetup" "[ELF-S]"
    RETURNVALUES &result &count_elfs
  )

  IF &result
  (
    GOSUB CheckType "&file_flashsetup" "[ORTI]"
    RETURNVALUES &result &count_orti
  )

  ECHO %COLOR.GREEN "Checking files finished"

  ENDDO "&result" "&count_hex" "&count_elfm" "&count_elfs" "&count_orti"

; ---------------------------------------------------------------------------
CheckType:
  PARAMETERS &fsetup &type

  PRIVATE &file &inputline &count &result

  &count=0
  &result=TRUE()

  OPEN #2 "&fsetup" /Read
  READ #2 %LINE &inputline

  WHILE (!EOF()&&(&result))
  (
    ; skip comments and empty-lines
    IF ("&inputline"!="")&&(STRing.MID("&inputline",0,2)!="//")&&(STRing.MID("&inputline",0,1)!=";")
    (
      &file=STRing.SCANAndExtract("&inputline","&type=", "")

      IF (STRing.LENgth("&file")!=0)
      (
        ; check if it is an relative or absolute path
        IF STRing.COUNT("&file",":")==0
        (
          &file="&dir_base&file"
        )
        IF FILE.EXIST("&file")
        (
          ECHO %COLOR.GREEN  "&type &file >> OK"
          &count=&count+1
        )
        ELSE
        (
          ECHO %COLOR.RED %ERROR "ERROR: &type file &file does not exist!"
          DIALOG.OK "ERROR: &type file does not exist: !"+CONVert.CHAR(0x0D0A)+"&file"
          &result=FALSE()
        )
      )
    )
    READ #2 %LINE &inputline
  )

  CLOSE #2

  RETURN "&result" "&count"

