From bf0f065be099947ec7a4b9820275c3e1e28a33a4 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Tue, 10 Apr 2007 08:20:45 +0000 Subject: [PATCH] Used O_EXCL|O_RDWR and fcntl() even within sg_obtain_scsi_adr() --- libburn/trunk/cdrskin/cdrskin_timestamp.h | 2 +- libburn/trunk/libburn/sg-linux.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libburn/trunk/cdrskin/cdrskin_timestamp.h b/libburn/trunk/cdrskin/cdrskin_timestamp.h index f48b9799..47a4ec34 100644 --- a/libburn/trunk/cdrskin/cdrskin_timestamp.h +++ b/libburn/trunk/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2007.04.10.081855" +#define Cdrskin_timestamP "2007.04.10.082229" diff --git a/libburn/trunk/libburn/sg-linux.c b/libburn/trunk/libburn/sg-linux.c index 5fd06184..adc8d9df 100644 --- a/libburn/trunk/libburn/sg-linux.c +++ b/libburn/trunk/libburn/sg-linux.c @@ -1149,7 +1149,7 @@ ex:; int sg_obtain_scsi_adr(char *path, int *bus_no, int *host_no, int *channel_no, int *target_no, int *lun_no) { - int fd, ret, l; + int fd, ret, l, open_mode = O_RDWR | O_NONBLOCK; struct my_scsi_idlun { int x; int host_unique_id; @@ -1164,7 +1164,12 @@ int sg_obtain_scsi_adr(char *path, int *bus_no, int *host_no, int *channel_no, /* ts A70409 : DDLP */ /* >>> obtain single lock on path */ - fd = open(path, O_RDONLY | O_NONBLOCK); + if(burn_sg_open_o_excl) + open_mode |= O_EXCL; + fd = open(path, open_mode); + if(fd < 0) + return 0; + sg_fcntl_lock(&fd, path); if(fd < 0) return 0;