Refactoring: move fields ui_pass and ui_total_passes from class

Packer into class UiPacker.
This commit is contained in:
Markus F.X.J. Oberhumer 2006-06-29 14:37:01 +02:00
parent 8ab3e63aeb
commit 7b77491c06
6 changed files with 26 additions and 23 deletions

View File

@ -40,6 +40,7 @@
#include "p_unix.h"
#include "p_lx_exc.h"
#include "p_lx_elf.h"
#include "ui.h"
#define PT_LOAD32 Elf32_Phdr::PT_LOAD
#define PT_LOAD64 Elf64_Phdr::PT_LOAD
@ -1113,13 +1114,13 @@ void PackLinuxElf32::pack2(OutputFile *fo, Filter &ft)
unsigned k;
// count passes, set ptload vars
ui_total_passes = 0;
uip->ui_total_passes = 0;
unsigned const e_phnum = get_native16(&ehdri.e_phnum);
for (k = 0; k < e_phnum; ++k) {
if (PT_LOAD32 == get_native32(&phdri[k].p_type)) {
ui_total_passes++;
uip->ui_total_passes++;
if (find_LOAD_gap(phdri, k, e_phnum)) {
ui_total_passes++;
uip->ui_total_passes++;
}
}
}
@ -1130,7 +1131,7 @@ void PackLinuxElf32::pack2(OutputFile *fo, Filter &ft)
unsigned hdr_u_len = sizeof(Elf32_Ehdr) + sz_phdrs;
ui_pass = 0;
uip->ui_pass = 0;
ft.addvalue = 0;
int nx = 0;
@ -1215,13 +1216,13 @@ void PackLinuxElf64::pack2(OutputFile *fo, Filter &ft)
unsigned k;
// count passes, set ptload vars
ui_total_passes = 0;
uip->ui_total_passes = 0;
unsigned const e_phnum = get_native16(&ehdri.e_phnum);
for (k = 0; k < e_phnum; ++k) {
if (PT_LOAD64==get_native32(&phdri[k].p_type)) {
ui_total_passes++;
uip->ui_total_passes++;
if (find_LOAD_gap(phdri, k, e_phnum)) {
ui_total_passes++;
uip->ui_total_passes++;
}
}
}
@ -1232,7 +1233,7 @@ void PackLinuxElf64::pack2(OutputFile *fo, Filter &ft)
unsigned hdr_u_len = sizeof(Elf64_Ehdr) + sz_phdrs;
ui_pass = 0;
uip->ui_pass = 0;
ft.addvalue = 0;
int nx = 0;

View File

@ -32,6 +32,7 @@
#include "linker.h"
#include "packer.h"
#include "p_mach.h"
#include "ui.h"
static const
#include "stub/powerpc-darwin.macho-entry.h"
@ -225,13 +226,13 @@ PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body
unsigned k;
// count passes, set ptload vars
ui_total_passes = 0;
uip->ui_total_passes = 0;
for (k = 0; k < n_segment; ++k) {
if (Mach_segment_command::LC_SEGMENT==msegcmd[k].cmd
&& 0!=msegcmd[k].filesize ) {
ui_total_passes++;
uip->ui_total_passes++;
if (find_SEGMENT_gap(k)) {
ui_total_passes++;
uip->ui_total_passes++;
}
}
}
@ -242,7 +243,7 @@ PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body
unsigned hdr_u_len = mhdri.sizeofcmds;
ui_pass = 0;
uip->ui_pass = 0;
ft.addvalue = 0;
int nx = 0;

View File

@ -41,7 +41,7 @@
Packer::Packer(InputFile *f) :
fi(f), file_size(-1), ph_format(-1), ph_version(-1),
uip(NULL), ui_pass(0), ui_total_passes(0), linker(NULL),
uip(NULL), linker(NULL),
last_patch(NULL), last_patch_len(0), last_patch_off(0)
{
file_size = f->st.st_size;
@ -189,9 +189,9 @@ bool Packer::compress(upx_bytep in, upx_bytep out,
step = 0;
#endif
}
if (ui_pass >= 0)
ui_pass++;
uip->startCallback(ph.u_len, step, ui_pass, ui_total_passes);
if (uip->ui_pass >= 0)
uip->ui_pass++;
uip->startCallback(ph.u_len, step, uip->ui_pass, uip->ui_total_passes);
uip->firstCallback();
//OutputFile::dump("data.raw", in, ph.u_len);
@ -1268,9 +1268,9 @@ void Packer::compressWithFilters(Filter *parm_ft,
// update total_passes; previous (0 < ui_total_passes) means incremental
if (strategy < 0)
ui_total_passes += 1 * nmethods - (0 < ui_total_passes);
uip->ui_total_passes += 1 * nmethods - (0 < uip->ui_total_passes);
else
ui_total_passes += nfilters * nmethods - (0 < ui_total_passes);
uip->ui_total_passes += nfilters * nmethods - (0 < uip->ui_total_passes);
// Working buffer for compressed data. Don't waste memory.
MemBuffer *otemp = &obuf;
@ -1327,8 +1327,8 @@ void Packer::compressWithFilters(Filter *parm_ft,
if (strategy > 0)
{
// adjust passes
if (ui_pass >= 0)
ui_pass++;
if (uip->ui_pass >= 0)
uip->ui_pass++;
}
continue;
}

View File

@ -281,8 +281,6 @@ protected:
// UI handler
UiPacker *uip;
int ui_pass;
int ui_total_passes;
// linker
Linker *linker;

View File

@ -178,7 +178,7 @@ static const char *mkline(unsigned long fu_len, unsigned long fc_len,
**************************************************************************/
UiPacker::UiPacker(const Packer *p_) :
p(p_), s(NULL)
ui_pass(0), ui_total_passes(0), p(p_), s(NULL)
{
init_global_constants();

View File

@ -84,6 +84,9 @@ public:
static void uiHeader();
static void uiFooter(const char *n);
int ui_pass;
int ui_total_passes;
protected:
virtual void printInfo(int nl=0);
const Packer *p;