Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:GNE
dvd+rw-tools
growisofs-genisoimage.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File growisofs-genisoimage.patch of Package dvd+rw-tools
--- growisofs.1 +++ growisofs.1 @@ -24,6 +24,10 @@ other file system, if formatted at all) to all supported DVD media types. +\fBgrowisofs\fP in SUSE distribution has been patched to prefer +\fBgenisoimage\fP over \fBmkisofs\fP. You can +override this behavior by exporting MKISOFS environment variable. + .SH OPTIONS .TP .BI \-Z\ /dev/dvd --- growisofs.c +++ growisofs.c @@ -2543,6 +2543,47 @@ } } + +char *check_mkisofs(char *mkisofs) +{ pid_t mkisofs_pid; + int fildes[2],ret,n,r; + static char ret_str[1024]; + + if (pipe (fildes) < 0) + perror (":-( unable to create pipe"), exit(FATAL_START(errno)); + + if ((mkisofs_pid=fork ()) == (pid_t)-1) + perror (":-( unable to fork mkisofs"), exit(FATAL_START(errno)); + else if (mkisofs_pid == 0) + { dup2 (fildes[1],1); + close (fildes[0]); + close (fildes[1]); + setuid(getuid()); + execlp (mkisofs,mkisofs,"-version",NULL); + exit (FATAL_START(errno)); + } + + close (fildes[1]); + + n=0; + + while (n < sizeof(ret_str) - 1) { + r=read(fildes[0], ret_str, sizeof(ret_str) - n - 1); + if (r<=0) break; + n+=r; + } + + if (n==0 || r < 0) /* mkisofs must have finished, consume the exit code */ + { if ((waitpid (mkisofs_pid,&ret,0)) == -1) { + perror (":-( waitpid failed"); + } + return NULL; + } + + ret_str[n]=0; + return ret_str; +} + #elif defined(_WIN32) void pipe_mkisofs_up (char *mkisofs_argv[],int infd,int outfd,off64_t outoff) @@ -2723,7 +2764,13 @@ #if defined(__unix) || defined(__unix__) env = getenv ("MKISOFS"); - mkisofs_argv[0] = (env?env:"mkisofs"); + if (env) + mkisofs_argv[0] = env; + else if (check_mkisofs("genisoimage")) + mkisofs_argv[0] = "genisoimage"; + else + mkisofs_argv[0] = "mkisofs"; + #elif defined(_WIN32) /* * On Windows I insist on mkisofs.exe to reside in very same
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor