Beispiel #1
0
int readFiles( char *source, char *dest)
{
	long h, err;
	struct _finddata_t data;
	char *filename, *prevname, *destname;
	unsigned int failID;
	int failpos;
	lwReader reader;
	Lwo2MeshWriter lwo2mesh;
	
	filename = (char *)malloc(3 * 512);
	if ( !filename ) return 0;
	prevname = filename + 512;
	destname = filename + 1024;
	
	err = h = _findfirst( source, &data );
	if ( err == -1 )
	{
		printf( "No files found: '%s'\n", source );
		return 0;
	}
	
	while ( err != -1 )
	{
		if (( data.attrib & _A_SUBDIR ) && data.name[ 0 ] != '.' )
		{
			make_filespec( source, data.name, filename );
			readFiles( filename, dest );
		}
		if ( !( data.attrib & _A_SUBDIR ))
		{
			make_filename( source, data.name, filename );

			if ( !strcmp( filename, prevname )) break;
			strcpy( prevname, filename );
			failID = failpos = 0;

			lwObject *object = reader.readObjectFromFile( filename );
			if ( object )
			{
				if (flags[InfoOnly])
					info(object, filename);
				else
				{
					make_destname( dest, data.name, destname );
					lwo2mesh.writeLwo2Mesh(object, destname);
				}
				delete object;
			}
		}
		err = _findnext( h, &data );
	}
	
	_findclose( h );
	free (filename);
	return 1;
}
Beispiel #2
0
int find_files(char *filespec)
{
	long            h, err;
	struct _finddata_t data;
	char           *filename, *prevname;
	unsigned int    failID;
	int             failpos;

	filename = malloc(520);
	if(!filename)
		return 0;
	prevname = filename + 260;

	err = h = _findfirst(filespec, &data);
	if(err == -1)
	{
		printf("No files found: '%s'\n", filespec);
		return 0;
	}

	while(err != -1)
	{
		if((data.attrib & _A_SUBDIR) && data.name[0] != '.')
		{
			make_filespec(filespec, data.name, filename);
			find_files(filename);
		}
		if(!(data.attrib & _A_SUBDIR))
		{
			make_filename(filespec, data.name, filename);
			if(!strcmp(filename, prevname))
				break;
			strcpy(prevname, filename);
			printf("%s\n", filename);
			failID = failpos = 0;
			if(!testload(filename, &failID, &failpos))
			{
				printf("%s\nLoading failed near byte %d\n\n", filename, failpos);
			}
		}
		err = _findnext(h, &data);
	}

	_findclose(h);
	free(filename);
	return 1;
}