Subversion Repositories autosfx

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 daniel-mar 1
#include "stdafx.h"
2
#pragma hdrstop
3
/*
4
 
5
Copyright (c) 1990-2007 Info-ZIP.  All rights reserved.
6
 
7
See the accompanying file LICENSE, version 2007-Mar-4 or later
8
(the contents of which are also included in zip.h) for terms of use.
9
If, for some reason, all these files are missing, the Info-ZIP license
10
also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
11
 
12
parts Copyright (C) 1997 Mike White, Eric W. Engler
13
 ************************************************************************
14
Copyright (C) 2009, 2010  by Russell J. Peters, Roger Aelbrecht
15
 
16
This file is part of TZipMaster Version 1.9.
17
 
18
TZipMaster is free software: you can redistribute it and/or modify
19
it under the terms of the GNU Lesser General Public License as published by
20
the Free Software Foundation, either version 3 of the License, or
21
(at your option) any later version.
22
 
23
TZipMaster is distributed in the hope that it will be useful,
24
but WITHOUT ANY WARRANTY; without even the implied warranty of
25
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26
GNU Lesser General Public License for more details.
27
 
28
You should have received a copy of the GNU Lesser General Public License
29
along with TZipMaster.  If not, see <http://www.gnu.org/licenses/>.
30
 
31
contact: problems@delphizip.org (include ZipMaster in the subject).
32
updates: http://www.delphizip.org
33
DelphiZip maillist subscribe at http://www.freelists.org/list/delphizip
34
 *********************************************************************** */
35
#include "UnzOp.h"
36
#include "dz_errs.h"
37
 
38
#undef _DZ_FILE_
39
#define _DZ_FILE_ DZ_UNZOP_CPP
40
 
41
// ---------------------------------------------------------------------------
42
// #pragma package(smart_init)
43
 
44
#include "enter.h"
45
 
46
 
47
UnzOpr::UnzOpr(const DllCommands *C) : UnzInf(C)
48
{
49
    fdflag = 0;
50
    ffflag = 0;
51
    fjflag = 0;
52
    flflag = 0;
53
    foverwrite_all = 0;
54
    fvolflag = 0;
55
    fT_flag = 0;
56
    fuflag = 0;
57
    fzflag = 0;
58
 
59
    ffilespecs = 0;
60
    SrchSpecs = NULL;
61
    fprocess_all_files = 0;
62
    fcreate_dirs = 0;
63
    fextract_flag = 0;
64
    freal_ecrec_offset = 0;
65
    fexpect_ecrec_offset = 0;
66
    fziplen = 0;
67
    fhold = 0;
68
    fno_ecrec = 0;
69
#ifdef NOVELL_BUG_FAILSAFE
70
    fdne = 0;
71
#endif
72
 
73
    fcreated_dir = 0;
74
    frenamed_fullpath = 0;
75
    ffnlen = 0;
76
    fnLabelDrive = 0;
77
    frootlen = 0;
78
    fhave_dirname = 0;
79
    fdirnamelen = 0;
80
    fnotfirstcall = 0;
81
    fwild_dir = 0;
82
 
83
    ffiles_acted_on = 0;
84
    fEncodedAs = 0; // default Auto
85
    // #ifdef CRYPT
86
    flpszPassword[PWLEN + 1];
87
    fcchPassword = 0;
88
    fpwork = 0;
89
    frcode = 0;
90
    // #endif
91
    flflag = (-1);
92
    fsol = true; // At start of line.
93
    // give the component the 'key'
94
    CB->Arg1 = ((unsigned)this) >> 2;
95
    Set_Oper(this, UNZOPER); // add to 'active' list
96
    CB->UserCB(zacKey);
97
}
98
 
99
UnzOpr::~UnzOpr(void)
100
{
101
    Set_Oper(this, 0); // remove from list
102
    CB->Arg1 = 0;
103
    CB->UserCB(zacKey);
104
    delete[]SrchSpecs;
105
    SrchSpecs = NULL;
106
    TakeDownFromProcessZipFile();
107
}
108
 
109
int UnzOpr::Init(void)
110
{
111
    DZStrW ExtDir = CB->UserArg(zcbExtractDir, 0, 0);
112
    // RP allow relative extract path
113
    if (!ExtDir)
114
        ExtDir = _T(".\\");
115
    TCHAR lc = ExtDir.LastChar();
116
    if (lc != _T('\\') && lc != _T(':'))
117
        ExtDir += _T('\\');
118
    DZStrW fExtractPath;
119
    int l = GetFullPathName(ExtDir, MAX_PATH, fExtractPath.GetBuffer(MAX_PATH),
120
        NULL);
121
    fExtractPath.ReleaseBuffer(l);
122
    if (!l)
123
        return -1;
124
    AddBase(fExtractPath, true);
125
 
126
    return 0;
127
}
128
 
129
DZOp *MakeUnzipper(const DllCommands *C)
130
{
131
    return new UnzOpr(C);
132
}