DirState: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Adding new author and category links.)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{PageAuthor|Instructor}}
{{PageAuthor|Instructor}}


== Links ==
{{User:Instructor/Headers/Template}}
; Latest version of headers "nsh.zip":
: http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost


If a function is used without an header, you should put the function below in your script before calling it.
== Function Description ==


== The Function ==
<highlight-nsis>
<highlight-nsis>/*
____________________________________________________________________________
____________________________________________________________________________


Line 26: Line 23:
               ;    $var=1  (full)
               ;    $var=1  (full)
               ;    $var=-1 (directory not found)
               ;    $var=-1 (directory not found)
</highlight-nsis>




Example:
<b>Example:</b>
Section
<highlight-nsis>Section
${DirState} "$TEMP" $R0
${DirState} "$TEMP" $R0
; $R0="1"  directory is full
; $R0="1"  directory is full
SectionEnd*/
SectionEnd
</highlight-nsis>


== Function Code ==


;---------------------------------------------------------------------------
<highlight-nsis>
 
Function DirState
Function DirState
!define DirState `!insertmacro DirStateCall`
!define DirState `!insertmacro DirStateCall`

Latest revision as of 10:38, 26 April 2011

Author: Instructor (talk, contrib)


Page for NSIS 2.07 and below users

You can use the latest version of headers (recommended) or the following function code (put the function code in your script before calling it)

Function Description

____________________________________________________________________________
 
                            DirState
____________________________________________________________________________
 
 
Check directory full, empty or not exist.
 
 
Syntax:
${DirState} "[path]" $var
 
"[path]"      ; Directory
$var          ; Result:
              ;    $var=0  (empty)
              ;    $var=1  (full)
              ;    $var=-1 (directory not found)


Example:

Section
	${DirState} "$TEMP" $R0
	; $R0="1"  directory is full
SectionEnd

Function Code

Function DirState
	!define DirState `!insertmacro DirStateCall`
 
	!macro DirStateCall _PATH _RESULT
		Push `${_PATH}`
		Call DirState
		Pop ${_RESULT}
	!macroend
 
	Exch $0
	Push $1
	ClearErrors
 
	FindFirst $1 $0 '$0\*.*'
	IfErrors 0 +3
	StrCpy $0 -1
	goto end
	StrCmp $0 '.' 0 +4
	FindNext $1 $0
	StrCmp $0 '..' 0 +2
	FindNext $1 $0
	FindClose $1
	IfErrors 0 +3
	StrCpy $0 0
	goto end
	StrCpy $0 1
 
	end:
	Pop $1
	Exch $0
FunctionEnd