mirror of https://github.com/procxx/kepka.git
				
				
				
			crash catch + report added for Windows version
This commit is contained in:
		
							parent
							
								
									62c28cb58b
								
							
						
					
					
						commit
						8eef239b45
					
				| 
						 | 
					@ -0,0 +1,131 @@
 | 
				
			||||||
 | 
					/* crypt.h -- base code for crypt/uncrypt ZIPfile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Version 1.01e, February 12th, 2005
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Copyright (C) 1998-2005 Gilles Vollant
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   This code is a modified version of crypting code in Infozip distribution
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   The encryption/decryption parts of this source code (as opposed to the
 | 
				
			||||||
 | 
					   non-echoing password parts) were originally written in Europe.  The
 | 
				
			||||||
 | 
					   whole source package can be freely distributed, including from the USA.
 | 
				
			||||||
 | 
					   (Prior to January 2000, re-export from the US was a violation of US law.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   This encryption code is a direct transcription of the algorithm from
 | 
				
			||||||
 | 
					   Roger Schlafly, described by Phil Katz in the file appnote.txt.  This
 | 
				
			||||||
 | 
					   file (appnote.txt) is distributed with the PKZIP program (even in the
 | 
				
			||||||
 | 
					   version without encryption capabilities).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   If you don't need crypting in your application, just define symbols
 | 
				
			||||||
 | 
					   NOCRYPT and NOUNCRYPT.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   This code support the "Traditional PKWARE Encryption".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   The new AES encryption added on Zip format by Winzip (see the page
 | 
				
			||||||
 | 
					   http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong
 | 
				
			||||||
 | 
					   Encryption is not supported.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***********************************************************************
 | 
				
			||||||
 | 
					 * Return the next byte in the pseudo-random sequence
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    unsigned temp;  /* POTENTIAL BUG:  temp*(temp^1) may overflow in an
 | 
				
			||||||
 | 
					                     * unpredictable manner on 16-bit systems; not a problem
 | 
				
			||||||
 | 
					                     * with any known compiler so far, though */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
 | 
				
			||||||
 | 
					    return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***********************************************************************
 | 
				
			||||||
 | 
					 * Update the encryption keys with the next byte of plain text
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    (*(pkeys+0)) = CRC32((*(pkeys+0)), c);
 | 
				
			||||||
 | 
					    (*(pkeys+1)) += (*(pkeys+0)) & 0xff;
 | 
				
			||||||
 | 
					    (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1;
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      register int keyshift = (int)((*(pkeys+1)) >> 24);
 | 
				
			||||||
 | 
					      (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return c;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***********************************************************************
 | 
				
			||||||
 | 
					 * Initialize the encryption keys and the random header according to
 | 
				
			||||||
 | 
					 * the given password.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcrc_32_tab)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    *(pkeys+0) = 305419896L;
 | 
				
			||||||
 | 
					    *(pkeys+1) = 591751049L;
 | 
				
			||||||
 | 
					    *(pkeys+2) = 878082192L;
 | 
				
			||||||
 | 
					    while (*passwd != '\0') {
 | 
				
			||||||
 | 
					        update_keys(pkeys,pcrc_32_tab,(int)*passwd);
 | 
				
			||||||
 | 
					        passwd++;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define zdecode(pkeys,pcrc_32_tab,c) \
 | 
				
			||||||
 | 
					    (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define zencode(pkeys,pcrc_32_tab,c,t) \
 | 
				
			||||||
 | 
					    (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RAND_HEAD_LEN  12
 | 
				
			||||||
 | 
					   /* "last resort" source for second part of crypt seed pattern */
 | 
				
			||||||
 | 
					#  ifndef ZCR_SEED2
 | 
				
			||||||
 | 
					#    define ZCR_SEED2 3141592654UL     /* use PI as default pattern */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int crypthead(const char* passwd,      /* password string */
 | 
				
			||||||
 | 
					                     unsigned char* buf,      /* where to write header */
 | 
				
			||||||
 | 
					                     int bufSize,
 | 
				
			||||||
 | 
					                     unsigned long* pkeys,
 | 
				
			||||||
 | 
					                     const z_crc_t* pcrc_32_tab,
 | 
				
			||||||
 | 
					                     unsigned long crcForCrypting)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int n;                       /* index in random header */
 | 
				
			||||||
 | 
					    int t;                       /* temporary */
 | 
				
			||||||
 | 
					    int c;                       /* random byte */
 | 
				
			||||||
 | 
					    unsigned char header[RAND_HEAD_LEN-2]; /* random header */
 | 
				
			||||||
 | 
					    static unsigned calls = 0;   /* ensure different random header each time */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (bufSize<RAND_HEAD_LEN)
 | 
				
			||||||
 | 
					      return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* First generate RAND_HEAD_LEN-2 random bytes. We encrypt the
 | 
				
			||||||
 | 
					     * output of rand() to get less predictability, since rand() is
 | 
				
			||||||
 | 
					     * often poorly implemented.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    if (++calls == 1)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        srand((unsigned)(time(NULL) ^ ZCR_SEED2));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    init_keys(passwd, pkeys, pcrc_32_tab);
 | 
				
			||||||
 | 
					    for (n = 0; n < RAND_HEAD_LEN-2; n++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        c = (rand() >> 7) & 0xff;
 | 
				
			||||||
 | 
					        header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /* Encrypt random header (last two bytes is high word of crc) */
 | 
				
			||||||
 | 
					    init_keys(passwd, pkeys, pcrc_32_tab);
 | 
				
			||||||
 | 
					    for (n = 0; n < RAND_HEAD_LEN-2; n++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t);
 | 
				
			||||||
 | 
					    buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t);
 | 
				
			||||||
 | 
					    return n;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,208 @@
 | 
				
			||||||
 | 
					/* ioapi.h -- IO base function header for compress/uncompress .zip
 | 
				
			||||||
 | 
					   part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         Modifications for Zip64 support
 | 
				
			||||||
 | 
					         Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         For more info read MiniZip_info.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         Changes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Oct-2009 - Defined ZPOS64_T to fpos_t on windows and u_int64_t on linux. (might need to find a better why for this)
 | 
				
			||||||
 | 
					    Oct-2009 - Change to fseeko64, ftello64 and fopen64 so large files would work on linux.
 | 
				
			||||||
 | 
					               More if/def section may be needed to support other platforms
 | 
				
			||||||
 | 
					    Oct-2009 - Defined fxxxx64 calls to normal fopen/ftell/fseek so they would compile on windows.
 | 
				
			||||||
 | 
					                          (but you should use iowin32.c for windows instead)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _ZLIBIOAPI64_H
 | 
				
			||||||
 | 
					#define _ZLIBIOAPI64_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Linux needs this to support file operation on files larger then 4+GB
 | 
				
			||||||
 | 
					  // But might need better if/def to select just the platforms that needs them.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #ifndef __USE_FILE_OFFSET64
 | 
				
			||||||
 | 
					                #define __USE_FILE_OFFSET64
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					        #ifndef __USE_LARGEFILE64
 | 
				
			||||||
 | 
					                #define __USE_LARGEFILE64
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					        #ifndef _LARGEFILE64_SOURCE
 | 
				
			||||||
 | 
					                #define _LARGEFILE64_SOURCE
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					        #ifndef _FILE_OFFSET_BIT
 | 
				
			||||||
 | 
					                #define _FILE_OFFSET_BIT 64
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include "zlib.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_FILE32API)
 | 
				
			||||||
 | 
					#define fopen64 fopen
 | 
				
			||||||
 | 
					#define ftello64 ftell
 | 
				
			||||||
 | 
					#define fseeko64 fseek
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#ifdef __FreeBSD__
 | 
				
			||||||
 | 
					#define fopen64 fopen
 | 
				
			||||||
 | 
					#define ftello64 ftello
 | 
				
			||||||
 | 
					#define fseeko64 fseeko
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef _MSC_VER
 | 
				
			||||||
 | 
					 #define fopen64 fopen
 | 
				
			||||||
 | 
					 #if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC)))
 | 
				
			||||||
 | 
					  #define ftello64 _ftelli64
 | 
				
			||||||
 | 
					  #define fseeko64 _fseeki64
 | 
				
			||||||
 | 
					 #else // old MSC
 | 
				
			||||||
 | 
					  #define ftello64 ftell
 | 
				
			||||||
 | 
					  #define fseeko64 fseek
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					#ifndef ZPOS64_T
 | 
				
			||||||
 | 
					  #ifdef _WIN32
 | 
				
			||||||
 | 
					                #define ZPOS64_T fpos_t
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					    #include <stdint.h>
 | 
				
			||||||
 | 
					    #define ZPOS64_T uint64_t
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_MINIZIP64_CONF_H
 | 
				
			||||||
 | 
					#include "mz64conf.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* a type choosen by DEFINE */
 | 
				
			||||||
 | 
					#ifdef HAVE_64BIT_INT_CUSTOM
 | 
				
			||||||
 | 
					typedef  64BIT_INT_CUSTOM_TYPE ZPOS64_T;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#ifdef HAS_STDINT_H
 | 
				
			||||||
 | 
					#include "stdint.h"
 | 
				
			||||||
 | 
					typedef uint64_t ZPOS64_T;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Maximum unsigned 32-bit value used as placeholder for zip64 */
 | 
				
			||||||
 | 
					#define MAXU32 0xffffffff
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_MSC_VER) || defined(__BORLANDC__)
 | 
				
			||||||
 | 
					typedef unsigned __int64 ZPOS64_T;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					typedef unsigned long long int ZPOS64_T;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ZLIB_FILEFUNC_SEEK_CUR (1)
 | 
				
			||||||
 | 
					#define ZLIB_FILEFUNC_SEEK_END (2)
 | 
				
			||||||
 | 
					#define ZLIB_FILEFUNC_SEEK_SET (0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ZLIB_FILEFUNC_MODE_READ      (1)
 | 
				
			||||||
 | 
					#define ZLIB_FILEFUNC_MODE_WRITE     (2)
 | 
				
			||||||
 | 
					#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ZLIB_FILEFUNC_MODE_EXISTING (4)
 | 
				
			||||||
 | 
					#define ZLIB_FILEFUNC_MODE_CREATE   (8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ZCALLBACK
 | 
				
			||||||
 | 
					 #if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK)
 | 
				
			||||||
 | 
					   #define ZCALLBACK CALLBACK
 | 
				
			||||||
 | 
					 #else
 | 
				
			||||||
 | 
					   #define ZCALLBACK
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef voidpf   (ZCALLBACK *open_file_func)      OF((voidpf opaque, const char* filename, int mode));
 | 
				
			||||||
 | 
					typedef uLong    (ZCALLBACK *read_file_func)      OF((voidpf opaque, voidpf stream, void* buf, uLong size));
 | 
				
			||||||
 | 
					typedef uLong    (ZCALLBACK *write_file_func)     OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
 | 
				
			||||||
 | 
					typedef int      (ZCALLBACK *close_file_func)     OF((voidpf opaque, voidpf stream));
 | 
				
			||||||
 | 
					typedef int      (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef long     (ZCALLBACK *tell_file_func)      OF((voidpf opaque, voidpf stream));
 | 
				
			||||||
 | 
					typedef long     (ZCALLBACK *seek_file_func)      OF((voidpf opaque, voidpf stream, uLong offset, int origin));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* here is the "old" 32 bits structure structure */
 | 
				
			||||||
 | 
					typedef struct zlib_filefunc_def_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    open_file_func      zopen_file;
 | 
				
			||||||
 | 
					    read_file_func      zread_file;
 | 
				
			||||||
 | 
					    write_file_func     zwrite_file;
 | 
				
			||||||
 | 
					    tell_file_func      ztell_file;
 | 
				
			||||||
 | 
					    seek_file_func      zseek_file;
 | 
				
			||||||
 | 
					    close_file_func     zclose_file;
 | 
				
			||||||
 | 
					    testerror_file_func zerror_file;
 | 
				
			||||||
 | 
					    voidpf              opaque;
 | 
				
			||||||
 | 
					} zlib_filefunc_def;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef ZPOS64_T (ZCALLBACK *tell64_file_func)    OF((voidpf opaque, voidpf stream));
 | 
				
			||||||
 | 
					typedef long     (ZCALLBACK *seek64_file_func)    OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
 | 
				
			||||||
 | 
					typedef voidpf   (ZCALLBACK *open64_file_func)    OF((voidpf opaque, const void* filename, int mode));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct zlib_filefunc64_def_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    open64_file_func    zopen64_file;
 | 
				
			||||||
 | 
					    read_file_func      zread_file;
 | 
				
			||||||
 | 
					    write_file_func     zwrite_file;
 | 
				
			||||||
 | 
					    tell64_file_func    ztell64_file;
 | 
				
			||||||
 | 
					    seek64_file_func    zseek64_file;
 | 
				
			||||||
 | 
					    close_file_func     zclose_file;
 | 
				
			||||||
 | 
					    testerror_file_func zerror_file;
 | 
				
			||||||
 | 
					    voidpf              opaque;
 | 
				
			||||||
 | 
					} zlib_filefunc64_def;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def));
 | 
				
			||||||
 | 
					void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* now internal definition, only for zip.c and unzip.h */
 | 
				
			||||||
 | 
					typedef struct zlib_filefunc64_32_def_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    zlib_filefunc64_def zfile_func64;
 | 
				
			||||||
 | 
					    open_file_func      zopen32_file;
 | 
				
			||||||
 | 
					    tell_file_func      ztell32_file;
 | 
				
			||||||
 | 
					    seek_file_func      zseek32_file;
 | 
				
			||||||
 | 
					} zlib_filefunc64_32_def;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ZREAD64(filefunc,filestream,buf,size)     ((*((filefunc).zfile_func64.zread_file))   ((filefunc).zfile_func64.opaque,filestream,buf,size))
 | 
				
			||||||
 | 
					#define ZWRITE64(filefunc,filestream,buf,size)    ((*((filefunc).zfile_func64.zwrite_file))  ((filefunc).zfile_func64.opaque,filestream,buf,size))
 | 
				
			||||||
 | 
					//#define ZTELL64(filefunc,filestream)            ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))
 | 
				
			||||||
 | 
					//#define ZSEEK64(filefunc,filestream,pos,mode)   ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))
 | 
				
			||||||
 | 
					#define ZCLOSE64(filefunc,filestream)             ((*((filefunc).zfile_func64.zclose_file))  ((filefunc).zfile_func64.opaque,filestream))
 | 
				
			||||||
 | 
					#define ZERROR64(filefunc,filestream)             ((*((filefunc).zfile_func64.zerror_file))  ((filefunc).zfile_func64.opaque,filestream))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode));
 | 
				
			||||||
 | 
					long    call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin));
 | 
				
			||||||
 | 
					ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void    fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ZOPEN64(filefunc,filename,mode)         (call_zopen64((&(filefunc)),(filename),(mode)))
 | 
				
			||||||
 | 
					#define ZTELL64(filefunc,filestream)            (call_ztell64((&(filefunc)),(filestream)))
 | 
				
			||||||
 | 
					#define ZSEEK64(filefunc,filestream,pos,mode)   (call_zseek64((&(filefunc)),(filestream),(pos),(mode)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -0,0 +1,362 @@
 | 
				
			||||||
 | 
					/* zip.h -- IO on .zip files using zlib
 | 
				
			||||||
 | 
					   Version 1.1, February 14h, 2010
 | 
				
			||||||
 | 
					   part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         Modifications for Zip64 support
 | 
				
			||||||
 | 
					         Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         For more info read MiniZip_info.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         ---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Condition of use and distribution are the same than zlib :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This software is provided 'as-is', without any express or implied
 | 
				
			||||||
 | 
					  warranty.  In no event will the authors be held liable for any damages
 | 
				
			||||||
 | 
					  arising from the use of this software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Permission is granted to anyone to use this software for any purpose,
 | 
				
			||||||
 | 
					  including commercial applications, and to alter it and redistribute it
 | 
				
			||||||
 | 
					  freely, subject to the following restrictions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  1. The origin of this software must not be misrepresented; you must not
 | 
				
			||||||
 | 
					     claim that you wrote the original software. If you use this software
 | 
				
			||||||
 | 
					     in a product, an acknowledgment in the product documentation would be
 | 
				
			||||||
 | 
					     appreciated but is not required.
 | 
				
			||||||
 | 
					  2. Altered source versions must be plainly marked as such, and must not be
 | 
				
			||||||
 | 
					     misrepresented as being the original software.
 | 
				
			||||||
 | 
					  3. This notice may not be removed or altered from any source distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Changes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        See header of zip.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _zip12_H
 | 
				
			||||||
 | 
					#define _zip12_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#define HAVE_BZIP2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _ZLIB_H
 | 
				
			||||||
 | 
					#include "zlib.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _ZLIBIOAPI_H
 | 
				
			||||||
 | 
					#include "ioapi.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_BZIP2
 | 
				
			||||||
 | 
					#include "bzlib.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define Z_BZIP2ED 12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(STRICTZIP) || defined(STRICTZIPUNZIP)
 | 
				
			||||||
 | 
					/* like the STRICT of WIN32, we define a pointer that cannot be converted
 | 
				
			||||||
 | 
					    from (void*) without cast */
 | 
				
			||||||
 | 
					typedef struct TagzipFile__ { int unused; } zipFile__;
 | 
				
			||||||
 | 
					typedef zipFile__ *zipFile;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					typedef voidp zipFile;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ZIP_OK                          (0)
 | 
				
			||||||
 | 
					#define ZIP_EOF                         (0)
 | 
				
			||||||
 | 
					#define ZIP_ERRNO                       (Z_ERRNO)
 | 
				
			||||||
 | 
					#define ZIP_PARAMERROR                  (-102)
 | 
				
			||||||
 | 
					#define ZIP_BADZIPFILE                  (-103)
 | 
				
			||||||
 | 
					#define ZIP_INTERNALERROR               (-104)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef DEF_MEM_LEVEL
 | 
				
			||||||
 | 
					#  if MAX_MEM_LEVEL >= 8
 | 
				
			||||||
 | 
					#    define DEF_MEM_LEVEL 8
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define DEF_MEM_LEVEL  MAX_MEM_LEVEL
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					/* default memLevel */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* tm_zip contain date/time info */
 | 
				
			||||||
 | 
					typedef struct tm_zip_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    uInt tm_sec;            /* seconds after the minute - [0,59] */
 | 
				
			||||||
 | 
					    uInt tm_min;            /* minutes after the hour - [0,59] */
 | 
				
			||||||
 | 
					    uInt tm_hour;           /* hours since midnight - [0,23] */
 | 
				
			||||||
 | 
					    uInt tm_mday;           /* day of the month - [1,31] */
 | 
				
			||||||
 | 
					    uInt tm_mon;            /* months since January - [0,11] */
 | 
				
			||||||
 | 
					    uInt tm_year;           /* years - [1980..2044] */
 | 
				
			||||||
 | 
					} tm_zip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    tm_zip      tmz_date;       /* date in understandable format           */
 | 
				
			||||||
 | 
					    uLong       dosDate;       /* if dos_date == 0, tmu_date is used      */
 | 
				
			||||||
 | 
					/*    uLong       flag;        */   /* general purpose bit flag        2 bytes */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    uLong       internal_fa;    /* internal file attributes        2 bytes */
 | 
				
			||||||
 | 
					    uLong       external_fa;    /* external file attributes        4 bytes */
 | 
				
			||||||
 | 
					} zip_fileinfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef const char* zipcharpc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define APPEND_STATUS_CREATE        (0)
 | 
				
			||||||
 | 
					#define APPEND_STATUS_CREATEAFTER   (1)
 | 
				
			||||||
 | 
					#define APPEND_STATUS_ADDINZIP      (2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
 | 
				
			||||||
 | 
					extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Create a zipfile.
 | 
				
			||||||
 | 
					     pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
 | 
				
			||||||
 | 
					       an Unix computer "zlib/zlib113.zip".
 | 
				
			||||||
 | 
					     if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip
 | 
				
			||||||
 | 
					       will be created at the end of the file.
 | 
				
			||||||
 | 
					         (useful if the file contain a self extractor code)
 | 
				
			||||||
 | 
					     if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will
 | 
				
			||||||
 | 
					       add files in existing zip (be sure you don't add file that doesn't exist)
 | 
				
			||||||
 | 
					     If the zipfile cannot be opened, the return value is NULL.
 | 
				
			||||||
 | 
					     Else, the return value is a zipFile Handle, usable with other function
 | 
				
			||||||
 | 
					       of this zip package.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Note : there is no delete function into a zipfile.
 | 
				
			||||||
 | 
					   If you want delete file into a zipfile, you must open a zipfile, and create another
 | 
				
			||||||
 | 
					   Of couse, you can use RAW reading and writing to copy the file you did not want delte
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
 | 
				
			||||||
 | 
					                                   int append,
 | 
				
			||||||
 | 
					                                   zipcharpc* globalcomment,
 | 
				
			||||||
 | 
					                                   zlib_filefunc_def* pzlib_filefunc_def));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname,
 | 
				
			||||||
 | 
					                                   int append,
 | 
				
			||||||
 | 
					                                   zipcharpc* globalcomment,
 | 
				
			||||||
 | 
					                                   zlib_filefunc64_def* pzlib_filefunc_def));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
 | 
				
			||||||
 | 
					                       const char* filename,
 | 
				
			||||||
 | 
					                       const zip_fileinfo* zipfi,
 | 
				
			||||||
 | 
					                       const void* extrafield_local,
 | 
				
			||||||
 | 
					                       uInt size_extrafield_local,
 | 
				
			||||||
 | 
					                       const void* extrafield_global,
 | 
				
			||||||
 | 
					                       uInt size_extrafield_global,
 | 
				
			||||||
 | 
					                       const char* comment,
 | 
				
			||||||
 | 
					                       int method,
 | 
				
			||||||
 | 
					                       int level));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file,
 | 
				
			||||||
 | 
					                       const char* filename,
 | 
				
			||||||
 | 
					                       const zip_fileinfo* zipfi,
 | 
				
			||||||
 | 
					                       const void* extrafield_local,
 | 
				
			||||||
 | 
					                       uInt size_extrafield_local,
 | 
				
			||||||
 | 
					                       const void* extrafield_global,
 | 
				
			||||||
 | 
					                       uInt size_extrafield_global,
 | 
				
			||||||
 | 
					                       const char* comment,
 | 
				
			||||||
 | 
					                       int method,
 | 
				
			||||||
 | 
					                       int level,
 | 
				
			||||||
 | 
					                       int zip64));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Open a file in the ZIP for writing.
 | 
				
			||||||
 | 
					  filename : the filename in zip (if NULL, '-' without quote will be used
 | 
				
			||||||
 | 
					  *zipfi contain supplemental information
 | 
				
			||||||
 | 
					  if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
 | 
				
			||||||
 | 
					    contains the extrafield data the the local header
 | 
				
			||||||
 | 
					  if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
 | 
				
			||||||
 | 
					    contains the extrafield data the the local header
 | 
				
			||||||
 | 
					  if comment != NULL, comment contain the comment string
 | 
				
			||||||
 | 
					  method contain the compression method (0 for store, Z_DEFLATED for deflate)
 | 
				
			||||||
 | 
					  level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
 | 
				
			||||||
 | 
					  zip64 is set to 1 if a zip64 extended information block should be added to the local file header.
 | 
				
			||||||
 | 
					                    this MUST be '1' if the uncompressed size is >= 0xffffffff.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file,
 | 
				
			||||||
 | 
					                                            const char* filename,
 | 
				
			||||||
 | 
					                                            const zip_fileinfo* zipfi,
 | 
				
			||||||
 | 
					                                            const void* extrafield_local,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_local,
 | 
				
			||||||
 | 
					                                            const void* extrafield_global,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_global,
 | 
				
			||||||
 | 
					                                            const char* comment,
 | 
				
			||||||
 | 
					                                            int method,
 | 
				
			||||||
 | 
					                                            int level,
 | 
				
			||||||
 | 
					                                            int raw));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file,
 | 
				
			||||||
 | 
					                                            const char* filename,
 | 
				
			||||||
 | 
					                                            const zip_fileinfo* zipfi,
 | 
				
			||||||
 | 
					                                            const void* extrafield_local,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_local,
 | 
				
			||||||
 | 
					                                            const void* extrafield_global,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_global,
 | 
				
			||||||
 | 
					                                            const char* comment,
 | 
				
			||||||
 | 
					                                            int method,
 | 
				
			||||||
 | 
					                                            int level,
 | 
				
			||||||
 | 
					                                            int raw,
 | 
				
			||||||
 | 
					                                            int zip64));
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Same than zipOpenNewFileInZip, except if raw=1, we write raw file
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file,
 | 
				
			||||||
 | 
					                                            const char* filename,
 | 
				
			||||||
 | 
					                                            const zip_fileinfo* zipfi,
 | 
				
			||||||
 | 
					                                            const void* extrafield_local,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_local,
 | 
				
			||||||
 | 
					                                            const void* extrafield_global,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_global,
 | 
				
			||||||
 | 
					                                            const char* comment,
 | 
				
			||||||
 | 
					                                            int method,
 | 
				
			||||||
 | 
					                                            int level,
 | 
				
			||||||
 | 
					                                            int raw,
 | 
				
			||||||
 | 
					                                            int windowBits,
 | 
				
			||||||
 | 
					                                            int memLevel,
 | 
				
			||||||
 | 
					                                            int strategy,
 | 
				
			||||||
 | 
					                                            const char* password,
 | 
				
			||||||
 | 
					                                            uLong crcForCrypting));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file,
 | 
				
			||||||
 | 
					                                            const char* filename,
 | 
				
			||||||
 | 
					                                            const zip_fileinfo* zipfi,
 | 
				
			||||||
 | 
					                                            const void* extrafield_local,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_local,
 | 
				
			||||||
 | 
					                                            const void* extrafield_global,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_global,
 | 
				
			||||||
 | 
					                                            const char* comment,
 | 
				
			||||||
 | 
					                                            int method,
 | 
				
			||||||
 | 
					                                            int level,
 | 
				
			||||||
 | 
					                                            int raw,
 | 
				
			||||||
 | 
					                                            int windowBits,
 | 
				
			||||||
 | 
					                                            int memLevel,
 | 
				
			||||||
 | 
					                                            int strategy,
 | 
				
			||||||
 | 
					                                            const char* password,
 | 
				
			||||||
 | 
					                                            uLong crcForCrypting,
 | 
				
			||||||
 | 
					                                            int zip64
 | 
				
			||||||
 | 
					                                            ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Same than zipOpenNewFileInZip2, except
 | 
				
			||||||
 | 
					    windowBits,memLevel,,strategy : see parameter strategy in deflateInit2
 | 
				
			||||||
 | 
					    password : crypting password (NULL for no crypting)
 | 
				
			||||||
 | 
					    crcForCrypting : crc of file to compress (needed for crypting)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file,
 | 
				
			||||||
 | 
					                                            const char* filename,
 | 
				
			||||||
 | 
					                                            const zip_fileinfo* zipfi,
 | 
				
			||||||
 | 
					                                            const void* extrafield_local,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_local,
 | 
				
			||||||
 | 
					                                            const void* extrafield_global,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_global,
 | 
				
			||||||
 | 
					                                            const char* comment,
 | 
				
			||||||
 | 
					                                            int method,
 | 
				
			||||||
 | 
					                                            int level,
 | 
				
			||||||
 | 
					                                            int raw,
 | 
				
			||||||
 | 
					                                            int windowBits,
 | 
				
			||||||
 | 
					                                            int memLevel,
 | 
				
			||||||
 | 
					                                            int strategy,
 | 
				
			||||||
 | 
					                                            const char* password,
 | 
				
			||||||
 | 
					                                            uLong crcForCrypting,
 | 
				
			||||||
 | 
					                                            uLong versionMadeBy,
 | 
				
			||||||
 | 
					                                            uLong flagBase
 | 
				
			||||||
 | 
					                                            ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file,
 | 
				
			||||||
 | 
					                                            const char* filename,
 | 
				
			||||||
 | 
					                                            const zip_fileinfo* zipfi,
 | 
				
			||||||
 | 
					                                            const void* extrafield_local,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_local,
 | 
				
			||||||
 | 
					                                            const void* extrafield_global,
 | 
				
			||||||
 | 
					                                            uInt size_extrafield_global,
 | 
				
			||||||
 | 
					                                            const char* comment,
 | 
				
			||||||
 | 
					                                            int method,
 | 
				
			||||||
 | 
					                                            int level,
 | 
				
			||||||
 | 
					                                            int raw,
 | 
				
			||||||
 | 
					                                            int windowBits,
 | 
				
			||||||
 | 
					                                            int memLevel,
 | 
				
			||||||
 | 
					                                            int strategy,
 | 
				
			||||||
 | 
					                                            const char* password,
 | 
				
			||||||
 | 
					                                            uLong crcForCrypting,
 | 
				
			||||||
 | 
					                                            uLong versionMadeBy,
 | 
				
			||||||
 | 
					                                            uLong flagBase,
 | 
				
			||||||
 | 
					                                            int zip64
 | 
				
			||||||
 | 
					                                            ));
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Same than zipOpenNewFileInZip4, except
 | 
				
			||||||
 | 
					    versionMadeBy : value for Version made by field
 | 
				
			||||||
 | 
					    flag : value for flag field (compression level info will be added)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipWriteInFileInZip OF((zipFile file,
 | 
				
			||||||
 | 
					                       const void* buf,
 | 
				
			||||||
 | 
					                       unsigned len));
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Write data in the zipfile
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipCloseFileInZip OF((zipFile file));
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Close the current file in the zipfile
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file,
 | 
				
			||||||
 | 
					                                            uLong uncompressed_size,
 | 
				
			||||||
 | 
					                                            uLong crc32));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file,
 | 
				
			||||||
 | 
					                                            ZPOS64_T uncompressed_size,
 | 
				
			||||||
 | 
					                                            uLong crc32));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Close the current file in the zipfile, for file opened with
 | 
				
			||||||
 | 
					    parameter raw=1 in zipOpenNewFileInZip2
 | 
				
			||||||
 | 
					  uncompressed_size and crc32 are value for the uncompressed size
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipClose OF((zipFile file,
 | 
				
			||||||
 | 
					                const char* global_comment));
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Close the zipfile
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader));
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  zipRemoveExtraInfoBlock -  Added by Mathias Svensson
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Remove extra information block from a extra information data for the local file header or central directory header
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  It is needed to remove ZIP64 extra information blocks when before data is written if using RAW mode.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  0x0001 is the signature header for the ZIP64 extra information blocks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  usage.
 | 
				
			||||||
 | 
					                        Remove ZIP64 Extra information from a central director extra field data
 | 
				
			||||||
 | 
					              zipRemoveExtraInfoBlock(pCenDirExtraFieldData, &nCenDirExtraFieldDataLen, 0x0001);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        Remove ZIP64 Extra information from a Local File Header extra field data
 | 
				
			||||||
 | 
					        zipRemoveExtraInfoBlock(pLocalHeaderExtraFieldData, &nLocalHeaderExtraFieldDataLen, 0x0001);
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* _zip64_H */
 | 
				
			||||||
| 
						 | 
					@ -2610,9 +2610,14 @@ namespace App {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QNetworkProxy getHttpProxySettings() {
 | 
						QNetworkProxy getHttpProxySettings() {
 | 
				
			||||||
		if (cConnectionType() == dbictHttpProxy) {
 | 
							const ConnectionProxy *proxy = 0;
 | 
				
			||||||
			const ConnectionProxy &p(cConnectionProxy());
 | 
							if (Sandbox::started()) {
 | 
				
			||||||
			return QNetworkProxy(QNetworkProxy::HttpProxy, p.host, p.port, p.user, p.password);
 | 
								proxy = (cConnectionType() == dbictHttpProxy) ? (&cConnectionProxy()) : 0;
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								proxy = Global::PreLaunchProxy().host.isEmpty() ? 0 : (&Global::PreLaunchProxy());
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if (proxy) {
 | 
				
			||||||
 | 
								return QNetworkProxy(QNetworkProxy::HttpProxy, proxy->host, proxy->port, proxy->user, proxy->password);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return QNetworkProxy(QNetworkProxy::DefaultProxy);
 | 
							return QNetworkProxy(QNetworkProxy::DefaultProxy);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -311,7 +311,7 @@ void Application::readClients() {
 | 
				
			||||||
			for (int32 to = cmds.indexOf(QChar(';'), from); to >= from; to = (from < l) ? cmds.indexOf(QChar(';'), from) : -1) {
 | 
								for (int32 to = cmds.indexOf(QChar(';'), from); to >= from; to = (from < l) ? cmds.indexOf(QChar(';'), from) : -1) {
 | 
				
			||||||
				QStringRef cmd(&cmds, from, to - from);
 | 
									QStringRef cmd(&cmds, from, to - from);
 | 
				
			||||||
				if (cmd.startsWith(qsl("CMD:"))) {
 | 
									if (cmd.startsWith(qsl("CMD:"))) {
 | 
				
			||||||
					App::app()->execExternal(cmds.mid(from + 4, to - from - 4));
 | 
										Sandboxer::execExternal(cmds.mid(from + 4, to - from - 4));
 | 
				
			||||||
					QByteArray response(qsl("RES:%1;").arg(QCoreApplication::applicationPid()).toLatin1());
 | 
										QByteArray response(qsl("RES:%1;").arg(QCoreApplication::applicationPid()).toLatin1());
 | 
				
			||||||
					i->first->write(response.data(), response.size());
 | 
										i->first->write(response.data(), response.size());
 | 
				
			||||||
				} else if (cmd.startsWith(qsl("SEND:"))) {
 | 
									} else if (cmd.startsWith(qsl("SEND:"))) {
 | 
				
			||||||
| 
						 | 
					@ -485,7 +485,7 @@ void Application::startUpdateCheck(bool forceWait) {
 | 
				
			||||||
	if (_updateThread || _updateReply || !cAutoUpdate()) return;
 | 
						if (_updateThread || _updateReply || !cAutoUpdate()) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int32 constDelay = cBetaVersion() ? 600 : UpdateDelayConstPart, randDelay = cBetaVersion() ? 300 : UpdateDelayRandPart;
 | 
						int32 constDelay = cBetaVersion() ? 600 : UpdateDelayConstPart, randDelay = cBetaVersion() ? 300 : UpdateDelayRandPart;
 | 
				
			||||||
	int32 updateInSecs = cLastUpdateCheck() + constDelay + int32(MTP::nonce<uint32>() % randDelay) - unixtime();
 | 
						int32 updateInSecs = cLastUpdateCheck() + constDelay + int32(rand() % randDelay) - unixtime();
 | 
				
			||||||
	bool sendRequest = (updateInSecs <= 0 || updateInSecs > (constDelay + randDelay));
 | 
						bool sendRequest = (updateInSecs <= 0 || updateInSecs > (constDelay + randDelay));
 | 
				
			||||||
	if (!sendRequest && !forceWait) {
 | 
						if (!sendRequest && !forceWait) {
 | 
				
			||||||
		QDir updates(cWorkingDir() + "tupdates");
 | 
							QDir updates(cWorkingDir() + "tupdates");
 | 
				
			||||||
| 
						 | 
					@ -564,6 +564,17 @@ namespace Sandboxer {
 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void execExternal(const QString &cmd) {
 | 
				
			||||||
 | 
							DEBUG_LOG(("Application Info: executing external command '%1'").arg(cmd));
 | 
				
			||||||
 | 
							if (cmd == "show") {
 | 
				
			||||||
 | 
								if (App::wnd()) {
 | 
				
			||||||
 | 
									App::wnd()->activate();
 | 
				
			||||||
 | 
								} else if (PreLaunchWindow::instance()) {
 | 
				
			||||||
 | 
									PreLaunchWindow::instance()->activate();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void startUpdateCheck() {
 | 
						void startUpdateCheck() {
 | 
				
			||||||
| 
						 | 
					@ -643,6 +654,8 @@ AppClass::AppClass() : QObject()
 | 
				
			||||||
, _uploader(0) {
 | 
					, _uploader(0) {
 | 
				
			||||||
	AppObject = this;
 | 
						AppObject = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Fonts::start();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ThirdParty::start();
 | 
						ThirdParty::start();
 | 
				
			||||||
	Sandbox::start();
 | 
						Sandbox::start();
 | 
				
			||||||
	Local::start();
 | 
						Local::start();
 | 
				
			||||||
| 
						 | 
					@ -658,10 +671,6 @@ AppClass::AppClass() : QObject()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	application()->installEventFilter(new EventFilterForKeys(this));
 | 
						application()->installEventFilter(new EventFilterForKeys(this));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QFontDatabase::addApplicationFont(qsl(":/gui/art/fonts/OpenSans-Regular.ttf"));
 | 
					 | 
				
			||||||
	QFontDatabase::addApplicationFont(qsl(":/gui/art/fonts/OpenSans-Bold.ttf"));
 | 
					 | 
				
			||||||
	QFontDatabase::addApplicationFont(qsl(":/gui/art/fonts/OpenSans-Semibold.ttf"));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	float64 dpi = QApplication::primaryScreen()->logicalDotsPerInch();
 | 
						float64 dpi = QApplication::primaryScreen()->logicalDotsPerInch();
 | 
				
			||||||
	if (dpi <= 108) { // 0-96-108
 | 
						if (dpi <= 108) { // 0-96-108
 | 
				
			||||||
		cSetScreenScale(dbisOne);
 | 
							cSetScreenScale(dbisOne);
 | 
				
			||||||
| 
						 | 
					@ -1030,13 +1039,6 @@ void AppClass::checkMapVersion() {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AppClass::execExternal(const QString &cmd) {
 | 
					 | 
				
			||||||
	DEBUG_LOG(("Application Info: executing external command '%1'").arg(cmd));
 | 
					 | 
				
			||||||
	if (cmd == "show") {
 | 
					 | 
				
			||||||
		_window.activate();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AppClass::~AppClass() {
 | 
					AppClass::~AppClass() {
 | 
				
			||||||
	_window.setParent(0);
 | 
						_window.setParent(0);
 | 
				
			||||||
	anim::stopManager();
 | 
						anim::stopManager();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -113,6 +113,8 @@ namespace Sandboxer {
 | 
				
			||||||
	void setActiveWindow(QWidget *window);
 | 
						void setActiveWindow(QWidget *window);
 | 
				
			||||||
	bool isSavingSession();
 | 
						bool isSavingSession();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void execExternal(const QString &cmd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void startUpdateCheck();
 | 
						void startUpdateCheck();
 | 
				
			||||||
| 
						 | 
					@ -174,8 +176,6 @@ public:
 | 
				
			||||||
	void checkLocalTime();
 | 
						void checkLocalTime();
 | 
				
			||||||
	void checkMapVersion();
 | 
						void checkMapVersion();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void execExternal(const QString &cmd);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
signals:
 | 
					signals:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void peerPhotoDone(PeerId peer);
 | 
						void peerPhotoDone(PeerId peer);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4320,7 +4320,7 @@ void MentionsDropdown::updateFiltered(bool resetScroll) {
 | 
				
			||||||
				if (it->emoji.isEmpty()) {
 | 
									if (it->emoji.isEmpty()) {
 | 
				
			||||||
					setsToRequest.insert(it->id, it->access);
 | 
										setsToRequest.insert(it->id, it->access);
 | 
				
			||||||
					it->flags |= MTPDstickerSet_flag_NOT_LOADED;
 | 
										it->flags |= MTPDstickerSet_flag_NOT_LOADED;
 | 
				
			||||||
				} else {
 | 
									} else if (!(it->flags & MTPDstickerSet::flag_disabled)) {
 | 
				
			||||||
					StickersByEmojiMap::const_iterator i = it->emoji.constFind(emojiGetNoColor(_emoji));
 | 
										StickersByEmojiMap::const_iterator i = it->emoji.constFind(emojiGetNoColor(_emoji));
 | 
				
			||||||
					if (i != it->emoji.cend()) {
 | 
										if (i != it->emoji.cend()) {
 | 
				
			||||||
						srows += *i;
 | 
											srows += *i;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -181,6 +181,7 @@ struct GlobalDataStruct {
 | 
				
			||||||
	int32 LangSystem = languageDefault;
 | 
						int32 LangSystem = languageDefault;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QByteArray LastCrashDump;
 | 
						QByteArray LastCrashDump;
 | 
				
			||||||
 | 
						ConnectionProxy PreLaunchProxy;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
GlobalDataStruct *GlobalData = 0;
 | 
					GlobalDataStruct *GlobalData = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -257,6 +258,8 @@ namespace Global {
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							srand((int32)time(NULL));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void finish() {
 | 
						void finish() {
 | 
				
			||||||
| 
						 | 
					@ -281,6 +284,7 @@ Type &Ref##Name() { \
 | 
				
			||||||
	DefineGlobalReadOnly(QString, LangSystemISO);
 | 
						DefineGlobalReadOnly(QString, LangSystemISO);
 | 
				
			||||||
	DefineGlobalReadOnly(int32, LangSystem);
 | 
						DefineGlobalReadOnly(int32, LangSystem);
 | 
				
			||||||
	DefineGlobal(QByteArray, LastCrashDump);
 | 
						DefineGlobal(QByteArray, LastCrashDump);
 | 
				
			||||||
 | 
						DefineGlobal(ConnectionProxy, PreLaunchProxy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -291,6 +295,10 @@ SandboxDataStruct *SandboxData = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Sandbox {
 | 
					namespace Sandbox {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool started() {
 | 
				
			||||||
 | 
							return SandboxData != 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void start() {
 | 
						void start() {
 | 
				
			||||||
		SandboxData = new SandboxDataStruct();
 | 
							SandboxData = new SandboxDataStruct();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,11 +112,13 @@ namespace Global {
 | 
				
			||||||
	DeclareGlobalReadOnly(QString, LangSystemISO);
 | 
						DeclareGlobalReadOnly(QString, LangSystemISO);
 | 
				
			||||||
	DeclareGlobalReadOnly(int32, LangSystem);
 | 
						DeclareGlobalReadOnly(int32, LangSystem);
 | 
				
			||||||
	DeclareGlobal(QByteArray, LastCrashDump);
 | 
						DeclareGlobal(QByteArray, LastCrashDump);
 | 
				
			||||||
 | 
						DeclareGlobal(ConnectionProxy, PreLaunchProxy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Sandbox {
 | 
					namespace Sandbox {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool started();
 | 
				
			||||||
	void start();
 | 
						void start();
 | 
				
			||||||
	void finish();
 | 
						void finish();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -787,11 +787,11 @@ StorageImage::StorageImage(const StorageImageLocation &location, QByteArray &byt
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int32 StorageImage::width() const {
 | 
					int32 StorageImage::countWidth() const {
 | 
				
			||||||
	return _location.width();
 | 
						return _location.width();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int32 StorageImage::height() const {
 | 
					int32 StorageImage::countHeight() const {
 | 
				
			||||||
	return _location.height();
 | 
						return _location.height();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -917,11 +917,11 @@ StorageImage *getImage(const StorageImageLocation &location, const QByteArray &b
 | 
				
			||||||
WebImage::WebImage(const QString &url) : _url(url), _size(0), _width(0), _height(0) {
 | 
					WebImage::WebImage(const QString &url) : _url(url), _size(0), _width(0), _height(0) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int32 WebImage::width() const {
 | 
					int32 WebImage::countWidth() const {
 | 
				
			||||||
	return _width;
 | 
						return _width;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int32 WebImage::height() const {
 | 
					int32 WebImage::countHeight() const {
 | 
				
			||||||
	return _height;
 | 
						return _height;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -154,14 +154,12 @@ public:
 | 
				
			||||||
	QPixmap pixColoredNoCache(const style::color &add, int32 w = 0, int32 h = 0, bool smooth = false) const;
 | 
						QPixmap pixColoredNoCache(const style::color &add, int32 w = 0, int32 h = 0, bool smooth = false) const;
 | 
				
			||||||
	QPixmap pixBlurredColoredNoCache(const style::color &add, int32 w, int32 h = 0) const;
 | 
						QPixmap pixBlurredColoredNoCache(const style::color &add, int32 w, int32 h = 0) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual int32 width() const {
 | 
						int32 width() const {
 | 
				
			||||||
		restore();
 | 
							return qMax(countWidth(), 1);
 | 
				
			||||||
		return _data.width();
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual int32 height() const {
 | 
						int32 height() const {
 | 
				
			||||||
		restore();
 | 
							return qMax(countHeight(), 1);
 | 
				
			||||||
		return _data.height();
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual void load(bool loadFirst = false, bool prior = true) {
 | 
						virtual void load(bool loadFirst = false, bool prior = true) {
 | 
				
			||||||
| 
						 | 
					@ -203,6 +201,16 @@ protected:
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	void invalidateSizeCache() const;
 | 
						void invalidateSizeCache() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual int32 countWidth() const {
 | 
				
			||||||
 | 
							restore();
 | 
				
			||||||
 | 
							return _data.width();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual int32 countHeight() const {
 | 
				
			||||||
 | 
							restore();
 | 
				
			||||||
 | 
							return _data.height();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mutable QByteArray _saved, _format;
 | 
						mutable QByteArray _saved, _format;
 | 
				
			||||||
	mutable bool _forgot;
 | 
						mutable bool _forgot;
 | 
				
			||||||
	mutable QPixmap _data;
 | 
						mutable QPixmap _data;
 | 
				
			||||||
| 
						 | 
					@ -283,9 +291,6 @@ public:
 | 
				
			||||||
	StorageImage(const StorageImageLocation &location, int32 size = 0);
 | 
						StorageImage(const StorageImageLocation &location, int32 size = 0);
 | 
				
			||||||
	StorageImage(const StorageImageLocation &location, QByteArray &bytes);
 | 
						StorageImage(const StorageImageLocation &location, QByteArray &bytes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int32 width() const;
 | 
					 | 
				
			||||||
	int32 height() const;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	virtual void setInformation(int32 size, int32 width, int32 height);
 | 
						virtual void setInformation(int32 size, int32 width, int32 height);
 | 
				
			||||||
	virtual FileLoader *createLoader(LoadFromCloudSetting fromCloud, bool autoLoading);
 | 
						virtual FileLoader *createLoader(LoadFromCloudSetting fromCloud, bool autoLoading);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -297,6 +302,9 @@ protected:
 | 
				
			||||||
	StorageImageLocation _location;
 | 
						StorageImageLocation _location;
 | 
				
			||||||
	int32 _size;
 | 
						int32 _size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual int32 countWidth() const;
 | 
				
			||||||
 | 
						virtual int32 countHeight() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DelayedStorageImage : public StorageImage {
 | 
					class DelayedStorageImage : public StorageImage {
 | 
				
			||||||
| 
						 | 
					@ -341,12 +349,14 @@ public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	WebImage(const QString &url);
 | 
						WebImage(const QString &url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int32 width() const;
 | 
					 | 
				
			||||||
	int32 height() const;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	virtual void setInformation(int32 size, int32 width, int32 height);
 | 
						virtual void setInformation(int32 size, int32 width, int32 height);
 | 
				
			||||||
	virtual FileLoader *createLoader(LoadFromCloudSetting fromCloud, bool autoLoading);
 | 
						virtual FileLoader *createLoader(LoadFromCloudSetting fromCloud, bool autoLoading);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual int32 countWidth() const;
 | 
				
			||||||
 | 
						virtual int32 countHeight() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
	QString _url;
 | 
						QString _url;
 | 
				
			||||||
	int32 _size, _width, _height;
 | 
						int32 _size, _width, _height;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,21 @@ Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "application.h"
 | 
					#include "application.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Fonts {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool Started = false;
 | 
				
			||||||
 | 
						void start() {
 | 
				
			||||||
 | 
							if (!Started) {
 | 
				
			||||||
 | 
								Started = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								QFontDatabase::addApplicationFont(qsl(":/gui/art/fonts/OpenSans-Regular.ttf"));
 | 
				
			||||||
 | 
								QFontDatabase::addApplicationFont(qsl(":/gui/art/fonts/OpenSans-Bold.ttf"));
 | 
				
			||||||
 | 
								QFontDatabase::addApplicationFont(qsl(":/gui/art/fonts/OpenSans-Semibold.ttf"));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace {
 | 
					namespace {
 | 
				
			||||||
	void _sendResizeEvents(QWidget *target) {
 | 
						void _sendResizeEvents(QWidget *target) {
 | 
				
			||||||
		QResizeEvent e(target->size(), QSize());
 | 
							QResizeEvent e(target->size(), QSize());
 | 
				
			||||||
| 
						 | 
					@ -44,7 +59,7 @@ void myEnsureResized(QWidget *target) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QPixmap myGrab(TWidget *target, QRect rect) {
 | 
					QPixmap myGrab(TWidget *target, QRect rect) {
 | 
				
			||||||
	myEnsureResized(target);    
 | 
						myEnsureResized(target);
 | 
				
			||||||
	if (rect.isNull()) rect = target->rect();
 | 
						if (rect.isNull()) rect = target->rect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    QPixmap result(rect.size() * cRetinaFactor());
 | 
					    QPixmap result(rect.size() * cRetinaFactor());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,10 @@ namespace App {
 | 
				
			||||||
	const QPixmap &sprite();
 | 
						const QPixmap &sprite();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Fonts {
 | 
				
			||||||
 | 
						void start();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Painter : public QPainter {
 | 
					class Painter : public QPainter {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	explicit Painter(QPaintDevice *device) : QPainter(device) {
 | 
						explicit Painter(QPaintDevice *device) : QPainter(device) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -552,6 +552,7 @@ namespace SignalHandlers {
 | 
				
			||||||
	FILE *CrashDumpFile = 0;
 | 
						FILE *CrashDumpFile = 0;
 | 
				
			||||||
	int CrashDumpFileNo = 0;
 | 
						int CrashDumpFileNo = 0;
 | 
				
			||||||
	char LaunchedDateTimeStr[32] = { 0 };
 | 
						char LaunchedDateTimeStr[32] = { 0 };
 | 
				
			||||||
 | 
						char LaunchedBinaryName[256] = { 0 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void _writeChar(char ch) {
 | 
						void _writeChar(char ch) {
 | 
				
			||||||
		fwrite(&ch, 1, 1, CrashDumpFile);
 | 
							fwrite(&ch, 1, 1, CrashDumpFile);
 | 
				
			||||||
| 
						 | 
					@ -628,6 +629,8 @@ namespace SignalHandlers {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!LoggingCrashHeaderWritten) {
 | 
							if (!LoggingCrashHeaderWritten) {
 | 
				
			||||||
			LoggingCrashHeaderWritten = true;
 | 
								LoggingCrashHeaderWritten = true;
 | 
				
			||||||
 | 
								dump() << "Binary: " << LaunchedBinaryName << "\n";
 | 
				
			||||||
 | 
								dump() << "ApiId: " << ApiId << "\n";
 | 
				
			||||||
			if (cBetaVersion()) {
 | 
								if (cBetaVersion()) {
 | 
				
			||||||
				dump() << "Version: " << cBetaVersion() << " beta\n";
 | 
									dump() << "Version: " << cBetaVersion() << " beta\n";
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
| 
						 | 
					@ -685,6 +688,10 @@ namespace SignalHandlers {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Status restart() {
 | 
						Status restart() {
 | 
				
			||||||
 | 
							if (CrashDumpFile) {
 | 
				
			||||||
 | 
								return Started;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		CrashDumpFile = fopen(CrashDumpPath.constData(), "wb");
 | 
							CrashDumpFile = fopen(CrashDumpPath.constData(), "wb");
 | 
				
			||||||
		if (CrashDumpFile) {
 | 
							if (CrashDumpFile) {
 | 
				
			||||||
			CrashDumpFileNo = fileno(CrashDumpFile);
 | 
								CrashDumpFileNo = fileno(CrashDumpFile);
 | 
				
			||||||
| 
						 | 
					@ -693,6 +700,10 @@ namespace SignalHandlers {
 | 
				
			||||||
			t_assert(launchedDateTime.size() < sizeof(LaunchedDateTimeStr));
 | 
								t_assert(launchedDateTime.size() < sizeof(LaunchedDateTimeStr));
 | 
				
			||||||
			memcpy(LaunchedDateTimeStr, launchedDateTime.constData(), launchedDateTime.size());
 | 
								memcpy(LaunchedDateTimeStr, launchedDateTime.constData(), launchedDateTime.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								QByteArray launchedBinaryName = cExeName().toUtf8();
 | 
				
			||||||
 | 
								t_assert(launchedBinaryName.size() < sizeof(LaunchedBinaryName));
 | 
				
			||||||
 | 
								memcpy(LaunchedBinaryName, launchedBinaryName.constData(), launchedBinaryName.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			signal(SIGABRT, SignalHandlers::Handler);
 | 
								signal(SIGABRT, SignalHandlers::Handler);
 | 
				
			||||||
			signal(SIGSEGV, SignalHandlers::Handler);
 | 
								signal(SIGSEGV, SignalHandlers::Handler);
 | 
				
			||||||
			signal(SIGILL, SignalHandlers::Handler);
 | 
								signal(SIGILL, SignalHandlers::Handler);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2221,7 +2221,7 @@ namespace {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void RegisterCustomScheme() {
 | 
					void RegisterCustomScheme() {
 | 
				
			||||||
	#ifndef TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME
 | 
					#ifndef TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME
 | 
				
			||||||
	DEBUG_LOG(("App Info: Checking custom scheme 'tg'.."));
 | 
						DEBUG_LOG(("App Info: Checking custom scheme 'tg'.."));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	HKEY rkey;
 | 
						HKEY rkey;
 | 
				
			||||||
| 
						 | 
					@ -2238,7 +2238,7 @@ void RegisterCustomScheme() {
 | 
				
			||||||
	if (!_psOpenRegKey(L"Software\\Classes\\tg\\shell\\open", &rkey)) return;
 | 
						if (!_psOpenRegKey(L"Software\\Classes\\tg\\shell\\open", &rkey)) return;
 | 
				
			||||||
	if (!_psOpenRegKey(L"Software\\Classes\\tg\\shell\\open\\command", &rkey)) return;
 | 
						if (!_psOpenRegKey(L"Software\\Classes\\tg\\shell\\open\\command", &rkey)) return;
 | 
				
			||||||
	if (!_psSetKeyValue(rkey, 0, '"' + exe + qsl("\" -workdir \"") + cWorkingDir() + qsl("\" -- \"%1\""))) return;
 | 
						if (!_psSetKeyValue(rkey, 0, '"' + exe + qsl("\" -workdir \"") + cWorkingDir() + qsl("\" -- \"%1\""))) return;
 | 
				
			||||||
	#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void psNewVersion() {
 | 
					void psNewVersion() {
 | 
				
			||||||
| 
						 | 
					@ -2840,7 +2840,7 @@ void psWriteDump() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char ImageHlpSymbol64[sizeof(IMAGEHLP_SYMBOL64) + StackEntryMaxNameLength];
 | 
					char ImageHlpSymbol64[sizeof(IMAGEHLP_SYMBOL64) + StackEntryMaxNameLength];
 | 
				
			||||||
QString _showCrashDump(const QByteArray &crashdump) {
 | 
					QString _showCrashDump(const QByteArray &crashdump, QString dumpfile) {
 | 
				
			||||||
	HANDLE hProcess = GetCurrentProcess();
 | 
						HANDLE hProcess = GetCurrentProcess();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QString initial = QString::fromUtf8(crashdump), result;
 | 
						QString initial = QString::fromUtf8(crashdump), result;
 | 
				
			||||||
| 
						 | 
					@ -2862,6 +2862,7 @@ QString _showCrashDump(const QByteArray &crashdump) {
 | 
				
			||||||
					version /= 1000;
 | 
										version /= 1000;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								++i;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -2888,8 +2889,13 @@ QString _showCrashDump(const QByteArray &crashdump) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!tolaunch.isEmpty()) {
 | 
						if (!tolaunch.isEmpty()) {
 | 
				
			||||||
		if (QFile(tolaunch).exists()) {
 | 
							if (QFile(tolaunch).exists()) {
 | 
				
			||||||
			// run it
 | 
								QString targs = qsl("-crash \"%1\"").arg(dumpfile.replace('"', qsl("\"\"")));
 | 
				
			||||||
			return QString();
 | 
								HINSTANCE r = ShellExecute(0, 0, QDir::toNativeSeparators(tolaunch).toStdWString().c_str(), targs.toStdWString().c_str(), 0, SW_SHOWNORMAL);
 | 
				
			||||||
 | 
								if (long(r) < 32) {
 | 
				
			||||||
 | 
									result.append(qsl("ERROR: executable '%1' with args '%2' for this crashdump could not be launched! Result: %3").arg(tolaunch).arg(targs).arg(long(r)));
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									return QString();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			result.append(qsl("ERROR: executable '%1' for this crashdump was not found!").arg(tolaunch));
 | 
								result.append(qsl("ERROR: executable '%1' for this crashdump was not found!").arg(tolaunch));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -3088,7 +3094,7 @@ int psShowCrash(const QString &crashdump) {
 | 
				
			||||||
		if (!LoadDbgHelp(true)) {
 | 
							if (!LoadDbgHelp(true)) {
 | 
				
			||||||
			text += qsl("ERROR: could not init dbghelp.dll!");
 | 
								text += qsl("ERROR: could not init dbghelp.dll!");
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			text += _showCrashDump(dump.readAll());
 | 
								text += _showCrashDump(dump.readAll(), crashdump);
 | 
				
			||||||
			symCleanup(GetCurrentProcess());
 | 
								symCleanup(GetCurrentProcess());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
| 
						 | 
					@ -3103,14 +3109,7 @@ int psShowCrash(const QString &crashdump) {
 | 
				
			||||||
	char *a_argv[1] = { args[0].data() };
 | 
						char *a_argv[1] = { args[0].data() };
 | 
				
			||||||
	QApplication app(a_argc, a_argv);
 | 
						QApplication app(a_argc, a_argv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QTextEdit wnd;
 | 
						ShowCrashReportWindow wnd(text);
 | 
				
			||||||
	wnd.setReadOnly(true);
 | 
					 | 
				
			||||||
	wnd.setPlainText(text);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	QRect scr(QApplication::primaryScreen()->availableGeometry());
 | 
					 | 
				
			||||||
	wnd.setGeometry(scr.x() + (scr.width() / 6), scr.y() + (scr.height() / 6), scr.width() / 2, scr.height() / 2);
 | 
					 | 
				
			||||||
	wnd.show();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return app.exec();
 | 
						return app.exec();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -200,6 +200,10 @@ void settingsParseArgs(int argc, char *argv[]) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gExeDir = psCurrentExeDirectory(argc, argv);
 | 
						gExeDir = psCurrentExeDirectory(argc, argv);
 | 
				
			||||||
	gExeName = psCurrentExeName(argc, argv);
 | 
						gExeName = psCurrentExeName(argc, argv);
 | 
				
			||||||
 | 
						if (argc == 2 && fromUtf8Safe(argv[1]).endsWith(qstr(".telegramcrash")) && QFile(fromUtf8Safe(argv[1])).exists()) {
 | 
				
			||||||
 | 
							gLaunchMode = LaunchModeShowCrash;
 | 
				
			||||||
 | 
							gStartUrl = fromUtf8Safe(argv[1]);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    for (int32 i = 0; i < argc; ++i) {
 | 
					    for (int32 i = 0; i < argc; ++i) {
 | 
				
			||||||
		if (string("-testmode") == argv[i]) {
 | 
							if (string("-testmode") == argv[i]) {
 | 
				
			||||||
			gTestMode = true;
 | 
								gTestMode = true;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -329,7 +329,7 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : TWidget(parent)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	updateOnlineDisplay();
 | 
						updateOnlineDisplay();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
	switch (Sandboxer::updatingState()) {
 | 
						switch (Sandboxer::updatingState()) {
 | 
				
			||||||
	case Application::UpdatingDownload:
 | 
						case Application::UpdatingDownload:
 | 
				
			||||||
		setUpdatingState(UpdatingDownload, true);
 | 
							setUpdatingState(UpdatingDownload, true);
 | 
				
			||||||
| 
						 | 
					@ -338,9 +338,7 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : TWidget(parent)
 | 
				
			||||||
	case Application::UpdatingReady: setUpdatingState(UpdatingReady, true); break;
 | 
						case Application::UpdatingReady: setUpdatingState(UpdatingReady, true); break;
 | 
				
			||||||
	default: setUpdatingState(UpdatingNone, true); break;
 | 
						default: setUpdatingState(UpdatingNone, true); break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	#else
 | 
					#endif
 | 
				
			||||||
	_updatingState = UpdatingNone;
 | 
					 | 
				
			||||||
	#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	updateConnectionType();
 | 
						updateConnectionType();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1284,7 +1282,7 @@ void SettingsInner::onCheckNow() {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SettingsInner::onRestartNow() {
 | 
					void SettingsInner::onRestartNow() {
 | 
				
			||||||
	#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
	checkReadyUpdate();
 | 
						checkReadyUpdate();
 | 
				
			||||||
	if (_updatingState == UpdatingReady) {
 | 
						if (_updatingState == UpdatingReady) {
 | 
				
			||||||
		cSetRestartingUpdate(true);
 | 
							cSetRestartingUpdate(true);
 | 
				
			||||||
| 
						 | 
					@ -1292,10 +1290,10 @@ void SettingsInner::onRestartNow() {
 | 
				
			||||||
		cSetRestarting(true);
 | 
							cSetRestarting(true);
 | 
				
			||||||
		cSetRestartingToSettings(true);
 | 
							cSetRestartingToSettings(true);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	#else
 | 
					#else
 | 
				
			||||||
	cSetRestarting(true);
 | 
						cSetRestarting(true);
 | 
				
			||||||
	cSetRestartingToSettings(true);
 | 
						cSetRestartingToSettings(true);
 | 
				
			||||||
	#endif
 | 
					#endif
 | 
				
			||||||
	App::quit();
 | 
						App::quit();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -233,6 +233,7 @@ private:
 | 
				
			||||||
	QString _curVersionText, _newVersionText;
 | 
						QString _curVersionText, _newVersionText;
 | 
				
			||||||
	int32 _curVersionWidth, _newVersionWidth;
 | 
						int32 _curVersionWidth, _newVersionWidth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
	enum UpdatingState {
 | 
						enum UpdatingState {
 | 
				
			||||||
		UpdatingNone,
 | 
							UpdatingNone,
 | 
				
			||||||
		UpdatingCheck,
 | 
							UpdatingCheck,
 | 
				
			||||||
| 
						 | 
					@ -243,6 +244,7 @@ private:
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
	UpdatingState _updatingState;
 | 
						UpdatingState _updatingState;
 | 
				
			||||||
	QString _newVersionDownload;
 | 
						QString _newVersionDownload;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// chat options
 | 
						// chat options
 | 
				
			||||||
	FlatCheckbox _replaceEmojis;
 | 
						FlatCheckbox _replaceEmojis;
 | 
				
			||||||
| 
						 | 
					@ -296,12 +298,10 @@ private:
 | 
				
			||||||
	void offPasswordDone(const MTPBool &result);
 | 
						void offPasswordDone(const MTPBool &result);
 | 
				
			||||||
	bool offPasswordFail(const RPCError &error);
 | 
						bool offPasswordFail(const RPCError &error);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
	void setUpdatingState(UpdatingState state, bool force = false);
 | 
						void setUpdatingState(UpdatingState state, bool force = false);
 | 
				
			||||||
	void setDownloadProgress(qint64 ready, qint64 total);
 | 
						void setDownloadProgress(qint64 ready, qint64 total);
 | 
				
			||||||
	#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SettingsWidget : public TWidget {
 | 
					class SettingsWidget : public TWidget {
 | 
				
			||||||
| 
						 | 
					@ -338,7 +338,7 @@ public:
 | 
				
			||||||
public slots:
 | 
					public slots:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void onParentResize(const QSize &newSize);
 | 
						void onParentResize(const QSize &newSize);
 | 
				
			||||||
	
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void showAll();
 | 
						void showAll();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,6 +42,7 @@ Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org
 | 
				
			||||||
#include <QtNetwork/QNetworkProxy>
 | 
					#include <QtNetwork/QNetworkProxy>
 | 
				
			||||||
#include <QtNetwork/QLocalSocket>
 | 
					#include <QtNetwork/QLocalSocket>
 | 
				
			||||||
#include <QtNetwork/QLocalServer>
 | 
					#include <QtNetwork/QLocalServer>
 | 
				
			||||||
 | 
					#include <QtNetwork/QHttpMultiPart>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef Q_OS_WIN // use Lzma SDK for win
 | 
					#ifdef Q_OS_WIN // use Lzma SDK for win
 | 
				
			||||||
#include <LzmaLib.h>
 | 
					#include <LzmaLib.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,12 +148,13 @@ UpdateBtn::UpdateBtn(QWidget *parent, Window *window, const QString &text) : Sys
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void UpdateBtn::onClick() {
 | 
					void UpdateBtn::onClick() {
 | 
				
			||||||
	#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
	checkReadyUpdate();
 | 
						checkReadyUpdate();
 | 
				
			||||||
	#endif
 | 
					 | 
				
			||||||
	if (Sandboxer::updatingState() == Application::UpdatingReady) {
 | 
						if (Sandboxer::updatingState() == Application::UpdatingReady) {
 | 
				
			||||||
		cSetRestartingUpdate(true);
 | 
							cSetRestartingUpdate(true);
 | 
				
			||||||
	} else {
 | 
						} else
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
		cSetRestarting(true);
 | 
							cSetRestarting(true);
 | 
				
			||||||
		cSetRestartingToSettings(false);
 | 
							cSetRestartingToSettings(false);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,7 +73,12 @@ TitleWidget::TitleWidget(Window *window) : TWidget(window)
 | 
				
			||||||
	_update.hide();
 | 
						_update.hide();
 | 
				
			||||||
    _cancel.hide();
 | 
					    _cancel.hide();
 | 
				
			||||||
    _back.hide();
 | 
					    _back.hide();
 | 
				
			||||||
	if (Sandboxer::updatingState() == Application::UpdatingReady || cHasPasscode()) {
 | 
						if (
 | 
				
			||||||
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
 | 
							Sandboxer::updatingState() == Application::UpdatingReady ||
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							cHasPasscode()
 | 
				
			||||||
 | 
						) {
 | 
				
			||||||
		showUpdateBtn();
 | 
							showUpdateBtn();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	stateChanged();
 | 
						stateChanged();
 | 
				
			||||||
| 
						 | 
					@ -322,7 +327,11 @@ void TitleWidget::showUpdateBtn() {
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		_lock.hide();
 | 
							_lock.hide();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
	bool updateReady = (Sandboxer::updatingState() == Application::UpdatingReady);
 | 
						bool updateReady = (Sandboxer::updatingState() == Application::UpdatingReady);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						bool updateReady = false;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	if (updateReady || cEvalScale(cConfigScale()) != cEvalScale(cRealScale())) {
 | 
						if (updateReady || cEvalScale(cConfigScale()) != cEvalScale(cRealScale())) {
 | 
				
			||||||
		_update.setText(lang(updateReady ? lng_menu_update : lng_menu_restart));
 | 
							_update.setText(lang(updateReady ? lng_menu_update : lng_menu_restart));
 | 
				
			||||||
		_update.show();
 | 
							_update.show();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -18,8 +18,7 @@ to link the code of portions of this program with the OpenSSL library.
 | 
				
			||||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
 | 
					Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
 | 
				
			||||||
Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org
 | 
					Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#ifndef MAINWINDOW_H
 | 
					#pragma once
 | 
				
			||||||
#define MAINWINDOW_H
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "title.h"
 | 
					#include "title.h"
 | 
				
			||||||
#include "pspecific.h"
 | 
					#include "pspecific.h"
 | 
				
			||||||
| 
						 | 
					@ -353,7 +352,47 @@ private:
 | 
				
			||||||
	MediaView *_mediaView;
 | 
						MediaView *_mediaView;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NotStartedWindow : public TWidget {
 | 
					class PreLaunchWindow : public TWidget {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PreLaunchWindow(QString title = QString());
 | 
				
			||||||
 | 
						void activate();
 | 
				
			||||||
 | 
						float64 basicSize() const {
 | 
				
			||||||
 | 
							return _size;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						~PreLaunchWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						static PreLaunchWindow *instance();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						float64 _size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PreLaunchLabel : public QLabel {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						PreLaunchLabel(QWidget *parent);
 | 
				
			||||||
 | 
						void setText(const QString &text);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PreLaunchInput : public QLineEdit {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						PreLaunchInput(QWidget *parent, bool password = false);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PreLaunchLog : public QTextEdit {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						PreLaunchLog(QWidget *parent);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PreLaunchButton : public QPushButton {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						PreLaunchButton(QWidget *parent, bool confirm = true);
 | 
				
			||||||
 | 
						void setText(const QString &text);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class NotStartedWindow : public PreLaunchWindow {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	NotStartedWindow();
 | 
						NotStartedWindow();
 | 
				
			||||||
| 
						 | 
					@ -365,16 +404,48 @@ protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QLabel _label;
 | 
						void updateControls();
 | 
				
			||||||
	QTextEdit _log;
 | 
					
 | 
				
			||||||
 | 
						PreLaunchLabel _label;
 | 
				
			||||||
 | 
						PreLaunchLog _log;
 | 
				
			||||||
 | 
						PreLaunchButton _close;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LastCrashedWindow : public TWidget {
 | 
					class LastCrashedWindow : public PreLaunchWindow {
 | 
				
			||||||
 | 
						 Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	LastCrashedWindow();
 | 
						LastCrashedWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void onViewReport();
 | 
				
			||||||
 | 
						void onSaveReport();
 | 
				
			||||||
 | 
						void onSendReport();
 | 
				
			||||||
 | 
						void onGetApp();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void onNetworkSettings();
 | 
				
			||||||
 | 
						void onNetworkSettingsSaved(QString host, quint32 port, QString username, QString password);
 | 
				
			||||||
 | 
						void onContinue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void onCheckingFinished();
 | 
				
			||||||
 | 
						void onSendingError(QNetworkReply::NetworkError e);
 | 
				
			||||||
 | 
						void onSendingFinished();
 | 
				
			||||||
 | 
						void onSendingProgress(qint64 uploaded, qint64 total);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
 | 
						void onUpdateRetry();
 | 
				
			||||||
 | 
						void onUpdateSkip();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void onUpdateChecking();
 | 
				
			||||||
 | 
						void onUpdateLatest();
 | 
				
			||||||
 | 
						void onUpdateDownloading(qint64 ready, qint64 total);
 | 
				
			||||||
 | 
						void onUpdateReady();
 | 
				
			||||||
 | 
						void onUpdateFailed();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void closeEvent(QCloseEvent *e);
 | 
						void closeEvent(QCloseEvent *e);
 | 
				
			||||||
| 
						 | 
					@ -382,10 +453,103 @@ protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QLabel _label;
 | 
						void updateControls();
 | 
				
			||||||
	QTextEdit _log;
 | 
					
 | 
				
			||||||
	QPushButton _send;
 | 
						QString _host, _username, _password;
 | 
				
			||||||
 | 
						quint32 _port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PreLaunchLabel _label, _pleaseSendReport, _minidump;
 | 
				
			||||||
 | 
						PreLaunchLog _report;
 | 
				
			||||||
 | 
						PreLaunchButton _send, _sendSkip, _networkSettings, _continue, _showReport, _saveReport, _getApp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						QString _minidumpName, _minidumpFull, _reportText;
 | 
				
			||||||
 | 
						bool _reportShown, _reportSaved;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						enum SendingState {
 | 
				
			||||||
 | 
							SendingNoReport,
 | 
				
			||||||
 | 
							SendingUpdateCheck,
 | 
				
			||||||
 | 
							SendingNone,
 | 
				
			||||||
 | 
							SendingTooOld,
 | 
				
			||||||
 | 
							SendingTooMany,
 | 
				
			||||||
 | 
							SendingUnofficial,
 | 
				
			||||||
 | 
							SendingProgress,
 | 
				
			||||||
 | 
							SendingUploading,
 | 
				
			||||||
 | 
							SendingFail,
 | 
				
			||||||
 | 
							SendingDone,
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						SendingState _sendingState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PreLaunchLabel _updating;
 | 
				
			||||||
 | 
						qint64 _sendingProgress, _sendingTotal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						QNetworkAccessManager _sendManager;
 | 
				
			||||||
 | 
						QNetworkReply *_checkReply, *_sendReply;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef TDESKTOP_DISABLE_AUTOUPDATE
 | 
				
			||||||
 | 
						PreLaunchButton _updatingCheck, _updatingSkip;
 | 
				
			||||||
 | 
						enum UpdatingState {
 | 
				
			||||||
 | 
							UpdatingNone,
 | 
				
			||||||
 | 
							UpdatingCheck,
 | 
				
			||||||
 | 
							UpdatingLatest,
 | 
				
			||||||
 | 
							UpdatingDownload,
 | 
				
			||||||
 | 
							UpdatingFail,
 | 
				
			||||||
 | 
							UpdatingReady
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						UpdatingState _updatingState;
 | 
				
			||||||
 | 
						QString _newVersionDownload;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void setUpdatingState(UpdatingState state, bool force = false);
 | 
				
			||||||
 | 
						void setDownloadProgress(qint64 ready, qint64 total);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						QString getReportField(const QLatin1String &name, const QLatin1String &prefix);
 | 
				
			||||||
 | 
						void addReportFieldPart(const QLatin1String &name, const QLatin1String &prefix, QHttpMultiPart *multipart);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // MAINWINDOW_H
 | 
					class NetworkSettingsWindow : public PreLaunchWindow {
 | 
				
			||||||
 | 
						Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						NetworkSettingsWindow(QWidget *parent, QString host, quint32 port, QString username, QString password);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					signals:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void saved(QString host, quint32 port, QString username, QString password);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void onSave();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void closeEvent(QCloseEvent *e);
 | 
				
			||||||
 | 
						void resizeEvent(QResizeEvent *e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void updateControls();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PreLaunchLabel _hostLabel, _portLabel, _usernameLabel, _passwordLabel;
 | 
				
			||||||
 | 
						PreLaunchInput _hostInput, _portInput, _usernameInput, _passwordInput;
 | 
				
			||||||
 | 
						PreLaunchButton _save, _cancel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						QWidget *_parent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ShowCrashReportWindow : public PreLaunchWindow {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ShowCrashReportWindow(const QString &text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void resizeEvent(QResizeEvent *e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PreLaunchLog _log;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1053,8 +1053,14 @@
 | 
				
			||||||
    <ClCompile Include="SourceFiles\title.cpp" />
 | 
					    <ClCompile Include="SourceFiles\title.cpp" />
 | 
				
			||||||
    <ClCompile Include="SourceFiles\types.cpp" />
 | 
					    <ClCompile Include="SourceFiles\types.cpp" />
 | 
				
			||||||
    <ClCompile Include="SourceFiles\window.cpp" />
 | 
					    <ClCompile Include="SourceFiles\window.cpp" />
 | 
				
			||||||
 | 
					    <ClCompile Include="SourceFiles\_other\zip.c">
 | 
				
			||||||
 | 
					      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
 | 
				
			||||||
 | 
					    </ClCompile>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <ClInclude Include="SourceFiles\_other\crypt.h" />
 | 
				
			||||||
 | 
					    <ClInclude Include="SourceFiles\_other\ioapi.h" />
 | 
				
			||||||
 | 
					    <ClInclude Include="SourceFiles\_other\zip.h" />
 | 
				
			||||||
    <CustomBuild Include="SourceFiles\types.h">
 | 
					    <CustomBuild Include="SourceFiles\types.h">
 | 
				
			||||||
      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
 | 
					      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
 | 
				
			||||||
      <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing types.h...</Message>
 | 
					      <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing types.h...</Message>
 | 
				
			||||||
| 
						 | 
					@ -1630,7 +1636,7 @@
 | 
				
			||||||
      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
 | 
					      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
 | 
				
			||||||
      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing history.h...</Message>
 | 
					      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing history.h...</Message>
 | 
				
			||||||
      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
 | 
					      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
 | 
				
			||||||
      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/history.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
 | 
					      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
 | 
				
			||||||
      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing history.h...</Message>
 | 
					      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing history.h...</Message>
 | 
				
			||||||
      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
 | 
					      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
 | 
				
			||||||
      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
 | 
					      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -897,6 +897,9 @@
 | 
				
			||||||
    <ClCompile Include="GeneratedFiles\Release\moc_history.cpp">
 | 
					    <ClCompile Include="GeneratedFiles\Release\moc_history.cpp">
 | 
				
			||||||
      <Filter>Generated Files\Release</Filter>
 | 
					      <Filter>Generated Files\Release</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
 | 
					    <ClCompile Include="SourceFiles\_other\zip.c">
 | 
				
			||||||
 | 
					      <Filter>Generated Files</Filter>
 | 
				
			||||||
 | 
					    </ClCompile>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClInclude Include="SourceFiles\stdafx.h">
 | 
					    <ClInclude Include="SourceFiles\stdafx.h">
 | 
				
			||||||
| 
						 | 
					@ -986,6 +989,15 @@
 | 
				
			||||||
    <ClInclude Include="SourceFiles\facades.h">
 | 
					    <ClInclude Include="SourceFiles\facades.h">
 | 
				
			||||||
      <Filter>Source Files</Filter>
 | 
					      <Filter>Source Files</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="SourceFiles\_other\zip.h">
 | 
				
			||||||
 | 
					      <Filter>Generated Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="SourceFiles\_other\ioapi.h">
 | 
				
			||||||
 | 
					      <Filter>Generated Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="SourceFiles\_other\crypt.h">
 | 
				
			||||||
 | 
					      <Filter>Generated Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <CustomBuild Include="SourceFiles\mtproto\mtpConnection.h">
 | 
					    <CustomBuild Include="SourceFiles\mtproto\mtpConnection.h">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue