public static int ProcessFileW(IntPtr arcData, int operation, [MarshalAs(UnmanagedType.LPWStr)] string destPath, [MarshalAs(UnmanagedType.LPWStr)] string destName) { PackerResult result = PackerResult.NotSupported; ProcessFileOperation oper = (ProcessFileOperation)operation; string fileName = String.IsNullOrEmpty(destPath) ? destName : Path.Combine(destPath, destName); callSignature = String.Format("ProcessFile ({0}, {1}, {2})", arcData.ToString(), oper.ToString(), fileName); try { object o = TcHandles.GetObject(arcData); if (o != null) { result = Plugin.ProcessFile(o, oper, fileName); if (result == PackerResult.OK) { TcHandles.UpdateHandle(arcData, o); } } // !!! may produce much trace info !!! TraceCall(TraceLevel.Verbose, result.ToString()); } catch (Exception ex) { ProcessException(ex); } return((int)result); }
public override PackerResult ProcessFile(object arcData, ProcessFileOperation operation, string destFile) { if (operation.Equals(ProcessFileOperation.Skip)) { return(PackerResult.OK); } string extension = Path.GetExtension(archiveFile); if (extension != null) { string arcExt = extension.ToUpper(); if (!ExtensionsToOpen.Contains(arcExt)) { return(PackerResult.UnknownFormat); } if (!(arcData is IEnumerator)) { return(PackerResult.ErrorRead); } IEnumerator fileEnum = (IEnumerator)arcData; object current = fileEnum.Current; bool isOk = false; if (current != null) { if (current is Array) { string[] node = (string[])current; string fName = node[0]; string nodeSum = node[1]; bool found = node.Length > 2 && Convert.ToBoolean(node[2]); string checkSum = String.Empty; string fileName = Path.Combine(Path.GetDirectoryName(archiveFile), fName); if (found) { checkSum = arcExt.EndsWith("MD5") ? GetFileHash(fileName, MD5.Create()) : GetFileHash(fileName, SHA1.Create()); isOk = (checkSum ?? String.Empty).Equals(nodeSum); } if (operation.Equals(ProcessFileOperation.Test)) { return(isOk ? PackerResult.OK : PackerResult.BadArchive); } using (StreamWriter sw = new StreamWriter(destFile)) { sw.WriteLine(fileName + "\n"); sw.WriteLine("expected: " + nodeSum); sw.WriteLine("computed: " + (found ? checkSum : "???")); sw.WriteLine("\n" + (arcExt.EndsWith("MD5") ? "MD5" : "SHA") + " checksum " + (isOk ? "OK!" : "FAILED!")); sw.Flush(); } return(PackerResult.OK); } return(PackerResult.ErrorRead); } return(PackerResult.ErrorRead); } return(PackerResult.UnknownFormat); }
public override PackerResult ProcessFile(object arcData, ProcessFileOperation operation, string destFile) { return(PackerResult.NotSupported); }
public virtual PackerResult ProcessFile(object arcData, ProcessFileOperation operation, string destFile) { throw new MethodNotSupportedException(nameof(ProcessFile)); }