inst-resources/applist.nsh
changeset 0 67e1cc6cd929
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inst-resources/applist.nsh	Wed May 27 01:05:23 2009 -0400
@@ -0,0 +1,112 @@
+/**
+ * Inserts an HTML file at the necessary point in applications.html.
+ * @param string HTML file
+ */
+
+Function BNRegisterApplicationToList
+  ClearErrors
+
+  ; Make sure it's not already in there
+  FileOpen $0 "$stack_instdir\apache2\htdocs\applications.html" "r"
+  IfErrors 0 +3
+    SetErrors
+    Return
+    
+  loop:
+    FileRead $0 $1
+    IfErrors EOF
+    Push $1
+    Push "Module ${PRODUCT_SHORTNAME}"
+    Call StrStr
+    Pop $1
+    StrCmp $1 "" +3
+      ; found it, skip write
+      FileClose $0
+      Return
+    Goto loop
+  EOF:
+  FileClose $0
+  
+  Pop $0
+  Push "$stack_instdir\apache2\htdocs\applications.html"
+  Push $0
+  Push "<!-- @@BITNAMI_MODULE_PLACEHOLDER@@ -->"
+  Call AppendBeforeSubstring
+FunctionEnd
+
+Function AppendBeforeSubstring
+  Pop $R2 ; marker
+  Pop $R1 ; file to insert
+  Pop $R0 ; file to modify
+  
+  StrCpy $R7 0 ; $R7 = current offset
+  
+  ClearErrors
+  FileOpen $R3 $R0 "a" ; $R3 = handle
+  FileSeek $R3 0
+  IfErrors 0 +3
+    SetErrors
+    Return
+    
+  loop:
+    FileRead $R3 $R4 ${NSIS_MAX_STRLEN} ; $R4 = line
+    IfErrors 0 +3
+      DetailPrint "EOF"
+      Goto EOF
+    StrLen $R8 $R4 ; $R8 = length of line
+    IntOp $R7 $R7 + $R8
+    
+    Push $R4
+    Push $R2
+    Call StrStr
+    Pop $R5 ; $R5 = substring test
+    StrCmp $R5 "" /* no match */ loop
+    
+    ; got a match!
+    StrLen $R6 $R5 ; Length of found substring
+    ; rewind a little bit, to right before the substring
+    IntOp $R8 $R7 - $R6
+    FileSeek $R3 -$R6 CUR $R5
+    
+    ; store the rest of the file
+    StrCpy $R9 ""
+    remainderloop:
+      ClearErrors
+      FileRead $R3 $R7
+      StrCpy $R9 "$R9$R7"
+      IfErrors 0 remainderloop
+    ; now jump back to our point
+    FileSeek $R3 $R5
+    
+    ; Now, write it all in
+    FileOpen $R4 $R1 "r"
+    IfErrors 0 +3
+      SetErrors
+      Return
+    loop2:
+      FileRead $R4 $R5 ${NSIS_MAX_STRLEN}
+      IfErrors EOF2
+      FileWrite $R3 $R5
+      Goto loop2
+      EOF2:
+        FileClose $R5
+      
+    FileWrite $R3 $R9
+  EOF:
+  FileClose $R3
+FunctionEnd
+
+Function enano_add_to_applist
+  StrCmp $PLUGINSDIR "" 0 +2
+    InitPluginsDir
+    
+  SetOutPath "$stack_instdir\apache2\htdocs\img"
+  File "gfx\enanocms-module.png"
+  SetOutPath "$PLUGINSDIR"
+  File "gfx\application.html"
+  Push "$PLUGINSDIR\application.html"
+  Call BNRegisterApplicationToList
+  IfErrors 0 +2
+    MessageBox MB_OK|MB_ICONEXCLAMATION "There was an error adding the application to the list."
+FunctionEnd
+