;####Filecheck by YellowWeedSeed####
;beliebig änderbar solange es nicht als Eigen ausgegeben wird

;~####Errorcodes:####

;_____________________________________________________________
;#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
;#~	-1 = Fehler beim öffnen der Datei						~#
;#~	-2 = Fehler beim zählen der Zeilen						~#
;#~	-3 = $file[$i] ist kein array							~#
;#~	-4 = Fehler beim auslesen einer zeile in der Datei		~#
;#~	-10 = String enthält keine dateien						~#
;#~	-11 = Zeile konnte nicht beschrieben werden				~#
;#~	-12 = Datei existiert bereits							~#
;#~	-13 = Zeile enthält kein Dateiname						~#
;#~	-14 = Zeile enthält keine Endung						~#
;#~	-15 = $miss ist kein Array								~#
;#~	-16 = $miss enthält keine Dateien						~#
;#~	-17 = Fehler beim downloaden der Datei					~#
;#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
;_____________________________________________________________

#include <File.au3>

Func _filecheck($filename_1)

	$checksum = 0
	$miss = "missing Files:"
	$open = FileOpen($filename_1, 0)
	If @error Then Return -1

	$number = _FileCountLines($filename_1)
	If @error Then Return -2

	$x = $number + 1
	Dim $file[$x]
	Dim $file2[$x]
	Dim $string[$x]

	If Not IsArray($file) Then Return -3

	For $y = 0 To $number - 1
		$file2[$y] = FileReadLine($open, ($y + 1))
		If $file2[$y] = "" Then Return $y
		$string[$y] = StringInStr($file2[$y], '.')
		If $string[$y] = 0 Then Return -14

	Next

	For $i = 0 To $number - 1
		$i2 = $i + 1
		$file[$i] = FileReadLine($open, $i2)
		If @error Then Return -4

		If Not FileExists($file[$i]) Then
			$miss &= "|" & $file[$i]
		ElseIf FileExists($file[$i]) Then
			$checksum += 1
		EndIf
	Next

	If $checksum = $number Then
		Return 1
	ElseIf $checksum < $number Then
		Return $miss
	EndIf
	FileClose($filename_1)
EndFunc   ;==>_filecheck

Func _filecheck_listcreate($filename_2, $files_2)
	If Not FileExists($filename_2) Then
		FileWrite($filename_2, "")
		$a = StringSplit($files_2, "|")
		If Not IsArray($a) Then Return -10

		For $o = 1 To $a[0]
			_FileWriteToLine($filename_2, $o, $a[$o])
			If @error Then Return -11
		Next
		Return 1
	Else
		Return -12
	EndIf
EndFunc   ;==>_filecheck_listcreate

Func _filecheck_download($filename_3, $miss, $url)
	$fail = "failed downloads:"
	$download = StringSplit($miss, "|")
	If Not IsArray($download) Then Return -15

	$dim = UBound($download)
	If $dim > 2 Then Return -16

	For $z = 1 To $dim - 1
		InetGet($url, $download[$z])
		If @error Then $fail &= "|" & $download[$z]
	Next

	If Not $fail = "failed downloads:" Then
		Return $fail
	Else
		Return 1
	EndIf

EndFunc   ;==>_filecheck_download