Skip to contentSkip to conversation

ls to stat patch

PATCH Joe Pelkey 4 participants 4 messages Sep 3, 2009 – Nov 26, 2009 2 messages not in the archive

lore
Share & tools
lore

Joe Pelkey

author
#0 lore raw

Hi,
I was randomly looking through the git repository and came across modules.d/95resume/resume.sh and its comment about not liking the use of ls. I modified it to use stat instead, and since stat has been in coreutils since at least late 2005, I assume it's safe to use.

Thanks

modules.d/95resume/resume.sh +1 -4
diff -rN -U 5 dracut-001.orig/modules.d/95resume/resume.sh dracut-001/modules.d/95resume/resume.sh
@@ -1,8 +1,5 @@
 #!/bin/sh
 [ -s /.resume -a -b "$resume" ] && {
-    # parsing the output of ls is Bad, but until there is a better way...
-    ls -lH "$resume" | ( 
-	read x x x x maj min x;
-	echo "${maj%,}:$min"> /sys/power/resume)
+    stat -c '%t:%T' "$resume" > /sys/power/resume
     >/.resume
 }
modules.d/99base/install +1 -1
diff -rN -U 5 dracut-001.orig/modules.d/99base/install dracut-001/modules.d/99base/install
@@ -1,8 +1,8 @@
 #!/bin/bash
 dracut_install mount mknod mkdir modprobe pidof sleep chroot \
-    sed ls flock cp mv dmesg rm ln
+    sed ls flock cp mv dmesg rm ln stat
 if [ ! -e "${initdir}/bin/sh" ]; then
     dracut_install bash
     (ln -s bash "${initdir}/bin/sh" || :)
 fi
 # install our scripts and hooks
#2 lore raw
In reply to a message not in the archive
Quoted 5 lines · Joe Pelkey

Hi,
I was randomly looking through the git repository and came across modules.d/95resume/resume.sh and its comment about not liking the use of ls. I modified it to use stat instead, and since stat has been in coreutils since at least late 2005, I assume it's safe to use.

<snip patch>

We had a patch that did that initally, but dropped it because it adds another binary to the initramfs.

Quoted 2 lines

Thanks

--
To unsubscribe from this list: send the line "unsubscribe initramfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw
Quoted 9 lines · Victor Lowther
Quoted 6 lines · Joe Pelkey

Hi,
I was randomly looking through the git repository and came across modules.d/95resume/resume.sh and its comment about not liking the use of
ls. I modified it to use stat instead, and since stat has been in coreutils since at least late 2005, I assume it's safe to use.

Quoted 4 lines

<snip patch>

We had a patch that did that initally, but dropped it because it adds another binary to the initramfs.

What else depends on 'ls'?
I can see 'ls' is used only in modules.d/95nfs/install which is invoked during creating initramfs image only. Am I wrong?

btw: Joe's patch has bug, because stat returns major and minor in hex and we need decimal values. We can use printf (which is part of dash) to convert values.

my version:

Subject: [PATCH] use stat binary instead of ls

---
 modules.d/95resume/install   |    1 +
 modules.d/95resume/resume.sh |    7 +++----
 modules.d/99base/install     |    2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)
modules.d/95resume/install +1 -0
index 9200f95..a88d608 100755
@@ -1,4 +1,5 @@
 #!/bin/bash
+dracut_install stat
 inst_hook cmdline 10 "$moddir/parse-resume.sh"
 inst_hook pre-udev 30 "$moddir/resume-genrules.sh"
 inst_hook mount 10 "$moddir/resume.sh"
modules.d/95resume/resume.sh +3 -4
index 8bb4114..022ef0e 100755
@@ -1,8 +1,7 @@
 #!/bin/sh
 [ -s /.resume -a -b "$resume" ] && {
-    # parsing the output of ls is Bad, but until there is a better way...
-    ls -lH "$resume" | ( 
-	read x x x x maj min x;
-	echo "${maj%,}:$min"> /sys/power/resume)
+    stat -L -c "0x%t 0x%T" "$resume" | ( 
+	read maj min;
+	echo "$(printf %d $maj):$(printf %d $min)"> /sys/power/resume)
     >/.resume
 }
modules.d/99base/install +1 -1
index 801c8d7..68c89c6 100755
@@ -1,6 +1,6 @@
 #!/bin/bash
 dracut_install mount mknod mkdir modprobe pidof sleep chroot \
-    sed ls flock cp mv dmesg rm ln rmmod mkfifo less 
+    sed flock cp mv dmesg rm ln rmmod mkfifo less 
 if [ ! -e "${initdir}/bin/sh" ]; then
     dracut_install bash
     (ln -s bash "${initdir}/bin/sh" || :)
Signature · 1 line
1.6.5.2
#5 lore raw
In reply to a message not in the archive

modules.d/95resume/install

Quoted 35 lines · Pawel Krzesniak
Quoted 9 lines · Victor Lowther
Quoted 6 lines · Joe Pelkey

Hi,
I was randomly looking through the git repository and came across modules.d/95resume/resume.sh and its comment about not liking the use of
ls. I modified it to use stat instead, and since stat has been in coreutils since at least late 2005, I assume it's safe to use.

Quoted 4 lines

<snip patch>

We had a patch that did that initally, but dropped it because it adds another binary to the initramfs.

What else depends on 'ls'?
I can see 'ls' is used only in modules.d/95nfs/install which is invoked during creating initramfs image only. Am I wrong?

btw: Joe's patch has bug, because stat returns major and minor in hex and we need decimal values. We can use printf (which is part of dash) to convert values.

my version:

Subject: [PATCH] use stat binary instead of ls

---
  modules.d/95resume/install   |    1 +
  modules.d/95resume/resume.sh |    7 +++----
  modules.d/99base/install     |    2 +-
  3 files changed, 5 insertions(+), 5 deletions(-)
modules.d/95resume/install +0 -0

Hmm, having "ls" in the rescue shell is better than "stat"