1 smbfs 1.19 (27.11.2000)
3 - Fixed ACTION_FINDOUTPUT implementation; the memory to hold the
4 name of the file to be created was released before the file
5 was created. This could cause garbage to be written to the
8 - Fixed ACTION_COPY_DIR implementation; the name of the lock to
9 be duplicated did not get duplicated.
11 - Fixed ACTION_EXAMINE_OBJECT and ACTION_EXAMINE_NEXT
12 implementations; protection bits are now reported 'properly'
13 with respect to read/write access.
16 smbfs 1.20 (27.11.2000)
18 - ACTION_EXAMINE_NEXT now filters out SMB names that include
19 '/' or ':' characters.
22 smbfs 1.21 (28.11.2000)
24 - Modified ACTION_RENAME_DISK to remove the volume node before
25 changing it. It also sends the appropriate diskremove/diskinserted
28 - Reorganized and rewrote the code to reduce dependencies on
29 the compiler runtime library.
31 - Unified error reporting code.
33 - SMBFS can now be launched from Workbench using the same parameters
34 you would use when starting it from Shell. Error reporting
35 has been adapted to show an error requester and to pool error
36 messages rather than printing them to the console.
39 smbfs 1.22 (30.11.2000)
41 - Fixed the test that looks for file/lock access mode collisions.
43 - No longer changes the case of the password; there is now an
44 option to make the change.
46 - Fixed ACTION_SAME_LOCK which was comparing the same lock with
49 - Added support for ACTION_EXAMINE_ALL, ACTION_EXAMINE_ALL_END
50 and ACTION_WRITE_PROTECT packet types.
52 - No longer allows for files and locks to refer to "." and "..".
53 The use of the backslash character '\' is also disallowed in
54 Amiga file/directory names.
57 smbfs 1.23 (30.11.2000)
59 - In the ExNext()/ExAll() handling functions local error variables
60 were shadowing each other. Fixed.
62 - The error reporting requester now also lists the name of the
63 service to connect to. This should help in telling different
64 invocations of the program apart.
66 - The size of the directory cache is now a configurable option.
68 - Added a new option which forces all name comparisons to be
69 done in a case-sensitive fashion.
71 - Reading/writing data to/from a file in chunks larger than
72 65535 bytes could fail and cause the file system to hang.
75 smbfs 1.24 (1.12.2000)
77 - Added an option to allow hidden files to be omitted from
80 - Improved upon the error reporting in the code that directly
81 calls the TCP/IP API functions.
83 - Reorganized the AmigaDOS packet handling switch..case
86 - Added support for ACTION_MORE_CACHE packet type. The
87 cache in this context refers to the directory scanning
90 - Improved upon the host lookup error reporting code.
92 - Added support for file name translation such as via the
93 CrossDOS translation table files.
96 smbfs 1.25 (2.12.2000)
98 - SMBFS now displays some configuration information as soon as
99 it has successfully connected to the file server and is ready
100 for action. This output can be suppressed with the new
101 "QUIET" command line parameter.
103 - When removing a directory, the error code returned is examined
104 more closely to see whether the directory was not yet empty.
106 - When setting the protection bits of a file or directory, the
107 file system now treats either 'protected from deletion' and
108 'protected from writing' as indications to mark a file as
109 write protected. Previously, a file had to be both protected
110 from deletion and from writing to be treated as write protected.
112 - Cleaned up the program's data structures and eliminated all
113 static data that would hold state information. The entire
114 client side is now completely reentrant.
117 smbfs 1.26 (3.12.2000)
119 - File and directory names are no longer duplicated in the
120 SMB abstraction layer. The strings supplied by the Amiga
121 file system layer are referenced instead.
123 - Changed the way the ACTION_MORE_CACHE implementation returns
124 its result code to be compatible with current practices.
127 smbfs 1.27 (4.12.2000)
129 - The changes I made to the file read command in order to allow it
130 to read more than 65535 bytes at a time did not allow read
131 attempts at the end of the file to come out properly. Fixed.
133 - Integrated password encryption code lifted from Samba. Hope
134 it works as it should, because if it doesn't, I wouldn't know
138 smbfs 1.28 (4.12.2000)
140 - Oh dear, more fixes to the password encryption code and the
141 connection setup to follow it. This time I managed to test the
142 code briefly with Samba and password encryption enabled.
143 Amazingly, it seems to work this time!
146 smbfs 1.29 (6.12.2000)
148 - Writes larger than 65535 bytes could stall and slow down the
149 file system. Fixed. [Thore Böckelmann]
151 - The ACTION_MORE_CACHE implementation never returned the total
152 number of cache entries allocated. Fixed. [Thore Böckelmann]
154 - Plain text passwords didn't seem to work any more after I made
155 the changes to allow for encrypted passwords to be used. Fixed.
158 smbfs 1.30 (6.12.2000)
160 - Changed the structure of the share names by which the file system
161 refers to the data on the server; they all start with a backslash
162 now. This seems to help NT and doesn't break the rest.
164 - For file shares exported using 'share level security', no passwords
168 smbfs 1.31 (7.12.2000)
170 - The ACTION_EXAMINE and ACTION_EXAMINE_FH implementations now verify
171 that the name to return will fit into the FileInfoBlock's limited
174 - Deleting files and directories from a directory currently being
175 scanned via ACTION_EXAMINE_NEXT or ACTION_EXAMINE_ALL will now cause
176 the directory scanner to restart. This is ugly, I know, but at least
177 it won't cause the scanning process to hickup or lose entries
178 directory entries during its course of duty. The flip side is that
179 the scanner will probably return some entries twice. There must
180 be a better way to implement this, but for now, this is it.
182 - Tried to make device and volume node removal safer.
184 - SMBFS now always adds a device node to go along with the volume node.
185 It's safer that way because for every file system you either have a
186 single device node in the system (and no volume node) or a volume
187 node *and* a device node. If the device node is missing, there's
188 typically something wrong and some application software cannot handle
189 this case properly. SMBFS will attempt to add a new, unique device
190 node every time it is launched.
192 - When specifying the name of the file system device to add, SMBFS
193 now complains if that name already exists.
196 smbfs 1.32 (8.12.2000)
198 - File and directory modification dates were always off by six hours and
199 one second. I don't know how that happens, it doesn't seem to be a bug
200 in the date conversion routines. I worked around the problem by adding
201 and subtracting an adjustment value.
204 smbfs 1.33 (10.12.2000)
206 - The ACTION_PARENT_DIR implementation did not return a ZERO lock for
207 the root directory. Fixed. [Rudolph Riedel]
209 - Replaced the doubly-linked Exec lists with skip lists which
210 are better suited for the repeated lookup operations that
211 are so common in the file system. This time the list code
212 seems to work properly.
214 - Added -- largely untested -- time and date decoding routines for
215 directory entries returned by NT.
218 smbfs 1.34 (10.12.2000)
220 - Had to take out the skip list code again since it did not seem to
223 - Further tweaking to the NT date and time decoding code.
226 smbfs 1.35 (10.12.2000)
228 - Small modification to the ACTION_EXAMINE_NEXT/ACTION_EXAMINE_ALL code
229 which tries to work around a strange effect caused by Amiga Samba
230 returning the contents of an empty drawer.
233 smbfs 1.36 (11.12.2000)
235 - More fixes to the NT date and time conversion code and the
236 strange six hour fixup that seems to be necessary for the
237 'regular' time conversion to work.
240 smbfs 1.37 (11.12.2000)
242 - Replaced the entire 'regular' date and time conversion code. The
243 strange six hour fixup is no longer necessary.
246 smbfs 1.38 (11.12.2000)
248 - Ditched the packet size kludges in "sock.c" and "proc.c" I had put
249 in there. It seems that only the 'smba_write()'/'smba_read()' code
250 could trigger it, and that code was fixed quite a while ago.
252 - Migrated some code changes from the Samba source over to the
255 - Maximum transmission size per packet is now the same as the
256 number the server allowed us to use rather than a fixed number
257 imposed by VM page sizes.
259 - Tried to clean up more of the code.
261 - Discovered that the 'smb_valid_packet()' routine never could have
262 worked and fixed it so that it now finally does what it should do.
264 - Better error propagation for some routines in "proc.c".
266 - More streamlined error testing code.
269 smbfs 1.39 (11.12.2000)
271 - Almost fixed several bugs in 'smb_proc_readdir_long()'.
273 - 'smb_proc_readdir_long()' does not work correctly. It only seems to
274 work, but will fail if the scanner is to restart before the entire
275 directory is read. Restored the old behaviour :(
278 smbfs 1.40 (13.12.2000)
280 - Took out some more unused and unnecessary code.
282 - Rewrote the time and date conversion routines.
284 - Modified the directory reading code so that it no longer relies
285 upon the last directory entry index which doesn't seem to be
286 correct most of the time.
288 - Directory scanning errors are now flagged as such.
291 smbfs 1.41 (16.12.2000)
293 - In the SMB abstraction layer, the directory cache is now invalidated
294 only if the respective action that could have invalidated it succeeds.
296 - Now clears the directory cache only if the respective action would
297 have affected the directory being cached.
299 - In debug mode [Ctrl]+F will display a list of open files and allocated
302 - Added very silly support for ACTION_SET_COMMENT packet.
304 - Found an interesting bug fix for 'smb_proc_readdir_long()' in the
305 Linux 2.4.0 kernel which seemed worth integrating into the file system.
308 smbfs 1.42 (19.12.2000)
310 - Integrated Chris Hertel's broadcast name query code. This means that
311 the name of the host whose file shares you want to access need no
312 longer be in the hosts database. However, you still cannot refer to
313 a host solely by its IP address.
316 smbfs 1.43 (21.12.2000)
318 - The integrated broadcase name query code would conflict with the
319 DNS lookup. Fixed. [Thore Böckelmann]
321 - The NetBIOS name query code now retries four times to get a response
324 - Put the mysterious 6 hour time offset fix back in.
327 smbfs 1.44 (29.12.2000)
329 - Rewrote the host lookup error reporting code to use the appropriate
332 - Discovered that all the functionality required by SMBFS was supported
333 by the original free AmiTCP 3.0 release. Changed the "bsdsocket.library"
336 - The ACTION_EXAMINE_OBJECT implementation consistently got the name of
337 the root directory wrong. Fixed.
340 smbfs 1.45 (7.1.2001)
342 - Discovered why file and directory creation dates were wrong by about
345 - The order of the parameters passed to the 'ExAll()' filter hook was
346 wrong. Fixed [Thorsteinn Sveinsson and Matt Sealey].
349 smbfs 1.46 (1.2.2001)
351 - Removed the workarounds for the mysterious 'off by six hours' bug.
352 The time delta value added was consistently wrong.
355 smbfs 1.47 (18.2.2001)
357 - The name of the domain/workgroup, the name of the user and the
358 password to be used can now be preset using environment variables.
360 - Changed the command line argument template to work better with the
361 newly introduced environment variable settings.
364 smbfs 1.48 (3.3.2001)
366 - Modified the command template so that the final parameter can no
367 longer cause all other parameters to be swallowed. Also updated
371 smbfs 1.49 (3.3.2001)
373 - Handling of ACTION_FINDUPDATE needed improving. It should have
374 created a file that didn't already exist. It now does [David Gerber].
377 smbfs 1.50 (4.3.2001)
379 - ACTION_FINDUPDATE is now associated with a shared lock. It used
380 to be an exclusive lock [David Gerber].
382 - The test to follow ACTION_FINDUPDATE that determines whether the
383 file to open already exists now also tries to 'stat()' the file
384 in question to find out whether it exists.
387 smbfs 1.51 (13.3.2001)
389 - Whoops. The new code to pull data from environment variables didn't
390 actually check whether the work group name could be set up properly
391 and thus didn't complain about it either. It now notifies you if
392 no work group name was provided and none could be found.
395 smbfs 1.52 (22.6.2001)
397 - Added another option which allows you to preset the time zone offset
398 to use when translating between the local time and the SMB server
399 time. Using the default locale doesn't work for that purpose all the
400 time since there are so many misconfigured servers out there.
402 - The ACTION_DIE packet didn't have the desired effect if the file
403 system didn't have a reason to wait for any resources to be
404 released again. It just wouldn't quit. Now it does.
406 - Before it exits, the file system no longer posts a disk change
407 event if it was launched from Workbench. I found that the steps
408 taken so far could end up deadlocking Workbench.
411 smbfs 1.53 (26.6.2001)
413 - Changed the file name parser; it should now be possible to tie assigns
414 to files and directories on an smb volume. Since the updated file name
415 translation code also is a bit smarter about when to use which
416 file name separator character, accesses to the media should be a
419 - When translating path names, trailing '/' characters are now properly
420 parsed, i.e. Lock("/",...) should always bring up the parent directory
423 - Duplicating a ZERO lock now works as expected.
426 smbfs 1.54 (27.6.2001)
428 - Directory and file creation didn't work that properly after applying
429 the changes I made to the parser. Fixed [Matt Sealey].
432 smbfs 1.55 (3.3.2002)
434 - At least samba 2.2.2-12 on linux can send total_data of 0 bytes. This
435 caused sock.c/smb_receive_trans2() malloc() (==AllocVecPooled) to fail
436 on smba_readdir(). Fixed [Harry Sintonen].
438 - Added quickfix against crash if smb_abstraction.c/smb_smba_readdir()
439 fails. This is by no means a real fix, but at least it doesn't crash
442 - There is definitely something fishy in the smbfs restart/retry scheme,
443 it just doesn't work properly (all state data has to be, and is,
444 reset when restarts occur, but still it tries to use the old data as if
445 nothing happened). Someone should really take a closer look at this
449 smbfs 1.56 (3.9.2002)
451 - Rewrote the Setup() code which allocates and initializes the device and
452 volume nodes. Lost all Forbid()..Permit() pairs on the way, making the
453 code more robust and less weird.
455 - In proc.c/smb_proc_readdir_long() now specifically watches for the
456 smb_trans2_request() function return empty data and parameter values.
457 This is now treated as an attempt to read from an empty directory.
458 Previously, there was a slight change that the information was
459 taken seriously even if NULL was returned.
462 smbfs 1.57 (3.9.2002)
464 - Ran the code through GCC and rewrote the code to get rid of the compiler
465 warnings that appeared to have something more serious about them. This
466 includes, for example, comparisons between signed and unsigned values.
469 smbfs 1.58 (5.9.2002)
471 - Rebuilt using my own TCP/IP stack SDK. Rebuilding the code with the
472 Miami SDK should still be possible, though.
474 - Changed the way smb_proc_readdir_long() aborts the job if no valid
478 smbfs 1.59 (10.9.2003) [Harry Sintonen <sintonen -at- iki -dot- fi>]
480 - Fixed ACTION_DELETE_OBJECT to restart directory scanning, it
481 searched for wrong object. Fixes the problem where every other
482 file was skipped when deleting directory.
485 smbfs 1.60 (11.2.2004) [Peter Riede <Noster-Riede -at- T-Online -dot- de>]
487 - Fixed ACTION_SEEK, it doesn't works if followed by ACTION_WRITE.
488 Fixes the problem by using the SMBlseek packet instead of just
489 remembering the position in the local FileNode structure
491 - Fixed ACTION_SETFILESIZE, has returned an errorcode of 37 instead
494 - Added support for the ACTION_LOCK_RECORD and ACTION_UNLOCK_RECORD
498 smbfs 1.61 (27.4.2004)
500 - Reworked the ACTION_SEEK implementation. Turns out that the SMB
501 lseek packet only seems to work for the Samba server but produces
502 unpredictable results with Microsoft flavoured servers. The new
503 code, which helps to avoid trouble with overlapping write access
504 and seeks, now performs much like the old one except that it
505 "notifies" the SMB server of the new file position to be used.
506 Tested both with Samba and Windows XP: works as it should.
509 smbfs 1.62 (8.5.2004)
511 - Added sanity checks to the record locking code. For example,
512 locking a record of length 0 must be considered illegal. Also,
513 since the protocol deals with 32 bit signed integers for
514 file position and record length, parameters that are "too large"
515 and come out as negative values are now rejected.
518 smbfs 1.63 (9.5.2004)
520 - Added more sanity checks to the record locking code, this time
521 to avoid integer overflows.
523 - Added support for the SMB 'archive' and 'system' file attributes,
524 which are mapped to the Amiga 'archived' and 'pure' protection
527 - Cleaned up the header files.
530 smbfs 1.64 (13.5.2004)
532 - ExamineFH() did not fill in the file protection bits. Fixed.
534 - Ported to AmigaOS4.
537 smbfs 1.65 (16.5.2004)
539 - The port numbers of the NetBIOS session and name services are no
540 longer hard-coded. They are now looked up (netbios-ns/udp and
541 netbios-ssn/tcp), and if that fails, the hard-coded default port
542 numbers are used instead.
544 - Tried to reduce the risk of triggering buffer overflows by replacing
545 calls to strcpy/strcat. This revealed weaknesses in a number of
546 places, including the code that fills in the names of the directory
549 - Instead of calling memcpy(), the code now invokes exec.library/CopyMem(),
550 which should be a wee bit faster than what the 'C' runtime library can do.
552 - Merged with Peter Riede's changes: for small packets to be sent,
553 SMBwrite is used instead of SMBwritebraw (which greatly enhances
554 performance), the server max_xmit field is initialized differently
555 if the session was opened with a SMBtconx packet and ACTION_SEEK
556 no longer sets the error code to an undefined value in case of
560 smbfs 1.66 (10.6.2004)
562 - Added a paranoia check to the ExAll() implementation which should
563 avoid trouble with extremely short data buffers.
566 smbfs 1.67 (27.5.2005)
568 - Replaced the long NT date conversion code with something hopefully
569 much more robust. The results so far are both encouraging and
570 irritating. Dates that previously came out as "unknown" are now
571 processed, but there are differences between the dates shown in the
572 directory listing and by listing the files by name. Go figure...
574 - Transplanted some more code from Samba to handle directory entry
578 smbfs 1.68 (3.6.2005)
580 - It appears that Windows XP can produce directory listings with
581 file/directory modification times set to 0, indicating that no
582 such information is available, while the associated last file
583 write access data is present. Previously, smbfs only reported
584 the modification. If this data is unavailable and the date of
585 the last write access is, the last write access will be
589 smbfs 1.69 (13.6.2005)
591 - The time stamps used in "proc.c", as returned and submitted to
592 the SMB file system on the other end of the wire are apparently
593 all in Universally Coordinated Time already (or at least, this
594 seems to be the case with Samba and Windows XP). Hence no conversion
595 between local time and UTC is necessary, which would otherwise
596 distort all date stamps converted. I modified the file system to
597 leave all time stamps essentially unadjusted for local time in
598 "proc.c". The local time zone adjustments are now performed only
599 where the time in question is known to be Amiga-specific, such as
600 the current system time or the date stamp to set for a file.
602 The time conversion appears to be working correctly now, but it
603 does ignore the effects of daylight savings time, which you might
604 want to adjust for manually through the TIMEZONEOFFSET option
605 (careful though: this overrides your current locale-defined time
606 zone settings as far as smbfs is concerned).
608 Unsolved problem: at least Windows XP seems to return different
609 time stamps for directory listings and for indidivual files. As
610 far as I can tell, the sets of time stamps returned for either
611 doesn't match anywhere.
614 smbfs 1.70 (13.6.2005)
616 - Introduced a new option to account for daylight savings time
619 - Looks like some of the time stamps used in "proc.c" are
620 transmitted in local time after all; brought back the
621 conversion functions.
624 smbfs 1.71 (13.6.2005)
626 - The extended directory scanning entry conversion code now swaps
627 the last modification and last write access date stamps. This
628 matches the time of the last modification, as returned by the
629 regular ACTION_EXAMINE_FH/ACTION_EXAMINE packets. Note that the
630 time resolution is a little bit coarser because the modification
631 time as expressed by the SMB getattr function cannot represent
632 60 distinct seconds per minute but only 30. The net effect is
633 that the resulting time stamps in a directory listing and by
634 examining a file can differ by one second.
636 - The DST option's time offset was added to rather than subtracted
637 from the local time. Fixed.
640 smbfs 1.72 (14.4.2009)
642 - In proc.c, smb_setup_header() initialized the SMB header length
643 field with a number which was too large by four bytes. Consequently,
644 what was later committed to the wire would have four trailing data
645 bytes which could contain random values. This often didn't do much
646 harm, but it seems that Samba 3.2.4 and Windows Vista don't like the
647 looks of the trailing junk bytes.
650 smbfs 1.73 (17.4.2009)
652 - Modified smb_valid_packet() in proc.c to check whether the packet
653 received is smaller than expected, not whether the length matches
654 exactly. This seems to fix the protocol negotiation with Samba 3.2.5
655 for now. Haven't checked Vista yet, though...
658 smbfs 1.74 (31.8.2009)
660 - Integrated Harry Sintonen's fix for the problem caused by large
661 writes to files. The respective packet size was off by one byte.