12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #! /bin/sh
- #
- # UC1541 Virtual filesystem executive v0.1
- # This is for accessing disk image files for the Commodore VIC20/C64/C128
- # It requires the utility c1541 that comes bundled with Vice, the emulator
- # for the VIC20, C64, C128 and other computers made by Commodore.
- # Copyright (C) 2008 Jacques Pelletier
- # May be distributed under the terms of the GNU Public License
- # <jpelletier@ieee.org>
- #
- # Define your awk
- AWK=gawk
- # Define which archiver you are using with appropriate options
- C1541="c1541"
- # There are no time stamps in the disk image, so a bogus timestamp is displayed
- mc_c1541_fs_list()
- {
- $C1541 "$1" -list | gawk -v uid=${UID-0} '
- BEGIN { FS = "\"" }
- /No LINES!/ { next }
- /BLOCKS FREE/ { next }
- $1 == 0 { next }
- {
- printf "-rw-r--r-- 1 %-8d %-8d %8d Jan 01 1980 00:00 %s\n", uid, 0, $1 * 256, $2
- }' 2>/dev/null
- }
- # Command: copyout archivename storedfilename extractto
- # -read image 1541name [fsname]
- mc_c1541_fs_copyout()
- {
- $C1541 "$1" -read "$2" 2> /dev/null
- mv "$2" "$3"
- }
- # FIXME mc can't do chown of the file inside the archive
- # Command: copyin archivename storedfilename sourcefile
- # -write image fsname [1541name]
- mc_c1541_fs_copyin()
- {
- mv "$3" "$2"
- $C1541 "$1" -write "$2" 2> /dev/null
- }
- # Command: rm archivename storedfilename
- # -delete image files
- mc_c1541_fs_rm()
- {
- $C1541 "$1" -delete "$2" 2> /dev/null
- }
- # The main routine
- umask 077
- cmd="$1"
- shift
- case "$cmd" in
- list) mc_c1541_fs_list "$@" ;;
- copyout) mc_c1541_fs_copyout "$@" ;;
- # copyin) mc_c1541_fs_copyin "$@" ;;
- rm) mc_c1541_fs_rm "$@" ;;
- *) exit 1 ;;
- esac
- exit 0
|