# Copyright 1996-1998,2001,2002 Alain Knaff.
# This file is part of mtools.
#
# Mtools is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Mtools is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Mtools.  If not, see <http://www.gnu.org/licenses/>.

# Example mtools.conf files.  Uncomment the lines which correspond to
# your architecture and comment out the "SAMPLE FILE" line below
SAMPLE FILE

# # Linux floppy drives
# drive a: file="/dev/fd0" exclusive
# drive b: file="/dev/fd1" exclusive

# # First SCSI hard disk partition
# drive c: file="/dev/sda1"

# # First IDE hard disk partition
# drive c: file="/dev/hda1"

# # dosemu floppy image
# drive m: file="/var/lib/dosemu/diskimage"

# # dosemu hdimage
# drive n: file="/var/lib/dosemu/diskimage" offset=3840

# # Atari ramdisk image
# drive o: file="/tmp/atari_rd" offset=136

# # ZIP disk for Solaris:
# Drive X is ZIP-100 at target 5
# drive X: file="/dev/rdsk/c0t5d0s2" partition=4 scsi=1 nodelay

# # ZIP disk for SunOS:
# # Zip drive is at target 5, which default kernel calls tape st1 !!
# drive Y: file="/dev/rsd5c" partition=4 scsi=1 nodelay

# # autoselect zip drive/floppy on HP-UX 9/10
#    drive a: file="/dev/rdsk/c201d5"      exclusive partition=4
#    drive a: file="/dev/rdsk/c201d5s0"    exclusive partition=4
#    drive a: file="/dev/rfloppy/c201d0s0" exclusive

#          A/UX target 5 on 1st scsi bus   jaz or zip
# drive X: file="/dev/rdsk/c105d0s31"      partition=4


# Some examples for BeOS.
# floppy drive. hardcoded in devices.c, so no real need to define it here
#drive a: file="/dev/floppy_disk" exclusive
# ZIP drive on SCSI ID 6
#drive z: file="/dev/scsi_disk_060" offset=16384 fat_bits=16                        

# SCO Unix 3.2v4
# # Floppy disk drives
#
# drive a: file="/dev/install" exclusive
# drive b: file="/dev/install1" exclusive
#  
# # SCSI hard disk partitions
#  
# drive c: file="/dev/dsk/0sC"
# drive d: file="/dev/dsk/0sD"
# drive e: file="/dev/dsk/0sE"
# drive f: file="/dev/dsk/0sF"
# drive g: file="/dev/dsk/0sG"
# drive h: file="/dev/dsk/0sH"

# # uncomment the following line to display all file names in lower
# # case by default
# mtools_lower_case=1
