Re: [ptxdist] Semicolon in filenames
On Fri, Jan 22, 2016 at 01:31:37AM +0100, Ladislav Michl wrote: > Now I'm going to be honest. Previous patch 'Add usb-modeswitch-data package' > break things - 'ptxdist images' fails as ':' is used as delimiter in perms > file. > Patch bellow escapes semicolon on producer side, anyone cares about consumer? This does not work well with IFS in bash and FS in awk. but I think we can switch different character. Maybe a vertical tab? > diff --git a/scripts/lib/ptxd_make_xpkg_pkg.sh > b/scripts/lib/ptxd_make_xpkg_pkg.sh > index 5ba404e..8e6664b 100644 > --- a/scripts/lib/ptxd_make_xpkg_pkg.sh > +++ b/scripts/lib/ptxd_make_xpkg_pkg.sh > @@ -209,6 +209,7 @@ install directory: > > install -m "${mod_nfs}" -d "${ndirs[@]/%/${dir}}" && > install -m "${mod}" -o "${usr}" -g "${grp}" -d "${pdirs[@]/%/${dir}}" && > +dir="$(echo ${dir} | sed -e 's/[:]/\\:/g')" && > > echo "f:${dir}:${usr}:${grp}:${mod}" >> "${pkg_xpkg_perms}" || > ptxd_install_error "install_dir failed!" > @@ -343,6 +344,9 @@ Usually, just remove the 6th parameter and everything > works fine. > # now change to requested user and group > chown "${usr}:${grp}" "${pdirs[@]/%/${dst}}" && > > +# escape semicolon > +dst="$(echo ${dst} | sed -e 's/[:]/\\:/g')" && > + > echo "f:${dst}:${usr}:${grp}:${mod}" >> "${pkg_xpkg_perms}" > } > export -f ptxd_install_file_impl > @@ -413,6 +417,7 @@ install device node: > mknod -m "${mod}" "${d}" "${type}" ${major} ${minor} || return > done && > chown "${usr}:${grp}" "${pdirs[@]/%/${dst}}" && > +dst="$(echo ${dst} | sed -e 's/[:]/\\:/g')" && > > echo "n:${dst}:${usr}:${grp}:${mod}:${type}:${major}:${minor}" >> > "${pkg_xpkg_perms}" sep=$'\v' echo "n${sep}${dst}${sep}${usr}${sep}${grp}${sep}${mod}${sep}${type}${sep}${major}${sep}${minor}" >> "${pkg_xpkg_perms}" And then use IFS=$'\v' in bash and FS="\v" in awk Michael > } -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0| Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917- | ___ ptxdist mailing list ptxdist@pengutronix.de
[ptxdist] Semicolon in filenames
Now I'm going to be honest. Previous patch 'Add usb-modeswitch-data package' break things - 'ptxdist images' fails as ':' is used as delimiter in perms file. Patch bellow escapes semicolon on producer side, anyone cares about consumer? ladis diff --git a/scripts/lib/ptxd_make_xpkg_pkg.sh b/scripts/lib/ptxd_make_xpkg_pkg.sh index 5ba404e..8e6664b 100644 --- a/scripts/lib/ptxd_make_xpkg_pkg.sh +++ b/scripts/lib/ptxd_make_xpkg_pkg.sh @@ -209,6 +209,7 @@ install directory: install -m "${mod_nfs}" -d "${ndirs[@]/%/${dir}}" && install -m "${mod}" -o "${usr}" -g "${grp}" -d "${pdirs[@]/%/${dir}}" && +dir="$(echo ${dir} | sed -e 's/[:]/\\:/g')" && echo "f:${dir}:${usr}:${grp}:${mod}" >> "${pkg_xpkg_perms}" || ptxd_install_error "install_dir failed!" @@ -343,6 +344,9 @@ Usually, just remove the 6th parameter and everything works fine. # now change to requested user and group chown "${usr}:${grp}" "${pdirs[@]/%/${dst}}" && +# escape semicolon +dst="$(echo ${dst} | sed -e 's/[:]/\\:/g')" && + echo "f:${dst}:${usr}:${grp}:${mod}" >> "${pkg_xpkg_perms}" } export -f ptxd_install_file_impl @@ -413,6 +417,7 @@ install device node: mknod -m "${mod}" "${d}" "${type}" ${major} ${minor} || return done && chown "${usr}:${grp}" "${pdirs[@]/%/${dst}}" && +dst="$(echo ${dst} | sed -e 's/[:]/\\:/g')" && echo "n:${dst}:${usr}:${grp}:${mod}:${type}:${major}:${minor}" >> "${pkg_xpkg_perms}" } ___ ptxdist mailing list ptxdist@pengutronix.de
Re: [ptxdist] Semicolon in filenames
Hello, On Fri, Jan 22, 2016 at 01:31:37AM +0100, Ladislav Michl wrote: > Now I'm going to be honest. Previous patch 'Add usb-modeswitch-data package' > break things - 'ptxdist images' fails as ':' is used as delimiter in perms > file. > Patch bellow escapes semicolon on producer side, anyone cares about consumer? > > ladis > > diff --git a/scripts/lib/ptxd_make_xpkg_pkg.sh > b/scripts/lib/ptxd_make_xpkg_pkg.sh > index 5ba404e..8e6664b 100644 > --- a/scripts/lib/ptxd_make_xpkg_pkg.sh > +++ b/scripts/lib/ptxd_make_xpkg_pkg.sh > @@ -209,6 +209,7 @@ install directory: > > install -m "${mod_nfs}" -d "${ndirs[@]/%/${dir}}" && > install -m "${mod}" -o "${usr}" -g "${grp}" -d "${pdirs[@]/%/${dir}}" && > +dir="$(echo ${dir} | sed -e 's/[:]/\\:/g')" && why do you need the brackets? Doesn't s/:/\\:/g have the same effect? As this is a bash script I assume you might save a few forks by using: ${dir//:/\\:} (untested) instead. > > echo "f:${dir}:${usr}:${grp}:${mod}" >> "${pkg_xpkg_perms}" || > ptxd_install_error "install_dir failed!" > @@ -343,6 +344,9 @@ Usually, just remove the 6th parameter and everything > works fine. > # now change to requested user and group > chown "${usr}:${grp}" "${pdirs[@]/%/${dst}}" && > > +# escape semicolon semicolon? > +dst="$(echo ${dst} | sed -e 's/[:]/\\:/g')" && > + > echo "f:${dst}:${usr}:${grp}:${mod}" >> "${pkg_xpkg_perms}" > } > export -f ptxd_install_file_impl > @@ -413,6 +417,7 @@ install device node: > mknod -m "${mod}" "${d}" "${type}" ${major} ${minor} || return > done && > chown "${usr}:${grp}" "${pdirs[@]/%/${dst}}" && > +dst="$(echo ${dst} | sed -e 's/[:]/\\:/g')" && > > echo "n:${dst}:${usr}:${grp}:${mod}:${type}:${major}:${minor}" >> > "${pkg_xpkg_perms}" > } Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | ___ ptxdist mailing list ptxdist@pengutronix.de