summaryrefslogtreecommitdiff
path: root/src/d_main.c
diff options
context:
space:
mode:
authorSimon Howard2007-01-05 23:38:19 +0000
committerSimon Howard2007-01-05 23:38:19 +0000
commitf670f6003cc4b7d2391957a6dac55f5bf3ca325e (patch)
tree0b92750ba5bf0d0887d99fc19a974947ee38ecfd /src/d_main.c
parenta64a06c4bb5d9ebcc6bb8e8c6897da1de692f7d1 (diff)
downloadchocolate-doom-f670f6003cc4b7d2391957a6dac55f5bf3ca325e.tar.gz
chocolate-doom-f670f6003cc4b7d2391957a6dac55f5bf3ca325e.tar.bz2
chocolate-doom-f670f6003cc4b7d2391957a6dac55f5bf3ca325e.zip
Move response file code to m_argv.c
Subversion-branch: /trunk/chocolate-doom Subversion-revision: 817
Diffstat (limited to 'src/d_main.c')
-rw-r--r--src/d_main.c163
1 files changed, 1 insertions, 162 deletions
diff --git a/src/d_main.c b/src/d_main.c
index 881e4dd9..cdf5dc35 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -590,167 +590,6 @@ static boolean D_AddFile(char *filename)
return handle != NULL;
}
-
-#define MAXARGVS 100
-
-static void LoadResponseFile(int argv_index)
-{
- FILE *handle;
- int size;
- char *infile;
- char *file;
- char *response_filename;
- char **newargv;
- int newargc;
- int i, k;
-
- response_filename = myargv[argv_index] + 1;
-
- // READ THE RESPONSE FILE INTO MEMORY
- handle = fopen(response_filename, "r");
-
- if (handle == NULL)
- {
- printf ("\nNo such response file!");
- exit(1);
- }
-
- printf("Found response file %s!\n", response_filename);
-
- // Find size of file
-
- fseek(handle, 0, SEEK_END);
- size = ftell(handle);
- fseek(handle, 0, SEEK_SET);
-
- // Read in the entire file
- // Allocate one byte extra - this is incase there is an argument
- // at the end of the response file, in which case a '\0' will be
- // needed.
-
- file = malloc(size + 1);
- fread(file, size, 1, handle);
- fclose(handle);
-
- // Create new arguments list array
-
- newargv = malloc(sizeof(char *) * MAXARGVS);
- newargc = 0;
- memset(newargv, 0, sizeof(char *) * MAXARGVS);
-
- // Copy all the arguments in the list up to the response file
-
- for (i=0; i<argv_index; ++i)
- {
- newargv[i] = myargv[i];
- ++newargc;
- }
-
- infile = file;
- k = 0;
-
- while(k < size)
- {
- // Skip past space characters to the next argument
-
- while(k < size && isspace(infile[k]))
- {
- ++k;
- }
-
- if (k >= size)
- {
- break;
- }
-
- // If the next argument is enclosed in quote marks, treat
- // the contents as a single argument. This allows long filenames
- // to be specified.
-
- if (infile[k] == '\"')
- {
- // Skip the first character(")
- ++k;
-
- newargv[newargc++] = &infile[k];
-
- // Read all characters between quotes
-
- while (k < size && infile[k] != '\"' && infile[k] != '\n')
- {
- ++k;
- }
-
- if (k >= size || infile[k] == '\n')
- {
- I_Error("Quotes unclosed in response file '%s'",
- response_filename);
- }
-
- // Cut off the string at the closing quote
-
- infile[k] = '\0';
- ++k;
- }
- else
- {
- // Read in the next argument until a space is reached
-
- newargv[newargc++] = &infile[k];
-
- while(k < size && !isspace(infile[k]))
- {
- ++k;
- }
-
- // Cut off the end of the argument at the first space
-
- infile[k] = '\0';
-
- ++k;
- }
- }
-
- // Add arguments following the response file argument
-
- for (i=argv_index + 1; i<myargc; ++i)
- {
- newargv[newargc] = myargv[i];
- ++newargc;
- }
-
- myargv = newargv;
- myargc = newargc;
-
-#if 0
- // Disabled - Vanilla Doom does not do this.
- // Display arguments
-
- printf("%d command-line args:\n", myargc);
-
- for (k=1; k<myargc; k++)
- {
- printf("'%s'\n", myargv[k]);
- }
-#endif
-}
-
-//
-// Find a Response File
-//
-void FindResponseFile (void)
-{
- int i;
-
- for (i = 1; i < myargc; i++)
- {
- if (myargv[i][0] == '@')
- {
- LoadResponseFile(i);
- }
- }
-}
-
// Startup banner
void PrintBanner(char *msg)
@@ -935,7 +774,7 @@ void D_DoomMain (void)
char file[256];
char demolumpname[9];
- FindResponseFile ();
+ M_FindResponseFile ();
// Undocumented "search for IWADs" parameter used by the setup
// tool.