[rott-commits] r287 - trunk/rott
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Mon Mar 9 14:04:35 EDT 2015
Author: fabian
Date: 2015-03-09 14:04:35 -0400 (Mon, 09 Mar 2015)
New Revision: 287
Modified:
trunk/rott/rt_cfg.c
trunk/rott/rt_cfg.h
trunk/rott/rt_game.c
trunk/rott/rt_main.c
trunk/rott/rt_ted.c
trunk/rott/rt_util.c
Log:
First attempt to eliminate fixed-size string, ne char[], variables
This commit makes the "-filertl" and "-filertc" parameters work with
file names of any lengths. It is not yet complete, though.
Modified: trunk/rott/rt_cfg.c
===================================================================
--- trunk/rott/rt_cfg.c 2015-02-24 17:09:53 UTC (rev 286)
+++ trunk/rott/rt_cfg.c 2015-03-09 18:04:35 UTC (rev 287)
@@ -2048,13 +2048,12 @@
void GetAlternatePath (char * tokenstr, AlternateInformation *info)
{
- strcpy (&info->path[0], ".\0");
+ info->path = ".";
GetToken (true);
if (!stricmp (token, tokenstr))
{
GetTokenEOL (false);
- memset (&info->path[0], 0, sizeof (info->path));
- strcpy (&info->path[0], &name[0]);
+ info->path = strdup(name);
}
}
@@ -2069,7 +2068,7 @@
{
// Read in remote sound file
//
- strcpy (&info->file[0], "foo.foo\0");
+ info->file = "foo.foo";
GetToken (true);
if (!stricmp (token, tokenstr))
{
@@ -2080,11 +2079,10 @@
{
#if (SHAREWARE == 0)
info->avail = true;
- memset (&info->file[0], 0, sizeof (info->file));
- strcpy (&info->file[0], &token[0]);
+ info->file = strdup(token);
#else
printf("Alternate file %s ignored.\n",token);
- memset (&info->file[0], 0, sizeof (info->file));
+ info->file = "";
#endif
}
}
Modified: trunk/rott/rt_cfg.h
===================================================================
--- trunk/rott/rt_cfg.h 2015-02-24 17:09:53 UTC (rev 286)
+++ trunk/rott/rt_cfg.h 2015-03-09 18:04:35 UTC (rev 287)
@@ -75,9 +75,9 @@
typedef struct
{
- char path[41];
+ char *path;
boolean avail;
- char file[14];
+ char *file;
} AlternateInformation;
extern AlternateInformation RemoteSounds;
Modified: trunk/rott/rt_game.c
===================================================================
--- trunk/rott/rt_game.c 2015-02-24 17:09:53 UTC (rev 286)
+++ trunk/rott/rt_game.c 2015-03-09 18:04:35 UTC (rev 287)
@@ -4854,8 +4854,8 @@
memset (&game->info, 0, sizeof (game->info));
if (GameLevels.avail == true)
{
- memcpy (&game->info.path[0], &GameLevels.path[0], sizeof (GameLevels.path));
- memcpy (&game->info.file[0], &GameLevels.file[0], sizeof (GameLevels.file));
+ game->info.path = GameLevels.path;
+ game->info.file = GameLevels.file;
game->info.avail = true;
}
Modified: trunk/rott/rt_main.c
===================================================================
--- trunk/rott/rt_main.c 2015-02-24 17:09:53 UTC (rev 286)
+++ trunk/rott/rt_main.c 2015-03-09 18:04:35 UTC (rev 287)
@@ -842,7 +842,7 @@
{
char *newargs[99];
int i, arg, argnum = 0;
- char tempstr[129];
+ char *tempstr = NULL;
char *PStrings[] = {"AIM", "FULLSCREEN", "WINDOW", "RESOLUTION", NULL };
// These must be checked here so that they can override the cfg file
@@ -888,8 +888,9 @@
arg = CheckParm ("filertl");
if (arg!=0)
{
- FILE *f;char buf[32];
+ FILE *f;char *buf = malloc(32);
if (_argv[arg+1] != 0) { //are there a filename included
+ tempstr = realloc(tempstr, 129 + strlen(_argv[arg+1]));
strcpy (tempstr,_argv[arg+1]);//copy it to tempstr
if (strlen (tempstr) < MAX_PATH) {
if (access (tempstr, 0) != 0) { //try open
@@ -908,8 +909,9 @@
}else{
fread(buf,3,3,f);//is the 3 first letters RTL (RTC)
if (((strstr(buf,"RTL") != 0)||strstr(buf,"RTC") != 0)) {
- strcpy (GameLevels.file,tempstr);
+ GameLevels.file = strdup(tempstr);
GameLevels.avail++;
+ buf = realloc(buf, 32 + strlen(tempstr));
strcpy (buf,"Adding ");
strcat (buf,tempstr);
printf("%s", buf);
@@ -918,6 +920,7 @@
}
}
}else{printf("Missing RTL filename");}
+ free(buf);
}
NoRTL:;
// Check for rtc files
@@ -924,8 +927,9 @@
arg = CheckParm ("filertc");
if (arg!=0)
{
- FILE *f;char buf[32];
+ FILE *f;char *buf = malloc(32);
if (_argv[arg+1] != 0) { //are there a filename included
+ tempstr = realloc(tempstr, 129 + strlen(_argv[arg+1]));
strcpy (tempstr,_argv[arg+1]);//copy it to tempstr
if (strlen (tempstr) < MAX_PATH) {
if (access (tempstr, 0) != 0) { //try open
@@ -944,8 +948,9 @@
}else{
fread(buf,3,3,f);//is the 3 first letters RTL (RTC)
if (((strstr(buf,"RTL") != 0)||strstr(buf,"RTC") != 0)) {
- strcpy (BattleLevels.file,tempstr);
+ BattleLevels.file = strdup(tempstr);
BattleLevels.avail++;
+ buf = realloc(buf, 32 + strlen(tempstr));
strcpy (buf,"Adding ");
strcat (buf,tempstr);
printf("%s", buf);
@@ -954,6 +959,7 @@
}
}
}else{printf("Missing RTC filename");}
+ free(buf);
}
NoRTC:;
@@ -1002,12 +1008,13 @@
{
char *src;
+ tempstr = realloc(tempstr, strlen(RemoteSounds.path) + strlen(RemoteSounds.file) + 2);
strcpy (tempstr,RemoteSounds.path);
src = RemoteSounds.path + strlen(RemoteSounds.path) - 1;
if (*src != '\\')
strcat (tempstr,"\\\0");
strcat (tempstr,RemoteSounds.file);
- newargs [argnum++] = tempstr;
+ newargs [argnum++] = strdup(tempstr);
}
else
{
@@ -1014,6 +1021,9 @@
newargs [argnum++] = DATADIR "REMOTE1.RTS";
}
+ if (tempstr)
+ free(tempstr);
+
newargs [argnum++] = NULL;
W_InitMultipleFiles(newargs);
Modified: trunk/rott/rt_ted.c
===================================================================
--- trunk/rott/rt_ted.c 2015-02-24 17:09:53 UTC (rev 286)
+++ trunk/rott/rt_ted.c 2015-03-09 18:04:35 UTC (rev 287)
@@ -1669,8 +1669,7 @@
void SetBattleMapFileName ( char * filename )
{
BattleLevels.avail = true;
- memset (&(BattleLevels.file[0]), 0, sizeof (BattleLevels.file));
- strcpy (&(BattleLevels.file[0]), filename);
+ BattleLevels.file = strdup(filename);
}
/*
Modified: trunk/rott/rt_util.c
===================================================================
--- trunk/rott/rt_util.c 2015-02-24 17:09:53 UTC (rev 286)
+++ trunk/rott/rt_util.c 2015-03-09 18:04:35 UTC (rev 287)
@@ -1851,7 +1851,7 @@
return (true);
#else
- if (!*path) {
+ if (!path || !*path) {
return true;
}
More information about the rott-commits
mailing list