New API call isoburn_is_compatible()
This commit is contained in:
parent
ddc26570fd
commit
76d78840c7
@ -7,21 +7,30 @@ AC_CANONICAL_TARGET
|
|||||||
|
|
||||||
AM_INIT_AUTOMAKE([subdir-objects])
|
AM_INIT_AUTOMAKE([subdir-objects])
|
||||||
|
|
||||||
|
dnl The API version codes are now defined in libisoburn/libisoburn.h
|
||||||
|
dnl #define isoburn_header_version_*
|
||||||
|
dnl configure.ac only rules the libtool revision numbering about
|
||||||
|
dnl LT_CURREN, LT_AGE, LT_REVISION where SONAME becomes LT_CURRENT - LT_AGE
|
||||||
|
dnl
|
||||||
|
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
||||||
ISOBURN_MAJOR_VERSION=0
|
ISOBURN_MAJOR_VERSION=0
|
||||||
ISOBURN_MINOR_VERSION=0
|
ISOBURN_MINOR_VERSION=0
|
||||||
ISOBURN_MICRO_VERSION=1
|
ISOBURN_MICRO_VERSION=1
|
||||||
ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||||
|
|
||||||
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||||
AC_SUBST(ISOBURN_MINOR_VERSION)
|
AC_SUBST(ISOBURN_MINOR_VERSION)
|
||||||
AC_SUBST(ISOBURN_MICRO_VERSION)
|
AC_SUBST(ISOBURN_MICRO_VERSION)
|
||||||
AC_SUBST(ISOBURN_VERSION)
|
dnl AC_SUBST(ISOBURN_VERSION)
|
||||||
|
|
||||||
dnl Libtool versioning
|
dnl Libtool versioning
|
||||||
|
dnl Generate libisoburn.so.1.0.0
|
||||||
|
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||||
|
dnl
|
||||||
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||||
LT_CURRENT=0
|
LT_CURRENT=1
|
||||||
LT_AGE=0
|
LT_AGE=0
|
||||||
LT_REVISION=1
|
LT_REVISION=0
|
||||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||||
|
|
||||||
AC_SUBST(LT_RELEASE)
|
AC_SUBST(LT_RELEASE)
|
||||||
|
@ -59,6 +59,8 @@ int isoburn_initialize(char msg[1024], int flag)
|
|||||||
iso_lib_version(&major, &minor, µ);
|
iso_lib_version(&major, &minor, µ);
|
||||||
sprintf(msg+strlen(msg), "libisofs-%d.%d.%d , ", major, minor, micro);
|
sprintf(msg+strlen(msg), "libisofs-%d.%d.%d , ", major, minor, micro);
|
||||||
|
|
||||||
|
/* >>> check for suitability of library */
|
||||||
|
|
||||||
if(!burn_initialize()) {
|
if(!burn_initialize()) {
|
||||||
sprintf(msg+strlen(msg), "Cannot initialize libburn\n");
|
sprintf(msg+strlen(msg), "Cannot initialize libburn\n");
|
||||||
return(0);
|
return(0);
|
||||||
@ -66,6 +68,8 @@ int isoburn_initialize(char msg[1024], int flag)
|
|||||||
burn_version(&major, &minor, µ);
|
burn_version(&major, &minor, µ);
|
||||||
sprintf(msg+strlen(msg), "libburn-%d.%d.%d , ", major, minor, micro);
|
sprintf(msg+strlen(msg), "libburn-%d.%d.%d , ", major, minor, micro);
|
||||||
|
|
||||||
|
/* >>> check for suitability of library */
|
||||||
|
|
||||||
isoburn_destroy_all(&isoburn_list_start, 0); /* isoburn_list_start= NULL */
|
isoburn_destroy_all(&isoburn_list_start, 0); /* isoburn_list_start= NULL */
|
||||||
|
|
||||||
isoburn_version(&major, &minor, µ);
|
isoburn_version(&major, &minor, µ);
|
||||||
|
@ -37,8 +37,10 @@
|
|||||||
|
|
||||||
#include "isoburn.h"
|
#include "isoburn.h"
|
||||||
|
|
||||||
|
/* No more: version numbers out of configure.ac
|
||||||
|
major.minor.micro now comes from libisoburn.h
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
*/
|
||||||
|
|
||||||
/* -------------------------- isoburn ----------------------- */
|
/* -------------------------- isoburn ----------------------- */
|
||||||
|
|
||||||
@ -408,9 +410,17 @@ int isoburn_prepare_new_image(struct burn_drive *d, struct burn_disc **disc,
|
|||||||
|
|
||||||
void isoburn_version(int *major, int *minor, int *micro)
|
void isoburn_version(int *major, int *minor, int *micro)
|
||||||
{
|
{
|
||||||
|
*major= isoburn_header_version_major;
|
||||||
|
*minor= isoburn_header_version_minor;
|
||||||
|
*micro= isoburn_header_version_micro;
|
||||||
|
|
||||||
|
/* No more: values from version.h generated from version.h.in and
|
||||||
|
macro values defined in configure.ac
|
||||||
|
|
||||||
*major = ISOBURN_MAJOR_VERSION;
|
*major = ISOBURN_MAJOR_VERSION;
|
||||||
*minor = ISOBURN_MINOR_VERSION;
|
*minor = ISOBURN_MINOR_VERSION;
|
||||||
*micro = ISOBURN_MICRO_VERSION;
|
*micro = ISOBURN_MICRO_VERSION;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -116,24 +116,65 @@ eventual multi-session emulation.
|
|||||||
int isoburn_initialize(char msg[1024], int flag);
|
int isoburn_initialize(char msg[1024], int flag);
|
||||||
|
|
||||||
|
|
||||||
/** Obtain the three release version numbers of the library.
|
/** Check whether all features of header file libisoburn.h from the given
|
||||||
|
major.minor.micro revision triple can be delivered by the library version
|
||||||
|
which is performing this call.
|
||||||
|
An application of libisoburn can easily memorize the version of the
|
||||||
|
libisofs.h header in its own code. Immediately after isoburn_initialize()
|
||||||
|
it should simply do this check:
|
||||||
|
if (! isoburn_is_compatible(isoburn_header_version_major,
|
||||||
|
isoburn_header_version_minor,
|
||||||
|
isoburn_header_version_micro, 0))
|
||||||
|
...refuse to start the program with this dynamic library version...
|
||||||
|
@param major obtained at build time
|
||||||
|
@param minor obtained at build time
|
||||||
|
@param micro obtained at build time
|
||||||
|
@param flag Bitfield for control purposes. Unused yet. Submit 0.
|
||||||
|
@return 1= library can work for caller
|
||||||
|
0= library is not usable in some aspects. Caller must restrict
|
||||||
|
itself to an earlier API version or must not use this libray
|
||||||
|
at all.
|
||||||
|
*/
|
||||||
|
int isoburn_is_compatible(int major, int minor, int micro, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/** These three release version numbers tell the revision of this header file
|
||||||
|
and of the API it describes. They are memorized by applications at build
|
||||||
|
time.
|
||||||
|
*/
|
||||||
|
#define isoburn_header_version_major 0
|
||||||
|
#define isoburn_header_version_minor 0
|
||||||
|
#define isoburn_header_version_micro 1
|
||||||
|
/** Note:
|
||||||
|
Above version numbers are also recorded in configure.ac because libtool
|
||||||
|
wants them as parameters at build time.
|
||||||
|
For the library compatibility check ISOBURN_*_VERSION in configure.ac
|
||||||
|
are not decisive. Only the three numbers above do matter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/** Obtain the three release version numbers of the library. These are the
|
||||||
|
numbers encountered by the application when linking with lisbisoburn,
|
||||||
|
i.e. possibly not before run time.
|
||||||
|
Better do not base the fundamental compatibility decision of an application
|
||||||
|
on these numbers. For a reliable check use isoburn_is_compatible().
|
||||||
@param major The maturity version (0 for now, as we are still learning)
|
@param major The maturity version (0 for now, as we are still learning)
|
||||||
@param minor The development goal version.
|
@param minor The development goal version.
|
||||||
@param micro The development step version. This has an additional meaning:
|
@param micro The development step version. This has an additional meaning:
|
||||||
|
|
||||||
Pare numbers indicate a version with frozen API. I.e. you can
|
Pare numbers indicate a version with frozen API. I.e. you can
|
||||||
rely on the same set of features to be present in all
|
rely on the same set of features to be present in all
|
||||||
published releases with that major.minor.micro combination.
|
published releases with that major.minor.micro combination.
|
||||||
Odd numbers indicate that API upgrades are in progress.
|
Odd numbers indicate that API upgrades are in progress.
|
||||||
I.e. new features might be already present or they might
|
I.e. new features might be already present or they might
|
||||||
be still missing. You need to check before compiling an
|
be still missing.
|
||||||
application which relies on freshly introduced features.
|
So micro revisions {1,3,5,7,9} should never be used for
|
||||||
|
dynamic linking unless the proper library match can be
|
||||||
|
guaranteed by external circumstances.
|
||||||
*/
|
*/
|
||||||
void isoburn_version(int *major, int *minor, int *micro);
|
void isoburn_version(int *major, int *minor, int *micro);
|
||||||
|
|
||||||
|
|
||||||
/* >>> isoburn_is_compatible() */
|
|
||||||
|
|
||||||
|
|
||||||
/** Aquire a target drive by its filesystem path resp. libburn persistent
|
/** Aquire a target drive by its filesystem path resp. libburn persistent
|
||||||
address.
|
address.
|
||||||
Wrapper for: burn_drive_scan_and_grab()
|
Wrapper for: burn_drive_scan_and_grab()
|
||||||
@ -411,7 +452,7 @@ int isoburn_igopt_get_over_ugid(struct isoburn_imgen_opts *o,
|
|||||||
int *replace_uid, int *replace_gid,
|
int *replace_uid, int *replace_gid,
|
||||||
uid_t *uid, gid_t *gid);
|
uid_t *uid, gid_t *gid);
|
||||||
|
|
||||||
/** Set this to NULL to use the default charset.
|
/** Set this to NULL to use the default output charset.
|
||||||
>>> What if not NULL or not want default ?
|
>>> What if not NULL or not want default ?
|
||||||
*/
|
*/
|
||||||
int isoburn_igopt_set_out_charset(struct isoburn_imgen_opts *o,
|
int isoburn_igopt_set_out_charset(struct isoburn_imgen_opts *o,
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
|
||||||
|
/* <<< this file is on its way out
|
||||||
#define ISOBURN_MAJOR_VERSION @ISOBURN_MAJOR_VERSION@
|
#define ISOBURN_MAJOR_VERSION @ISOBURN_MAJOR_VERSION@
|
||||||
#define ISOBURN_MINOR_VERSION @ISOBURN_MINOR_VERSION@
|
#define ISOBURN_MINOR_VERSION @ISOBURN_MINOR_VERSION@
|
||||||
#define ISOBURN_MICRO_VERSION @ISOBURN_MICRO_VERSION@
|
#define ISOBURN_MICRO_VERSION @ISOBURN_MICRO_VERSION@
|
||||||
|
*/
|
||||||
|
@ -9,24 +9,30 @@ AM_INIT_AUTOMAKE([subdir-objects])
|
|||||||
|
|
||||||
BURN_MAJOR_VERSION=0
|
BURN_MAJOR_VERSION=0
|
||||||
BURN_MINOR_VERSION=4
|
BURN_MINOR_VERSION=4
|
||||||
BURN_MICRO_VERSION=1
|
BURN_MICRO_VERSION=3
|
||||||
AC_SUBST(BURN_MAJOR_VERSION)
|
AC_SUBST(BURN_MAJOR_VERSION)
|
||||||
AC_SUBST(BURN_MINOR_VERSION)
|
AC_SUBST(BURN_MINOR_VERSION)
|
||||||
AC_SUBST(BURN_MICRO_VERSION)
|
AC_SUBST(BURN_MICRO_VERSION)
|
||||||
|
|
||||||
LIBISOFS_MAJOR_VERSION=0
|
LIBISOFS_MAJOR_VERSION=0
|
||||||
LIBISOFS_MINOR_VERSION=5
|
LIBISOFS_MINOR_VERSION=6
|
||||||
LIBISOFS_MICRO_VERSION=0
|
LIBISOFS_MICRO_VERSION=1
|
||||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||||
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
||||||
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
||||||
|
|
||||||
ISOBURN_MAJOR_VERSION=0
|
dnl The API version codes are now defined in libisoburn/libisoburn.h
|
||||||
ISOBURN_MINOR_VERSION=0
|
dnl #define isoburn_header_version_*
|
||||||
ISOBURN_MICRO_VERSION=1
|
dnl configure.ac only rules the libtool revision numbering about
|
||||||
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
dnl LT_CURREN, LT_AGE, LT_REVISION where SONAME becomes LT_CURRENT - LT_AGE
|
||||||
AC_SUBST(ISOBURN_MINOR_VERSION)
|
dnl
|
||||||
AC_SUBST(ISOBURN_MICRO_VERSION)
|
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
||||||
|
dnl ISOBURN_MAJOR_VERSION=0
|
||||||
|
dnl ISOBURN_MINOR_VERSION=0
|
||||||
|
dnl ISOBURN_MICRO_VERSION=1
|
||||||
|
dnl AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||||
|
dnl AC_SUBST(ISOBURN_MINOR_VERSION)
|
||||||
|
dnl AC_SUBST(ISOBURN_MICRO_VERSION)
|
||||||
|
|
||||||
|
|
||||||
AC_PREFIX_DEFAULT([/usr/local])
|
AC_PREFIX_DEFAULT([/usr/local])
|
||||||
@ -61,6 +67,18 @@ AC_CHECK_MEMBER([struct tm.tm_gmtoff],
|
|||||||
,
|
,
|
||||||
[#include <time.h>])
|
[#include <time.h>])
|
||||||
|
|
||||||
|
dnl Check if non standard timegm() function is available
|
||||||
|
AC_CHECK_DECL([timegm],
|
||||||
|
[AC_DEFINE(HAVE_TIMEGM, 1, [Define this if timegm function is available])],
|
||||||
|
,
|
||||||
|
[#include <time.h>])
|
||||||
|
|
||||||
|
dnl Check if non standard eaccess() function is available
|
||||||
|
AC_CHECK_DECL([eaccess],
|
||||||
|
[AC_DEFINE(HAVE_EACCESS, 1, [Define this if eaccess function is available])],
|
||||||
|
,
|
||||||
|
[#include <unistd.h>])
|
||||||
|
|
||||||
THREAD_LIBS=-lpthread
|
THREAD_LIBS=-lpthread
|
||||||
AC_SUBST(THREAD_LIBS)
|
AC_SUBST(THREAD_LIBS)
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2008.01.29.125956"
|
#define Xorriso_timestamP "2008.01.29.184356"
|
||||||
|
@ -76,7 +76,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
|
|
||||||
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag)
|
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret, major, minor, micro;
|
||||||
char *handler_prefix= NULL;
|
char *handler_prefix= NULL;
|
||||||
char *queue_sev, *print_sev, reason[1024];
|
char *queue_sev, *print_sev, reason[1024];
|
||||||
|
|
||||||
@ -101,6 +101,19 @@ int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag)
|
|||||||
free(handler_prefix);
|
free(handler_prefix);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
ret= isoburn_is_compatible(isoburn_header_version_major,
|
||||||
|
isoburn_header_version_minor,
|
||||||
|
isoburn_header_version_micro, 0);
|
||||||
|
if(ret<=0) {
|
||||||
|
isoburn_version(&major, &minor, µ);
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"libisoburn version too old: %d.%d.%d . Need at least: %d.%d.%d .\n",
|
||||||
|
major, minor, micro,
|
||||||
|
isoburn_header_version_major, isoburn_header_version_minor,
|
||||||
|
isoburn_header_version_micro);
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
if(reason[0]) {
|
if(reason[0]) {
|
||||||
sprintf(xorriso->info_text, "%s", reason);
|
sprintf(xorriso->info_text, "%s", reason);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user