Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-2-0]: src/distrib/acorn32 Pullup rev 1.1 (requested by abs in tic...



details:   https://anonhg.NetBSD.org/src/rev/82f535f72116
branches:  netbsd-2-0
changeset: 561263:82f535f72116
user:      jmc <jmc%NetBSD.org@localhost>
date:      Thu Jun 03 23:01:38 2004 +0000

description:
Pullup rev 1.1 (requested by abs in ticket #433)

Basic shell script to produce uncompressed spark archive with correct
filetypes for RISC OS.

diffstat:

 distrib/acorn32/mksparkive.sh |  151 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 151 insertions(+), 0 deletions(-)

diffs (155 lines):

diff -r 97c575088615 -r 82f535f72116 distrib/acorn32/mksparkive.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/distrib/acorn32/mksparkive.sh     Thu Jun 03 23:01:38 2004 +0000
@@ -0,0 +1,151 @@
+#!/bin/sh
+#
+# Copyright (c) 2004 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Gavan Fantom
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+#    must display the following acknowledgement:
+#        This product includes software developed by the NetBSD
+#        Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+#
+# Creates an uncompressed spark format archive. Some metadata is included,
+# notably filetypes, but CRC calculations and permissions are not. Filename
+# translation is performed according to RISC OS conventions.
+# 
+# This script is intended to provide sufficient functionality to create
+# an archive for distribution of the NetBSD/acorn32 bootloader which can be
+# used directly in RISC OS.
+#
+
+# Target byte order is little endian.
+
+print2()
+{
+       lowbyte=`expr $1 % 256 | xargs printf %02x`
+       highbyte=`expr $1 / 256 | xargs printf %02x`
+       printf "\x$lowbyte\x$highbyte"
+}
+
+print4()
+{
+       print2 `expr $1 % 65536`
+       print2 `expr $1 / 65536`
+}
+
+makeheader()
+{
+       filename="$1"
+       statfilename="$2"
+       realfilename="$3"
+       filetype=`printf %03s "$4"`
+       length=`wc -c "$filename"`
+       eval `stat -s "$statfilename"`
+       # centiseconds since 1st Jan 1900
+       timestamp=`expr $st_mtime \* 100 + 220898880000`
+       lowtype=`echo "$filetype" | sed s/.//`
+       hightype=`echo "$filetype" | sed s/..\$//`
+       highdate=`expr $timestamp / 4294967296 | xargs printf %02x`
+       lowdate=`expr $timestamp % 4294967296`
+
+       # Header version number
+       printf \\x82
+       # Filename
+       printf %-13.13s "$realfilename" | tr " ." \\0/
+       # Compressed file length
+       print4 $length
+       # File date stamp
+       print2 0
+       # File time stamp
+       print2 0
+       # CRC
+       print2 0
+       # Original file length
+       print4 $length
+       # Load address (FFFtttdd)
+       printf \\x$highdate
+       printf \\x$lowtype
+       printf \\xf$hightype
+       printf \\xff
+       # Exec address (dddddddd)
+       print4 $lowdate
+       # Attributes
+       # Public read, owner read/write
+       print4 19
+}
+
+makearchive()
+{
+       for file in "$@"
+       do
+               # Archive marker
+               printf \\x1a
+               if [ -f "$file" ]
+               then
+                       case "$file" in
+                               *,???)  type=`echo "$file" | \
+                                           sed "s/.*,\(...\)$/\1/"`
+                                       filename=`echo "$file" | \
+                                           sed "s/,...$//"`
+                                       ;;
+                               *)      type=fff
+                                       filename="$file"
+                                       ;;
+                       esac
+                       makeheader "$file" "$file" "$filename" "$type"
+                       cat "$file"
+               fi
+               if [ -d "$file" ]
+               then
+                       temp=`mktemp -t $0` || exit 1
+                       (
+                               cd "$file"
+                               makearchive `ls -A` >$temp
+                       )
+                       makeheader "$temp" "$file" "$file" ddc
+                       cat "$temp"
+                       rm -f "$temp"
+               fi
+       done
+
+       # Archive marker
+       printf \\x1a
+       # Archive terminator
+       printf \\x00
+}
+
+if [ $# -eq 0 ]
+then
+       name=`basename $0`
+       echo "Usage: $name filename"
+       echo "$name: Outputs an uncompressed sparkive to stdout."
+fi
+
+makearchive "$@"



Home | Main Index | Thread Index | Old Index