LibSMB++, version 0.9 (20000208)



This is the next version of the former libsmb library.

Since Samba will move its code into shared libraries for their 3.0 version

(aka The Next Generation) this library has been renamed libsmb++.



Ok, so what's libsmb++?



It's an interface through which programs can use SMB easily. It is a SMB

_client_, which means it can browse and exchange files with servers, but cannot

for example declare a new share. See Samba for an a SMB server.

It is intended for developers. If you're just an end-user, well, check it out,

maybe someone wrote a nice program using this library... (hint: look in KDE2)



How does it work?



The SMB object has methods that work like their equivalent standard function for

manipulating files (open, write, lseek, readdir, stat...), but with SMB urls.

The network is viewed as a virtual filesystem, so "smb://" will be a directory

containing the workgroups, "smb://workgroup" will contain the members, and so

on, until you can open a file "smb://host/share/path/file". Also note that you

can use "smb://field" and the library will know if it's a workgroup or an host,

that as for other URLs you can specify a user and password

"smb://user:pass@host" and that the 'port' field has been replaced by the IP

"smb://host:IP/share".

The syntax \\host\share is also supported for compatibility with Samba.





Still lost?



What else... Ah, there is the FAQ. Read the corresponding file.

And also a good documentation in html for the API.



There is a quick example in the doc/ directory.





CHANGES from libsmb:



The major feature is the ability to link with and use Samba-TNG code if it

is found on the system (only compile-time) and fall back on the native code

otherwise. The interface is of course the same, so your program does not

need to be modified.

This bring the whole power of Samba behind us, while still providing a limited

SMB support when Samba isn't present.



The interface has also been cleaned to be more compliant to the standard

functions types.



The native code was not modified, but in case you missed the last version

here is its ChangeLog:

    Many bugfixes and improved features.

    WINS support.

    Improved cache code, and charset conversion, added by Erik.



See Changelog for details.





	

COMPILATION & USAGE:

    Type ./configure --help to have the whole option list.

    Then run make, and make install.



    IMPORTANT: There will be a shell-script named smb++-config installed

at the same time. Use this to compile your programs, because the Samba

libraries might not be installed in a standard location.

    Example: g++ foo.cpp -o foo `smb++-config --cxxflags` `smb++-config --libs`

    Use smb++-config without arguments to see the whole configuration.





LICENSE :



    This code is released under GPL (read the files COPYING if you don't know

what this means). Warning : this is really GPL, and not LGPL.





DOCUMENTATION :



    The documentation section in the doc subdirectory contains this library

API and an example.

    NetBIOS is documented in RFC 1001 & 1002

    Documentation an SMB is available at ftp://ftp.microsoft.com/developr/drg/CIFS/

via anonymous access. It's an outdated doc buc I didn't find anything better

on the net yet. They say those documents can be redistributed, but I didn't

include them in this package because of the size, and because they are

available on their ftp server. Just tell me if you can't find this doc

for any reason, or if you can't read the .doc files (I use StarOffice).

    The Samba main pages at http://www.samba.org/ also have a documentation

section, which covers the basics of SMB.

    Documentation about DES encryption can be found on the internet, but I used

mainly the excellent des-how-to.txt by Matthew Fischer (couldn't join him at

<mfischer@heinous.isca.uiowa.edu>). Here is a URL, I do not think this is the

"official" one : http://ireland.iol.ie/~annod/docs/des-how-to.txt.







THANKS :



    To Artur Frysiak <wiget@t17.ds.pwr.wroc.pl> for setting up automake and

libtool, and for providing an account on the PLD cvs server for one year.

    To Pascal Varet <varet@iie.cnam.fr> for hosting the mailing list before the

move to SourceForge.

    To Erik Forsberg for the coding he has done.

    To the KDE team for modifications in the CVS.

    To all those who sent feedback and helped improving the lib.



	

Nicolas Brodu, 20000217

