Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ pcfs(7FS) — SunOS 5.6

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

chgrp(1)

chown(1)

eject(1)

fdformat(1)

volcheck(1)

mount(1M)

mount_pcfs(1M)

vold(1M)

ctime(3C)

vfstab(4)

pcmem(7D)

fdisk(1M)

pcfs(7FS)

NAME

pcfs − DOS formatted file system

SYNOPSIS

#include <sys/param.h>
#include <sys/mount.h>
#include <sys/fs/pc_fs.h>
 int mount(const char ∗spec, const char ∗dir, int mflag,
    "pcfs", struct pcfs_args ∗pc_argp,
     sizeof (struct pcfs_args));

DESCRIPTION

pcfs is a file system type that allows users direct access to files on DOS formatted disks from within the SunOS operating system.  Once mounted, pcfs provides standard SunOS file operations and semantics.  That is, users can create, delete, read, and write files on a DOS formatted disk.  They can also create and delete directories and list files in a directory. 

The pcfs filesystem contained on the block special file identified by spec is mounted on the directory identified by dir. spec and dir are pointers to pathnames.  mflag specifies the mount options; the MS_DATA bit in mflag must be set.  When mounting a pcfs filesystem, a pointer to a structure containing mount flags and local timezone information, ∗pc_argp, is required:

struct pcfs_args {
int timezone;    /∗ seconds west of Greenwich ∗/
int daylight;    /∗ type of dst correction ∗/
int flags;
};

The information required in the timezone and daylight fields in this structure is described in ctime(3C).  flags can contain the following flag:

PCFS_MNT_FOLDCASE

Fold names read from the filesystem to lowercase. 

Mounting File Systems

pcfs is mounted from diskette with the command:

mount −F pcfs  device-special directory-name

or you can use:

mount directory-name

if the following line is in your /etc/vfstab file:

device-special −  directory-name pcfs  −  no  rw

x86:  pcfs is mounted from the hard disk with the command:

mount −F pcfs device-special:logical-drive directory-name

or you can use:

mount directory-name

if the following line is in your /etc/vfstab file:

device-special:logical_drive − directory-name pcfs − no rw

device-special specifies the special block device file for the diskette (/dev/disketteN) or the entire hard disk (/dev/dsk/cNtNdNp0 for a SCSI disk, and /dev/dsk/cNdNp0 for IDE disks) or the PCMCIA pseudo-floppy memory card (/dev/dsk/cNtNdNsN). 

On x86 systems, logical-drive specifies either the DOS logical drive letter (c through z) or a drive number (1 through 24).  Drive letter c is equivalent to drive number 1 and represents the Primary DOS partition on the disk; drive letters d through z are equivalent to drive numbers 2 through 24, and represent DOS drives within the Extended DOS partition.  Note that device-special and logical-drive must be separated by a colon. 

directory-name specifies the location where the file system is mounted. 

For example, on x86, to mount the Primary DOS partition from a SCSI hard disk, use:

mount −F pcfs /dev/dsk/cNtNdNp0:c /pcfs/c

On x86, to mount the first logical drive in the Extended DOS partition from an IDE hard disk, use:

mount −F pcfs /dev/dsk/cNdNp0:d /pcfs/d

To mount a DOS diskette in the first floppy drive, if Volume Management is not running (see vold(1M)) use:

mount −F pcfs /dev/diskette /pcfs/a

If Volume Management is running, then running volcheck(1) will automatically mount the floppy and some removable disks for the user. 

To mount a PCMCIA pseudo-floppy memory card, with Volume Management not running (or not managing the PCMCIA media), use:

mount −F pcfs /dev/dsk/cNtNdNsN /pcfs

Conventions

Files and directories created through pcfs have to comply with either the DOS short filename convention or the long filename convention introduced with Windows 95.  The DOS short filename convention is of the form filename[.ext], where filename generally consists of from one to eight upper-case characters, while the optional ext consists of from one to three upper-case characters. 

The long filename convention is much closer to Solaris filenames.  A long filename can consist of any any characters valid in a short filename, lowercase letters, non-leading spaces, the characters +,;=[] , any number of periods, and be up to 255 characters long.  Long filenames have an associated short filename for systems that do not support long filenames (such as earlier releases of Solaris).  The short filename is not visible if the system recognizes long filenames.  pcfs generates a unique short name automatically when creating a long filename.  Given a long filename such as
This is a really long filename.TXT, the short filename will generally be of the form
THISIS~N.TXT, where N is a number.  So, this long filename will probably get the short name THISIS~1.TXT, or THISIS~2.TXT if THISIS~1.TXT already exits (or THISIS~3.TXT if both exist, and so forth).  If you need to use pcfs filesystems on systems that do not support long filenames, you may want to continue following the short filename conventions.  See EXAMPLES. 

When creating a filename, pcfs creates a short filename if it fits the DOS short filename format, otherwise it creates a long filename.  This is because long filenames take more directory space.  In fact, since the root directory of a pcfs filesystem is fixed size, long filenames in the root directory should be avoided if possible. 

When displaying filenames, pcfs shows them exactly as they are on the media (so short names show up as all uppercase, and long filenames retain their case).  The old behavior of pcfs was to fold all names to lowercase, which can be forced with the PCFS_MNT_FOLDCASE mount option.  All filename searches within pcfs, however, are treated as if they were uppercase, so readme.txt and ReAdMe.TxT refer to the same file. 

One can use either the DOS FORMAT command, or the command:

fdformat −d

in the SunOS system to format a diskette or a PCMCIA pseudo-floppy memory card in DOS format. 

Boot Partitions

On x86 systems, hard drives may contain an fdisk partition reserved for the Solaris boot utilities.  These partitions are special instances of pcfs.  An x86 boot partition may be mounted with the command:

mount −F pcfs device-special:boot directory-name

or you can use:

mount directory-name

if the following line is in your /etc/vfstab file:

device-special:boot − directory-name pcfs − no rw

device-special specifies the special block device file for the entire hard disk (/dev/dsk/cNtNdNp0)

directory-name specifies the location where the file system is mounted. 

All files on a boot partition are owned by super-user.  Only the super-user user may create, delete, or modify files on a boot partition. 
 

EXAMPLES

If you copy a file:

financial.data

from a UNIX file system to pcfs, it will show up as:

financial.data,

in pcfs, but will probably show up as

FINANC~1.DAT

in systems that do not support long filenames. 

The following file names:

test.sh.orig

data+

.login

are not legal short filenames, but are legal long filenames.  Other systems that do not support long filenames may well see:

TESTSH~1.ORI

DATA~1

LOGIN~1

It is also a good idea to keep in mind that the short filename is generated from the initial characters of the long filename, so it is better to differentiate names in the first few characters.  As an example, these names:

WorkReport.January.Data

WorkReport.February.Data

WorkReport.March.Data

result in these short names, which are not very distinguishable:

WORKRE~1.DAT

WORKRE~2.DAT

WORKRE~3.DAT

These names, however:

January.WorkReport.Data

February.WorkReport.Data

March.WorkReport.Data

result in the more descriptive short names:

JANUAR~1.DAT

FEBRUA~1.DAT

MARCHW~1.DAT

FILES

/usr/lib/fs/pcfs/mount

/usr/kernel/fs/pcfs

SEE ALSO

chgrp(1), chown(1), eject(1), fdformat(1), volcheck(1), mount(1M), mount_pcfs(1M), vold(1M), ctime(3C), vfstab(4), pcmem(7D)

x86 Only

fdisk(1M)

WARNINGS

It is not recommended to physically eject an DOS floppy while the device is still mounted as pcfs.  In addition, if Volume Management is managing a device, the eject(1) command should be used before physically removing media. 

x86:  When mounting pcfs on a hard disk, the first block on that device must contain a valid fdisk partition table. 

pcfs has no provision for handling owner-IDs or group-IDs on files.  You may experience various errors coming from chown(1) or chgrp(1).  This is not a problem.  It is a limitation of pcfs. 

NOTES

The following are all the legal characters that are allowed in short file names (or their extensions) in pcfs:

0-9, A-Z, and $#&@!%()-{}<>‘_^~|’

Since SunOS and DOS operating systems use different character sets, and have different requirements for the text file format, one can use the

dos2unix

or

unix2dos

commands to convert files between them. 

pcfs offers a convenient transportation vehicle for files between Sun Workstations and PCs.  Since the DOS disk format was designed for use under DOS, it is quite inefficient to operate under the SunOS system.  Therefore, it should not be used as the format for a regular local storage.  You should use ufs for local storage within the SunOS system. 

Though long filenames can contain spaces (just as in UNIX filenames), some utilities may be confused by them. 

This implementation of pcfs conforms to the behavior exhibited by Windows 95 version 4.00.950. 

BUGS

pcfs should handle the disk change condition in the same way that DOS does, so that the user does not need to unmount the file system to change floppies. 

pcfs is currently not NFS mountable.  Trying to mount pcfs through NFS will fail with an EACCES error. 

pcfs does not include files with the hidden or system bits set when listing or searching a directory. 

SunOS 5.6  —  Last change: 16 Dec 1996

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026