about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-02-24 22:08:01 -0800
committerKartik K. Agaram <vc@akkartik.com>2022-02-24 22:08:01 -0800
commit66a74fdb72b12419707850bc05637ba62b2b42b5 (patch)
tree8d1837da8a4a2b293feafcaab367d1aaaaac4a61
parentcab68a5cfce9857b650adc03364423204e27827b (diff)
downloadmu-66a74fdb72b12419707850bc05637ba62b2b42b5.tar.gz
more portable
https://stackoverflow.com/questions/1815329/portable-way-to-get-file-size-in-bytes-in-the-shell/1815582#1815582
-rw-r--r--README.md3
-rwxr-xr-xtranslate14
-rwxr-xr-xtranslate_emulated21
3 files changed, 14 insertions, 24 deletions
diff --git a/README.md b/README.md
index 2ee0c8c1..f4525f74 100644
--- a/README.md
+++ b/README.md
@@ -103,9 +103,6 @@ For Macs and other Unix-like systems, use the (much slower) emulator:
 ./translate_emulated apps/ex2.mu  # 2-5 minutes to emit code.img
 ```
 
-(Mac OS may require either editing `translate_emulated` or installing GNU
-coreutils. Look in the script if you get an error about `stat`.)
-
 Mu programs can be written for two very different environments:
 
 * At the top-level, Mu programs emit a bootable image that runs without an OS
diff --git a/translate b/translate
index 9c1fc38d..9c74cc3e 100755
--- a/translate
+++ b/translate
@@ -37,19 +37,19 @@ cat a.survey                                              |linux/hex
 
 dd if=a.bin of=code.img conv=notrunc status=none
 
-if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
+if [ `wc -c < a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
 then
   echo "a.bin won't all be loaded on boot"
   exit 1
 fi
 
-if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector
+if [ `wc -c < a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector
 then
   echo "a.bin will overwrite BIOS/Video memory; you'll need to adjust boot.subx to load code to some other non-contiguous area of memory"
   exit 1
 fi
 
-if [ `stat --printf="%s" a.bin` -ge $(($FONT*512)) ]
+if [ `wc -c < a.bin` -ge $(($FONT*512)) ]
 then
   echo "a.bin will overwrite font in disk"
   exit 1
@@ -57,7 +57,7 @@ fi
 
 ## Latter half of disk is for debug info
 
-if [ `stat --printf="%s" labels` -ge 1048576 ]  # 8 reads * 256 sectors * 512 bytes per sector
+if [ `wc -c < labels` -ge 1048576 ]  # 8 reads * 256 sectors * 512 bytes per sector
 then
   echo "labels won't all be loaded on abort"
   exit 1
@@ -74,19 +74,19 @@ dd if=labels of=code.img seek=$DEBUG conv=notrunc status=none  # keep this sync'
 ## Font data at another well-defined location
 cat font.subx   |sed 's,/[^ ]*,,'    |linux/hex    > a.font
 
-if [ `stat --printf="%s" a.font` -ge 262144 ]  # 0x200 sectors * 512 bytes per sector (keep this sync'd with boot.subx)
+if [ `wc -c < a.font` -ge 262144 ]  # 0x200 sectors * 512 bytes per sector (keep this sync'd with boot.subx)
 then
   echo "font won't all be loaded on boot"
   exit 1
 fi
 
-if [ `stat --printf="%s" a.font` -ge 14680064 ]  # 0x00e00000 = 0x00f00000 - 0x00100000
+if [ `wc -c < a.font` -ge 14680064 ]  # 0x00e00000 = 0x00f00000 - 0x00100000
 then
   echo "font is so large it overlaps the ISA memory hole; see https://wiki.osdev.org/Memory_Map_(x86)"
   exit 1
 fi
 
-if [ `stat --printf="%s" a.font` -ge $(( ($DEBUG - $FONT) * 512 )) ]
+if [ `wc -c < a.font` -ge $(( ($DEBUG - $FONT) * 512 )) ]
 then
   echo "font will overwrite debug info in disk"
   exit 1
diff --git a/translate_emulated b/translate_emulated
index b8392095..ea51a112 100755
--- a/translate_emulated
+++ b/translate_emulated
@@ -41,26 +41,19 @@ cat a.survey                                              |linux/bootstrap/boots
 
 dd if=a.bin of=code.img conv=notrunc
 
-file_size() {
-  stat --printf="%s" $*
-  # if you're on Mac OS and haven't installed GNU coreutils (coreutils on
-  # Homebrew or Macports), switch this to:
-#  stat -f "%z" $*
-}
-
-if [ `file_size a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
+if [ `wc -c < a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
 then
   echo "a.bin won't all be loaded on boot"
   exit 1
 fi
 
-if [ `file_size a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector
+if [ `wc -c < a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector
 then
   echo "a.bin will overwrite BIOS/Video memory; you'll need to adjust boot.subx to load code to some other non-contiguous area of memory"
   exit 1
 fi
 
-if [ `file_size a.bin` -ge $(($FONT*512)) ]
+if [ `wc -c < a.bin` -ge $(($FONT*512)) ]
 then
   echo "a.bin will overwrite font in disk"
   exit 1
@@ -68,7 +61,7 @@ fi
 
 ## Latter half of disk is for debug info
 
-if [ `file_size labels` -ge 1048576 ]  # 8 reads * 256 sectors * 512 bytes per sector
+if [ `wc -c < labels` -ge 1048576 ]  # 8 reads * 256 sectors * 512 bytes per sector
 then
   echo "labels won't all be loaded on abort"
   exit 1
@@ -85,19 +78,19 @@ dd if=labels of=code.img seek=$DEBUG conv=notrunc
 ## Font data at another well-defined location
 cat font.subx   |sed 's,/[^ ]*,,'    |linux/bootstrap/bootstrap run linux/hex    > a.font
 
-if [ `file_size a.font` -ge 262144 ]  # 0x200 sectors * 512 bytes per sector (keep this sync'd with boot.subx)
+if [ `wc -c < a.font` -ge 262144 ]  # 0x200 sectors * 512 bytes per sector (keep this sync'd with boot.subx)
 then
   echo "font won't all be loaded on boot"
   exit 1
 fi
 
-if [ `file_size a.font` -ge 14680064 ]  # 0x00e00000 = 0x00f00000 - 0x00100000
+if [ `wc -c < a.font` -ge 14680064 ]  # 0x00e00000 = 0x00f00000 - 0x00100000
 then
   echo "font is so large it overlaps the ISA memory hole; see https://wiki.osdev.org/Memory_Map_(x86)"
   exit 1
 fi
 
-if [ `file_size a.font` -ge $(( ($DEBUG - $FONT) * 512 )) ]
+if [ `wc -c < a.font` -ge $(( ($DEBUG - $FONT) * 512 )) ]
 then
   echo "font will overwrite debug info in disk"
   exit 1