Пример #1
0
void main( int argc, char* argv[] )
{
	char*	dumpname;
	FILE*	dumphandle;
	int	dumps;
	int	i;
	int	entryoffs;
	char	id[4];
	ca_entry_t	entry;

	unsigned char 	*buf;
	char		*lmpname;
	FILE		*lmphandle;

	dumpname = GetCmdOpt( "-d", argc, argv );
	if( dumpname == NULL )
		__error( "missing arg. no -d\n" );

	lmpname = GetCmdOpt( "-e", argc, argv );

	dumphandle = fopen( dumpname, "rb" );
	__chkptr( dumphandle );
	fread( id, 4, 1, dumphandle );
	if( !memcmp( id, "CA  ", 4 ))
		__warning( "wrong id in dump.\n" );

	fread( &dumps, sizeof( int ), 1, dumphandle );

	for( i = 0; i < dumps; i++ )
	{
		
		fread( &entry, sizeof( ca_entry_t ), 1, dumphandle );
		entryoffs = ftell( dumphandle );
		printf( "chunk name:\t%s\n", entry.name );
		printf( "chunk size:\t%d\n", entry.size );
		printf( "chunk pointer:\t%p\n", entry.data );
		printf( "data position in dump:\t%d\n\n", entryoffs );
		if( lmpname )
			if( !strcmp( lmpname, entry.name ) )
			{
				printf( "extracting lump to lump\n" );
				buf = ( unsigned char* )malloc( entry.size );
				__chkptr( buf );
				fread( buf, entry.size, 1, dumphandle );
				lmphandle = fopen( "lump", "wb" );
				fwrite( buf, entry.size, 1, lmphandle );
				free( buf );
				fclose( lmphandle );
			}
		else 
		{
			fseek( dumphandle, entry.size, SEEK_CUR );
		}
	}
	fclose( dumphandle );
}
Пример #2
0
void main( int argc, char* argv[] )
{
	arr_t*	inarr;
	arr_t*	outarr;

	FILE*	inhandle;
	FILE*	outhandle;
	
	char*	outname;
	char*	data;
	char*	ident;

	int	firstarg;
	int	i;
	int	width, height, size;
	int	steps;
	int	flags;

	width = height = size = 0;

	outname = GetCmdOpt( "-o", argc, argv );
	__chkptr( outname );
//	printf( "creating animation %s\n", outname );
	
	ident = GetCmdOpt( "-i", argc, argv );

	firstarg = 3;
	if( ident != NULL )
		firstarg+=2;

	steps = argc - firstarg;
	
	for( i = firstarg; i < argc; i++ )
	{
		inhandle = fopen( argv[i], "rb" );
		__chkptr( inhandle );
//		printf( "%s\n", argv[i] );
		inarr = ARR_Read( inhandle );
		if( size == 0 )
		{
			size = inarr -> bytes;
			width = inarr -> size_x;
			height = inarr -> size_y;
			flags = inarr->flags;
			data = ( char* )malloc( size * steps );
			__chkptr( data );
		}
		memcpy( data+size*(i-firstarg), inarr->data, size );
	}
	outarr = ARR_Create( width, height, 4, steps, ident, flags );
	memcpy( outarr->data, data, size * steps );
	
	outhandle = fopen( outname, "wb" );
	ARR_Write( outhandle, outarr );
}
Пример #3
0
int main( int argc, char* argv[] )
{
	struct hostent		*hp;
	// server socket
	struct sockaddr_in      sadd;
	int			ssock;
	unsigned char           sip[4];

	// client socket
	struct sockaddr_in      cadd;
	int			csock;

	int			l;
	int			magic;
	
	char			*sname;
	char			*portname;

	int			port;

	sname = GetCmdOpt( "-s", argc, argv );
	if( !sname )
	{
		printf( "missing opt -s ( servername )\n" );
		exit( -1 );
	}
	
	hp = gethostbyname( sname );
	if( !hp )
	{
		printf( "gethostbyname: failed ( name: %s )\n", sname );
		error( -1 );
	}
}
Пример #4
0
int main( int argc, char* argv[] )
{
	char	*tdbname, *rawname, *comment;
	int	found;
	tdbentry_t*	entries = NULL;

	CDB_StartUp( 0 );

	tdbname = CDB_GetString( "tdb/tdb_name" );
	if( tdbname == NULL )
		__error( "cannot extract key \"tdb/tdb_name\" from cdb. please add.\n" );

	rawname = GetCmdOpt( "-r", argc, argv );
	if( rawname == NULL )
	{
		PrintUsage();
		__error( "missing argument -r\n" );
	}

	comment = GetCmdOpt( "-c", argc, argv );
	if( comment == NULL )
	{
		PrintUsage();
		__error( "missing argument -c\n" );
	}

	TDB_Load( tdbname );

	if( ( found = TDB_Query( NULL, rawname )) == 0 )
	{
		__message( "%s not found\n", rawname );
		exit( 0 );
	}
			
//	printf( "found: %d\n", found );
	if( strlen( comment ) >= 256 )
		comment[255] = '\0';

	TDB_GetPointer( &entries );

	strcpy( entries[matches[0]].comment, comment );
	TDB_Write( tdbname );

	exit( 0 );
	
}
Пример #5
0
void main( int argc, char* argv[] )
{
	char*	tdbname;
	char*	arr;

	CDB_StartUp( 0 );
	tdbname = CDB_GetString( "tdb/tdb_name" );
	if( tdbname == NULL )
		__error( "cannot find key tdb/tdb_name.\n" );

	arr = GetCmdOpt( "-r", argc, argv );
	if( arr == NULL )
		__error( "no argument. usage: tdbremove -r rawname\n" );

	
	TDB_Load( tdbname );
	TDB_RemoveEntry( arr );
	TDB_Write( tdbname );
}
Пример #6
0
void main( int argc, char* argv[] )
{
	u_int32_t	i, i2, arrcount;
	int	x, y, xs, ys, xh, yh;
	char	dumpheaders = 0;
	char*	tganame;
	char*   arrname;
	char*	palname;
	char*	arrident;
	char*	arrnext;
	char*	arrmode;

	int	reducemode;

	int		mm;
	int		ts, td;
	int		pixels;
	int		rsum, gsum, bsum;
	int		x2, y2;

	int		blur;

	FILE*	tgahandle;
	FILE*	arrhandle;
	FILE*	palhandle;
	pal_t*	pal = NULL;	
	tga_t*	tga[2];
	arr_t*	arr;
	rgb_t	rgb;
	
	dumpheaders = CheckCmdSwitch( "-d", argc, argv );

	palname = GetCmdOpt( "-p", argc, argv );

	tganame = GetCmdOpt( "-t", argc, argv );
	if( tganame == NULL )
	{
		printf( "no tga given.\n" );
		PrintUsage();
		exit( 0 );
	}


	if ( CheckCmdSwitch( "--rgb565", argc, argv ) )
	{
		reducemode = ARR_F_RGB565;
	}
	else
	{
		reducemode = ARR_F_P8;
	}

	arrident = GetCmdOpt( "-i", argc, argv );
	if( arrident == NULL )
		__warning( "no arr ident given.\n" );
	else if( strlen( arrident ) >= 32 )
		arrident[31] = '\0';

	printf( "tga: %s\n", tganame );
	tgahandle = fopen( tganame, "rb" );
	CHKPTR( tgahandle );
	tga[0] = TGA_Read( tgahandle );
       	CHKPTR( tga[0] );
//	TGA_Dump( tga[0] );

	fclose( tgahandle );
	if( dumpheaders )
		TGA_Dump( tga[0] );

	tga[1] = TGA_Create( tga[0]->image_width/*/2*/, tga[0]->image_height/*/2*/, TGA_TYPE_TRUECOLOR );
	__chkptr( tga[1] );
	
	arrname = GetCmdOpt( "-a", argc, argv );
	if( arrname == NULL )
	{
		printf( "no arr given.\n" );
		PrintUsage();
		exit( 0 );
	}
	printf( "arr: %s\n", arrname );
	
	switch( tga[0]->image_type )
	{
	case TGA_TYPE_TRUECOLOR:
		
		printf( "tga is 24bit.\n" );
		if( palname == NULL )
		{
			CDB_StartUp( 0 );
			palname = CDB_GetString( "misc/default_pal" );
			if( palname == NULL )
			{
				PrintUsage();
				__error( "no pal found.\n" );
			}
		}
		printf( "pal: %s\n", palname );
		palhandle = fopen( palname, "rb" );
		CHKPTR( palhandle );
		pal = PAL_Read( palhandle );
		CHKPTR( pal );
		fclose( palhandle );

		arr = ARR_Create( tga[0]->image_width, tga[0]->image_height, 4, 1, arrident, reducemode );

		CHKPTR( arr );
		printf( "reducing color. " );

		xs = tga[0]->image_width;
		ys = tga[0]->image_height;
		arrcount = 0;

		for ( mm = 0; mm < 4; mm++ ) {
			ts = mm & 1;
			td = (mm+1) & 1;
//			printf("%d->%d\n",ts,td);
			// reduce
//			printf(" i: %d, x: %d, y: %d\n", mm, xs, ys );
			pixels = xs * ys;
			for( i = 0; i < pixels; i++ )
			{
				rgb.red = tga[ts]->image.red[i];
				rgb.green = tga[ts]->image.green[i];
				rgb.blue = tga[ts]->image.blue[i];
				
				if ( reducemode == ARR_F_P8 )
					arr->data[arrcount++] = PAL_ReduceColor( pal, &rgb );
				else
				{
					*((unsigned short*)(&arr->data[arrcount])) = RGB888ToRGB565( &rgb );
					arrcount+=2;
				}

				if( (i & 0xff) == 0 )
				{
					printf( "." );
					fflush( stdout );
				}
			}			

			if ( mm == 3 )
				break;
			
			// mipmap 
			xh = xs / 2;
			yh = ys / 2;

			if ( xh < 4 || yh < 4 )
				blur = 0;
			else
				blur = 1;

			for ( y = 0; y < yh; y++ ) {
				for ( x = 0; x < xh; x++ ) {
					x2 = x*2;
					y2 = y*2;

					if ( blur )
					{
						rsum = tga[ts]->image.red[ y2*xs + x2 ];
						gsum = tga[ts]->image.green[ y2*xs + x2 ];
						bsum = tga[ts]->image.blue[ y2*xs + x2 ];
						
						rsum += tga[ts]->image.red[ y2*xs + (x2+1) ];
						gsum += tga[ts]->image.green[ y2*xs + (x2+1) ];
						bsum += tga[ts]->image.blue[ y2*xs + (x2+1) ];
						
						rsum += tga[ts]->image.red[ (y2+1)*xs + x2 ];
						gsum += tga[ts]->image.green[ (y2+1)*xs + x2 ];
						bsum += tga[ts]->image.blue[ (y2+1)*xs + x2 ];
						
						rsum += tga[ts]->image.red[ (y2+1)*xs + (x2+1) ];
						gsum += tga[ts]->image.green[ (y2+1)*xs + (x2+1) ];
						bsum += tga[ts]->image.blue[ (y2+1)*xs + (x2+1) ];
						
						tga[td]->image.red[ y*xh + x ] = rsum / 4;
						tga[td]->image.green[ y*xh + x ] = gsum / 4;
						tga[td]->image.blue[ y*xh + x ] = bsum / 4;
					}
					else
					{

						rsum = tga[ts]->image.red[ y2*xs + x2 ];
						gsum = tga[ts]->image.green[ y2*xs + x2 ];
						bsum = tga[ts]->image.blue[ y2*xs + x2 ];				
						tga[td]->image.red[ y*xh + x ] = 255; //rsum;
						tga[td]->image.green[ y*xh + x ] = 0;//gsum;
						tga[td]->image.blue[ y*xh + x ] = 0; //bsum;		
					}
				}
			}
			xs = xh;
			ys = yh;
		}
		

		printf( "\n" );
		
		break;
		/*
	case TGA_TYPE_INDEXED:
		printf( "tga is indexed./n" );
		arr = ARR_Create( tga->image_width, tga->image_height, 1, arr_ident, NULL );
		CHKPTR( arr );
		printf( "copying ...\n" );
		memcpy( arr->data, tga->image_indexed.data, tga->image_indexed.bytes );
		break;
		*/
	default:
		__error( "we need an uncompressed 24(/8)bit tga.\n" );
		ARR_Free( arr );
		break;
	}
	arrhandle = fopen( arrname, "wb" );
	CHKPTR( arrhandle );
	ARR_Write( arrhandle, arr );
	fclose( arrhandle );
}
BOOL CGrannyViewerApp::InitInstance()
{
	try {
		std::string config_file = "xml\\config.xml";

		if(!nConfig::Init(config_file)) {
			MessageBox(NULL, config_file.c_str(), "Can't Open File", MB_OK|MB_ICONERROR);
			return FALSE;
		}
	} catch (...) {
		return FALSE;
	}

	InitCommonControls();

	CWinApp::InitInstance();

	// OLE 라이브러리를 초기화합니다.
	if (!AfxOleInit())
	{
		AfxMessageBox(IDP_OLE_INIT_FAILED);
		return FALSE;
	}
	AfxEnableControlContainer();

	SetRegistryKey(_T("Harkon"));
	LoadStdProfileSettings(4);  
	CSingleDocTemplate* pDocTemplate;
	pDocTemplate = new CSingleDocTemplate(
		IDR_MAINFRAME,
		RUNTIME_CLASS(CGrannyViewerDoc),
		RUNTIME_CLASS(CMainFrame),
		RUNTIME_CLASS(CGrannyViewerView));
	if (!pDocTemplate)
		return FALSE;
	AddDocTemplate(pDocTemplate);

	ReadConfig();

	std::string granny_file = nConfig::aos ? "xml/granny_aos.xml" : "xml/granny.xml";

	CStringArray arOpt;
	GetCmdOpt(m_lpCmdLine, arOpt);

	for (int i = 0; i < arOpt.GetSize(); i++)
	{
		//if (arOpt[i] == "-id" && (i+1) < arOpt.GetSize())
		if (arOpt[i] == "-imm")
			nConfig::useVertexArray = false;
		else
			granny_file = arOpt[i];
	}

	if (!OpenDocumentFile(granny_file.c_str()))
		return FALSE;

//	m_iModelID = -1;

	m_pMainWnd->ShowWindow(SW_SHOW);
	m_pMainWnd->UpdateWindow();

	GfxLog("OpenGL Render Mode : %s\n", nConfig::useVertexArray ? "vertex array" : "immediate");

#if 0
	cGrannyFile f;
	if (!f.import("data/aa.smd"))
		return FALSE;
#endif

	return TRUE;
}
Пример #8
0
void main( int argc, char* argv[] )
{
	int	i, i2, offset;
	int	firstarg;
	
	char*	outpath;
	char	arrname[256];
	char	walname[256];
	char	tmpname[256];
	char*	tmpptr;	
	char	arrident[32];
	unsigned char*	data;

	arr_t*		arr;
	wal_header_t	walheader;

	FILE*	arrhandle;
	FILE*	walhandle;

	outpath = GetCmdOpt( "-o", argc, argv );
	if( outpath == NULL )
	{
		firstarg = 1;
	} else
	{
		firstarg = 3;
	}

	for( i = firstarg; i < argc; i++ )
	{
		strcpy( walname, argv[i] );
		if( strrchr( walname, '.' ) == 0 )
		{
			continue;
		}
		tmpptr = strrchr( argv[i], '.' );
		*tmpptr = '\0';
		sprintf( arrname, "%s.arr", argv[i] );
		if( outpath != NULL )
		{
			strcpy( tmpname, arrname );
			sprintf( arrname, "%s/%s", outpath, tmpname );
		}
		
		printf( "converting %s\tto %s\n", walname, arrname );
		walhandle = fopen( walname, "rb" );
		__chkptr( walhandle );

		fread( &walheader, sizeof( wal_header_t ), 1, walhandle );
		strcpy( arrident, walheader.name_junk );
		arr = ARR_Create( walheader.size_x, walheader.size_y, 4, 1, arrident );
		arrhandle = fopen( arrname, "wb" );
		//strcpy( tmpname, arrname );
		tmpptr = arrname;
		if( arrhandle == NULL )
		{
			for(;;)
			{
				tmpptr = strchr( tmpptr, '/' );
				if( tmpptr != NULL )
				{
					*tmpptr = '\0';
					mkdir( arrname, 511 );
					printf(" mkdir : %s\n", arrname );
					*tmpptr = '/';
					tmpptr++;
				} else
				{
					arrhandle = fopen( arrname, "wb" );
					break;
				}
			}
		}
		
		__chkptr( arrhandle );
		data = ( unsigned char* ) malloc( walheader.size_x * walheader.size_y );
		__chkptr( data );
		offset = 0;
		for( i2 = 0; i2 < 4; i2++ )
		{
			//printf( "offset: %d\n", offset );
		
			fread( data, walheader.size_x * walheader.size_y, 1, walhandle );
			
			memcpy( arr->data+offset, data, walheader.size_x * walheader.size_y );
			offset+=walheader.size_x * walheader.size_y;
			walheader.size_x/=2;
			walheader.size_y/=2;
		}
		ARR_Write( arrhandle, arr );
		ARR_Free( arr );
		free( ( void* )data );
		fclose( walhandle );
		fclose( arrhandle );
	}
}
Пример #9
0
void main( int argc, char* argv[] )
{
	char*	pal_name;
	char*	file_name;
	char*	file_suf;

	int	file_type = TYPE_UNKNOWN;
	int	i, i2;
	int	start_x;
	int	data_start;

	vid_device_t*	vid_dev;
	char*		data;
	arr_t*		arr;
	char*		wal_data[4];
	wal_header_t	wal_header;
	FILE*		pal_handle;
	FILE*		in_handle;

	/* Signal handler setzen */
	
	signal( SIGSEGV, (void(*) ()) SecureShutDown );
	signal( SIGABRT, (void(*) ()) SecureShutDown );
	signal( SIGTERM, (void(*) ()) SecureShutDown );
	signal( SIGQUIT, (void(*) ()) SecureShutDown );
	signal( SIGINT,  (void(*) ()) SecureShutDown );

	SOS_SetShockHandler( MyShockHandler );
	file_name = GetCmdOpt( "-f", argc, argv );
	if( file_name == NULL )
	{
		__message( "no filename given.\n" );
		PrintUsage();
		exit( 0 );
	}

	file_suf = strrchr( file_name, '.' );
	if( ( file_suf == NULL ) && ( !CheckCmdSwitch( "-t", argc, argv)  ))
	{
		printf( "filename doesn't seem to have a sufix.\n" );
		PrintUsage();
		exit( 0 );
	}

	file_suf++;
	if( CheckCmdSwitch( "-t", argc, argv ) )
	{
		file_suf = GetCmdOpt( "-t", argc, argv );
	}
	
	printf( "suf: %s\n", file_suf );

	if( ! (memcmp( file_suf, "arr", 3 )))
	{
		file_type = TYPE_ARR;
	} else if( ! (memcmp( file_suf, "wal", 3 )))
	{
		file_type = TYPE_WAL;
	}
	printf( "type: %d\n", file_type );

	CDB_StartUp( 0 );
	UI_StartUp( "ui_x11.so" );
	vid_dev = VID_StartUp();
	VID_SetModeByName( 640, 480, 8 );
	KEYB_StartUp();
	
	pal_name = GetCmdOpt( "-p", argc, argv );
	if( pal_name == NULL )
	{
		pal_name = CDB_GetString( "misc/default_pal" );
		if( pal_name == NULL )
		{
			__error( "couldn't find any palname.\n" );
		}
	}

	printf( "\t\tpal: %s\n", pal_name );
	pal_handle = fopen( pal_name, "rb" );
	VID_LoadPal( pal_handle );
	fclose( pal_handle );

	data = ( char* )VID_GetVirtualPage() -> data;
	in_handle = fopen( file_name, "rb" );
	if( in_handle == NULL )
		__error( "file not found.\n" );

	if( file_type == TYPE_ARR )
	{
		arr = ARR_Read( in_handle ); 
		ARR_Dump( arr );
		if( CheckCmdSwitch( "-d", argc, argv ))
		{
			ARR_Dump( arr );
		}
		start_x = 0;
		data_start = 0;
		for( i = 0; i < arr->mipmap_num; i++ )
		{
//			printf(" i: %d, x: %d, y %d\n", i, arr->size_x, arr->size_y );
			for( i2 = 0; i2 < arr->size_y; i2++ )
			{
				memcpy( &data[i2*640+start_x], &arr->data[i2*arr->size_x+data_start], arr->size_x);
			}
//			printf("\n");
			start_x+=arr->size_x+1;
			data_start += arr->size_x * arr->size_y;
			arr->size_x/=2;
			arr->size_y/=2;
		}
	}
	if( file_type == TYPE_WAL ) // warning: quick and dirty code! todo: make it better.
	{
		fread( &wal_header, sizeof( wal_header_t ), 1, in_handle );
		//wal_tmp = wal_header->size_x*wal_header->size_y;
		//wal_data_size = wal_tmp + wal_tmp/4 + wal_tmp/8 + wal_tmp/16;
		start_x = 0;
		for( i = 0; i < 4; i++ )
		{
			wal_data[i] = ( char* )malloc( wal_header.size_x * wal_header.size_y );
			fread( wal_data[i], wal_header.size_x * wal_header.size_y, 1, in_handle );

			for( i2 = 0; i2 < wal_header.size_y; i2++ )
			{
				memcpy( &data[i2*640+start_x], &wal_data[i][i2*wal_header.size_x], wal_header.size_x );
			}
			
			start_x += wal_header.size_x+1;
			wal_header.size_x/=2;
			wal_header.size_y/=2;
		
		}
	}	

	if( file_type == TYPE_UNKNOWN )
	{
		data[6500] = 127;
	}
	VID_Refresh();
	for(;;)
	{
		usleep( 100000 );
		KEYB_Update();
		if( KEYB_KeyPressed( KEYID_ENTER ))
			break;
	}
	KEYB_ShutDown();
	VID_ShutDown();
	UI_ShutDown();
}
Пример #10
0
int main( int argc, char* argv[] )
{
	char	*ptr;
	int	del;
	



	sname = GetCmdOpt( "-s", argc, argv );
	if( !sname )
	{
		printf( "missing opt -s ( servername )\n" );
		exit( -1 );
	}
	
	hp = gethostbyname( sname );
	if( !hp->h_addr )
	{
		printf( "gethostbyname: failed ( name: %s )\n", sname );
		exit( -1 );
	}
	memcpy( sip, hp->h_addr, 4 );
	printf( "server ip:\t%i.%i.%i.%i\n",( unsigned char ) sip[0],( unsigned char ) sip[1],( unsigned char ) sip[2], ( unsigned char ) sip[3]);
	

	gethostname( hostname, sizeof( hostname ) );
	hp = gethostbyname( hostname );
	if( !hp->h_addr )
	{
		printf( "gethostbyname: failed ( name: %s )\n", hostname );
		exit( -1 );
	}
	memcpy( mip, hp->h_addr, 4 );

	printf( "client ip:\t%i.%i.%i.%i\n",( unsigned char ) mip[0],( unsigned char ) mip[1],( unsigned char ) mip[2], ( unsigned char ) mip[3]);

	sport = 26002;
	portname = GetCmdOpt( "-p", argc, argv );
	if( portname )
	{
		sport = atoi( portname );
	}
	printf( "server port:\t%d\n", sport );
		
	ssock = socket( AF_INET, SOCK_STREAM, 0 );
	memcpy( ( char* )&sadd.sin_addr, ( char* )sip, 4 );
	sadd.sin_family = AF_INET; 
        sadd.sin_port = htons(sport);
	
	

	del = 60000000; // detting delay to 60 s

	ptr = GetCmdOpt( "-d", argc, argv );
	if( ptr )
		del = atoi( ptr )*1000000;
	
	printf( "delay:\t%d\n", del );
	
	for( ;; )
	{
		Request();
		usleep( del );
	}

}