]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_edict.c
added cl_beams_* cvars to effects options menu
[xonotic/darkplaces.git] / prvm_edict.c
index 4baf85d5e26b3f809bafe3723684153b51b29645..1f219f43ae05ce42cf503103d12a2584cffc911e 100644 (file)
@@ -383,7 +383,7 @@ char *PRVM_ValueString (etype_t type, prvm_eval_t *val)
        switch (type)
        {
        case ev_string:
-               strncpy(line, PRVM_GetString(val->string), sizeof(line));
+               strlcpy (line, PRVM_GetString (val->string), sizeof (line));
                break;
        case ev_entity:
                n = val->edict;
@@ -470,7 +470,7 @@ char *PRVM_UglyValueString (etype_t type, prvm_eval_t *val)
                break;
        case ev_function:
                f = pr_functions + val->function;
-               strncpy(line, PRVM_GetString(f->s_name), sizeof(line));
+               strlcpy (line, PRVM_GetString (f->s_name), sizeof (line));
                break;
        case ev_field:
                def = PRVM_ED_FieldAtOfs ( val->_int );
@@ -595,7 +595,7 @@ void PRVM_ED_Print(prvm_edict_t *ed)
 
                if (strlen(name) > 256)
                {
-                       strncpy(tempstring2, name, 256);
+                       memcpy (tempstring2, name, 256);
                        tempstring2[256] = tempstring2[257] = tempstring2[258] = '.';
                        tempstring2[259] = 0;
                        name = tempstring2;
@@ -608,7 +608,7 @@ void PRVM_ED_Print(prvm_edict_t *ed)
                name = PRVM_ValueString(d->type, (prvm_eval_t *)v);
                if (strlen(name) > 256)
                {
-                       strncpy(tempstring2, name, 256);
+                       memcpy (tempstring2, name, 256);
                        tempstring2[256] = tempstring2[257] = tempstring2[258] = '.';
                        tempstring2[259] = 0;
                        name = tempstring2;
@@ -1269,21 +1269,15 @@ void PRVM_LoadProgs (const char * filename, int numrequiredfunc, char **required
        int i;
        dstatement_t *st;
        ddef_t *infielddefs;
-       void *temp;
        dfunction_t *dfunctions;
 
        Mem_EmptyPool(prog->progs_mempool);
        Mem_EmptyPool(prog->edictstring_mempool);
 
-       temp = FS_LoadFile (filename, false);
-       if (temp == 0)
+       prog->progs = (dprograms_t *)FS_LoadFile (filename, prog->progs_mempool, false);
+       if (prog->progs == NULL)
                PRVM_ERROR ("PRVM_LoadProgs: couldn't load %s for %s", filename, PRVM_NAME);
 
-       prog->progs = (dprograms_t *)Mem_Alloc(prog->progs_mempool, fs_filesize);
-
-       memcpy(prog->progs, temp, fs_filesize);
-       Mem_Free(temp);
-
        Con_DPrintf("%s programs occupy %iK.\n", PRVM_NAME, fs_filesize/1024);
 
        pr_crc = CRC_Block((qbyte *)prog->progs, fs_filesize);
@@ -1603,7 +1597,7 @@ void PRVM_Fields_f (void)
                }
                if (strlen(name) > 256)
                {
-                       strncpy(tempstring2, name, 256);
+                       memcpy (tempstring2, name, 256);
                        tempstring2[256] = tempstring2[257] = tempstring2[258] = '.';
                        tempstring2[259] = 0;
                        name = tempstring2;
@@ -1659,6 +1653,31 @@ void PRVM_Globals_f (void)
        PRVM_End;
 }
 
+/*
+===============
+PRVM_Global
+===============
+*/
+void PRVM_Global_f(void)
+{
+       ddef_t *global;
+       if( Cmd_Argc() != 3 ) {
+               Con_Printf( "prvm_global <program name> <global name>\n" );
+               return;
+       }
+
+       PRVM_Begin;
+       if( !PRVM_SetProgFromString( Cmd_Argv(1) ) )
+               return;
+
+       global = PRVM_ED_FindGlobal( Cmd_Argv(2) );
+       if( !global )
+               Con_Printf( "No global '%s' in %s!\n", Cmd_Argv(2), Cmd_Argv(1) );
+       else
+               Con_Printf( "%s: %s\n", Cmd_Argv(2), PRVM_ValueString( global->type, (prvm_eval_t *) &prog->globals[ global->ofs ] ) ); 
+       PRVM_End;
+}
+
 /*
 ===============
 PRVM_Init
@@ -1672,6 +1691,7 @@ void PRVM_Init (void)
        Cmd_AddCommand ("prvm_profile", PRVM_Profile_f);
        Cmd_AddCommand ("prvm_fields", PRVM_Fields_f);
        Cmd_AddCommand ("prvm_globals", PRVM_Globals_f);
+       Cmd_AddCommand ("prvm_global", PRVM_Global_f);
        Cmd_AddCommand ("prvm_edictset", PRVM_ED_EdictSet_f);
        // LordHavoc: optional runtime bounds checking (speed drain, but worth it for security, on by default - breaks most QCCX features (used by CRMod and others))
        Cvar_RegisterVariable (&prvm_boundscheck);