Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6725 siemargl 1
/*
2
  Copyright (c) 1990-2002 Info-ZIP.  All rights reserved.
3
 
4
  See the accompanying file LICENSE, version 2000-Apr-09 or later
5
  (the contents of which are also included in unzip.h) for terms of use.
6
  If, for some reason, all these files are missing, the Info-ZIP license
7
  also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
8
*/
9
/* Write out a fragment of assembly or C preprocessor source giving offsets
10
 * in "Uz_Globs" and "struct huft".  Used by Amiga and Human68k ports.
11
 */
12
 
13
#define UNZIP_INTERNAL
14
#include "unzip.h"
15
#include "crypt.h"
16
 
17
#ifndef REENTRANT
18
  Uz_Globs G;
19
#endif
20
 
21
static int asm_setflag(const char *flagname);
22
static int ccp_setflag(const char *flagname);
23
 
24
static int asm_setflag(const char *flagname)
25
{
26
    static const char asm_flagdef[] = "   IFND %s\n%-15s EQU     1\n   ENDC\n";
27
    return printf(asm_flagdef, flagname, flagname);
28
}
29
static int ccp_setflag(const char *flagname)
30
{
31
    static const char ccp_flagdef[] = "#ifndef %s\n#  define %s\n#endif\n";
32
    return printf(ccp_flagdef, flagname, flagname);
33
}
34
 
35
int main(argc, argv)
36
    int argc;
37
    char **argv;
38
{
39
#ifdef REENTRANT
40
    Uz_Globs *pG = NULL;
41
#endif
42
    struct huft *t = NULL;
43
    static const char asm_offsdef[] = "%-15s EQU     %lu\n";
44
    static const char ccp_offsdef[] = "#define %-15s %lu\n";
45
 
46
    const char *out_format;
47
    int (*set_flag)(const char *flagname);
48
    int ccp_select = 0;
49
 
50
    if (argc > 1 && argv[1] != NULL && !strcmp(argv[1], "-ccp"))
51
      ccp_select = 1;
52
 
53
    if (ccp_select) {
54
        out_format = ccp_offsdef;
55
        set_flag = ccp_setflag;
56
    } else {
57
        out_format = asm_offsdef;
58
        set_flag = asm_setflag;
59
    }
60
 
61
    printf(out_format, "h_e", (ulg)&t->e - (ulg)t);
62
    printf(out_format, "h_b", (ulg)&t->b - (ulg)t);
63
    printf(out_format, "h_v_n", (ulg)&t->v.n - (ulg)t);
64
    printf(out_format, "h_v_t", (ulg)&t->v.t - (ulg)t);
65
    printf(out_format, "SIZEOF_huft", (ulg)sizeof(struct huft));
66
 
67
    printf(out_format, "bb", (ulg)&G.bb - (ulg)&G);
68
    printf(out_format, "bk", (ulg)&G.bk - (ulg)&G);
69
    printf(out_format, "wp", (ulg)&G.wp - (ulg)&G);
70
#ifdef FUNZIP
71
    printf(out_format, "in", (ulg)&G.in - (ulg)&G);
72
#else
73
    printf(out_format, "incnt", (ulg)&G.incnt - (ulg)&G);
74
    printf(out_format, "inptr", (ulg)&G.inptr - (ulg)&G);
75
    printf(out_format, "csize", (ulg)&G.csize - (ulg)&G);
76
    printf(out_format, "mem_mode", (ulg)&G.mem_mode - (ulg)&G);
77
#endif
78
    printf(out_format, "redirslide", (ulg)&redirSlide - (ulg)&G);
79
    printf(out_format, "SIZEOF_slide", (ulg)sizeof(redirSlide));
80
#if (defined(DLL) && !defined(NO_SLIDE_REDIR))
81
    printf(out_format, "_wsize", (ulg)&G._wsize - (ulg)&G);
82
#endif /* DLL && !NO_SLIDE_REDIR */
83
    printf(out_format, "CRYPT", (ulg)CRYPT);
84
#ifdef FUNZIP
85
    (*set_flag)("FUNZIP");
86
#endif
87
#ifdef SFX
88
    (*set_flag)("SFX");
89
#endif
90
#ifdef REENTRANT
91
    (*set_flag)("REENTRANT");
92
#endif
93
#ifdef DLL
94
    (*set_flag)("DLL");
95
# ifdef NO_SLIDE_REDIR
96
    (*set_flag)("NO_SLIDE_REDIR");
97
# endif
98
#endif
99
#ifdef USE_DEFLATE64
100
    (*set_flag)("USE_DEFLATE64");
101
#endif
102
 
103
    return 0;
104
}