skins/AknSkins/sdcsrc/SDCMain.cpp
changeset 50 c6286dcf6040
parent 0 05e9090e2422
child 53 8f0f421d3d0f
equal deleted inserted replaced
43:1951b3078691 50:c6286dcf6040
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
    20 
    20 
    21 #include <stdlib.h>
    21 #include <sys/time.h>
    22 #include <string.h>
    22 #include <unistd.h>
    23 #include <windows.h>
    23 #include <cstdlib>
       
    24 #include <string>
    24 
    25 
    25 #include "SDCGlobals.h"
    26 #include "SDCGlobals.h"
    26 #include "SDCReader.h"
    27 #include "SDCReader.h"
    27 #include "SDCMBMOutput.h"
    28 #include "SDCMBMOutput.h"
    28 #include "SDCInlOutput.h"
    29 #include "SDCInlOutput.h"
    29 #include "SDCBinOutput.h"
    30 #include "SDCBinOutput.h"
    30 #include "SDCPkgOutput.h"
    31 #include "SDCPkgOutput.h"
    31 #include "SDCIIDConstants.h"
    32 #include "SDCIIDConstants.h"
    32 #include "SDCDebugOutput.h"
    33 #include "SDCDebugOutput.h"
       
    34 #include "SDCCompat.h"
    33 
    35 
    34 // LOCAL VARIABLES
    36 // LOCAL VARIABLES
    35 
    37 
    36 static char sourceFile[512];
    38 static char sourceFile[512];
    37 static char skinName[512];
    39 static char skinName[512];
   104     strcpy( iidFile, "" );
   106     strcpy( iidFile, "" );
   105 
   107 
   106     int fileParam = 0;
   108     int fileParam = 0;
   107     for( int i=1; i<argc; i++ )
   109     for( int i=1; i<argc; i++ )
   108         {
   110         {
   109         if( stricmp( "--drm", argv[i] ) == 0 )
   111         if( sd_strcasecmp( "--drm", argv[i] ) == 0 )
   110             {
   112             {
   111             drmEnabled = true;
   113             drmEnabled = true;
   112             }
   114             }
   113         else if( stricmp( "--forcesystem", argv[i] ) == 0 )
   115         else if( sd_strcasecmp( "--forcesystem", argv[i] ) == 0 )
   114             {
   116             {
   115             forceSystem = true;
   117             forceSystem = true;
   116             }
   118             }
   117         else if( stricmp( "--forcenormal", argv[i] ) == 0 )
   119         else if( sd_strcasecmp( "--forcenormal", argv[i] ) == 0 )
   118             {
   120             {
   119             forceNormal = true;
   121             forceNormal = true;
   120             }
   122             }
   121         else if( strnicmp( "-m", argv[i], 2 ) == 0 )
   123         else if( sd_strncasecmp( "-m", argv[i], 2 ) == 0 )
   122             {
   124             {
   123             strcpy( mbmPath, argv[i]+2 );
   125             strcpy( mbmPath, argv[i]+2 );
   124             AppendBackslash( mbmPath );
   126             AppendBackslash( mbmPath );
   125             }
   127             }
   126         else if( strnicmp( "-t", argv[i], 2 ) == 0 )
   128         else if( sd_strncasecmp( "-t", argv[i], 2 ) == 0 )
   127             {
   129             {
   128             strcpy( sknPath, argv[i]+2 );
   130             strcpy( sknPath, argv[i]+2 );
   129             AppendBackslash( sknPath );
   131             AppendBackslash( sknPath );
   130             }
   132             }
   131         else if( strnicmp( "-s", argv[i], 2 ) == 0 )
   133         else if( sd_strncasecmp( "-s", argv[i], 2 ) == 0 )
   132             {
   134             {
   133             strcpy( dllPath, argv[i]+2 );
   135             strcpy( dllPath, argv[i]+2 );
   134             AppendBackslash( dllPath );
   136             AppendBackslash( dllPath );
   135             }
   137             }
   136         else if( strnicmp( "-i", argv[i], 2 ) == 0 )
   138         else if( sd_strncasecmp( "-i", argv[i], 2 ) == 0 )
   137             {
   139             {
   138             strcpy( iidFile, argv[i]+2 );
   140             strcpy( iidFile, argv[i]+2 );
   139             }
   141             }
   140         else
   142         else
   141             {
   143             {
   160 // GeneratePID
   162 // GeneratePID
   161 //////////////////////////////////////////////////////////////////////
   163 //////////////////////////////////////////////////////////////////////
   162 
   164 
   163 void GeneratePID( CSDCData* data )
   165 void GeneratePID( CSDCData* data )
   164     {
   166     {
   165     SYSTEMTIME sysTime;
   167 	struct timeval sysTime;
   166     GetSystemTime( &sysTime );
   168 	gettimeofday( &sysTime, NULL);
   167     FILETIME fileTime;
   169 	// 100-nanosecond
   168     SystemTimeToFileTime( &sysTime, &fileTime );
   170 	unsigned long long currentTime;
   169     ULARGE_INTEGER currentTime;
   171 	// get the 100-nanosecond number at time of UTC
   170     currentTime.LowPart = fileTime.dwLowDateTime;
   172 	currentTime = ( sysTime.tv_usec + mktime(gmtime(&sysTime.tv_sec)) * SEC_TO_USEC ) * USEC_TO_100NANOSEC;
   171     currentTime.HighPart = fileTime.dwHighDateTime;
   173 
   172 
   174 	struct tm startTime;
   173     sysTime.wYear = 2003;
   175 	// initialize startTime
   174     sysTime.wMonth = 1;
   176 	memset(&startTime,0,sizeof(startTime));
   175     sysTime.wDay = 1;
   177 	startTime.tm_year = 2003 - 1900;
   176     sysTime.wHour = 0;
   178 	startTime.tm_mon = 0;
   177     sysTime.wMinute = 0;
   179 	startTime.tm_mday = 1;
   178     sysTime.wSecond = 0;
   180 	startTime.tm_hour = 0;
   179     sysTime.wMilliseconds = 0;
   181 	startTime.tm_min = 0;
   180     SystemTimeToFileTime( &sysTime, &fileTime );
   182 	startTime.tm_sec = 0;
   181     ULARGE_INTEGER epochTime;
   183 	time_t secTime = mktime( &startTime );
   182     epochTime.LowPart = fileTime.dwLowDateTime;
   184 	// 100-nanosecond
   183     epochTime.HighPart = fileTime.dwHighDateTime;
   185 	unsigned long long epochTime;
   184 
   186 	// get the 100-nanosecond number at time @20030101 00:00:00
   185     ULARGE_INTEGER timeStamp;
   187 	epochTime = ( secTime * SEC_TO_USEC ) * USEC_TO_100NANOSEC;
   186     timeStamp.QuadPart = currentTime.QuadPart - epochTime.QuadPart;
   188 
   187     timeStamp.QuadPart = timeStamp.QuadPart >> 20;
   189 	unsigned long long timeStamp;
   188 
   190 	timeStamp = currentTime - epochTime;
   189     srand( gInput.iHash ^ currentTime.HighPart ^ currentTime.LowPart );
   191 	timeStamp = timeStamp >> 20;
   190 
   192 
   191     // Timestamp
   193 	unsigned int highPart = static_cast<unsigned int>((currentTime >> 32) );
   192     data->iPid.iPID2 = timeStamp.LowPart;
   194 	unsigned int lowPart = static_cast<unsigned int>( currentTime );
   193     if( data->iPid.iPID2 == 0 ) data->iPid.iPID2 += 1;
   195 	srand( gInput.iHash ^ highPart ^ lowPart );
   194 
   196 
   195     // Random number
   197 	// Timestamp
   196     data->iPid.iPID1 = rand();
   198 	data->iPid.iPID2 = static_cast<int>(timeStamp);
   197     data->iPid.iPID1 = data->iPid.iPID1 << 8;
   199 	if( data->iPid.iPID2 == 0 ) data->iPid.iPID2 += 1;
   198     data->iPid.iPID1 ^= rand();
   200 
   199     data->iPid.iPID1 = data->iPid.iPID1 << 8;
   201 	// Random number
   200     data->iPid.iPID1 ^= rand();
   202 	data->iPid.iPID1 = rand();
   201     data->iPid.iPID1 = data->iPid.iPID1 << 8;
   203 	data->iPid.iPID1 = data->iPid.iPID1 << 8;
   202     data->iPid.iPID1 ^= rand();
   204 	data->iPid.iPID1 ^= rand();
       
   205 	data->iPid.iPID1 = data->iPid.iPID1 << 8;
       
   206 	data->iPid.iPID1 ^= rand();
       
   207 	data->iPid.iPID1 = data->iPid.iPID1 << 8;
       
   208 	data->iPid.iPID1 ^= rand();
       
   209 
   203     }
   210     }
   204 
   211 
   205 //////////////////////////////////////////////////////////////////////
   212 //////////////////////////////////////////////////////////////////////
   206 // Main function
   213 // Main function
   207 //////////////////////////////////////////////////////////////////////
   214 //////////////////////////////////////////////////////////////////////