From 7fe21433f8c26bd2442ab72707f7f6063c1932e7 Mon Sep 17 00:00:00 2001 From: havoc Date: Thu, 8 Feb 2007 10:15:36 +0000 Subject: [PATCH] added DP_QC_STRFTIME extension git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6803 d7cf8633-e32d-0410-b094-e92efae38249 --- clvm_cmds.c | 3 ++- prvm_cmds.c | 29 +++++++++++++++++++++++++++++ prvm_cmds.h | 1 + svvm_cmds.c | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/clvm_cmds.c b/clvm_cmds.c index 3c9e0891..0c52ef5f 100644 --- a/clvm_cmds.c +++ b/clvm_cmds.c @@ -69,6 +69,7 @@ char *vm_cl_extensions = "DP_QC_RANDOMVEC " "DP_QC_SINCOSSQRTPOW " //"DP_QC_STRINGBUFFERS " //[515]: not needed ? +"DP_QC_STRFTIME " "DP_QC_STRINGCOLORFUNCTIONS " "DP_QC_TRACEBOX " //"DP_QC_TRACETOSS " @@ -2585,7 +2586,7 @@ VM_atan2, // #474 float(float c, float s) VM_atan2 (DP_QC_ASINACOSATANATAN2T VM_tan, // #475 float(float a) VM_tan (DP_QC_ASINACOSATANATAN2TAN) VM_strlennocol, // #476 float(string s) : DRESK - String Length (not counting color codes) (DP_QC_STRINGCOLORFUNCTIONS) VM_strdecolorize, // #477 string(string s) : DRESK - Decolorized String (DP_QC_STRINGCOLORFUNCTIONS) -NULL, // #478 +VM_strftime, // #478 string(float uselocaltime, string format, ...) (DP_QC_STRFTIME) NULL, // #479 e10, e10 // #480-499 (LordHavoc) }; diff --git a/prvm_cmds.c b/prvm_cmds.c index 568651c4..4a5bcd0b 100644 --- a/prvm_cmds.c +++ b/prvm_cmds.c @@ -5,6 +5,7 @@ // also applies here #include "prvm_cmds.h" +#include // LordHavoc: changed this to NOT use a return statement, so that it can be used in functions that must return a value void VM_Warning(const char *fmt, ...) @@ -686,6 +687,34 @@ void VM_ftoe(void) PRVM_G_INT(OFS_RETURN) = ent; } +/* +========= +VM_strftime + +string strftime(float uselocaltime, string[, string ...]) +========= +*/ +void VM_strftime(void) +{ + time_t t; + struct tm *tm; + char fmt[VM_STRINGTEMP_LENGTH]; + char result[VM_STRINGTEMP_LENGTH]; + VM_VarString(0, fmt, sizeof(fmt)); + t = time(NULL); + if (PRVM_G_FLOAT(OFS_PARM0)) + tm = localtime(&t); + else + tm = gmtime(&t); + if (!tm) + { + PRVM_G_FLOAT(OFS_RETURN) = 0; + return; + } + strftime(result, sizeof(result), fmt, tm); + PRVM_G_FLOAT(OFS_RETURN) = PRVM_SetTempString(result); +} + /* ========= VM_spawn diff --git a/prvm_cmds.h b/prvm_cmds.h index fc99f380..8f9fd6dc 100644 --- a/prvm_cmds.h +++ b/prvm_cmds.h @@ -235,6 +235,7 @@ void VM_etos (void); void VM_stof(void); void VM_itof(void); void VM_ftoe(void); +void VM_strftime(void); void VM_spawn (void); void VM_remove (void); void VM_find (void); diff --git a/svvm_cmds.c b/svvm_cmds.c index e14737f6..7f33f9c1 100644 --- a/svvm_cmds.c +++ b/svvm_cmds.c @@ -67,6 +67,7 @@ char *vm_sv_extensions = "DP_QC_MULTIPLETEMPSTRINGS " "DP_QC_RANDOMVEC " "DP_QC_SINCOSSQRTPOW " +"DP_QC_STRFTIME " "DP_QC_STRINGBUFFERS " "DP_QC_STRINGCOLORFUNCTIONS " "DP_QC_UNLIMITEDTEMPSTRINGS " @@ -2883,6 +2884,7 @@ VM_atan2, // #474 float(float c, float s) VM_atan2 (DP_QC_ASINACOSATANATAN2T VM_tan, // #475 float(float a) VM_tan (DP_QC_ASINACOSATANATAN2TAN) VM_strlennocol, // #476 float(string s) : DRESK - String Length (not counting color codes) (DP_QC_STRINGCOLORFUNCTIONS) VM_strdecolorize, // #477 string(string s) : DRESK - Decolorized String (DP_SV_STRINGCOLORFUNCTIONS) +VM_strftime, // #478 string(float uselocaltime, string format, ...) (DP_QC_STRFTIME) NULL, // #478 NULL, // #479 e10, e10 // #480-499 (LordHavoc) -- 2.39.2