internal OpenArchiveInfo(IntPtr ptr)
 {
     this.ptr = ptr;
     if (ptr != IntPtr.Zero)
     {
         data = (OpenArchiveData)Marshal.PtrToStructure(ptr, typeof(OpenArchiveData));
     }
 }
示例#2
0
        public override object OpenArchive(ref OpenArchiveData archiveData)
        {
            FileStream archive = File.Open(archiveData.ArchiveName, FileMode.Open);
            ZipFile    zf      = new ZipFile(archive);

            archiveData.Result = PackerResult.OK;
            return(zf);
        }
 internal OpenArchiveInfo(IntPtr ptr)
 {
     this.ptr = ptr;
     if (ptr != IntPtr.Zero)
     {
         data = (OpenArchiveData)Marshal.PtrToStructure(ptr, typeof(OpenArchiveData));
     }
 }
示例#4
0
        public static IntPtr OpenArchiveInternal(OpenArchiveData data)
        {
            IntPtr result = IntPtr.Zero;

            callSignature = String.Format("OpenArchive {0} ({1})", data.ArchiveName, data.Mode.ToString());
            try {
                object o = Plugin.OpenArchive(ref data);
                if (o != null && data.Result == PackerResult.OK)
                {
                    result = TcHandles.AddHandle(o);
                    data.Update();
                }

                TraceCall(TraceLevel.Info, (result == IntPtr.Zero) ?
                          String.Format("Error ({0})", data.Result.ToString()) : result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
                result = IntPtr.Zero;
            }
            return(result);
        }
示例#5
0
        public override object OpenArchive(ref OpenArchiveData archiveData)
        {
            object result;

            archiveFile = archiveData.ArchiveName;
            string extension = Path.GetExtension(archiveFile);

            if (extension != null)
            {
                string arcExt = extension.ToUpper();
                if (!ExtensionsToOpen.Contains(arcExt))
                {
                    return(PackerResult.UnknownFormat);
                }
            }
            files.Clear();
            using (StreamReader sr = new StreamReader(archiveFile)) {
                while (!sr.EndOfStream)
                {
                    string line = sr.ReadLine();
                    if (line != null)
                    {
                        int pos = line.IndexOf(" *", StringComparison.Ordinal);
                        if (pos > 0)
                        {
                            string[] node = new[] {
                                line.Substring(pos + 2),
                                line.Substring(0, pos),
                                "false"
                            };
                            files.Add(node);
                        }
                    }
                }
            }
            archiveData.Result = PackerResult.OK;

            result = files.GetEnumerator();
            return(result);
        }
示例#6
0
        public static IntPtr OpenArchiveInternal(OpenArchiveData data)
        {
            var result = IntPtr.Zero;

            _callSignature = $"OpenArchive {data.ArchiveName} ({data.Mode.ToString()})";
            try {
                object o = Plugin.OpenArchive(ref data);
                if (o != null && data.Result == PackerResult.OK)
                {
                    result = TcHandles.AddHandle(o);
                    data.Update();
                }

                TraceCall(TraceLevel.Info, result == IntPtr.Zero ? $"Error ({data.Result.ToString()})" : result.ToString());
            }
            catch (Exception ex) {
                ProcessException(ex);
                result = IntPtr.Zero;
            }

            return(result);
        }
示例#7
0
        public static IntPtr OpenArchiveW(IntPtr archiveData)
        {
            OpenArchiveData data = new OpenArchiveData(archiveData, true);

            return(OpenArchiveInternal(data));
        }
示例#8
0
        public static IntPtr OpenArchive(IntPtr archiveData)
        {
            var data = new OpenArchiveData(archiveData, false);

            return(OpenArchiveInternal(data));
        }