Re: [ptxdist] Semicolon in filenames

2016-01-22 Thread Michael Olbrich
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

2016-01-21 Thread Ladislav Michl
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

2016-01-21 Thread Uwe Kleine-König
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