Annotation of embedaddon/smartmontools/os_win32/update-smart-drivedb.nsi, revision 1.1.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>