DirState: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Added category links.)
m (Updated by user: Instructor (talk, contrib).)
Line 7: Line 7:
: http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost
: http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost


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


== The Function ==
== The Function ==
Line 16: Line 16:
____________________________________________________________________________
____________________________________________________________________________


2004 Shengalts Aleksander (Shengalts@mail.ru)


Check directory full, empty or not exist.


Check directory full or empty.


Syntax:
${DirState} "[path]" $var


Syntax:
"[path]"      ; Directory
Push "[path]"      ; [path]
$var          ; Result:
                  ;  Directory
              ;   $var=0  (empty)
Call DirState      ; Call function
              ;   $var=1  (full)
                  ;
              ;   $var=-1 (directory not found)
Pop $var          ; $var=0  (empty)
                  ; $var=1  (full)
                  ; $var=-1 (directory not found)




Example:
Example:
Section
Section
Push "$TEMP"
${DirState} "$TEMP" $R0
Call DirState
; $R0="1"  directory is full
Pop $R0  ; $R0="1"  directory is full
SectionEnd*/
SectionEnd*/




;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
Function DirState
Function DirState
!define DirState `!insertmacro DirStateCall`
!macro DirStateCall _PATH _RESULT
Push `${_PATH}`
Call DirState
Pop ${_RESULT}
!macroend
Exch $0
Exch $0
Push $1
Push $1
ClearErrors


FindFirst $1 $0 '$0\*.*'
FindFirst $1 $0 '$0\*.*'

Revision as of 09:38, 24 June 2005

Author: Instructor (talk, contrib)


Links

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.

The Function

/*
____________________________________________________________________________
 
                            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 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