diff --git a/Docs/src/headers.but b/Docs/src/headers.but
index 98415d99..236c69e2 100644
--- a/Docs/src/headers.but
+++ b/Docs/src/headers.but
@@ -263,7 +263,7 @@ Call functions:
\c Push $0
\c FunctionEnd
-\\Example (Locate with banner - "NxS" plugin required):\\
+\\Example (Locate with banner - "\W{http://nsis.sourceforge.net/Banner_with_Cancel_button}{NxS}" plugin required):\\
\c Section
\c nxs::Show /NOUNLOAD `$(^Name) Setup` /top `Setup searching something$\r$\nPlease wait... If you can..` /h 1 /can 1 /end
@@ -477,7 +477,7 @@ Call functions:
\S1{} GetTime
-\b Get local time.
+\b Get local or system time.
\b Get file time (access, creation and modification).
@@ -485,13 +485,17 @@ Call functions:
\c ${GetTime} "[File]" "[Option]" $var1 $var2 $var3 $var4 $var5 $var6 $var7
-\c "[File]" ; Ignored if "L"
+\c "[File]" ; Ignored if "L" or "LS"
\c ;
\c "[Option]" ; [Options]
\c ; L Local time
\c ; A last Access file time
\c ; C Creation file time
\c ; M Modification file time
+\c ; LS System time (UTC)
+\c ; AS last Access file time (UTC)
+\c ; CS Creation file time (UTC)
+\c ; MS Modification file time (UTC)
\c ;
\c $var1 ; Result1: day
\c $var2 ; Result2: month
@@ -538,6 +542,39 @@ Call functions:
\c MessageBox MB_OK 'Date=$0/$1/$2 ($3)$\nTime=$4:$5:$6'
\c SectionEnd
+\\Example (Get system time):\\
+
+\c Section
+\c ${GetTime} "" "LS" $0 $1 $2 $3 $4 $5 $6
+\c ; $0="01" day
+\c ; $1="04" month
+\c ; $2="2005" year
+\c ; $3="Friday" day of week name
+\c ; $4="11" hour
+\c ; $5="05" minute
+\c ; $6="50" seconds
+\c
+\c MessageBox MB_OK 'Date=$0/$1/$2 ($3)$\nTime=$4:$5:$6'
+\c SectionEnd
+
+\\Example (Convert time to 12-hour format AM/PM):\\
+
+\c Section
+\c ${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
+\c
+\c StrCmp $4 0 0 +3
+\c StrCpy $4 12
+\c goto +3
+\c StrCmp $4 12 +5
+\c IntCmp $4 12 0 0 +3
+\c StrCpy $7 AM
+\c goto +3
+\c IntOp $4 $4 - 12
+\c StrCpy $7 PM
+\c
+\c MessageBox MB_OK 'Date=$0/$1/$2 ($3)$\nTime=$4:$5:$6 $7'
+\c SectionEnd
+
\S1{} GetFileAttributes
\b Get attributes of file or directory.
@@ -821,6 +858,7 @@ Call functions:
\c !include "WinMessages.nsh"
\c !include "FileFunc.nsh"
\c !insertmacro Locate
+\c
\c Section
\c Banner::show /NOUNLOAD "Starting..."
\c Banner::getWindow /NOUNLOAD
@@ -844,10 +882,11 @@ Call functions:
\c Push $0
\c FunctionEnd
-\\Example (nxs plugin):\\
+\\Example (\W{http://nsis.sourceforge.net/Banner_with_Cancel_button}{NxS} plugin):\\
\c !include "FileFunc.nsh"
\c !insertmacro Locate
+\c
\c Section
\c nxs::Show /NOUNLOAD `$(^Name) Setup`\
\c /top `Setup searching something$\nPlease wait$\nIf you can...`\
diff --git a/Include/FileFunc.nsh b/Include/FileFunc.nsh
index f1a667b9..62e39e69 100644
--- a/Include/FileFunc.nsh
+++ b/Include/FileFunc.nsh
@@ -1,7 +1,7 @@
/*
_____________________________________________________________________________
- File Functions Header v2.7
+ File Functions Header v2.9
_____________________________________________________________________________
2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
@@ -1070,6 +1070,10 @@ RefreshShellIcons
StrCmp $1 'A' getfile
StrCmp $1 'C' getfile
StrCmp $1 'M' getfile
+ StrCmp $1 'LS' gettime
+ StrCmp $1 'AS' getfile
+ StrCmp $1 'CS' getfile
+ StrCmp $1 'MS' getfile
goto error
getfile:
@@ -1080,19 +1084,36 @@ RefreshShellIcons
gettime:
System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2) i .r7'
- StrCmp $1 'L' 0 filetime
+ StrCmp $1 'L' 0 systemtime
System::Call 'kernel32::GetLocalTime(i)i(r7)'
goto convert
+ systemtime:
+ StrCmp $1 'LS' 0 filetime
+ System::Call 'kernel32::GetSystemTime(i)i(r7)'
+ goto convert
filetime:
System::Call '*$6(i,l,l,l,i,i,i,i,&t260,&t14)i(,.r4,.r3,.r2)'
System::Free $6
StrCmp $1 'A' 0 +3
StrCpy $2 $3
- goto +3
- StrCmp $1 'C' 0 +2
+ goto tolocal
+ StrCmp $1 'C' 0 +3
StrCpy $2 $4
+ goto tolocal
+ StrCmp $1 'M' tolocal
+
+ StrCmp $1 'AS' tosystem
+ StrCmp $1 'CS' 0 +3
+ StrCpy $3 $4
+ goto tosystem
+ StrCmp $1 'MS' 0 +3
+ StrCpy $3 $2
+ goto tosystem
+
+ tolocal:
System::Call 'kernel32::FileTimeToLocalFileTime(*l,*l)i(r2,.r3)'
+ tosystem:
System::Call 'kernel32::FileTimeToSystemTime(*l,i)i(r3,r7)'
convert: