diff --git a/.gitignore b/.gitignore index e671b73..f37a651 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1 @@ udftools-1.0.0b3.tar.gz -/udftools-1.2.tar.gz -/udftools-1.3.tar.gz -/udftools-2.1.tar.gz -/udftools-2.2.tar.gz -/udftools-2.3.tar.gz diff --git a/sources b/sources index 4f2392e..e7f1658 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (udftools-2.3.tar.gz) = 17304264388ae53e348d6aa870f0d23c29477344fee848236b46886c086221941872073974f804c0735eafd0cf9f7acdac7988132f03c0a87dba37467b5bda95 +2f491ddd63f31040797236fe18db9e60 udftools-1.0.0b3.tar.gz diff --git a/udftools-1.0.0b3-extsize.patch b/udftools-1.0.0b3-extsize.patch new file mode 100644 index 0000000..eecac4b --- /dev/null +++ b/udftools-1.0.0b3-extsize.patch @@ -0,0 +1,40 @@ +diff -up udftools-1.0.0b3/libudffs/extent.c.extsize udftools-1.0.0b3/libudffs/extent.c +--- udftools-1.0.0b3/libudffs/extent.c.extsize 2012-01-26 09:45:22.217856499 +0100 ++++ udftools-1.0.0b3/libudffs/extent.c 2012-01-26 09:45:43.142855067 +0100 +@@ -50,7 +50,7 @@ cont: + while (start_ext != NULL && start_ext->blocks < blocks) + start_ext = next_extent(start_ext->next, type); + +- if (start_ext->start % offset) ++ if (start_ext != NULL && start_ext->start % offset) + { + inc = offset - (start_ext->start % offset); + if (start_ext->blocks - inc < blocks) +@@ -62,7 +62,7 @@ cont: + else + inc = 0; + +- return start_ext->start + inc; ++ return start_ext ? start_ext->start + inc : NULL; + } + + struct udf_extent *prev_extent(struct udf_extent *start_ext, enum udf_space_type type) +@@ -81,7 +81,7 @@ cont: + while (start_ext != NULL && start_ext->blocks < blocks) + start_ext = prev_extent(start_ext->prev, type); + +- if ((start_ext->start + start_ext->blocks) % offset) ++ if (start_ext != NULL && (start_ext->start + start_ext->blocks) % offset) + { + dec = (start_ext->start + start_ext->blocks) % offset; + if (start_ext->blocks - dec < blocks) +@@ -93,7 +93,7 @@ cont: + else + dec = 0; + +- return start_ext->start + start_ext->blocks - dec - blocks; ++ return start_ext ? start_ext->start + start_ext->blocks - dec - blocks : NULL; + } + + struct udf_extent *find_extent(struct udf_disc *disc, uint32_t start) + diff --git a/udftools-1.0.0b3-fixcompile.patch b/udftools-1.0.0b3-fixcompile.patch new file mode 100644 index 0000000..83883bc --- /dev/null +++ b/udftools-1.0.0b3-fixcompile.patch @@ -0,0 +1,546 @@ +Nur in udftools-1.0.0b3-new/cdrwtool: cdrwtool. +diff -ur udftools-1.0.0b3/cdrwtool/cdrwtool.c udftools-1.0.0b3-new/cdrwtool/cdrwtool.c +--- udftools-1.0.0b3/cdrwtool/cdrwtool.c 2002-12-28 05:48:51.000000000 +0100 ++++ udftools-1.0.0b3-new/cdrwtool/cdrwtool.c 2007-08-23 13:28:23.000000000 +0200 +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + #include + #include +Nur in udftools-1.0.0b3-new/cdrwtool: cdrwtool.o. +Nur in udftools-1.0.0b3-new/cdrwtool: defaults.o. +Nur in udftools-1.0.0b3-new/cdrwtool: .deps. +Nur in udftools-1.0.0b3-new/cdrwtool: .libs. +Nur in udftools-1.0.0b3-new/cdrwtool: main.o. +Nur in udftools-1.0.0b3-new/cdrwtool: Makefile. +Nur in udftools-1.0.0b3-new/cdrwtool: mkudffs.o. +Nur in udftools-1.0.0b3-new/cdrwtool: options.o. +diff -ur udftools-1.0.0b3/config/config.guess udftools-1.0.0b3-new/config/config.guess +--- udftools-1.0.0b3/config/config.guess 2004-02-23 10:33:44.000000000 +0100 ++++ udftools-1.0.0b3-new/config/config.guess 2007-08-23 13:27:41.000000000 +0200 +@@ -3,7 +3,7 @@ + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +-timestamp='2003-01-10' ++timestamp='2003-06-17' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -106,6 +106,7 @@ + : ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || ++ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; + dummy=$tmp/dummy ; + tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +@@ -135,6 +136,13 @@ + UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown + UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + ++## for Red Hat Linux ++if test -f /etc/redhat-release ; then ++ VENDOR=redhat ; ++else ++ VENDOR= ; ++fi ++ + # Note: order is significant - the case branches are not exclusive. + + case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +@@ -235,74 +243,56 @@ + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; +- *:MicroBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-microbsd${UNAME_RELEASE} +- exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi ++ # According to Compaq, /usr/sbin/psrinfo has been available on ++ # OSF/1 and Tru64 systems produced since 1995. I hope that ++ # covers most systems running today. This code pipes the CPU ++ # types through head -n 1, so we only detect the type of CPU 0. ++ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` ++ case "$ALPHA_CPU_TYPE" in ++ "EV4 (21064)") ++ UNAME_MACHINE="alpha" ;; ++ "EV4.5 (21064)") ++ UNAME_MACHINE="alpha" ;; ++ "LCA4 (21066/21068)") ++ UNAME_MACHINE="alpha" ;; ++ "EV5 (21164)") ++ UNAME_MACHINE="alphaev5" ;; ++ "EV5.6 (21164A)") ++ UNAME_MACHINE="alphaev56" ;; ++ "EV5.6 (21164PC)") ++ UNAME_MACHINE="alphapca56" ;; ++ "EV5.7 (21164PC)") ++ UNAME_MACHINE="alphapca57" ;; ++ "EV6 (21264)") ++ UNAME_MACHINE="alphaev6" ;; ++ "EV6.7 (21264A)") ++ UNAME_MACHINE="alphaev67" ;; ++ "EV6.8CB (21264C)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.8AL (21264B)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.8CX (21264D)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.9A (21264/EV69A)") ++ UNAME_MACHINE="alphaev69" ;; ++ "EV7 (21364)") ++ UNAME_MACHINE="alphaev7" ;; ++ "EV7.9 (21364A)") ++ UNAME_MACHINE="alphaev79" ;; ++ esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. +- eval $set_cc_for_build +- cat <$dummy.s +- .data +-\$Lformat: +- .byte 37,100,45,37,120,10,0 # "%d-%x\n" +- +- .text +- .globl main +- .align 4 +- .ent main +-main: +- .frame \$30,16,\$26,0 +- ldgp \$29,0(\$27) +- .prologue 1 +- .long 0x47e03d80 # implver \$0 +- lda \$2,-1 +- .long 0x47e20c21 # amask \$2,\$1 +- lda \$16,\$Lformat +- mov \$0,\$17 +- not \$1,\$18 +- jsr \$26,printf +- ldgp \$29,0(\$26) +- mov 0,\$16 +- jsr \$26,exit +- .end main +-EOF +- $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null +- if test "$?" = 0 ; then +- case `$dummy` in +- 0-0) +- UNAME_MACHINE="alpha" +- ;; +- 1-0) +- UNAME_MACHINE="alphaev5" +- ;; +- 1-1) +- UNAME_MACHINE="alphaev56" +- ;; +- 1-101) +- UNAME_MACHINE="alphapca56" +- ;; +- 2-303) +- UNAME_MACHINE="alphaev6" +- ;; +- 2-307) +- UNAME_MACHINE="alphaev67" +- ;; +- 2-1307) +- UNAME_MACHINE="alphaev68" +- ;; +- 3-1307) +- UNAME_MACHINE="alphaev7" +- ;; +- esac +- fi + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; ++ Alpha*:OpenVMS:*:*) ++ echo alpha-hp-vms ++ exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead +@@ -341,6 +331,9 @@ + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; ++ DRS?6000:unix:4.0:6*) ++ echo sparc-icl-nx6 ++ exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; +@@ -765,7 +758,7 @@ + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; +- *:FreeBSD:*:*) ++ *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +@@ -788,8 +781,8 @@ + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; +- x86:Interix*:3*) +- echo i586-pc-interix3 ++ x86:Interix*:[34]*) ++ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks +@@ -816,10 +809,20 @@ + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ eval $set_cc_for_build ++ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ ++ | grep __ARM_EABI__ >/dev/null ++ then ++ echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu ++ else ++ echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnueabi ++ fi ++ exit 0 ;; ++ cris:Linux:*:*) ++ echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +@@ -863,10 +866,10 @@ + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) +- echo powerpc-unknown-linux-gnu ++ echo powerpc-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) +- echo powerpc64-unknown-linux-gnu ++ echo powerpc64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in +@@ -894,7 +897,10 @@ + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) +- echo ${UNAME_MACHINE}-ibm-linux ++ echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu ++ exit 0 ;; ++ sh64*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +@@ -903,7 +909,7 @@ + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) +- echo x86_64-unknown-linux-gnu ++ echo x86_64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so +@@ -955,7 +961,7 @@ + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` +- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 ++ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) +@@ -1054,7 +1060,7 @@ + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; +- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) ++ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` +@@ -1210,6 +1216,9 @@ + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; ++ SEI:*:*:SEIUX) ++ echo mips-sei-seiux${UNAME_RELEASE} ++ exit 0 ;; + esac + + #echo '(No uname command or uname output not recognized.)' 1>&2 +diff -ur udftools-1.0.0b3/config/config.sub udftools-1.0.0b3-new/config/config.sub +--- udftools-1.0.0b3/config/config.sub 2004-02-23 10:33:44.000000000 +0100 ++++ udftools-1.0.0b3-new/config/config.sub 2007-08-23 13:27:41.000000000 +0200 +@@ -3,7 +3,7 @@ + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +-timestamp='2003-01-03' ++timestamp='2003-06-18' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -229,7 +229,7 @@ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ +- | clipper \ ++ | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ +@@ -258,11 +258,11 @@ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | s390 | s390x \ +- | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ ++ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ +- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ ++ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ +- | tahoe | thumb | tic80 | tron \ ++ | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ +@@ -297,7 +297,7 @@ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ +- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ ++ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ +@@ -331,11 +331,13 @@ + | pyramid-* \ + | romp-* | rs6000-* \ + | s390-* | s390x-* \ +- | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ ++ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ +- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ +- | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ ++ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ ++ | tahoe-* | thumb-* \ ++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ ++ | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ +@@ -373,6 +375,9 @@ + basic_machine=a29k-none + os=-bsd + ;; ++ amd64) ++ basic_machine=x86_64-pc ++ ;; + amdahl) + basic_machine=580-amdahl + os=-sysv +@@ -768,18 +773,24 @@ + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; +- pentiumii | pentium2) ++ pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; ++ pentium4) ++ basic_machine=i786-pc ++ ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; +- pentiumii-* | pentium2-*) ++ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ++ pentium4-*) ++ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + pn) + basic_machine=pn-gould + ;; +@@ -832,6 +843,10 @@ + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; ++ sei) ++ basic_machine=mips-sei ++ os=-seiux ++ ;; + sequent) + basic_machine=i386-sequent + ;; +@@ -839,6 +854,9 @@ + basic_machine=sh-hitachi + os=-hms + ;; ++ sh64) ++ basic_machine=sh64-unknown ++ ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks +@@ -913,14 +931,18 @@ + basic_machine=t90-cray + os=-unicos + ;; +- tic4x | c4x*) +- basic_machine=tic4x-unknown +- os=-coff +- ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; ++ tic55x | c55x*) ++ basic_machine=tic55x-unknown ++ os=-coff ++ ;; ++ tic6x | c6x*) ++ basic_machine=tic6x-unknown ++ os=-coff ++ ;; + tx39) + basic_machine=mipstx39-unknown + ;; +@@ -1023,13 +1045,13 @@ + we32k) + basic_machine=we32k-att + ;; +- sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) ++ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; +- sparc | sparcv9 | sparcv9b) ++ sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) +@@ -1114,7 +1136,7 @@ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ +- | -powermax* | -dnix* | -microbsd*) ++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1223,6 +1245,12 @@ + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; ++ -aros*) ++ os=-aros ++ ;; ++ -kaos*) ++ os=-kaos ++ ;; + -none) + ;; + *) +@@ -1254,6 +1282,9 @@ + arm*-semi) + os=-aout + ;; ++ c4x-* | tic4x-*) ++ os=-coff ++ ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 +Nur in udftools-1.0.0b3-new: config.log. +Nur in udftools-1.0.0b3-new: config.status. +Nur in udftools-1.0.0b3-new/doc: Makefile. +Nur in udftools-1.0.0b3-new/include: config.h. +Nur in udftools-1.0.0b3-new/include: stamp-h1. +Nur in udftools-1.0.0b3-new: libtool. +Nur in udftools-1.0.0b3-new/libudffs: crc.lo. +Nur in udftools-1.0.0b3-new/libudffs: crc.o. +Nur in udftools-1.0.0b3-new/libudffs: .deps. +Nur in udftools-1.0.0b3-new/libudffs: desc.lo. +Nur in udftools-1.0.0b3-new/libudffs: desc.o. +Nur in udftools-1.0.0b3-new/libudffs: extent.lo. +Nur in udftools-1.0.0b3-new/libudffs: extent.o. +Nur in udftools-1.0.0b3-new/libudffs: file.lo. +Nur in udftools-1.0.0b3-new/libudffs: file.o. +Nur in udftools-1.0.0b3-new/libudffs: .libs. +Nur in udftools-1.0.0b3-new/libudffs: libudffs.la. +Nur in udftools-1.0.0b3-new/libudffs: Makefile. +Nur in udftools-1.0.0b3-new/libudffs: unicode.lo. +Nur in udftools-1.0.0b3-new/libudffs: unicode.o. +Nur in udftools-1.0.0b3-new: Makefile. +Nur in udftools-1.0.0b3-new/mkudffs: defaults.o. +Nur in udftools-1.0.0b3-new/mkudffs: .deps. +Nur in udftools-1.0.0b3-new/mkudffs: .libs. +Nur in udftools-1.0.0b3-new/mkudffs: main.o. +Nur in udftools-1.0.0b3-new/mkudffs: Makefile. +Nur in udftools-1.0.0b3-new/mkudffs: mkudffs. +Nur in udftools-1.0.0b3-new/mkudffs: mkudffs.o. +Nur in udftools-1.0.0b3-new/mkudffs: options.o. +Nur in udftools-1.0.0b3-new/pktsetup: .deps. +Nur in udftools-1.0.0b3-new/pktsetup: .libs. +Nur in udftools-1.0.0b3-new/pktsetup: Makefile. +Nur in udftools-1.0.0b3-new/pktsetup: pktsetup. +diff -ur udftools-1.0.0b3/pktsetup/pktsetup.c udftools-1.0.0b3-new/pktsetup/pktsetup.c +--- udftools-1.0.0b3/pktsetup/pktsetup.c 2007-08-23 13:30:18.000000000 +0200 ++++ udftools-1.0.0b3-new/pktsetup/pktsetup.c 2007-08-23 13:29:58.000000000 +0200 +@@ -26,6 +26,8 @@ + #include + #include + #include ++#include ++#include + + #include + +@@ -86,7 +88,7 @@ + { + int pkt_fd, dev_fd, cmd; + +- if ((pkt_fd = open(pkt_device, O_RDONLY | O_CREAT)) == -1) { ++ if ((pkt_fd = open(pkt_device, O_RDONLY | O_CREAT, 0600)) == -1) { + perror("open packet device"); + return; + } +Nur in udftools-1.0.0b3-new/pktsetup: pktsetup.o. +Nur in udftools-1.0.0b3-new/udfct: Makefile. +Nur in udftools-1.0.0b3-new/udffsck: .deps. +Nur in udftools-1.0.0b3-new/udffsck: .libs. +Nur in udftools-1.0.0b3-new/udffsck: main.o. +Nur in udftools-1.0.0b3-new/udffsck: Makefile. +Nur in udftools-1.0.0b3-new/udffsck: udffsck. +Nur in udftools-1.0.0b3-new/wrudf: .deps. +Nur in udftools-1.0.0b3-new/wrudf: ide-pc.o. +Nur in udftools-1.0.0b3-new/wrudf: .libs. +Nur in udftools-1.0.0b3-new/wrudf: Makefile. +Nur in udftools-1.0.0b3-new/wrudf: wrudf. +Nur in udftools-1.0.0b3-new/wrudf: wrudf-cdr.o. +Nur in udftools-1.0.0b3-new/wrudf: wrudf-cdrw.o. +Nur in udftools-1.0.0b3-new/wrudf: wrudf-cmnd.o. +Nur in udftools-1.0.0b3-new/wrudf: wrudf-desc.o. +Nur in udftools-1.0.0b3-new/wrudf: wrudf.o. diff --git a/udftools-1.0.0b3-mkudffs-bigendian.patch b/udftools-1.0.0b3-mkudffs-bigendian.patch new file mode 100644 index 0000000..79544ee --- /dev/null +++ b/udftools-1.0.0b3-mkudffs-bigendian.patch @@ -0,0 +1,131 @@ +diff -up udftools-1.0.0b3/mkudffs/defaults.c.mkudffs-bigendian udftools-1.0.0b3/mkudffs/defaults.c +--- udftools-1.0.0b3/mkudffs/defaults.c.mkudffs-bigendian 2007-08-23 13:41:29.000000000 +0200 ++++ udftools-1.0.0b3/mkudffs/defaults.c 2007-08-23 13:42:16.000000000 +0200 +@@ -69,7 +69,7 @@ struct primaryVolDesc default_pvd = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_PVD), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct primaryVolDesc) - sizeof(tag)), + }, + volDescSeqNum : constant_cpu_to_le32(1), +@@ -119,7 +119,7 @@ struct logicalVolDesc default_lvd = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_LVD), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct logicalVolDesc) - sizeof(tag)), + }, + volDescSeqNum : constant_cpu_to_le32(2), +@@ -157,7 +157,7 @@ struct volDescPtr default_vdp = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_VDP), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct volDescPtr) - sizeof(tag)), + }, + volDescSeqNum : constant_cpu_to_le32(3), +@@ -192,7 +192,7 @@ struct impUseVolDesc default_iuvd = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_IUVD), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct impUseVolDesc) - sizeof(tag)), + }, + volDescSeqNum : constant_cpu_to_le32(4), +@@ -215,7 +215,7 @@ struct partitionDesc default_pd = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_PD), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct partitionDesc) - sizeof(tag)), + }, + volDescSeqNum : constant_cpu_to_le32(5), +@@ -242,7 +242,7 @@ struct unallocSpaceDesc default_usd = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_USD), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct unallocSpaceDesc) - sizeof(tag)), + }, + volDescSeqNum : constant_cpu_to_le32(6), +@@ -254,7 +254,7 @@ struct terminatingDesc default_td = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_TD), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct terminatingDesc) - sizeof(tag)), + }, + }; +@@ -265,7 +265,7 @@ struct logicalVolIntegrityDesc default_l + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_LVID), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct logicalVolIntegrityDesc) - sizeof(tag)), + }, + integrityType : constant_cpu_to_le32(LVID_INTEGRITY_TYPE_CLOSE), +@@ -295,7 +295,7 @@ struct sparingTable default_stable = + { + tagIdent : constant_cpu_to_le16(0), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct sparingTable) - sizeof(tag)), + }, + sparingIdent : +@@ -387,7 +387,7 @@ struct fileSetDesc default_fsd = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_FSD), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct fileSetDesc) - sizeof(tag)), + }, + interchangeLvl : constant_cpu_to_le16(2), +@@ -426,7 +426,7 @@ struct fileEntry default_fe = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_LVID), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct primaryVolDesc) - sizeof(tag)), + }, + icbTag : +@@ -458,7 +458,7 @@ struct extendedFileEntry default_efe = + { + tagIdent : constant_cpu_to_le16(TAG_IDENT_LVID), + descVersion : constant_cpu_to_le16(3), +- tagSerialNum : 1, ++ tagSerialNum : constant_cpu_to_le16(1), + descCRC : constant_cpu_to_le16(sizeof(struct primaryVolDesc) - sizeof(tag)), + }, + icbTag : +diff -up udftools-1.0.0b3/mkudffs/mkudffs.c.mkudffs-bigendian udftools-1.0.0b3/mkudffs/mkudffs.c +--- udftools-1.0.0b3/mkudffs/mkudffs.c.mkudffs-bigendian 2004-02-23 04:35:33.000000000 +0100 ++++ udftools-1.0.0b3/mkudffs/mkudffs.c 2007-08-23 13:31:54.000000000 +0200 +@@ -250,14 +250,14 @@ void split_space(struct udf_disc *disc) + if (size % offsets[PSPACE_SIZE]) + size -= (size % offsets[PSPACE_SIZE]); + set_extent(disc, PSPACE, start, size); +- for (i=0; iudf_lvd[0]->numPartitionMaps; i++) ++ for (i=0; iudf_lvd[0]->numPartitionMaps); i++) + { + if (i == 1) + disc->udf_lvid->freeSpaceTable[i] = cpu_to_le32(0xFFFFFFFF); + else + disc->udf_lvid->freeSpaceTable[i] = cpu_to_le32(size); + } +- for (j=0; judf_lvd[0]->numPartitionMaps; j++) ++ for (j=0; judf_lvd[0]->numPartitionMaps); j++) + { + if (j == 1) + disc->udf_lvid->sizeTable[i+j] = cpu_to_le32(0xFFFFFFFF); diff --git a/udftools-1.0.0b3-pktsetup-chardev.patch b/udftools-1.0.0b3-pktsetup-chardev.patch new file mode 100644 index 0000000..5ef0825 --- /dev/null +++ b/udftools-1.0.0b3-pktsetup-chardev.patch @@ -0,0 +1,346 @@ +From: Peter Osterlund +Subject: Re: [RFC][PATCH] Control pktcdvd with an auxiliary character device +To: linux-kernel@vger.kernel.org +Cc: Christoph Hellwig , Arnd Bergmann , + Jens Axboe , Andrew Morton +Date: Wed Jul 14 02:17:27 2004 +0200 + +Peter Osterlund writes: + +> Peter Osterlund writes: +> +> > Christoph Hellwig writes: +> > +> > > On Sun, Jul 11, 2004 at 01:20:45AM +0200, Arnd Bergmann wrote: +> > > > These are actually incorrect definitions since the ioctl argument is +> > > > not a pointer to unsigned int but instead just an int. However, that's +> > > > too late to fix without breaking the existing tools. +> > > +> > > The tools need to change anyway to get away from the broken behaviour to +> > > issue in ioctl on the actual block device to bind it.. +> > +> > OK, I'll create a patch that gets rid of the ioctl interface and uses +> > an auxiliary character device instead to control device bindings. +> +> Here is a patch for 2.6.7-mm7 that does that. The driver creates a +> misc character device and bind/unbind of the block devices are +> controlled by ioctl commands on the char device. +> +> This patch needs corresponding changes in the pktsetup user space +> program. I'll post a patch for pktsetup as a separate message. + +And here is a patch for udftools-1.0.0b3 that updates the pktsetup +program to make it able to use the character device for block device +setup/teardown. + +--- + + udftools-1.0.0b3-petero/pktsetup/pktsetup.c | 245 +++++++++++++++++++++++++++- + 1 files changed, 238 insertions(+), 7 deletions(-) + +diff -puN pktsetup/pktsetup.c~pktsetup-char-dev pktsetup/pktsetup.c +--- udftools-1.0.0b3/pktsetup/pktsetup.c~pktsetup-char-dev 2004-07-12 19:57:51.000000000 +0200 ++++ udftools-1.0.0b3-petero/pktsetup/pktsetup.c 2004-07-14 00:34:02.471317888 +0200 +@@ -1,5 +1,6 @@ + /* + * Copyright (c) 1999,2000 Jens Axboe ++ * Copyright (c) 2004 Peter Osterlund + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -19,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -33,8 +35,33 @@ + #define PACKET_SETUP_DEV _IOW('X', 1, unsigned int) + #define PACKET_TEARDOWN_DEV _IOW('X', 2, unsigned int) + #endif ++#ifndef PACKET_CTRL_CMD ++#define PACKET_CTRL_CMD _IOWR('X', 1, struct pkt_ctrl_command) ++#endif ++ ++#define MAJOR(dev) ((dev & 0xfff00) >> 8) ++#define MINOR(dev) ((dev & 0xff) | ((dev >> 12) & 0xfff00)) ++#define MKDEV(ma,mi) ((mi & 0xff) | (ma << 8) | ((mi & ~0xff) << 12)) ++ ++#define MISC_MAJOR 10 ++#define CTL_DIR "/dev/pktcdvd" ++#define CTL_DEV "control" ++ ++#define PKT_CTRL_CMD_SETUP 0 ++#define PKT_CTRL_CMD_TEARDOWN 1 ++#define PKT_CTRL_CMD_STATUS 2 ++ ++struct pkt_ctrl_command { ++ __u32 command; /* in: Setup, teardown, status */ ++ __u32 dev_index; /* in/out: Device index */ ++ __u32 dev; /* in/out: Device nr for cdrw device */ ++ __u32 pkt_dev; /* out: Device nr for packet device */ ++ __u32 num_devices; /* out: Largest device index + 1 */ ++ __u32 padding; ++}; ++ + +-int init_cdrom(int fd) ++static int init_cdrom(int fd) + { + if (ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) < 0) { + perror("drive not ready\n"); +@@ -54,7 +81,7 @@ int init_cdrom(int fd) + return 0; + } + +-void setup_dev(char *pkt_device, char *device, int rem) ++static void setup_dev(char *pkt_device, char *device, int rem) + { + int pkt_fd, dev_fd, cmd; + +@@ -88,29 +115,233 @@ void setup_dev(char *pkt_device, char *d + close(pkt_fd); + } + +-int usage(void) ++static int usage(void) + { +- printf("pktsetup /dev/pktcdvd0 /dev/cdrom\tsetup device\n"); +- printf("pktsetup -d /dev/pktcdvd0\t\ttear down device\n"); ++ printf("For pktcdvd < 0.2.0:\n"); ++ printf(" pktsetup /dev/pktcdvd0 /dev/cdrom setup device\n"); ++ printf(" pktsetup -d /dev/pktcdvd0 tear down device\n"); ++ printf("For pktcdvd >= 0.2.0:\n"); ++ printf(" pktsetup dev_name /dev/cdrom setup device\n"); ++ printf(" pktsetup -d dev_name tear down device\n"); ++ printf(" pktsetup -d major:minor tear down device\n"); ++ printf(" pktsetup -s show device mappings\n"); + return 1; + } + ++/* ++ * Find the minor device number for the pktcdvd control device. ++ */ ++static int get_misc_minor(void) ++{ ++ int minor; ++ char name[64]; ++ FILE *f; ++ ++ if ((f = fopen("/proc/misc", "r")) == NULL) ++ return -1; ++ while (fscanf(f, " %d %64s", &minor, name) == 2) { ++ if (strcmp(name, "pktcdvd") == 0) { ++ fclose(f); ++ return minor; ++ } ++ } ++ fclose(f); ++ return -1; ++} ++ ++static const char *pkt_dev_name(const char *dev) ++{ ++ static char buf[128]; ++ snprintf(buf, sizeof(buf), "%s/%s", CTL_DIR, dev); ++ return buf; ++} ++ ++static void create_ctl_dev(void) ++{ ++ int misc_minor; ++ struct stat stat_buf; ++ int dev; ++ ++ if ((misc_minor = get_misc_minor()) < 0) { ++ system("/sbin/modprobe pktcdvd"); ++ misc_minor = get_misc_minor(); ++ } ++ if (misc_minor < 0) { ++ fprintf(stderr, "Can't find pktcdvd character device\n"); ++ return; ++ } ++ dev = MKDEV(MISC_MAJOR, misc_minor); ++ ++ if ((stat(pkt_dev_name(CTL_DEV), &stat_buf) >= 0) && ++ S_ISCHR(stat_buf.st_mode) && (stat_buf.st_rdev == dev)) ++ return; /* Already set up */ ++ ++ mkdir(CTL_DIR, 0755); ++ unlink(pkt_dev_name(CTL_DEV)); ++ mknod(pkt_dev_name(CTL_DEV), S_IFCHR | 0644, dev); ++} ++ ++static int remove_stale_dev_node(int ctl_fd, char *devname) ++{ ++ struct stat stat_buf; ++ int i, dev; ++ struct pkt_ctrl_command c; ++ ++ if (stat(pkt_dev_name(devname), &stat_buf) < 0) ++ return 0; ++ if (!S_ISBLK(stat_buf.st_mode)) ++ return 1; ++ dev = stat_buf.st_rdev; ++ memset(&c, 0, sizeof(struct pkt_ctrl_command)); ++ for (i = 0; ; i++) { ++ c.command = PKT_CTRL_CMD_STATUS; ++ c.dev_index = i; ++ if (ioctl(ctl_fd, PACKET_CTRL_CMD, &c) < 0) { ++ perror("ioctl"); ++ return 1; ++ } ++ if (i >= c.num_devices) ++ break; ++ if (c.pkt_dev == dev) ++ return 1; /* busy */ ++ } ++ unlink(pkt_dev_name(devname)); ++ return 0; ++} ++ ++static void setup_dev_chardev(char *pkt_device, char *device, int rem) ++{ ++ struct pkt_ctrl_command c; ++ struct stat stat_buf; ++ int ctl_fd, dev_fd; ++ ++ memset(&c, 0, sizeof(struct pkt_ctrl_command)); ++ ++ create_ctl_dev(); ++ if ((ctl_fd = open(pkt_dev_name(CTL_DEV), O_RDONLY)) < 0) { ++ perror("ctl open"); ++ return; ++ } ++ ++ if (!rem) { ++ if ((dev_fd = open(device, O_RDONLY | O_NONBLOCK)) == -1) { ++ perror("open cd-rom"); ++ goto out_close; ++ } ++ if (init_cdrom(dev_fd)) { ++ close(dev_fd); ++ goto out_close; ++ } ++ close(dev_fd); ++ ++ if (stat(device, &stat_buf) < 0) { ++ perror("stat cd-rom"); ++ goto out_close; ++ } ++ if (!S_ISBLK(stat_buf.st_mode)) { ++ fprintf(stderr, "Not a block device\n"); ++ goto out_close; ++ } ++ c.command = PKT_CTRL_CMD_SETUP; ++ c.dev = stat_buf.st_rdev; ++ ++ if (remove_stale_dev_node(ctl_fd, pkt_device) != 0) { ++ fprintf(stderr, "Device node '%s' already in use\n", pkt_device); ++ goto out_close; ++ } ++ if (ioctl(ctl_fd, PACKET_CTRL_CMD, &c) < 0) { ++ perror("ioctl"); ++ goto out_close; ++ } ++ mknod(pkt_dev_name(pkt_device), S_IFBLK | 0640, c.pkt_dev); ++ } else { ++ int major, minor, remove_node; ++ ++ if ((stat(pkt_dev_name(pkt_device), &stat_buf) >= 0) && ++ S_ISBLK(stat_buf.st_mode)) { ++ major = MAJOR(stat_buf.st_rdev); ++ minor = MINOR(stat_buf.st_rdev); ++ remove_node = 1; ++ } else if (sscanf(pkt_device, "%d:%d", &major, &minor) == 2) { ++ remove_node = 0; ++ } else { ++ fprintf(stderr, "Can't find major/minor numbers\n"); ++ goto out_close; ++ } ++ ++ c.command = PKT_CTRL_CMD_TEARDOWN; ++ c.pkt_dev = MKDEV(major, minor); ++ if (ioctl(ctl_fd, PACKET_CTRL_CMD, &c) < 0) { ++ perror("ioctl"); ++ goto out_close; ++ } ++ if (remove_node) ++ unlink(pkt_dev_name(pkt_device)); ++ } ++ ++out_close: ++ close(ctl_fd); ++} ++ ++static void show_mappings(void) ++{ ++ struct pkt_ctrl_command c; ++ int ctl_fd, i; ++ ++ memset(&c, 0, sizeof(struct pkt_ctrl_command)); ++ ++ create_ctl_dev(); ++ if ((ctl_fd = open(pkt_dev_name(CTL_DEV), O_RDONLY)) < 0) { ++ perror("ctl open"); ++ return; ++ } ++ ++ for (i = 0; ; i++) { ++ c.command = PKT_CTRL_CMD_STATUS; ++ c.dev_index = i; ++ if (ioctl(ctl_fd, PACKET_CTRL_CMD, &c) < 0) { ++ perror("ioctl"); ++ goto out_close; ++ } ++ if (i >= c.num_devices) ++ break; ++ if (c.dev) { ++ printf("%2d : %d:%d -> %d:%d\n", ++ i, MAJOR(c.pkt_dev), MINOR(c.pkt_dev), ++ MAJOR(c.dev), MINOR(c.dev)); ++ } ++ } ++ ++out_close: ++ close(ctl_fd); ++} ++ + int main(int argc, char **argv) + { + int rem = 0, c; ++ char *pkt_device; ++ char *device; + + if (argc == 1) + return usage(); + +- while ((c = getopt(argc, argv, "d")) != EOF) { ++ while ((c = getopt(argc, argv, "ds?")) != EOF) { + switch (c) { + case 'd': + rem = 1; + break; ++ case 's': ++ show_mappings(); ++ return 0; + default: + return usage(); + } + } +- setup_dev(argv[optind], argv[optind + 1], rem); ++ pkt_device = argv[optind]; ++ device = argv[optind + 1]; ++ if (strchr(pkt_device, '/')) ++ setup_dev(pkt_device, device, rem); ++ else ++ setup_dev_chardev(pkt_device, device, rem); + return 0; + } +_ + +-- +Peter Osterlund - petero2@telia.com +http://w1.894.telia.com/~u89404340 diff --git a/udftools-1.0.0b3-staticanal.patch b/udftools-1.0.0b3-staticanal.patch new file mode 100644 index 0000000..e9a7375 --- /dev/null +++ b/udftools-1.0.0b3-staticanal.patch @@ -0,0 +1,160 @@ +Error: CONSTANT_EXPRESSION_RESULT: +/builddir/build/BUILD/udftools-1.0.0b3/cdrwtool/cdrwtool.c:626: result_independent_of_operands: (ret == ioctl(fd, 21289, 1)) < 0 is always false regardless of the values of its operands. This occurs as the logical operand of if. + +Possible buffer overflow of static allocated variable "device". + +diff -up udftools-1.0.0b3/cdrwtool/cdrwtool.c.staticanal udftools-1.0.0b3/cdrwtool/cdrwtool.c +--- udftools-1.0.0b3/cdrwtool/cdrwtool.c.staticanal 2012-01-26 16:20:44.518234366 +0100 ++++ udftools-1.0.0b3/cdrwtool/cdrwtool.c 2012-01-26 16:20:44.537234366 +0100 +@@ -623,7 +623,7 @@ int cdrom_open_check(int fd) + if ((ret = ioctl(fd, CDROM_CLEAR_OPTIONS, CDO_LOCK)) < 0) + return ret; + +- if ((ret == ioctl(fd, CDROM_LOCKDOOR, 1)) < 0) { ++ if ((ret = ioctl(fd, CDROM_LOCKDOOR, 1)) < 0) { + fprintf(stderr, "CD-ROM appears to already be opened\n"); + return 1; + } +diff -up udftools-1.0.0b3/cdrwtool/options.c.staticanal udftools-1.0.0b3/cdrwtool/options.c +--- udftools-1.0.0b3/cdrwtool/options.c.staticanal 2012-01-26 16:26:11.288212023 +0100 ++++ udftools-1.0.0b3/cdrwtool/options.c 2012-01-26 16:27:24.125207040 +0100 +@@ -135,7 +135,8 @@ void parse_args(int argc, char *argv[], + } + case 'd': + { +- strcpy(device, optarg); ++ strncpy(device, optarg, NAME_MAX-1); ++ device[NAME_MAX-1] = '\0'; + printf("using device %s\n", device); + break; + } + + +========================================================================== +Error: NEGATIVE_RETURNS: +/builddir/build/BUILD/udftools-1.0.0b3/mkudffs/main.c:161: negative_return_fn: Function "open64(filename, 66, 432)" returns a negative number. +/builddir/build/BUILD/udftools-1.0.0b3/mkudffs/main.c:161: var_assign: Assigning: signed variable "fd" = "open64". +/builddir/build/BUILD/udftools-1.0.0b3/mkudffs/main.c:165: negative_returns: "fd" is passed to a parameter that cannot be negative. +/builddir/build/BUILD/udftools-1.0.0b3/mkudffs/main.c:85: neg_sink_parm_call: Passing "fd" to "valid_offset", which cannot accept a negative. +/builddir/build/BUILD/udftools-1.0.0b3/mkudffs/main.c:55: neg_sink_parm_call: Passing "fd" to "udf_lseek64", which cannot accept a negative. +/builddir/build/BUILD/udftools-1.0.0b3/mkudffs/main.c:43: neg_sink_parm_call: Passing "fd" to "lseek64", which cannot accept a negative. + +diff -up udftools-1.0.0b3/mkudffs/main.c.staticanal udftools-1.0.0b3/mkudffs/main.c +--- udftools-1.0.0b3/mkudffs/main.c.staticanal 2004-02-23 04:33:11.000000000 +0100 ++++ udftools-1.0.0b3/mkudffs/main.c 2012-01-26 16:29:17.605199282 +0100 +@@ -162,6 +162,10 @@ int main(int argc, char *argv[]) + #else + fd = open(filename, O_RDWR | O_CREAT | O_LARGEFILE, 0660); + #endif ++ if (fd == NULL) { ++ fprintf(stderr, "mkudffs: cannot open '%s' for writing\n", filename); ++ exit(1); ++ } + disc.head->blocks = get_blocks(fd, disc.blocksize, disc.head->blocks); + disc.write = write_func; + disc.write_data = &fd; + + +========================================================================== +Error: BAD_SIZEOF: +/builddir/build/BUILD/udftools-1.0.0b3/mkudffs/mkudffs.c:45: bad_sizeof: Taking the size of pointer parameter "disc" is suspicious. + +Possible buffer overflow of static allocated variable "device". + +diff -up udftools-1.0.0b3/mkudffs/mkudffs.c.staticanal udftools-1.0.0b3/mkudffs/mkudffs.c +--- udftools-1.0.0b3/mkudffs/mkudffs.c.staticanal 2012-01-26 16:20:44.526234367 +0100 ++++ udftools-1.0.0b3/mkudffs/mkudffs.c 2012-01-26 16:20:44.539234366 +0100 +@@ -42,7 +42,7 @@ void udf_init_disc(struct udf_disc *disc + struct tm *tm; + int altzone; + +- memset(disc, 0x00, sizeof(disc)); ++ memset(disc, 0x00, sizeof(*disc)); + + disc->blocksize = 2048; + disc->blocksize_bits = 11; +diff -up udftools-1.0.0b3/mkudffs/options.c.staticanal udftools-1.0.0b3/mkudffs/options.c +--- udftools-1.0.0b3/mkudffs/options.c.staticanal 2012-01-26 16:24:14.082220036 +0100 ++++ udftools-1.0.0b3/mkudffs/options.c 2012-01-26 16:27:29.086206703 +0100 +@@ -320,7 +320,8 @@ void parse_args(int argc, char *argv[], + } + if (optind == argc) + usage(); +- strcpy(device, argv[optind]); ++ strncpy(device, argv[optind], NAME_MAX-1); ++ device[NAME_MAX-1] = '\0'; + optind ++; + if (optind < argc) + disc->head->blocks = strtoul(argv[optind++], NULL, 0); + + +========================================================================== +Error: OVERRUN_STATIC: +/builddir/build/BUILD/udftools-1.0.0b3/wrudf/wrudf-cdrw.c:378: overrun-local: Overrunning static array "spm->locSparingTable", with 4 elements, at position 4 with index variable "i". + +Error: NEGATIVE_RETURNS: +/builddir/build/BUILD/udftools-1.0.0b3/wrudf/wrudf-cdrw.c:769: negative_return_fn: Function "open(filename, 2)" returns a negative number. +/builddir/build/BUILD/udftools-1.0.0b3/wrudf/wrudf-cdrw.c:769: var_assign: Assigning: signed variable "device" = "open". +/builddir/build/BUILD/udftools-1.0.0b3/wrudf/wrudf-cdrw.c:773: negative_returns: "device" is passed to a parameter that cannot be negative. + +diff -up udftools-1.0.0b3/wrudf/wrudf-cdrw.c.staticanal udftools-1.0.0b3/wrudf/wrudf-cdrw.c +--- udftools-1.0.0b3/wrudf/wrudf-cdrw.c.staticanal 2012-01-26 16:20:44.529234367 +0100 ++++ udftools-1.0.0b3/wrudf/wrudf-cdrw.c 2012-01-26 16:35:29.729173836 +0100 +@@ -374,7 +374,7 @@ void updateSparingTable() { + struct packetbuf *pb; + struct sparablePartitionMap *spm = (struct sparablePartitionMap*)lvd->partitionMaps; + +- for( i = 0; i <= 4; i++ ) { ++ for( i = 0; i < sizeof(spm->locSparingTable); i++ ) { + pbn = spm->locSparingTable[i]; + if( pbn == 0 ) + return; +@@ -682,6 +682,8 @@ readExtents(char* dest, int usesShort, v + dest += 2048; + if( len < 2048 ) + break; ++ /* dead code, len couldn't be 0 at this point ++ (break was called in this case) */ + if( len == 0 ) { + if( usesShort ) { + sh++; +@@ -766,8 +768,10 @@ initIO(char *filename) + + if( S_ISREG(filestat.st_mode) ) { /* disk image of a UDF volume */ + devicetype = DISK_IMAGE; +- if( !(device = open(filename, O_RDWR)) ) ++ if( !(device = open(filename, O_RDWR)) ) { + fail("initIO: open %s failed\n", filename); ++ return 0; ++ } + + /* heuristically determine medium imitated on disk image based on VAT FileEntry in block 512 */ + rv = lseek(device, 2048 * 512, SEEK_SET); + +========================================================================== +Error: CONSTANT_EXPRESSION_RESULT: +/builddir/build/BUILD/udftools-1.0.0b3/wrudf/wrudf-cmnd.c:699: missing_parentheses: !(*fid)->fileCharacteristics & 2 is always 0 regardless of the values of its operands. This occurs as the logical operand of if. Did you intend to apply '&' to (*fid)->fileCharacteristics and 2? If so, parentheses would be required to force this interpretation. + +diff -up udftools-1.0.0b3/wrudf/wrudf-cmnd.c.staticanal udftools-1.0.0b3/wrudf/wrudf-cmnd.c +--- udftools-1.0.0b3/wrudf/wrudf-cmnd.c.staticanal 2012-01-26 16:20:44.530234366 +0100 ++++ udftools-1.0.0b3/wrudf/wrudf-cmnd.c 2012-01-26 16:20:44.543234366 +0100 +@@ -696,7 +696,7 @@ analyzeDest(char* arg, struct fileIdentD + *fid = findFileIdentDesc(curDir, comp); + if( *fid == NULL ) + return DIR_INVALID; +- if( ! (*fid)->fileCharacteristics & FID_FILE_CHAR_DIRECTORY ) ++ if( ! ((*fid)->fileCharacteristics & FID_FILE_CHAR_DIRECTORY )) + return DIR_INVALID; + if( (*fid)->fileCharacteristics & FID_FILE_CHAR_DELETED ) + return DIR_INVALID; +diff -up udftools-1.0.0b3/wrudf/wrudf.c.staticanal udftools-1.0.0b3/wrudf/wrudf.c +--- udftools-1.0.0b3/wrudf/wrudf.c.staticanal 2012-01-26 16:20:44.528234367 +0100 ++++ udftools-1.0.0b3/wrudf/wrudf.c 2012-01-26 16:20:44.545234365 +0100 +@@ -158,6 +158,7 @@ initialise(char *devicename) + + if( (p = readTaggedBlock(blkno, ABSOLUTE)) == NULL ) { + if( !inMainSeq ) ++ /* dead code - the condition "inMainSeq" cannot be false */ + fail("Volume Descriptor Sequences read failure\n"); + blkno = extentRsrvVolDescSeq.extLocation; + len = extentRsrvVolDescSeq.extLength; diff --git a/udftools-1.0.0b3-warningfixes.patch b/udftools-1.0.0b3-warningfixes.patch new file mode 100644 index 0000000..5f83597 --- /dev/null +++ b/udftools-1.0.0b3-warningfixes.patch @@ -0,0 +1,90 @@ +diff -Naupr udftools-1.0.0b3.orig/cdrwtool/cdrwtool.h udftools-1.0.0b3/cdrwtool/cdrwtool.h +--- udftools-1.0.0b3.orig/cdrwtool/cdrwtool.h 2002-11-26 08:18:50.000000000 +0100 ++++ udftools-1.0.0b3/cdrwtool/cdrwtool.h 2006-07-27 14:16:06.000000000 +0200 +@@ -226,6 +226,7 @@ int read_disc_info(int, disc_info_t *); + int read_track_info(int, track_info_t *, int); + int reserve_track(int, struct cdrw_disc *); + int close_track(int, unsigned int); ++int close_session(int, unsigned int); + int read_buffer_cap(int, struct cdrw_disc *); + int set_cd_speed(int, int); + void cdrom_close(int); +@@ -236,5 +237,6 @@ int print_disc_track_info(int); + void make_write_page(write_params_t *, struct cdrw_disc *); + void print_params(write_params_t *); + void cdrw_init_disc(struct cdrw_disc *); ++int udf_set_version(struct udf_disc *, int); + + #endif /* _CDRWTOOL_H */ +diff -Naupr udftools-1.0.0b3.orig/include/udf_endian.h udftools-1.0.0b3/include/udf_endian.h +--- udftools-1.0.0b3.orig/include/udf_endian.h 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3/include/udf_endian.h 2006-07-27 14:09:30.000000000 +0200 +@@ -23,6 +23,8 @@ + #ifndef __UDF_ENDIAN_H + #define __UDF_ENDIAN_H + ++#include ++ + #include "bswap.h" + + static inline lb_addr lelb_to_cpu(lb_addr in) +diff -Naupr udftools-1.0.0b3.orig/libudffs/unicode.c udftools-1.0.0b3/libudffs/unicode.c +--- udftools-1.0.0b3.orig/libudffs/unicode.c 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3/libudffs/unicode.c 2006-07-27 14:11:17.000000000 +0200 +@@ -169,8 +169,6 @@ error_out: + + int decode_string(struct udf_disc *disc, char *in, char *out, int inlen) + { +- int i; +- + if (disc->flags & FLAG_UTF8) + return decode_utf8(in, out, inlen); + else if (disc->flags & (FLAG_UNICODE8 | FLAG_UNICODE16)) +diff -Naupr udftools-1.0.0b3.orig/pktsetup/pktsetup.c udftools-1.0.0b3/pktsetup/pktsetup.c +--- udftools-1.0.0b3.orig/pktsetup/pktsetup.c 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3/pktsetup/pktsetup.c 2006-07-27 14:18:24.000000000 +0200 +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + #include + +diff -Naupr udftools-1.0.0b3.orig/wrudf/Makefile.am udftools-1.0.0b3/wrudf/Makefile.am +--- udftools-1.0.0b3.orig/wrudf/Makefile.am 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3/wrudf/Makefile.am 2006-07-27 14:21:24.000000000 +0200 +@@ -1,5 +1,5 @@ + bin_PROGRAMS = wrudf + wrudf_LDADD = $(top_builddir)/libudffs/libudffs.la -lreadline -lncurses +-wrudf_SOURCES = wrudf.c wrudf-cmnd.c wrudf-desc.c wrudf-cdrw.c wrudf-cdr.c ide-pc.c wrudf.h ide-pc.h ../include/ecma_167.h ../include/osta_udf.h ../include/bswap.h ++wrudf_SOURCES = wrudf.c wrudf-cmnd.c wrudf-desc.c wrudf-cdrw.c wrudf-cdr.c ide-pc.c wrudf.h ide-pc.h ../include/ecma_167.h ../include/osta_udf.h ../include/bswap.h ../include/libudffs.h + + AM_CPPFLAGS = -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DDEBUG +diff -Naupr udftools-1.0.0b3.orig/wrudf/Makefile.in udftools-1.0.0b3/wrudf/Makefile.in +--- udftools-1.0.0b3.orig/wrudf/Makefile.in 2004-02-23 10:33:48.000000000 +0100 ++++ udftools-1.0.0b3/wrudf/Makefile.in 2006-07-27 14:21:44.000000000 +0200 +@@ -85,7 +85,7 @@ am__quote = @am__quote@ + install_sh = @install_sh@ + bin_PROGRAMS = wrudf + wrudf_LDADD = $(top_builddir)/libudffs/libudffs.la -lreadline -lncurses +-wrudf_SOURCES = wrudf.c wrudf-cmnd.c wrudf-desc.c wrudf-cdrw.c wrudf-cdr.c ide-pc.c wrudf.h ide-pc.h ../include/ecma_167.h ../include/osta_udf.h ../include/bswap.h ++wrudf_SOURCES = wrudf.c wrudf-cmnd.c wrudf-desc.c wrudf-cdrw.c wrudf-cdr.c ide-pc.c wrudf.h ide-pc.h ../include/ecma_167.h ../include/osta_udf.h ../include/bswap.h ../include/libudffs.h + + AM_CPPFLAGS = -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DDEBUG + subdir = wrudf +diff -Naupr udftools-1.0.0b3.orig/wrudf/wrudf.h udftools-1.0.0b3/wrudf/wrudf.h +--- udftools-1.0.0b3.orig/wrudf/wrudf.h 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3/wrudf/wrudf.h 2006-07-27 14:22:33.000000000 +0200 +@@ -23,9 +23,11 @@ + #include + #include + #include ++#include + + #include "ecma_167.h" + #include "osta_udf.h" ++#include "libudffs.h" + + struct generic_desc + { diff --git a/udftools-1.0.0b3-warningfixes2.patch b/udftools-1.0.0b3-warningfixes2.patch new file mode 100644 index 0000000..2a2e68f --- /dev/null +++ b/udftools-1.0.0b3-warningfixes2.patch @@ -0,0 +1,218 @@ +Nur in udftools-1.0.0b3-new/cdrwtool: cdrwtool. +Nur in udftools-1.0.0b3-new/cdrwtool: cdrwtool.o. +Nur in udftools-1.0.0b3-new/cdrwtool: defaults.o. +Nur in udftools-1.0.0b3-new/cdrwtool: .deps. +Nur in udftools-1.0.0b3-new/cdrwtool: .libs. +Nur in udftools-1.0.0b3-new/cdrwtool: main.o. +Nur in udftools-1.0.0b3-new/cdrwtool: Makefile. +Nur in udftools-1.0.0b3-new/cdrwtool: mkudffs.o. +Nur in udftools-1.0.0b3-new/cdrwtool: options.o. +Nur in udftools-1.0.0b3-new: config.log. +Nur in udftools-1.0.0b3-new: config.status. +Nur in udftools-1.0.0b3-new: debugfiles.list. +Nur in udftools-1.0.0b3-new: debuglinks.list. +Nur in udftools-1.0.0b3-new: debugsources.list. +Nur in udftools-1.0.0b3-new/doc: Makefile. +Nur in udftools-1.0.0b3-new/include: config.h. +Nur in udftools-1.0.0b3-new/include: stamp-h1. +Nur in udftools-1.0.0b3-new: libtool. +Nur in udftools-1.0.0b3-new/libudffs: crc.lo. +Nur in udftools-1.0.0b3-new/libudffs: crc.o. +Nur in udftools-1.0.0b3-new/libudffs: .deps. +Nur in udftools-1.0.0b3-new/libudffs: desc.lo. +Nur in udftools-1.0.0b3-new/libudffs: desc.o. +Nur in udftools-1.0.0b3-new/libudffs: extent.lo. +Nur in udftools-1.0.0b3-new/libudffs: extent.o. +diff -ur udftools-1.0.0b3/libudffs/file.c udftools-1.0.0b3-new/libudffs/file.c +--- udftools-1.0.0b3/libudffs/file.c 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3-new/libudffs/file.c 2007-08-23 14:02:07.000000000 +0200 +@@ -576,7 +576,7 @@ + tmp = leBPL_to_cpup(p); + found_first: + tmp |= (~0UL << size); +- if (tmp == ~0UL) /* Are any bits zero? */ ++ if (tmp == (uintBPL)~0UL) /* Are any bits zero? */ + return result + size; /* Nope. */ + found_middle: + return result + ffz(tmp); +Nur in udftools-1.0.0b3-new/libudffs: file.lo. +Nur in udftools-1.0.0b3-new/libudffs: file.o. +Nur in udftools-1.0.0b3-new/libudffs: .libs. +Nur in udftools-1.0.0b3-new/libudffs: libudffs.la. +Nur in udftools-1.0.0b3-new/libudffs: Makefile. +Nur in udftools-1.0.0b3-new/libudffs: unicode.lo. +Nur in udftools-1.0.0b3-new/libudffs: unicode.o. +Nur in udftools-1.0.0b3-new: Makefile. +Nur in udftools-1.0.0b3-new/mkudffs: defaults.o. +Nur in udftools-1.0.0b3-new/mkudffs: .deps. +Nur in udftools-1.0.0b3-new/mkudffs: .libs. +Nur in udftools-1.0.0b3-new/mkudffs: main.o. +Nur in udftools-1.0.0b3-new/mkudffs: Makefile. +Nur in udftools-1.0.0b3-new/mkudffs: mkudffs. +diff -ur udftools-1.0.0b3/mkudffs/mkudffs.c udftools-1.0.0b3-new/mkudffs/mkudffs.c +--- udftools-1.0.0b3/mkudffs/mkudffs.c 2007-08-23 14:32:38.000000000 +0200 ++++ udftools-1.0.0b3-new/mkudffs/mkudffs.c 2007-08-23 14:14:42.000000000 +0200 +@@ -72,7 +72,7 @@ + disc->udf_pvd[0] = malloc(sizeof(struct primaryVolDesc)); + memcpy(disc->udf_pvd[0], &default_pvd, sizeof(struct primaryVolDesc)); + memcpy(&disc->udf_pvd[0]->recordingDateAndTime, &ts, sizeof(timestamp)); +- sprintf(&disc->udf_pvd[0]->volSetIdent[1], "%08lx%s", ++ sprintf((char *)&disc->udf_pvd[0]->volSetIdent[1], "%08lx%s", + mktime(tm), &disc->udf_pvd[0]->volSetIdent[9]); + disc->udf_pvd[0]->volIdent[31] = strlen(disc->udf_pvd[0]->volIdent); + disc->udf_pvd[0]->volSetIdent[127] = strlen(disc->udf_pvd[0]->volSetIdent); +@@ -289,7 +289,7 @@ + int write_disc(struct udf_disc *disc) + { + struct udf_extent *start_ext; +- int ret; ++ int ret=0; + + start_ext = disc->head; + +@@ -299,6 +299,7 @@ + return ret; + start_ext = start_ext->next; + } ++ return ret; + } + + void setup_vrs(struct udf_disc *disc) +@@ -450,7 +451,7 @@ + struct unallocSpaceEntry *use; + short_ad *sad; + int max = (0x3FFFFFFF / disc->blocksize) * disc->blocksize; +- int pos; ++ int pos=0; + long long rem; + + if (disc->flags & FLAG_STRATEGY4096) +Nur in udftools-1.0.0b3-new/mkudffs: mkudffs.o. +Nur in udftools-1.0.0b3-new/mkudffs: options.o. +Nur in udftools-1.0.0b3-new/pktsetup: .deps. +Nur in udftools-1.0.0b3-new/pktsetup: .libs. +Nur in udftools-1.0.0b3-new/pktsetup: Makefile. +Nur in udftools-1.0.0b3-new/pktsetup: pktsetup. +Nur in udftools-1.0.0b3-new/pktsetup: pktsetup.o. +Nur in udftools-1.0.0b3-new/udfct: Makefile. +Nur in udftools-1.0.0b3-new/udffsck: .deps. +Nur in udftools-1.0.0b3-new/udffsck: .libs. +Nur in udftools-1.0.0b3-new/udffsck: main.o. +Nur in udftools-1.0.0b3-new/udffsck: Makefile. +Nur in udftools-1.0.0b3-new/udffsck: udffsck. +Nur in udftools-1.0.0b3-new/wrudf: .deps. +diff -ur udftools-1.0.0b3/wrudf/ide-pc.c udftools-1.0.0b3-new/wrudf/ide-pc.c +--- udftools-1.0.0b3/wrudf/ide-pc.c 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3-new/wrudf/ide-pc.c 2007-08-23 14:32:09.000000000 +0200 +@@ -31,6 +31,7 @@ + #include /* for u_char etc. */ + #include + #include /* sleep() */ ++#include + + #include "bswap.h" + #include "ide-pc.h" +Nur in udftools-1.0.0b3-new/wrudf: ide-pc.o. +Nur in udftools-1.0.0b3-new/wrudf: .libs. +Nur in udftools-1.0.0b3-new/wrudf: Makefile. +Nur in udftools-1.0.0b3-new/wrudf: wrudf. +diff -ur udftools-1.0.0b3/wrudf/wrudf.c udftools-1.0.0b3-new/wrudf/wrudf.c +--- udftools-1.0.0b3/wrudf/wrudf.c 2007-08-23 14:32:38.000000000 +0200 ++++ udftools-1.0.0b3-new/wrudf/wrudf.c 2007-08-23 14:26:41.000000000 +0200 +@@ -245,7 +245,7 @@ + } else if( strncmp( spm->partIdent.ident, UDF_ID_VIRTUAL, strlen(UDF_ID_VIRTUAL)) == 0 ) + virtualPartitionNum = i; + } +- spm = (char*)spm + spm->partitionMapLength; ++ spm = (struct sparablePartitionMap*)((char*)spm + spm->partitionMapLength); + } + + if( medium == CDR ) { +@@ -300,7 +300,7 @@ + fail("SpaceBitmap not found\n"); + } + +- if (fsdLen = decode_utf8(fsd->fileSetIdent, fsdOut, fsd->fileSetIdent[31])) ++ if ((fsdLen = decode_utf8(fsd->fileSetIdent, fsdOut, fsd->fileSetIdent[31]))>=0) + fsdOut[fsdLen] = '\0'; + + printf("You are going to update fileset '%s'\nProceed (y/N) : ", &fsdOut[1]); +@@ -605,7 +605,7 @@ + int + main(int argc, char** argv) + { +- int rv; ++ int rv=0; + int cmnd; + char prompt[256]; + Directory *d; +Nur in udftools-1.0.0b3-new/wrudf: wrudf-cdr.o. +diff -ur udftools-1.0.0b3/wrudf/wrudf-cdrw.c udftools-1.0.0b3-new/wrudf/wrudf-cdrw.c +--- udftools-1.0.0b3/wrudf/wrudf-cdrw.c 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3-new/wrudf/wrudf-cdrw.c 2007-08-23 14:30:14.000000000 +0200 +@@ -614,7 +614,6 @@ + readTaggedBlock(uint32_t lbn, uint16_t partition) + { + int i; +- uint32_t blkno; + uint8_t sum, *p; + struct generic_desc *block; + +@@ -634,7 +633,7 @@ + if( strncmp(((struct sparingTable*)block)->sparingIdent.ident, UDF_ID_SPARING, strlen(UDF_ID_SPARING)) != 0 ) { + for( i = 0; i < 2048; i++ ) { + if( ((uint8_t*)block)[i] != 0 ) { +- printf("readTaggedBlock: Empty block %d not all zeroes\n", blkno); ++ printf("readTaggedBlock: Empty block %d not all zeroes\n", lbn); + break; + } + } +@@ -647,10 +646,10 @@ + sum += *(p + i); + + if( block->descTag.tagChecksum != sum ) +- fail("readTagged: Checksum error in block %d\n", blkno); ++ fail("readTagged: Checksum error in block %d\n", lbn); + + if( block->descTag.descCRC != udf_crc((uint8_t*)block + sizeof(tag), ((tag*)block)->descCRCLength, 0) ) +- fail("readTagged: CRC error in block %d\n", blkno); ++ fail("readTagged: CRC error in block %d\n", lbn); + + return block; + } +@@ -709,8 +708,8 @@ + writeExtents(char* src, int usesShort, void* extents) + { + uint len, blkno, partitionNumber; +- long_ad *lo; +- short_ad *sh; ++ long_ad *lo=NULL; ++ short_ad *sh=NULL; + + if( usesShort ) { + sh = (short_ad*) extents; +Nur in udftools-1.0.0b3-new/wrudf: wrudf-cdrw.o. +diff -ur udftools-1.0.0b3/wrudf/wrudf-cmnd.c udftools-1.0.0b3-new/wrudf/wrudf-cmnd.c +--- udftools-1.0.0b3/wrudf/wrudf-cmnd.c 2002-11-26 08:18:51.000000000 +0100 ++++ udftools-1.0.0b3-new/wrudf/wrudf-cmnd.c 2007-08-23 14:22:41.000000000 +0200 +@@ -45,7 +45,7 @@ + int + copyFile(Directory *dir, char* inName, char*newName, struct stat *fileStat) + { +- int fd, i, blkno; ++ int fd, i=0, blkno; + uint32_t nBytes, blkInPkt; + uint32_t maxVarPktSize; // in bytes + struct fileIdentDesc *fid; +@@ -54,7 +54,7 @@ + + fd = open(inName, O_RDONLY); + if( fd == 0 ) { +- printf("'%s' does not exist\n", cmndv[i]); ++ printf("'%s' does not exist\n", inName); + return CMND_FAILED; + } + +Nur in udftools-1.0.0b3-new/wrudf: wrudf-cmnd.o. +Nur in udftools-1.0.0b3-new/wrudf: wrudf-desc.o. +Nur in udftools-1.0.0b3-new/wrudf: wrudf.o. diff --git a/udftools-1.0.0b3-wrudf-gcc4.patch b/udftools-1.0.0b3-wrudf-gcc4.patch new file mode 100644 index 0000000..1369012 --- /dev/null +++ b/udftools-1.0.0b3-wrudf-gcc4.patch @@ -0,0 +1,53 @@ +Subject: Bug#288621: udftools: FTBFS (amd64/gcc-4.0): invalid lvalue in assignment +From: Andreas Jochens +Message-Id: +Date: Tue, 04 Jan 2005 19:29:01 +0100 +Lines: 59 + +Package: udftools +Severity: normal +Tags: patch + +When building 'udftools' on amd64 with gcc-4.0, +I get the following error: + +wrudf.c:119: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness +wrudf.c:119: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness +wrudf.c:119: warning: pointer targets in passing argument 1 of 'strcmp' differ in signedness +wrudf.c:119: warning: pointer targets in passing argument 1 of 'strncmp' differ in signedness +wrudf.c:230: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness +wrudf.c:230: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness +wrudf.c:230: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness +wrudf.c:230: warning: pointer targets in passing argument 1 of 'strcmp' differ in signedness +wrudf.c:230: warning: pointer targets in passing argument 1 of 'strncmp' differ in signedness +wrudf.c:245: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness +wrudf.c:245: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness +wrudf.c:245: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness +wrudf.c:245: warning: pointer targets in passing argument 1 of 'strcmp' differ in signedness +wrudf.c:245: warning: pointer targets in passing argument 1 of 'strncmp' differ in signedness +wrudf.c:248: error: invalid lvalue in assignment +make[2]: *** [wrudf.o] Error 1 +make[2]: Leaving directory `/udftools-1.0.0b3/wrudf' + +With the attached patch 'udftools' can be compiled +on amd64 using gcc-4.0. + +The patch also changes the Build-Depends from 'libreadline4-dev' +to 'libreadline5-dev'. + +Regards +Andreas Jochens + +diff -urN ../tmp-orig/udftools-1.0.0b3/wrudf/wrudf.c ./wrudf/wrudf.c +--- ../tmp-orig/udftools-1.0.0b3/wrudf/wrudf.c 2002-11-26 08:18:51.000000000 +0100 ++++ ./wrudf/wrudf.c 2005-01-04 16:56:49.394078200 +0100 +@@ -245,7 +245,7 @@ + } else if( strncmp( spm->partIdent.ident, UDF_ID_VIRTUAL, strlen(UDF_ID_VIRTUAL)) == 0 ) + virtualPartitionNum = i; + } +- (char*)spm += spm->partitionMapLength; ++ spm = (char*)spm + spm->partitionMapLength; + } + + if( medium == CDR ) { +diff -urN ../tmp-orig/udftools-1.0.0b3/debian/control ./debian/control diff --git a/udftools-1.0.0b3-wrudf_help.patch b/udftools-1.0.0b3-wrudf_help.patch new file mode 100644 index 0000000..40e0ec9 --- /dev/null +++ b/udftools-1.0.0b3-wrudf_help.patch @@ -0,0 +1,48 @@ +diff -up wrk/wrudf/wrudf.c.wrk wrk/wrudf/wrudf.c +--- wrk/wrudf/wrudf.c.wrk 2013-04-15 15:32:03.395528452 +0200 ++++ wrk/wrudf/wrudf.c 2013-04-15 16:06:37.535546730 +0200 +@@ -603,6 +603,28 @@ parseCmnd(char* line) + return cmnd; + } + ++int show_help() ++{ ++ char *msg = ++ "Interactive tool to maintain an UDF filesystem.\n" ++ "Usage:\n" ++ "\twrudf [device]\n" ++ "Available commands:\n" ++ "\tcp\n" ++ "\trm\n" ++ "\tmkdir\n" ++ "\trmdir\n" ++ "\tlsc\n" ++ "\tlsh\n" ++ "\tcdc\n" ++ "\tcdh\n" ++ "Specify cdh/lsh or cdc/lsc to do cd or ls for Harddisk or CompactDisc.\n" ++ "\tquit\n" ++ "\texit\n"; ++ printf("%s", msg); ++ return 0; ++} ++ + int + main(int argc, char** argv) + { +@@ -614,8 +636,14 @@ main(int argc, char** argv) + printf("wrudf " WRUDF_VERSION "\n"); + devicename= "/dev/cdrom"; + +- if(argc > 1 ) ++ if(argc > 1 ) { ++ if (strcmp(argv[1], "-h")==0 || strcmp(argv[1], "-help")==0 || strcmp(argv[1], "--help")==0) { ++ return show_help(); ++ } ++ } ++ else { + devicename = argv[1]; /* can specify disk image filename */ ++ } + + if( setpriority(PRIO_PROCESS, 0, -10) ) { + printf("setpriority(): %m\n"); diff --git a/udftools-2.3-backported_fixes.patch b/udftools-2.3-backported_fixes.patch deleted file mode 100644 index 94be4b3..0000000 --- a/udftools-2.3-backported_fixes.patch +++ /dev/null @@ -1,357 +0,0 @@ -From 5905cc991fa466239fba4b6cd7f9f3bda5a87641 Mon Sep 17 00:00:00 2001 -From: Zhang Sheng -Date: Wed, 24 Mar 2021 13:50:05 +0800 -Subject: [PATCH] libudffs: Fix misspelling - ---- - libudffs/extent.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libudffs/extent.c b/libudffs/extent.c -index 827d2b7..382962e 100644 ---- a/libudffs/extent.c -+++ b/libudffs/extent.c -@@ -449,7 +449,7 @@ struct udf_desc *find_desc(struct udf_extent *ext, uint32_t offset) - /** - * @brief allocate a new udf_descriptor having a udf_data item and insert it - * into the udf_descriptor list of a udf_extent ordered by block number -- * @oaram ext the udf_extent containing the udf_descriptor list head -+ * @param ext the udf_extent containing the udf_descriptor list head - * @param ident the tag ident of the new udf_descriptor - * @param offset the first block the new descriptor describes - * @param length the length of the udf_data item payload in bytes - -From 0d92ec4627e9921c4d8fa6f9db2ec584d5c8e3ad Mon Sep 17 00:00:00 2001 -From: Zhang Sheng -Date: Thu, 1 Apr 2021 21:15:16 +0800 -Subject: [PATCH] wrudf: Fix incorrect return value checking for `lseek` - ---- - wrudf/wrudf-cdrw.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/wrudf/wrudf-cdrw.c b/wrudf/wrudf-cdrw.c -index 7e4391e..569c578 100644 ---- a/wrudf/wrudf-cdrw.c -+++ b/wrudf/wrudf-cdrw.c -@@ -583,7 +583,7 @@ readSingleBlock(uint32_t pbn) - return blockBuffer; - } else { - off = lseek(device, 2048 * pbn, SEEK_SET); -- if( off != (off_t)-1 ) -+ if( off == (off_t)-1 ) - return NULL; - len = read(device, blockBuffer, 2048); - if( len != 2048 ) - -From 6063117955e96f2acd4425dade79fa1428a6cced Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 20 Apr 2021 00:13:03 +0200 -Subject: [PATCH] bswap: Fix typo - ---- - include/bswap.h | 96 ++++++++++++++++++++++++------------------------- - 1 file changed, 48 insertions(+), 48 deletions(-) - -diff --git a/include/bswap.h b/include/bswap.h -index 8cfc7ff..e436903 100644 ---- a/include/bswap.h -+++ b/include/bswap.h -@@ -28,17 +28,17 @@ - #include - #include - --#define constant_swab16(x) \ -+#define constant_swap16(x) \ - ((uint16_t)((((uint16_t)(x) & 0x00FFU) << 8) | \ - (((uint16_t)(x) & 0xFF00U) >> 8))) - --#define constant_swab32(x) \ -+#define constant_swap32(x) \ - ((uint32_t)((((uint32_t)(x) & 0x000000FFU) << 24) | \ - (((uint32_t)(x) & 0x0000FF00U) << 8) | \ - (((uint32_t)(x) & 0x00FF0000U) >> 8) | \ - (((uint32_t)(x) & 0xFF000000U) >> 24))) - --#define constant_swab64(x) \ -+#define constant_swap64(x) \ - ((uint64_t)((((uint64_t)(x) & 0x00000000000000FFULL) << 56) | \ - (((uint64_t)(x) & 0x000000000000FF00ULL) << 40) | \ - (((uint64_t)(x) & 0x0000000000FF0000ULL) << 24) | \ -@@ -48,13 +48,13 @@ - (((uint64_t)(x) & 0x00FF000000000000ULL) >> 40) | \ - (((uint64_t)(x) & 0xFF00000000000000ULL) >> 56))) - --static inline uint16_t swab16(uint16_t x) -+static inline uint16_t swap16(uint16_t x) - { - return ((uint16_t)((((uint16_t)(x) & 0x00FFU) << 8) | \ - (((uint16_t)(x) & 0xFF00U) >> 8))); - } - --static inline uint32_t swab32(uint32_t x) -+static inline uint32_t swap32(uint32_t x) - { - return ((uint32_t)((((uint32_t)(x) & 0x000000FFU) << 24) | \ - (((uint32_t)(x) & 0x0000FF00U) << 8) | \ -@@ -62,7 +62,7 @@ static inline uint32_t swab32(uint32_t x) - (((uint32_t)(x) & 0xFF000000U) >> 24))); - } - --static inline uint64_t swab64(uint64_t x) -+static inline uint64_t swap64(uint64_t x) - { - return ((uint64_t)((((uint64_t)(x) & 0x00000000000000FFULL) << 56) | \ - (((uint64_t)(x) & 0x000000000000FF00ULL) << 40) | \ -@@ -74,17 +74,17 @@ static inline uint64_t swab64(uint64_t x) - (((uint64_t)(x) & 0xFF00000000000000ULL) >> 56))); - } - --#define constant_swab16p(x) \ -+#define constant_swap16p(x) \ - ((uint16_t)(((*(uint16_t *)(x) & 0x00FFU) << 8) | \ - ((*(uint16_t *)(x) & 0xFF00U) >> 8))) - --#define constant_swab32p(x) \ -+#define constant_swap32p(x) \ - ((uint32_t)(((*(uint32_t *)(x) & 0x000000FFU) << 24) | \ - ((*(uint32_t *)(x) & 0x0000FF00U) << 8) | \ - ((*(uint32_t *)(x) & 0x00FF0000U) >> 8) | \ - ((*(uint32_t *)(x) & 0xFF000000U) >> 24))) - --#define constant_swab64p(x) \ -+#define constant_swap64p(x) \ - ((uint64_t)(((*(uint64_t *)(x) & 0x00000000000000FFULL) << 56) | \ - ((*(uint64_t *)(x) & 0x000000000000FF00ULL) << 40) | \ - ((*(uint64_t *)(x) & 0x0000000000FF0000ULL) << 24) | \ -@@ -95,13 +95,13 @@ static inline uint64_t swab64(uint64_t x) - ((*(uint64_t *)(x) & 0xFF00000000000000ULL) >> 56))) - - --static inline uint16_t swab16p(uint16_t *x) -+static inline uint16_t swap16p(uint16_t *x) - { - return ((uint16_t)(((*(uint16_t *)(x) & 0x00FFU) << 8) | \ - ((*(uint16_t *)(x) & 0xFF00U) >> 8))); - } - --static inline uint32_t swab32p(uint32_t *x) -+static inline uint32_t swap32p(uint32_t *x) - { - return ((uint32_t)(((*(uint32_t *)(x) & 0x000000FFU) << 24) | \ - ((*(uint32_t *)(x) & 0x0000FF00U) << 8) | \ -@@ -109,7 +109,7 @@ static inline uint32_t swab32p(uint32_t *x) - ((*(uint32_t *)(x) & 0xFF000000U) >> 24))); - } - --static inline uint64_t swab64p(uint64_t *x) -+static inline uint64_t swap64p(uint64_t *x) - { - return ((uint64_t)(((*(uint64_t *)(x) & 0x00000000000000FFULL) << 56) | \ - ((*(uint64_t *)(x) & 0x000000000000FF00ULL) << 40) | \ -@@ -124,37 +124,37 @@ static inline uint64_t swab64p(uint64_t *x) - #ifdef WORDS_BIGENDIAN - - #define le16_to_cpu(x) (__builtin_constant_p(x) ? \ -- constant_swab16(x) : \ -- swab16(x)) -+ constant_swap16(x) : \ -+ swap16(x)) - - #define le32_to_cpu(x) (__builtin_constant_p(x) ? \ -- constant_swab32(x) : \ -- swab32(x)) -+ constant_swap32(x) : \ -+ swap32(x)) - - #define le64_to_cpu(x) (__builtin_constant_p(x) ? \ -- constant_swab64(x) : \ -- swab64(x)) -+ constant_swap64(x) : \ -+ swap64(x)) - - --#define constant_le16_to_cpu(x) constant_swab16((x)) --#define constant_le32_to_cpu(x) constant_swab32((x)) --#define constant_le64_to_cpu(x) constant_swab64((x)) -+#define constant_le16_to_cpu(x) constant_swap16((x)) -+#define constant_le32_to_cpu(x) constant_swap32((x)) -+#define constant_le64_to_cpu(x) constant_swap64((x)) - - #define le16_to_cpup(x) (__builtin_constant_p(x) ? \ -- constant_swab16p(x) : \ -- swab16p(x)) -+ constant_swap16p(x) : \ -+ swap16p(x)) - - #define le32_to_cpup(x) (__builtin_constant_p(x) ? \ -- constant_swab32p(x) : \ -- swab32p(x)) -+ constant_swap32p(x) : \ -+ swap32p(x)) - - #define le64_to_cpup(x) (__builtin_constant_p(x) ? \ -- constant_swab64p(x) : \ -- swab64p(x)) -+ constant_swap64p(x) : \ -+ swap64p(x)) - --#define constant_le16_to_cpup(x) constant_swab16p((x)) --#define constant_le32_to_cpup(x) constant_swab32p((x)) --#define constant_le64_to_cpup(x) constant_swab64p((x)) -+#define constant_le16_to_cpup(x) constant_swap16p((x)) -+#define constant_le32_to_cpup(x) constant_swap32p((x)) -+#define constant_le64_to_cpup(x) constant_swap64p((x)) - - #define be16_to_cpu(x) ((uint16_t)(x)) - #define be32_to_cpu(x) ((uint32_t)(x)) -@@ -191,37 +191,37 @@ static inline uint64_t swab64p(uint64_t *x) - #define constant_le64_to_cpup(x) (*(uint64_t *)(x)) - - #define be16_to_cpu(x) (__builtin_constant_p(x) ? \ -- constant_swab16(x) : \ -- swab16(x)) -+ constant_swap16(x) : \ -+ swap16(x)) - - #define be32_to_cpu(x) (__builtin_constant_p(x) ? \ -- constant_swab32(x) : \ -- swab32(x)) -+ constant_swap32(x) : \ -+ swap32(x)) - - #define be64_to_cpu(x) (__builtin_constant_p(x) ? \ -- constant_swab64(x) : \ -- swab64(x)) -+ constant_swap64(x) : \ -+ swap64(x)) - - --#define constant_be16_to_cpu(x) constant_swab16((x)) --#define constant_be32_to_cpu(x) constant_swab32((x)) --#define constant_be64_to_cpu(x) constant_swab64((x)) -+#define constant_be16_to_cpu(x) constant_swap16((x)) -+#define constant_be32_to_cpu(x) constant_swap32((x)) -+#define constant_be64_to_cpu(x) constant_swap64((x)) - - #define be16_to_cpup(x) (__builtin_constant_p(x) ? \ -- constant_swab16p(x) : \ -- swab16p(x)) -+ constant_swap16p(x) : \ -+ swap16p(x)) - - #define be32_to_cpup(x) (__builtin_constant_p(x) ? \ -- constant_swab32p(x) : \ -- swab32p(x)) -+ constant_swap32p(x) : \ -+ swap32p(x)) - - #define be64_to_cpup(x) (__builtin_constant_p(x) ? \ -- constant_swab64p(x) : \ -- swab64p(x)) -+ constant_swap64p(x) : \ -+ swap64p(x)) - --#define constant_be16_to_cpup(x) constant_swab16p((x)) --#define constant_be32_to_cpup(x) constant_swab32p((x)) --#define constant_be64_to_cpup(x) constant_swab64p((x)) -+#define constant_be16_to_cpup(x) constant_swap16p((x)) -+#define constant_be32_to_cpup(x) constant_swap32p((x)) -+#define constant_be64_to_cpup(x) constant_swap64p((x)) - - #endif /* WORDS_BIGENDIAN */ - - -From 07c5f12de1f9d3582b21d78296b7d05403dca008 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 20 Apr 2021 00:13:26 +0200 -Subject: [PATCH] mkudffs: Add missing branch for mmc_profile detection - ---- - mkudffs/options.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/mkudffs/options.c b/mkudffs/options.c -index 58d810a..0b9e4a7 100644 ---- a/mkudffs/options.c -+++ b/mkudffs/options.c -@@ -797,6 +797,10 @@ void parse_args(int argc, char *argv[], struct udf_disc *disc, char **device, in - else /* All other disc statuses means that medium is recordable = CD-R */ - mmc_profile = 0x09; - } -+ else -+ { -+ mmc_profile = 0x00; /* Unknown optical disc */ -+ } - } - else - { - -From 7a432b0bcd76cbd6a79925cde213f5d9073df137 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Sat, 12 Jun 2021 12:09:05 +0200 -Subject: [PATCH] wrudf: Fix parsing Volume Descriptor Sequence - -Fixes reading Reserve Volume Descriptor Sequence and fixes crashing when -readTaggedBlock() returns NULL. ---- - wrudf/wrudf.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/wrudf/wrudf.c b/wrudf/wrudf.c -index 79ca383..7a500c9 100644 ---- a/wrudf/wrudf.c -+++ b/wrudf/wrudf.c -@@ -93,6 +93,7 @@ void - initialise(char *devicename) - { - uint32_t i, len, blkno, lastblk, size; -+ int inMainSeq; - long_ad *fsdAd; - short_ad *adSpaceMap; - struct sparablePartitionMap *spm; -@@ -158,17 +159,17 @@ initialise(char *devicename) - /* read Volume Descriptor Sequence */ - blkno = extentMainVolDescSeq.extLocation; - len = extentMainVolDescSeq.extLength; -+ inMainSeq = 1; - - for( i = 0; i < len; blkno++, i += 2048 ) { -- int inMainSeq = 1; -- - if( (p = readTaggedBlock(blkno, ABSOLUTE)) == NULL ) { - if( !inMainSeq ) - fail("Volume Descriptor Sequences read failure\n"); -- blkno = extentRsrvVolDescSeq.extLocation; -+ blkno = extentRsrvVolDescSeq.extLocation - 1; - len = extentRsrvVolDescSeq.extLength; - inMainSeq = 0; -- i = 0; -+ i = (uint32_t) -2048; -+ continue; - } - switch( p->descTag.tagIdent ) { - case TAG_IDENT_PVD: - -From b08c75d234d69b2d1cf07dc639d432db767a775f Mon Sep 17 00:00:00 2001 -From: Jiri Kucera -Date: Sun, 13 Jun 2021 19:37:47 +0200 -Subject: [PATCH] wrudf-cdr.c: Exit on allocation failure - ---- - wrudf/wrudf-cdr.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/wrudf/wrudf-cdr.c b/wrudf/wrudf-cdr.c -index 538167a..27883da 100644 ---- a/wrudf/wrudf-cdr.c -+++ b/wrudf/wrudf-cdr.c -@@ -26,7 +26,7 @@ uint32_t newVATentry() { - sizeVAT += 2048; - vat = realloc(vat, sizeVAT); - if( vat == NULL ) -- printf("VAT reallocation failed\n"); -+ fail("VAT reallocation failed\n"); - } - /* could go through VAT and try to find unused 0xFFFFFFFF entry rather than alloc new one at the end */ - vat[newVATindex] = getNWA() - pd->partitionStartingLocation; diff --git a/udftools.spec b/udftools.spec index 5f86291..58bf737 100644 --- a/udftools.spec +++ b/udftools.spec @@ -1,165 +1,63 @@ Summary: Linux UDF Filesystem userspace utilities Name: udftools -Version: 2.3 -Release: 14%{?dist} -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +Version: 1.0.0b3 +Release: 23%{?dist} +License: GPLv2+ +Group: Applications/Archiving URL: http://sourceforge.net/projects/linux-udf/ -Source: https://github.com/pali/udftools/releases/download/%{version}/udftools-%{version}.tar.gz -Patch1: udftools-2.3-backported_fixes.patch -BuildRequires: make +Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz +Source2: wrudf.1 +Patch0: udftools-1.0.0b3-pktsetup-chardev.patch +Patch1: udftools-1.0.0b3-mkudffs-bigendian.patch +Patch2: udftools-1.0.0b3-wrudf-gcc4.patch +Patch3: udftools-1.0.0b3-warningfixes.patch +Patch4: udftools-1.0.0b3-fixcompile.patch +Patch5: udftools-1.0.0b3-warningfixes2.patch +Patch6: udftools-1.0.0b3-extsize.patch +Patch7: udftools-1.0.0b3-staticanal.patch +Patch8: udftools-1.0.0b3-wrudf_help.patch BuildRequires: readline-devel, ncurses-devel BuildRequires: autoconf, automake, libtool, perl-Carp -BuildRequires: udev -Requires: udev %description Linux UDF Filesystem userspace utilities. %prep -%autosetup -p1 +%setup +%patch0 -p1 -b .pktsetup-chardev +%patch1 -p1 -b .mkudffs-bigendian +%patch2 -p1 -b .wrudf-gcc4 +%patch3 -p1 -b .warningfixes +%patch4 -p1 -b .fixcompile +%patch5 -p1 -b .warningfixes2 +%patch6 -p1 -b .extsize +%patch7 -p1 -b .staticanal +%patch8 -p1 -b .wrudfhelp + %build -#./bootstrap #not in the tarball anymore, lets use pregenerated autotools -##export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing --std=gnu99" +./bootstrap +export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" %configure -%make_build -##%%{__make} %%{?_smp_mflags} +%{__make} %{?_smp_mflags} %install -%make_install -#./libtool --finish %%{buildroot}%%{_libdir} #causes failure and is probably unneeded, we dont ship a library -rm -rf %{buildroot}%{_bindir}/udffsck - +%makeinstall +./libtool --finish %{buildroot}%{_libdir} +install -m 644 %{SOURCE2} %buildroot%{_mandir}/man1/ %files -%doc AUTHORS NEWS -%license COPYING +%doc AUTHORS ChangeLog COPYING %{_bindir}/* -%{_sbindir}/* -%{_pkgdocdir}/* +#udffsck does nothing (in version 1.0.0b3), do not package +%exclude %{_bindir}/udffsck +%exclude %{_libdir}/libudffs.a +%exclude %{_libdir}/libudffs.la %{_mandir}/man?/* -%{_udevrulesdir}/80-pktsetup.rules %changelog -* Fri Jul 17 2026 Fedora Release Engineering - 2.3-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Sat Jan 17 2026 Fedora Release Engineering - 2.3-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Fri Jul 25 2025 Fedora Release Engineering - 2.3-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Sun Jan 19 2025 Fedora Release Engineering - 2.3-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Fri Jul 26 2024 Miroslav Suchý - 2.3-10 -- convert license to SPDX - -* Sat Jul 20 2024 Fedora Release Engineering - 2.3-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sat Jan 27 2024 Fedora Release Engineering - 2.3-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jul 22 2023 Fedora Release Engineering - 2.3-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sat Jan 21 2023 Fedora Release Engineering - 2.3-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Jul 23 2022 Fedora Release Engineering - 2.3-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sat Jan 22 2022 Fedora Release Engineering - 2.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jul 23 2021 Fedora Release Engineering - 2.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Jun 15 2021 Jiri Kucera - 2.3-2 -- wrudf: Fix parsing Volume Descriptor Sequence -- wrudf: Exit on allocation failure - -* Wed Jun 09 2021 Jiri Kucera - 2.3-1 -- Update to 2.3 - -* Wed Jan 27 2021 Fedora Release Engineering - 2.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 2.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Apr 20 2020 Filipe Rosset - 2.2-1 -- Update to 2.2 - -* Fri Jan 31 2020 Fedora Release Engineering - 2.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Sat Jul 27 2019 Fedora Release Engineering - 2.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sun Feb 17 2019 Igor Gnatenko - 2.1-3 -- Rebuild for readline 8.0 - -* Sun Feb 03 2019 Fedora Release Engineering - 2.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Dec 29 2018 Filipe Rosset - 2.1-1 -- new upstream version 2.1 fixes rhbz #1625987 + spec cleanup and modernization - -* Sat Jul 14 2018 Fedora Release Engineering - 1.3-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Feb 09 2018 Fedora Release Engineering - 1.3-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Aug 03 2017 Fedora Release Engineering - 1.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 1.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 1.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue Jan 24 2017 Frantisek Kluknavsky - 1.3-1 -- rebase to 1.3 - -* Thu Jan 12 2017 Igor Gnatenko - 1.2-2 -- Rebuild for readline 7.x - -* Wed Jul 13 2016 Frantisek Kluknavsky - 1.2-1 -- Rebase from a new upstream, dropped patches -- Several binaries moved from bin to sbin - -* Fri Feb 05 2016 Fedora Release Engineering - 1.0.0b3-31 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Jun 19 2015 Fedora Release Engineering - 1.0.0b3-30 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Fri Feb 20 2015 Frantisek Kluknavsky - 1.0.0b3-29 -- FTBFS fixed, --std=gnu89 is no longer default with gcc-5 - -* Mon Aug 18 2014 Fedora Release Engineering - 1.0.0b3-28 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sun Jun 08 2014 Fedora Release Engineering - 1.0.0b3-27 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Wed Apr 09 2014 Frantisek Kluknavsky - 1.0.0b3-26 -- added missing option in man pages - -* Fri Oct 04 2013 Frantisek Kluknavsky - 1.0.0b3-25 -- invalid source url fixed - -* Sun Aug 04 2013 Fedora Release Engineering - 1.0.0b3-24 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - * Tue Apr 16 2013 Frantisek Kluknavsky - 1.0.0b3-23 - Build dependency on txt2man unacceptable. Included final man page wrudf.1 instead of source. diff --git a/wrudf.1 b/wrudf.1 new file mode 100644 index 0000000..cab2d53 --- /dev/null +++ b/wrudf.1 @@ -0,0 +1,60 @@ +.\" Text automatically generated by txt2man +.TH wrudf 1 "16 April 2013" "udftools" "Linux Reference Manual" +.SH NAME +\fBwrudf \fP- Maintain an UDF filesystem. +.SH SYNOPSIS +.nf +.fam C +\fBwrudf\fP \fIdevice\fP +\fBwrudf\fP \fB--help\fP | \fB-help\fP | \fB-h\fP +.fam T +.fi +.fam T +.fi +.SH DESCRIPTION +\fBwrudf\fP provides an interactive shell with operations on existing UDF filesystem: cp, rm, mkdir, rmdir, ls, cd. +.SS COMMANDS +.TP +.B +cp +copy +.TP +.B +rm +remove +.TP +.B +mkdir +make directory +.TP +.B +rmdir +remove directory +.TP +.B +lsc +list files (Compact disc version) +.TP +.B +lsh +list files (Hard disc version) +.TP +.B +cdc +change working directory (Compact disc) +.TP +.B +cdh +change working directory (Hard disc) +.TP +.B +quit +quit \fBwrudf\fP +.TP +.B +exit +quit \fBwrudf\fP +.SH AVAILABILITY +\fBwrudf\fP is part of the udftools package and is available from http://linux-udf.sourceforge.net. +.SH SEE ALSO +\fBcdrwtool\fP(1), \fBmkudffs\fP(8), \fBpktsetup\fP(8)