Fixed the update-libraries script (thanks to Anderson Souza) and added a basic Linux daemon for the server

This commit is contained in:
Fatbag 2012-11-11 17:10:53 -06:00
parent bb904c4698
commit 5444c9aea6
19 changed files with 260 additions and 84 deletions

View file

@ -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> &ndash; %u chunks</div>\n", IFFFileInfo->ChunkCount);
fprintf(hFile, "<div id=\"toc\"><div><b>Contents</b> &ndash; %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) ? " &ndash; " : "", 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) ? " &ndash; " : "", 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");

View file

@ -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);
}

View file

@ -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> &ndash; %u chunk types</div>\n", Stats->ChunkTypeCount);
fprintf(OutFile, "<div id=\"toc\"><div><b>Contents</b> &ndash; %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;
}

View file

@ -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);