r106 - trunk/tools/lvl_tools
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sat Mar 19 16:32:42 EST 2005
Author: jonas
Date: 2005-03-19 16:32:42 -0500 (Sat, 19 Mar 2005)
New Revision: 106
Modified:
trunk/tools/lvl_tools/lvl2magick.c
Log:
further improvements
Modified: trunk/tools/lvl_tools/lvl2magick.c
===================================================================
--- trunk/tools/lvl_tools/lvl2magick.c 2005-03-19 17:04:32 UTC (rev 105)
+++ trunk/tools/lvl_tools/lvl2magick.c 2005-03-19 21:32:42 UTC (rev 106)
@@ -43,7 +43,7 @@
typedef struct {
unsigned int start_num;
unsigned int size;
- char name[32];
+ char name[50];
Rectangle* geometry;
} LVLAnim;
@@ -285,7 +285,7 @@
void freeLVLAnimList(LVLAnim* lvlanims,unsigned int size) {
unsigned int i;
for (i=0; i< size; i++) {
- if (lvlanims[i].geometry!=NULL) free(lvlanims[i].geometry);
+ free(lvlanims[i].geometry);
}
free(lvlanims);
}
@@ -312,7 +312,7 @@
unsigned int parseDataFile(char* data_file_name, LVLAnim** lvlanims) {
const char data_id[]="LVLDATA";
unsigned int start_num, size, data_size=0;
- char name[32], line[80];
+ char name[50], line[80];
int match=0;
unsigned int i=0;
@@ -351,13 +351,15 @@
return 0;
}
+ /* parse the file */
i=0;
while (fgets(line,80,data_file)) {
+ /* TODO: ignore lines starting with: # */
match=sscanf(line, "%u %u %s\n", &start_num, &size, name);
if (match!=3) continue;
(*lvlanims)[i].start_num=start_num;
(*lvlanims)[i].size=size;
- strncpy((*lvlanims)[i].name,name,32);
+ strncpy((*lvlanims)[i].name,name,50);
(*lvlanims)[i].geometry=NULL;
i++;
@@ -463,6 +465,7 @@
(buf[2] != 'T') && (buf[3] != 'A')) {
printf("Invalid file\n");
fclose(lvl_file);
+ lvl_file=NULL;
EXIT(errno_invalid)
}
@@ -470,19 +473,6 @@
fstat(fileno(lvl_file), &sb);
data_size = (unsigned int)(sb.st_size);
- /* Check data_file */
- lvlanim_size=parseDataFile(config.data_file, &lvlanims);
-
- /* Change to the base directory */
- mkdir(config.basename, 0777);
- chdir(config.basename);
- printf("Directory: %s\n", config.basename);
-
- /* Create file for image informations */
- snprintf(buf,16,"%s.txt",config.basename);
- geom_file = fopen(buf,"w");
- geom_file = freopen(buf,"a",geom_file);
-
/* Map the entire file into process memory space */
if ((data = mmap(NULL, data_size, PROT_READ, MAP_PRIVATE, fileno(lvl_file), 0)) == MAP_FAILED) {
printf("ERROR: Unable to mmap the file content!\n");
@@ -528,6 +518,9 @@
}
}
+ /* Check data_file */
+ lvlanim_size=parseDataFile(config.data_file, &lvlanims);
+
if (lvlanims==NULL) {
if ( (lvlanims=(LVLAnim*)malloc(sizeof(LVLAnim))) == NULL) {
printf("Memory allocation of LVLAnim* failed!\n");
@@ -536,13 +529,18 @@
} else {
lvlanims->start_num=0;
lvlanims->size=tot_entries;
- strncpy(lvlanims->name,config.basename,32);
+ strncpy(lvlanims->name,config.basename,50);
lvlanims->geometry=NULL;
}
lvlanim_size=1;
}
if (lvlanim_size<=1) config.write&=~2;
+ /* Change to the base directory */
+ mkdir(config.basename, 0777);
+ chdir(config.basename);
+ printf("Directory: %s\n", config.basename);
+
/* ImageMagick: global stuff */
if (config.write!=0) {
image_info=CloneImageInfo((ImageInfo *) NULL);
@@ -596,7 +594,7 @@
if (config.write!=0) {
tmp_image=getFrame(img_offsets[j]+12,image_info,width,height);
if (config.write&4) {
- snprintf(buf, 32, "%s_%04u.%s",lvlanims[i].name,(j-lvlanims[i].start_num)+1,config.format);
+ snprintf(buf, 80, "%s_%04u.%s",lvlanims[i].name,(j-lvlanims[i].start_num)+1,config.format);
strcpy(tmp_image->filename,buf);
(void)WriteImage(image_info,tmp_image);
}
@@ -615,7 +613,7 @@
DestroyImageList(anim_list);
anim_list=NULL;
if (config.write&2) {
- snprintf(buf, 32, "%s.%s",lvlanims[i].name,config.format);
+ snprintf(buf, 80, "%s.%s",lvlanims[i].name,config.format);
strcpy(anim_image->filename,buf);
(void)WriteImage(image_info,anim_image);
}
@@ -644,6 +642,10 @@
}
/* Create the geometry file */
+ snprintf(buf,16,"%s.txt",config.basename);
+ geom_file = fopen(buf,"w");
+ geom_file = freopen(buf,"a",geom_file);
+
fprintf(geom_file,"LVLGEOM\n");
fprintf(geom_file,"Size %u %u\n\n",lvlanim_size,num_entries);
for (i=0; i<lvlanim_size; i++) {
@@ -678,7 +680,7 @@
if (data) munmap(data, data_size);
free(img_offsets);
- if (lvlanims) freeLVLAnimList(lvlanims,lvlanim_size);
+ if (lvlanims && lvlanim_size) freeLVLAnimList(lvlanims,lvlanim_size);
if (lvl_file!=NULL) fclose(lvl_file);
if (geom_file!=NULL) fclose(geom_file);
More information about the lostpenguins-commits
mailing list