AC_COPYRIGHT([Copyright 2002-2011 the VideoLAN team])
AC_INIT(vlc, 1.2.0-git)
-VERSION_MAJOR="1"
-VERSION_MINOR="2"
-VERSION_REVISION="0"
-VERSION_EXTRA="-git"
+VERSION_MAJOR=1
+VERSION_MINOR=2
+VERSION_REVISION=0
+VERSION_EXTRA=0
+VERSION_DEV=git
+
PKGDIR="vlc"
AC_SUBST(PKGDIR)
AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
-AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,"${VERSION_MAJOR}", [version major number])
-AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,"${VERSION_MINOR}", [version minor number])
-AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,"${VERSION_REVISION}", [version minor number])
-AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,"${VERSION_EXTRA}", [version minor number])
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
AC_SUBST(COPYRIGHT_MESSAGE)
AC_SUBST(VERSION_MESSAGE)
AC_SUBST(VERSION_MAJOR)
AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami`", [user who ran configure])
AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler])
-dnl Win32 need s a numerical version_extra.
-case $( echo ${VERSION_EXTRA}|wc -m ) in
- "1") VERSION_EXTRA_RC="0";;
- "2") VERSION_EXTRA_RC=$( echo ${VERSION_EXTRA}|tr "abcdefghi" "123456789") ;;
- *) VERSION_EXTRA_RC="99"
-esac
-AC_SUBST(VERSION_EXTRA_RC)
dnl
dnl Handle substvars that use $(top_srcdir)
dnl
/*
* Here is the format of these "status files" :
- * First line is the last version: "X.Y.Ze" where:
+ * First line is the last version: "X.Y.Z.E" where:
* * X is the major number
* * Y is the minor number
* * Z is the revision number
- * * e is an OPTIONAL extra letter
- * * AKA "0.8.6d" or "0.9.0"
+ * * .E is an OPTIONAL extra number
+ * * IE "1.2.0" or "1.1.10.1"
* Second line is a url of the binary for this last version
* Remaining text is a required description of the update
*/
static bool GetUpdateFile( update_t *p_update )
{
stream_t *p_stream = NULL;
- int i_major = 0;
- int i_minor = 0;
- int i_revision = 0;
- unsigned char extra;
char *psz_version_line = NULL;
char *psz_update_data = NULL;
strncpy( psz_version_line, psz_update_data, i_len );
psz_version_line[i_len] = '\0';
- p_update->release.extra = 0;
- switch( sscanf( psz_version_line, "%i.%i.%i%c",
- &i_major, &i_minor, &i_revision, &extra ) )
+ p_update->release.i_extra = 0;
+ int ret = sscanf( psz_version_line, "%i.%i.%i.%i",
+ &p_update->release.i_major, &p_update->release.i_minor,
+ &p_update->release.i_revision, &p_update->release.i_extra);
+ if( ret != 3 && ret != 4 )
{
- case 4:
- p_update->release.extra = extra;
- case 3:
- p_update->release.i_major = i_major;
- p_update->release.i_minor = i_minor;
- p_update->release.i_revision = i_revision;
- break;
- default:
msg_Err( p_update->p_libvlc, "Update version false formated" );
goto error;
}
return NULL;
}
-/**
- * Compare a given release's version number to the current VLC's one
- *
- * \param p_update structure
- * \return true if we have to upgrade to the given version to be up to date
- */
-static bool is_strictly_greater( int * a, int * b, int n)
-{
- if( n <= 0 ) return false;
- if(a[0] > b[0] ) return true;
- if(a[0] == b[0] ) return is_strictly_greater( a+1, b+1, n-1 );
- /* a[0] < b[0] */ return false;
-}
-
bool update_NeedUpgrade( update_t *p_update )
{
assert( p_update );
- int current_version[] = {
- *PACKAGE_VERSION_MAJOR - '0',
- *PACKAGE_VERSION_MINOR - '0',
- *PACKAGE_VERSION_REVISION - '0',
- /* extra string of development versions is "-git", "-rc" ..
- * so make sure version a.b.c is newer than a.b.c-XXX */
- (*PACKAGE_VERSION_EXTRA == '-') ? -1 : *PACKAGE_VERSION_EXTRA
+ static const int current[4] = {
+ PACKAGE_VERSION_MAJOR,
+ PACKAGE_VERSION_MINOR,
+ PACKAGE_VERSION_REVISION,
+ PACKAGE_VERSION_EXTRA
};
- int latest_version[] = {
+ const int latest[4] = {
p_update->release.i_major,
p_update->release.i_minor,
p_update->release.i_revision,
- p_update->release.extra
+ p_update->release.i_extra
};
- return is_strictly_greater( latest_version, current_version, 4 );
+ for (unsigned i = 0; i < sizeof latest / sizeof *latest; i++) {
+ /* there is a new version available */
+ if (latest[i] > current[i])
+ return true;
+
+ /* current version is more recent than the latest version ?! */
+ if (latest[i] < current[i])
+ return false;
+ }
+
+ /* current version is not a release, it's a -git or -rc version */
+ if (*PACKAGE_VERSION_DEV)
+ return true;
+
+ /* current version is latest version */
+ return false;
}
/**