NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | FILES | SEE ALSO | WARNINGS | NOTES | BUGS
#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", structpcfs_args, struct *pc_argp, sizeof (struct pcfs_args));
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.
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
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.
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.
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
chgrp(1), chown(1), dos2unix(1), eject(1), fdformat(1), unix2dos(1), volcheck(1), mount(1M), mount_pcfs(1M), vold(1M), ctime(3C), vfstab(4), pcmem(7D)
Physically ejecting a DOS floppy while the device is still mounted as pcfs is not recommended. 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.
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
or
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.
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 does not include files with the hidden or system bits set when listing or searching a directory.
NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | FILES | SEE ALSO | WARNINGS | NOTES | BUGS