Index: head/emulators/ods2reader/Makefile =================================================================== --- head/emulators/ods2reader/Makefile (revision 536042) +++ head/emulators/ods2reader/Makefile (revision 536043) @@ -1,34 +1,31 @@ # Created by: Jeffrey H. Johnson # $FreeBSD$ PORTNAME= ods2reader PORTVERSION= 19930601 PORTREVISION= 1 CATEGORIES= emulators sysutils MASTER_SITES= http://www.vsm.com.au/ftp/KITS/ \ http://vms.process.com/ftp/vms-freeware/fileserv/ DISTNAME= ODS-2-READER EXTRACT_SUFX= .ZIP MAINTAINER= ak@FreeBSD.org COMMENT= Copies files from VMS Files-11 (ODS2) file systems -BROKEN_FreeBSD_12_powerpc64= fails to build: ods-2-reader.new.c:60:1: error: unterminated #ifdef -BROKEN_FreeBSD_13_powerpc64= fails to build: ods-2-reader.new.c:3:687: error: expected identifier or '(' - USES= zip NO_WRKSUBDIR= yes PLIST_FILES= bin/ods2reader post-extract: # The source is in OpenVMS' variable-length record format @${SH} ${FILESDIR}/vmsvlr2unix.sh \ ${WRKSRC}/ods-2-reader.c > ${WRKSRC}/ods-2-reader.new.c do-build: ${CC} ${CFLAGS} -o ${WRKSRC}/ods2reader ${WRKSRC}/ods-2-reader.new.c do-install: ${INSTALL_PROGRAM} ${WRKSRC}/ods2reader ${STAGEDIR}${PREFIX}/bin .include Index: head/emulators/ods2reader/files/vmsvlr2unix.sh =================================================================== --- head/emulators/ods2reader/files/vmsvlr2unix.sh (revision 536042) +++ head/emulators/ods2reader/files/vmsvlr2unix.sh (revision 536043) @@ -1,29 +1,32 @@ #!/bin/sh - PATH=/usr/bin off=0 strlen=0 if [ $# -eq 0 -a ! -t 0 ]; then file=/dev/stdin elif [ $# -eq 1 ]; then file=$1 else echo Usage: ${0##*/} [file] echo converts OpenVMS variable-length record format to unix text format exit 0 fi while true; do off=$((${off} + ${strlen})) - strlen=$(hexdump -s ${off} -n 2 -e '"%u"' ${file}) + # read in 1-byte units + set -- $(od -An -tu1 -j${off} -N2 ${file}) # EoF - [ -z ${strlen} ] && break + [ -z "${1}" -o -z "${2}" ] && break + # assume little-endian, it's OpenVMS format + strlen=$(($2 * 256 + $1)) # print newline for zero-size records, as info-zip does [ ${strlen} -eq 0 ] && echo off=$((${off} + 2)) - hexdump -s ${off} -n ${strlen} -e '1000/1 "%c""\n"' ${file} + hexdump -s ${off} -n ${strlen} -e '"'%.${strlen}s'"''"\n"' ${file} # align 2 [ $((${strlen} % 2)) -ne 0 ] && off=$((${off} + 1)) done