Hello community,

here is the log from the commit of package libburn for openSUSE:Factory checked 
in at 2018-02-09 15:42:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libburn (Old)
 and      /work/SRC/openSUSE:Factory/.libburn.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libburn"

Fri Feb  9 15:42:08 2018 rev:4 rq:574400 version:1.4.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/libburn/libburn.changes  2017-02-03 
17:47:09.384402294 +0100
+++ /work/SRC/openSUSE:Factory/.libburn.new/libburn.changes     2018-02-09 
15:42:09.423000934 +0100
@@ -1,0 +2,10 @@
+Thu Feb  8 20:25:18 UTC 2018 - asterios.dra...@gmail.com
+
+- Update to 1.4.8:
+  * Bug fix: Option -dummy did not affect writing by
+    direct_write_amount=
+  * New API call burn_drive_reset_simulate()
+  * New API call burn_drive_get_bd_r_pow()
+  * Refusing to write to BD-R if formatted to Pseudo Overwrite
+
+-------------------------------------------------------------------

Old:
----
  libburn-1.4.6.tar.gz

New:
----
  libburn-1.4.8.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libburn.spec ++++++
--- /var/tmp/diff_new_pack.idXtCy/_old  2018-02-09 15:42:10.074977528 +0100
+++ /var/tmp/diff_new_pack.idXtCy/_new  2018-02-09 15:42:10.078977384 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libburn
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %define so_ver 4
 Name:           libburn
-Version:        1.4.6
+Version:        1.4.8
 Release:        0
 Summary:        Library for Writing Preformatted Data onto Optical Media
 License:        GPL-2.0+
@@ -27,8 +27,7 @@
 Source0:        
http://files.libburnia-project.org/releases/%{name}-%{version}.tar.gz
 BuildRequires:  doxygen
 BuildRequires:  fdupes
-BuildRequires:  pkg-config
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+BuildRequires:  pkgconfig
 
 %description
 Libburn is a library for writing preformatted data onto optical media such as
@@ -74,34 +73,30 @@
 # Remove libtool config files
 find %{buildroot} -type f -name "*.la" -delete -print
 
-# Install devel docs (do it manually to fix also rpmlint warning 
"files-duplicate" with %%fdupes)
+# Install devel docs
 mkdir -p %{buildroot}%{_docdir}/%{name}-devel
-install -pm 0644 AUTHORS CONTRIBUTORS COPYING COPYRIGHT ChangeLog README 
%{buildroot}%{_docdir}/%{name}-devel/
-install -pm 0644 doc/{cdtext.txt,cookbook.txt,mediainfo.txt} 
%{buildroot}%{_docdir}/%{name}-devel/
 cp -a doc/html/ %{buildroot}%{_docdir}/%{name}-devel/
 
 %fdupes -s %{buildroot}%{_docdir}/%{name}-devel/
 
 %post -n libburn%{so_ver} -p /sbin/ldconfig
-
 %postun -n libburn%{so_ver} -p /sbin/ldconfig
 
 %files devel
-%defattr(-,root,root,-)
-%doc %{_docdir}/%{name}-devel/
+%doc AUTHORS CONTRIBUTORS COPYING COPYRIGHT ChangeLog README
+%doc doc/{cdtext.txt,cookbook.txt,mediainfo.txt}
+%doc %{_docdir}/%{name}-devel/html/
 %{_includedir}/libburn/
 %{_libdir}/pkgconfig/libburn-1.pc
 %{_libdir}/libburn.so
 
 %files -n cdrskin
-%defattr(-,root,root,-)
 %doc COPYING COPYRIGHT
 %doc cdrskin/{README,cdrskin_eng.html,changelog.txt,wiki_plain.txt}
 %{_bindir}/cdrskin
 %{_mandir}/man1/cdrskin.1*
 
 %files -n libburn%{so_ver}
-%defattr(-,root,root,-)
 %{_libdir}/libburn.so.%{so_ver}*
 
 %changelog

++++++ libburn-1.4.6.tar.gz -> libburn-1.4.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/COPYRIGHT new/libburn-1.4.8/COPYRIGHT
--- old/libburn-1.4.6/COPYRIGHT 2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/COPYRIGHT 2017-01-27 12:04:44.000000000 +0100
@@ -1,7 +1,7 @@
 Derek Foreman <de...@signalmarketing.com> and Ben Jansens <x...@orodu.net>
 Copyright (C) 2002-2006  Derek Foreman and Ben Jansens
 Mario Danic <mario.da...@gmail.com>, Thomas Schmitt <scdbac...@gmx.net>
-Copyright (C) 2006-2014 Mario Danic, Thomas Schmitt
+Copyright (C) 2006-2017 Mario Danic, Thomas Schmitt
 
 
     This program is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/ChangeLog new/libburn-1.4.8/ChangeLog
--- old/libburn-1.4.6/ChangeLog 2016-09-16 14:14:24.000000000 +0200
+++ new/libburn-1.4.8/ChangeLog 2017-09-12 13:39:09.000000000 +0200
@@ -1,8 +1,15 @@
+libburn-1.4.8.tar.gz Tue Sep 12 2017
+===============================================================================
+* Bug fix: Option -dummy did not affect writing by direct_write_amount=
+* New API call burn_drive_reset_simulate()
+* New API call burn_drive_get_bd_r_pow()
+* Refusing to write to BD-R if formatted to Pseudo Overwrite
 
 libburn-1.4.6.tar.gz Fri Sep 16 2016
 ===============================================================================
 * Bug fix: SAO CD could be perceived 2 blocks to short.
            Regression in 1.4.4 by rev 5672.
+* Now operating optical drives on OpenBSD. Thanks to SASANO Takayoshi.
 * New API call burn_drive_set_immed()
 * New cdrskin option use_immed_bit=
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/Makefile.am 
new/libburn-1.4.8/Makefile.am
--- old/libburn-1.4.6/Makefile.am       2016-09-16 13:45:15.000000000 +0200
+++ new/libburn-1.4.8/Makefile.am       2017-09-12 13:31:27.000000000 +0200
@@ -114,9 +114,9 @@
 test_poll_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
 test_poll_SOURCES = test/poll.c
 
-##  cdrskin construction site - ts A60816 - B60701
+##  cdrskin construction site - ts A60816 - B70912
 cdrskin_cdrskin_CPPFLAGS = -Ilibburn
-cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_4_6
+cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_4_8
 
 # cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
 # ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/Makefile.in 
new/libburn-1.4.8/Makefile.in
--- old/libburn-1.4.6/Makefile.in       2016-09-16 14:22:22.000000000 +0200
+++ new/libburn-1.4.8/Makefile.in       2017-09-12 15:14:07.000000000 +0200
@@ -518,7 +518,7 @@
 test_poll_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
 test_poll_SOURCES = test/poll.c
 cdrskin_cdrskin_CPPFLAGS = -Ilibburn
-cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_4_6
+cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_4_8
 
 # cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
 # ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/README new/libburn-1.4.8/README
--- old/libburn-1.4.6/README    2016-09-16 14:02:18.000000000 +0200
+++ new/libburn-1.4.8/README    2017-09-12 13:32:58.000000000 +0200
@@ -6,12 +6,12 @@
 ------------------------------------------------------------------------------
 libburnia-project.org
 By Mario Danic <mario.da...@gmail.com> and Thomas Schmitt <scdbac...@gmx.net>
-Copyright (C) 2006-2016 Mario Danic, Thomas Schmitt
+Copyright (C) 2006-2017 Mario Danic, Thomas Schmitt
 Still containing parts of Libburn. By Derek Foreman <de...@signalmarketing.com>
 and Ben Jansens <x...@orodu.net>
 Copyright (C) 2002-2006  Derek Foreman and Ben Jansens
 
-     http://files.libburnia-project.org/releases/libburn-1.4.6.tar.gz
+     http://files.libburnia-project.org/releases/libburn-1.4.8.tar.gz
 
 ------------------------------------------------------------------------------
 
@@ -19,10 +19,10 @@
 
                                 From tarball
 
-Obtain libburn-1.4.6.tar.gz, take it to a directory of your choice and do:
+Obtain libburn-1.4.8.tar.gz, take it to a directory of your choice and do:
 
-   tar xzf libburn-1.4.6.tar.gz
-   cd libburn-1.4.6
+   tar xzf libburn-1.4.8.tar.gz
+   cd libburn-1.4.8
    ./configure --prefix=/usr
    make
 
@@ -770,6 +770,13 @@
   ISO images on identical input and identical constant options.
   Several moderately embarrassing bugs have been fixed.
 
+- Tue Sep 12 2017 release 1.4.8:
+  libburn now refuses to write to SRM+POW formatted BD-R, because it would
+  spoil them. libisofs got several bugs fixed and offers new API calls to
+  supoort new xorriso features. libisoburn and xorriso offer more detail
+  control with particular boot sector types. New bugs and a regression from
+  version 1.4.4 were fixed.
+
 
 ------------------------------------------------------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/acinclude.m4 
new/libburn-1.4.8/acinclude.m4
--- old/libburn-1.4.6/acinclude.m4      2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/acinclude.m4      2017-01-27 16:05:25.000000000 +0100
@@ -149,3 +149,24 @@
     fi
 ])
 
+
+dnl LIBBURNIA_CHECK_LINUX_SCSI is by Thomas Schmitt, libburnia project
+dnl
+AC_DEFUN([LIBBURNIA_CHECK_LINUX_SCSI],
+[
+  dnl Check whether it is a Linux without scsi/scsi.h
+  AH_TEMPLATE([Libburn_use_sg_dummY],
+              [Define to compile without OS specific SCSI features])
+  AC_MSG_CHECKING([for missing scsi/scsi.h on Linux])
+  AC_TRY_COMPILE([
+#ifdef __linux
+#include <scsi/scsi.h>
+#endif
+     ],
+     [;],
+     [AC_MSG_RESULT([no])],
+     [AC_DEFINE([Libburn_use_sg_dummY], [yes])
+      AC_MSG_RESULT([yes])]
+  )
+])
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/cdrskin/README 
new/libburn-1.4.8/cdrskin/README
--- old/libburn-1.4.6/cdrskin/README    2016-09-16 14:03:44.000000000 +0200
+++ new/libburn-1.4.8/cdrskin/README    2017-09-12 13:34:20.000000000 +0200
@@ -4,9 +4,9 @@
 cdrskin. By Thomas Schmitt <scdbac...@gmx.net>
 Integrated sub project of libburnia-project.org but also published via:
 http://scdbackup.sourceforge.net/cdrskin_eng.html
-http://scdbackup.sourceforge.net/cdrskin-1.4.6.tar.gz
+http://scdbackup.sourceforge.net/cdrskin-1.4.8.tar.gz
 
-Copyright (C) 2006-2016 Thomas Schmitt, provided under GPL version 2 or later.
+Copyright (C) 2006-2017 Thomas Schmitt, provided under GPL version 2 or later.
 ------------------------------------------------------------------------------
 
 
@@ -26,10 +26,10 @@
 
                    Compilation, First Glimpse, Installation
 
-Obtain cdrskin-1.4.6.tar.gz, take it to a directory of your choice and do:
+Obtain cdrskin-1.4.8.tar.gz, take it to a directory of your choice and do:
 
-    tar xzf cdrskin-1.4.6.tar.gz
-    cd cdrskin-1.4.6
+    tar xzf cdrskin-1.4.8.tar.gz
+    cd cdrskin-1.4.8
 
 Within that directory execute:
 
@@ -591,7 +591,7 @@
 Based on and sub project of:
 libburnia-project.org
 By Mario Danic <mario.da...@gmail.com> and Thomas Schmitt <scdbac...@gmx.net>
-Copyright (C) 2006-2014 Mario Danic, Thomas Schmitt
+Copyright (C) 2006-2017 Mario Danic, Thomas Schmitt
 
 libburnia-project.org is inspired by and in other components still containing
 parts of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/cdrskin/cdrskin.1 
new/libburn-1.4.8/cdrskin/cdrskin.1
--- old/libburn-1.4.6/cdrskin/cdrskin.1 2016-09-16 14:03:30.000000000 +0200
+++ new/libburn-1.4.8/cdrskin/cdrskin.1 2017-09-12 13:33:53.000000000 +0200
@@ -2,7 +2,7 @@
 .\" First parameter, NAME, should be all caps
 .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
 .\" other parameters are allowed: see man(7), man(1)
-.TH CDRSKIN 1 "Version 1.4.6, Sep 16, 2016"
+.TH CDRSKIN 1 "Version 1.4.7, Sep 12, 2017"
 .\" Please adjust this date whenever revising the manpage.
 .\"
 .\" Some roff macros, for reference:
@@ -532,6 +532,7 @@
 .br
 Options -mode2, -xa, and -xa2 get mapped to -data, not using the desired CD
 sector formats and thus not taking advantage of eventual higher payload.
+.TP
 .BI \-xa1
 Subsequent tracks are data tracks with input suitable for CD-ROM XA mode 2
 form 1. This differs from -data input by 8 additional header bytes per block.
@@ -810,7 +811,7 @@
 .TP
 .BI speed= number
 Set speed of drive. With data CD, 1x speed corresponds to a throughput of
-150,000 bytes/second. With DVD, 1x = 1,385,000 bytes/second.
+153,600 bytes/second. With DVD, 1x = 1,385,000 bytes/second.
 With BD 1x = 4,495,625 bytes/second.
 It is not an error to set a speed higher than is suitable for drive
 and media. One should stay within a realistic speed range, though.
@@ -1068,7 +1069,7 @@
 and switches back to normal session oriented writing.
 .br
 Both, write_start_address and direct_write_amount size must be aligned to a
-media dependend transaction size. With DVD-RAM, BD-RE, DVD+RW this is 2k, with
+media dependent transaction size. With DVD-RAM, BD-RE, DVD+RW this is 2k, with
 overwriteable DVD-RW it is 32k.
 .TP
 .BI dvd_obs= default|32k|64k
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/cdrskin/cdrskin.c 
new/libburn-1.4.8/cdrskin/cdrskin.c
--- old/libburn-1.4.6/cdrskin/cdrskin.c 2016-09-16 14:03:20.000000000 +0200
+++ new/libburn-1.4.8/cdrskin/cdrskin.c 2017-09-12 13:33:45.000000000 +0200
@@ -1,6 +1,6 @@
 
 /*
- cdrskin.c , Copyright 2006-2016 Thomas Schmitt <scdbac...@gmx.net>
+ cdrskin.c , Copyright 2006-2017 Thomas Schmitt <scdbac...@gmx.net>
 Provided under GPL version 2 or later.
 
 A cdrecord compatible command line interface for libburn.
@@ -87,7 +87,7 @@
 
 /** The official program version */
 #ifndef Cdrskin_prog_versioN
-#define Cdrskin_prog_versioN "1.4.6"
+#define Cdrskin_prog_versioN "1.4.8"
 #endif
 
 /** The official libburn interface revision to use.
@@ -100,7 +100,7 @@
 #define Cdrskin_libburn_minoR 4
 #endif
 #ifndef Cdrskin_libburn_micrO
-#define Cdrskin_libburn_micrO 6
+#define Cdrskin_libburn_micrO 8
 #endif
 
 
@@ -120,34 +120,34 @@
 #undef Cdrskin_libburn_versioN 
 #endif
 
-#ifdef Cdrskin_libburn_1_4_6
-#define Cdrskin_libburn_versioN "1.4.6"
+#ifdef Cdrskin_libburn_1_4_8
+#define Cdrskin_libburn_versioN "1.4.8"
 #endif
 
-#ifdef Cdrskin_libburn_1_4_7
-#define Cdrskin_libburn_versioN "1.4.7"
+#ifdef Cdrskin_libburn_1_4_9
+#define Cdrskin_libburn_versioN "1.4.9"
 #endif
 
 #ifndef Cdrskin_libburn_versioN
-#define Cdrskin_libburn_1_4_6
-#define Cdrskin_libburn_versioN "1.4.6"
+#define Cdrskin_libburn_1_4_8
+#define Cdrskin_libburn_versioN "1.4.8"
 #endif
 
-#ifdef Cdrskin_libburn_1_4_6
+#ifdef Cdrskin_libburn_1_4_8
 #undef Cdrskin_libburn_majoR
 #undef Cdrskin_libburn_minoR
 #undef Cdrskin_libburn_micrO
 #define Cdrskin_libburn_majoR 1
 #define Cdrskin_libburn_minoR 4
-#define Cdrskin_libburn_micrO 6
+#define Cdrskin_libburn_micrO 8
 #endif
-#ifdef Cdrskin_libburn_1_4_7
+#ifdef Cdrskin_libburn_1_4_9
 #undef Cdrskin_libburn_majoR
 #undef Cdrskin_libburn_minoR
 #undef Cdrskin_libburn_micrO
 #define Cdrskin_libburn_majoR 1
 #define Cdrskin_libburn_minoR 4
-#define Cdrskin_libburn_micrO 7
+#define Cdrskin_libburn_micrO 9
 #endif
 
 
@@ -2855,7 +2855,7 @@
      printf(" --drive_not_exclusive  combined not_o_excl and not_f_setlk.\n");
      printf(" --drive_not_f_setlk  do not obtain exclusive lock via fcntl.\n");
      printf(" --drive_not_o_excl   do not ask kernel to prevent opening\n");
-     printf("                    busy drives. Effect is kernel dependend.\n");
+     printf("                    busy drives. Effect is kernel dependent.\n");
      printf(
          " drive_scsi_dev_family=<sr|scd|sg|default> select Linux device\n");
      printf("                    file family to be used for (pseudo-)SCSI.\n");
@@ -5134,7 +5134,7 @@
  struct burn_toc_entry toc_entry;
  enum burn_disc_status s;
  char profile_name[80];
- int profile_number;
+ int profile_number, is_bdr_pow= 0;
 
  drive= skin->drives[skin->driveno].drive;
 
@@ -5255,8 +5255,10 @@
 
  if(open_sessions > 0 && !have_real_open_session)
    open_sessions--;
+ is_bdr_pow= burn_drive_get_bd_r_pow(drive);
  printf("Media summary: %d sessions, %d tracks, %s %s\n",
         num_sessions + open_sessions, track_count, 
+        is_bdr_pow ? "unusable (POW)" :
         s==BURN_DISC_BLANK ? "blank" :
         s==BURN_DISC_APPENDABLE ? "appendable" :
         s==BURN_DISC_FULL ? "closed" :
@@ -5294,7 +5296,7 @@
  struct burn_toc_entry toc_entry;
  enum burn_disc_status s, show_status;
  char profile_name[80];
- int pno;
+ int pno, is_bdr_pow= 0;
  char media_class[80];
  int nominal_sessions= 1, ftils= 1, ltils= 1, first_track= 1, read_capacity= 0;
  int app_code, cd_info_valid, lra, alloc_blocks, free_blocks;
@@ -5323,10 +5325,12 @@
    strcpy(media_class, "BD");
  else
    sprintf(media_class, "Unknown class (profile 0x%4.4X)", pno);
+ is_bdr_pow= burn_drive_get_bd_r_pow(drive);
 
  printf("\n");
  printf("Mounted media class:      %s\n", media_class);
- printf("Mounted media type:       %s\n", profile_name);
+ printf("Mounted media type:       %s%s\n", profile_name,
+        is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
  ret= burn_disc_erasable(drive);
  printf("Disk Is %serasable\n",
         (ret || skin->media_is_overwriteable) ? "" : "not ");
@@ -5339,6 +5343,7 @@
  if(ovwrt_full)
    show_status= BURN_DISC_FULL;
  printf("disk status:              %s\n",
+        is_bdr_pow ?                          "unusable (POW)" :
         show_status == BURN_DISC_BLANK ?      "empty" :
         show_status == BURN_DISC_APPENDABLE ? "incomplete/appendable" :
         show_status == BURN_DISC_FULL ?       "complete" :
@@ -5576,7 +5581,7 @@
  char profile_name[80], *manuf= NULL, *media_code1= NULL, *media_code2= NULL;
  char *book_type= NULL, *product_id= NULL;
  char *sno= NULL;
- int sno_len = 0, i;
+ int sno_len = 0, i, is_bdr_pow= 0;
 
  ClN(printf("cdrskin: pseudo-atip on drive %d\n",skin->driveno));
  ret= Cdrskin_grab_drive(skin,0);
@@ -5651,7 +5656,9 @@
    if(profile_number==0x13) /* DVD-RW */
      printf("cdrskin: message for sdvdbackup: \"(growisofs mode Restricted 
Overwrite)\"\n");
  } else if(strstr(profile_name,"BD")==profile_name) {
-   printf("Mounted Media: %2.2Xh, %s\n", profile_number, profile_name);
+   is_bdr_pow= burn_drive_get_bd_r_pow(drive);
+   printf("Mounted Media: %2.2Xh, %s%s\n", profile_number, profile_name,
+          is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
  } else {
    printf("ATIP info from disk:\n");
    if(burn_disc_erasable(drive)) {
@@ -5766,6 +5773,7 @@
 {
  struct burn_drive *drive;
  int ret, i, status, num_formats, profile_no, type, alloc_blocks, free_blocks;
+ int is_bdr_pow= 0;
  off_t size;
  unsigned dummy;
  char status_text[80], profile_name[90];
@@ -5782,10 +5790,12 @@
    ret= 0; goto ex;
  }
  ret= burn_disc_get_profile(drive, &profile_no, profile_name);
+ is_bdr_pow= burn_drive_get_bd_r_pow(drive);
  printf("Media current: ");
  if(profile_no > 0 && ret > 0) {
    if(profile_name[0])
-     printf("%s\n", profile_name);
+     printf("%s%s\n", profile_name,
+                      is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
    else
      printf("%4.4Xh\n", profile_no);
  } else
@@ -5835,7 +5845,7 @@
 int Cdrskin_list_speeds(struct CdrskiN *skin, int flag)
 {
  struct burn_drive *drive;
- int ret, i, profile_no, high= -1, low= 0x7fffffff, is_cd= 0;
+ int ret, i, profile_no, high= -1, low= 0x7fffffff, is_cd= 0, is_bdr_pow= 0;
  char profile_name[90], *speed_unit= "D";
  double speed_factor= 1385000.0, cd_factor= 75.0 * 2352;
  struct burn_speed_descriptor *speed_list= NULL, *item, *other;
@@ -5850,10 +5860,12 @@
    ret= 0; goto ex;
  }
  ret= burn_disc_get_profile(drive, &profile_no, profile_name);
+ is_bdr_pow= burn_drive_get_bd_r_pow(drive);
  printf("Media current: ");
  if(profile_no > 0 && ret > 0) {
    if(profile_name[0])
-     printf("%s\n", profile_name);
+     printf("%s%s\n", profile_name,
+                    is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
    else
      printf("%4.4Xh\n", profile_no);
  } else
@@ -6989,6 +7001,7 @@
  int ret, max_chunksize= 64*1024, source_fd= -1, is_from_stdin, eof_sensed= 0;
  int self_opened= 0;
  char *buf= NULL, *source_path, amount_text[81];
+ char *dummy_text= "";
  struct burn_multi_caps *caps= NULL;
 
  ret= Cdrskin_grab_drive(skin,0);
@@ -7042,8 +7055,11 @@
    sprintf(amount_text,"%.fk",(double) (data_count/1024));
  else
    strcpy(amount_text,"0=open_ended");
- fprintf(stderr,"Beginning direct write (start=%.fk,amount=%s) ...\n",
-         (double) (byte_address/1024),amount_text);
+ burn_drive_reset_simulate(skin->grabbed_drive, !!skin->dummy_mode);
+ if(skin->dummy_mode)
+   dummy_text= " simulation of";
+ fprintf(stderr,"Beginning%s direct write (start=%.fk,amount=%s) ...\n",
+         dummy_text, (double) (byte_address / 1024), amount_text);
  for(i= 0; i<data_count || data_count==0; i+= chunksize) {
    if(data_count==0)
      chunksize= (alignment > 0 ? alignment : 2048);
@@ -7937,7 +7953,7 @@
 int Cdrskin_msinfo(struct CdrskiN *skin, int flag)
 {
  int num_sessions, session_no, ret, num_tracks, open_sessions= 0;
- int nwa= -123456789, lba= -123456789, aux_lba;
+ int nwa= -123456789, lba= -123456789, aux_lba, is_bdr_pow= 0;
  char msg[80];
  enum burn_disc_status s;
  struct burn_drive *drive;
@@ -7966,6 +7982,12 @@
      fprintf(stderr,"cdrskin:         or on overwriteables with existing 
ISO-9660 file system.\n");
    {ret= 0; goto ex;}
  }
+ is_bdr_pow= burn_drive_get_bd_r_pow(drive);
+ if(is_bdr_pow) {
+   fprintf(stderr,
+      "cdrskin: FATAL : -msinfo cannot operate on POW formatted BD-R discs\n");
+   {ret= 0; goto ex;}
+ }
  disc= burn_drive_get_disc(drive);
  if(disc==NULL) {
    /* No TOC available. Try to inquire directly. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/cdrskin/cdrskin_eng.html 
new/libburn-1.4.8/cdrskin/cdrskin_eng.html
--- old/libburn-1.4.6/cdrskin/cdrskin_eng.html  2016-09-16 14:11:51.000000000 
+0200
+++ new/libburn-1.4.8/cdrskin/cdrskin_eng.html  2017-09-12 13:35:25.000000000 
+0200
@@ -67,7 +67,7 @@
 GPL software included:<BR>
 </H2>
 <DL>
-<DT>libburn-1.4.6</DT>
+<DT>libburn-1.4.8</DT>
 <DD>(founded by Derek Foreman and Ben Jansens,
 developed and maintained since August 2006 by
 Thomas Schmitt from team of libburnia-project.org)
@@ -202,13 +202,13 @@
 <P>
 <DL>
 <DT>Download as source code (see README):</DT>
-<DD><A HREF="cdrskin-1.4.6.tar.gz">cdrskin-1.4.6.tar.gz</A>
+<DD><A HREF="cdrskin-1.4.8.tar.gz">cdrskin-1.4.8.tar.gz</A>
 (1060 KB).
 </DD>
-<DD><A HREF="cdrskin-1.4.6.tar.gz.sig">cdrskin-1.4.6.tar.gz.sig</A></DD>
+<DD><A HREF="cdrskin-1.4.8.tar.gz.sig">cdrskin-1.4.8.tar.gz.sig</A></DD>
 <DD>
 (detached GPG signature for verification by
-<KBD>gpg --verify cdrskin-1.4.6.tar.gz.sig cdrskin-1.4.6.tar.gz</KBD>
+<KBD>gpg --verify cdrskin-1.4.8.tar.gz.sig cdrskin-1.4.8.tar.gz</KBD>
 <BR>
 after <KBD>gpg --keyserver keys.gnupg.net --recv-keys ABC0A854</KBD>).
 </DD>
@@ -259,19 +259,17 @@
 <HR>
 
 <P>
-Enhancements towards previous stable version cdrskin-1.4.4:
+Enhancements towards previous stable version cdrskin-1.4.6:
 <UL>
-<LI>New cdrskin option use_immed_bit=</LI>
-<LI>Now operating drives on OpenBSD</LI>
+<LI>Refusing to write to BD-R if formatted to Pseudo Overwrite</LI>
 <!--
 <LI>none</LI>
 -->
 </UL>
 
-Bug fixes towards cdrskin-1.4.4:
+Bug fixes towards cdrskin-1.4.6:
 <UL>
-<LI>SAO CD could be perceived 2 blocks to short.
-Regression in 1.4.4 by rev 5672.</LI>
+<LI>Option -dummy did not affect writing by direct_write_amount=</LI>
 <!--
 <LI>none</LI>
 Bug fixes towards cdrskin-1.4.2 (without .pl01):
@@ -284,8 +282,8 @@
 
 <P>
 <DL>
-<DT><H3>Development snapshot, version 1.4.7 :</H3></DT>
-<DD>Enhancements towards current stable version 1.4.6:
+<DT><H3>Development snapshot, version 1.4.9 :</H3></DT>
+<DD>Enhancements towards current stable version 1.4.8:
 <UL>
 <LI>none yet</LI>
 <!--
@@ -294,7 +292,7 @@
 </UL>
 </DD>
 
-<DD>Bug fixes towards cdrskin-1.4.6:
+<DD>Bug fixes towards cdrskin-1.4.8:
 <UL>
 <LI>none yet</LI>
 <!--
@@ -304,10 +302,10 @@
 </DD>
 
 <DD>&nbsp;</DD>
-<DD><A HREF="README_cdrskin_devel">README 1.4.7</A>
-<DD><A HREF="cdrskin__help_devel">cdrskin-1.4.7 --help</A></DD>
-<DD><A HREF="cdrskin_help_devel">cdrskin-1.4.7 -help</A></DD>
-<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 1.4.7)</A></DD>
+<DD><A HREF="README_cdrskin_devel">README 1.4.9</A>
+<DD><A HREF="cdrskin__help_devel">cdrskin-1.4.9 --help</A></DD>
+<DD><A HREF="cdrskin_help_devel">cdrskin-1.4.9 -help</A></DD>
+<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 1.4.9)</A></DD>
 <DD>&nbsp;</DD>
 <DT>Maintainers of cdrskin unstable packages please use SVN of
 <A HREF="http://libburnia-project.org";> libburnia-project.org</A></DT>
@@ -327,7 +325,7 @@
 <A HREF="README_cdrskin_devel">upcoming README</A> ):
 </DD>
 <DD>
-<A HREF="cdrskin-1.4.7.tar.gz">cdrskin-1.4.7.tar.gz</A>
+<A HREF="cdrskin-1.4.9.tar.gz">cdrskin-1.4.9.tar.gz</A>
 (1060 KB).
 </DD>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/cdrskin/cdrskin_timestamp.h 
new/libburn-1.4.8/cdrskin/cdrskin_timestamp.h
--- old/libburn-1.4.6/cdrskin/cdrskin_timestamp.h       2016-09-16 
14:04:20.000000000 +0200
+++ new/libburn-1.4.8/cdrskin/cdrskin_timestamp.h       2017-09-12 
13:34:49.000000000 +0200
@@ -1 +1 @@
-#define Cdrskin_timestamP "2016.09.16.113001"
+#define Cdrskin_timestamP "2017.09.12.110001"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/cdrskin/changelog.txt 
new/libburn-1.4.8/cdrskin/changelog.txt
--- old/libburn-1.4.6/cdrskin/changelog.txt     2016-09-16 14:15:10.000000000 
+0200
+++ new/libburn-1.4.8/cdrskin/changelog.txt     2017-09-12 13:39:38.000000000 
+0200
@@ -4907,7 +4907,7 @@
 configure.ac
 Some changes in the comments
 
-24 Dec 2008  [1338]
+24 Dec 2007  [1338]
 libburn/libburn.h
 libburn/source.h
 libburn/source.c
@@ -13557,7 +13557,7 @@
 + cdrskin/add_ts_changes_to_libburn_1_4_7
 Updated cdrskin tarball generator
 
-  []
+16 Sep 2016  [5763]
 ChangeLog
 cdrskin/changelog.txt
 Updated change log
@@ -13569,6 +13569,130 @@
 * New cdrskin option use_immed_bit=
 
 
+2016.09.16.190600  [5768]
+Makefile.am
+configure.ac
+README
+libburn/libburn.h
+cdrskin/cdrskin.c
+cdrskin/cdrskin.1
+cdrskin/README
+cdrskin/compile_cdrskin.sh
+cdrskin/cdrskin_timestamp.h
+cdrskin/cdrskin_eng.html
+Made number transition to 1.4.7
+
+16 Sep 2016  [5769]
+- cdrskin/add_ts_changes_to_libburn_1_4_4
+- cdrskin/add_ts_changes_to_libburn_1_4_5
++ cdrskin/add_ts_changes_to_libburn_1_4_6
++ cdrskin/add_ts_changes_to_libburn_1_4_7
+Updated cdrskin tarball generator
+
+16 Sep 2016  [5770]
+ChangeLog
+cdrskin/changelog.txt
+Updated change log
+
+------------------------------------ cycle  - cdrskin-1.4.7 - 2016.09.16.190600
+
+
+16 Sep 2016  [5771]
+libburn release 1.4.6 is ready
+http://svn.libburnia-project.org/libburn/branches/1.4.6
+http://svn.libburnia-project.org/libburn/tags/1.4.6
+
+
+2016.11.18.131813  [80175e0] [5778]
+libburn/libburn.h
+libburn/transport.h
+libburn/drive.c
+libburn/write.c
+libburn/mmc.c
+libburn/libburn.ver
+Let random access writing obey simulation mode of previous sequential run.
+New API call burn_drive_reset_simulate().
+
+2016.11.18.132335  [19a1b8e] [5579]
+cdrskin/cdrskin.c
+Bug fix: Option -dummy did not affect writing by direct_write_amount=
+
+11 Jan 2017  [074f88f] [5791]
+cdrskin/cdrskin.1
+Corrected documentation of bytes/second value of 1x CD speed
+
+27 Jan 2017  [6b020a3] [5792]
+configure.ac
+acinclude.m4
+COPYRIGHT
+Detecting Linux systems without generic SCSI support by scsi/scsi.h
+
+27 Jan 2017  [6f6bf68] [5795]
+acinclude.m4
+Small adjustement for previous commit
+
+2017.01.28.200155  [724d518] [5797]
+libburn/file.h
+libburn/file.c
+libburn/async.h
+libburn/async.c
+Giving up use of function pthread_cancel()
+
+2017.01.28.200802  [858e42d] [5798]
+cdrskin/cdrskin.c
+cdrskin/cdrskin.1
+Corrected harmless typos found by lintian
+
+2017.02.06.135800  [d71d80d] [5800]
+libburn/libburn.h
+libburn/drive.c
+libburn/libburn.ver
+New API call burn_drive_get_bd_r_pow()
+
+2017.02.06.141213  [a4b688a] [5801]
+libburn/libburn.h
+libburn/options.c
+libburn/write.c
+Refusing to write to BD-R if formatted to Pseudo Overwrite
+
+2017.02.06.161439  [2bb8bf4] [5802]
+cdrskin/cdrskin.c
+Reporting POW formatted BD-R as unusable
+
+2017.07.15.194129  [113f587]
+libburn/read.c
+Fixed the block count in error message about read attempt after medium end
+
+2017.09.12.110001  [516dc2c]
+Makefile.am
+configure.ac
+README
+libburn/libburn.h
+cdrskin/cdrskin.c
+cdrskin/cdrskin.1
+cdrskin/README
+cdrskin/compile_cdrskin.sh
+cdrskin/cdrskin_timestamp.h
+cdrskin/cdrskin_eng.html
+Made number transition to 1.4.8
+
+12 Sep 2017  [ea486a1]
+- cdrskin/add_ts_changes_to_libburn_1_4_6
+- cdrskin/add_ts_changes_to_libburn_1_4_7
++ cdrskin/add_ts_changes_to_libburn_1_4_8
++ cdrskin/add_ts_changes_to_libburn_1_4_9
+Updated cdrskin tarball generator
+
+12 Sep 2017  []
+ChangeLog
+cdrskin/changelog.txt
+Updated change log
+
+----------------------------------- release - cdrskin-1.4.8 - 2017.09.12.110001
+* Bug fix: Option -dummy did not affect writing by direct_write_amount=
+* New API call burn_drive_get_bd_r_pow()
+* Refusing to write to BD-R if formatted to Pseudo Overwrite
+
 
   []
 ChangeLog
@@ -13576,7 +13700,15 @@
 cdrskin/changelog.txt
 Updated change log
 
------------------------------------- cycle  - cdrskin-1.4.7 - 
+------------------------------------ cycle  - cdrskin-1.5.0 - 
+
+  [] []
+libburn/spc.h
+libburn/spc.c
+libburn/sg-linux.c
+Making commands retryable after particular Linux kernel transport errors
+(currently as libburn/*.[ch].after_1_4_8)
+
 
   []
 ChangeLog
@@ -13584,7 +13716,7 @@
 cdrskin/changelog.txt
 Updated change log
 
------------------------------------- cycle  - cdrskin-1.4.7 - 
+------------------------------------ cycle  - cdrskin-1.5.0 - 
 
 
 **********************************************************************
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/cdrskin/compile_cdrskin.sh 
new/libburn-1.4.8/cdrskin/compile_cdrskin.sh
--- old/libburn-1.4.6/cdrskin/compile_cdrskin.sh        2016-09-16 
14:04:08.000000000 +0200
+++ new/libburn-1.4.8/cdrskin/compile_cdrskin.sh        2017-09-12 
13:34:39.000000000 +0200
@@ -1,14 +1,14 @@
 #!/bin/sh
 
 # compile_cdrskin.sh  
-# Copyright 2005 - 2016 Thomas Schmitt, scdbac...@gmx.net, GPL v2 or later
+# Copyright 2005 - 2017 Thomas Schmitt, scdbac...@gmx.net, GPL v2 or later
 # to be executed within  ./libburn-*  or./cdrskin-*
 
 debug_opts="-O2"
 def_opts=
 largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
 fifo_opts=""
-libvers="-DCdrskin_libburn_1_4_6"
+libvers="-DCdrskin_libburn_1_4_8"
 
 # To be used if Makefile.am uses libburn_libburn_la_CFLAGS
 # burn="libburn/libburn_libburn_la-"
@@ -41,15 +41,15 @@
   elif test "$i" = "-compile_dewav"
   then
     compile_dewav=1
-  elif test "$i" = "-libburn_1_4_6"
+  elif test "$i" = "-libburn_1_4_8"
   then
-    libvers="-DCdrskin_libburn_1_4_6"
+    libvers="-DCdrskin_libburn_1_4_8"
     libdax_audioxtr_o="$burn"libdax_audioxtr.o
     libdax_msgs_o="$burn"libdax_msgs.o
     cleanup_src_or_obj="$burn"cleanup.o
   elif test "$i" = "-libburn_svn"
   then
-    libvers="-DCdrskin_libburn_1_4_7"
+    libvers="-DCdrskin_libburn_1_4_9"
     libdax_audioxtr_o="$burn"libdax_audioxtr.o
     libdax_msgs_o="$burn"libdax_msgs.o
     cleanup_src_or_obj="$burn"cleanup.o
@@ -99,7 +99,7 @@
     echo "Options:"
     echo "  -compile_cdrfifo  compile program cdrskin/cdrfifo."
     echo "  -compile_dewav    compile program test/dewav without libburn."
-    echo "  -libburn_1_4_6    set macro to match libburn-1.4.6"
+    echo "  -libburn_1_4_8    set macro to match libburn-1.4.8"
     echo "  -libburn_svn      set macro to match current libburn-SVN."
     echo "  -dvd_obs_64k      64 KB default size for DVD/BD writing."
     echo "  -use_libcdio      link with -lcdio because libburn uses it."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/configure new/libburn-1.4.8/configure
--- old/libburn-1.4.6/configure 2016-09-16 14:22:21.000000000 +0200
+++ new/libburn-1.4.8/configure 2017-09-12 15:14:07.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libburn 1.4.6.
+# Generated by GNU Autoconf 2.69 for libburn 1.4.8.
 #
 # Report bugs to <http://libburnia-project.org>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='libburn'
 PACKAGE_TARNAME='libburn'
-PACKAGE_VERSION='1.4.6'
-PACKAGE_STRING='libburn 1.4.6'
+PACKAGE_VERSION='1.4.8'
+PACKAGE_STRING='libburn 1.4.8'
 PACKAGE_BUGREPORT='http://libburnia-project.org'
 PACKAGE_URL=''
 
@@ -1357,7 +1357,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libburn 1.4.6 to adapt to many kinds of systems.
+\`configure' configures libburn 1.4.8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1428,7 +1428,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libburn 1.4.6:";;
+     short | recursive ) echo "Configuration of libburn 1.4.8:";;
    esac
   cat <<\_ACEOF
 
@@ -1556,7 +1556,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libburn configure 1.4.6
+libburn configure 1.4.8
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1925,7 +1925,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libburn $as_me 1.4.6, which was
+It was created by libburn $as_me 1.4.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2910,7 +2910,7 @@
 
 # Define the identity of the package.
  PACKAGE='libburn'
- VERSION='1.4.6'
+ VERSION='1.4.8'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3007,7 +3007,7 @@
 
 BURN_MAJOR_VERSION=1
 BURN_MINOR_VERSION=4
-BURN_MICRO_VERSION=6
+BURN_MICRO_VERSION=8
 BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
 
 
@@ -3016,8 +3016,8 @@
 
 
 LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
-LT_CURRENT=103
-LT_AGE=99
+LT_CURRENT=105
+LT_AGE=101
 LT_REVISION=0
 LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
 
@@ -12691,6 +12691,39 @@
     fi
 fi
 
+# There are Linuxes with no public generic SCSI interface
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for missing scsi/scsi.h on 
Linux" >&5
+$as_echo_n "checking for missing scsi/scsi.h on Linux... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __linux
+#include <scsi/scsi.h>
+#endif
+
+int
+main ()
+{
+;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+  $as_echo "#define Libburn_use_sg_dummY yes" >>confdefs.h
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
 # Library versioning normally serves a complex purpose.
 # Since libburn obeys strict ABI backward compatibility, it needs only the
 # simple feature to declare function names "global:" or "local:". Only the
@@ -13456,7 +13489,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libburn $as_me 1.4.6, which was
+This file was extended by libburn $as_me 1.4.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13513,7 +13546,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libburn config.status 1.4.6
+libburn config.status 1.4.8
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/configure.ac 
new/libburn-1.4.8/configure.ac
--- old/libburn-1.4.6/configure.ac      2016-09-16 14:00:48.000000000 +0200
+++ new/libburn-1.4.8/configure.ac      2017-09-12 13:32:02.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([libburn], [1.4.6], [http://libburnia-project.org])
+AC_INIT([libburn], [1.4.8], [http://libburnia-project.org])
 AC_PREREQ([2.50])
 dnl AC_CONFIG_HEADER([config.h])       
 
@@ -109,6 +109,7 @@
 dnl    1.4.2 = libburn.so.4.95.0
 dnl    1.4.4 = libburn.so.4.97.0
 dnl    1.4.6 = libburn.so.4.99.0
+dnl    1.4.8 = libburn.so.4.101.0
 dnl
 dnl So LT_CURRENT, LT_REVISION and LT_AGE get set directly here.
 dnl SONAME of the emerging library is  LT_CURRENT - LT_AGE.
@@ -134,7 +135,7 @@
 dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_*
 BURN_MAJOR_VERSION=1
 BURN_MINOR_VERSION=4
-BURN_MICRO_VERSION=6
+BURN_MICRO_VERSION=8
 BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
 
 AC_SUBST(BURN_MAJOR_VERSION)
@@ -145,14 +146,14 @@
 dnl Libtool versioning
 LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
 dnl
-dnl This is the release version libburn-1.4.6
+dnl This is the release version libburn-1.4.8
 dnl ### This is the development version after above release version
 dnl LT_CURRENT++, LT_AGE++ has not yet happened.
 dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
 dnl
-dnl SONAME = 103 - 99 = 4 . Linux library name = libburn.so.4.99.0
-LT_CURRENT=103
-LT_AGE=99
+dnl SONAME = 105 - 101 = 4 . Linux library name = libburn.so.4.101.0
+LT_CURRENT=105
+LT_AGE=101
 LT_REVISION=0
 LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
 
@@ -298,6 +299,10 @@
     fi
 fi
 
+dnl ts B70127
+# There are Linuxes with no public generic SCSI interface
+LIBBURNIA_CHECK_LINUX_SCSI
+
 dnl ts B00704
 # Library versioning normally serves a complex purpose.
 # Since libburn obeys strict ABI backward compatibility, it needs only the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/async.c 
new/libburn-1.4.8/libburn/async.c
--- old/libburn-1.4.6/libburn/async.c   2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/async.c   2017-01-28 20:59:50.000000000 +0100
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
 
 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
-   Copyright (c) 2006 - 2014 Thomas Schmitt <scdbac...@gmx.net>
+   Copyright (c) 2006 - 2017 Thomas Schmitt <scdbac...@gmx.net>
    Provided under GPL version 2 or later.
 */
 
@@ -123,6 +123,42 @@
 static struct w_list *workers = NULL;
 
 
+int burn_async_manage_lock(int mode)
+{
+       int ret;
+
+       static pthread_mutex_t access_lock;
+       static int mutex_initialized = 0;
+       static int mutex_locked = 0;
+
+       if (mode == BURN_ASYNC_LOCK_INIT) {
+               if (mutex_initialized)
+                       return 2;
+               ret = pthread_mutex_init(&access_lock, NULL);
+               if (ret != 0)
+                       return 0;
+               mutex_initialized = 1;
+               return 1;
+       }
+       if (!mutex_initialized)
+               return 0;
+       if (mode == BURN_ASYNC_LOCK_OBTAIN) {
+               ret = pthread_mutex_lock(&access_lock);
+               if (ret != 0)
+                       return 0;
+               mutex_locked = 1;
+       } else if (mode == BURN_ASYNC_LOCK_RELEASE) {
+               if (!mutex_locked)
+                       return 2;
+               ret = pthread_mutex_unlock(&access_lock);
+               if (ret != 0)
+                       return 0;
+               mutex_locked = 0;
+       }
+       return 1;
+}
+
+
 static struct w_list *find_worker(struct burn_drive *d)
 {
        struct w_list *a;
@@ -149,9 +185,8 @@
        a->drive = d;
 
        a->u = *data;
-/*
-       memcpy(&(a->u), data, sizeof(union w_list_data));
-*/
+
+       burn_async_manage_lock(BURN_ASYNC_LOCK_INIT);
 
        /* insert at front of the list */
        a->next = workers;
@@ -162,6 +197,7 @@
                d->busy = BURN_DRIVE_SPAWNING;
 
 #ifdef Libburn_create_detached_threadS
+
        /* ts A71019 :
           Trying to start the threads detached to get rid of the zombies
           which do neither react on pthread_join() nor on pthread_detach().
@@ -169,12 +205,12 @@
        pthread_attr_init(&attr);
        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
        attr_pt= &attr;
-/*
-       libdax_msgs_submit(libdax_messenger, -1, 0x00020158,
-                       LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_LOW,
-                       "add_worker(): Creating detached thread.", 0, 0);
-*/
-#endif
+
+#endif /* Libburn_create_detached_threadS */
+
+       /* Worker specific locks are to be released early by the worker */
+       if (f == (WorkerFunc) burn_fifo_source_shoveller)
+               burn_async_manage_lock(BURN_ASYNC_LOCK_OBTAIN);
 
        if (pthread_create(&a->thread, attr_pt, f, a)) {
                free(a);
@@ -704,7 +740,6 @@
 
 static void *fifo_worker_func(struct w_list *w)
 {
-       int old;
 
 #define Libburn_protect_fifo_threaD 1
 
@@ -718,10 +753,6 @@
        pthread_sigmask(SIG_SETMASK, &sigset, &oldset);
 #endif /* Libburn_protect_fifo_threaD */
 
-       pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old);
-       pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &old);
-               /* Note: Only burn_fifo_abort() shall cancel the fifo thread */
-
        burn_fifo_source_shoveller(w->u.fifo.source, w->u.fifo.flag);
        remove_worker(pthread_self());
 
@@ -764,18 +795,19 @@
        int ret;
        pthread_t pt;
 
-       if (fs->thread_is_valid <= 0 || fs->thread_handle == NULL)
-               return(2);
+       burn_async_manage_lock(BURN_ASYNC_LOCK_OBTAIN);
 
-#ifdef NIX
-       libdax_msgs_submit(libdax_messenger, -1, 0x00000002,
-                       LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
-                       "Aborting running burn_source_fifo thread", 0, 0);
-#endif /* NIX */
+       if (fs->thread_is_valid <= 0 || fs->thread_handle == NULL) {
+               burn_async_manage_lock(BURN_ASYNC_LOCK_RELEASE);
+               return 2;
+       }
+       pt = *((pthread_t *) fs->thread_handle);
+
+       burn_async_manage_lock(BURN_ASYNC_LOCK_RELEASE);
+
+       fs->do_abort = 1;
+       ret = pthread_join(pt, NULL);
 
-       pt= *((pthread_t *) fs->thread_handle);
-       remove_worker(pt);
-       ret = pthread_cancel(pt);
        return (ret == 0);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/async.h 
new/libburn-1.4.8/libburn/async.h
--- old/libburn-1.4.6/libburn/async.h   2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/async.h   2017-01-28 20:48:34.000000000 +0100
@@ -1,5 +1,10 @@
 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
 
+/* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
+   Copyright (c) 2006 - 2017 Thomas Schmitt <scdbac...@gmx.net>
+   Provided under GPL version 2 or later.
+*/
+
 #ifndef BURN__ASYNC_H
 #define BURN__ASYNC_H
 
@@ -14,5 +19,10 @@
 /* To abort a running fifo thread before the fifo object gets deleted */
 int burn_fifo_abort(struct burn_source_fifo *fs, int flag);
 
+/* ts B70126 */
+#define BURN_ASYNC_LOCK_RELEASE 0
+#define BURN_ASYNC_LOCK_OBTAIN  1
+#define BURN_ASYNC_LOCK_INIT    2
+int burn_async_manage_lock(int mode);
 
 #endif /* BURN__ASYNC_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/drive.c 
new/libburn-1.4.8/libburn/drive.c
--- old/libburn-1.4.6/libburn/drive.c   2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/drive.c   2017-02-06 14:57:32.000000000 +0100
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
 
 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
-   Copyright (c) 2006 - 2016 Thomas Schmitt <scdbac...@gmx.net>
+   Copyright (c) 2006 - 2017 Thomas Schmitt <scdbac...@gmx.net>
    Provided under GPL version 2 or later.
 */
 
@@ -1587,6 +1587,20 @@
 }
 
 
+int burn_drive_reset_simulate(struct burn_drive *d, int simulate)
+{
+       if (d->busy != BURN_DRIVE_IDLE) {
+               libdax_msgs_submit(libdax_messenger,
+                       d->global_index, 0x00020140,
+                       LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH,
+                       "Drive is busy on attempt to write random access",0,0);
+               return 0;
+       }
+       d->do_simulate = !!simulate;
+       return 1;
+}
+
+
 int burn_msf_to_sectors(int m, int s, int f)
 {
        return (m * 60 + s) * 75 + f;
@@ -3600,6 +3614,18 @@
 }
 
 
+int burn_drive_get_bd_r_pow(struct burn_drive *d)
+{
+       struct burn_feature_descr *feature;
+
+       if (d->current_profile == 0x41)
+               if (burn_drive_has_feature(d, 0x38, &feature, 0) == 1)
+                       if (feature->flags & 1)
+                               return 1;
+       return 0;
+}
+
+
 int burn_drive_set_immed(struct burn_drive *drive, int enable)
 {
        drive->do_no_immed = !enable;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/file.c 
new/libburn-1.4.8/libburn/file.c
--- old/libburn-1.4.6/libburn/file.c    2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/file.c    2017-01-28 20:46:11.000000000 +0100
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
 
 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
-   Copyright (c) 2006 - 2014 Thomas Schmitt <scdbac...@gmx.net>
+   Copyright (c) 2006 - 2017 Thomas Schmitt <scdbac...@gmx.net>
    Provided under GPL version 2 or later.
 */
 
@@ -356,13 +356,20 @@
        fs->thread_pid = getpid();
        fs->thread_is_valid = 1;
 
+       /* Lock was obtained by async.c:add_worker() */
+       burn_async_manage_lock(BURN_ASYNC_LOCK_RELEASE);
+
        bufsize = fs->chunksize * fs->chunks;
        while (!fs->end_of_consumption) {
+               if (fs->do_abort)
+                       goto emergency_exit;
 
                /* wait for enough buffer space available */
                wpos = fs->buf_writepos;
                counted = 0;
                while (1) {
+                       if (fs->do_abort)
+                               goto emergency_exit;
                        rpos = fs->buf_readpos;
                        diff = rpos - wpos;
                        trans_end = 0;
@@ -405,6 +412,8 @@
                }
 
                /* Obtain next chunk */
+               if (fs->do_abort)
+                       goto emergency_exit;
                if (fs->inp->read != NULL)
                        ret = fs->inp->read(fs->inp,
                                 (unsigned char *) bufpt, fs->inp_read_size);
@@ -430,6 +439,8 @@
                fs->put_counter++;
 
                /* activate read chunk */
+               if (fs->do_abort)
+                       goto emergency_exit;
                if (ret > fs->inp_read_size)
                                        /* beware of ill custom burn_source */
                        ret = fs->inp_read_size;
@@ -463,8 +474,11 @@
                fs->end_of_input = 1;
 
        /* wait for end of reading by consumer */;
-       while (fs->buf_readpos != fs->buf_writepos && !fs->end_of_consumption)
-                       fifo_sleep(0);
+       while (fs->buf_readpos != fs->buf_writepos && !fs->end_of_consumption) {
+               if (fs->do_abort)
+                       goto emergency_exit;
+               fifo_sleep(0);
+       }
 
        /* destroy ring buffer */;
        if (!fs->end_of_consumption)
@@ -481,8 +495,11 @@
                        ((size_t) fs->chunksize) * (size_t) fs->chunks, 0);
        fs->buf = NULL;
 
+emergency_exit:;
+       burn_async_manage_lock(BURN_ASYNC_LOCK_OBTAIN);
        fs->thread_handle= NULL;
        fs->thread_is_valid = 0;
+       burn_async_manage_lock(BURN_ASYNC_LOCK_RELEASE);
        return (fs->input_error == 0);
 }
 
@@ -524,6 +541,7 @@
        fs->thread_handle = NULL;
        fs->thread_pid = 0;
        fs->thread_is_valid = 0;
+       fs->do_abort = 0;
        fs->inp = NULL; /* set later */
        if (flag & 1)
                fs->inp_read_size = 32 * 1024;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/file.h 
new/libburn-1.4.8/libburn/file.h
--- old/libburn-1.4.6/libburn/file.h    2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/file.h    2017-01-28 20:44:02.000000000 +0100
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
 
 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
-   Copyright (c) 2006 - 2010 Thomas Schmitt <scdbac...@gmx.net>
+   Copyright (c) 2006 - 2017 Thomas Schmitt <scdbac...@gmx.net>
    Provided under GPL version 2 or later.
 */
 
@@ -27,8 +27,8 @@
        /* The fifo stays inactive and unequipped with eventual resources
           until its read() method is called for the first time.
           Only then burn_fifo_start() gets called, allocates the complete
-           resources, starts a thread with burn_fifo_source_shuffler()
-          which shuffles data and finally destroys the resources.
+          resources, starts a thread with burn_fifo_source_shoveller()
+          which shovels data and finally destroys the resources.
           This late start is to stay modest in case of multiple tracks
           in one disc.
        */
@@ -38,6 +38,9 @@
        int thread_pid;
        int thread_is_valid;
 
+       /* The shoveller aborts if this is 1. Resource leaks are possible. */
+       volatile int do_abort;
+
        /* the burn_source for which this fifo is acting as proxy */
        struct burn_source *inp;
        int inp_read_size;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/libburn.h 
new/libburn-1.4.8/libburn/libburn.h
--- old/libburn-1.4.6/libburn/libburn.h 2016-09-16 14:02:49.000000000 +0200
+++ new/libburn-1.4.8/libburn/libburn.h 2017-09-12 13:33:12.000000000 +0200
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
 
 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
-   Copyright (c) 2006 - 2016 Thomas Schmitt <scdbac...@gmx.net>
+   Copyright (c) 2006 - 2017 Thomas Schmitt <scdbac...@gmx.net>
    Provided under GPL version 2 or later.
 
    This is the official API definition of libburn.
@@ -1313,6 +1313,18 @@
 int burn_disc_read_atip(struct burn_drive *drive);
 
 
+/* ts B70206 */
+/** Tells whether a BD-R medium with Pseudo Overwrite (POW) formatting is in
+    the drive. Such a formatting may have been applied by dvd+rw-tools. It
+    prevents sequential multi-session.
+    libburn will refuse to write to such a medium.
+    @param drive The drive to query.
+    @return 1 if BD-R Pseudo Overwrite , 0 if not BD-R or not POW
+    @since 1.4.8
+*/
+int burn_drive_get_bd_r_pow(struct burn_drive *drive);
+
+
 /* ts A61020 */
 /** Returns start and end lba of the media which is currently inserted
     in the given drive. The drive has to be grabbed to have hope for reply.
@@ -3033,6 +3045,24 @@
                                 int min_usec, int max_usec, int timeout_sec,
                                 int min_percent, int max_percent);
 
+/* ts B61116 */
+/** Control the write simulation mode before or after burn_write_opts get
+    into effect.
+    Beginning with version 1.4.8 a burn run by burn_disc_write() brings the
+    burn_drive object in the simulation state as set to the burn_write_opts
+    by burn_write_opts_set_simulate(). This state is respected by call
+    burn_random_access_write() until a new call of burn_disc_write() happens
+    or until burn_drive_reset_simulate() is called.
+    This call may only be made when burn_drive_get_status() returns
+    BURN_DRIVE_IDLE.
+
+    @param d         The drive to control
+    @param simulate  1 enables simulation, 0 enables real writing
+    @return 1=success , 0=failure
+    @since 1.4.8
+*/
+int burn_drive_reset_simulate(struct burn_drive *d, int simulate);
+
 
 /* these are for my [Derek Foreman's ?] debugging, they will disappear */
 /* ts B11012 :
@@ -3100,8 +3130,13 @@
     media content and burn_disc_get_status() stay unchanged.
     Note: With stdio-drives, the target file gets eventually created, opened,
           lseeked, and closed, but not written. So there are effects on it.
-    Warning: Call burn_random_access_write() will never do simulation because
-             it does not get any burn_write_opts.
+    Note: Up to version 1.4.6 the call burn_random_access_write() after
+          burn_disc_write() did not simulate because it does not get any
+          burn_write_opts and the drive did not memorize the simulation state.
+          This has changed now. burn_random_access_write() will not write after
+          a simulated burn run.
+          Use burn_drive_reset_simulate(drive, 0) if you really want to end
+          simulation before you call burn_disc_write() with new write options.
     @param opts The write opts to change
     @param sim  Non-zero enables simulation, 0 enables real writing
     @return Returns 1 on success and 0 on failure.
@@ -3671,7 +3706,7 @@
 */
 #define burn_header_version_major  1
 #define burn_header_version_minor  4
-#define burn_header_version_micro  6
+#define burn_header_version_micro  8
 /** Note:
     Above version numbers are also recorded in configure.ac because libtool
     wants them as parameters at build time.
@@ -3944,6 +3979,11 @@
     only after the write transaction has ended (successfully or not). So it is
     wise not to transfer giant amounts of data in a single call.
     Important: Data have to fit into the already formatted area of the media.
+
+    If the burn_drive object is in simulation mode, then no actual write
+    operation or synchronization of the drive buffer will happen.
+    See burn_drive_reset_simulate().
+
     @param d            The drive to which to write 
     @param byte_address The start address of the write in byte
                         (1 LBA unit = 2048 bytes) (do respect media alignment)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/libburn.ver 
new/libburn-1.4.8/libburn/libburn.ver
--- old/libburn-1.4.6/libburn/libburn.ver       2016-09-16 12:48:51.000000000 
+0200
+++ new/libburn-1.4.8/libburn/libburn.ver       2017-02-06 14:57:48.000000000 
+0100
@@ -50,6 +50,7 @@
 burn_drive_free_speedlist;
 burn_drive_get_adr;
 burn_drive_get_all_profiles;
+burn_drive_get_bd_r_pow;
 burn_drive_get_best_speed;
 burn_drive_get_disc;
 burn_drive_get_drive_role;
@@ -71,6 +72,7 @@
 burn_drive_probe_cd_write_modes;
 burn_drive_re_assess;
 burn_drive_release;
+burn_drive_reset_simulate;
 burn_drive_scan;
 burn_drive_scan_and_grab;
 burn_drive_set_buffer_waiting;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/mmc.c 
new/libburn-1.4.8/libburn/mmc.c
--- old/libburn-1.4.6/libburn/mmc.c     2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/mmc.c     2016-11-18 14:16:58.000000000 +0100
@@ -5383,6 +5383,8 @@
        d->start_lba = -2000000000;
        d->end_lba = -2000000000;
 
+       d->do_simulate= 0;
+
        /* ts A61201 - A90815*/
        d->erasable = 0;
        d->current_profile = -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/options.c 
new/libburn-1.4.8/libburn/options.c
--- old/libburn-1.4.6/libburn/options.c 2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/options.c 2017-02-06 15:09:13.000000000 +0100
@@ -1,6 +1,6 @@
 
 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
-   Copyright (c) 2006 - 2012 Thomas Schmitt <scdbac...@gmx.net>
+   Copyright (c) 2006 - 2017 Thomas Schmitt <scdbac...@gmx.net>
    Provided under GPL version 2 or later.
 */
 
@@ -323,6 +323,11 @@
 
        reasons[0] = 0;
 
+       if (burn_drive_get_bd_r_pow(d)) {
+               strcat(reasons,
+                      "MEDIA: unsuitable BD-R Pseudo Overwrite formatting, ");
+               return BURN_WRITE_NONE;
+       }
        if (d->status != BURN_DISC_BLANK &&
            d->status != BURN_DISC_APPENDABLE){
                if (d->status == BURN_DISC_FULL)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/read.c 
new/libburn-1.4.8/libburn/read.c
--- old/libburn-1.4.6/libburn/read.c    2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/read.c    2017-07-15 21:41:22.000000000 +0200
@@ -498,7 +498,7 @@
                        sprintf(msg,
                          "Read start address %ds larger than number of 
readable blocks %d",
                          (int) (byte_address / 2048 + !!(byte_address % 2048)),
-                         d->media_read_capacity);
+                         d->media_read_capacity + 1);
                        libdax_msgs_submit(libdax_messenger, d->global_index,
                                0x00020172, (flag & 32) ?
                                LIBDAX_MSGS_SEV_DEBUG : LIBDAX_MSGS_SEV_SORRY,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/transport.h 
new/libburn-1.4.8/libburn/transport.h
--- old/libburn-1.4.6/libburn/transport.h       2016-09-16 12:48:51.000000000 
+0200
+++ new/libburn-1.4.8/libburn/transport.h       2016-11-18 14:15:42.000000000 
+0100
@@ -336,6 +336,8 @@
        int start_lba;
        int end_lba;
 
+       /* ts B61116 */
+       int do_simulate;
 
        /* ts A70131 : from 51h READ DISC INFORMATION Number of Sessions (-1)*/
        int complete_sessions;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.6/libburn/write.c 
new/libburn-1.4.8/libburn/write.c
--- old/libburn-1.4.6/libburn/write.c   2016-09-16 12:48:51.000000000 +0200
+++ new/libburn-1.4.8/libburn/write.c   2017-02-06 15:12:07.000000000 +0100
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
 
 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
-   Copyright (c) 2006 - 2016 Thomas Schmitt <scdbac...@gmx.net>
+   Copyright (c) 2006 - 2017 Thomas Schmitt <scdbac...@gmx.net>
    Provided under GPL version 2 or later.
 */
 
@@ -1419,7 +1419,7 @@
        enum burn_write_types wt;
        struct burn_drive *d = o->drive;
        char *msg = NULL, *reason_pt;
-       int no_media = 0, ret, has_cdtext;
+       int no_media = 0, ret, has_cdtext, is_bd_pow = 0;
 
        reason_pt= reasons;
        reasons[0] = 0;
@@ -1497,6 +1497,20 @@
                   sequential stdio "drive" */
                if (o->start_byte >= 0)
                        strcat(reasons, "write start address not supported, ");
+
+               is_bd_pow = burn_drive_get_bd_r_pow(d);
+               if (is_bd_pow && !silent) 
+                       libdax_msgs_submit(libdax_messenger, d->global_index,
+                               0x0002011e,
+                               LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
+                          "Unsuitable media detected: BD-R formatted to POW.",
+                               0, 0);
+               if (is_bd_pow) {
+                       strcat(reasons,
+                               "unsuitable media formatting POW detected, ");
+                       return 0;
+               }
+
        } else {
 unsuitable_profile:;
                msg = calloc(1, 160);
@@ -2589,6 +2603,8 @@
 
        if (d->cancel || count <= 0)
                return 0;
+       if(d->do_simulate)
+               return 1;
 
        todo = count;
        done = 0;
@@ -2619,6 +2635,7 @@
                d->cancel = 1;
                ret = 0; goto ex;
        }
+       ret = 1;
 ex:;
        BURN_FREE_MEM(msg);
        return ret;
@@ -2794,6 +2811,7 @@
                d->write = burn_stdio_mmc_dummy_write;
        else
                d->write = burn_stdio_mmc_write;
+       d->do_simulate = o->simulate;
        d->sync_cache = burn_stdio_mmc_sync_cache;
 
        burn_stdio_slowdown(d, &prev_time, 0, 1); /* initialize */
@@ -3289,7 +3307,9 @@
                rpt += d->buffer->bytes;
                d->buffer->sectors = chunksize;
                d->nwa = start;
-               if(d->drive_role == 1) {
+               if(d->do_simulate) {
+                       err = 0;
+               } else if(d->drive_role == 1) {
                        err = d->write(d, d->nwa, d->buffer);
                } else {
                        ret = burn_stdio_write(fd, (char *) d->buffer->data,
@@ -3309,7 +3329,9 @@
        if(d->drive_role == 1)
                d->needs_sync_cache = 1;
        if(flag & 1) {
-               if(d->drive_role == 1)
+               if(d->do_simulate) {
+                       ;
+               } else if(d->drive_role == 1)
                        d->sync_cache(d);
                else
                        burn_stdio_sync_cache(fd, d, 2);


Reply via email to