Subversion Repositories spk

Rev

Rev 1 | Rev 7 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1 Rev 4
Line 3... Line 3...
3
#ifndef _INCLUDE7ZIP
3
#ifndef _INCLUDE7ZIP
4
#include <ansi7zip/7Decoder.h>
4
#include <ansi7zip/7Decoder.h>
5
#endif
5
#endif
6
 
6
 
7
#include <MultiSpkFile.h>
7
#include <MultiSpkFile.h>
-
 
8
#include "../../HiP/HiP.h"
8
 
9
 
9
 
10
 
10
#ifdef _DEBUG
11
#ifdef _DEBUG
11
#define CLEANUP fclose ( id ); if ( data ) delete data; if ( uncomprData ) delete uncomprData; if ( !removeFile.Empty() ) remove ( removeFile.c_str() ); char pause; printf ( "Press Enter to Close\n" ); scanf ( "%c", &pause );
12
#define CLEANUP fclose ( id ); if ( data ) delete data; if ( uncomprData ) delete uncomprData; if ( !removeFile.Empty() ) remove ( removeFile.c_str() ); char pause; printf ( "Press Enter to Close\n" ); scanf ( "%c", &pause );
12
#else
13
#else
13
#define CLEANUP fclose ( id ); if ( data ) delete data; if ( uncomprData ) delete uncomprData; if ( !removeFile.Empty() ) remove ( removeFile.c_str() ); 
14
#define CLEANUP fclose ( id ); if ( data ) delete data; if ( uncomprData ) delete uncomprData; if ( !removeFile.Empty() ) remove ( removeFile.c_str() ); 
14
#endif
15
#endif
15
 
16
 
16
char *ReadNextLine ( char *data, long *len, String *str )
17
char *ReadNextLine ( char *data, long *len, CyString *str )
17
{
18
{
18
	int pos = 0;
19
	int pos = 0;
19
	bool end = false;
20
	bool end = false;
20
	while ( pos < *len )
21
	while ( pos < *len )
21
	{
22
	{
Line 42... Line 43...
42
	*len -= (pos + 1);
43
	*len -= (pos + 1);
43
 
44
 
44
	return data + (pos + 1);
45
	return data + (pos + 1);
45
}
46
}
46
 
47
 
47
char *LineByLineRead ( char *data, long *len, String end, String *readData )
48
char *LineByLineRead ( char *data, long *len, CyString end, CyString *readData )
48
{
49
{
49
	String line;
50
	CyString line;
50
	while ( true )
51
	while ( true )
51
	{
52
	{
52
		data = ReadNextLine ( data, len, &line );
53
		data = ReadNextLine ( data, len, &line );
53
 
54
 
54
		if ( line == end )
55
		if ( line == end )
Line 59... Line 60...
59
	return data;
60
	return data;
60
}
61
}
61
 
62
 
62
int main ( int argc, char **argv )
63
int main ( int argc, char **argv )
63
{
64
{
64
	String filename ( argv[0] );
65
	CyString filename ( argv[0] );
65
	filename = filename.GetToken ( filename.NumToken ( '\\' ), '\\' );
66
	filename = filename.GetToken ( filename.NumToken ( '\\' ), '\\' );
66
 
67
 
67
	printf ( "SPKConvert V1.10 (SPK VERSION %.2f) 28/07/2007 by Cycrow\n", FILEVERSION );
68
	printf ( "SPKConvert V1.10 (SPK VERSION %.2f) 28/07/2007 by Cycrow\n", FILEVERSION );
68
 
69
 
69
	if ( argc < 3 )
70
	if ( argc < 3 )
70
	{
71
	{
71
		printf ( "Syntax, %s <oldspkfile> <newspkfile>\n", filename.c_str() );
72
		printf ( "Syntax, %s <oldspkfile> <newspkfile>\n", filename.c_str() );
72
		exit ( 1 );
73
		exit ( 1 );
73
	}
74
	}
74
 
75
 
75
	String oldfile ( argv[1] );
76
	CyString oldfile ( argv[1] );
76
	String newfile ( argv[2] );
77
	CyString newfile ( argv[2] );
77
 
78
 
-
 
79
 
78
	if ( CBaseFile::CheckFile ( oldfile ) != SPKFILE_INVALID )
80
	int ret = CBaseFile::CheckFile ( oldfile );
-
 
81
	if ( ret != SPKFILE_INVALID && ret != SPKFILE_OLD )
79
	{
82
	{
80
		printf ( "Spk file is already in the new format, unable to convert\n" );
83
		printf ( "Spk file is already in the new format, unable to convert\n" );
81
		exit ( 1 );
84
		exit ( 1 );
82
	}
85
	}
83
 
86
 
Line 88... Line 91...
88
		printf ( "Unable to open file: %s\n", argv[1] );
91
		printf ( "Unable to open file: %s\n", argv[1] );
89
		exit ( 0 );
92
		exit ( 0 );
90
	}
93
	}
91
 
94
 
92
	// read the first 3 charaters
95
	// read the first 3 charaters
93
	String check = (char)fgetc ( id );
96
	CyString check = (char)fgetc ( id );
94
	check += (char)fgetc ( id );
97
	check += (char)fgetc ( id );
95
	check += (char)fgetc ( id );
98
	check += (char)fgetc ( id );
96
 
99
 
97
	String removeFile;
100
	CyString removeFile;
98
 
101
 
99
	unsigned char *uncomprData = NULL;
102
	unsigned char *uncomprData = NULL;
100
	unsigned char *data = NULL;
103
	unsigned char *data = NULL;
101
	long len = 0, newlen = 0;
104
	long len = 0, newlen = 0;
102
 
105
 
103
	MyProgress *progress = new MyProgress ( 0 );
106
	MyProgress *progress = new MyProgress ( 0 );
104
#ifdef _INCLUDE7ZIP
-
 
-
 
107
 
105
	if ( check == "HiP" )
108
	if ( check == "HiP" )
106
	{
109
	{
107
		fclose ( id );
110
		fclose ( id );
108
		bool opened = false;
111
		bool opened = false;
109
		if ( DecompressFile ( argv[1], "uncompr.tmp" ) )
112
		if ( DecompressFile ( argv[1], "uncompr.tmp" ) )
110
		{
113
		{
111
			removeFile = "uncompr.tmp";
114
			removeFile = "uncompr.tmp";
112
			id = fopen ( "uncompr.tmp", "r" );
115
			id = fopen ( "uncompr.tmp", "r" );
113
			if ( id )
116
			if ( id )
114
				opened = true;
117
				opened = true;
115
		}
118
		}
Line 133... Line 136...
133
		fread ( uncomprData, sizeof(unsigned char), len, id );
136
		fread ( uncomprData, sizeof(unsigned char), len, id );
134
 
137
 
135
		newlen = len;
138
		newlen = len;
136
	}
139
	}
137
	else
140
	else
138
#endif
-
 
139
	{
141
	{
140
		printf ( "* Reading file into memory... " );
142
		printf ( "* Reading file into memory... " );
141
		// get file length
143
		// get file length
142
		fseek ( id, 0, SEEK_END );
144
		fseek ( id, 0, SEEK_END );
143
		len = ftell ( id );
145
		len = ftell ( id );
Line 171... Line 173...
171
 
173
 
172
	printf ( "< (Done)\n" );
174
	printf ( "< (Done)\n" );
173
 
175
 
174
	// now we can read the data
176
	// now we can read the data
175
	char *d = (char *)uncomprData;
177
	char *d = (char *)uncomprData;
176
	String str;
178
	CyString str;
177
	CSpkFile *spkfile = new CSpkFile;
179
	CSpkFile *spkfile = new CSpkFile;
178
	CMultiSpkFile *mspk = NULL;
180
	CMultiSpkFile *mspk = NULL;
179
	SMultiSpkFile *cur_mspk = NULL;
181
	SMultiSpkFile *cur_mspk = NULL;
180
 
182
 
181
	int numscripts = 0, curscript = 0;
183
	int numscripts = 0, curscript = 0;
Line 189... Line 191...
189
 
191
 
190
	while ( (d) && (len > 0) )
192
	while ( (d) && (len > 0) )
191
	{
193
	{
192
		d = ReadNextLine ( d, &len, &str );
194
		d = ReadNextLine ( d, &len, &str );
193
 
195
 
194
		String first = str.GetToken ( 1, ' ' );
196
		CyString first = str.GetToken ( 1, ' ' );
195
		String rest = str.GetToken ( 2, -1, ' ' );
197
		CyString rest = str.GetToken ( 2, -1, ' ' );
196
		if ( first == "MultiPackage:" )
198
		if ( first == "MultiPackage:" )
197
			mspk = new CMultiSpkFile;
199
			mspk = new CMultiSpkFile;
198
		else if ( (first == "SelectScript:") && (mspk) )
200
		else if ( (first == "SelectScript:") && (mspk) )
199
		{
201
		{
200
			mspk->AddFileEntry ( rest.GetToken ( 2, -1, ' ' ) + ".spk" );
202
			mspk->AddFileEntry ( rest.GetToken ( 2, -1, ' ' ) + ".spk" );
Line 211... Line 213...
211
				exit ( 0 );
213
				exit ( 0 );
212
			}
214
			}
213
			cur_mspk = mspk->GetFileList()->Get ( curscript );
215
			cur_mspk = mspk->GetFileList()->Get ( curscript );
214
			++curscript;
216
			++curscript;
215
			cur_mspk->pFile = new CSpkFile;
217
			cur_mspk->pFile = new CSpkFile;
216
			spkfile = cur_mspk->pFile;
218
			spkfile = (CSpkFile *)cur_mspk->pFile;
217
		}
219
		}
218
		else if ( first == "Packager:" )
220
		else if ( first == "Packager:" )
219
		{
221
		{
220
			fVersion = rest.ToFloat ();
222
			fVersion = rest.ToFloat ();
221
			if ( verbose ) printf ( "\tPackager Version: %.2f\n", fVersion );
223
			if ( verbose ) printf ( "\tPackager Version: %.2f\n", fVersion );
Line 230... Line 232...
230
			spkfile->SetAuthor ( rest );
232
			spkfile->SetAuthor ( rest );
231
			if ( verbose ) printf ( "\tScript Author: %s\n", rest.c_str() );
233
			if ( verbose ) printf ( "\tScript Author: %s\n", rest.c_str() );
232
		}
234
		}
233
		else if ( str == "CustomStart" )
235
		else if ( str == "CustomStart" )
234
		{
236
		{
235
			spkfile->SetCustomStart ( true );
237
			spkfile->SetCustomStart();
236
			if ( verbose ) printf ( "\tPackage is a custom start!!\n" );
238
			if ( verbose ) printf ( "\tPackage is a custom start!!\n" );
237
		}
239
		}
238
		else if ( first == "AnotherMod:" )
240
		else if ( first == "AnotherMod:" )
239
		{
241
		{
240
			spkfile->SetAnotherMod ( rest.GetToken ( 1, '|' ), rest.GetToken ( 2, -1, '|' ) );
242
			spkfile->SetAnotherMod ( rest.GetToken ( 1, '|' ), rest.GetToken ( 2, -1, '|' ) );
241
			if ( verbose ) printf ( "\tFor another Mod, Name: %s, Author: %s\n", spkfile->GetOtherName().c_str(), spkfile->GetOtherAuthor().c_str() );
243
			if ( verbose ) printf ( "\tFor another Mod, Name: %s, Author: %s\n", spkfile->GetOtherName().c_str(), spkfile->GetOtherAuthor().c_str() );
242
		}
244
		}
243
		else if ( str == "PATCH" )
245
		else if ( str == "PATCH" )
244
		{
246
		{
245
			spkfile->SetPatch ( true );
247
			spkfile->SetPatch();
246
			if ( verbose ) printf ( "\tPackage is a Patch Mod!!\n" );
248
			if ( verbose ) printf ( "\tPackage is a Patch Mod!!\n" );
247
		}
249
		}
248
		else if ( first == "Version:" )
250
		else if ( first == "Version:" )
249
		{
251
		{
250
			spkfile->SetVersion ( rest );
252
			spkfile->SetVersion ( rest );
Line 265... Line 267...
265
			spkfile->SetWebAddress ( rest );
267
			spkfile->SetWebAddress ( rest );
266
			if ( verbose ) printf ( "\tWeb Address: %s\n", rest.c_str() );
268
			if ( verbose ) printf ( "\tWeb Address: %s\n", rest.c_str() );
267
		}
269
		}
268
		else if ( first == "WebMirror1:" )
270
		else if ( first == "WebMirror1:" )
269
		{
271
		{
270
			spkfile->SetWebMirror1 ( rest );
272
			spkfile->AddWebMirror(rest);
271
			if ( verbose ) printf ( "\tWeb Mirror Address: %s\n", rest.c_str() );
273
			if ( verbose ) printf ( "\tWeb Mirror Address: %s\n", rest.c_str() );
272
		}
274
		}
273
		else if ( first == "WebMirror2:" )
275
		else if ( first == "WebMirror2:" )
274
		{
276
		{
275
			spkfile->SetWebMirror2 ( rest );
277
			spkfile->AddWebMirror(rest);
276
			if ( verbose ) printf ( "\tWeb Mirror Address: %s\n", rest.c_str() );
278
			if ( verbose ) printf ( "\tWeb Mirror Address: %s\n", rest.c_str() );
277
		}
279
		}
278
		
280
		
279
		else if ( first == "ScriptType:" )
281
		else if ( first == "ScriptType:" )
280
			spkfile->SetScriptType ( rest );
282
			spkfile->SetScriptType ( rest );
Line 288... Line 290...
288
			spkfile->SetEmail ( rest );
290
			spkfile->SetEmail ( rest );
289
			if ( verbose ) printf ( "\tAuthor Email Address: %s\n", rest.c_str() );
291
			if ( verbose ) printf ( "\tAuthor Email Address: %s\n", rest.c_str() );
290
		}
292
		}
291
		else if ( first == "GameVersion:" )
293
		else if ( first == "GameVersion:" )
292
		{
294
		{
-
 
295
			//TODO: fix this for new game version
-
 
296
			/*
293
			int version = rest.ToInt();
297
			int version = rest.ToInt();
294
			if ( version == 0 )
298
			if ( version == 0 )
295
				spkfile->SetGameVersion ( 1 );
299
				spkfile->SetGameVersion ( 1 );
296
			else if (version == 1 )
300
			else if (version == 1 )
297
				spkfile->SetGameVersion ( 0 );
301
				spkfile->SetGameVersion ( 0 );
298
			else
302
			else
299
				spkfile->SetGameVersion ( version );
303
				spkfile->SetGameVersion ( version );
300
			if ( verbose ) printf ( "\tGame Version: %d\n", spkfile->GetGameVersion () );
304
			if ( verbose ) printf ( "\tGame Version: %d\n", spkfile->GetGameVersion () );
-
 
305
			*/
301
		}
306
		}
302
		
307
		
303
		else if ( first == "Ware:" )
308
		else if ( first == "Ware:" )
304
		{
309
		{
305
			spkfile->AddWare ( rest );
310
			spkfile->AddWare ( rest );
306
			if ( verbose ) printf ( "\tAdding Custom Ware\n" );
311
			if ( verbose ) printf ( "\tAdding Custom Ware\n" );
307
		}
312
		}
308
		else if ( first == "WareText:" )
313
		else if ( first == "WareText:" )
309
			spkfile->AddWareText ( rest );
314
			spkfile->AddWareText ( rest );
310
		else if ( first == "UninstallAfter:" )
315
		else if ( first == "UninstallAfter:" )
311
			spkfile->AddUninstallAfterText ( rest.GetToken ( 1, ' ' ), rest.GetToken ( 2, -1, ' ' ) );
316
			spkfile->AddUninstallAfterText ( rest.GetToken ( 1, ' ' ).ToInt(), rest.GetToken ( 2, -1, ' ' ) );
312
		else if ( first == "UninstallBefore:" )
317
		else if ( first == "UninstallBefore:" )
313
			spkfile->AddUninstallBeforeText ( rest.GetToken ( 1, ' ' ), rest.GetToken ( 2, -1, ' ' ) );
318
			spkfile->AddUninstallBeforeText ( rest.GetToken ( 1, ' ' ).ToInt(), rest.GetToken ( 2, -1, ' ' ) );
314
		else if ( first == "InstallAfter:" )
319
		else if ( first == "InstallAfter:" )
315
			spkfile->AddInstallAfterText ( rest.GetToken ( 1, ' ' ), rest.GetToken ( 2, -1, ' ' ) );
320
			spkfile->AddInstallAfterText ( rest.GetToken ( 1, ' ' ).ToInt(), rest.GetToken ( 2, -1, ' ' ) );
316
		else if ( first == "InstallBefore:" )
321
		else if ( first == "InstallBefore:" )
317
			spkfile->AddInstallBeforeText ( rest.GetToken ( 1, ' ' ), rest.GetToken ( 2, -1, ' ' ) );
322
			spkfile->AddInstallBeforeText ( rest.GetToken ( 1, ' ' ).ToInt(), rest.GetToken ( 2, -1, ' ' ) );
318
		else if ( first == "ScriptName:" )
323
		else if ( first == "ScriptName:" )
319
		{
324
		{
320
			String lang = rest.GetToken ( 1, ':' );
325
			CyString lang = rest.GetToken ( 1, ':' );
321
			String name = rest.GetToken ( 2, -1, ':' );
326
			CyString name = rest.GetToken ( 2, -1, ':' );
322
			spkfile->AddLanguageName ( name, lang );
327
			spkfile->AddLanguageName ( lang.ToInt(), name );
323
			if ( verbose ) printf ( "\tScript Name Language (%s) %s\n", lang.c_str(), name.c_str() );
328
			if ( verbose ) printf ( "\tScript Name Language (%s) %s\n", lang.c_str(), name.c_str() );
324
		}
329
		}
325
		else if ( first == "Icon:" )
330
		else if ( first == "Icon:" )
326
		{
331
		{
327
			String ext = rest.GetToken ( 2, ' ' );
332
			CyString ext = rest.GetToken ( 2, ' ' );
328
			long size = rest.GetToken ( 1, ' ' ).ToLong ();
333
			long size = rest.GetToken ( 1, ' ' ).ToLong ();
329
			
334
			
330
			CFile *file = new CFile ();
335
			C_File *file = new C_File ();
331
			file->ReadFromData ( d, size );
336
			file->ReadFromData ( d, size );
332
 
337
 
333
			d += size;
338
			d += size;
334
 
339
 
335
			spkfile->SetIcon ( file, ext );
340
			spkfile->SetIcon ( file, ext );
Line 337... Line 342...
337
			if ( verbose ) printf ( "\tIcon (%s) Size: %s\n", ext.c_str(), file->GetDataSizeString ().c_str() );
342
			if ( verbose ) printf ( "\tIcon (%s) Size: %s\n", ext.c_str(), file->GetDataSizeString ().c_str() );
338
		}
343
		}
339
		else if ( (first == "$$$SharedScript:") || (first == "$$$Script:") || (first == "$$$SharedText:") || (first == "$$$Text:") || (first == "$$$Uninstall:") || (first == "$$$SharedMap:") || (first == "$$$Map:") || (first == "$$$Readme:") )
344
		else if ( (first == "$$$SharedScript:") || (first == "$$$Script:") || (first == "$$$SharedText:") || (first == "$$$Text:") || (first == "$$$Uninstall:") || (first == "$$$SharedMap:") || (first == "$$$Map:") || (first == "$$$Readme:") )
340
		{
345
		{
341
			int type;
346
			int type;
342
			String end, print;
347
			CyString end, print;
343
			if ( (first == "$$$SharedText:") || (first == "$$$Text:") )
348
			if ( (first == "$$$SharedText:") || (first == "$$$Text:") )
344
			{
349
			{
345
				type = FILETYPE_TEXT;
350
				type = FILETYPE_TEXT;
346
				end = "-- End of Script --";
351
				end = "-- End of Script --";
347
				print = "Text";
352
				print = "Text";
Line 369... Line 374...
369
				type = FILETYPE_SCRIPT;
374
				type = FILETYPE_SCRIPT;
370
				end = "-- End of Script --";
375
				end = "-- End of Script --";
371
				print = "Script";
376
				print = "Script";
372
			}
377
			}
373
 
378
 
374
			String filename, dir;
379
			CyString filename, dir;
375
			long time = 0, size = 0;
380
			long time = 0, size = 0;
376
			bool shared = false;
381
			bool shared = false;
377
 
382
 
378
			if ( fVersion >= 3.00f )
383
			if ( fVersion >= 3.00f )
379
				filename = rest.GetToken ( 3, -1, ' ' );
384
				filename = rest.GetToken ( 3, -1, ' ' );
Line 403... Line 408...
403
				size = rest.GetToken ( 2, ' ' ).ToLong();
408
				size = rest.GetToken ( 2, ' ' ).ToLong();
404
			
409
			
405
			if ( first.Left (9) == "$$$Shared" )
410
			if ( first.Left (9) == "$$$Shared" )
406
				shared = true;
411
				shared = true;
407
 
412
 
408
			CFile *file = new CFile ();
413
			C_File *file = new C_File ();
409
 
414
 
410
			bool binaryRead = false;
415
			bool binaryRead = false;
411
			String ext = filename.GetToken ( filename.NumToken ( '.' ), '.' );
416
			CyString ext = filename.GetToken ( filename.NumToken ( '.' ), '.' );
412
			if ( ext.ToUpper() == "PCK" )
417
			if ( ext.ToUpper() == "PCK" )
413
				binaryRead = true;
418
				binaryRead = true;
414
 
419
 
415
			if ( verbose )
420
			if ( verbose )
416
			{
421
			{
Line 425... Line 430...
425
				file->ReadFromData ( d, size );
430
				file->ReadFromData ( d, size );
426
				d += size;
431
				d += size;
427
			}
432
			}
428
			else
433
			else
429
			{
434
			{
430
				String readData;
435
				CyString readData;
431
				d = LineByLineRead ( d, &len, end, &readData );
436
				d = LineByLineRead ( d, &len, end, &readData );
432
				file->ReadFromData ( (char *)readData.c_str(), (long)readData.Length() );
437
				file->ReadFromData ( (char *)readData.c_str(), (long)readData.Length() );
433
			}
438
			}
434
			file->SetName ( filename );
439
			file->SetName ( filename );
435
			file->SetFileType ( type );
440
			file->SetFileType ( type );
Line 444... Line 449...
444
 
449
 
445
		}
450
		}
446
		else if ( (first == "$$$Mod:") || (first == "$$$Sound:") || (first == "$$$Extra:") || (first == "$$$Screen:") )
451
		else if ( (first == "$$$Mod:") || (first == "$$$Sound:") || (first == "$$$Extra:") || (first == "$$$Screen:") )
447
		{
452
		{
448
			int type = -1;
453
			int type = -1;
449
			String print;
454
			CyString print;
450
			if ( first == "$$$Mod:" )
455
			if ( first == "$$$Mod:" )
451
			{
456
			{
452
				type = FILETYPE_MOD;
457
				type = FILETYPE_MOD;
453
				print = "Mod";
458
				print = "Mod";
454
			}
459
			}
Line 466... Line 471...
466
			{
471
			{
467
				type = FILETYPE_SOUND;
472
				type = FILETYPE_SOUND;
468
				print = "Sound Track";
473
				print = "Sound Track";
469
			}
474
			}
470
 
475
 
471
			String filename = rest.GetToken ( 3, -1, ' ' ), dir;
476
			CyString filename = rest.GetToken ( 3, -1, ' ' ), dir;
472
			long time = rest.GetToken ( 1, ' ' ).ToLong(), size = rest.GetToken ( 2, ' ' ).ToLong();
477
			long time = rest.GetToken ( 1, ' ' ).ToLong(), size = rest.GetToken ( 2, ' ' ).ToLong();
473
			bool shared = false;
478
			bool shared = false;
474
 
479
 
475
			if ( filename.IsIn ( "<br>" ) )
480
			if ( filename.IsIn ( "<br>" ) )
476
			{
481
			{
Line 482... Line 487...
482
					dir = filename.GetToken ( 1, '|' );
487
					dir = filename.GetToken ( 1, '|' );
483
					filename = filename.GetToken ( 2, -1, '|' );
488
					filename = filename.GetToken ( 2, -1, '|' );
484
				}
489
				}
485
			}
490
			}
486
 
491
 
487
			CFile *file = new CFile ();
492
			C_File *file = new C_File ();
488
			file->ReadFromData ( d, size );
493
			file->ReadFromData ( d, size );
489
			file->SetName ( filename );
494
			file->SetName ( filename );
490
			file->SetFileType ( type );
495
			file->SetFileType ( type );
491
			file->SetShared ( shared );
496
			file->SetShared ( shared );
492
			file->SetCreationTime ( time );
497
			file->SetCreationTime ( time );
Line 514... Line 519...
514
	printf ( "\nStarting to write new spk file\n" );
519
	printf ( "\nStarting to write new spk file\n" );
515
	if ( mspk )
520
	if ( mspk )
516
	{
521
	{
517
		for ( SMultiSpkFile *it = mspk->GetFileList()->First(); it; it = mspk->GetFileList()->Next() )
522
		for ( SMultiSpkFile *it = mspk->GetFileList()->First(); it; it = mspk->GetFileList()->Next() )
518
		{
523
		{
519
			for ( CFile *f = it->pFile->GetFileList()->First(); f; f = it->pFile->GetFileList()->Next() )
524
			for ( C_File *f = it->pFile->GetFileList()->First(); f; f = it->pFile->GetFileList()->Next() )
520
			{
525
			{
521
				printf ( "* Compressing %s...\n\t>", f->GetNameDirectory(it->pFile).c_str() );
526
				printf ( "* Compressing %s...\n\t>", f->GetNameDirectory(it->pFile).c_str() );
522
				if ( f->CompressData ( spkfile->GetDataCompression(), progress ) )
527
				if ( f->CompressData ( spkfile->GetDataCompression(), progress ) )
523
				{
528
				{
524
					progress->PrintDone();
529
					progress->PrintDone();
Line 540... Line 545...
540
			}
545
			}
541
		}
546
		}
542
	}
547
	}
543
	else
548
	else
544
	{
549
	{
545
		for ( CFile *f = spkfile->GetFileList()->First(); f; f = spkfile->GetFileList()->Next() )
550
		for ( C_File *f = spkfile->GetFileList()->First(); f; f = spkfile->GetFileList()->Next() )
546
		{
551
		{
547
			printf ( "* Compressing %s...\n\t>", f->GetNameDirectory(spkfile).c_str() );
552
			printf ( "* Compressing %s...\n\t>", f->GetNameDirectory(spkfile).c_str() );
548
			if ( f->CompressData ( spkfile->GetDataCompression(), progress ) )
553
			if ( f->CompressData ( spkfile->GetDataCompression(), progress ) )
549
			{
554
			{
550
				progress->PrintDone();
555
				progress->PrintDone();
Line 559... Line 564...
559
	}
564
	}
560
 
565
 
561
	printf ( "* Writing to %s... ", argv[2] );
566
	printf ( "* Writing to %s... ", argv[2] );
562
	if ( mspk )
567
	if ( mspk )
563
	{
568
	{
564
		if ( mspk->WriteFile ( String(argv[2]) ) )
569
		if ( mspk->WriteFile ( CyString(argv[2]) ) )
565
			printf ( "(Done)\n" );
570
			printf ( "(Done)\n" );
566
		else
571
		else
567
			printf ( "(Error)\n" );
572
			printf ( "(Error)\n" );
568
	}
573
	}
569
	else
574
	else
570
	{
575
	{
571
		spkfile->WriteFile ( String(argv[2]) );
576
		spkfile->WriteFile ( CyString(argv[2]) );
572
		printf ( "(Done)\n" );
577
		printf ( "(Done)\n" );
573
	}
578
	}
574
 
579
 
575
	printf ( "SPK file has been converted successfully\n" );
580
	printf ( "SPK file has been converted successfully\n" );
576
	CLEANUP
581
	CLEANUP