Bug 146572 - growisofs won't accept long filename list
growisofs won't accept long filename list
Status: CLOSED NOTABUG
Product: Fedora
Classification: Fedora
Component: dvd+rw-tools (Show other bugs)
3
All Linux
medium Severity medium
: ---
: ---
Assigned To: Harald Hoyer
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2005-01-29 17:14 EST by David A. De Graaf
Modified: 2007-11-30 17:10 EST (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2005-01-31 05:13:53 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description David A. De Graaf 2005-01-29 17:14:17 EST
Description of problem: When growisofs is given a long list of full
pathnames (using -graft-points), it fails with errmsg:

  /usr/bin/growisofs: Argument list too long

while mkisofs is perfectly happy with the same list.

Version-Release number of selected component (if applicable):
dvd+rw-tools-5.21.4.10.8-2

How reproducible:
Always fails.

Steps to Reproduce:
1.  Generate a list of filenames for an incremental backup like this:
0       /.autofsck
0       /boot/grub/grub.conf
0       /boot/initrd-2.6.10-1.741_FC3.img
0       /etc/.fstab.hal.1
    ...

2.  Run script:
    growisofs -Z /dev/dvd -dvd-compat -R -J -D -graft-points \
      -allow-leading-dots -joliet-long -l \
      -allow-multidot -max-iso9660-filenames -relaxed-filenames \
      `awk -F '\t' '{ print $2 "=" $2 }' $1`

3.  Note that awk removes the leading digit field and creates lines:
/.autofsck=/.autofsck
   ...
  
Actual results:
If the list is long enough (> 5000 lines) growisofs barfs.

Expected results:
growisofs should be written to accept arbitrarily long file lists


Additional info:
This alternative script works fine:
    grep -v " " $1 | \
    awk -F '\t' '{ print $2 "=" $2 }' - | \
    /usr/bin/mkisofs -quiet \
        -R -D -allow-leading-dots -graft-points -allow-multidot \
        -max-iso9660-filenames -relaxed-filenames -path-list -  |
    /usr/bin/cdrecord -dao -v driveropts=burnfree fs=16m -eject \
        dev=$CDDEV tsize=${SIZE}s - 2> /dev/null 

Ie, mkisofs happily accepts the same very long list of pathnames.
(Note, however, that neither will accept filenames that contain
blanks, but that's separate problem.)

The growisofs man page implies that extra args are merely passed to
mkisofs.
Comment 1 Harald Hoyer 2005-01-31 05:13:53 EST
Use this parameter and make a file with the filenames

  -path-list file
         A  file containing a list of pathspec directories and filenames
         to be added to the ISO9660 filesystem. This list  of  pathspecs
         are processed after any that appear on the command line. If the
         argument is -, then the list is read from the standard input.
Comment 2 David A. De Graaf 2005-01-31 16:39:53 EST
Harald:
You're absolutely right.  Thanks for pointing out the right answer.  I
should have realized that giving a long list as arguments encounters
the shell limit, and has nothing to do with growisofs.

Note that I did it right in my cdrecord example.
My brain's on vacation, I guess.

Note You need to log in before you can comment on or make changes to this bug.