Subversion Repositories SvarDOS

Rev

Rev 920 | Rev 922 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 920 Rev 921
Line 31... Line 31...
31
  10 jul 2013: changed unzip calls to 7za (to handle cases when appinfo is compressed with lzma)
31
  10 jul 2013: changed unzip calls to 7za (to handle cases when appinfo is compressed with lzma)
32
  04 feb 2013: added CRC32 support
32
  04 feb 2013: added CRC32 support
33
  22 sep 2012: forked 1st version from FDUPDATE builder
33
  22 sep 2012: forked 1st version from FDUPDATE builder
34
*/
34
*/
35
 
35
 
36
$PVER = "20220221";
36
$PVER = "20220222";
37
 
37
 
38
 
38
 
39
// computes the BSD sum of a file and returns it
39
// computes the BSD sum of a file and returns it
40
function file2bsum($fname) {
40
function file2bsum($fname) {
41
  $result = 0;
41
  $result = 0;
Line 90... Line 90...
90
    }
90
    }
91
    $subver[3] = intval($svarver); // set the +rev as a very minor item
91
    $subver[3] = intval($svarver); // set the +rev as a very minor item
92
    $verstr = substr($verstr, 0, $i);
92
    $verstr = substr($verstr, 0, $i);
93
  }
93
  }
94
 
94
 
95
  // is the version ending with ' alpha', 'beta'?
95
  // is the version ending with ' alpha', 'beta', etc?
-
 
96
  if (preg_match('/ (alpha|beta|gamma|delta|pre|rc)( [0-9]{1,4}){0,1}$/', $verstr)) {
-
 
97
    // if there is a trailing beta-number, process it first
96
  if (preg_match('/ (alpha|beta)$/', $verstr)) {
98
    if (preg_match('/ [0-9]{1,4}$/', $verstr)) {
-
 
99
      $i = strrpos($verstr, ' ');
-
 
100
      $subver[2] = intval(substr($verstr, $i + 1));
-
 
101
      $verstr = trim(substr($verstr, 0, $i));
-
 
102
    }
97
    $i = strrpos($verstr, ' ');
103
    $i = strrpos($verstr, ' ');
98
    $greek = substr($verstr, $i + 1);
104
    $greek = substr($verstr, $i + 1);
99
    $verstr = trim(substr($verstr, 0, $i));
105
    $verstr = trim(substr($verstr, 0, $i));
100
    if ($greek == 'alpha') {
106
    if ($greek == 'alpha') {
101
      $subver[2] = 1;
107
      $subver[1] = 1;
102
    } else if ($greek == 'beta') {
108
    } else if ($greek == 'beta') {
103
      $subver[2] = 2;
109
      $subver[1] = 2;
104
    } else if ($greek == 'gamma') {
110
    } else if ($greek == 'gamma') {
105
      $subver[2] = 3;
111
      $subver[1] = 3;
106
    } else if ($greek == 'delta') {
112
    } else if ($greek == 'delta') {
107
      $subver[2] = 4;
113
      $subver[1] = 4;
-
 
114
    } else if ($greek == 'pre') {
-
 
115
      $subver[1] = 5;
108
    } else if ($greek == 'rc') {
116
    } else if ($greek == 'rc') {
109
      $subver[2] = 5;
117
      $subver[1] = 6;
110
    } else {
118
    } else {
111
      return(false);
119
      return(false);
112
    }
120
    }
113
  } else {
121
  } else {
114
    $subver[2] = 99;
122
    $subver[1] = 99;
115
  }
123
  }
116
 
124
 
117
  // does the version string have a single-letter subversion? (1.0c)
125
  // does the version string have a single-letter subversion? (1.0c)
118
  if (preg_match('/[a-z]$/', $verstr)) {
126
  if (preg_match('/[a-z]$/', $verstr)) {
119
    $subver[1] = ord(substr($verstr, -1));
127
    $subver[0] = ord(substr($verstr, -1));
120
    $verstr = substr_replace($verstr, '', -1); // remove last character from string
128
    $verstr = substr_replace($verstr, '', -1); // remove last character from string
121
  }
129
  }
122
 
130
 
123
  // validate the format is supported, should be something no more complex than 1.05.3.33
131
  // validate the format is supported, should be something no more complex than 1.05.3.33
124
  if (! preg_match('/^[0-9][0-9.]{0,20}$/', $verstr)) {
132
  if (! preg_match('/^[0-9][0-9.]{0,20}$/', $verstr)) {
Line 129... Line 137...
129
  //       has a special meaning
137
  //       has a special meaning
130
  $exploded = explode('.', $verstr);
138
  $exploded = explode('.', $verstr);
131
  if (count($exploded) > 16) {
139
  if (count($exploded) > 16) {
132
    return(false);
140
    return(false);
133
  }
141
  }
134
  $exploded[16] = $subver[0]; // unused yet
142
  $exploded[16] = $subver[0]; // a-z (1.0c)
135
  $exploded[17] = $subver[1]; // a-z (1.0c)
143
  $exploded[17] = $subver[1]; // alpha/beta/gamma/delta/rc/pre
136
  $exploded[18] = $subver[2]; // alpha/beta
144
  $exploded[18] = $subver[2]; // alpha-beta-gamma subversion (eg. "beta 9")
137
  $exploded[19] = $subver[3]; // svar-ver (1.0+5)
145
  $exploded[19] = $subver[3]; // svar-ver (1.0+5)
138
  for ($i = 0; $i < 20; $i++) if (empty($exploded[$i])) $exploded[$i] = '0';
146
  for ($i = 0; $i < 20; $i++) if (empty($exploded[$i])) $exploded[$i] = '0';
139
 
147
 
140
  ksort($exploded);
148
  ksort($exploded);
141
 
149
 
Line 145... Line 153...
145
 
153
 
146
function dos_version_compare($v1, $v2) {
154
function dos_version_compare($v1, $v2) {
147
  $v1arr = vertoarr($v1);
155
  $v1arr = vertoarr($v1);
148
  $v2arr = vertoarr($v2);
156
  $v2arr = vertoarr($v2);
149
  for ($i = 0; $i < count($v1arr); $i++) {
157
  for ($i = 0; $i < count($v1arr); $i++) {
150
    $r = strcmp($v1arr[$i], $v2arr[$i]);
158
    if ($v1arr[$i] > $v2arr[$i]) return(1);
151
    if ($r != 0) return($r);
159
    if ($v1arr[$i] < $v2arr[$i]) return(-1);
152
  }
160
  }
153
  return(0);
161
  return(0);
154
}
162
}
155
 
163
 
156
 
164