]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/patches/nsis.patch
Initial commit of the new Windows installer.
[bacula/bacula] / bacula / src / win32 / patches / nsis.patch
1 Index: SCons/Config/gnu
2 --- ../release/nsis-2.17-src/SCons/Config/gnu   2006-04-28 08:54:41.000000000 -0700
3 +++ ./SCons/Config/gnu  2006-07-31 05:48:44.000000000 -0700
4 @@ -65,7 +65,7 @@
5  cross_env(stub_env)
6  
7  if not defenv['DEBUG']:
8 -       stub_env.Append(CCFLAGS = '-Os')                # optimize for size
9 +       stub_env.Append(CCFLAGS = '-Os -fno-strict-aliasing')                # optimize for size
10  stub_env.Append(CCFLAGS = '-Wall')                # all warnings
11  stub_env.Append(CCFLAGS = '-x c')                 # force compile as c
12  
13 @@ -82,7 +82,7 @@
14  makensis_env = defenv.Copy()
15  
16  if not defenv['DEBUG']:
17 -       makensis_env.Append(CCFLAGS = '-O2')            # optimize
18 +       makensis_env.Append(CCFLAGS = '-O2 -fno-strict-aliasing')            # optimize
19  makensis_env.Append(CCFLAGS = '-Wall')            # all warnings
20  
21  conf = FlagsConfigure(makensis_env)
22 @@ -97,7 +97,7 @@
23  cross_env(plugin_env)
24  
25  if not defenv['DEBUG']:
26 -       plugin_env.Append(CCFLAGS = '-Os')              # optimize for size
27 +       plugin_env.Append(CCFLAGS = '-Os -fno-strict-aliasing')              # optimize for size
28  plugin_env.Append(CCFLAGS = '-Wall')              # level 3 warnings
29  
30  if not defenv['DEBUG']:
31 @@ -111,7 +111,7 @@
32  cp_util_env = defenv.Copy()
33  
34  if not defenv['DEBUG']:
35 -       cp_util_env.Append(CCFLAGS = '-O2')             # optimize
36 +       cp_util_env.Append(CCFLAGS = '-O2 -fno-strict-aliasing')             # optimize
37  cp_util_env.Append(CCFLAGS = '-Wall')             # all warnings
38  
39  conf = FlagsConfigure(cp_util_env)
40 Index: Source/build.cpp
41 --- ../release/nsis-2.17-src/Source/build.cpp   2006-04-14 03:05:01.000000000 -0700
42 +++ ./Source/build.cpp  2006-07-31 13:26:38.000000000 -0700
43 @@ -2384,7 +2384,7 @@
44          return PS_ERROR;
45        }
46  #ifdef NSIS_CONFIG_CRC_SUPPORT
47 -      crc_writer_sink crc_sink((unsigned long *) &crc);
48 +      crc_writer_sink crc_sink((unsigned int *) &crc);
49        firstheader_writer w(&crc_sink);
50        w.write(&fh);
51  
52 Index: Source/build.h
53 --- ../release/nsis-2.17-src/Source/build.h     2005-04-02 04:04:06.000000000 -0800
54 +++ ./Source/build.h    2006-07-31 13:28:44.000000000 -0700
55 @@ -38,7 +38,7 @@
56  #ifdef NSIS_CONFIG_CRC_SUPPORT
57  extern "C"
58  {
59 -  unsigned long NSISCALL CRC32(unsigned long crc, const unsigned char *buf, unsigned int len);
60 +  unsigned int NSISCALL CRC32(unsigned int crc, const unsigned char *buf, unsigned int len);
61  };
62  #endif
63  
64 Index: Source/crc32.c
65 --- ../release/nsis-2.17-src/Source/crc32.c     2004-03-12 12:43:54.000000000 -0800
66 +++ ./Source/crc32.c    2006-07-31 13:27:12.000000000 -0700
67 @@ -3,18 +3,18 @@
68  #ifdef NSIS_CONFIG_CRC_SUPPORT
69  
70  // this is based on the (slow,small) CRC32 implementation from zlib.
71 -unsigned long NSISCALL CRC32(unsigned long crc, const unsigned char *buf, unsigned int len)
72 +unsigned int NSISCALL CRC32(unsigned int crc, const unsigned char *buf, unsigned int len)
73  {
74 -    static unsigned long crc_table[256];
75 +    static unsigned int crc_table[256];
76  
77      if (!crc_table[1])
78      {
79 -      unsigned long c;
80 +      unsigned int c;
81        int n, k;
82  
83        for (n = 0; n < 256; n++)
84        {
85 -        c = (unsigned long)n;
86 +        c = (unsigned int)n;
87          for (k = 0; k < 8; k++) c = (c >> 1) ^ (c & 1 ? 0xedb88320L : 0);
88          crc_table[n] = c;
89        }
90 Index: Source/DialogTemplate.cpp
91 --- ../release/nsis-2.17-src/Source/DialogTemplate.cpp  2006-03-24 10:36:24.000000000 -0800
92 +++ ./Source/DialogTemplate.cpp 2006-07-31 05:48:44.000000000 -0700
93 @@ -93,7 +93,7 @@
94      if (IS_INTRESOURCE(x)) { \
95        *(WORD*)seeker = 0xFFFF; \
96        seeker += sizeof(WORD); \
97 -      *(WORD*)seeker = ConvertEndianness(WORD(DWORD(x))); \
98 +      *(WORD*)seeker = ConvertEndianness(WORD(ULONG_PTR(x))); \
99        seeker += sizeof(WORD); \
100      } \
101      else { \
102 @@ -629,7 +629,7 @@
103      }
104    }
105  
106 -  assert((DWORD) seeker - (DWORD) pbDlg == dwSize);
107 +  assert((ULONG_PTR) seeker - (ULONG_PTR) pbDlg == dwSize);
108  
109    // DONE!
110    return pbDlg;
111 Index: Source/exehead/fileform.c
112 --- ../release/nsis-2.17-src/Source/exehead/fileform.c  2005-09-09 09:08:44.000000000 -0700
113 +++ ./Source/exehead/fileform.c 2006-07-31 13:26:08.000000000 -0700
114 @@ -95,7 +95,7 @@
115  static z_stream g_inflate_stream;
116  #endif
117  
118 -extern unsigned long NSISCALL CRC32(unsigned long crc, const unsigned char *buf, unsigned int len);
119 +extern unsigned int NSISCALL CRC32(unsigned int crc, const unsigned char *buf, unsigned int len);
120  
121  const char * NSISCALL loadHeaders(int cl_flags)
122  {
123 Index: Source/Platform.h
124 --- ../release/nsis-2.17-src/Source/Platform.h  2006-05-03 08:43:54.000000000 -0700
125 +++ ./Source/Platform.h 2006-07-31 05:48:44.000000000 -0700
126 @@ -16,15 +16,15 @@
127  // basic types
128  typedef unsigned char BYTE, *PBYTE, *LPBYTE;
129  typedef unsigned short WORD, *LPWORD;
130 -typedef unsigned long DWORD, *LPDWORD;
131 +typedef unsigned int DWORD, *LPDWORD;
132  typedef short SHORT;
133  typedef unsigned short USHORT;
134  typedef unsigned int UINT;
135  typedef unsigned int UINT32;
136  typedef int INT;
137  typedef int INT32;
138 -typedef long LONG;
139 -typedef unsigned long ULONG;
140 +typedef int LONG;
141 +typedef unsigned int ULONG;
142  typedef long long INT64, LARGE_INTEGER;
143  typedef unsigned long long UINT64, ULARGE_INTEGER;
144  typedef int BOOL, *LPBOOL;
145 @@ -35,13 +35,14 @@
146  typedef const char *LPCCH, *PCSTR, *LPCSTR;
147  typedef unsigned short WCHAR, *PWCHAR, *LPWCH, *PWCH, *NWPSTR, *LPWSTR, *PWSTR;
148  typedef const unsigned short *LPCWCH, *PCWCH, *LPCWSTR, *PCWSTR;
149 -typedef unsigned int UINT_PTR;
150 +typedef unsigned long UINT_PTR;
151 +typedef unsigned long ULONG_PTR;
152  // basic stuff
153  typedef void * HANDLE;
154 -typedef unsigned long HKEY;
155 +typedef unsigned int HKEY;
156  // some gdi
157 -typedef unsigned long COLORREF;
158 -typedef unsigned long HBRUSH;
159 +typedef unsigned int COLORREF;
160 +typedef unsigned int HBRUSH;
161  // bool
162  #  define FALSE 0
163  #  define TRUE 1
164 @@ -129,13 +130,13 @@
165  
166  #ifndef _WIN32
167  #  ifndef FIELD_OFFSET
168 -#    define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f))
169 +#    define FIELD_OFFSET(t,f) ((ULONG_PTR)&(((t*)0)->f))
170  #  endif
171  #  ifndef MAKEINTRESOURCE
172  #    define MAKEINTRESOURCE(i) (LPSTR)((DWORD)((WORD)(i)))
173  #  endif
174  #  ifndef IMAGE_FIRST_SECTION
175 -#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (DWORD) h + \
176 +#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (ULONG_PTR) h + \
177                                       FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader) + \
178                                       FIX_ENDIAN_INT16(PIMAGE_NT_HEADERS(h)->FileHeader.SizeOfOptionalHeader) ) )
179  #  endif
180 @@ -166,9 +167,9 @@
181  #  define FOF_NOERRORUI 0x0400
182  #endif
183  
184 -#ifndef ULONG_PTR
185 -#  define ULONG_PTR DWORD
186 -#endif
187 +//#ifndef ULONG_PTR
188 +//#  define ULONG_PTR ULONG
189 +//#endif
190  
191  #ifndef IDC_HAND
192  #  define IDC_HAND MAKEINTRESOURCE(32649)
193 Index: Source/Plugins.cpp
194 --- ../release/nsis-2.17-src/Source/Plugins.cpp 2006-04-05 11:42:12.000000000 -0700
195 +++ ./Source/Plugins.cpp        2006-07-31 06:50:08.000000000 -0700
196 @@ -120,8 +120,8 @@
197          DWORD prd = FIX_ENDIAN_INT32(sections[i].PointerToRawData);
198          PIMAGE_EXPORT_DIRECTORY exports = PIMAGE_EXPORT_DIRECTORY(&dlldata[0] + prd + ExportDirVA - va);
199          DWORD na = FIX_ENDIAN_INT32(exports->AddressOfNames);
200 -        unsigned long *names = (unsigned long*)((unsigned long) exports + (char *) na - ExportDirVA);
201 -        for (unsigned long j = 0; j < FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
202 +        unsigned int *names = (unsigned int*)((unsigned long) exports + (char *) na - ExportDirVA);
203 +        for (unsigned int j = 0; j < FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
204          {
205            const string name = string((char*)exports + FIX_ENDIAN_INT32(names[j]) - ExportDirVA);
206            const string signature = dllName + "::" + name;
207 Index: Source/ResourceEditor.cpp
208 --- ../release/nsis-2.17-src/Source/ResourceEditor.cpp  2006-04-05 11:40:09.000000000 -0700
209 +++ ./Source/ResourceEditor.cpp 2006-07-31 05:48:44.000000000 -0700
210 @@ -545,7 +545,7 @@
211      rdDir.NumberOfIdEntries = ConvertEndianness(rdDir.NumberOfIdEntries);
212  
213      CopyMemory(seeker, &rdDir, sizeof(IMAGE_RESOURCE_DIRECTORY));
214 -    crd->m_dwWrittenAt = DWORD(seeker);
215 +    crd->m_dwWrittenAt = ULONG_PTR(seeker);
216      seeker += sizeof(IMAGE_RESOURCE_DIRECTORY);
217  
218      for (int i = 0; i < crd->CountEntries(); i++) {
219 @@ -566,7 +566,7 @@
220        rDirE.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 : 0;
221  
222        CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY));
223 -      crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker);
224 +      crd->GetEntry(i)->m_dwWrittenAt = ULONG_PTR(seeker);
225        seeker += sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY);
226      }
227      qDirs.pop();
228 @@ -582,7 +582,7 @@
229      rDataE.Size = ConvertEndianness(cRDataE->GetSize());
230  
231      CopyMemory(seeker, &rDataE, sizeof(IMAGE_RESOURCE_DATA_ENTRY));
232 -    cRDataE->m_dwWrittenAt = DWORD(seeker);
233 +    cRDataE->m_dwWrittenAt = ULONG_PTR(seeker);
234      seeker += sizeof(IMAGE_RESOURCE_DATA_ENTRY);
235  
236      qDataEntries.pop();
237 @@ -594,7 +594,7 @@
238    while (!qStrings.empty()) {
239      CResourceDirectoryEntry* cRDirE = qStrings.front();
240  
241 -    PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec));
242 +    PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset = ConvertEndianness(DWORD(ULONG_PTR(seeker) - ULONG_PTR(pbRsrcSec)));
243  
244      char* szName = cRDirE->GetName();
245      WORD iLen = strlen(szName) + 1;
246 @@ -626,7 +626,7 @@
247    while (!qDataEntries2.empty()) {
248      CResourceDataEntry* cRDataE = qDataEntries2.front();
249      CopyMemory(seeker, cRDataE->GetData(), cRDataE->GetSize());
250 -    PIMAGE_RESOURCE_DATA_ENTRY(cRDataE->m_dwWrittenAt)->OffsetToData = ConvertEndianness(seeker - pbRsrcSec + m_dwResourceSectionVA);
251 +    PIMAGE_RESOURCE_DATA_ENTRY(cRDataE->m_dwWrittenAt)->OffsetToData = ConvertEndianness(DWORD(seeker - pbRsrcSec + m_dwResourceSectionVA));
252  
253      seeker += RALIGN(cRDataE->GetSize(), 8);
254  
255 @@ -636,7 +636,7 @@
256    /*
257     * Set all of the directory entries offsets.
258     */
259 -  SetOffsets(m_cResDir, DWORD(pbRsrcSec));
260 +  SetOffsets(m_cResDir, ULONG_PTR(pbRsrcSec));
261  }
262  
263  // Sets the offsets in directory entries
264 @@ -650,7 +650,7 @@
265        SetOffsets(resDir->GetEntry(i)->GetSubDirectory(), newResDirAt);
266      }
267      else {
268 -      rde->OffsetToData = ConvertEndianness(resDir->GetEntry(i)->GetDataEntry()->m_dwWrittenAt - newResDirAt);
269 +      rde->OffsetToData = ConvertEndianness(DWORD(resDir->GetEntry(i)->GetDataEntry()->m_dwWrittenAt - newResDirAt));
270      }
271    }
272  }
273 @@ -758,7 +758,7 @@
274  // Returns -1 if can not be found
275  int CResourceDirectory::Find(char* szName) {
276    if (IS_INTRESOURCE(szName))
277 -    return Find((WORD) (DWORD) szName);
278 +    return Find((WORD) (ULONG_PTR) szName);
279    else
280      if (szName[0] == '#')
281        return Find(WORD(atoi(szName + 1)));
282 @@ -836,7 +836,7 @@
283    if (IS_INTRESOURCE(szName)) {
284      m_bHasName = false;
285      m_szName = 0;
286 -    m_wId = (WORD) (DWORD) szName;
287 +    m_wId = (WORD) (ULONG_PTR) szName;
288    }
289    else {
290      m_bHasName = true;
291 @@ -851,7 +851,7 @@
292    if (IS_INTRESOURCE(szName)) {
293      m_bHasName = false;
294      m_szName = 0;
295 -    m_wId = (WORD) (DWORD) szName;
296 +    m_wId = (WORD) (ULONG_PTR) szName;
297    }
298    else {
299      m_bHasName = true;
300 Index: Source/ResourceEditor.h
301 --- ../release/nsis-2.17-src/Source/ResourceEditor.h    2006-04-28 08:54:42.000000000 -0700
302 +++ ./Source/ResourceEditor.h   2006-07-31 05:48:44.000000000 -0700
303 @@ -173,7 +173,7 @@
304  
305    void Destroy();
306  
307 -  DWORD m_dwWrittenAt;
308 +  ULONG_PTR m_dwWrittenAt;
309  
310  private:
311    IMAGE_RESOURCE_DIRECTORY m_rdDir;
312 @@ -197,7 +197,7 @@
313  
314    CResourceDataEntry* GetDataEntry();
315  
316 -  DWORD m_dwWrittenAt;
317 +  ULONG_PTR m_dwWrittenAt;
318  
319  private:
320    bool m_bHasName;
321 @@ -226,7 +226,7 @@
322    DWORD GetSize();
323    DWORD GetCodePage();
324  
325 -  DWORD m_dwWrittenAt;
326 +  ULONG_PTR m_dwWrittenAt;
327  
328  private:
329    BYTE* m_pbData;
330 Index: Source/script.cpp
331 --- ../release/nsis-2.17-src/Source/script.cpp  2006-03-28 10:22:34.000000000 -0800
332 +++ ./Source/script.cpp 2006-07-31 20:56:03.000000000 -0700
333 @@ -4748,8 +4748,8 @@
334            {
335              struct
336              {
337 -              long l;
338 -              long h;
339 +              int l;
340 +              int h;
341              } words;
342              long long ll;
343            };
344 @@ -6075,8 +6075,8 @@
345          {
346            struct
347            {
348 -            long l;
349 -            long h;
350 +            int l;
351 +            int h;
352            } words;
353            long long ll;
354          };
355 Index: Source/util.cpp
356 --- ../release/nsis-2.17-src/Source/util.cpp    2006-04-28 08:54:42.000000000 -0700
357 +++ ./Source/util.cpp   2006-07-31 05:48:44.000000000 -0700
358 @@ -312,7 +312,7 @@
359    FIX_ENDIAN_INT32_INPLACE(rdEntry.OffsetToData);
360    MY_ASSERT(!rdEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");
361  
362 -  PRESOURCE_DIRECTORY rdIcons = PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot));
363 +  PRESOURCE_DIRECTORY rdIcons = PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + ULONG_PTR(rdRoot));
364  
365    MY_ASSERT((size_t)rdIcons - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");
366  
367 @@ -325,7 +325,7 @@
368      FIX_ENDIAN_INT32_INPLACE(icoEntry.OffsetToData);
369  
370      MY_ASSERT(!icoEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");
371 -    PRESOURCE_DIRECTORY rd = PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot));
372 +    PRESOURCE_DIRECTORY rd = PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + ULONG_PTR(rdRoot));
373      
374      MY_ASSERT((size_t)rd - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");
375  
376 @@ -334,7 +334,7 @@
377  
378      MY_ASSERT(datEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");
379      
380 -    PIMAGE_RESOURCE_DATA_ENTRY rde = PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + DWORD(rdRoot));
381 +    PIMAGE_RESOURCE_DATA_ENTRY rde = PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + ULONG_PTR(rdRoot));
382  
383      MY_ASSERT((size_t)rde - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");
384  
385 @@ -355,10 +355,10 @@
386      }
387  
388      // Set offset
389 -    DWORD dwOffset = FIX_ENDIAN_INT32(rde->OffsetToData) + DWORD(rdRoot) - dwResourceSectionVA - DWORD(exeHeader);
390 +    DWORD dwOffset = FIX_ENDIAN_INT32(rde->OffsetToData) + ULONG_PTR(rdRoot) - dwResourceSectionVA - ULONG_PTR(exeHeader);
391      *(LPDWORD) seeker = FIX_ENDIAN_INT32(dwOffset);
392  
393 -    MY_ASSERT(dwOffset > exeHeaderSize || dwOffset < (DWORD)rdRoot - (DWORD)exeHeader, "invalid data offset - icon resource probably compressed");
394 +    MY_ASSERT(dwOffset > exeHeaderSize || dwOffset < (ULONG_PTR)rdRoot - (ULONG_PTR)exeHeader, "invalid data offset - icon resource probably compressed");
395    }
396  
397    LPBYTE seeker = uninstIconData;
398 Index: Source/writer.cpp
399 --- ../release/nsis-2.17-src/Source/writer.cpp  2006-03-11 03:13:07.000000000 -0800
400 +++ ./Source/writer.cpp 2006-07-31 13:27:37.000000000 -0700
401 @@ -64,7 +64,7 @@
402  }
403  
404  #ifdef NSIS_CONFIG_CRC_SUPPORT
405 -extern "C" unsigned long NSISCALL CRC32(unsigned long crc, const unsigned char *buf, unsigned int len);
406 +extern "C" unsigned int NSISCALL CRC32(unsigned int crc, const unsigned char *buf, unsigned int len);
407  
408  void crc_writer_sink::write_data(const void *data, const size_t size)
409  {
410 Index: Source/writer.h
411 --- ../release/nsis-2.17-src/Source/writer.h    2006-03-11 03:13:07.000000000 -0800
412 +++ ./Source/writer.h   2006-07-31 13:27:58.000000000 -0700
413 @@ -57,12 +57,12 @@
414  #ifdef NSIS_CONFIG_CRC_SUPPORT
415  class crc_writer_sink : public writer_sink {
416  public:
417 -  crc_writer_sink(unsigned long *crc) : m_crc(crc) {}
418 +  crc_writer_sink(unsigned int *crc) : m_crc(crc) {}
419  
420    virtual void write_data(const void *data, const size_t size);
421  
422  private:
423 -  unsigned long *m_crc;
424 +  unsigned int *m_crc;
425  
426  };
427  #endif