From 6b20e0f167f6980c103369db5fa3fe96b5402216 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Sun, 12 Jun 2022 19:08:31 +0800 Subject: [PATCH] :rocket: add os.time() to get the local time string --- README.md | 4 ++- lib.nas | 3 +- nasal_builtin.h | 12 +++++++ stl/fg_env.nas | 89 ++++++++++++++++++++++++------------------------- stl/lib.nas | 3 +- 5 files changed, 62 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 71e3de4..cfb9a32 100644 --- a/README.md +++ b/README.md @@ -117,9 +117,11 @@ Or use this in __`linux/macOS/Unix`__ > [cpp compiler] -std=c++11 -O3 main.cpp -o nasal -fno-exceptions -ldl -Or using makefile,`mingw32-make` is __`Windows`__ platform's `make`: +Or using makefile,`mingw32-make` is __`Windows(MinGW-w64)`__ platform's `make`: > mingw32-make nasal.exe +> +> mingw32-make.exe nasal.exe in __`linux/macOS/Unix`__: diff --git a/lib.nas b/lib.nas index c06306e..7000d43 100644 --- a/lib.nas +++ b/lib.nas @@ -440,7 +440,8 @@ var dylib= var os= { # get a string that tell which os it runs on. - platform: func(){return __builtin_platform;} + platform: func(){return __builtin_platform;}, + time: func(){return __builtin_logtime; } }; # runtime gives us some functions that we could manage it manually. diff --git a/nasal_builtin.h b/nasal_builtin.h index 50ce961..778b916 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -100,6 +100,7 @@ nas_native(builtin_costatus); nas_native(builtin_corun); nas_native(builtin_millisec); nas_native(builtin_sysargv); +nas_native(builtin_logtime); nasal_ref builtin_err(const char* func_name,const std::string& info) { @@ -206,6 +207,7 @@ struct {"__builtin_corun" ,builtin_corun }, {"__builtin_millisec",builtin_millisec}, {"__builtin_sysargv", builtin_sysargv }, + {"__builtin_logtime", builtin_logtime }, {nullptr, nullptr } }; @@ -1454,4 +1456,14 @@ nasal_ref builtin_sysargv(nasal_ref* local,nasal_gc& gc) res.vec().elems=gc.env_argv; return res; } +nasal_ref builtin_logtime(nasal_ref* local,nasal_gc& gc) +{ + time_t t=time(nullptr); + tm* tm_t=localtime(&t); + char s[128]; + sprintf(s,"%d-%.2d-%.2d %.2d:%.2d:%.2d",tm_t->tm_year+1900,tm_t->tm_mon+1,tm_t->tm_mday,tm_t->tm_hour,tm_t->tm_min,tm_t->tm_sec); + nasal_ref res=gc.alloc(vm_str); + res.str()=s; + return res; +} #endif \ No newline at end of file diff --git a/stl/fg_env.nas b/stl/fg_env.nas index 8fa737a..b06db61 100644 --- a/stl/fg_env.nas +++ b/stl/fg_env.nas @@ -10,9 +10,6 @@ println("-------------------------------------------------------------"); println(" See help using command line argument: --fg-env-help"); println("-------------------------------------------------------------"); -var fg_env_global_timestamp=maketimestamp(); -fg_env_global_timestamp.stamp(); - var fg_env_cli={ "--fg-env-help":{ info:"get help", @@ -50,27 +47,27 @@ var fg_env_cli={ } }; -println("[\e[32m fg_env \e[0m] [",fg_env_global_timestamp.elapsedMSec()/1000,"] init begin"); -println("[\e[32m maketimer \e[0m] [",fg_env_global_timestamp.elapsedMSec()/1000,"] init tasks"); -println("[\e[32m maketimer \e[0m] [",fg_env_global_timestamp.elapsedMSec()/1000,"] init events"); +println("[\e[32m fg_env \e[0m] [",os.time(),"] init begin"); +println("[\e[32m maketimer \e[0m] [",os.time(),"] init tasks"); +println("[\e[32m maketimer \e[0m] [",os.time(),"] init events"); var fg_globals={ task:{}, event:{} }; -println("[\e[32m maketimer \e[0m] [",fg_env_global_timestamp.elapsedMSec()/1000,"] new func add_event(name,interval,function)"); +println("[\e[32m maketimer \e[0m] [",os.time(),"] new func add_event(name,interval,function)"); var add_event=func(name,interval,function){ fg_globals.event[name]=coroutine.create(func{ var timestamp=maketimestamp(); timestamp.stamp(); while(timestamp.elapsedMSec()