mirror of
https://github.com/obarthel/amiga-smbfs.git
synced 2025-12-08 14:58:35 +00:00
This commit was manufactured by cvs2svn to create tag 'V1_73'.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/tags/V1_73@24 26594b9e-b914-4e86-b7a1-9402bd427170
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
# The "checkoutlist" file is used to support additional version controlled
|
||||
# administrative files in $CVSROOT/CVSROOT, such as template files.
|
||||
#
|
||||
# The first entry on a line is a filename which will be checked out from
|
||||
# the corresponding RCS file in the $CVSROOT/CVSROOT directory.
|
||||
# The remainder of the line is an error message to use if the file cannot
|
||||
# be checked out.
|
||||
#
|
||||
# File format:
|
||||
#
|
||||
# [<whitespace>]<filename>[<whitespace><error message>]<end-of-line>
|
||||
#
|
||||
# comment lines begin with '#'
|
||||
@@ -1,15 +0,0 @@
|
||||
# The "commitinfo" file is used to control pre-commit checks.
|
||||
# The filter on the right is invoked with the repository and a list
|
||||
# of files to check. A non-zero exit of the filter program will
|
||||
# cause the commit to be aborted.
|
||||
#
|
||||
# The first entry on a line is a regular expression which is tested
|
||||
# against the directory that the change is being committed to, relative
|
||||
# to the $CVSROOT. For the first match that is found, then the remainder
|
||||
# of the line is the name of the filter to run.
|
||||
#
|
||||
# If the repository name does not match any of the regular expressions in this
|
||||
# file, the "DEFAULT" line is used, if it is specified.
|
||||
#
|
||||
# If the name "ALL" appears as a regular expression it is always used
|
||||
# in addition to the first matching regex or "DEFAULT".
|
||||
@@ -1,21 +0,0 @@
|
||||
# Set this to "no" if pserver shouldn't check system users/passwords
|
||||
#SystemAuth=no
|
||||
|
||||
# Put CVS lock files in this directory rather than directly in the repository.
|
||||
#LockDir=/var/lock/cvs
|
||||
|
||||
# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top
|
||||
# level of the new working directory when using the `cvs checkout'
|
||||
# command.
|
||||
#TopLevelAdmin=no
|
||||
|
||||
# Set `LogHistory' to `all' or `TOEFWUPCGMAR' to log all transactions to the
|
||||
# history file, or a subset as needed (ie `TMAR' logs all write operations)
|
||||
#LogHistory=TOEFWUPCGMAR
|
||||
|
||||
# Set `RereadLogAfterVerify' to `always' (the default) to allow the verifymsg
|
||||
# script to change the log message. Set it to `stat' to force CVS to verify# that the file has changed before reading it (this can take up to an extra
|
||||
# second per directory being committed, so it is not recommended for large
|
||||
# repositories. Set it to `never' (the previous CVS behavior) to prevent
|
||||
# verifymsg scripts from changing the log message.
|
||||
#RereadLogAfterVerify=always
|
||||
@@ -1,19 +0,0 @@
|
||||
# This file affects handling of files based on their names.
|
||||
#
|
||||
# The -m option specifies whether CVS attempts to merge files.
|
||||
#
|
||||
# The -k option specifies keyword expansion (e.g. -kb for binary).
|
||||
#
|
||||
# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
|
||||
#
|
||||
# wildcard [option value][option value]...
|
||||
#
|
||||
# where option is one of
|
||||
# -f from cvs filter value: path to filter
|
||||
# -t to cvs filter value: path to filter
|
||||
# -m update methodology value: MERGE or COPY
|
||||
# -k expansion mode value: b, o, kkv, &c
|
||||
#
|
||||
# and value is a single-quote delimited value.
|
||||
# For example:
|
||||
#*.gif -k 'b'
|
||||
@@ -1,21 +0,0 @@
|
||||
# The "editinfo" file is used to allow verification of logging
|
||||
# information. It works best when a template (as specified in the
|
||||
# rcsinfo file) is provided for the logging procedure. Given a
|
||||
# template with locations for, a bug-id number, a list of people who
|
||||
# reviewed the code before it can be checked in, and an external
|
||||
# process to catalog the differences that were code reviewed, the
|
||||
# following test can be applied to the code:
|
||||
#
|
||||
# Making sure that the entered bug-id number is correct.
|
||||
# Validating that the code that was reviewed is indeed the code being
|
||||
# checked in (using the bug-id number or a seperate review
|
||||
# number to identify this particular code set.).
|
||||
#
|
||||
# If any of the above test failed, then the commit would be aborted.
|
||||
#
|
||||
# Actions such as mailing a copy of the report to each reviewer are
|
||||
# better handled by an entry in the loginfo file.
|
||||
#
|
||||
# One thing that should be noted is the the ALL keyword is not
|
||||
# supported. There can be only one entry that matches a given
|
||||
# repository.
|
||||
@@ -1,27 +0,0 @@
|
||||
# The "loginfo" file controls where "cvs commit" log information
|
||||
# is sent. The first entry on a line is a regular expression which must match
|
||||
# the directory that the change is being made to, relative to the
|
||||
# $CVSROOT. If a match is found, then the remainder of the line is a filter
|
||||
# program that should expect log information on its standard input.
|
||||
#
|
||||
# If the repository name does not match any of the regular expressions in this
|
||||
# file, the "DEFAULT" line is used, if it is specified.
|
||||
#
|
||||
# If the name ALL appears as a regular expression it is always used
|
||||
# in addition to the first matching regex or DEFAULT.
|
||||
#
|
||||
# You may specify a format string as part of the
|
||||
# filter. The string is composed of a `%' followed
|
||||
# by a single format character, or followed by a set of format
|
||||
# characters surrounded by `{' and `}' as separators. The format
|
||||
# characters are:
|
||||
#
|
||||
# s = file name
|
||||
# V = old version number (pre-checkin)
|
||||
# v = new version number (post-checkin)
|
||||
# t = tag or branch name
|
||||
#
|
||||
# For example:
|
||||
#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog
|
||||
# or
|
||||
#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog
|
||||
@@ -1,26 +0,0 @@
|
||||
# Three different line formats are valid:
|
||||
# key -a aliases...
|
||||
# key [options] directory
|
||||
# key [options] directory files...
|
||||
#
|
||||
# Where "options" are composed of:
|
||||
# -i prog Run "prog" on "cvs commit" from top-level of module.
|
||||
# -o prog Run "prog" on "cvs checkout" of module.
|
||||
# -e prog Run "prog" on "cvs export" of module.
|
||||
# -t prog Run "prog" on "cvs rtag" of module.
|
||||
# -u prog Run "prog" on "cvs update" of module.
|
||||
# -d dir Place module in directory "dir" instead of module name.
|
||||
# -l Top-level directory only -- do not recurse.
|
||||
#
|
||||
# NOTE: If you change any of the "Run" options above, you'll have to
|
||||
# release and re-checkout any working directories of these modules.
|
||||
#
|
||||
# And "directory" is a path to a directory relative to $CVSROOT.
|
||||
#
|
||||
# The "-a" option specifies an alias. An alias is interpreted as if
|
||||
# everything on the right of the "-a" had been typed on the command line.
|
||||
#
|
||||
# You can encode a module within a module by using the special '&'
|
||||
# character to interpose another module into the current module. This
|
||||
# can be useful for creating a module that consists of many directories
|
||||
# spread out over the entire source repository.
|
||||
@@ -1,12 +0,0 @@
|
||||
# The "notify" file controls where notifications from watches set by
|
||||
# "cvs watch add" or "cvs edit" are sent. The first entry on a line is
|
||||
# a regular expression which is tested against the directory that the
|
||||
# change is being made to, relative to the $CVSROOT. If it matches,
|
||||
# then the remainder of the line is a filter program that should contain
|
||||
# one occurrence of %s for the user to notify, and information on its
|
||||
# standard input.
|
||||
#
|
||||
# "ALL" or "DEFAULT" can be used in place of the regular expression.
|
||||
#
|
||||
# For example:
|
||||
#ALL mail -s "CVS notification" %s
|
||||
@@ -1,13 +0,0 @@
|
||||
# The "rcsinfo" file is used to control templates with which the editor
|
||||
# is invoked on commit and import.
|
||||
#
|
||||
# The first entry on a line is a regular expression which is tested
|
||||
# against the directory that the change is being made to, relative to the
|
||||
# $CVSROOT. For the first match that is found, then the remainder of the
|
||||
# line is the name of the file that contains the template.
|
||||
#
|
||||
# If the repository name does not match any of the regular expressions in this
|
||||
# file, the "DEFAULT" line is used, if it is specified.
|
||||
#
|
||||
# If the name "ALL" appears as a regular expression it is always used
|
||||
# in addition to the first matching regex or "DEFAULT".
|
||||
@@ -1,20 +0,0 @@
|
||||
# The "taginfo" file is used to control pre-tag checks.
|
||||
# The filter on the right is invoked with the following arguments:
|
||||
#
|
||||
# $1 -- tagname
|
||||
# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d
|
||||
# $3 -- repository
|
||||
# $4-> file revision [file revision ...]
|
||||
#
|
||||
# A non-zero exit of the filter program will cause the tag to be aborted.
|
||||
#
|
||||
# The first entry on a line is a regular expression which is tested
|
||||
# against the directory that the change is being committed to, relative
|
||||
# to the $CVSROOT. For the first match that is found, then the remainder
|
||||
# of the line is the name of the filter to run.
|
||||
#
|
||||
# If the repository name does not match any of the regular expressions in this
|
||||
# file, the "DEFAULT" line is used, if it is specified.
|
||||
#
|
||||
# If the name "ALL" appears as a regular expression it is always used
|
||||
# in addition to the first matching regex or "DEFAULT".
|
||||
@@ -1,21 +0,0 @@
|
||||
# The "verifymsg" file is used to allow verification of logging
|
||||
# information. It works best when a template (as specified in the
|
||||
# rcsinfo file) is provided for the logging procedure. Given a
|
||||
# template with locations for, a bug-id number, a list of people who
|
||||
# reviewed the code before it can be checked in, and an external
|
||||
# process to catalog the differences that were code reviewed, the
|
||||
# following test can be applied to the code:
|
||||
#
|
||||
# Making sure that the entered bug-id number is correct.
|
||||
# Validating that the code that was reviewed is indeed the code being
|
||||
# checked in (using the bug-id number or a seperate review
|
||||
# number to identify this particular code set.).
|
||||
#
|
||||
# If any of the above test failed, then the commit would be aborted.
|
||||
#
|
||||
# Actions such as mailing a copy of the report to each reviewer are
|
||||
# better handled by an entry in the loginfo file.
|
||||
#
|
||||
# One thing that should be noted is the the ALL keyword is not
|
||||
# supported. There can be only one entry that matches a given
|
||||
# repository.
|
||||
@@ -1,647 +0,0 @@
|
||||
smbfs 1.19 (27.11.2000)
|
||||
|
||||
- Fixed ACTION_FINDOUTPUT implementation; the memory to hold the
|
||||
name of the file to be created was released before the file
|
||||
was created. This could cause garbage to be written to the
|
||||
output file.
|
||||
|
||||
- Fixed ACTION_COPY_DIR implementation; the name of the lock to
|
||||
be duplicated did not get duplicated.
|
||||
|
||||
- Fixed ACTION_EXAMINE_OBJECT and ACTION_EXAMINE_NEXT
|
||||
implementations; protection bits are now reported 'properly'
|
||||
with respect to read/write access.
|
||||
|
||||
|
||||
smbfs 1.20 (27.11.2000)
|
||||
|
||||
- ACTION_EXAMINE_NEXT now filters out SMB names that include
|
||||
'/' or ':' characters.
|
||||
|
||||
|
||||
smbfs 1.21 (28.11.2000)
|
||||
|
||||
- Modified ACTION_RENAME_DISK to remove the volume node before
|
||||
changing it. It also sends the appropriate diskremove/diskinserted
|
||||
input events now.
|
||||
|
||||
- Reorganized and rewrote the code to reduce dependencies on
|
||||
the compiler runtime library.
|
||||
|
||||
- Unified error reporting code.
|
||||
|
||||
- SMBFS can now be launched from Workbench using the same parameters
|
||||
you would use when starting it from Shell. Error reporting
|
||||
has been adapted to show an error requester and to pool error
|
||||
messages rather than printing them to the console.
|
||||
|
||||
|
||||
smbfs 1.22 (30.11.2000)
|
||||
|
||||
- Fixed the test that looks for file/lock access mode collisions.
|
||||
|
||||
- No longer changes the case of the password; there is now an
|
||||
option to make the change.
|
||||
|
||||
- Fixed ACTION_SAME_LOCK which was comparing the same lock with
|
||||
itself.
|
||||
|
||||
- Added support for ACTION_EXAMINE_ALL, ACTION_EXAMINE_ALL_END
|
||||
and ACTION_WRITE_PROTECT packet types.
|
||||
|
||||
- No longer allows for files and locks to refer to "." and "..".
|
||||
The use of the backslash character '\' is also disallowed in
|
||||
Amiga file/directory names.
|
||||
|
||||
|
||||
smbfs 1.23 (30.11.2000)
|
||||
|
||||
- In the ExNext()/ExAll() handling functions local error variables
|
||||
were shadowing each other. Fixed.
|
||||
|
||||
- The error reporting requester now also lists the name of the
|
||||
service to connect to. This should help in telling different
|
||||
invocations of the program apart.
|
||||
|
||||
- The size of the directory cache is now a configurable option.
|
||||
|
||||
- Added a new option which forces all name comparisons to be
|
||||
done in a case-sensitive fashion.
|
||||
|
||||
- Reading/writing data to/from a file in chunks larger than
|
||||
65535 bytes could fail and cause the file system to hang.
|
||||
|
||||
|
||||
smbfs 1.24 (1.12.2000)
|
||||
|
||||
- Added an option to allow hidden files to be omitted from
|
||||
directory listings.
|
||||
|
||||
- Improved upon the error reporting in the code that directly
|
||||
calls the TCP/IP API functions.
|
||||
|
||||
- Reorganized the AmigaDOS packet handling switch..case
|
||||
list.
|
||||
|
||||
- Added support for ACTION_MORE_CACHE packet type. The
|
||||
cache in this context refers to the directory scanning
|
||||
cache.
|
||||
|
||||
- Improved upon the host lookup error reporting code.
|
||||
|
||||
- Added support for file name translation such as via the
|
||||
CrossDOS translation table files.
|
||||
|
||||
|
||||
smbfs 1.25 (2.12.2000)
|
||||
|
||||
- SMBFS now displays some configuration information as soon as
|
||||
it has successfully connected to the file server and is ready
|
||||
for action. This output can be suppressed with the new
|
||||
"QUIET" command line parameter.
|
||||
|
||||
- When removing a directory, the error code returned is examined
|
||||
more closely to see whether the directory was not yet empty.
|
||||
|
||||
- When setting the protection bits of a file or directory, the
|
||||
file system now treats either 'protected from deletion' and
|
||||
'protected from writing' as indications to mark a file as
|
||||
write protected. Previously, a file had to be both protected
|
||||
from deletion and from writing to be treated as write protected.
|
||||
|
||||
- Cleaned up the program's data structures and eliminated all
|
||||
static data that would hold state information. The entire
|
||||
client side is now completely reentrant.
|
||||
|
||||
|
||||
smbfs 1.26 (3.12.2000)
|
||||
|
||||
- File and directory names are no longer duplicated in the
|
||||
SMB abstraction layer. The strings supplied by the Amiga
|
||||
file system layer are referenced instead.
|
||||
|
||||
- Changed the way the ACTION_MORE_CACHE implementation returns
|
||||
its result code to be compatible with current practices.
|
||||
|
||||
|
||||
smbfs 1.27 (4.12.2000)
|
||||
|
||||
- The changes I made to the file read command in order to allow it
|
||||
to read more than 65535 bytes at a time did not allow read
|
||||
attempts at the end of the file to come out properly. Fixed.
|
||||
|
||||
- Integrated password encryption code lifted from Samba. Hope
|
||||
it works as it should, because if it doesn't, I wouldn't know
|
||||
how to fix it...
|
||||
|
||||
|
||||
smbfs 1.28 (4.12.2000)
|
||||
|
||||
- Oh dear, more fixes to the password encryption code and the
|
||||
connection setup to follow it. This time I managed to test the
|
||||
code briefly with Samba and password encryption enabled.
|
||||
Amazingly, it seems to work this time!
|
||||
|
||||
|
||||
smbfs 1.29 (6.12.2000)
|
||||
|
||||
- Writes larger than 65535 bytes could stall and slow down the
|
||||
file system. Fixed. [Thore Böckelmann]
|
||||
|
||||
- The ACTION_MORE_CACHE implementation never returned the total
|
||||
number of cache entries allocated. Fixed. [Thore Böckelmann]
|
||||
|
||||
- Plain text passwords didn't seem to work any more after I made
|
||||
the changes to allow for encrypted passwords to be used. Fixed.
|
||||
|
||||
|
||||
smbfs 1.30 (6.12.2000)
|
||||
|
||||
- Changed the structure of the share names by which the file system
|
||||
refers to the data on the server; they all start with a backslash
|
||||
now. This seems to help NT and doesn't break the rest.
|
||||
|
||||
- For file shares exported using 'share level security', no passwords
|
||||
will be transmitted.
|
||||
|
||||
|
||||
smbfs 1.31 (7.12.2000)
|
||||
|
||||
- The ACTION_EXAMINE and ACTION_EXAMINE_FH implementations now verify
|
||||
that the name to return will fit into the FileInfoBlock's limited
|
||||
buffer space.
|
||||
|
||||
- Deleting files and directories from a directory currently being
|
||||
scanned via ACTION_EXAMINE_NEXT or ACTION_EXAMINE_ALL will now cause
|
||||
the directory scanner to restart. This is ugly, I know, but at least
|
||||
it won't cause the scanning process to hickup or lose entries
|
||||
directory entries during its course of duty. The flip side is that
|
||||
the scanner will probably return some entries twice. There must
|
||||
be a better way to implement this, but for now, this is it.
|
||||
|
||||
- Tried to make device and volume node removal safer.
|
||||
|
||||
- SMBFS now always adds a device node to go along with the volume node.
|
||||
It's safer that way because for every file system you either have a
|
||||
single device node in the system (and no volume node) or a volume
|
||||
node *and* a device node. If the device node is missing, there's
|
||||
typically something wrong and some application software cannot handle
|
||||
this case properly. SMBFS will attempt to add a new, unique device
|
||||
node every time it is launched.
|
||||
|
||||
- When specifying the name of the file system device to add, SMBFS
|
||||
now complains if that name already exists.
|
||||
|
||||
|
||||
smbfs 1.32 (8.12.2000)
|
||||
|
||||
- File and directory modification dates were always off by six hours and
|
||||
one second. I don't know how that happens, it doesn't seem to be a bug
|
||||
in the date conversion routines. I worked around the problem by adding
|
||||
and subtracting an adjustment value.
|
||||
|
||||
|
||||
smbfs 1.33 (10.12.2000)
|
||||
|
||||
- The ACTION_PARENT_DIR implementation did not return a ZERO lock for
|
||||
the root directory. Fixed. [Rudolph Riedel]
|
||||
|
||||
- Replaced the doubly-linked Exec lists with skip lists which
|
||||
are better suited for the repeated lookup operations that
|
||||
are so common in the file system. This time the list code
|
||||
seems to work properly.
|
||||
|
||||
- Added -- largely untested -- time and date decoding routines for
|
||||
directory entries returned by NT.
|
||||
|
||||
|
||||
smbfs 1.34 (10.12.2000)
|
||||
|
||||
- Had to take out the skip list code again since it did not seem to
|
||||
work reliably.
|
||||
|
||||
- Further tweaking to the NT date and time decoding code.
|
||||
|
||||
|
||||
smbfs 1.35 (10.12.2000)
|
||||
|
||||
- Small modification to the ACTION_EXAMINE_NEXT/ACTION_EXAMINE_ALL code
|
||||
which tries to work around a strange effect caused by Amiga Samba
|
||||
returning the contents of an empty drawer.
|
||||
|
||||
|
||||
smbfs 1.36 (11.12.2000)
|
||||
|
||||
- More fixes to the NT date and time conversion code and the
|
||||
strange six hour fixup that seems to be necessary for the
|
||||
'regular' time conversion to work.
|
||||
|
||||
|
||||
smbfs 1.37 (11.12.2000)
|
||||
|
||||
- Replaced the entire 'regular' date and time conversion code. The
|
||||
strange six hour fixup is no longer necessary.
|
||||
|
||||
|
||||
smbfs 1.38 (11.12.2000)
|
||||
|
||||
- Ditched the packet size kludges in "sock.c" and "proc.c" I had put
|
||||
in there. It seems that only the 'smba_write()'/'smba_read()' code
|
||||
could trigger it, and that code was fixed quite a while ago.
|
||||
|
||||
- Migrated some code changes from the Samba source over to the
|
||||
directory scanner.
|
||||
|
||||
- Maximum transmission size per packet is now the same as the
|
||||
number the server allowed us to use rather than a fixed number
|
||||
imposed by VM page sizes.
|
||||
|
||||
- Tried to clean up more of the code.
|
||||
|
||||
- Discovered that the 'smb_valid_packet()' routine never could have
|
||||
worked and fixed it so that it now finally does what it should do.
|
||||
|
||||
- Better error propagation for some routines in "proc.c".
|
||||
|
||||
- More streamlined error testing code.
|
||||
|
||||
|
||||
smbfs 1.39 (11.12.2000)
|
||||
|
||||
- Almost fixed several bugs in 'smb_proc_readdir_long()'.
|
||||
|
||||
- 'smb_proc_readdir_long()' does not work correctly. It only seems to
|
||||
work, but will fail if the scanner is to restart before the entire
|
||||
directory is read. Restored the old behaviour :(
|
||||
|
||||
|
||||
smbfs 1.40 (13.12.2000)
|
||||
|
||||
- Took out some more unused and unnecessary code.
|
||||
|
||||
- Rewrote the time and date conversion routines.
|
||||
|
||||
- Modified the directory reading code so that it no longer relies
|
||||
upon the last directory entry index which doesn't seem to be
|
||||
correct most of the time.
|
||||
|
||||
- Directory scanning errors are now flagged as such.
|
||||
|
||||
|
||||
smbfs 1.41 (16.12.2000)
|
||||
|
||||
- In the SMB abstraction layer, the directory cache is now invalidated
|
||||
only if the respective action that could have invalidated it succeeds.
|
||||
|
||||
- Now clears the directory cache only if the respective action would
|
||||
have affected the directory being cached.
|
||||
|
||||
- In debug mode [Ctrl]+F will display a list of open files and allocated
|
||||
locks.
|
||||
|
||||
- Added very silly support for ACTION_SET_COMMENT packet.
|
||||
|
||||
- Found an interesting bug fix for 'smb_proc_readdir_long()' in the
|
||||
Linux 2.4.0 kernel which seemed worth integrating into the file system.
|
||||
|
||||
|
||||
smbfs 1.42 (19.12.2000)
|
||||
|
||||
- Integrated Chris Hertel's broadcast name query code. This means that
|
||||
the name of the host whose file shares you want to access need no
|
||||
longer be in the hosts database. However, you still cannot refer to
|
||||
a host solely by its IP address.
|
||||
|
||||
|
||||
smbfs 1.43 (21.12.2000)
|
||||
|
||||
- The integrated broadcase name query code would conflict with the
|
||||
DNS lookup. Fixed. [Thore Böckelmann]
|
||||
|
||||
- The NetBIOS name query code now retries four times to get a response
|
||||
out of the network.
|
||||
|
||||
- Put the mysterious 6 hour time offset fix back in.
|
||||
|
||||
|
||||
smbfs 1.44 (29.12.2000)
|
||||
|
||||
- Rewrote the host lookup error reporting code to use the appropriate
|
||||
API function.
|
||||
|
||||
- Discovered that all the functionality required by SMBFS was supported
|
||||
by the original free AmiTCP 3.0 release. Changed the "bsdsocket.library"
|
||||
open parameters.
|
||||
|
||||
- The ACTION_EXAMINE_OBJECT implementation consistently got the name of
|
||||
the root directory wrong. Fixed.
|
||||
|
||||
|
||||
smbfs 1.45 (7.1.2001)
|
||||
|
||||
- Discovered why file and directory creation dates were wrong by about
|
||||
six hours. Fixed.
|
||||
|
||||
- The order of the parameters passed to the 'ExAll()' filter hook was
|
||||
wrong. Fixed [Thorsteinn Sveinsson and Matt Sealey].
|
||||
|
||||
|
||||
smbfs 1.46 (1.2.2001)
|
||||
|
||||
- Removed the workarounds for the mysterious 'off by six hours' bug.
|
||||
The time delta value added was consistently wrong.
|
||||
|
||||
|
||||
smbfs 1.47 (18.2.2001)
|
||||
|
||||
- The name of the domain/workgroup, the name of the user and the
|
||||
password to be used can now be preset using environment variables.
|
||||
|
||||
- Changed the command line argument template to work better with the
|
||||
newly introduced environment variable settings.
|
||||
|
||||
|
||||
smbfs 1.48 (3.3.2001)
|
||||
|
||||
- Modified the command template so that the final parameter can no
|
||||
longer cause all other parameters to be swallowed. Also updated
|
||||
the documentation.
|
||||
|
||||
|
||||
smbfs 1.49 (3.3.2001)
|
||||
|
||||
- Handling of ACTION_FINDUPDATE needed improving. It should have
|
||||
created a file that didn't already exist. It now does [David Gerber].
|
||||
|
||||
|
||||
smbfs 1.50 (4.3.2001)
|
||||
|
||||
- ACTION_FINDUPDATE is now associated with a shared lock. It used
|
||||
to be an exclusive lock [David Gerber].
|
||||
|
||||
- The test to follow ACTION_FINDUPDATE that determines whether the
|
||||
file to open already exists now also tries to 'stat()' the file
|
||||
in question to find out whether it exists.
|
||||
|
||||
|
||||
smbfs 1.51 (13.3.2001)
|
||||
|
||||
- Whoops. The new code to pull data from environment variables didn't
|
||||
actually check whether the work group name could be set up properly
|
||||
and thus didn't complain about it either. It now notifies you if
|
||||
no work group name was provided and none could be found.
|
||||
|
||||
|
||||
smbfs 1.52 (22.6.2001)
|
||||
|
||||
- Added another option which allows you to preset the time zone offset
|
||||
to use when translating between the local time and the SMB server
|
||||
time. Using the default locale doesn't work for that purpose all the
|
||||
time since there are so many misconfigured servers out there.
|
||||
|
||||
- The ACTION_DIE packet didn't have the desired effect if the file
|
||||
system didn't have a reason to wait for any resources to be
|
||||
released again. It just wouldn't quit. Now it does.
|
||||
|
||||
- Before it exits, the file system no longer posts a disk change
|
||||
event if it was launched from Workbench. I found that the steps
|
||||
taken so far could end up deadlocking Workbench.
|
||||
|
||||
|
||||
smbfs 1.53 (26.6.2001)
|
||||
|
||||
- Changed the file name parser; it should now be possible to tie assigns
|
||||
to files and directories on an smb volume. Since the updated file name
|
||||
translation code also is a bit smarter about when to use which
|
||||
file name separator character, accesses to the media should be a
|
||||
bit faster, too.
|
||||
|
||||
- When translating path names, trailing '/' characters are now properly
|
||||
parsed, i.e. Lock("/",...) should always bring up the parent directory
|
||||
[Matt Sealey].
|
||||
|
||||
- Duplicating a ZERO lock now works as expected.
|
||||
|
||||
|
||||
smbfs 1.54 (27.6.2001)
|
||||
|
||||
- Directory and file creation didn't work that properly after applying
|
||||
the changes I made to the parser. Fixed [Matt Sealey].
|
||||
|
||||
|
||||
smbfs 1.55 (3.3.2002)
|
||||
|
||||
- At least samba 2.2.2-12 on linux can send total_data of 0 bytes. This
|
||||
caused sock.c/smb_receive_trans2() malloc() (==AllocVecPooled) to fail
|
||||
on smba_readdir(). Fixed [Harry Sintonen].
|
||||
|
||||
- Added quickfix against crash if smb_abstraction.c/smb_smba_readdir()
|
||||
fails. This is by no means a real fix, but at least it doesn't crash
|
||||
[Harry Sintonen].
|
||||
|
||||
- There is definitely something fishy in the smbfs restart/retry scheme,
|
||||
it just doesn't work properly (all state data has to be, and is,
|
||||
reset when restarts occur, but still it tries to use the old data as if
|
||||
nothing happened). Someone should really take a closer look at this
|
||||
[Harry Sintonen].
|
||||
|
||||
|
||||
smbfs 1.56 (3.9.2002)
|
||||
|
||||
- Rewrote the Setup() code which allocates and initializes the device and
|
||||
volume nodes. Lost all Forbid()..Permit() pairs on the way, making the
|
||||
code more robust and less weird.
|
||||
|
||||
- In proc.c/smb_proc_readdir_long() now specifically watches for the
|
||||
smb_trans2_request() function return empty data and parameter values.
|
||||
This is now treated as an attempt to read from an empty directory.
|
||||
Previously, there was a slight change that the information was
|
||||
taken seriously even if NULL was returned.
|
||||
|
||||
|
||||
smbfs 1.57 (3.9.2002)
|
||||
|
||||
- Ran the code through GCC and rewrote the code to get rid of the compiler
|
||||
warnings that appeared to have something more serious about them. This
|
||||
includes, for example, comparisons between signed and unsigned values.
|
||||
|
||||
|
||||
smbfs 1.58 (5.9.2002)
|
||||
|
||||
- Rebuilt using my own TCP/IP stack SDK. Rebuilding the code with the
|
||||
Miami SDK should still be possible, though.
|
||||
|
||||
- Changed the way smb_proc_readdir_long() aborts the job if no valid
|
||||
data is read.
|
||||
|
||||
|
||||
smbfs 1.59 (10.9.2003) [Harry Sintonen <sintonen -at- iki -dot- fi>]
|
||||
|
||||
- Fixed ACTION_DELETE_OBJECT to restart directory scanning, it
|
||||
searched for wrong object. Fixes the problem where every other
|
||||
file was skipped when deleting directory.
|
||||
|
||||
|
||||
smbfs 1.60 (11.2.2004) [Peter Riede <Noster-Riede -at- T-Online -dot- de>]
|
||||
|
||||
- Fixed ACTION_SEEK, it doesn't works if followed by ACTION_WRITE.
|
||||
Fixes the problem by using the SMBlseek packet instead of just
|
||||
remembering the position in the local FileNode structure
|
||||
|
||||
- Fixed ACTION_SETFILESIZE, has returned an errorcode of 37 instead
|
||||
of 0L on success.
|
||||
|
||||
- Added support for the ACTION_LOCK_RECORD and ACTION_UNLOCK_RECORD
|
||||
packets.
|
||||
|
||||
|
||||
smbfs 1.61 (27.4.2004)
|
||||
|
||||
- Reworked the ACTION_SEEK implementation. Turns out that the SMB
|
||||
lseek packet only seems to work for the Samba server but produces
|
||||
unpredictable results with Microsoft flavoured servers. The new
|
||||
code, which helps to avoid trouble with overlapping write access
|
||||
and seeks, now performs much like the old one except that it
|
||||
"notifies" the SMB server of the new file position to be used.
|
||||
Tested both with Samba and Windows XP: works as it should.
|
||||
|
||||
|
||||
smbfs 1.62 (8.5.2004)
|
||||
|
||||
- Added sanity checks to the record locking code. For example,
|
||||
locking a record of length 0 must be considered illegal. Also,
|
||||
since the protocol deals with 32 bit signed integers for
|
||||
file position and record length, parameters that are "too large"
|
||||
and come out as negative values are now rejected.
|
||||
|
||||
|
||||
smbfs 1.63 (9.5.2004)
|
||||
|
||||
- Added more sanity checks to the record locking code, this time
|
||||
to avoid integer overflows.
|
||||
|
||||
- Added support for the SMB 'archive' and 'system' file attributes,
|
||||
which are mapped to the Amiga 'archived' and 'pure' protection
|
||||
bits.
|
||||
|
||||
- Cleaned up the header files.
|
||||
|
||||
|
||||
smbfs 1.64 (13.5.2004)
|
||||
|
||||
- ExamineFH() did not fill in the file protection bits. Fixed.
|
||||
|
||||
- Ported to AmigaOS4.
|
||||
|
||||
|
||||
smbfs 1.65 (16.5.2004)
|
||||
|
||||
- The port numbers of the NetBIOS session and name services are no
|
||||
longer hard-coded. They are now looked up (netbios-ns/udp and
|
||||
netbios-ssn/tcp), and if that fails, the hard-coded default port
|
||||
numbers are used instead.
|
||||
|
||||
- Tried to reduce the risk of triggering buffer overflows by replacing
|
||||
calls to strcpy/strcat. This revealed weaknesses in a number of
|
||||
places, including the code that fills in the names of the directory
|
||||
entries.
|
||||
|
||||
- Instead of calling memcpy(), the code now invokes exec.library/CopyMem(),
|
||||
which should be a wee bit faster than what the 'C' runtime library can do.
|
||||
|
||||
- Merged with Peter Riede's changes: for small packets to be sent,
|
||||
SMBwrite is used instead of SMBwritebraw (which greatly enhances
|
||||
performance), the server max_xmit field is initialized differently
|
||||
if the session was opened with a SMBtconx packet and ACTION_SEEK
|
||||
no longer sets the error code to an undefined value in case of
|
||||
success.
|
||||
|
||||
|
||||
smbfs 1.66 (10.6.2004)
|
||||
|
||||
- Added a paranoia check to the ExAll() implementation which should
|
||||
avoid trouble with extremely short data buffers.
|
||||
|
||||
|
||||
smbfs 1.67 (27.5.2005)
|
||||
|
||||
- Replaced the long NT date conversion code with something hopefully
|
||||
much more robust. The results so far are both encouraging and
|
||||
irritating. Dates that previously came out as "unknown" are now
|
||||
processed, but there are differences between the dates shown in the
|
||||
directory listing and by listing the files by name. Go figure...
|
||||
|
||||
- Transplanted some more code from Samba to handle directory entry
|
||||
data conversion.
|
||||
|
||||
|
||||
smbfs 1.68 (3.6.2005)
|
||||
|
||||
- It appears that Windows XP can produce directory listings with
|
||||
file/directory modification times set to 0, indicating that no
|
||||
such information is available, while the associated last file
|
||||
write access data is present. Previously, smbfs only reported
|
||||
the modification. If this data is unavailable and the date of
|
||||
the last write access is, the last write access will be
|
||||
reported instead.
|
||||
|
||||
|
||||
smbfs 1.69 (13.6.2005)
|
||||
|
||||
- The time stamps used in "proc.c", as returned and submitted to
|
||||
the SMB file system on the other end of the wire are apparently
|
||||
all in Universally Coordinated Time already (or at least, this
|
||||
seems to be the case with Samba and Windows XP). Hence no conversion
|
||||
between local time and UTC is necessary, which would otherwise
|
||||
distort all date stamps converted. I modified the file system to
|
||||
leave all time stamps essentially unadjusted for local time in
|
||||
"proc.c". The local time zone adjustments are now performed only
|
||||
where the time in question is known to be Amiga-specific, such as
|
||||
the current system time or the date stamp to set for a file.
|
||||
|
||||
The time conversion appears to be working correctly now, but it
|
||||
does ignore the effects of daylight savings time, which you might
|
||||
want to adjust for manually through the TIMEZONEOFFSET option
|
||||
(careful though: this overrides your current locale-defined time
|
||||
zone settings as far as smbfs is concerned).
|
||||
|
||||
Unsolved problem: at least Windows XP seems to return different
|
||||
time stamps for directory listings and for indidivual files. As
|
||||
far as I can tell, the sets of time stamps returned for either
|
||||
doesn't match anywhere.
|
||||
|
||||
|
||||
smbfs 1.70 (13.6.2005)
|
||||
|
||||
- Introduced a new option to account for daylight savings time
|
||||
when appropriate.
|
||||
|
||||
- Looks like some of the time stamps used in "proc.c" are
|
||||
transmitted in local time after all; brought back the
|
||||
conversion functions.
|
||||
|
||||
|
||||
smbfs 1.71 (13.6.2005)
|
||||
|
||||
- The extended directory scanning entry conversion code now swaps
|
||||
the last modification and last write access date stamps. This
|
||||
matches the time of the last modification, as returned by the
|
||||
regular ACTION_EXAMINE_FH/ACTION_EXAMINE packets. Note that the
|
||||
time resolution is a little bit coarser because the modification
|
||||
time as expressed by the SMB getattr function cannot represent
|
||||
60 distinct seconds per minute but only 30. The net effect is
|
||||
that the resulting time stamps in a directory listing and by
|
||||
examining a file can differ by one second.
|
||||
|
||||
- The DST option's time offset was added to rather than subtracted
|
||||
from the local time. Fixed.
|
||||
|
||||
|
||||
smbfs 1.72 (14.4.2009)
|
||||
|
||||
- In proc.c, smb_setup_header() initialized the SMB header length
|
||||
field with a number which was too large by four bytes. Consequently,
|
||||
what was later committed to the wire would have four trailing data
|
||||
bytes which could contain random values. This often didn't do much
|
||||
harm, but it seems that Samba 3.2.4 and Windows Vista don't like the
|
||||
looks of the trailing junk bytes.
|
||||
@@ -1,457 +0,0 @@
|
||||
A SMB file system wrapper for AmigaOS, using the AmiTCP V3 API
|
||||
==============================================================
|
||||
|
||||
1. What is it?
|
||||
|
||||
This document briefly describes the SMBFS program, which implements an SMB
|
||||
file system for AmigaOS. This file system can be used to access files made
|
||||
available by file servers which implement the SMB protocol, such as 'Microsoft
|
||||
Windows' or any other platform which supports the free 'Samba' product. These
|
||||
files can be accessed using shell commands such as 'List', the Workbench or
|
||||
utilities such as 'Directory Opus' as if the file server were a local disk
|
||||
drive.
|
||||
|
||||
|
||||
2. What do you need to get started?
|
||||
|
||||
You need a TCP/IP stack that supports the AmiTCP V3 API, such as 'Miami', the
|
||||
original free 'AmiTCP 3.0' release, 'AmiTCP 4.x', 'Miami Deluxe', 'AmiTCP
|
||||
Genesis' or 'Roadshow' and the obligatory networking gear. All these items
|
||||
need to be in good shape and properly configured.
|
||||
|
||||
Most important, you need a computer which exports file sharing services using
|
||||
the SMB protocol.
|
||||
|
||||
It often helps to have 'Samba' installed on your Amiga, too, as this can aid
|
||||
in tracking down bugs and obtaining information which SMBFS cannot obtain all
|
||||
by itself.
|
||||
|
||||
Last but not least, you need to be proficient in configuring and using the
|
||||
TCP/IP stack; networking knowledge is definitely assumed.
|
||||
|
||||
SMBFS requires AmigaOS 2.04 or higher to work.
|
||||
|
||||
|
||||
3. Preparations
|
||||
|
||||
You need to know which computer's files you want to share using the SMBFS file
|
||||
system. That computer must be known by name, it is not sufficient just to know
|
||||
its IP address. If you know the IP address but cannot refer to the host by its
|
||||
name then SMBFS will not work. In that case, make sure that you add a host
|
||||
name entry referring to the IP address to your TCP/IP stack's host database
|
||||
(e.g. the "AmiTCP:bin/hosts" file or the corresponding page in the stack's
|
||||
configuration user interface).
|
||||
|
||||
The name of the computer to connect to must not be too long. If it is longer
|
||||
than 16 characters, SMBFS will not work properly.
|
||||
|
||||
You need to know which service you want to connect to on the target computer.
|
||||
You can find out which services are available on a certain computer by using
|
||||
the Samba 'smbclient' program. For example, if you were to query the services
|
||||
offered by a machine called 'sourcery' you could enter the following:
|
||||
|
||||
samba:bin/smbclient -L sourcery
|
||||
|
||||
And you might get the following information:
|
||||
|
||||
added interface ip=192.168.0.1 bcast=192.168.0.255 nmask=255.255.255.0
|
||||
Password: Domain=[ARBEITSGRUPPE] OS=[AmigaOS] Server=[Samba 2.0.7]
|
||||
|
||||
Sharename Type Comment
|
||||
--------- ---- -------
|
||||
All Disk All volumes in the system
|
||||
IPC$ IPC IPC Service (Amiga 3000UX)
|
||||
olsen Disk Home Directories
|
||||
|
||||
Server Comment
|
||||
--------- -------
|
||||
SOURCERY Amiga 3000UX
|
||||
|
||||
Workgroup Master
|
||||
--------- -------
|
||||
ARBEITSGRUPPE SOURCERY
|
||||
|
||||
The share name to connect to would be "ALL" in this case.
|
||||
|
||||
You need to know which login name and which password are required to connect
|
||||
to the shared resource, and you need to know the name of the workgroup or
|
||||
domain the file server is a member of.
|
||||
|
||||
|
||||
4. Starting and stopping the file system
|
||||
|
||||
SMBFS is an uncommon kind of file system in that you do not use the 'Mount'
|
||||
command to mount it. In fact, SMBFS is a shell program which can be launched
|
||||
from the shell, using command line parameters to tell it which resources
|
||||
should be used. But you can also start it from Workbench: in this case you
|
||||
would have to put the program's command line options into icon tool types.
|
||||
|
||||
By now you should have assembled the following information:
|
||||
|
||||
- Name of the computer to connect to; this would be the
|
||||
file server
|
||||
- Name of the shared SMB resource to connect to
|
||||
- Login name and password
|
||||
|
||||
That's basically everything you need to know to continue -- unless something
|
||||
goes wrong, but more on that lateron.
|
||||
|
||||
Now you can start the file system. For example, to connect to the file server
|
||||
called 'sourcery' and the shared 'all' resource it exports, with that computer
|
||||
being a member of the workgroup 'Arbeitsgruppe', using the login name
|
||||
'PCGuest' and not providing any password you would enter the following:
|
||||
|
||||
Run >NIL: SMBFS Workgroup=Arbeitsgruppe User=PCGuest Service=//sourcery/all
|
||||
|
||||
This would cause a new device by the name of "SMBFS:" to be mounted, showing
|
||||
all files and directories the 'sourcery' server makes available for sharing.
|
||||
|
||||
How do you 'unmount' the file system? That's very easy, just check the output
|
||||
of the 'Status' shell command. You might get the following output:
|
||||
|
||||
Process 1: Loaded as command: TURBOTEXT
|
||||
Process 2: Loaded as command: Work:Tools/Blowup
|
||||
Process 3: Loaded as command: Work:Tools/Sashimi
|
||||
Process 4: Loaded as command: Work:CyberTools/CyberGuard
|
||||
Process 5: Loaded as command: Work:Tools/OpenDevicePatch
|
||||
Process 6: Loaded as command: CED
|
||||
Process 7: Loaded as command: Workbench
|
||||
Process 8: Loaded as command: Status
|
||||
Process 9: No command loaded
|
||||
Process 10: Loaded as command: SMBFS '//sourcery/all'
|
||||
|
||||
Look at the last line describing process number 10: it shows the name of the
|
||||
file system program SMBFS and the name of the SMB share it is connected to. To
|
||||
stop this file system and effectively unmount it, use the shell 'Break'
|
||||
command; in this case you would enter "Break 10" to stop the file system. Note
|
||||
that the program may not terminate immediately; it may have to wait until the
|
||||
last client has released all resources referring to the file system. You may
|
||||
have to send more than one "Break" command to stop the program.
|
||||
|
||||
|
||||
5. Startup options
|
||||
|
||||
The SMBFS program supports a number of command line options, as will be
|
||||
described below. The command template looks like this:
|
||||
|
||||
DOMAIN=WORKGROUP/K,USER=USERNAME/K,PASSWORD/K,CHANGECASE/S,
|
||||
CASE=CASESENSITIVE/S,OMITHIDDEN/S,QUIET/S,CLIENT=CLIENTNAME/K,
|
||||
SERVER=SERVERNAME/K,DEVICE=DEVICENAME/K,VOLUME=VOLUMENAME/K,
|
||||
CACHE=CACHESIZE/N/K,DEBUGLEVEL=DEBUG/N/K,TZ=TIMEZONEOFFSET/N/K,
|
||||
DST=DSTOFFSET/N/K,TRANSLATE=TRANSLATIONFILE/K,SERVICE/A
|
||||
|
||||
The individual options serve the following purposes:
|
||||
|
||||
DOMAIN=WORKGROUP/K
|
||||
|
||||
You must specify the name of the work group or domain which the file server
|
||||
to connect to is a member of. The name of this workgroup or domain must not
|
||||
be longer than 16 characters. The name you provide will be translated to
|
||||
all upper case characters.
|
||||
|
||||
You need not provide for a work group or domain name on the command line.
|
||||
Alternatively, you may configure an environment variable whose contents
|
||||
will be used instead. The variable could be set up like this:
|
||||
|
||||
SetEnv smbfs_workgroup <name of domain or workgroup>
|
||||
Copy ENV:smbfs_workgroup ENVARC:
|
||||
|
||||
You may also use the 'smbfs_domain' environment varilable in place of the
|
||||
'smbfs_workgroup' variable. The two are aliases for one another, but
|
||||
smbfs will read only one of the two.
|
||||
|
||||
USER=USERNAME/K
|
||||
|
||||
To connect to an SMB share you must authenticate yourself by providing a
|
||||
user name. With this program the user name is optional; if you do not
|
||||
provide one, SMBFS will use the default, which is "GUEST". The user name
|
||||
must not be longer than 64 characters. The name you provide will be
|
||||
translated to all upper case characters.
|
||||
|
||||
You need not provide for a user name on the command line. Alternatively,
|
||||
you may configure an environment variable whose contents will be used
|
||||
instead. The variable could be set up like this:
|
||||
|
||||
SetEnv smbfs_username <your user name>
|
||||
Copy ENV:smbfs_username ENVARC:
|
||||
|
||||
You may also use the 'smbfs_user' environment varilable in place of the
|
||||
'smbfs_username' variable. The two are aliases for one another, but
|
||||
smbfs will read only one of the two.
|
||||
|
||||
PASSWORD/K
|
||||
|
||||
As part of the authentication process required to make the connection to
|
||||
an SMB share, you must provide for a user name and a password. The
|
||||
password is optional; if you do not provide one, an empty password will
|
||||
be transmitted. The password must not be longer than 64 characters.
|
||||
|
||||
You need not provide for a password on the command line. Alternatively,
|
||||
you may configure an environment variable whose contents will be used
|
||||
instead. The variable could be set up like this:
|
||||
|
||||
SetEnv smbfs_password <your password>
|
||||
Copy ENV:smbfs_password ENVARC:
|
||||
|
||||
Keep in mind that passwords like these really should not be exposed by
|
||||
storing them in environment variables. But then the protocol smbfs uses
|
||||
is almost as insecure as it gets anyway.
|
||||
|
||||
The authentication process only works if the machine you are connecting
|
||||
to knows about the user name and password you want to use. As of this
|
||||
writing, smbfs cannot be used for authenticating against a password
|
||||
server that is not the same machine as the one from which you wish to
|
||||
import a share.
|
||||
|
||||
CHANGECASE/S
|
||||
|
||||
By default the password will not be changed to all upper case characters.
|
||||
If this is required, you should either provide the password in this
|
||||
form or resort to this option, which will cause it to be translated
|
||||
to all upper case characters.
|
||||
|
||||
CASE=CASESENSITIVE/S
|
||||
|
||||
Some file servers treat file and directory names differently which
|
||||
differ only in whether they are written using upper/lower case
|
||||
characters. For these servers you should activate the CASESENSITIVE
|
||||
switch to treat those files properly. There is a catch though: the
|
||||
AmigaDOS file naming scheme does not follow this model and you may
|
||||
run into problems when you are trying to use it. By default, the
|
||||
file system does not treat file and directory names differently
|
||||
which only differ with respect to the case of letters.
|
||||
|
||||
OMITHIDDEN/S
|
||||
|
||||
When requesting a directory listing, the server may return some files
|
||||
and directories tagged as being hidden. By default this file system
|
||||
will report these 'hidden' entries anyway, but you can request
|
||||
specifically that what is intended to be hidden should be omitted
|
||||
from directory listings, too. Note that even though a file may be
|
||||
hidden you should still be able to open and examine it.
|
||||
|
||||
QUIET/S
|
||||
|
||||
When started from Shell, SMBFS will print a message as soon as the
|
||||
connection to the file server has been established. If you do not
|
||||
want to see that message displayed, use the QUIET parameter. Also,
|
||||
no such message will appear if the program has been started to run
|
||||
in the background.
|
||||
|
||||
CLIENT=CLIENTNAME/K
|
||||
|
||||
SMBFS will attempt to connect to the file server by providing the name
|
||||
of the computer you connect from. In some cases this may be undesirable
|
||||
as the computer's name differs from what the file server expects. You
|
||||
can use the CLIENT parameter to tell SMBFS under which name it should
|
||||
announce itself to the server. This parameter is optional and will be
|
||||
translated to all upper case characters; it cannot be longer than 16
|
||||
characters.
|
||||
|
||||
SERVER=SERVERNAME/K
|
||||
|
||||
SMBFS will attempt to connect to the file server by providing the name
|
||||
you specified using the SERVICE command line parameter. In some cases
|
||||
this may be undesirable as the server's name differs from what you
|
||||
specified as the share name. You can use the SERVER parameter to tell
|
||||
SMBFS under which name it should contact the server. This parameter is
|
||||
optional and will be translated to all upper case characters; it cannot
|
||||
be longer than 16 characters.
|
||||
|
||||
DEVICE=DEVICENAME/K
|
||||
VOLUME=VOLUMENAME/K
|
||||
|
||||
The SMBFS program can announce itself as an AmigaDOS file system by
|
||||
using one of two different methods.
|
||||
|
||||
The first method involves announcing itself only as a file system
|
||||
device. This should be sufficient in most cases but has a drawback in
|
||||
that the device will not be usable from Workbench since the file system
|
||||
will not appear as a disk icon. You tell SMBFS to use a specific device
|
||||
name by using the DEVICE command line parameter, e.g. "DEVICE=SMBFS:".
|
||||
Note that device names must be unique, i.e. there must be no other
|
||||
device by the same name in the system; SMBFS will report an error and
|
||||
exit if it finds one.
|
||||
|
||||
The second method involves announcing itself as a volume. This has the
|
||||
benefit of making the file system usable from Workbench since a disk
|
||||
icon will appear for it. You tell SMBFS to use a specific volume name by
|
||||
using the VOLUME command line parameter, e.g. "VOLUME=Sourcery:".
|
||||
|
||||
Both methods have advantages and drawbacks. The drawback of the VOLUME
|
||||
method is that it may deadlock the native Amiga Samba port as soon as
|
||||
the file system is mounted. The drawback of the DEVICE method is that
|
||||
the file system will not be usable from Workbench.
|
||||
|
||||
If you wish, you can combine both methods; this is the approach most
|
||||
other file systems use. And in fact, when you tell SMBFS to add a
|
||||
volume it will also add a device to go along with it.
|
||||
|
||||
The VOLUME and DEVICE keywords are optional; if you omit both, SMBFS
|
||||
will pretend that you had used the "DEVICE=SMBFS:" parameter.
|
||||
|
||||
CACHE=CACHESIZE/N/K
|
||||
|
||||
The file system attempts to optimize accesses to the file server when
|
||||
directory contents are being scanned. These contents are buffered in
|
||||
a directory cache which by default will hold 170 entries. Since each
|
||||
entry will require about 255 bytes of storage, the entire 170 entry
|
||||
cache will occupy more than 40K bytes of memory. You may want to change
|
||||
this requirement, by making the cache smaller or larger using the
|
||||
CACHESIZE parameter. The size of the directory cache cannot be smaller
|
||||
than 10 entries.
|
||||
|
||||
DEBUGLEVEL=DEBUG/N/K
|
||||
|
||||
By default SMBFS operates in silent mode. It does not report what it is
|
||||
doing, it just tries to respond to file system requests. To obtain
|
||||
debugging output you may want to use the DEBUG option and specify a
|
||||
debug level greater than 0. The larger the number you specify the more
|
||||
debugging output will be created. Note that all debugging output will be
|
||||
produced using the operating system's debug output functionality which
|
||||
requires that you have a capturing program like 'Sashimi' running in the
|
||||
background.
|
||||
|
||||
TZ=TIMEZONEOFFSET/N/K
|
||||
|
||||
By default the file system will use the current Locale settings to
|
||||
translate between the local time and the time used by the SMB
|
||||
server. For some configurations, however, this is impractical since
|
||||
the server's time zone is not configured properly. For these
|
||||
rare cases you may want to hard code a certain time zone offset
|
||||
using the 'TIMEZONEOFFSET' options. The number you provide must
|
||||
be the number of minutes to add to the local time in order to
|
||||
translate it into the corresponding GMT value. For example, in
|
||||
central Europe using CET, you would use "TZ=-60" since CET is
|
||||
one hour ahead of GMT.
|
||||
|
||||
DST=DSTOFFSET/N/K
|
||||
|
||||
This option can be used to adjust the file date stamps to take
|
||||
local daylight savings time into account. The number to specify here
|
||||
is by how many minutes local time has been moved ahead, which is
|
||||
typically 60. Note that smbfs does not know when daylight savings
|
||||
time begins and ends. It is up to you to select the correct value
|
||||
when appropriate.
|
||||
|
||||
TRANSLATE=TRANSLATIONFILE/K
|
||||
|
||||
The Amiga and the file server SMBFS connects to may not share the same
|
||||
character set. International characters used in file names on either
|
||||
side may not come out correctly on the other side. To remedy this
|
||||
problem, you can resort to file name translation. How the individual
|
||||
names are to be translated is determined by the contents of a file
|
||||
name translation table file such as the ones that ship with Workbench
|
||||
in the "L:FileSystem_Trans" drawer. The first 256 bytes of each such
|
||||
file must consist of the mapping of Amiga characters to the different
|
||||
character set, and the second 256 characters must describe a mapping
|
||||
back from the different character set to the Amiga. In most cases the
|
||||
"L:FileSystem_Trans/INTL.crossdos" translation table file should be
|
||||
sufficient. To specify which file contains the translation tables to
|
||||
use you would use the TRANSLATIONFILE parameter.
|
||||
|
||||
SERVICE/A
|
||||
|
||||
This is the last parameter to be specified on the command line. It
|
||||
should refer to the file server you want to connect to and the resource
|
||||
it exports, e.g. a file system. This parameter must start with two
|
||||
slashes which must be immediately followed by the file server's name,
|
||||
which must be followed by the resource to connect to.
|
||||
|
||||
For now no special characters are allowed in the name of the service
|
||||
as no translation is performed like would be the case for file names
|
||||
on the volume.
|
||||
|
||||
The same parameters are also used when starting SMBFS from Workbench. SMBFS
|
||||
will examine its icon tool types and use these in place of the shell command
|
||||
line.
|
||||
|
||||
|
||||
6. Known problems
|
||||
|
||||
The design of smbfs follows the original file system concept behind the
|
||||
code which the 'Sharity-Light' file system is based upon. And that is a
|
||||
Unix file system which differs from Amiga specific file systems in many
|
||||
ways which can lead to problems which are discussed briefly below:
|
||||
|
||||
- Single threaded design
|
||||
|
||||
This means that it is not possible for several programs to fairly
|
||||
share the use of the file system. For example, a program that posts
|
||||
a long read request can tie up the file system almost exclusively
|
||||
for itself, and while it is busy all other clients will have to
|
||||
wait. Same goes for directory scanning.
|
||||
|
||||
- Poor scalability
|
||||
|
||||
This is associated with the single threaded design. When several
|
||||
programs are accessing the file system at the same time, overhead
|
||||
and unfair sharing of resources will drastically reduce the
|
||||
performance of the file system.
|
||||
|
||||
- Separation of file data and metadata
|
||||
|
||||
This means that the core of the file system treats the contents of
|
||||
a directory and the data attached to each file inside that
|
||||
directory as something different. This is a common concept with
|
||||
Unix file systems, but it is very different with Amiga file systems.
|
||||
In smbfs this data separation can cause problems when deleting
|
||||
files from a directory while that directory is being scanned,
|
||||
such as how this is being done by the 'Delete' shell command. The
|
||||
effects of these problems are that a directory may not be deleted
|
||||
even though it is empty or that for the same directory the same
|
||||
file may be reported twice in the listing.
|
||||
|
||||
While there are no easy solutions for any of these problems, it does not
|
||||
mean that smbfs is unusable. You just have to be more careful when you
|
||||
use the file system. For example, if a directory's contents cannot be
|
||||
deleted due to one of the problems mentioned above, you might want to
|
||||
retry later.
|
||||
|
||||
It should be noted that the problems described above are not inherent
|
||||
to the original file system design. It's just that transferring that
|
||||
design to an Amiga file system created the problems.
|
||||
|
||||
|
||||
7. Credits
|
||||
|
||||
This file system is based upon prior work by Paal-Kr. Engstad, Volker
|
||||
Lendecke, Mark A. Shand, Donald J. Becker, Rick Sladkey, Fred N. van Kempen,
|
||||
Eric Kasten and Rudolf Koenig. It is a direct descendant of the
|
||||
'Sharity-Light' file system written by Christian Starkjohann.
|
||||
|
||||
The password encryption code was lifted from the Samba package. It was
|
||||
written by Andrew Tridgell and the Samba Team.
|
||||
|
||||
|
||||
8. Author
|
||||
|
||||
The 'Sharity-Light' source code was adapted and wrapped into an AmigaOS layer
|
||||
by Olaf `Olsen' Barthel. If you wish to contact me, please send e-mail to the
|
||||
following address:
|
||||
|
||||
obarthel -at- gmx -dot- net
|
||||
|
||||
Or, alternatively, you might want to contact me via my postal address:
|
||||
|
||||
Olaf Barthel
|
||||
Gneisenaustr. 43
|
||||
D-31275 Lehrte
|
||||
Federal Republic of Germany
|
||||
|
||||
If you want to submit a bug report or an enhancement request, please enclose
|
||||
sufficient information to allow me to make sense of the problem. That includes
|
||||
debugging logs produced using the DEBUG option. If possible, use the
|
||||
facilities for bug reporting and tracking on the sourceforge.net web site
|
||||
at <http://sourceforge.net/projects/amiga-smbfs>, which is the new home for
|
||||
this file system.
|
||||
|
||||
|
||||
9. Source code
|
||||
|
||||
SMBFS is distributed under the terms of the GNU General Public License
|
||||
(version 2). The source code should have accompanied this program; if it
|
||||
hasn't, please contact the author for a copy.
|
||||
|
||||
The program was compiled using the SAS/C 6.58 compiler, with the Roadshow SDK
|
||||
providing for the TCP/IP stack API header files.
|
||||
@@ -1,480 +0,0 @@
|
||||
<!DOCTYPE html public "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>A SMB file system wrapper for AmigaOS, using the AmiTCP V3 API</title>
|
||||
<body>
|
||||
|
||||
<h1>A SMB file system wrapper for AmigaOS, using the AmiTCP V3 API</h1>
|
||||
|
||||
<h2>1. What is it?</h2>
|
||||
|
||||
<p>This document briefly describes the <b>smbfs</b> program, which implements an SMB
|
||||
file system for AmigaOS. This file system can be used to access files made
|
||||
available by file servers which implement the SMB protocol, such as <i>Microsoft
|
||||
Windows</i> or any other platform which supports the free <i>Samba</i> product. These
|
||||
files can be accessed using shell commands such as <tt>List</tt>, the <i>Workbench</i> or
|
||||
utilities such as <i>Directory Opus</i> as if the file server were a local disk
|
||||
drive.</p>
|
||||
|
||||
|
||||
<h2>2. What do you need to get started?</h2>
|
||||
|
||||
<p>You need a TCP/IP stack that supports the AmiTCP V3 API, such as <i>Miami</i>, the
|
||||
original free <i>AmiTCP 3.0</i> release, <i>AmiTCP 4.x</i>, <i>Miami Deluxe</i>, <i>AmiTCP
|
||||
Genesis</i> or <i>Roadshow</i> and the obligatory networking gear. All these items need to be in
|
||||
good shape and properly configured.</p>
|
||||
|
||||
<p>Most important, you need a computer which exports file sharing services using
|
||||
the SMB protocol.</p>
|
||||
|
||||
<p>It often helps to have <i>Samba</i> installed on your Amiga, too, as this can aid
|
||||
in tracking down bugs and obtaining information which <b>smbfs</b> cannot obtain all
|
||||
by itself.</p>
|
||||
|
||||
<p>Last but not least, you need to be proficient in configuring and using the
|
||||
TCP/IP stack; networking knowledge is definitely assumed.</p>
|
||||
|
||||
<p><b>smbfs</b> requires <i>AmigaOS 2.04</i> or higher to work.</p>
|
||||
|
||||
|
||||
<h2>3. Preparations</h2>
|
||||
|
||||
<p>You need to know which computer's files you want to share using the <b>smbfs</b> file
|
||||
system. That computer must be known by name, it is not sufficient just to know
|
||||
its IP address. If you know the IP address but cannot refer to the host by its
|
||||
name then <b>smbfs</b> will not work. In that case, make sure that you add a host
|
||||
name entry referring to the IP address to your TCP/IP stack's host database
|
||||
(e.g. the <samp>AmiTCP:bin/hosts</samp> file or the corresponding page in the stack's
|
||||
configuration user interface).</p>
|
||||
|
||||
<p>The name of the computer to connect to must not be too long. If it is longer
|
||||
than 16 characters, <b>smbfs</b> will not work properly.</p>
|
||||
|
||||
<p>You need to know which service you want to connect to on the target computer.
|
||||
You can find out which services are available on a certain computer by using
|
||||
the Samba <tt>smbclient</tt> program. For example, if you were to query the services
|
||||
offered by a machine called <i>sourcery</i> you could enter the following:</p>
|
||||
|
||||
<p><tt> samba:bin/smbclient -L sourcery </tt></p>
|
||||
|
||||
<p>And you might get the following information:</p>
|
||||
|
||||
<pre>
|
||||
added interface ip=192.168.0.1 bcast=192.168.0.255 nmask=255.255.255.0
|
||||
Password: Domain=[ARBEITSGRUPPE] OS=[AmigaOS] Server=[Samba 2.0.7]
|
||||
|
||||
Sharename Type Comment
|
||||
--------- ---- -------
|
||||
All Disk All volumes in the system
|
||||
IPC$ IPC IPC Service (Amiga 3000UX)
|
||||
olsen Disk Home Directories
|
||||
|
||||
Server Comment
|
||||
--------- -------
|
||||
SOURCERY Amiga 3000UX
|
||||
|
||||
Workgroup Master
|
||||
--------- -------
|
||||
ARBEITSGRUPPE SOURCERY
|
||||
</pre>
|
||||
|
||||
<p>The share name to connect to would be <tt>ALL</tt> in this case.</p>
|
||||
|
||||
<p>You need to know which login name and which password are required to connect
|
||||
to the shared resource, and you need to know the name of the workgroup or
|
||||
domain the file server is a member of.</p>
|
||||
|
||||
|
||||
<h2>4. Starting and stopping the file system</h2>
|
||||
|
||||
<p><b>smbfs</b> is an uncommon kind of file system in that you do not use the <tt>Mount</tt>
|
||||
command to mount it. In fact, <b>smbfs</b> is a shell program which can be launched
|
||||
from the shell, using command line parameters to tell it which resources
|
||||
should be used. But you can also start it from Workbench: in this case you
|
||||
would have to put the program's command line options into icon tool types.</p>
|
||||
|
||||
<p>By now you should have assembled the following information:</p>
|
||||
|
||||
<ul>
|
||||
<li> Name of the computer to connect to; this would be the file server
|
||||
<li> Name of the shared SMB resource to connect to
|
||||
<li> Login name and password
|
||||
</ul>
|
||||
|
||||
<p>That's basically everything you need to know to continue -- unless something
|
||||
goes wrong, but more on that lateron.</p>
|
||||
|
||||
<p>Now you can start the file system. For example, to connect to the file server
|
||||
called <i>sourcery</i> and the shared <i>all</i> resource it exports, with that computer
|
||||
being a member of the workgroup <i>Arbeitsgruppe</i>, using the login name
|
||||
<i>PCGuest</i> and not providing any password you would enter the following:</p>
|
||||
|
||||
<p><tt>Run >NIL: SMBFS Workgroup=Arbeitsgruppe User=PCGuest Service=//sourcery/all</tt></p>
|
||||
|
||||
<p>This would cause a new device by the name of <tt>SMBFS:</tt> to be mounted, showing
|
||||
all files and directories the <i>sourcery</i> server makes available for sharing.</p>
|
||||
|
||||
<p>How do you 'unmount' the file system? That's very easy, just check the output
|
||||
of the <tt>Status</tt> shell command. You might get the following output:</p>
|
||||
|
||||
<p><tt>
|
||||
Process 1: Loaded as command: TURBOTEXT<br>
|
||||
Process 2: Loaded as command: Work:Tools/Blowup<br>
|
||||
Process 3: Loaded as command: Work:Tools/Sashimi<br>
|
||||
Process 4: Loaded as command: Work:CyberTools/CyberGuard<br>
|
||||
Process 5: Loaded as command: Work:Tools/OpenDevicePatch<br>
|
||||
Process 6: Loaded as command: CED<br>
|
||||
Process 7: Loaded as command: Workbench<br>
|
||||
Process 8: Loaded as command: Status<br>
|
||||
Process 9: No command loaded<br>
|
||||
Process 10: Loaded as command: SMBFS '//sourcery/all'
|
||||
</tt></p>
|
||||
|
||||
<p>Look at the last line describing process number 10: it shows the name of the
|
||||
file system program <b>smbfs</b> and the name of the SMB share it is connected to. To
|
||||
stop this file system and effectively unmount it, use the shell <tt>Break</tt>
|
||||
command; in this case you would enter <kbd>Break 10</kbd> to stop the file system. Note
|
||||
that the program may not terminate immediately; it may have to wait until the
|
||||
last client has released all resources referring to the file system. You may
|
||||
have to send more than one <tt>Break</tt> command to stop the program.</p>
|
||||
|
||||
|
||||
<h2>5. Startup options</h2>
|
||||
|
||||
<p>The <b>smbfs</b> program supports a number of command line options, as will be
|
||||
described below. The command template looks like this:</p>
|
||||
|
||||
<p><tt>
|
||||
DOMAIN=WORKGROUP/K,USER=USERNAME/K,PASSWORD/K,CHANGECASE/S,<br>
|
||||
CASE=CASESENSITIVE/S,OMITHIDDEN/S,QUIET/S,CLIENT=CLIENTNAME/K,<br>
|
||||
SERVER=SERVERNAME/K,DEVICE=DEVICENAME/K,VOLUME=VOLUMENAME/K,<br>
|
||||
CACHE=CACHESIZE/N/K,DEBUGLEVEL=DEBUG/N/K,TZ=TIMEZONEOFFSET/N/K,<br>
|
||||
DST=DSTOFFSET/N/K,TRANSLATE=TRANSLATIONFILE/K,SERVICE/A</tt></p>
|
||||
|
||||
<p>The individual options serve the following purposes:</p>
|
||||
|
||||
<ul>
|
||||
<li> <p><tt>DOMAIN=WORKGROUP/K</tt></p>
|
||||
|
||||
<p>You must specify the name of the work group or domain which the file server
|
||||
to connect to is a member of. The name of this workgroup or domain must not
|
||||
be longer than 16 characters. The name you provide will be translated to
|
||||
all upper case characters.</p>
|
||||
|
||||
<p>You need not provide for a work group or domain name on the command line.
|
||||
Alternatively, you may configure an environment variable whose contents
|
||||
will be used instead. The variable could be set up like this:</p>
|
||||
|
||||
<p><tt>
|
||||
SetEnv smbfs_workgroup <i>name of domain or workgroup</i><br>
|
||||
Copy ENV:smbfs_workgroup ENVARC:
|
||||
</tt></p>
|
||||
|
||||
<p>You may also use the <tt>smbfs_domain</tt> environment varilable in place of the
|
||||
<tt>smbfs_workgroup</tt> variable. The two are aliases for one another, but
|
||||
<b>smbfs</b> will read only one of the two.</p>
|
||||
|
||||
<li><p><tt>USER=USERNAME/K</tt></p>
|
||||
|
||||
<p>To connect to an SMB share you must authenticate yourself by providing a
|
||||
user name. With this program the user name is optional; if you do not
|
||||
provide one, <b>smbfs</b> will use the default, which is <tt>GUEST</tt>. The user name
|
||||
must not be longer than 64 characters. The name you provide will be
|
||||
translated to all upper case characters.</p>
|
||||
|
||||
<p>You need not provide for a user name on the command line. Alternatively,
|
||||
you may configure an environment variable whose contents will be used
|
||||
instead. The variable could be set up like this:</p>
|
||||
|
||||
<p><tt>
|
||||
SetEnv smbfs_username <i>your user name</i><br>
|
||||
Copy ENV:smbfs_username ENVARC:
|
||||
</tt></p>
|
||||
|
||||
<p>You may also use the <tt>smbfs_user</tt> environment varilable in place of the
|
||||
<tt>smbfs_username</tt> variable. The two are aliases for one another, but
|
||||
<b>smbfs</b> will read only one of the two.</p>
|
||||
|
||||
<li><p><tt>PASSWORD/K</tt></p>
|
||||
|
||||
<p>As part of the authentication process required to make the connection to
|
||||
an SMB share, you must provide for a user name and a password. The
|
||||
password is optional; if you do not provide one, an empty password will
|
||||
be transmitted. The password must not be longer than 64 characters.</p>
|
||||
|
||||
<p>You need not provide for a password on the command line. Alternatively,
|
||||
you may configure an environment variable whose contents will be used
|
||||
instead. The variable could be set up like this:</p>
|
||||
|
||||
<p><tt>
|
||||
SetEnv smbfs_password <i>your password</i><br>
|
||||
Copy ENV:smbfs_password ENVARC:</tt></p>
|
||||
|
||||
<p>Keep in mind that passwords like these really should not be exposed by
|
||||
storing them in environment variables. But then the protocol <b>smbfs</b> uses
|
||||
is almost as insecure as it gets anyway.</p>
|
||||
|
||||
<p>The authentication process only works if the machine you are connecting
|
||||
to knows about the user name and password you want to use. As of this
|
||||
writing, <b>smbfs</b> cannot be used for authenticating against a password
|
||||
server that is not the same machine as the one from which you wish to
|
||||
import a share.</p>
|
||||
|
||||
<li><p><tt>CHANGECASE/S</tt></p>
|
||||
|
||||
<p>By default the password will not be changed to all upper case characters.
|
||||
If this is required, you should either provide the password in this
|
||||
form or resort to this option, which will cause it to be translated
|
||||
to all upper case characters.</p>
|
||||
|
||||
<li><p><tt>CASE=CASESENSITIVE/S</tt></p>
|
||||
|
||||
<p>Some file servers treat file and directory names differently which
|
||||
differ only in whether they are written using upper/lower case
|
||||
characters. For these servers you should activate the <tt>CASESENSITIVE</tt>
|
||||
switch to treat those files properly. There is a catch though: the
|
||||
AmigaDOS file naming scheme does not follow this model and you may
|
||||
run into problems when you are trying to use it. By default, the
|
||||
file system does not treat file and directory names differently
|
||||
which only differ with respect to the case of letters.</p>
|
||||
|
||||
<li><p><tt>OMITHIDDEN/S</tt></p>
|
||||
|
||||
<p>When requesting a directory listing, the server may return some files
|
||||
and directories tagged as being hidden. By default this file system
|
||||
will report these 'hidden' entries anyway, but you can request
|
||||
specifically that what is intended to be hidden should be omitted
|
||||
from directory listings, too. Note that even though a file may be
|
||||
hidden you should still be able to open and examine it.</p>
|
||||
|
||||
<li><p><tt>QUIET/S</tt></p>
|
||||
|
||||
<p>When started from Shell, <b>smbfs</b> will print a message as soon as the
|
||||
connection to the file server has been established. If you do not
|
||||
want to see that message displayed, use the <tt>QUIET</tt> parameter. Also,
|
||||
no such message will appear if the program has been started to run
|
||||
in the background.</p>
|
||||
|
||||
<li><p><tt>CLIENT=CLIENTNAME/K</tt><p>
|
||||
|
||||
<p><b>smbfs</b> will attempt to connect to the file server by providing the name
|
||||
of the computer you connect from. In some cases this may be undesirable
|
||||
as the computer's name differs from what the file server expects. You
|
||||
can use the <tt>CLIENT</tt> parameter to tell <b>smbfs</b> under which name it should
|
||||
announce itself to the server. This parameter is optional and will be
|
||||
translated to all upper case characters; it cannot be longer than 16
|
||||
characters.</p>
|
||||
|
||||
<li><p><tt>SERVER=SERVERNAME/K</tt></p>
|
||||
|
||||
<p><b>smbfs</b> will attempt to connect to the file server by providing the name
|
||||
you specified using the <tt>SERVICE</tt> command line parameter. In some cases
|
||||
this may be undesirable as the server's name differs from what you
|
||||
specified as the share name. You can use the <tt>SERVER</tt> parameter to tell
|
||||
<b>smbfs</b> under which name it should contact the server. This parameter is
|
||||
optional and will be translated to all upper case characters; it cannot
|
||||
be longer than 16 characters.</p>
|
||||
|
||||
<li><p><tt>DEVICE=DEVICENAME/K</tt><br>
|
||||
<tt>VOLUME=VOLUMENAME/K</tt></p>
|
||||
|
||||
<p>The <b>smbfs</b> program can announce itself as an AmigaDOS file system by
|
||||
using one of two different methods.</p>
|
||||
|
||||
<p>The first method involves announcing itself only as a file system
|
||||
device. This should be sufficient in most cases but has a drawback in
|
||||
that the device will not be usable from Workbench since the file system
|
||||
will not appear as a disk icon. You tell <b>smbfs</b> to use a specific device
|
||||
name by using the <tt>DEVICE</tt> command line parameter, e.g. <kbd>DEVICE=SMBFS:</kbd>.
|
||||
Note that device names must be unique, i.e. there must be no other
|
||||
device by the same name in the system; <b>smbfs</b> will report an error and
|
||||
exit if it finds one.</p>
|
||||
|
||||
<p>The second method involves announcing itself as a volume. This has the
|
||||
benefit of making the file system usable from Workbench since a disk
|
||||
icon will appear for it. You tell <b>smbfs</b> to use a specific volume name by
|
||||
using the <tt>VOLUME</tt> command line parameter, e.g. <kbd>VOLUME=Sourcery:</kbd>.</p>
|
||||
|
||||
<p>Both methods have advantages and drawbacks. The drawback of the <tt>VOLUME</tt>
|
||||
method is that it may deadlock the native Amiga Samba port as soon as
|
||||
the file system is mounted. The drawback of the <tt>DEVICE</tt> method is that
|
||||
the file system will not be usable from Workbench.</p>
|
||||
|
||||
<p>If you wish, you can combine both methods; this is the approach most
|
||||
other file systems use. And in fact, when you tell <b>smbfs</b> to add a
|
||||
volume it will also add a device to go along with it.</p>
|
||||
|
||||
<p>The <tt>VOLUME</tt> and <tt>DEVICE</tt> keywords are optional; if you omit both, <b>smbfs</b>
|
||||
will pretend that you had used the <kbd>DEVICE=SMBFS:</kbd> parameter.</p>
|
||||
|
||||
<li><p><tt>CACHE=CACHESIZE/N/K</tt></p>
|
||||
|
||||
<p>The file system attempts to optimize accesses to the file server when
|
||||
directory contents are being scanned. These contents are buffered in
|
||||
a directory cache which by default will hold 170 entries. Since each
|
||||
entry will require about 255 bytes of storage, the entire 170 entry
|
||||
cache will occupy more than 40K bytes of memory. You may want to change
|
||||
this requirement, by making the cache smaller or larger using the
|
||||
<tt>CACHESIZE</tt> parameter. The size of the directory cache cannot be smaller
|
||||
than 10 entries.</p>
|
||||
|
||||
<li><p><tt>DEBUGLEVEL=DEBUG/N/K</tt></p>
|
||||
|
||||
<p>By default <b>smbfs</b> operates in silent mode. It does not report what it is
|
||||
doing, it just tries to respond to file system requests. To obtain
|
||||
debugging output you may want to use the <tt>DEBUG</tt> option and specify a
|
||||
debug level greater than 0. The larger the number you specify the more
|
||||
debugging output will be created. Note that all debugging output will be
|
||||
produced using the operating system's debug output functionality which
|
||||
requires that you have a capturing program like <tt>Sashimi</tt> running in the
|
||||
background.</p>
|
||||
|
||||
<li><p><tt>TZ=TIMEZONEOFFSET/N/K</tt></p>
|
||||
|
||||
<p>By default the file system will use the current Locale settings to
|
||||
translate between the local time and the time used by the SMB
|
||||
server. For some configurations, however, this is impractical since
|
||||
the server's time zone is not configured properly. For these
|
||||
rare cases you may want to hard code a certain time zone offset
|
||||
using the <tt>TIMEZONEOFFSET</tt> options. The number you provide must
|
||||
be the number of minutes to add to the local time in order to
|
||||
translate it into the corresponding UTC value. For example, in
|
||||
central Europe using CET, you would use <kbd>TZ=-60</kbd> since CET is
|
||||
one hour ahead of UTC.</p>
|
||||
|
||||
<li><p><tt>DST=DSTOFFSET/N/K</tt></p>
|
||||
|
||||
<p>This option can be used to adjust the file date stamps to take
|
||||
local daylight savings time into account. The number to specify here
|
||||
is by how many minutes local time has been moved ahead, which is
|
||||
typically 60. Note that <b>smbfs</b> does not know when daylight
|
||||
savings time begins and ends. It is up to you to select the correct
|
||||
adjustment value when appropriate.</p>
|
||||
|
||||
<li><p><tt>TRANSLATE=TRANSLATIONFILE/K</tt></p>
|
||||
|
||||
<p>The Amiga and the file server <b>smbfs</b> connects to may not share the same
|
||||
character set. International characters used in file names on either
|
||||
side may not come out correctly on the other side. To remedy this
|
||||
problem, you can resort to file name translation. How the individual
|
||||
names are to be translated is determined by the contents of a file
|
||||
name translation table file such as the ones that ship with Workbench
|
||||
in the <samp>L:FileSystem_Trans</samp> drawer. The first 256 bytes of each such
|
||||
file must consist of the mapping of Amiga characters to the different
|
||||
character set, and the second 256 characters must describe a mapping
|
||||
back from the different character set to the Amiga. In most cases the
|
||||
<samp>L:FileSystem_Trans/INTL.crossdos</samp> translation table file should be
|
||||
sufficient. To specify which file contains the translation tables to
|
||||
use you would use the <tt>TRANSLATIONFILE</tt> parameter.</p>
|
||||
|
||||
<li><p><tt>SERVICE/A</tt></p>
|
||||
|
||||
<p>This is the last parameter to be specified on the command line. It
|
||||
should refer to the file server you want to connect to and the resource
|
||||
it exports, e.g. a file system. This parameter must start with two
|
||||
slashes which must be immediately followed by the file server's name,
|
||||
which must be followed by the resource to connect to.</p>
|
||||
|
||||
<p>For now no special characters are allowed in the name of the service
|
||||
as no translation is performed like would be the case for file names
|
||||
on the volume.</p>
|
||||
|
||||
<p>The same parameters are also used when starting <b>smbfs</b> from <i>Workbench</i>. <b>smbfs</b>
|
||||
will examine its icon tool types and use these in place of the shell command
|
||||
line.</p>
|
||||
</ul>
|
||||
|
||||
<h2>6. Known problems</h2>
|
||||
|
||||
<p>The design of <b>smbfs</b> follows the original file system concept behind the
|
||||
code which the <i>Sharity-Light</i> file system is based upon. And that is a
|
||||
Unix file system which differs from Amiga specific file systems in many
|
||||
ways which can lead to problems which are discussed briefly below:</p>
|
||||
|
||||
<ul>
|
||||
<li><p>Single threaded design</p>
|
||||
|
||||
<p>This means that it is not possible for several programs to fairly
|
||||
share the use of the file system. For example, a program that posts
|
||||
a long read request can tie up the file system almost exclusively
|
||||
for itself, and while it is busy all other clients will have to
|
||||
wait. Same goes for directory scanning.</p>
|
||||
|
||||
<li><p>Poor scalability</p>
|
||||
|
||||
<p>This is associated with the single threaded design. When several
|
||||
programs are accessing the file system at the same time, overhead
|
||||
and unfair sharing of resources will drastically reduce the
|
||||
performance of the file system.</p>
|
||||
|
||||
<li><p>Separation of file data and metadata</p>
|
||||
|
||||
<p>This means that the core of the file system treats the contents of
|
||||
a directory and the data attached to each file inside that
|
||||
directory as something different. This is a common concept with
|
||||
Unix file systems, but it is very different with Amiga file systems.
|
||||
In <b>smbfs</b> this data separation can cause problems when deleting
|
||||
files from a directory while that directory is being scanned,
|
||||
such as how this is being done by the <tt>Delete</tt> shell command. The
|
||||
effects of these problems are that a directory may not be deleted
|
||||
even though it is empty or that for the same directory the same
|
||||
file may be reported twice in the listing.</p>
|
||||
|
||||
</ul>
|
||||
|
||||
<p>While there are no easy solutions for any of these problems, it does not
|
||||
mean that <b>smbfs</b> is unusable. You just have to be more careful when you
|
||||
use the file system. For example, if a directory's contents cannot be
|
||||
deleted due to one of the problems mentioned above, you might want to
|
||||
retry later.</p>
|
||||
|
||||
<p>It should be noted that the problems described above are not inherent
|
||||
to the original file system design. It's just that transferring that
|
||||
design to an Amiga file system created the problems.</p>
|
||||
|
||||
|
||||
<h2>7. Credits</h2>
|
||||
|
||||
<p>This file system is based upon prior work by Paal-Kr. Engstad, Volker
|
||||
Lendecke, Mark A. Shand, Donald J. Becker, Rick Sladkey, Fred N. van Kempen,
|
||||
Eric Kasten and Rudolf Koenig. It is a direct descendant of the
|
||||
<i>Sharity-Light</i> file system written by Christian Starkjohann.</p>
|
||||
|
||||
<p>The password encryption code was lifted from the Samba package. It was
|
||||
written by Andrew Tridgell and the Samba Team.</p>
|
||||
|
||||
|
||||
<h2>8. Author</h2>
|
||||
|
||||
<p>The <i>Sharity-Light</i> source code was adapted and wrapped into an AmigaOS layer
|
||||
by Olaf `Olsen' Barthel. If you wish to contact me, please send e-mail to the
|
||||
following address:</p>
|
||||
|
||||
<p><tt>obarthel -at- gmx -dot- net</tt></p>
|
||||
|
||||
<p>Or, alternatively, you might want to contact me via my postal address:</p>
|
||||
|
||||
<p>Olaf Barthel<br>
|
||||
Gneisenaustr. 43<br>
|
||||
D-31275 Lehrte<br>
|
||||
Federal Republic of Germany</p>
|
||||
|
||||
<p>If you want to submit a bug report or an enhancement request, please enclose
|
||||
sufficient information to allow me to make sense of the problem. That includes
|
||||
debugging logs produced using the <tt>DEBUG</tt> option.</p>
|
||||
|
||||
<p>If possible, use the facilities for bug reporting and tracking on the
|
||||
<a href=http://sourceforge.net/projects/amiga-smbfs><tt>sourceforge.net</tt> web site</a>,
|
||||
which is the new home for this file system.
|
||||
|
||||
|
||||
<h2>9. Source code</h2>
|
||||
|
||||
<p><b>smbfs</b> is distributed under the terms of the GNU General Public License
|
||||
(version 2). The source code should have accompanied this program; if it
|
||||
hasn't, please contact the author for a copy.</p>
|
||||
|
||||
<p>The program was compiled using the SAS/C 6.58 compiler, with the Roadshow SDK
|
||||
providing for the TCP/IP stack API header files.</p>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user