1#!/bin/sh
2# $FreeBSD$
3# A really simple script to create a swap-backed msdosfs filesystem, then
4# test to see if msdosfs_conv.c rev 1.45[2] works properly.
5# Note that this is a requisite condition but far away from sufficient condition.
6# You must check file system by "dir /x" on MS Windows.
7
8mkdir /tmp/msdosfstest
9mdconfig -a -t swap -s 128m -u 10
10bsdlabel -w md10 auto
11newfs_msdos -F 16 -b 8192 /dev/md10a
12mount_msdosfs -L ja_JP.eucJP -D CP932 -l /dev/md10a /tmp/msdosfstest
13# The comment is UTF-8, the actual command uses the eucJP representation.
14# touch /tmp/msdosfstest/ア (HALFWIDTH KATAKANA LETTER A)
15touch /tmp/msdosfstest/$'\216\261'
16if [ $? -eq 0 ]; then
17	umount /tmp/msdosfstest
18	mount_msdosfs -L ja_JP.eucJP -D CP932 -s /dev/md10a /tmp/msdosfstest
19	ls /tmp/msdosfstest/$'\216\261'
20	if [ $? -eq 0 ]; then
21		echo "ok 5 (pass stage 1/2)"
22		umount /tmp/msdosfstest
23		mount_msdosfs -L uk_UA.KOI8-U -D CP866 -l /dev/md10a /tmp/msdosfstest
24		# The comment is UTF-8, the actual command uses the KOI8-U representation.
25		# ls /tmp/msdosfstest/▒ (MEDIUM SHADE)
26		ls /tmp/msdosfstest/$'\221'
27		if [ $? -ne 0 ]; then
28			# assume that U+FF71 was recorded with long name
29			echo "ok 5 (pass stage 2/2)"
30		else
31			# only 0xb1 was found (doesn't have long name)
32			echo "not ok 5"
33		fi
34	else
35		echo "not ok 5"
36	fi
37else
38	echo "not ok 5"
39fi
40umount /tmp/msdosfstest
41mdconfig -d -u 10
42rmdir /tmp/msdosfstest
43