Re: PureZIP library : ZIP / UNZIP files [password supported]
Posted: Mon Jul 25, 2011 10:01 am
Thank you gnozal.
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
MyZIP.s = "C:\Test.zip"
MyFilesToZIP.s = "C:\Temp\*PartialName*" ; This fails, but using *.* works!
Debug PureZIP_AddFiles(MyZIP, MyFilesToZIP, #PureZIP_StorePathAbsolute, #PureZIP_Recursive)
Sorry, PureZIP uses ZLIB, and there is no ZLIB function available for encrypting filenames.ruslanx wrote:Hi, a very usefull functions is missed like 'PureZIP_EcryptFileNames',if is posible (I know it is possible for you) can you add a function like this,thanks!
You may use the process library fonctions.ruslanx wrote:...how I can read info from stdout .. can you give a peace of code or example ..thx.
Code: Select all
Procedure.s ReadProgramStringSafe(ProgramNr) ; ReadProgramString does NOT support Unicode
;
Protected Char.a, ReturnValue.s
;
Static MyReadProgramOffset = 0
;
Shared *MyReadProgramStringBuffer
;
size = AvailableProgramOutput(ProgramNr)
If size > 0
;
Repeat
;
ReadProgramData(ProgramNr, @Char, 1)
PokeB(*MyReadProgramStringBuffer + MyReadProgramOffset, Char)
MyReadProgramOffset + 1
;
If AvailableProgramOutput(ProgramNr) = 0 Or MyReadProgramOffset > 255
Break
EndIf
;
Until Char = $0A
;
If Char <> $0A
ReturnValue = ""
Else
PokeB(*MyReadProgramStringBuffer + MyReadProgramOffset, 0)
ReturnValue = PeekS(*MyReadProgramStringBuffer, -1, #PB_Ascii)
MyReadProgramOffset = 0
ReturnValue = ReplaceString(ReturnValue, Chr(13), "")
ReturnValue = ReplaceString(ReturnValue, Chr(10), "")
EndIf
;
EndIf
;
ProcedureReturn ReturnValue
;
EndProcedure
Procedure IsRemotePCAvailable(RemotePC.s)
;
Protected ConnectionOk, ResponseLine, Prog, FindLast, FindFirst, TimeOut.i
;
Shared IsRemotePCAvailable_IP.s
Shared *MyReadProgramStringBuffer
;
IsRemotePCAvailable_IP = ""
;
*MyReadProgramStringBuffer = AllocateMemory(2048)
If *MyReadProgramStringBuffer
;
Prog = RunProgram("ping.exe", RemotePC, GetTemporaryDirectory(), #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide)
If Prog
TimeOut = ElapsedMilliseconds() + 5000
Debug "IsRemotePCAvailable : START -> " + RemotePC
While ProgramRunning(Prog)
Response$ = ReadProgramStringSafe(Prog)
If Response$
Debug "---> " + Response$
ResponseLine + 1
If ResponseLine = 1
IsRemotePCAvailable_IP = RemotePC
FindFirst = FindString(Response$, "[", 1)
If FindFirst
FindLast = FindString(Response$, "]", FindFirst + 1)
If FindLast
IsRemotePCAvailable_IP = Mid(Response$, FindFirst + 1, FindLast - FindFirst - 1)
EndIf
EndIf
ElseIf ResponseLine = 2
If FindString(Response$, "TTL", 1)
ConnectionOk = #True
Else
IsRemotePCAvailable_IP = ""
EndIf
KillProgram(Prog)
Break
EndIf
EndIf
If ElapsedMilliseconds() > TimeOut
KillProgram(Prog)
Break
EndIf
Wend
If ResponseLine = 1
IsRemotePCAvailable_IP = ""
EndIf
CloseProgram(Prog)
Debug "IsRemotePCAvailable : END"
Else
ConnectionOk = -1
EndIf
;
FreeMemory(*MyReadProgramStringBuffer)
;
Else
ConnectionOk = -1
EndIf
;
ProcedureReturn ConnectionOk
;
EndProcedure
Debug IsRemotePCAvailable("localhost1")
Since 2005 (It was PB3.92 at the time iirc) !kenmo wrote:This library is great, gnozal, thank you for keeping it going for what, 6 years now?!?