Old tools that got removed a long time ago.

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1545 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
meep-eep
2005-02-19 00:38:46 +00:00
parent 440fec6289
commit e7eabd46b9
51 changed files with 10988 additions and 0 deletions
+129
View File
@@ -0,0 +1,129 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "resource/resintrn.h"
STATIC RES_PACKAGE res_package;
STATIC COUNT name_index;
STATIC char file_name[100][80];
char workbuf[8 * 1024];
PROC(STATIC
MEM_HANDLE WriteData, (fp, len),
ARG (FILE *fp)
ARG_END (DWORD len)
)
{
COUNT num_bytes;
FILE *out_fp;
INDEX_HEADERPTR ResHeaderPtr;
printf ("\tEXTRACTING %lu bytes @ '%s'\n", len, file_name[name_index]);
ResHeaderPtr = _get_current_index_header ();
if (CountPackageInstances (ResHeaderPtr, res_package) == 1)
{
RES_PACKAGE r;
r = res_package;
do
{
if (r == ResHeaderPtr->num_packages)
len = LengthResFile (fp);
else if (GET_PACKAGE (
ResHeaderPtr->PackageList[r].packmem_info
) != GET_PACKAGE (
ResHeaderPtr->PackageList[res_package - 1].packmem_info
))
len = 0;
else
len = (ResHeaderPtr->PackageList[r].flags_and_data_loc
& ~0xFF000000);
++r;
} while (len == 0);
len -= ftell (fp);
printf ("\t\tOVERRIDING length (%lu)\n", len);
#ifdef DEBUG
{
#include <conio.h>
while (!kbhit ());
getch ();
}
#endif /* DEBUG */
}
out_fp = fopen (file_name[name_index++], "wb");
do
{
num_bytes = len <= sizeof (workbuf) ? (COUNT)len : sizeof (workbuf);
fread (workbuf, num_bytes, 1, fp);
fwrite (workbuf, num_bytes, 1, out_fp);
} while (len -= num_bytes);
fclose (out_fp);
return (0);
}
PROC(STATIC
MEM_HANDLE GetFileName, (fp, len),
ARG (FILE *fp)
ARG_END (DWORD len)
)
{
printf ("FOUND '%s'\n", _cur_resfile_name);
strcpy (file_name[name_index++], _cur_resfile_name);
return (0);
}
PROC(
void CDECL main, (argc, argv),
ARG (int argc)
ARG_END (char **argv)
)
{
COUNT i, num_types;
MEM_HANDLE hPkg, hNdx;
INDEX_HEADERPTR ResHeaderPtr;
mem_init ((MEM_SIZE)0, 0, NULL_PTR);
hPkg = InitResourceSystem (argv[1], 0, NULL_PTR);
ResHeaderPtr = _get_current_index_header ();
num_types = CountResourceTypes ();
for (i = 1; i <= num_types; ++i)
{
InstallResTypeVectors (i, WriteData, NULL_PTR);
}
hNdx = OpenResourceIndexFile (argv[2]);
SetResourceIndex (hNdx);
for (i = 1; i <= num_types; ++i)
{
InstallResTypeVectors (i, GetFileName, NULL_PTR);
}
for (res_package = 1;
res_package <= ResHeaderPtr->num_packages;
++res_package)
{
PROC_GLOBAL(
MEM_HANDLE near load_package, (ResHeaderPtr, res_package),
ARG (INDEX_HEADERPTR ResHeaderPtr)
ARG_END (RES_PACKAGE res_package)
);
name_index = 0;
SetResourceIndex (hNdx);
load_package (_get_current_index_header (), res_package);
name_index = 0;
SetResourceIndex (hPkg);
load_package (_get_current_index_header (), res_package);
}
CloseResourceIndex (hNdx);
UninitResourceSystem ();
mem_uninit ();
exit (0);
}