mirror of
https://github.com/simtactics/mysimulation.git
synced 2025-07-04 13:47:04 -04:00
Fixed the update-libraries script (thanks to Anderson Souza) and added a basic Linux daemon for the server
This commit is contained in:
parent
bb904c4698
commit
5444c9aea6
19 changed files with 260 additions and 84 deletions
|
@ -60,7 +60,7 @@ int main(int argc, char *argv[]){
|
|||
struct MD5Context md5c;
|
||||
unsigned char digest[16];
|
||||
uint8_t * IFFData;
|
||||
IFFFile * IFFFileInfo;
|
||||
IFFFile IFFFileInfo;
|
||||
IFFChunk * ChunkData;
|
||||
|
||||
if(argc == 1 || !strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")){
|
||||
|
@ -139,12 +139,11 @@ int main(int argc, char *argv[]){
|
|||
** Load header information
|
||||
*/
|
||||
|
||||
IFFFileInfo = iff_create();
|
||||
if(IFFFileInfo == NULL){
|
||||
if(!iff_create(&IFFFileInfo)){
|
||||
printf("%sMemory for this file could not be allocated.", "iff2html: error: ");
|
||||
return -1;
|
||||
}
|
||||
if(!iff_read_header(IFFFileInfo, IFFData, FileSize)){
|
||||
if(!iff_read_header(&IFFFileInfo, IFFData, FileSize)){
|
||||
printf("%sNot a valid IFF file.", "iff2html: error: ");
|
||||
return -1;
|
||||
}
|
||||
|
@ -153,7 +152,7 @@ int main(int argc, char *argv[]){
|
|||
** Load entry information
|
||||
*/
|
||||
|
||||
if(!iff_enumerate_chunks(IFFFileInfo, IFFData+64, FileSize-64)){
|
||||
if(!iff_enumerate_chunks(&IFFFileInfo, IFFData+64, FileSize-64)){
|
||||
printf("%sChunk data is corrupt.", "iff2html: error: ");
|
||||
return -1;
|
||||
}
|
||||
|
@ -164,7 +163,7 @@ int main(int argc, char *argv[]){
|
|||
MD5Final(digest, &md5c);
|
||||
free(IFFData);
|
||||
|
||||
for(c = 0, ChunkData = IFFFileInfo->Chunks; c < IFFFileInfo->ChunkCount; c++, ChunkData++)
|
||||
for(c = 0, ChunkData = IFFFileInfo.Chunks; c < IFFFileInfo.ChunkCount; c++, ChunkData++)
|
||||
iff_parse_chunk(ChunkData, ChunkData->Data);
|
||||
|
||||
/****
|
||||
|
@ -292,9 +291,9 @@ int main(int argc, char *argv[]){
|
|||
fprintf(hFile, "</div>\n");
|
||||
fprintf(hFile, "<div>Dumped by iff2html.</div></div>\n");
|
||||
fprintf(hFile, "\n");
|
||||
fprintf(hFile, "<div id=\"toc\"><div><b>Contents</b> – %u chunks</div>\n", IFFFileInfo->ChunkCount);
|
||||
fprintf(hFile, "<div id=\"toc\"><div><b>Contents</b> – %u chunks</div>\n", IFFFileInfo.ChunkCount);
|
||||
fprintf(hFile, "<ul>\n");
|
||||
for(c=1, ChunkData = IFFFileInfo->Chunks; c <= IFFFileInfo->ChunkCount; c++, ChunkData++)
|
||||
for(c=1, ChunkData = IFFFileInfo.Chunks; c <= IFFFileInfo.ChunkCount; c++, ChunkData++)
|
||||
fprintf(hFile, "<li><a href=\"#chunk%u_%.4x\">%u [%s] (%.4X)%s%s</a></li>\n",
|
||||
c, ChunkData->ChunkID, c, ChunkData->Type, ChunkData->ChunkID,
|
||||
(ChunkData->Label[0] != 0x00) ? " – " : "", ChunkData->Label);
|
||||
|
@ -302,7 +301,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(hFile, "</div>\n");
|
||||
fprintf(hFile, "\n");
|
||||
|
||||
for(c=0, ChunkData = IFFFileInfo->Chunks; c < IFFFileInfo->ChunkCount; c++, ChunkData++){
|
||||
for(c=0, ChunkData = IFFFileInfo.Chunks; c < IFFFileInfo.ChunkCount; c++, ChunkData++){
|
||||
fprintf(hFile, "<h2 id=\"chunk%u_%.4x\">%u [%s] (%.4X)%s%s <a href=\"#chunk%u_%.4x\">(Jump)</a></h2>\n",
|
||||
c+1, ChunkData->ChunkID, c+1, ChunkData->Type, ChunkData->ChunkID,
|
||||
(ChunkData->Label[0] != 0x00) ? " – " : "", ChunkData->Label,
|
||||
|
@ -555,9 +554,9 @@ int main(int argc, char *argv[]){
|
|||
fprintf(hFile, "</table>\n");
|
||||
|
||||
if(SpriteList->PaletteID < 0xFFFF){
|
||||
Palette = iff_find_chunk(IFFFileInfo, "PALT", SpriteList->PaletteID);
|
||||
if(!Palette || !Palette->FormattedData) Palette = iff_find_chunk(IFFFileInfo, "PALT", ChunkData->ChunkID);
|
||||
if(!Palette || !Palette->FormattedData) Palette = iff_find_chunk(IFFFileInfo, "PALT", -1);
|
||||
Palette = iff_find_chunk(&IFFFileInfo, "PALT", SpriteList->PaletteID);
|
||||
if(!Palette || !Palette->FormattedData) Palette = iff_find_chunk(&IFFFileInfo, "PALT", ChunkData->ChunkID);
|
||||
if(!Palette || !Palette->FormattedData) Palette = iff_find_chunk(&IFFFileInfo, "PALT", -1);
|
||||
}
|
||||
if(!Palette || !Palette->FormattedData){
|
||||
memset(&BlankPalette, 0, sizeof(IFFPalette));
|
||||
|
@ -697,7 +696,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
fprintf(hFile, "</div>\n\n");
|
||||
}
|
||||
iff_delete(IFFFileInfo);
|
||||
iff_delete(&IFFFileInfo);
|
||||
|
||||
fprintf(hFile,
|
||||
"<div id=\"footer\">This page was generated by the use of <a href=\"http://www.niotso.org/\">iff2html</a>.\n");
|
||||
|
|
|
@ -21,11 +21,9 @@
|
|||
#include <iff/iff.h>
|
||||
#include "tsoscan.h"
|
||||
|
||||
IFFStats* stats_create(){
|
||||
IFFStats *stats = calloc(1, sizeof(IFFStats));
|
||||
if (stats == NULL) return NULL;
|
||||
int stats_create(IFFStats *stats){
|
||||
stats->AverageChunkCount = -1;
|
||||
return stats;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int stats_version_increment(IFFStats *stats, char *type, unsigned version){
|
||||
|
@ -107,5 +105,4 @@ void stats_delete(IFFStats *stats){
|
|||
free(stats->ChunkTypes[i].Versions);
|
||||
free(stats->ChunkTypes);
|
||||
}
|
||||
free(stats);
|
||||
}
|
|
@ -39,10 +39,10 @@ int main(int argc, char *argv[]){
|
|||
CommandLineArgs *CmdArgs;
|
||||
unsigned i, version, FileCount = 0;
|
||||
char **Files = NULL;
|
||||
IFFStats *Stats = stats_create();
|
||||
IFFStats Stats;
|
||||
FILE *OutFile;
|
||||
|
||||
if(Stats == NULL){
|
||||
if(!stats_create(&Stats)){
|
||||
printf("%sUnable to allocate enough memory.\n", TSOSCAN_ERROR);
|
||||
return -1;
|
||||
}
|
||||
|
@ -114,13 +114,11 @@ int main(int argc, char *argv[]){
|
|||
** Load and parse IFF files
|
||||
*/
|
||||
|
||||
Stats->AverageChunkCount = -1;
|
||||
|
||||
for(i=0; i<FileCount; i++){
|
||||
FILE *file;
|
||||
size_t FileSize;
|
||||
uint8_t *data;
|
||||
IFFFile *iff;
|
||||
IFFFile iff;
|
||||
IFFChunk *ChunkData;
|
||||
unsigned ChunkIndex;
|
||||
|
||||
|
@ -148,34 +146,33 @@ int main(int argc, char *argv[]){
|
|||
}
|
||||
fclose(file);
|
||||
|
||||
iff = iff_create();
|
||||
if(iff == NULL){
|
||||
if(!iff_create(&iff)){
|
||||
printf("%sUnable to allocate memory for the specified files.\n", TSOSCAN_ERROR);
|
||||
return -1;
|
||||
}
|
||||
if(!iff_read_header(iff, data, FileSize) || !iff_enumerate_chunks(iff, data+64, FileSize-64)){
|
||||
if(!iff_read_header(&iff, data, FileSize) || !iff_enumerate_chunks(&iff, data+64, FileSize-64)){
|
||||
/* Skip non-IFF files silently */
|
||||
free(data);
|
||||
continue;
|
||||
}
|
||||
free(data);
|
||||
|
||||
Stats->FileCount++;
|
||||
if(Stats->AverageChunkCount == -1){
|
||||
Stats->AverageChunkCount = iff->ChunkCount;
|
||||
Stats.FileCount++;
|
||||
if(Stats.AverageChunkCount == -1){
|
||||
Stats.AverageChunkCount = iff.ChunkCount;
|
||||
}else{
|
||||
Stats->AverageChunkCount += iff->ChunkCount;
|
||||
Stats->AverageChunkCount /= 2;
|
||||
Stats.AverageChunkCount += iff.ChunkCount;
|
||||
Stats.AverageChunkCount /= 2;
|
||||
}
|
||||
|
||||
for(ChunkIndex = 0, ChunkData = iff->Chunks; ChunkIndex < iff->ChunkCount; ChunkIndex++, ChunkData++){
|
||||
for(ChunkIndex = 0, ChunkData = iff.Chunks; ChunkIndex < iff.ChunkCount; ChunkIndex++, ChunkData++){
|
||||
unsigned version = stats_get_version(ChunkData->Type, ChunkData->Data);
|
||||
if(!stats_version_increment(Stats, ChunkData->Type, version)){
|
||||
if(!stats_version_increment(&Stats, ChunkData->Type, version)){
|
||||
printf("%sUnable to allocate enough memory.\n", TSOSCAN_ERROR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
iff_delete(iff);
|
||||
iff_delete(&iff);
|
||||
}
|
||||
|
||||
/****
|
||||
|
@ -274,23 +271,23 @@ int main(int argc, char *argv[]){
|
|||
fprintf(OutFile, "<h1>IFF Chunk Statistics (tsostats)</h1>\n");
|
||||
fprintf(OutFile, "<div id=\"attributes\">\n");
|
||||
fprintf(OutFile, "<table>\n");
|
||||
fprintf(OutFile, "<tr><td>Number of IFF files:</td><td>%u</td></tr>\n", Stats->FileCount);
|
||||
fprintf(OutFile, "<tr><td>Average chunk count:</td><td>%.1f</td></tr>\n", Stats->AverageChunkCount);
|
||||
fprintf(OutFile, "<tr><td>Number of IFF files:</td><td>%u</td></tr>\n", Stats.FileCount);
|
||||
fprintf(OutFile, "<tr><td>Average chunk count:</td><td>%.1f</td></tr>\n", Stats.AverageChunkCount);
|
||||
fprintf(OutFile, "</table>\n");
|
||||
fprintf(OutFile, "</div>\n");
|
||||
|
||||
fprintf(OutFile, "<div id=\"toc\"><div><b>Contents</b> – %u chunk types</div>\n", Stats->ChunkTypeCount);
|
||||
fprintf(OutFile, "<div id=\"toc\"><div><b>Contents</b> – %u chunk types</div>\n", Stats.ChunkTypeCount);
|
||||
fprintf(OutFile, "<ul>\n");
|
||||
for(i=0; i<Stats->ChunkTypeCount; i++)
|
||||
fprintf(OutFile, "<li><a href=\"#type%u\">%u %s</a></li>\n", i, i+1, Stats->ChunkTypes[i].Type);
|
||||
for(i=0; i<Stats.ChunkTypeCount; i++)
|
||||
fprintf(OutFile, "<li><a href=\"#type%u\">%u %s</a></li>\n", i, i+1, Stats.ChunkTypes[i].Type);
|
||||
fprintf(OutFile, "</ul>\n");
|
||||
fprintf(OutFile, "</div>\n");
|
||||
fprintf(OutFile, "\n");
|
||||
|
||||
for(i=0; i<Stats->ChunkTypeCount; i++){
|
||||
ChunkStats *chunk = Stats->ChunkTypes+i;
|
||||
for(i=0; i<Stats.ChunkTypeCount; i++){
|
||||
ChunkStats *chunk = Stats.ChunkTypes+i;
|
||||
|
||||
fprintf(OutFile, "<h2 id=\"type%u\">%u %s <a href=\"#type%u\">(Jump)</a></h2>\n", i, i+1, Stats->ChunkTypes[i].Type, i);
|
||||
fprintf(OutFile, "<h2 id=\"type%u\">%u %s <a href=\"#type%u\">(Jump)</a></h2>\n", i, i+1, Stats.ChunkTypes[i].Type, i);
|
||||
fprintf(OutFile, "<div>\n");
|
||||
|
||||
fprintf(OutFile, "<table>\n");
|
||||
|
@ -324,8 +321,8 @@ int main(int argc, char *argv[]){
|
|||
fprintf(OutFile, "</html>");
|
||||
fclose(OutFile);
|
||||
|
||||
printf("Generated statistics based on %u IFF files.\n", Stats->FileCount);
|
||||
printf("Generated statistics based on %u IFF files.\n", Stats.FileCount);
|
||||
cmd_delete(CmdArgs);
|
||||
stats_delete(Stats);
|
||||
stats_delete(&Stats);
|
||||
return 0;
|
||||
}
|
|
@ -59,7 +59,7 @@ typedef struct IFFStats_s
|
|||
CommandLineArgs* cmd_parse_args(int argc, char *argv[]);
|
||||
void cmd_delete(CommandLineArgs *args);
|
||||
|
||||
IFFStats* stats_create();
|
||||
int stats_create(IFFStats *stats);
|
||||
int stats_version_increment(IFFStats *stats, char *type, unsigned version);
|
||||
unsigned stats_get_version(char *type, uint8_t *data);
|
||||
void stats_delete(IFFStats *stats);
|
Loading…
Add table
Add a link
Reference in a new issue