New info mode 2 with isoburn_read_iso_head()
This commit is contained in:
parent
7765835374
commit
c02edc329d
@ -942,7 +942,8 @@ int isoburn_report_iso_error(int iso_error_code, char msg_text[], int os_errno,
|
|||||||
|
|
||||||
/* @param flag bit0-7: info return mode
|
/* @param flag bit0-7: info return mode
|
||||||
0= do not return anything in info (do not even touch it)
|
0= do not return anything in info (do not even touch it)
|
||||||
1= return volume id
|
1= copy volume id to info (info needs 33 bytes)
|
||||||
|
2= do not touch info (caller will copy 64 kB header to it)
|
||||||
bit14= -reserved -
|
bit14= -reserved -
|
||||||
bit15= -reserved-
|
bit15= -reserved-
|
||||||
@return 1 seems to be a valid ISO image , 0 format not recognized, <0 error
|
@return 1 seems to be a valid ISO image , 0 format not recognized, <0 error
|
||||||
@ -971,6 +972,8 @@ int isoburn_read_iso_head_parse(struct burn_drive *d, unsigned char *data,
|
|||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
info[i]= 0;
|
info[i]= 0;
|
||||||
|
} else if(info_mode==2) {
|
||||||
|
;
|
||||||
} else {
|
} else {
|
||||||
isoburn_msgs_submit(NULL, 0x00060000,
|
isoburn_msgs_submit(NULL, 0x00060000,
|
||||||
"Program error: Unknown info mode with isoburn_read_iso_head()",
|
"Program error: Unknown info mode with isoburn_read_iso_head()",
|
||||||
@ -984,7 +987,8 @@ int isoburn_read_iso_head_parse(struct burn_drive *d, unsigned char *data,
|
|||||||
/* API
|
/* API
|
||||||
@param flag bit0-7: info return mode
|
@param flag bit0-7: info return mode
|
||||||
0= do not return anything in info (do not even touch it)
|
0= do not return anything in info (do not even touch it)
|
||||||
1= return volume id
|
1= copy volume id to info (info needs 33 bytes)
|
||||||
|
2= copy 64 kB header to info (needs 65536 bytes)
|
||||||
bit14= check both half buffers (not only second)
|
bit14= check both half buffers (not only second)
|
||||||
return 2 if found in first block
|
return 2 if found in first block
|
||||||
bit15= return-1 on read error
|
bit15= return-1 on read error
|
||||||
@ -995,25 +999,27 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba,
|
|||||||
int *image_blocks, char *info, int flag)
|
int *image_blocks, char *info, int flag)
|
||||||
{
|
{
|
||||||
unsigned char buffer[64*1024];
|
unsigned char buffer[64*1024];
|
||||||
int ret;
|
int ret, info_mode;
|
||||||
off_t data_count;
|
off_t data_count;
|
||||||
|
|
||||||
|
info_mode= flag&255;
|
||||||
*image_blocks= 0;
|
*image_blocks= 0;
|
||||||
ret = burn_read_data(d, ((off_t) lba) * (off_t) 2048, (char *) buffer,
|
ret = burn_read_data(d, ((off_t) lba) * (off_t) 2048, (char *) buffer,
|
||||||
(off_t) 64*1024, &data_count, 2); /* no error messages */
|
(off_t) 64*1024, &data_count, 2); /* no error messages */
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(-1*!!(flag&(1<<15)));
|
return(-1*!!(flag&(1<<15)));
|
||||||
|
|
||||||
|
if(info_mode==2)
|
||||||
|
memcpy(info, buffer, 64*1024);
|
||||||
if(flag&(1<<14)) {
|
if(flag&(1<<14)) {
|
||||||
ret= isoburn_read_iso_head_parse(d, buffer, image_blocks, info,
|
ret= isoburn_read_iso_head_parse(d, buffer, image_blocks, info, info_mode);
|
||||||
flag&255);
|
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
return(ret);
|
return(ret);
|
||||||
if(ret>0)
|
if(ret>0)
|
||||||
return(2);
|
return(2);
|
||||||
}
|
}
|
||||||
ret= isoburn_read_iso_head_parse(d, buffer+32*1024, image_blocks, info,
|
ret= isoburn_read_iso_head_parse(d, buffer+32*1024, image_blocks, info,
|
||||||
flag&255);
|
info_mode);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,8 +579,13 @@ void isoburn_toc_disc_free(struct isoburn_toc_disc *disc);
|
|||||||
@param image_blocks The number of 2048 bytes blocks
|
@param image_blocks The number of 2048 bytes blocks
|
||||||
@param info Caller provided memory, enough to take eventual info reply
|
@param info Caller provided memory, enough to take eventual info reply
|
||||||
@param flag bit0-7: info return mode
|
@param flag bit0-7: info return mode
|
||||||
0= do not return anything in info (do not even touch it)
|
0= do not return anything in info (do not even touch it)
|
||||||
1= return volume id (info needs 33 bytes)
|
1= copy volume id to info (info needs 33 bytes)
|
||||||
|
2= @since 0.2.2 :
|
||||||
|
copy 64 kB header to info (needs 65536 bytes)
|
||||||
|
bit14= check both half buffers (not only second)
|
||||||
|
return 2 if found in first block
|
||||||
|
bit15= return-1 on read error
|
||||||
@return 1 seems to be a valid ISO image , 0 format not recognized, <0 error
|
@return 1 seems to be a valid ISO image , 0 format not recognized, <0 error
|
||||||
*/
|
*/
|
||||||
int isoburn_read_iso_head(struct burn_drive *d, int lba,
|
int isoburn_read_iso_head(struct burn_drive *d, int lba,
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2008.07.10.164412"
|
#define Xorriso_timestamP "2008.07.12.181846"
|
||||||
|
Loading…
Reference in New Issue
Block a user