added DP_QC_STRFTIME extension
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 8 Feb 2007 10:15:36 +0000 (10:15 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 8 Feb 2007 10:15:36 +0000 (10:15 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6803 d7cf8633-e32d-0410-b094-e92efae38249

clvm_cmds.c
prvm_cmds.c
prvm_cmds.h
svvm_cmds.c

index 3c9e089..0c52ef5 100644 (file)
@@ -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)
 };
index 568651c..4a5bcd0 100644 (file)
@@ -5,6 +5,7 @@
 // also applies here
 
 #include "prvm_cmds.h"
+#include <time.h>
 
 // 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, ...)
@@ -688,6 +689,34 @@ void VM_ftoe(void)
 
 /*
 =========
+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
 
 entity spawn()
index fc99f38..8f9fd6d 100644 (file)
@@ -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);
index e14737f..7f33f9c 100644 (file)
@@ -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)