pidgin/win32/nsis/pidgin-plugin.nsh

Fri, 02 Mar 2007 03:32:05 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Fri, 02 Mar 2007 03:32:05 +0000
changeset 15819
80e39b403a4a
parent 15435
pidgin/win32/nsis/gaim-plugin.nsh@4b933b06d75e
parent 15817
pidgin/win32/nsis/gaim-plugin.nsh@5a739d37076f
child 15827
4a25803741da
child 16238
33bf2fd32108
child 18068
b6554e3c8224
child 20478
46933dc62880
permissions
-rw-r--r--

merge of '1ff837dbed01c1cc93fd5c864db0a5c86dcc3ac5'
and '2db42c6a13fa126506b07b1de005fbe2ab3e4a46'

11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
1 ;;
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
2 ;; Windows Pidgin NSIS installer plugin helper utilities
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
3 ;; Copyright 2005, Daniel Atallah <daniel_atallah@yahoo.com>
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
4 ;;
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
5 ;; Include in plugin installer scripts using:
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
6 ;; !addincludedir "${PATH_TO_PIDGIN_SRC}\pidgin\win32\nsis"
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
7 ;; !include "pidgin-plugin.nsh"
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
8 ;;
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
9
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
10 !define PIDGIN_REG_KEY "SOFTWARE\pidgin"
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
11
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
12 !define PIDGIN_VERSION_OK 0
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
13 !define PIDGIN_VERSION_INCOMPATIBLE 1
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
14 !define PIDGIN_VERSION_UNDEFINED 2
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
15
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
16 ; Extract the Pidgin Version from the registry
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
17 ; This will set the Error flag if unable to determine the value
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
18 ; Pop the value of the stack after calling this to get the value (unless Error Flag is set)
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
19 Function GetPidginVersion
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
20 Push $R0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
21
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
22 ; Read the pidgin version
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
23 ClearErrors
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
24 ReadRegStr $R0 HKLM ${PIDGIN_REG_KEY} "Version"
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
25 IfErrors +1 GetPidginVersion_found
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
26 ; fall back to the HKCU registry key
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
27 ReadRegStr $R0 HKCU ${PIDGIN_REG_KEY} "Version"
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
28 IfErrors GetPidginVersion_done ; Keep the error flag set
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
29
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
30 GetPidginVersion_found:
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
31 Push $R0 ; Push the value onto the stack
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
32 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
33
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
34 GetPidginVersion_done:
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
35 ; restore $R0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
36 Pop $R0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
37 FunctionEnd
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
38
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
39 ; Check that the currently installed Pidgin version is compatible
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
40 ; with the plugin version we are installing
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
41 ; Push the Plugin's Pidgin Version onto the Stack before calling
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
42 ; After calling, the top of the Stack will contain the result of the check:
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
43 ; PIDGIN_VERSION_OK - If the installed Pidgin version is compatible w/ the version specified
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
44 ; PIDGIN_VERSION_INCOMPATIBLE - If the installed Pidgin version isn't compatible w/ the version specified
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
45 ; PIDGIN_VERSION_UNDEFINED - If the installed Pidgin version can't be determined
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
46 Function CheckPidginVersion
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
47 ; Save the Variable values that we will use in the stack
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
48 Push $R4
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
49 Exch
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
50 Pop $R4 ; Get the plugin's Pidgin Version
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
51 Push $R0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
52 Push $R1
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
53 Push $R2
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
54
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
55 ; Read the pidgin version
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
56 Call GetPidginVersion
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
57 IfErrors checkPidginVersion_noPidginInstallFound
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
58 Pop $R0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
59
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
60 ;If they are exactly the same, we don't need to look at anything else
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
61 StrCmp $R0 $R4 checkPidginVersion_VersionOK
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
62
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
63 ; Versions are in the form of X.Y.Z
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
64 ; If X is different or plugin's Y > pidgin's Y, then we shouldn't install
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
65
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
66 ;Check the Major Version
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
67 Push $R0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
68 Push 0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
69 Call GetVersionComponent
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
70 IfErrors checkPidginVersion_noPidginInstallFound ;We couldn't extract 'X' from the installed pidgin version
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
71 Pop $R2
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
72 Push $R4
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
73 Push 0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
74 Call GetVersionComponent
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
75 IfErrors checkPidginVersion_BadVersion ; this isn't a valid version, so don't bother even checking
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
76 Pop $R1
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
77 ;Check that both versions' X is the same
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
78 StrCmp $R1 $R2 +1 checkPidginVersion_BadVersion
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
79
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
80 ;Check the Minor Version
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
81 Push $R0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
82 Push 1
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
83 Call GetVersionComponent
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
84 IfErrors checkPidginVersion_noPidginInstallFound ;We couldn't extract 'Y' from the installed pidgin version
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
85 Pop $R2
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
86 Push $R4
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
87 Push 1
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
88 Call GetVersionComponent
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
89 IfErrors checkPidginVersion_BadVersion ; this isn't a valid version, so don't bother even checking
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
90 Pop $R1
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
91 ;Check that plugin's Y <= pidgin's Y
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
92 IntCmp $R1 $R2 checkPidginVersion_VersionOK checkPidginVersion_VersionOK checkPidginVersion_BadVersion
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
93
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
94 checkPidginVersion_BadVersion:
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
95 Push ${PIDGIN_VERSION_INCOMPATIBLE}
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
96 goto checkPidginVersion_done
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
97 checkPidginVersion_noPidginInstallFound:
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
98 Push ${PIDGIN_VERSION_UNDEFINED}
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
99 goto checkPidginVersion_done
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
100 checkPidginVersion_VersionOK:
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
101 Push ${PIDGIN_VERSION_OK}
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
102
15805
a80eb333bae9 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <datallah@pidgin.im>
parents: 15435
diff changeset
103 checkPidginVersion_done:
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
104 ; Restore the Variables that we used
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
105 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
106 Pop $R2
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
107 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
108 Pop $R1
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
109 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
110 Pop $R0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
111 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
112 Pop $R4
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
113 FunctionEnd
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
114
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
115 ; Extract the part of a string prior to "." (or the whole string if there is no ".")
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
116 ; If no "." was found, the ErrorFlag will be set
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
117 ; Before this is called, Push ${VERSION_STRING} must be called, and then Push 0 for Major, 1 for Minor, etc
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
118 ; Pop should be called after to retrieve the new value
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
119 Function GetVersionComponent
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
120 ClearErrors
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
121
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
122 ; Save the Variable values that we will use in the stack
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
123 Push $1
14512
7584322a65a2 [gaim-migrate @ 17164]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
124 Exch
11578
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
125 Pop $1 ;The version component which we want to extract (0, 1, 2)
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
126 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
127 Push $0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
128 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
129 Pop $0 ;The string from which to extract the version component
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
130
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
131 Push $2
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
132 Push $3
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
133 Push $4
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
134 Push $5
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
135 Push $6
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
136 Push $7
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
137
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
138 StrCpy $2 "0" ;Initialize our string index counter
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
139 StrCpy $7 "0" ;Index of last "."
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
140 StrCpy $3 "0" ;Initialize our version index counter
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
141
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
142 startGetVersionComponentLoop:
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
143 ;avoid infinite loop (if we have gotten the whole initial string, exit the loop and set the error flag)
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
144 StrCmp $6 $0 GetVersionComponentSetErrorFlag
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
145 IntOp $2 $2 + 1
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
146 StrCpy $6 $0 $2 ;Update the infinite loop preventing string
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
147 ;Determine the correct substring (only the current index component)
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
148 IntOp $5 $2 - $7
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
149 StrCpy $4 $0 $5 $7 ;Append the current character in $0 to $4
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
150 StrCpy $5 $0 1 $2 ;store the next character in $5
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
151
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
152 ;if the next character is ".", $4 will contain the version component prior to "."
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
153 StrCmp $5 "." +1 startGetVersionComponentLoop
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
154 StrCmp $3 $1 doneGetVersionComponent ;If it is the version component we're looking for, stop
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
155 IntOp $3 $3 + 1 ;Increment the version index counter
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
156 IntOp $2 $2 + 1 ;Increment the version string index to "." (so it will be skipped)
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
157 StrCpy $7 $2 ;Keep track of the index of the last "."
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
158 StrCpy $6 $0 $2 ;Update the infinite loop preventing string
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
159 goto startGetVersionComponentLoop
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
160
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
161 GetVersionComponentSetErrorFlag:
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
162 SetErrors
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
163
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
164 doneGetVersionComponent:
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
165 ; Restore the Variables that we used
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
166 Pop $7
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
167 Pop $6
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
168 Pop $5
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
169 Push $4 ;This is the value we're returning
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
170 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
171 Pop $4
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
172 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
173 Pop $3
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
174 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
175 Pop $2
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
176 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
177 Pop $0
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
178 Exch
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
179 Pop $1
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
180 FunctionEnd
70230c5dded2 [gaim-migrate @ 13847]
Daniel Atallah <datallah@pidgin.im>
parents:
diff changeset
181

mercurial