/********************** Hydra/3 - Lost Carrier Unit *************************
*									    *
*	  Copyright 1995 by Dreamer/1oo% and Neurodancer/1oo%		    *
*									    *
****************************************************************************/

signal on Syntax

/******************************* CONFIG **********************************/

/* catalogs :) */

resume.0="c7Hello v1}!n2There are some incomplete Hydra-Uploads from you. If you want to resume them, you can transfer the files in your next Hydra session. You will be prompted for whether resuming or deleting your incomplete uploads before the Hydra session begins.n2c1Note: c7You can NOT resume the file(s) with any other than the Hydra protocol.n2Following is a list of your resumable files:n1"
fin.0="finished" /* 8 chars! */

resume.1="c7Hallo v1}!n2Da sind noch unvollstaendige Hydra-Uploads von Dir da! Wenn Du den Upload vervollstaendigen willst, dann kannst Du das beim naechsten Hydratransfer machen, indem Du das File nochmal mitschickst. Vor dem Uebertragungsbeginn wirst Du nochmal gesondert gefragt, ob Du die Files beenden oder loeschen willst.n2c1Achtung: c7Du kannst die Files NUR mit dem Hydra-Protokoll beenden!n2Hier ist die Liste der unvollstaendigen Files:n1"
fin.1="  fertig" /* 8 chars! */

/**************************** set some stuff *******************************/

version="o.27"

options results
bufferflush

setobject 0 ; putuser 68
getuser 39 ; uucpdir="Mail:Users/"result
getuser 1100452 ; lng=result
getuser 2307346 ; temppath=result

UDloc=0; ByteCred=0; FileCred=0; morefiles=0

MovedFiles=strip(getclip('lclist')); setclip('lclist')
Myloc=getclip('myloc'); setclip('myloc')

LostStuff=getclip("LostStuff"); setclip('Loststuff')
if Loststuff ~="" then parse var Loststuff UDloc ByteCred FileCred

/******************** Init Rexxsupport.library, if n/a *********************/

IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
	IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN
		EXIT(10)

/********************** if AO-Bit was set, unset it ************************/

getuser 1100662 ; privs=d2c(result+(result<0)*256)
aopriv=BitTST(privs,5)
if getclip(port'aopriv')='SET!' then do
	privs=c2d(BitCLR(privs,5))
	privs=privs-(privs>127)*256
	setobject privs ; putuser 1100662
	call setclip('aopriv')
end

/*************************** Enable Idle-Timer *****************************/

setobject 0 ; putuser 1110341

/*************** check, if there where some incomplete Uploads *************/

if MovedFiles~="" then do
	morefiles=words(MovedFiles)
	do x=1 to morefiles
		Lname.x=word(MovedFiles,x)
		Entry=statef(Myloc||Lname.x)
		Lsize.x=word(Entry,2)
		address command 'move 'Myloc||Lname.x' to 'uucpdir'/Hydra.BAD/'
	end
end

dirtest=""; dirtest=showdir(uucpdir'/Hydra.BAD','f')

if dirtest~="" then do
	transmit x2c(196631196E32196332197A342048796472612F33202D204C6F7374204361727269657220556E6974202D2019633356)||version||x2c(20197A30)

	open(mail,temppath||port"Hydramail","W")
	writeln(mail,resume.lng)
	transmit "n2c6found incomplete ULs!c7n1"

	/* deduct Byte/File-Credits for not adopted Files */
	getuser 34 ; setobject result-FileCred; putuser 34
	getuser 35 ; setobject result-ByteCred; putuser 35

	if morefiles~=0 then do x=1 to morefiles
			transmit "c3Transfering: c2"Lname.x
			writeln(mail,"c6"left(Lname.x,20," ")" c7- c6"fin.lng" c7-> c6"right(Lsize.x,8," ")" c7Bytes")
		end
	if exists(uucpdir'/Hydra.BAD/BAD-XFER.LOG') then do
		open(bad,uucpdir'/Hydra.BAD/BAD-XFER.LOG','R')
		Logline = readln(bad)
		do while ~eof(bad)
			parse var logline fname badname fsize x
			badsize=word(statef(uucpdir"/Hydra.BAD/"badname),2)
			writeln(mail,"c6"left(fname,20," ")" c7- c6"right(badsize,8," ")" c7of c6"right(fsize,8," ")" c7Bytes")
			Logline = readln(bad)
		end
		close(bad)
	end
	close(mail)

	cleareditor
	setmailsubj "Hydra - Resume"
	loadeditor temppath||port"Hydramail"
	getuser 40; writemail result
end

/*************************** Clean Up temppath *****************************/

call delete(temppath||port'HydFileLst')
call delete(temppath||port'HydraLog')
call delete(temppath||port'Hydramail')
call delete(temppath||port'Hydracred')
call delete(temppath"__olm"port)

/********************************* END ! ***********************************/

exit

syntax:
emsg="r0c2 Line: c7"sigl"c2, c7"rc"c2 -c6 "errortext(rc)
getuser 23 ; port=result
transmit "n1c1r1 Error occured! "emsg
if exists("SysData:Log/port"port) then open(clog,"SysData:Log/port"port,"A")
	else open(clog,"SysData:Log/port"port,"W")
writeln(clog,"c2             c1Hydra Error (Lost): "emsg)
close(clog)
transmit "c1Important: c2Please report the sysop about the c3linec2 and the c3error-numberc2!"
transmit "c6Any Key to Continue! g0"
exit
