diff --git a/lib.nas b/lib.nas index 83569df..9669f67 100644 --- a/lib.nas +++ b/lib.nas @@ -61,6 +61,11 @@ var floor=func(val){ return __floor(val); } +# exit using std::exit +var exit=func(val=-1){ + return __exit(val); +} + # abort using std::abort var abort=func(){ __abort(); diff --git a/nasal_builtin.h b/nasal_builtin.h index d25ec3c..a801782 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -56,6 +56,11 @@ nas_ref builtin_println(nas_ref* local,nasal_gc& gc) std::cout<"); +} + +var argv=runtime.argv(); +if(size(argv)!=1){ + println(os_time(),err_hd(),"need correct file path to watch"); + usage(); + exit(-1); +} +var filename=argv[0]; +if(!io.exists(filename)){ + println(os_time(),err_hd(),"file <",filename,"> does not exist"); + usage(); + exit(-1); +} + +var modified_time=fstat(filename).st_mtime; +println(os_time(),watching_hd(),filename," .."); +while(1){ + unix.sleep(1); + if(!io.exists(filename)){ + println(os_time(),err_hd(),"file <",filename,"> does not exist"); + break; + } + var latest_modified_time=fstat(filename).st_mtime; + if(latest_modified_time!=modified_time){ + modified_time=latest_modified_time; + println(os_time(),modified_hd(),filename); + var ret=system((os.platform()=="windows"?"":"./")~"nasal "~filename); + if(ret!=0){ + println(os_time(),err_hd(),"process returned value ",ret); + } + } +} \ No newline at end of file