Get the Root Directory
From NSIS Wiki
Jump to navigationJump to search
Author: KiCHiK (talk, contrib) |
Description
This function will return the root directory of a given path. It only accepts full paths. If you need to convert a relative path to a full path you can use GetFullPathName.
Notes
Do you want to CheckSpaceFree at $INSTDIR? Please see the notes there.
Examples
Push "C:\Program Files\NSIS\" Call GetRoot Pop $0 DetailPrint "$0 should be C:" Push "\\SuperPimp\NSIS\Source\exehead\Ui.c" Call GetRoot Pop $0 DetailPrint "$0 should be \\SuperPimp\NSIS"
The function:
Function GetRoot Exch $0 Push $1 Push $2 Push $3 Push $4 StrCpy $1 $0 2 StrCmp $1 "\\" UNC StrCpy $0 $1 Goto done UNC: StrCpy $2 3 StrLen $3 $0 loop: IntCmp $2 $3 "" "" loopend StrCpy $1 $0 1 $2 IntOp $2 $2 + 1 StrCmp $1 "\" loopend loop loopend: StrCmp $4 "1" +3 StrCpy $4 1 Goto loop IntOp $2 $2 - 1 StrCpy $0 $0 $2 done: Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 FunctionEnd