mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Ladislav Michl <ladis@linux-mips.org>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [RFC] Colons in filenames
Date: Wed, 13 Jul 2016 12:24:59 +0200	[thread overview]
Message-ID: <20160713102459.GA17060@localhost.localdomain> (raw)
In-Reply-To: <20160210172347.GA14137@pengutronix.de>

On Wed, Feb 10, 2016 at 06:23:47PM +0100, Michael Olbrich wrote:
> I think the most readable would be replace the escaping:
> 
> '\:' -> 0x1
> ':'  -> 0x2
> 0x1  -> ':'
> 
> and then use 0x2 as separator.
> 
> Well there is also DOPERMISSIONS in rules/post/ptxd_make_image_common.make
> which ist mostly but not exactly the same. But I suppose we could merge
> that. It will require some testing and careful review. This stuff is rather
> tricky.
> And then there is scripts/lib/ptxd_make_image_fix_permissions.sh...

I used ASCII 31 (unit separator), after all this is whole purpose
of its sole existence. So what about something like following patch?

diff --git a/rules/post/image_cpio.make b/rules/post/image_cpio.make
index 573faee..200b283 100644
--- a/rules/post/image_cpio.make
+++ b/rules/post/image_cpio.make
@@ -15,7 +15,7 @@ $(IMAGEDIR)/root.cpio: $(STATEDIR)/image_working_dir
 	@echo -n "Creating '$(notdir $(@))' from working dir..."
 	@cd $(image/work_dir) && \
 	( \
-		awk -F: $(DOPERMISSIONS) $(image/permissions) && \
+		awk $(DOPERMISSIONS) $(image/permissions) && \
 		echo "find . | cpio --quiet -H newc -o > '$(@)'" \
 	) | $(FAKEROOT) --
 	@echo "done."
diff --git a/rules/post/image_ext2.make b/rules/post/image_ext2.make
index 3e3423b..0dbcafd 100644
--- a/rules/post/image_ext2.make
+++ b/rules/post/image_ext2.make
@@ -15,7 +15,7 @@ ifdef PTXCONF_IMAGE_EXT2
 $(IMAGEDIR)/root.ext2: $(STATEDIR)/image_working_dir
 	@echo -n "Creating root.ext2 from working dir..."
 	@cd $(image/work_dir);						\
-	(awk -F: $(DOPERMISSIONS) $(image/permissions) &&		\
+	(awk $(DOPERMISSIONS) $(image/permissions) &&			\
 	(								\
 		echo -n "$(PTXCONF_SYSROOT_HOST)/bin/genext2fs ";	\
 		echo -n "-b $(PTXCONF_IMAGE_EXT2_SIZE) ";		\
diff --git a/rules/post/image_jffs2.make b/rules/post/image_jffs2.make
index 5e448f5..7f12883 100644
--- a/rules/post/image_jffs2.make
+++ b/rules/post/image_jffs2.make
@@ -17,7 +17,7 @@ $(IMAGEDIR)/root.jffs2: $(STATEDIR)/image_working_dir $(STATEDIR)/host-mtd-utils
 	@echo -n "(--eraseblock=$(PTXCONF_IMAGE_JFFS2_BLOCKSIZE) "
 	@echo "$(call remove_quotes,$(PTXCONF_IMAGE_JFFS2_EXTRA_ARGS)))"
 	@cd $(image/work_dir);						\
-	(awk -F: $(DOPERMISSIONS) $(image/permissions) &&		\
+	(awk $(DOPERMISSIONS) $(image/permissions) &&			\
 	(								\
 		echo -n "$(PTXCONF_SYSROOT_HOST)/sbin/mkfs.jffs2 ";	\
 		echo -n "-d $(image/work_dir) ";			\
diff --git a/rules/post/image_squashfs.make b/rules/post/image_squashfs.make
index 6d02255..69dc721 100644
--- a/rules/post/image_squashfs.make
+++ b/rules/post/image_squashfs.make
@@ -19,7 +19,7 @@ ifdef PTXCONF_IMAGE_SQUASHFS
 $(IMAGEDIR)/root.squashfs: $(STATEDIR)/image_working_dir $(STATEDIR)/host-squashfs-tools.install.post
 	@echo -n "Creating root.squashfs from working dir..."
 	@cd $(image/work_dir);							\
-	(awk -F: $(DOPERMISSIONS) $(image/permissions) &&		\
+	(awk $(DOPERMISSIONS) $(image/permissions) &&			\
 	(								\
 		echo -n "$(PTXCONF_SYSROOT_HOST)/sbin/mksquashfs ";	\
 		echo -n "$(image/work_dir) ";					\
diff --git a/rules/post/image_tgz.make b/rules/post/image_tgz.make
index 57f69f4..a8e129a 100644
--- a/rules/post/image_tgz.make
+++ b/rules/post/image_tgz.make
@@ -19,7 +19,7 @@ endif
 $(IMAGEDIR)/root.tgz: $(STATEDIR)/image_working_dir
 	@echo -n 'Creating root.tgz from working dir$(if $(IMAGE_TGZ_LABEL), with label "$(IMAGE_TGZ_LABEL)",)... '
 	@cd $(image/work_dir);							\
-	(awk -F: $(DOPERMISSIONS) $(image/permissions) &&		\
+	(awk -F\x1F $(DOPERMISSIONS) $(image/permissions) &&		\
 	(	echo -n "tar ${IMAGE_TGZ_LABEL_ARGS} -zcf ";	\
 		echo -n "$@ ." )					\
 	) | $(FAKEROOT) --
diff --git a/rules/post/image_ubi.make b/rules/post/image_ubi.make
index edfae1d..17321dc 100644
--- a/rules/post/image_ubi.make
+++ b/rules/post/image_ubi.make
@@ -22,7 +22,7 @@ $(IMAGEDIR)/root.ubifs: $(STATEDIR)/image_working_dir $(STATEDIR)/host-mtd-utils
 	@echo -n "-e $(PTXCONF_IMAGE_UBIFS_LEB_SIZE) -c $(PTXCONF_IMAGE_UBIFS_ROOT_MAX_LEB_COUNT) "
 	@echo -n "$(PTXCONF_IMAGE_UBIFS_EXTRA_ARGS))"
 	@cd $(image/work_dir);								\
-	(awk -F: $(DOPERMISSIONS) $(image/permissions) &&			\
+	(awk $(DOPERMISSIONS) $(image/permissions) &&				\
 	(									\
 		echo -n "$(PTXCONF_SYSROOT_HOST)/sbin/mkfs.ubifs ";		\
 		echo -n "-d $(image/work_dir) ";					\
diff --git a/rules/post/ptxd_make_image_common.make b/rules/post/ptxd_make_image_common.make
index 7ccb501..0f274bf 100644
--- a/rules/post/ptxd_make_image_common.make
+++ b/rules/post/ptxd_make_image_common.make
@@ -8,7 +8,7 @@
 # see the README file.
 #
 
-DOPERMISSIONS := '{	\
+DOPERMISSIONS := '{ FS = "\x1F";	\
 	if ($$1 == "f")	\
 		printf("chmod %s \".%s\"; chown %s.%s \".%s\";\n", $$5, $$2, $$3, $$4, $$2);	\
 	if ($$1 == "n")	\
diff --git a/scripts/lib/ptxd_lib_dopermissions.awk b/scripts/lib/ptxd_lib_dopermissions.awk
index 336948c..3596121 100755
--- a/scripts/lib/ptxd_lib_dopermissions.awk
+++ b/scripts/lib/ptxd_lib_dopermissions.awk
@@ -1,7 +1,7 @@
 #!/usr/bin/awk -f
 
 BEGIN {
-	FS = ":";
+	FS = "\x1F";
 }
 
 $1 ~ "f" {
diff --git a/scripts/lib/ptxd_make_image_fix_permissions.sh b/scripts/lib/ptxd_make_image_fix_permissions.sh
index eae2ab3..7bc10c0 100644
--- a/scripts/lib/ptxd_make_image_fix_permissions.sh
+++ b/scripts/lib/ptxd_make_image_fix_permissions.sh
@@ -32,10 +32,10 @@ export -f ptxd_make_image_fix_permissions_generate
 ptxd_make_image_fix_permissions_check() {
     local workdir="${1}"
     local ifs_orig="${IFS}"
-    IFS=":"
+    IFS="\x1F"
 
     # just care about dev-nodes, for now
-    egrep -h "^[n]:" "${ptxd_reply_perm_files[@]}" |
+    egrep -h "^[n]\x1F" "${ptxd_reply_perm_files[@]}" |
     while read kind file uid_should gid_should prm_should type major_should minor_should; do
 	local fixup=false
 	file="${workdir}/${file#/}"
diff --git a/scripts/lib/ptxd_make_xpkg_pkg.sh b/scripts/lib/ptxd_make_xpkg_pkg.sh
index ba9094b..f6c63ea 100644
--- a/scripts/lib/ptxd_make_xpkg_pkg.sh
+++ b/scripts/lib/ptxd_make_xpkg_pkg.sh
@@ -210,7 +210,7 @@ install directory:
     install -m "${mod_nfs}" -d "${ndirs[@]/%/${dir}}" &&
     install -m "${mod}" -o "${usr}" -g "${grp}" -d "${pdirs[@]/%/${dir}}" &&
 
-    echo "f:${dir}:${usr}:${grp}:${mod}" >> "${pkg_xpkg_perms}" ||
+    echo -e "f\x1F${dir}\x1F${usr}\x1F${grp}\x1F${mod}" >> "${pkg_xpkg_perms}" ||
     ptxd_install_error "install_dir failed!"
 }
 export -f ptxd_install_dir
@@ -350,7 +350,7 @@ Usually, just remove the 6th parameter and everything works fine.
     # now change to requested user and group
     chown "${usr}:${grp}" "${pdirs[@]/%/${dst}}" &&
 
-    echo "f:${dst}:${usr}:${grp}:${mod}" >> "${pkg_xpkg_perms}"
+    echo -e "f\x1F${dst}\x1F${usr}\x1F${grp}\x1F${mod}" >> "${pkg_xpkg_perms}"
 }
 export -f ptxd_install_file_impl
 
@@ -421,7 +421,7 @@ install device node:
     done &&
     chown "${usr}:${grp}" "${pdirs[@]/%/${dst}}" &&
 
-    echo "n:${dst}:${usr}:${grp}:${mod}:${type}:${major}:${minor}" >> "${pkg_xpkg_perms}"
+    echo -e "n\x1F${dst}\x1F${usr}\x1F${grp}\x1F${mod}\x1F${type}\x1F${major}\x1F${minor}" >> "${pkg_xpkg_perms}"
 }
 export -f ptxd_install_mknod
 

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de

      reply	other threads:[~2016-07-13 10:25 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-22  0:31 [ptxdist] Semicolon " Ladislav Michl
2016-01-22  7:18 ` Uwe Kleine-König
2016-01-22  8:10   ` [ptxdist] Colons " Ladislav Michl
2016-01-22  8:06 ` [ptxdist] Semicolon " Michael Olbrich
2016-02-03 22:05   ` [ptxdist] [RFC] Colons " Ladislav Michl
2016-02-10 17:23     ` Michael Olbrich
2016-07-13 10:24       ` Ladislav Michl [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160713102459.GA17060@localhost.localdomain \
    --to=ladis@linux-mips.org \
    --cc=ptxdist@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox