---- Start of Samba 2.0.0 port release notes ----


Amiga_Samba_2.0.0 1.2 (20.2.99)

- Added setvbuf() and rewind() emulation code.

- The smbclient would invoke the "ls" or "find" programs to collect
  the names of files to be transferred in the "mput" command. The
  Amiga emulation code now notices these two special cases and
  supplies the requested data. Please note that due to how the
  pattern matching code works, you need to use AmigaDOS style
  wildcard patterns to select the files to transfer. Thus,
  "mput *.c" won't work but "mput #?.c" would.

- Added a missing UnLock() in the unlink() emulation code.

- Finally found out why the smbclient program would not print
  floating point numbers properly: the snprintf() code included
  with Samba did not support the required output format. I
  have added the missing code.


Amiga_Samba_2.0.0 1.3 (20.2.99)

- Replaced the AmigaDOS wild card pattern matching code with
  the "simple" Unix style version. This allows you to use
  the mput/mget smbclient commands without having to worry
  about the wild card syntax. For both commands the syntax
  is now the same.


Amiga_Samba_2.0.0 1.4 (21.2.99)

- Added putc/fputc/putchar emulation code.

- Added setbuf emulation code.


Amiga_Samba_2.0.0 1.5 (22.2.99)

- Replaced the AmigaDOS record locking code with a custom
  implementation that does not rely upon LockRecord() or
  UnlockRecord(). Since the Samba tools depend upon a working
  file locking mechanism and a number of 3rd party filing
  systems do not implement rarely used packet types such as
  used by LockRecord() or UnlockRecord() this is probably the
  safest alternative.

  Please note that the new locking code is not as efficient
  as the old implementation and that it requires that all
  Amiga Samba tools running in the system bear the version number
  1.5. If the version numbers don't match, you will crash
  the system.


---- Start of Samba 2.0.3 port release notes ----


Amiga_Samba 1.3 (27.4.99)

- The rename() wrapper code now performs similar to how BSD
  implements it. That is, if there already is a file by the
  destination name, that destination file is removed before the
  source file is renamed.

- The getcwd() wrapper code now properly returns the current
  working directory if the previous chdir() call had set it to
  an absolute path.

- No longer returns an error if the file modification date of
  a file currently in use cannot be changed in the utime()
  wrapper code.

- The stat() wrapper code no longer gives up when the object
  to be examined is currently in use. Instead, the code now
  scans that object's parent directory, if there is one, and
  gets its information that way.

- The file name mangler which converts between the Amiga
  and the Unix style file names did a bit too much when
  fixing up file names with trailing dot characters. It
  no longer removes those dots.

- The lseek() wrapper code now knows how to extend files.


Amiga_Samba 1.4 (2.5.99)

- Notification requesters now have a timeout of 30 seconds.
  This helps if smbd somehow gets stuck in an error condition
  that can be fixed later by having it restarted. With the
  new code, the necessary error requester won't block forever
  but close 30 seconds after it has opened (or when the user
  clicks on the "Ok" button).

- No longer returns an error if the file attributes of
  a file currently in use cannot be changed in the chmod()
  wrapper code. This helps the SAM SID file creation
  code.


Amiga_Samba 1.6 (13.5.99)

- Bumped to 1.6 for proper RCS checkin; no functional changes.


Amiga_Samba 1.7 (21.5.99)

- Removing a disk could cause Samba to lose track of the
  volumes currently available for reading. Fixed.

- Added a missing #include <exec/memory.h> to the amiga.c
  emulation module.


Amiga_Samba 1.8 (9.8.99)

- Added recv() and send() wrapper code.


Amiga_Samba 1.9 (15.10.1999)

- Disabled the file extension code in the lseek() implementation.
  ftruncate() now does this job.

- The "find" command emulated by the system() code now prints its
  file name list prefixed with the name of the directory the
  search started in, if this is necessary.

- Fixed the snprintf() code again.

- Added a wrapper for ObtainSemaphoreShared() which avoids a
  deadlock situation with Kickstart V37. It may not be necessary,
  but I'd like to play it safe.


Amiga_Samba 1.10 (3.11.1999)

- Created a wrapper for the smbrun utility. That is, Samba no longer
  invokes it but resorts to running the program smbrun was supposed
  to run directly. Note that the name of the program to run must follow
  the Unix naming conventions, i.e. "Work:program_name" will not
  work, but "/Work/program_name" should.

- Samba no longer forces file names to be a maximum of 30 characters
  in size. It now verifies that the name is compatible with the
  underlying file system. This is done by trying to ask the file
  system about its idea how long the name of the given file or
  drawer would be. If the names disagree, e.g. the name reported
  by the file system is shorter than the one queried, Samba will
  consider the name too long and will complain.

- The "ls" and "find" program emulation code found inside the Amiga
  system() function wrapper now properly lists files *and* drawers
  instead of listing only files. The code also tries to be smarter
  when listing the contents of the "fake root" directory.


Amiga_Samba 1.11 (1.12.1999)

- Added automatic interface detection code, as required by Samba 2.0.6.
  The code follows examples provided by Holger Kruse. Note that only
  interfaces which are currently "up" are detected. If you make an
  interface online later, you should use an "interfaces" line in the
  smb.conf file to specify its address and net mask. The code has
  been tested with AmiTCP Genesis but not with AmiTCP V4 yet.


Amiga_Samba 1.12 (25.12.1999)

- Verified that the interfaces detection code works with AmiTCP V4
  and AmiTCP Genesis. Well, at least it works for one single
  interface. I don't know yet whether it works for more than one.
  We'll have to see.


---- Start of Samba 2.0.7 port release notes ----


Amiga_Samba 1.13 (22.5.2000)

- Added dummy functions to provide for 'popen()' and 'pclose()' functionality.
  The code does nothing at all, it just flags errors. I have yet to find out
  if and how it can be put to good use.

- Updated the copyright dates.


Amiga_Samba 1.14 (24.5.2000)

- Discovered that the code to check whether a file name was too long to
  handle for the file system didn't work at all and never could have
  worked. Thanks go to Paul Qureshi for suggesting I look at the
  code again.


Amiga_Samba 1.15 (17.8.2000)

- Modified 'testparm' so that it no longer complains about a potential
  security hole caused by inappropriate protection bits set for the
  "Samba:log/locks" directory. This was always a source of confusion
  for users who wrestled with the configuration and would find that
  'testparm' had only one complaint: namely the protection bits of
  the locks directory. The protection bits are absolutely irrelevant
  in this context (AmigaDOS is not Unix).


Amiga_Samba 1.16 (17.9.2000)

- Changed the code that builds the error requester slightly. In case
  of memory shortage it could have thrown Enforcer hits. Thanks go
  to Gunther Nikl for pointing me to the bug.

- Name translation could fail due to a signed/unsigned comparison
  going wrong, the net effect being a cascade of Enforcer hits.
  Thanks go to Gene Heskett for running Samba through "MuGuardianAngel"
  and of course to Thomas Richter for writing that tool in the
  first place.


Amiga_Samba 1.18 (19.12.2000)

- The mock PIDs the Samba tools would use are now derived from the
  respective CLI task numbers associated with the running programs.

- Fixed a long standing bug in the 'virtual root' directory
  setup code. It would send packets to file systems while the
  volume list was still locked.

- Modified the lines that built long aligned data structures to
  use a macro.

- Fixed another long standing bug involving the virtual
  root directory setup code.

- Added the root mode option which will make Samba treat all user
  IDs as 0.


Amiga_Samba 1.19 (25.12.2000)

- The ftruncate() emulation function did not verify that the file
  descriptor provided would in fact refer to a file; it would have
  happily used a socket instead. Fixed.

- Following an attempt at 'software speleology' I discovered that the
  API functionality used by this Samba port could be adequately covered
  by the free AmiTCP version 3.0. Thus, the code no longer requires the
  commercial version. However, to the best of my knowledge the free
  AmiTCP version 3.0 does not run 'out of the box' and neither offers the
  features nor the speed the commercial solutions provide. You will
  probably be better off with the commercial products (Miami, AmiTCP 4.x,
  Miami Deluxe, AmiTCP Genesis).


Amiga_Samba 1.20 (3.2.2001)

- Corrected a few harmless typos.

- The host name lookup error variable is no longer redirected to a local
  variable. The Samba code wasn't using that part of the resolver API
  anyway.

- The directory scanner attached to the 'find' program emulation should
  no longer get confused by wild card patterns in file names.

- Modified the client text which says that in order to end a message
  being typed one should hit "Control-D". It now mentions "Control-\"
  which is the correct key combination for AmigaDOS.

- 'smbclient' now allows an aborted transfer to be resumed. Note that
  if you do not want to use that feature, you must remove the local
  file you intend to be replaced bye the next transfer as the download
  will otherwise proceed to add more data to it.

- The name mangling code now also takes care of correcting names
  that would have come out like 'foo:/bar', reducing them to 'foo:bar'.

- After all these years I finally discovered that the constant I always
  added to AmigaOS clock times to bring them up to sync with Unix
  clock times is off by exactly six hours! Fixed.

- The time zone delta value is now queried every time it is needed
  rather than set up once when the program is started.


Amiga_Samba 1.21 (21.2.2001)

- Added extremely limited soft link support. Or in other words,
  made certain code react a little more cleverly to soft links
  encountered during directory scanning.

- Changed the name mangler again to strip double slashes before
  translating names and to also take care of trailing special
  directory names ('.' and '..').


Amiga_Samba 1.22 (7.4.2001)

- The Amiga side implementations of the time handling routines
  (localtime, gmtime, mktime, ctime, asctime) now completely
  replace the original runtime library versions. This means that
  the environment variable TZ is no longer consulted. All time
  and time zone settings now come from the locale preferences.


Amiga_Samba 1.23 (10.8.2001)

- Extended the root mode to geteuid() and getegid(). This should
  finally resolve all root access mode problems.

- Added the source code patches to allow Samba to transfer more
  than 64K per read/write.


Amiga_Samba 1.24 (29.8.2001)

- The time zone setup code in '__tzset()' had the signs set the wrong
  way. Fixed.

- Reworked the root mode some more. The recent changes now also cache
  and maintain changes to the real and effective user and group IDs.
  That should hopefully do it.

- Updated the smakefile so that "assert.c" compiles and links properly
  again.

- Removed the references to '/etc/shadow', '/dev/urandom' and the '/dev'
  directory in general which "lib/genrand.c" would use to seed the
  pseudo random number generator. Hardly any of these files or the
  directory exist on the Amiga.

- Removed the last remaining reference to an environment variable
  called "TMPDIR".

- Changed the name and the format of the data stored in the global
  Samba rendezvous semaphore.

- Added extra code to enable/disable debugging output for the
  emulation layer.
