ddnet/src/tools/map_resave.cpp

55 lines
1.3 KiB
C++
Raw Normal View History

2010-11-20 10:37:14 +00:00
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
/* If you are missing that file, acquire a complete release at teeworlds.com. */
2010-05-29 07:25:38 +00:00
#include <base/system.h>
#include <engine/shared/datafile.h>
#include <engine/storage.h>
int main(int argc, const char **argv)
{
cmdline_fix(&argc, &argv);
IStorage *pStorage = CreateStorage(IStorage::STORAGETYPE_BASIC, argc, argv);
int Index, ID = 0, Type = 0, Size;
2010-05-29 07:25:38 +00:00
void *pPtr;
char aFileName[IO_MAX_PATH_LENGTH];
2010-05-29 07:25:38 +00:00
CDataFileReader DataFile;
CDataFileWriter df;
if(!pStorage || argc != 3)
2010-05-29 07:25:38 +00:00
return -1;
str_format(aFileName, sizeof(aFileName), "%s", argv[2]);
2010-05-29 07:25:38 +00:00
if(!DataFile.Open(pStorage, argv[1], IStorage::TYPE_ABSOLUTE))
2010-05-29 07:25:38 +00:00
return -1;
if(!df.Open(pStorage, aFileName))
return -1;
// add all items
for(Index = 0; Index < DataFile.NumItems(); Index++)
{
pPtr = DataFile.GetItem(Index, &Type, &ID);
2010-05-29 07:25:38 +00:00
Size = DataFile.GetItemSize(Index);
// filter ITEMTYPE_EX items, they will be automatically added again
if(Type == ITEMTYPE_EX)
{
continue;
}
df.AddItem(Type, ID, Size, pPtr);
2010-05-29 07:25:38 +00:00
}
// add all data
for(Index = 0; Index < DataFile.NumData(); Index++)
{
pPtr = DataFile.GetData(Index);
Size = DataFile.GetDataSize(Index);
2010-05-29 07:25:38 +00:00
df.AddData(Size, pPtr);
}
DataFile.Close();
df.Finish();
cmdline_free(argc, argv);
2010-05-29 07:25:38 +00:00
return 0;
}