Annotation of embedaddon/smartmontools/os_win32/update-smart-drivedb.nsi, revision 1.1

1.1     ! misho       1: ;
        !             2: ; smartmontools drive database update NSIS script
        !             3: ;
        !             4: ; Home page of code is: http://smartmontools.sourceforge.net
        !             5: ;
        !             6: ; Copyright (C) 2011 Christian Franke <smartmontools-support@lists.sourceforge.net>
        !             7: ;
        !             8: ; This program is free software; you can redistribute it and/or modify
        !             9: ; it under the terms of the GNU General Public License as published by
        !            10: ; the Free Software Foundation; either version 2, or (at your option)
        !            11: ; any later version.
        !            12: ;
        !            13: ; You should have received a copy of the GNU General Public License
        !            14: ; (for example COPYING); If not, see <http://www.gnu.org/licenses/>.
        !            15: ;
        !            16: ; $Id: update-smart-drivedb.nsi 3392 2011-06-29 19:13:22Z chrfranke $
        !            17: ;
        !            18: 
        !            19: 
        !            20: ;--------------------------------------------------------------------
        !            21: ; Command line arguments:
        !            22: ; makensis -DBRANCH=<svn-branch-name> update-smart-drivedb.nsi
        !            23: 
        !            24: !include "FileFunc.nsh"
        !            25: 
        !            26: Name "update-smart-drivedb"
        !            27: Caption "Update smartmontools drivedb.h"
        !            28: OutFile "update-smart-drivedb.exe"
        !            29: 
        !            30: SetCompressor /solid lzma
        !            31: 
        !            32: XPStyle on
        !            33: InstallColors /windows
        !            34: 
        !            35: Page instfiles
        !            36: 
        !            37: Section ""
        !            38: 
        !            39:   SetOutPath $INSTDIR
        !            40: 
        !            41: !ifdef BRANCH
        !            42:   StrCpy $0 "branches/${BRANCH}"
        !            43:   Push $0
        !            44:   Call Download
        !            45:   IfErrors 0 endload
        !            46: !endif
        !            47: 
        !            48:   StrCpy $0 "trunk"
        !            49:   Push $0
        !            50:   Call Download
        !            51:   IfErrors 0 endload
        !            52:     MessageBox MB_OK "Download failed" /SD IDOK
        !            53:     Abort "Download failed"
        !            54:   endload:
        !            55: 
        !            56:   ; Check syntax
        !            57:   Delete "drivedb.h.error"
        !            58:   IfFileExists "smartctl-nc.exe" 0 endsyntax
        !            59:     ExecWait '.\smartctl-nc.exe -B drivedb.h.new -P showall' $1
        !            60:     StrCmp $1 "0" endsyntax
        !            61:       Rename "drivedb.h.new" "drivedb.h.error"
        !            62:       MessageBox MB_OK "drivedb.h.error: rejected by smartctl, probably no longer compatible" /SD IDOK
        !            63:       Abort "drivedb.h.error: rejected by smartctl, probably no longer compatible"
        !            64:   endsyntax:
        !            65: 
        !            66:   ; Keep old file if identical
        !            67:   Delete "drivedb.h.lastcheck"
        !            68:   IfFileExists "drivedb.h" 0 endcomp
        !            69:     Call Cmp
        !            70:     IfErrors changed 0
        !            71:       DetailPrint "drivedb.h is already up to date"
        !            72:       MessageBox MB_OK "$INSTDIR\drivedb.h is already up to date" /SD IDOK
        !            73:       Delete "drivedb.h.new"
        !            74:       DetailPrint "Create file: drivedb.h.lastcheck"
        !            75:       FileOpen $1 "drivedb.h.lastcheck" w
        !            76:       FileClose $1
        !            77:       Return
        !            78:     changed:
        !            79:     Delete "drivedb.h.old"
        !            80:     Rename "drivedb.h" "drivedb.h.old"
        !            81: 
        !            82:   endcomp:
        !            83:   Rename "drivedb.h.new" "drivedb.h"
        !            84:   MessageBox MB_OK "$INSTDIR\drivedb.h updated from $0" /SD IDOK
        !            85: 
        !            86: SectionEnd
        !            87: 
        !            88: Function .onInit
        !            89:   ; Install in same directory
        !            90:   ${GetExePath} $INSTDIR
        !            91: FunctionEnd
        !            92: 
        !            93: ; Download from branch or trunk on stack, SetErrors on error
        !            94: Function Download
        !            95:   Pop $R0
        !            96:   DetailPrint "Download from $R0"
        !            97: 
        !            98:   ; Trac repository browser (does not return HTTP 404 errors)
        !            99:   StrCpy $R1 "http://sourceforge.net/apps/trac/smartmontools/export/HEAD/$R0/smartmontools/drivedb.h"
        !           100:   ; ViewVC repository browser (does not return ContentLength required for NSISdl::download)
        !           101:   ;StrCpy $R1 "http://smartmontools.svn.sourceforge.net/viewvc/smartmontools/$R0/smartmontools/drivedb.h?revision=HEAD"
        !           102:   DetailPrint "($R1)"
        !           103: 
        !           104:   NSISdl::download $R1 "drivedb.h.new"
        !           105:   Pop $R0
        !           106:   DetailPrint "Download: $R0"
        !           107:   ClearErrors
        !           108:   StrCmp $R0 "success" 0 err
        !           109: 
        !           110:   ; File must start with comment
        !           111:   FileOpen $R0 "drivedb.h.new" r
        !           112:   FileReadByte $R0 $R1
        !           113:   FileClose $R0
        !           114:   ClearErrors
        !           115:   StrCmp $R1 "47" 0 +2
        !           116:     Return
        !           117:   DetailPrint "drivedb.h.new: syntax error ($R1)"
        !           118: 
        !           119: err:
        !           120:   Delete "drivedb.h.new"
        !           121:   SetErrors
        !           122: FunctionEnd
        !           123: 
        !           124: ; Compare drivedb.h drivedb.h.new, SetErrors if different
        !           125: ; TODO: ignore differences in Id string
        !           126: Function Cmp
        !           127:   ClearErrors
        !           128:   FileOpen $R0 "drivedb.h" r
        !           129:   FileOpen $R1 "drivedb.h.new" r
        !           130:   readloop:
        !           131:     FileRead $R0 $R2
        !           132:     FileRead $R1 $R3
        !           133:     StrCmp $R2 $R3 0 +2
        !           134:   IfErrors 0 readloop
        !           135:   FileClose $R0
        !           136:   FileClose $R1
        !           137:   ClearErrors
        !           138:   StrCmp $R2 $R3 0 +2
        !           139:     Return
        !           140:   SetErrors
        !           141: FunctionEnd

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>