/*
- Copyright (C) 1999-2006 Id Software, Inc. and contributors.
+ Copyright (C) 1999-2007 id Software, Inc. and contributors.
For a list of contributors, see the accompanying CONTRIBUTORS file.
This file is part of GtkRadiant.
*/
void AddScriptToStack( const char *filename, int index ){
int size;
+ void* buffer;
script++;
if ( script == &scriptstack[MAX_INCLUDES] ) {
}
strcpy( script->filename, ExpandPath( filename ) );
- size = vfsLoadFile( script->filename, (void **)&script->buffer, index );
+ size = vfsLoadFile( script->filename, &buffer, index );
if ( size == -1 ) {
Sys_Printf( "Script file %s was not found\n", script->filename );
+ script--;
}
else
{
else{
Sys_Printf( "entering %s\n", script->filename );
}
- }
- script->line = 1;
- script->script_p = script->buffer;
- script->end_p = script->buffer + size;
+ script->buffer = buffer;
+ script->line = 1;
+ script->script_p = script->buffer;
+ script->end_p = script->buffer + size;
+ }
}
endofscript = qfalse;
tokenready = qfalse;
}
+/* &unload current; for autopacker */
+void SilentLoadScriptFile( const char *filename, int index ){
+ int size;
+
+ if ( script->buffer != NULL && !endofscript ) {
+ free( script->buffer );
+ script->buffer = NULL;
+ }
+
+ script = scriptstack;
+
+ script++;
+ if ( script == &scriptstack[MAX_INCLUDES] ) {
+ Error( "script file exceeded MAX_INCLUDES" );
+ }
+ strcpy( script->filename, ExpandPath( filename ) );
+
+ size = vfsLoadFile( script->filename, (void **)&script->buffer, index );
+ if ( size == -1 ) {
+ Sys_Printf( "Script file %s was not found\n", script->filename );
+ }
+ script->line = 1;
+ script->script_p = script->buffer;
+ script->end_p = script->buffer + size;
+
+ endofscript = qfalse;
+ tokenready = qfalse;
+}
/*
==============
qboolean EndOfScript( qboolean crossline ){
if ( !crossline ) {
- Error( "Line %i is incomplete\n",scriptline );
+ Error( "Line %i is incomplete\nFile location be: %s\n", scriptline, g_strLoadedFileLocation );
}
if ( !strcmp( script->filename, "memory buffer" ) ) {
}
if ( script->buffer == NULL ) {
- Sys_Printf( "WARNING: Attempt to free already freed script buffer\n" );
+ Sys_FPrintf( SYS_WRN, "WARNING: Attempt to free already freed script buffer\n" );
}
else{
free( script->buffer );
// skip space
//
skipspace:
- while ( *script->script_p <= 32 )
+ while ( script->script_p < script->end_p && *script->script_p <= 32 )
{
if ( script->script_p >= script->end_p ) {
return EndOfScript( crossline );
}
if ( *script->script_p++ == '\n' ) {
if ( !crossline ) {
- Error( "Line %i is incomplete\n",scriptline );
+ Error( "Line %i is incomplete\nFile location be: %s\n", scriptline, g_strLoadedFileLocation );
}
script->line++;
scriptline = script->line;
if ( *script->script_p == ';' || *script->script_p == '#'
|| ( script->script_p[0] == '/' && script->script_p[1] == '/' ) ) {
if ( !crossline ) {
- Error( "Line %i is incomplete\n",scriptline );
+ Error( "Line %i is incomplete\nFile location be: %s\n", scriptline, g_strLoadedFileLocation );
}
while ( *script->script_p++ != '\n' )
if ( script->script_p >= script->end_p ) {
// /* */ comments
if ( script->script_p[0] == '/' && script->script_p[1] == '*' ) {
if ( !crossline ) {
- Error( "Line %i is incomplete\n",scriptline );
+ Error( "Line %i is incomplete\nFile location be: %s\n", scriptline, g_strLoadedFileLocation );
}
script->script_p += 2;
while ( script->script_p[0] != '*' && script->script_p[1] != '/' )
break;
}
if ( token_p == &token[MAXTOKEN] ) {
- Error( "Token too large on line %i\n",scriptline );
+ Error( "Token too large on line %i\nFile location be: %s\n", scriptline, g_strLoadedFileLocation );
}
}
script->script_p++;
break;
}
if ( token_p == &token[MAXTOKEN] ) {
- Error( "Token too large on line %i\n",scriptline );
+ Error( "Token too large on line %i\nFile location be: %s\n", scriptline, g_strLoadedFileLocation );
}
}
}