Made improvements around volume id

This commit is contained in:
2008-01-14 22:47:44 +00:00
parent f172682369
commit ebadf5dca1
6 changed files with 59 additions and 4 deletions

View File

@@ -42,7 +42,8 @@
#include "xorriso_private.h"
/* The inner isofs- and burn-library interface */
#include "xorrisoburn.h"
/* >>> NG */
#include "ng_xorrisoburn.h"
int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
@@ -164,6 +165,19 @@ int Xorriso_set_image_severities(struct XorrisO *xorriso, IsoImage *volset,
}
int Xorriso_update_volid(struct XorrisO *xorriso, int flag)
{
int gret, sret= 1;
gret= Xorriso_get_volid(xorriso, xorriso->loaded_volid, 0);
if(gret>0 && strcmp(xorriso->volid, "ISOIMAGE")==0)
strcpy(xorriso->volid, xorriso->loaded_volid);
else
sret= Xorriso_set_volid(xorriso, xorriso->volid, 1);
return(gret>0 && sret>0);
}
int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag)
{
int ret;
@@ -181,6 +195,7 @@ int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag)
if(xorriso->in_volset_handle!=NULL) {
iso_image_unref((IsoImage *) xorriso->in_volset_handle);
xorriso->in_volset_handle= NULL;
xorriso->loaded_volid[0]= 0;
xorriso->volset_change_pending= 0;
}
memset(&ropts, sizeof(ropts), 0);
@@ -195,6 +210,7 @@ int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag)
}
xorriso->in_volset_handle= (void *) volset;
Xorriso_set_image_severities(xorriso, volset, 0);
Xorriso_update_volid(xorriso, 0);
xorriso->volset_change_pending= 0;
return(1);
}
@@ -330,6 +346,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
}
xorriso->in_volset_handle= (void *) volset;
Xorriso_set_image_severities(xorriso, volset, 0);
Xorriso_update_volid(xorriso, 0);
if(xorriso->out_drive_handle != NULL &&
xorriso->out_drive_handle != xorriso->in_drive_handle) {
@@ -342,6 +359,14 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
}
Xorriso_process_msg_queues(xorriso,0);
Xorriso_toc(xorriso, 1);
if(xorriso->loaded_volid[0]!=0) {
sprintf(xorriso->result_line,"Volume id : '%s'\n",xorriso->loaded_volid);
Xorriso_result(xorriso,0);
if(strcmp(xorriso->loaded_volid, xorriso->volid)!=0) {
sprintf(xorriso->result_line, "New volume id: '%s'\n", xorriso->volid);
Xorriso_result(xorriso,0);
}
}
ret= 1+not_writeable;
ex:
if(ret<=0) {
@@ -383,6 +408,7 @@ int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag)
if(xorriso->in_volset_handle!=NULL)
iso_image_unref((IsoImage *) xorriso->in_volset_handle);
xorriso->in_volset_handle= NULL;
xorriso->loaded_volid[0]= 0;
xorriso->volset_change_pending= 0;
in_is_out_too= 0;
@@ -3126,6 +3152,7 @@ ex:;
}
/* @param flag bit0= do not mark image as changed */
int Xorriso_set_volid(struct XorrisO *xorriso, char *volid, int flag)
{
int ret;
@@ -3135,8 +3162,25 @@ int Xorriso_set_volid(struct XorrisO *xorriso, char *volid, int flag)
if(ret<=0)
return(ret);
iso_image_set_volume_id(volume, volid);
if(!(flag&1))
xorriso->volset_change_pending= 1;
Xorriso_process_msg_queues(xorriso,0);
sprintf(xorriso->info_text,"Volume ID: '%s'",iso_image_get_volume_id(volume));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
return(1);
}
int Xorriso_get_volid(struct XorrisO *xorriso, char volid[33], int flag)
{
int ret;
IsoImage *volume;
ret= Xorriso_get_volume(xorriso, &volume, 0);
if(ret<=0)
return(ret);
strncpy(volid, iso_image_get_volume_id(volume), 32);
volid[32]= 0;
return(1);
}