From 7cc669396e78d321b47a7a1ea1e9706e1f9e856e Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Wed, 27 Jul 2011 21:14:49 +0000 Subject: [PATCH] New option -device_links --- xorriso/aux_objects.c | 2 +- xorriso/drive_mgt.c | 111 +++++++++++++++++++++++++-- xorriso/opts_d_h.c | 9 ++- xorriso/opts_i_o.c | 6 ++ xorriso/parse_exec.c | 6 +- xorriso/xorriso.1 | 23 ++++-- xorriso/xorriso.h | 3 +- xorriso/xorriso.info | 146 +++++++++++++++++++----------------- xorriso/xorriso.texi | 25 ++++-- xorriso/xorriso_timestamp.h | 2 +- 10 files changed, 241 insertions(+), 92 deletions(-) diff --git a/xorriso/aux_objects.c b/xorriso/aux_objects.c index cb5abf59..cd43c62d 100644 --- a/xorriso/aux_objects.c +++ b/xorriso/aux_objects.c @@ -308,7 +308,7 @@ int Dirseq_new(struct DirseQ **o, char *adr, int flag) m->buffer_rpt= 0; m->next= NULL; if(Sfile_str(m->adr, adr, 0)<=0) - {ret= 0; goto failed;} + {ret= -1; goto failed;} m->buffer= TSOB_FELD(char *,Dirseq_buffer_sizE); if(m->buffer==NULL) {ret= -1; goto failed;} diff --git a/xorriso/drive_mgt.c b/xorriso/drive_mgt.c index 83fd7d80..53eb6634 100644 --- a/xorriso/drive_mgt.c +++ b/xorriso/drive_mgt.c @@ -1119,9 +1119,92 @@ ex:; } +/* @param link_adr must point to NULL or to allocated memory that may be freed +*/ +int Xorriso_lookup_device_link(struct XorrisO *xorriso, char *dev_adr, + char **link_adr, int flag) +{ + struct DirseQ *dirseq= NULL; + struct stat link_stbuf; + char *adr= NULL, *namept, *sys_adr= NULL; + int ret, name_rank, found_rank= 0x7fffffff; + static char ranks[][8] = {"cdrw", "dvdrw", "cdrom", "dvd", "cd", ""}; + + adr= calloc(SfileadrL + 5, 1); + sys_adr= calloc(BURN_DRIVE_ADR_LEN, 1); + if(adr == NULL || sys_adr == NULL) { + Xorriso_no_malloc_memory(xorriso, NULL, 0); + {ret= -1; goto ex;} + } + namept= adr + 5; + + /* Search for candidates in /dev */ + ret= Dirseq_new(&dirseq, "/dev", 1); + if(ret<0) { + sprintf(xorriso->info_text, "Cannot obtain disk directory iterator"); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0); + {ret= -1; goto ex;} + } + strcpy(adr, "/dev/"); + while(1) { + ret= Dirseq_next_adr(dirseq, namept, 0); + if(ret < 0) + goto ex; + if(ret == 0) + break; + + if(lstat(adr, &link_stbuf) == -1) + {ret= 0; goto ex;} + if((link_stbuf.st_mode & S_IFMT) != S_IFLNK) + continue; + + /* Determine rank and omit uninteresting ones */ + for(name_rank= 0; ranks[name_rank][0]; name_rank++) + if(strncmp(namept, ranks[name_rank], strlen(ranks[name_rank])) == 0) + break; + if(ranks[name_rank][0] == 0 || + name_rank >= found_rank) /* we look for lowest rank */ + continue; + + /* Does name point to the same device as dev_adr ? */ + ret= burn_drive_convert_fs_adr(adr, sys_adr); + if(ret < 0) + goto ex; + if(ret == 0) + continue; + if(strcmp(dev_adr, sys_adr) == 0) { + if(*link_adr != NULL) + free(*link_adr); + *link_adr= strdup(adr); + if(*link_adr == NULL) { + Xorriso_no_malloc_memory(xorriso, NULL, 0); + {ret= -1; goto ex;} + } + found_rank= name_rank; + if(found_rank == 0) + break; + } + } + ret= 2; + if(found_rank < 0x7fffffff) + ret= 1; +ex:; + Xorriso_process_msg_queues(xorriso,0); + if(dirseq != NULL) + Dirseq_destroy(&dirseq, 0); + if(adr != NULL) + free(adr); + if(sys_adr != NULL) + free(sys_adr); + return(ret); +} + + +/* @param flag bit0= try to find 'meaningful' links for enumerated devices +*/ int Xorriso_show_devices(struct XorrisO *xorriso, int flag) { - char *adr= NULL; + char *adr= NULL, *link_adr= NULL, *adrpt; int i, j, max_dev_len= 1, pad, ret; struct burn_drive_info *drive_list= NULL; unsigned int drive_count; @@ -1158,8 +1241,16 @@ int Xorriso_show_devices(struct XorrisO *xorriso, int flag) if(burn_drive_get_adr(&(drive_list[i]), adr)<=0) strcpy(adr, "-get_adr_failed-"); Xorriso_process_msg_queues(xorriso,0); - if((int) strlen(adr) > max_dev_len) - max_dev_len= strlen(adr); + adrpt= adr; + if(flag & 1) { + ret= Xorriso_lookup_device_link(xorriso, adr, &link_adr, 0); + if(ret < 0) + goto ex; + if(ret == 1) + adrpt= link_adr; + } + if((int) strlen(adrpt) > max_dev_len) + max_dev_len= strlen(adrpt); } for(i= 0; i < (int) drive_count && !(xorriso->request_to_abort); i++) { if(burn_drive_get_adr(&(drive_list[i]), adr)<=0) @@ -1176,8 +1267,16 @@ int Xorriso_show_devices(struct XorrisO *xorriso, int flag) if(stbuf.st_mode&S_IROTH) perms[4]= 'r'; if(stbuf.st_mode&S_IWOTH) perms[5]= 'w'; } - sprintf(respt, "%d -dev '%s' ", i, adr); - pad= max_dev_len-strlen(adr); + adrpt= adr; + if(flag & 1) { + ret= Xorriso_lookup_device_link(xorriso, adr, &link_adr, 0); + if(ret < 0) + goto ex; + if(ret == 1) + adrpt= link_adr; + } + sprintf(respt, "%d -dev '%s' ", i, adrpt); + pad= max_dev_len-strlen(adrpt); if(pad>0) for(j= 0; jinfo_text, "Command file: "); + Text_shellsafe(adr, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0); while(1) { ret= Xorriso_read_lines(xorriso, fp, &linecount, &linec, &linev, 1 | 8); if(ret <= 0) @@ -1211,6 +1214,9 @@ ex:; strcat(xorriso->info_text, "\n"); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 1); } + sprintf(xorriso->info_text, "Command file end: "); + Text_shellsafe(adr, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0); if(ret!=1) return(ret); return(!was_failure); diff --git a/xorriso/parse_exec.c b/xorriso/parse_exec.c index 35feb631..000d162c 100644 --- a/xorriso/parse_exec.c +++ b/xorriso/parse_exec.c @@ -447,7 +447,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv, int ret, was_dashed= 0, i, cmd_data_size= 2 * SfileadrL; char *cmd, *cmd_data= NULL; static char arg0_commands[][40]= { - "ban_stdio_write","close_filter_list","commit","devices","end", + "ban_stdio_write","close_filter_list","commit", + "device_links","devices","end", "for_backup", "help", "list_formats","list_speeds", "no_rc","print_size","pvd_info","pwd","pwdi","pwdx", @@ -844,6 +845,9 @@ next_command:; (*idx)++; ret= Xorriso_option_dev(xorriso, arg1, 3); + } else if(strcmp(cmd,"device_links")==0) { + ret= Xorriso_option_devices(xorriso, 1); + } else if(strcmp(cmd,"devices")==0) { ret= Xorriso_option_devices(xorriso, 0); diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index 57e77f95..38483bbc 100644 --- a/xorriso/xorriso.1 +++ b/xorriso/xorriso.1 @@ -9,7 +9,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 XORRISO 1 "Version 1.1.3, Jul 24, 2011" +.TH XORRISO 1 "Version 1.1.3, Jul 27, 2011" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -305,7 +305,7 @@ On OpenSolaris: .br Get a list of accessible drives by command .br - \-devices + \-device_links .br It might be necessary to do this as \fBsuperuser\fR @@ -3067,6 +3067,17 @@ who is able to see all drives. .br Drives which are occupied by other processes get not shown. .TP +\fB\-device_links\fR +Like \-devices, but presenting the drives with addresses of symbolic links +which point to the actual device files. +.br +Modern GNU/Linux systems may shuffle drive addresses from boot to boot. +The udev daemon is supposed to create links which always point to the +same drive, regardless of its system address. +The command \-device_links shows the addresses of such links if they begin +by "/dev/dvd" or "/dev/cd". +Precedence is: "cdrw", "dvdrw", "cdrom", "dvd", "cd". +.TP \fB\-toc\fR .br Show media specific table of content. This is the media session history, @@ -4130,13 +4141,13 @@ which shall be able to use the drives with \fBxorriso\fR. On Solaris use pfexec. Consider to restrict privileges of \fBxorriso\fR to "base,sys_devices" and to give r\-permission to user or group. .br -$ xorriso \-devices +$ xorriso \-device_links .br -0 \-dev '/dev/sr0' rwrw\-\- : '_NEC ' 'DVD_RW ND\-4570A' +1 \-dev '/dev/cdrom1' rwrw\-\- : 'TSSTcorp' 'DVD\-ROM SH\-D162C .br -1 \-dev '/dev/sr1' rwrw\-\- : 'HL\-DT\-ST' 'DVDRAM GSA\-4082B' +1 \-dev '/dev/cdrw' rwrw\-\- : 'TSSTcorp' 'CDDVDW SH\-S223B' .br -2 \-dev '/dev/sr2' rwrw\-\- : 'PHILIPS ' 'SPD3300L' +2 \-dev '/dev/cdrw3' rwrw\-\- : 'HL\-DT\-ST' 'BDDVDRW_GGC\-H20L' .SS .B Blank media and compose a new ISO image as batch run Aquire drive /dev/sr2, make media ready for writing a new image, diff --git a/xorriso/xorriso.h b/xorriso/xorriso.h index e339b18d..f0c1c944 100644 --- a/xorriso/xorriso.h +++ b/xorriso/xorriso.h @@ -790,7 +790,8 @@ int Xorriso_option_cut_out(struct XorrisO *xorriso, char *disk_path, int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag); /* Option -devices */ -/* @return <=0 error , 1 success, 2 revoked by -reassure +/* @param flag bit0= perform -device_links rather than -devices + @return <=0 error , 1 success, 2 revoked by -reassure */ int Xorriso_option_devices(struct XorrisO *xorriso, int flag); diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index a5fba607..5cf53aba 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -274,7 +274,7 @@ On FreeBSD the device files have names like On OpenSolaris: -dev /dev/rdsk/c4t0d0s2 Get a list of accessible drives by command --devices +-device_links It might be necessary to do this as *superuser* in order to see all drives and to then allow rw-access for the intended users. Consider to bundle the authorized users in a group like old "floppy". @@ -2690,6 +2690,16 @@ File: xorriso.info, Node: Inquiry, Next: Navigate, Prev: DialogCtl, Up: Opti *superuser* who is able to see all drives. Drives which are occupied by other processes get not shown. +-device_links + Like -devices, but presenting the drives with addresses of + symbolic links which point to the actual device files. + Modern GNU/Linux systems may shuffle drive addresses from boot to + boot. The udev daemon is supposed to create links which always + point to the same drive, regardless of its system address. The + command -device_links shows the addresses of such links if they + begin by "/dev/dvd" or "/dev/cd". Precedence is: "cdrw", "dvdrw", + "cdrom", "dvd", "cd". + -toc Show media specific table of content. This is the media session history, not the ISO image directory tree. @@ -3627,10 +3637,10 @@ groups which shall be able to use the drives with `xorriso'. On Solaris use pfexec. Consider to restrict privileges of `xorriso' to "base,sys_devices" and to give r-permission to user or group. -$ xorriso -devices -0 -dev '/dev/sr0' rwrw-- : '_NEC ' 'DVD_RW ND-4570A' -1 -dev '/dev/sr1' rwrw-- : 'HL-DT-ST' 'DVDRAM GSA-4082B' -2 -dev '/dev/sr2' rwrw-- : 'PHILIPS ' 'SPD3300L' +$ xorriso -device_links +1 -dev '/dev/cdrom1' rwrw-- : 'TSSTcorp' 'DVD-ROM SH-D162C +1 -dev '/dev/cdrw' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S223B' +2 -dev '/dev/cdrw3' rwrw-- : 'HL-DT-ST' 'BDDVDRW_GGC-H20L'  File: xorriso.info, Node: ExCreate, Next: ExDialog, Prev: ExDevices, Up: Examples @@ -4235,6 +4245,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -cpx copies files to disk: Restore. (line 88) * -cut_out inserts piece of data file: Insert. (line 126) * -dev aquires one drive for input and output: AqDrive. (line 12) +* -device_links gets list of drives: Inquiry. (line 18) * -devices gets list of drives: Inquiry. (line 7) * -dialog enables dialog mode: DialogCtl. (line 7) * -disk_dev_ino fast incremental backup: Loading. (line 189) @@ -4303,8 +4314,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -md5 controls handling of MD5 sums: Loading. (line 155) * -mkdir creates ISO directory: Insert. (line 166) * -mount issues mount command for ISO session: Restore. (line 122) -* -mount_cmd composes mount command line: Inquiry. (line 31) -* -mount_cmd controls mount command: Inquiry. (line 47) +* -mount_cmd composes mount command line: Inquiry. (line 41) +* -mount_cmd controls mount command: Inquiry. (line 57) * -mv renames file in ISO image: Manip. (line 35) * -no_rc disables startup files: Scripting. (line 7) * -not_leaf sets exclusion pattern: SetInsert. (line 62) @@ -4327,12 +4338,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -print prints result text line: Scripting. (line 81) * -print_info prints message text line: Scripting. (line 84) * -print_mark prints synchronizing text line: Scripting. (line 87) -* -print_size predicts image size: Inquiry. (line 69) +* -print_size predicts image size: Inquiry. (line 79) * -prog sets program name: Frontend. (line 30) * -prog_help prints help text: Frontend. (line 33) * -prompt prompts for enter key: Scripting. (line 92) * -publisher sets publisher id: SetWrite. (line 113) -* -pvd_info shows image id strings: Inquiry. (line 82) +* -pvd_info shows image id strings: Inquiry. (line 92) * -pwd tells working directory in ISO: Navigate. (line 20) * -pwdx tells working directory on disk: Navigate. (line 23) * -quoted_not_list sets exclusions: SetInsert. (line 72) @@ -4351,7 +4362,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 168) * -scsi_log reports SCSI commands: Scripting. (line 125) * -session_log logs written sessions: Scripting. (line 116) -* -session_string composes session info line: Inquiry. (line 56) +* -session_string composes session info line: Inquiry. (line 66) * -set_filter applies filter to file: Filter. (line 60) * -set_filter_r applies filter to file tree: Filter. (line 85) * -setfacl sets ACL in ISO image: Manip. (line 73) @@ -4371,9 +4382,9 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -stdio_sync controls stdio buffer: SetWrite. (line 245) * -stream_recording controls defect management: SetWrite. (line 226) * -system_id sets system id: SetWrite. (line 128) -* -tell_media_space reports free space: Inquiry. (line 78) +* -tell_media_space reports free space: Inquiry. (line 88) * -temp_mem_limit curbs memory consumption: Scripting. (line 74) -* -toc shows list of sessions: Inquiry. (line 18) +* -toc shows list of sessions: Inquiry. (line 28) * -uid sets global ownership: SetWrite. (line 191) * -update inserts path if different: Insert. (line 99) * -update_l inserts paths if different: Insert. (line 121) @@ -4447,6 +4458,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Drive, for input and output, -dev: AqDrive. (line 12) * Drive, for input, -indev: AqDrive. (line 24) * Drive, for output, -outdev: AqDrive. (line 31) +* Drive, get drive list, -device_links: Inquiry. (line 18) * Drive, get drive list, -devices: Inquiry. (line 7) * Drive, list supported media, -list_profiles: Writing. (line 150) * Drive, reduce activity, -calm_drive: Loading. (line 235) @@ -4487,7 +4499,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Image, set volume id, -volid: SetWrite. (line 89) * Image, set volume set id, -volset_id: SetWrite. (line 108) * Image, set volume timestamp, -volume_date: SetWrite. (line 135) -* Image, show id strings, -pvd_info: Inquiry. (line 82) +* Image, show id strings, -pvd_info: Inquiry. (line 92) * Insert, enable overwriting, -overwrite: SetInsert. (line 127) * Insert, file exclusion absolute, -not_paths: SetInsert. (line 55) * Insert, file exclusion from file, -not_list: SetInsert. (line 67) @@ -4598,17 +4610,17 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Rock Ridge, _definiton: Extras. (line 6) * Session, _definition: Model. (line 6) * Session, altered start address, -displacement: Loading. (line 35) -* Session, info string, -session_string: Inquiry. (line 56) +* Session, info string, -session_string: Inquiry. (line 66) * Session, issue mount command, -mount: Restore. (line 122) * Session, log when written, -session_log: Scripting. (line 116) -* Session, mount command line, -mount_cmd: Inquiry. (line 31) -* Session, mount parameters, -mount_opts: Inquiry. (line 47) +* Session, mount command line, -mount_cmd: Inquiry. (line 41) +* Session, mount parameters, -mount_opts: Inquiry. (line 57) * Session, select as input, -load: Loading. (line 11) * SUN Disk Label, production: Bootable. (line 187) * SUN SPARC boot images, activation: Bootable. (line 220) * System area, _definiton: Bootable. (line 121) * Table-of-content, search sessions, -rom_toc_scan: Loading. (line 210) -* Table-of-content, show, -toc: Inquiry. (line 18) +* Table-of-content, show, -toc: Inquiry. (line 28) * Timestamps, set in ISO image, -alter_date: Manip. (line 147) * Timestamps, set in ISO image, -alter_date_r: Manip. (line 167) * Tree, disk, traverse, -findx: Navigate. (line 106) @@ -4628,12 +4640,12 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Write, defect management, -stream_recording: SetWrite. (line 226) * Write, enable Joliet, -joliet: SetWrite. (line 10) * Write, fifo size, -fs: SetWrite. (line 255) -* Write, free space, -tell_media_space: Inquiry. (line 78) +* Write, free space, -tell_media_space: Inquiry. (line 88) * Write, log problematic disk files, -errfile_log: Scripting. (line 96) * Write, log written sessions, -session_log: Scripting. (line 116) * Write, padding image, -padding: SetWrite. (line 268) * Write, pending ISO image, -commit: Writing. (line 13) -* Write, predict image size, -print_size: Inquiry. (line 69) +* Write, predict image size, -print_size: Inquiry. (line 79) * Write, set speed, -speed: SetWrite. (line 211) * Write, simulation, -dummy: SetWrite. (line 251) * xattr, _definiton: Extras. (line 52) @@ -4653,53 +4665,53 @@ Node: Model3264 Node: Media6148 Node: Methods8814 Node: Drives11363 -Node: Extras14671 -Node: Processing18136 -Node: Dialog21606 -Node: Options23269 -Node: AqDrive24877 -Node: Loading27914 -Node: Insert42181 -Node: SetInsert51886 -Node: Manip60454 -Node: CmdFind69181 -Node: Filter80443 -Node: Writing84781 -Node: SetWrite92774 -Node: Bootable106820 -Node: Jigdo120038 -Node: Charset124284 -Node: Exception127043 -Node: DialogCtl133156 -Node: Inquiry135743 -Node: Navigate140071 -Node: Verify148039 -Node: Restore156704 -Node: Emulation163364 -Node: Scripting173167 -Node: Frontend179295 -Node: Examples180594 -Node: ExDevices181765 -Node: ExCreate182403 -Node: ExDialog183677 -Node: ExGrowing184939 -Node: ExModifying185741 -Node: ExBootable186242 -Node: ExCharset186791 -Node: ExPseudo187611 -Node: ExCdrecord188509 -Node: ExMkisofs188824 -Node: ExGrowisofs190162 -Node: ExException191297 -Node: ExTime191751 -Node: ExIncBackup192210 -Node: ExRestore196134 -Node: ExRecovery197092 -Node: Files197660 -Node: Seealso198958 -Node: Bugreport199546 -Node: Legal200127 -Node: CommandIdx201057 -Node: ConceptIdx215871 +Node: Extras14676 +Node: Processing18141 +Node: Dialog21611 +Node: Options23274 +Node: AqDrive24882 +Node: Loading27919 +Node: Insert42186 +Node: SetInsert51891 +Node: Manip60459 +Node: CmdFind69186 +Node: Filter80448 +Node: Writing84786 +Node: SetWrite92779 +Node: Bootable106825 +Node: Jigdo120043 +Node: Charset124289 +Node: Exception127048 +Node: DialogCtl133161 +Node: Inquiry135748 +Node: Navigate140592 +Node: Verify148560 +Node: Restore157225 +Node: Emulation163885 +Node: Scripting173688 +Node: Frontend179816 +Node: Examples181115 +Node: ExDevices182286 +Node: ExCreate182945 +Node: ExDialog184219 +Node: ExGrowing185481 +Node: ExModifying186283 +Node: ExBootable186784 +Node: ExCharset187333 +Node: ExPseudo188153 +Node: ExCdrecord189051 +Node: ExMkisofs189366 +Node: ExGrowisofs190704 +Node: ExException191839 +Node: ExTime192293 +Node: ExIncBackup192752 +Node: ExRestore196676 +Node: ExRecovery197634 +Node: Files198202 +Node: Seealso199500 +Node: Bugreport200088 +Node: Legal200669 +Node: CommandIdx201599 +Node: ConceptIdx216486  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index b9424515..f6589d5e 100644 --- a/xorriso/xorriso.texi +++ b/xorriso/xorriso.texi @@ -50,7 +50,7 @@ @c man .\" First parameter, NAME, should be all caps @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" other parameters are allowed: see man(7), man(1) -@c man .TH XORRISO 1 "Version 1.1.3, Jul 24, 2011" +@c man .TH XORRISO 1 "Version 1.1.3, Jul 27, 2011" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -431,7 +431,7 @@ On OpenSolaris: @* Get a list of accessible drives by command @* - -devices + -device_links @* It might be necessary to do this as @strong{superuser} @@ -3612,6 +3612,19 @@ who is able to see all drives. @* Drives which are occupied by other processes get not shown. @c man .TP +@item -device_links +@kindex -device_links gets list of drives +@cindex Drive, get drive list, -device_links +Like -devices, but presenting the drives with addresses of symbolic links +which point to the actual device files. +@* +Modern GNU/Linux systems may shuffle drive addresses from boot to boot. +The udev daemon is supposed to create links which always point to the +same drive, regardless of its system address. +The command -device_links shows the addresses of such links if they begin +by "/dev/dvd" or "/dev/cd". +Precedence is: "cdrw", "dvdrw", "cdrom", "dvd", "cd". +@c man .TP @item -toc @* @kindex -toc shows list of sessions @@ -4898,13 +4911,13 @@ On Solaris use pfexec. Consider to restrict privileges of @command{xorriso} to "base,sys_devices" and to give r-permission to user or group. @* @sp 1 -$ xorriso -devices +$ xorriso -device_links @* -0 -dev '/dev/sr0' rwrw@minus{}@minus{} : '_NEC ' 'DVD_RW ND-4570A' +1 -dev '/dev/cdrom1' rwrw@minus{}@minus{} : 'TSSTcorp' 'DVD-ROM SH-D162C @* -1 -dev '/dev/sr1' rwrw@minus{}@minus{} : 'HL-DT-ST' 'DVDRAM GSA-4082B' +1 -dev '/dev/cdrw' rwrw@minus{}@minus{} : 'TSSTcorp' 'CDDVDW SH-S223B' @* -2 -dev '/dev/sr2' rwrw@minus{}@minus{} : 'PHILIPS ' 'SPD3300L' +2 -dev '/dev/cdrw3' rwrw@minus{}@minus{} : 'HL-DT-ST' 'BDDVDRW_GGC-H20L' @c man .SS @c man .B Blank media and compose a new ISO image as batch run @node ExCreate, ExDialog, ExDevices, Examples diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index df2d6584..ccc4a35d 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2011.07.25.103809" +#define Xorriso_timestamP "2011.07.27.211423"