diff --git a/COPYING b/COPYING deleted file mode 100644 index 5185fd3..0000000 --- a/COPYING +++ /dev/null @@ -1,346 +0,0 @@ -NOTE! The GPL below is copyrighted by the Free Software Foundation, but -the instance of code that it refers to (the kde programs) are copyrighted -by the authors who actually wrote it. - ---------------------------------------------------------------------------- - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/COPYING.DOC b/COPYING.DOC deleted file mode 100644 index 4a0fe1c..0000000 --- a/COPYING.DOC +++ /dev/null @@ -1,397 +0,0 @@ - GNU Free Documentation License - Version 1.2, November 2002 - - - Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - -0. PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -functional and useful document "free" in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - - -1. APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A "Secondary Section" is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (Thus, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML, PostScript or PDF designed for human modification. Examples of -transparent image formats include PNG, XCF and JPG. Opaque formats -include proprietary formats that can be read and edited only by -proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML, PostScript or PDF produced by some word -processors for output purposes only. - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - - -2. VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - - -3. COPYING IN QUANTITY - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - - -4. MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -A. Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. -B. List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has fewer than five), - unless they release you from this requirement. -C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. -D. Preserve all the copyright notices of the Document. -E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. -F. Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. -G. Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. -H. Include an unaltered copy of this License. -I. Preserve the section Entitled "History", Preserve its Title, and add - to it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section Entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. -J. Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the "History" section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. -K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the section all - the substance and tone of each of the contributor acknowledgements - and/or dedications given therein. -L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. -M. Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. -N. Do not retitle any existing section to be Entitled "Endorsements" - or to conflict in title with any Invariant Section. -O. Preserve any Warranty Disclaimers. - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - -5. COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all sections -Entitled "Endorsements". - - -6. COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - - -7. AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - - -8. TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - - -9. TERMINATION - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - - -10. FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. - - -ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - - Copyright (c) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU - Free Documentation License". - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: - - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. diff --git a/COPYING.LIB b/COPYING.LIB deleted file mode 100644 index 4362b49..0000000 --- a/COPYING.LIB +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/LICENSES/GFDL-1.2-only.txt b/LICENSES/GFDL-1.2-only.txt new file mode 100644 index 0000000..6bfe9f5 --- /dev/null +++ b/LICENSES/GFDL-1.2-only.txt @@ -0,0 +1,370 @@ +GNU Free Documentation License + +Version 1.2, November 2002 + +Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, +Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + + 0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other functional +and useful document "free" in the sense of freedom: to assure everyone the +effective freedom to copy and redistribute it, with or without modifying it, +either commercially or noncommercially. Secondarily, this License preserves +for the author and publisher a way to get credit for their work, while not +being considered responsible for modifications made by others. + +This License is a kind of "copyleft", which means that derivative works of +the document must themselves be free in the same sense. It complements the +GNU General Public License, which is a copyleft license designed for free +software. + +We have designed this License in order to use it for manuals for free software, +because free software needs free documentation: a free program should come +with manuals providing the same freedoms that the software does. But this +License is not limited to software manuals; it can be used for any textual +work, regardless of subject matter or whether it is published as a printed +book. We recommend this License principally for works whose purpose is instruction +or reference. + + 1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that contains +a notice placed by the copyright holder saying it can be distributed under +the terms of this License. Such a notice grants a world-wide, royalty-free +license, unlimited in duration, to use that work under the conditions stated +herein. The "Document", below, refers to any such manual or work. Any member +of the public is a licensee, and is addressed as "you". You accept the license +if you copy, modify or distribute the work in a way requiring permission under +copyright law. + +A "Modified Version" of the Document means any work containing the Document +or a portion of it, either copied verbatim, or with modifications and/or translated +into another language. + +A "Secondary Section" is a named appendix or a front-matter section of the +Document that deals exclusively with the relationship of the publishers or +authors of the Document to the Document's overall subject (or to related matters) +and contains nothing that could fall directly within that overall subject. +(Thus, if the Document is in part a textbook of mathematics, a Secondary Section +may not explain any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, commercial, +philosophical, ethical or political position regarding them. + +The "Invariant Sections" are certain Secondary Sections whose titles are designated, +as being those of Invariant Sections, in the notice that says that the Document +is released under this License. If a section does not fit the above definition +of Secondary then it is not allowed to be designated as Invariant. The Document +may contain zero Invariant Sections. If the Document does not identify any +Invariant Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, as Front-Cover +Texts or Back-Cover Texts, in the notice that says that the Document is released +under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover +Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, represented +in a format whose specification is available to the general public, that is +suitable for revising the document straightforwardly with generic text editors +or (for images composed of pixels) generic paint programs or (for drawings) +some widely available drawing editor, and that is suitable for input to text +formatters or for automatic translation to a variety of formats suitable for +input to text formatters. A copy made in an otherwise Transparent file format +whose markup, or absence of markup, has been arranged to thwart or discourage +subsequent modification by readers is not Transparent. An image format is +not Transparent if used for any substantial amount of text. A copy that is +not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain ASCII without +markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly +available DTD, and standard-conforming simple HTML, PostScript or PDF designed +for human modification. Examples of transparent image formats include PNG, +XCF and JPG. Opaque formats include proprietary formats that can be read and +edited only by proprietary word processors, SGML or XML for which the DTD +and/or processing tools are not generally available, and the machine-generated +HTML, PostScript or PDF produced by some word processors for output purposes +only. + +The "Title Page" means, for a printed book, the title page itself, plus such +following pages as are needed to hold, legibly, the material this License +requires to appear in the title page. For works in formats which do not have +any title page as such, "Title Page" means the text near the most prominent +appearance of the work's title, preceding the beginning of the body of the +text. + +A section "Entitled XYZ" means a named subunit of the Document whose title +either is precisely XYZ or contains XYZ in parentheses following text that +translates XYZ in another language. (Here XYZ stands for a specific section +name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", +or "History".) To "Preserve the Title" of such a section when you modify the +Document means that it remains a section "Entitled XYZ" according to this +definition. + +The Document may include Warranty Disclaimers next to the notice which states +that this License applies to the Document. These Warranty Disclaimers are +considered to be included by reference in this License, but only as regards +disclaiming warranties: any other implication that these Warranty Disclaimers +may have is void and has no effect on the meaning of this License. + + 2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either commercially +or noncommercially, provided that this License, the copyright notices, and +the license notice saying this License applies to the Document are reproduced +in all copies, and that you add no other conditions whatsoever to those of +this License. You may not use technical measures to obstruct or control the +reading or further copying of the copies you make or distribute. However, +you may accept compensation in exchange for copies. If you distribute a large +enough number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and you +may publicly display copies. + + 3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have printed +covers) of the Document, numbering more than 100, and the Document's license +notice requires Cover Texts, you must enclose the copies in covers that carry, +clearly and legibly, all these Cover Texts: Front-Cover Texts on the front +cover, and Back-Cover Texts on the back cover. Both covers must also clearly +and legibly identify you as the publisher of these copies. The front cover +must present the full title with all words of the title equally prominent +and visible. You may add other material on the covers in addition. Copying +with changes limited to the covers, as long as they preserve the title of +the Document and satisfy these conditions, can be treated as verbatim copying +in other respects. + +If the required texts for either cover are too voluminous to fit legibly, +you should put the first ones listed (as many as fit reasonably) on the actual +cover, and continue the rest onto adjacent pages. + +If you publish or distribute Opaque copies of the Document numbering more +than 100, you must either include a machine-readable Transparent copy along +with each Opaque copy, or state in or with each Opaque copy a computer-network +location from which the general network-using public has access to download +using public-standard network protocols a complete Transparent copy of the +Document, free of added material. If you use the latter option, you must take +reasonably prudent steps, when you begin distribution of Opaque copies in +quantity, to ensure that this Transparent copy will remain thus accessible +at the stated location until at least one year after the last time you distribute +an Opaque copy (directly or through your agents or retailers) of that edition +to the public. + +It is requested, but not required, that you contact the authors of the Document +well before redistributing any large number of copies, to give them a chance +to provide you with an updated version of the Document. + + 4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under the conditions +of sections 2 and 3 above, provided that you release the Modified Version +under precisely this License, with the Modified Version filling the role of +the Document, thus licensing distribution and modification of the Modified +Version to whoever possesses a copy of it. In addition, you must do these +things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct from +that of the Document, and from those of previous versions (which should, if +there were any, be listed in the History section of the Document). You may +use the same title as a previous version if the original publisher of that +version gives permission. + +B. List on the Title Page, as authors, one or more persons or entities responsible +for authorship of the modifications in the Modified Version, together with +at least five of the principal authors of the Document (all of its principal +authors, if it has fewer than five), unless they release you from this requirement. + +C. State on the Title page the name of the publisher of the Modified Version, +as the publisher. + + D. Preserve all the copyright notices of the Document. + +E. Add an appropriate copyright notice for your modifications adjacent to +the other copyright notices. + +F. Include, immediately after the copyright notices, a license notice giving +the public permission to use the Modified Version under the terms of this +License, in the form shown in the Addendum below. + +G. Preserve in that license notice the full lists of Invariant Sections and +required Cover Texts given in the Document's license notice. + + H. Include an unaltered copy of this License. + +I. Preserve the section Entitled "History", Preserve its Title, and add to +it an item stating at least the title, year, new authors, and publisher of +the Modified Version as given on the Title Page. If there is no section Entitled +"History" in the Document, create one stating the title, year, authors, and +publisher of the Document as given on its Title Page, then add an item describing +the Modified Version as stated in the previous sentence. + +J. Preserve the network location, if any, given in the Document for public +access to a Transparent copy of the Document, and likewise the network locations +given in the Document for previous versions it was based on. These may be +placed in the "History" section. You may omit a network location for a work +that was published at least four years before the Document itself, or if the +original publisher of the version it refers to gives permission. + +K. For any section Entitled "Acknowledgements" or "Dedications", Preserve +the Title of the section, and preserve in the section all the substance and +tone of each of the contributor acknowledgements and/or dedications given +therein. + +L. Preserve all the Invariant Sections of the Document, unaltered in their +text and in their titles. Section numbers or the equivalent are not considered +part of the section titles. + +M. Delete any section Entitled "Endorsements". Such a section may not be included +in the Modified Version. + +N. Do not retitle any existing section to be Entitled "Endorsements" or to +conflict in title with any Invariant Section. + + O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or appendices that +qualify as Secondary Sections and contain no material copied from the Document, +you may at your option designate some or all of these sections as invariant. +To do this, add their titles to the list of Invariant Sections in the Modified +Version's license notice. These titles must be distinct from any other section +titles. + +You may add a section Entitled "Endorsements", provided it contains nothing +but endorsements of your Modified Version by various parties--for example, +statements of peer review or that the text has been approved by an organization +as the authoritative definition of a standard. + +You may add a passage of up to five words as a Front-Cover Text, and a passage +of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts +in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover +Text may be added by (or through arrangements made by) any one entity. If +the Document already includes a cover text for the same cover, previously +added by you or by arrangement made by the same entity you are acting on behalf +of, you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License give +permission to use their names for publicity for or to assert or imply endorsement +of any Modified Version. + + 5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this License, +under the terms defined in section 4 above for modified versions, provided +that you include in the combination all of the Invariant Sections of all of +the original documents, unmodified, and list them all as Invariant Sections +of your combined work in its license notice, and that you preserve all their +Warranty Disclaimers. + +The combined work need only contain one copy of this License, and multiple +identical Invariant Sections may be replaced with a single copy. If there +are multiple Invariant Sections with the same name but different contents, +make the title of each such section unique by adding at the end of it, in +parentheses, the name of the original author or publisher of that section +if known, or else a unique number. Make the same adjustment to the section +titles in the list of Invariant Sections in the license notice of the combined +work. + +In the combination, you must combine any sections Entitled "History" in the +various original documents, forming one section Entitled "History"; likewise +combine any sections Entitled "Acknowledgements", and any sections Entitled +"Dedications". You must delete all sections Entitled "Endorsements". + + 6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents released +under this License, and replace the individual copies of this License in the +various documents with a single copy that is included in the collection, provided +that you follow the rules of this License for verbatim copying of each of +the documents in all other respects. + +You may extract a single document from such a collection, and distribute it +individually under this License, provided you insert a copy of this License +into the extracted document, and follow this License in all other respects +regarding verbatim copying of that document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate and independent +documents or works, in or on a volume of a storage or distribution medium, +is called an "aggregate" if the copyright resulting from the compilation is +not used to limit the legal rights of the compilation's users beyond what +the individual works permit. When the Document is included in an aggregate, +this License does not apply to the other works in the aggregate which are +not themselves derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these copies of +the Document, then if the Document is less than one half of the entire aggregate, +the Document's Cover Texts may be placed on covers that bracket the Document +within the aggregate, or the electronic equivalent of covers if the Document +is in electronic form. Otherwise they must appear on printed covers that bracket +the whole aggregate. + + 8. TRANSLATION + +Translation is considered a kind of modification, so you may distribute translations +of the Document under the terms of section 4. Replacing Invariant Sections +with translations requires special permission from their copyright holders, +but you may include translations of some or all Invariant Sections in addition +to the original versions of these Invariant Sections. You may include a translation +of this License, and all the license notices in the Document, and any Warranty +Disclaimers, provided that you also include the original English version of +this License and the original versions of those notices and disclaimers. In +case of a disagreement between the translation and the original version of +this License or a notice or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", "Dedications", +or "History", the requirement (section 4) to Preserve its Title (section 1) +will typically require changing the actual title. + + 9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except as +expressly provided for under this License. Any other attempt to copy, modify, +sublicense or distribute the Document is void, and will automatically terminate +your rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses terminated +so long as such parties remain in full compliance. + + 10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions of the GNU +Free Documentation License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. See http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. If the +Document specifies that a particular numbered version of this License "or +any later version" applies to it, you have the option of following the terms +and conditions either of that specified version or of any later version that +has been published (not as a draft) by the Free Software Foundation. If the +Document does not specify a version number of this License, you may choose +any version ever published (not as a draft) by the Free Software Foundation. +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of the +License in the document and put the following copyright and license notices +just after the title page: + +Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or +modify this document under the terms of the GNU Free Documentation License, +Version 1.2 or any later version published by the Free Software Foundation; +with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +A copy of the license is included in the section entitled "GNU Free Documentation +License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace +the "with...Texts." line with this: + +with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover +Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other combination +of the three, merge those two alternatives to suit the situation. + +If your document contains nontrivial examples of program code, we recommend +releasing these examples in parallel under your choice of free software license, +such as the GNU General Public License, to permit their use in free software. diff --git a/LICENSES/GPL-2.0-or-later.txt b/LICENSES/GPL-2.0-or-later.txt new file mode 100644 index 0000000..1d80ac3 --- /dev/null +++ b/LICENSES/GPL-2.0-or-later.txt @@ -0,0 +1,319 @@ +GNU GENERAL PUBLIC LICENSE + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. + +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software +is covered by the GNU Lesser General Public License instead.) You can apply +it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of +the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must give the recipients all the rights that you have. You +must make sure that they, too, receive or can get the source code. And you +must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If +the software is modified by someone else and passed on, we want its recipients +to know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will individually +obtain patent licenses, in effect making the program proprietary. To prevent +this, we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms +of this General Public License. The "Program", below, refers to any such program +or work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or translated +into another language. (Hereinafter, translation is included without limitation +in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program +is not restricted, and the output from the Program is covered only if its +contents constitute a work based on the Program (independent of having been +made by running the Program). Whether that is true depends on what the Program +does. + +1. You may copy and distribute verbatim copies of the Program's source code +as you receive it, in any medium, provided that you conspicuously and appropriately +publish on each copy an appropriate copyright notice and disclaimer of warranty; +keep intact all the notices that refer to this License and to the absence +of any warranty; and give any other recipients of the Program a copy of this +License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all +of these conditions: + +a) You must cause the modified files to carry prominent notices stating that +you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or +in part contains or is derived from the Program or any part thereof, to be +licensed as a whole at no charge to all third parties under the terms of this +License. + +c) If the modified program normally reads commands interactively when run, +you must cause it, when started running for such interactive use in the most +ordinary way, to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or else, saying that +you provide a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this License. +(Exception: if the Program itself is interactive but does not normally print +such an announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Program, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend +to the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise +the right to control the distribution of derivative or collective works based +on the Program. + +In addition, mere aggregation of another work not based on the Program with +the Program (or with a work based on the Program) on a volume of a storage +or distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under Section +2) in object code or executable form under the terms of Sections 1 and 2 above +provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source code, +which must be distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give +any third party, for a charge no more than your cost of physically performing +source distribution, a complete machine-readable copy of the corresponding +source code, to be distributed under the terms of Sections 1 and 2 above on +a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute +corresponding source code. (This alternative is allowed only for noncommercial +distribution and only if you received the program in object code or executable +form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code distributed +need not include anything that is normally distributed (in either source or +binary form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with +the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except +as expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses terminated +so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the Program +(or any work based on the Program), you indicate your acceptance of this License +to do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor +to copy, distribute or modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the recipients' exercise of +the rights granted herein. You are not responsible for enforcing compliance +by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement +or for any other reason (not limited to patent issues), conditions are imposed +on you (whether by court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the conditions of +this License. If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, then as +a consequence you may not distribute the Program at all. For example, if a +patent license would not permit royalty-free redistribution of the Program +by all those who receive copies directly or indirectly through you, then the +only way you could satisfy both it and this License would be to refrain entirely +from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system, which is implemented by public license practices. +Many people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Program under this License may add an explicit geographical +distribution limitation excluding those countries, so that distribution is +permitted only in or among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of +the General Public License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that version +or of any later version published by the Free Software Foundation. If the +Program does not specify a version number of this License, you may choose +any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing and reuse +of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES +OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + + +Copyright (C) + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 51 Franklin +Street, Fifth Floor, Boston, MA 02110-1301, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when +it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author Gnomovision comes +with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, +and you are welcome to redistribute it under certain conditions; type `show +c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may be +called something other than `show w' and `show c'; they could even be mouse-clicks +or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the program, if necessary. Here +is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' +(which makes passes at compilers) written by James Hacker. + +, 1 April 1989 Ty Coon, President of Vice This General +Public License does not permit incorporating your program into proprietary +programs. If your program is a subroutine library, you may consider it more +useful to permit linking proprietary applications with the library. If this +is what you want to do, use the GNU Lesser General Public License instead +of this License. diff --git a/LICENSES/LGPL-2.1-only.txt b/LICENSES/LGPL-2.1-only.txt new file mode 100644 index 0000000..130dffb --- /dev/null +++ b/LICENSES/LGPL-2.1-only.txt @@ -0,0 +1,467 @@ +GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. + +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts as the +successor of the GNU Library Public License, version 2, hence the version +number 2.1.] + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public Licenses are intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. + +This license, the Lesser General Public License, applies to some specially +designated software packages--typically libraries--of the Free Software Foundation +and other authors who decide to use it. You can use it too, but we suggest +you first think carefully about whether this license or the ordinary General +Public License is the better strategy to use in any particular case, based +on the explanations below. + +When we speak of free software, we are referring to freedom of use, not price. +Our General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish); that you receive source code or can get it if you want it; that you +can change the software and use pieces of it in new free programs; and that +you are informed that you can do these things. + +To protect your rights, we need to make restrictions that forbid distributors +to deny you these rights or to ask you to surrender these rights. These restrictions +translate to certain responsibilities for you if you distribute copies of +the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for +a fee, you must give the recipients all the rights that we gave you. You must +make sure that they, too, receive or can get the source code. If you link +other code with the library, you must provide complete object files to the +recipients, so that they can relink them with the library after making changes +to the library and recompiling it. And you must show them these terms so they +know their rights. + +We protect your rights with a two-step method: (1) we copyright the library, +and (2) we offer you this license, which gives you legal permission to copy, +distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is no +warranty for the free library. Also, if the library is modified by someone +else and passed on, the recipients should know that what they have is not +the original version, so that the original author's reputation will not be +affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free +program. We wish to make sure that a company cannot effectively restrict the +users of a free program by obtaining a restrictive license from a patent holder. +Therefore, we insist that any patent license obtained for a version of the +library must be consistent with the full freedom of use specified in this +license. + +Most GNU software, including some libraries, is covered by the ordinary GNU +General Public License. This license, the GNU Lesser General Public License, +applies to certain designated libraries, and is quite different from the ordinary +General Public License. We use this license for certain libraries in order +to permit linking those libraries into non-free programs. + +When a program is linked with a library, whether statically or using a shared +library, the combination of the two is legally speaking a combined work, a +derivative of the original library. The ordinary General Public License therefore +permits such linking only if the entire combination fits its criteria of freedom. +The Lesser General Public License permits more lax criteria for linking other +code with the library. + +We call this license the "Lesser" General Public License because it does Less +to protect the user's freedom than the ordinary General Public License. It +also provides other free software developers Less of an advantage over competing +non-free programs. These disadvantages are the reason we use the ordinary +General Public License for many libraries. However, the Lesser license provides +advantages in certain special circumstances. + +For example, on rare occasions, there may be a special need to encourage the +widest possible use of a certain library, so that it becomes a de-facto standard. +To achieve this, non-free programs must be allowed to use the library. A more +frequent case is that a free library does the same job as widely used non-free +libraries. In this case, there is little to gain by limiting the free library +to free software only, so we use the Lesser General Public License. + +In other cases, permission to use a particular library in non-free programs +enables a greater number of people to use a large body of free software. For +example, permission to use the GNU C Library in non-free programs enables +many more people to use the whole GNU operating system, as well as its variant, +the GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the users' +freedom, it does ensure that the user of a program that is linked with the +Library has the freedom and the wherewithal to run that program using a modified +version of the Library. + +The precise terms and conditions for copying, distribution and modification +follow. Pay close attention to the difference between a "work based on the +library" and a "work that uses the library". The former contains code derived +from the library, whereas the latter must be combined with the library in +order to run. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License Agreement applies to any software library or other program +which contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Lesser General +Public License (also called "this License"). Each licensee is addressed as +"you". + +A "library" means a collection of software functions and/or data prepared +so as to be conveniently linked with application programs (which use some +of those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has +been distributed under these terms. A "work based on the Library" means either +the Library or any derivative work under copyright law: that is to say, a +work containing the Library or a portion of it, either verbatim or with modifications +and/or translated straightforwardly into another language. (Hereinafter, translation +is included without limitation in the term "modification".) + +"Source code" for a work means the preferred form of the work for making modifications +to it. For a library, complete source code means all the source code for all +modules it contains, plus any associated interface definition files, plus +the scripts used to control compilation and installation of the library. + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running a program +using the Library is not restricted, and output from such a program is covered +only if its contents constitute a work based on the Library (independent of +the use of the Library in a tool for writing it). Whether that is true depends +on what the Library does and what the program that uses the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and disclaimer +of warranty; keep intact all the notices that refer to this License and to +the absence of any warranty; and distribute a copy of this License along with +the Library. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, +thus forming a work based on the Library, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all +of these conditions: + + a) The modified work must itself be a software library. + +b) You must cause the files modified to carry prominent notices stating that +you changed the files and the date of any change. + +c) You must cause the whole of the work to be licensed at no charge to all +third parties under the terms of this License. + +d) If a facility in the modified Library refers to a function or a table of +data to be supplied by an application program that uses the facility, other +than as an argument passed when the facility is invoked, then you must make +a good faith effort to ensure that, in the event an application does not supply +such function or table, the facility still operates, and performs whatever +part of its purpose remains meaningful. + +(For example, a function in a library to compute square roots has a purpose +that is entirely well-defined independent of the application. Therefore, Subsection +2d requires that any application-supplied function or table used by this function +must be optional: if the application does not supply it, the square root function +must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Library, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Library, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend +to the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise +the right to control the distribution of derivative or collective works based +on the Library. + +In addition, mere aggregation of another work not based on the Library with +the Library (or with a work based on the Library) on a volume of a storage +or distribution medium does not bring the other work under the scope of this +License. + +3. You may opt to apply the terms of the ordinary GNU General Public License +instead of this License to a given copy of the Library. To do this, you must +alter all the notices that refer to this License, so that they refer to the +ordinary GNU General Public License, version 2, instead of to this License. +(If a newer version than version 2 of the ordinary GNU General Public License +has appeared, then you can specify that version instead if you wish.) Do not +make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, +so the ordinary GNU General Public License applies to all subsequent copies +and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library +into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of +it, under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you accompany it with the complete corresponding +machine-readable source code, which must be distributed under the terms of +Sections 1 and 2 above on a medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy from a designated +place, then offering equivalent access to copy the source code from the same +place satisfies the requirement to distribute the source code, even though +third parties are not compelled to copy the source along with the object code. + +5. A program that contains no derivative of any portion of the Library, but +is designed to work with the Library by being compiled or linked with it, +is called a "work that uses the Library". Such a work, in isolation, is not +a derivative work of the Library, and therefore falls outside the scope of +this License. + +However, linking a "work that uses the Library" with the Library creates an +executable that is a derivative of the Library (because it contains portions +of the Library), rather than a "work that uses the library". The executable +is therefore covered by this License. Section 6 states terms for distribution +of such executables. + +When a "work that uses the Library" uses material from a header file that +is part of the Library, the object code for the work may be a derivative work +of the Library even though the source code is not. Whether this is true is +especially significant if the work can be linked without the Library, or if +the work is itself a library. The threshold for this to be true is not precisely +defined by law. + +If such an object file uses only numerical parameters, data structure layouts +and accessors, and small macros and small inline functions (ten lines or less +in length), then the use of the object file is unrestricted, regardless of +whether it is legally a derivative work. (Executables containing this object +code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute +the object code for the work under the terms of Section 6. Any executables +containing that work also fall under Section 6, whether or not they are linked +directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work +that uses the Library" with the Library to produce a work containing portions +of the Library, and distribute that work under terms of your choice, provided +that the terms permit modification of the work for the customer's own use +and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library +is used in it and that the Library and its use are covered by this License. +You must supply a copy of this License. If the work during execution displays +copyright notices, you must include the copyright notice for the Library among +them, as well as a reference directing the user to the copy of this License. +Also, you must do one of these things: + +a) Accompany the work with the complete corresponding machine-readable source +code for the Library including whatever changes were used in the work (which +must be distributed under Sections 1 and 2 above); and, if the work is an +executable linked with the Library, with the complete machine-readable "work +that uses the Library", as object code and/or source code, so that the user +can modify the Library and then relink to produce a modified executable containing +the modified Library. (It is understood that the user who changes the contents +of definitions files in the Library will not necessarily be able to recompile +the application to use the modified definitions.) + +b) Use a suitable shared library mechanism for linking with the Library. A +suitable mechanism is one that (1) uses at run time a copy of the library +already present on the user's computer system, rather than copying library +functions into the executable, and (2) will operate properly with a modified +version of the library, if the user installs one, as long as the modified +version is interface-compatible with the version that the work was made with. + +c) Accompany the work with a written offer, valid for at least three years, +to give the same user the materials specified in Subsection 6a, above, for +a charge no more than the cost of performing this distribution. + +d) If distribution of the work is made by offering access to copy from a designated +place, offer equivalent access to copy the above specified materials from +the same place. + +e) Verify that the user has already received a copy of these materials or +that you have already sent this user a copy. + +For an executable, the required form of the "work that uses the Library" must +include any data and utility programs needed for reproducing the executable +from it. However, as a special exception, the materials to be distributed +need not include anything that is normally distributed (in either source or +binary form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of +other proprietary libraries that do not normally accompany the operating system. +Such a contradiction means you cannot use both them and the Library together +in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side +in a single library together with other library facilities not covered by +this License, and distribute such a combined library, provided that the separate +distribution of the work based on the Library and of the other library facilities +is otherwise permitted, and provided that you do these two things: + +a) Accompany the combined library with a copy of the same work based on the +Library, uncombined with any other library facilities. This must be distributed +under the terms of the Sections above. + +b) Give prominent notice with the combined library of the fact that part of +it is a work based on the Library, and explaining where to find the accompanying +uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library +except as expressly provided under this License. Any attempt otherwise to +copy, modify, sublicense, link with, or distribute the Library is void, and +will automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will not +have their licenses terminated so long as such parties remain in full compliance. + +9. You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Library or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the Library +(or any work based on the Library), you indicate your acceptance of this License +to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the Library), +the recipient automatically receives a license from the original licensor +to copy, distribute, link with or modify the Library subject to these terms +and conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement +or for any other reason (not limited to patent issues), conditions are imposed +on you (whether by court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the conditions of +this License. If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, then as +a consequence you may not distribute the Library at all. For example, if a +patent license would not permit royalty-free redistribution of the Library +by all those who receive copies directly or indirectly through you, then the +only way you could satisfy both it and this License would be to refrain entirely +from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system which is implemented by public license practices. +Many people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Library under this License may add an explicit geographical +distribution limitation excluding those countries, so that distribution is +permitted only in or among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of +the Lesser General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to address +new problems or concerns. + +Each version is given a distinguishing version number. If the Library specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that version +or of any later version published by the Free Software Foundation. If the +Library does not specify a license version number, you may choose any version +ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs +whose distribution conditions are incompatible with these, write to the author +to ask for permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make exceptions +for this. Our decision will be guided by the two goals of preserving the free +status of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES +OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest possible +use to the public, we recommend making it free software that everyone can +redistribute and change. You can do so by permitting redistribution under +these terms (or, alternatively, under the terms of the ordinary General Public +License). + +To apply these terms, attach the following notices to the library. It is safest +to attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the "copyright" +line and a pointer to where the full notice is found. + +< one line to give the library's name and an idea of what it does. > + +Copyright (C) < year > < name of author > + +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) +any later version. + +This library is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. + +You should have received a copy of the GNU Lesser General Public License along +with this library; if not, write to the Free Software Foundation, Inc., 51 +Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information +on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the library, if necessary. Here +is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in + +the library `Frob' (a library for tweaking knobs) written + +by James Random Hacker. + +< signature of Ty Coon > , 1 April 1990 + +Ty Coon, President of Vice + +That's all there is to it! diff --git a/Modules/samba/CMakeLists.txt b/Modules/samba/CMakeLists.txt index b8049f0..87bdf78 100644 --- a/Modules/samba/CMakeLists.txt +++ b/Modules/samba/CMakeLists.txt @@ -1,28 +1,28 @@ add_definitions (-DQT3_SUPPORT -DQT3_SUPPORT_WARNINGS) # KI18N Translation Domain for this library add_definitions(-DTRANSLATION_DOMAIN=\"kcmsamba\") -set(kcm_samba_PART_SRCS - main.cpp - ksmbstatus.cpp - kcmsambaimports.cpp - kcmsambalog.cpp - kcmsambastatistics.cpp ) - - -add_library(kcm_samba MODULE ${kcm_samba_PART_SRCS}) - +set(kcm_samba_PART_SRCS + smbmountmodel.cpp + ksambasharemodel.cpp +) -target_link_libraries(kcm_samba +# Intermediate lib for use in testing. +add_library(kcm_samba_static STATIC ${kcm_samba_PART_SRCS}) +target_link_libraries(kcm_samba_static + KF5::KIOCore + KF5::Solid + KF5::I18n KF5::I18n KF5::KCMUtils - KF5::KIOCore - KF5::KIOWidgets ) -install(TARGETS kcm_samba DESTINATION ${PLUGIN_INSTALL_DIR} ) - +add_library(kcm_samba MODULE main.cpp) +target_link_libraries(kcm_samba + kcm_samba_static +) -########### install files ############### +install(TARGETS kcm_samba DESTINATION ${PLUGIN_INSTALL_DIR}) +install(FILES smbstatus.desktop DESTINATION ${SERVICES_INSTALL_DIR}) -install( FILES smbstatus.desktop DESTINATION ${SERVICES_INSTALL_DIR} ) +add_subdirectory(autotests) diff --git a/Modules/samba/autotests/CMakeLists.txt b/Modules/samba/autotests/CMakeLists.txt new file mode 100644 index 0000000..6096087 --- /dev/null +++ b/Modules/samba/autotests/CMakeLists.txt @@ -0,0 +1,18 @@ +if(NOT BUILD_TESTING) + return() +endif() + +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +find_package(Qt5Test ${QT_MIN_VERSION} CONFIG REQUIRED) + +include(ECMAddTests) + +ecm_add_tests( + ksambasharemodeltest + smbmountmodeltest + LINK_LIBRARIES + Qt5::Core + Qt5::Test + kcm_samba_static +) diff --git a/Modules/samba/autotests/ksambasharemodeltest.cpp b/Modules/samba/autotests/ksambasharemodeltest.cpp new file mode 100644 index 0000000..27d95fa --- /dev/null +++ b/Modules/samba/autotests/ksambasharemodeltest.cpp @@ -0,0 +1,23 @@ +/* + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ + +#include +#include + +#include "../ksambasharemodel.h" + +class KSambaShareModelTest : public QObject +{ + Q_OBJECT +private Q_SLOTS: + void testModel() + { + QAbstractItemModelTester tester(new KSambaShareModel, QAbstractItemModelTester::FailureReportingMode::QtTest); + } +}; + +QTEST_GUILESS_MAIN(KSambaShareModelTest) + +#include "ksambasharemodeltest.moc" diff --git a/Modules/samba/autotests/smbmountmodeltest.cpp b/Modules/samba/autotests/smbmountmodeltest.cpp new file mode 100644 index 0000000..efb40be --- /dev/null +++ b/Modules/samba/autotests/smbmountmodeltest.cpp @@ -0,0 +1,23 @@ +/* + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ + +#include +#include + +#include "../smbmountmodel.h" + +class SmbMountModelTest : public QObject +{ + Q_OBJECT +private Q_SLOTS: + void testModel() + { + QAbstractItemModelTester tester(new SmbMountModel); + } +}; + +QTEST_GUILESS_MAIN(SmbMountModelTest) + +#include "smbmountmodeltest.moc" diff --git a/Modules/samba/kcmsambaimports.cpp b/Modules/samba/kcmsambaimports.cpp deleted file mode 100644 index e5da098..0000000 --- a/Modules/samba/kcmsambaimports.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * kcmsambaimports.cpp - * - * Copyright (c) 2000 Alexander Neundorf - * - * Requires the Qt widget libraries, available at no cost at - * https://www.qt.io/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "kcmsambaimports.h" - -#include -#include - -#include - -#include - -ImportsView::ImportsView(QWidget * parent, KConfig *config) : - QWidget(parent), configFile(config), list(this) { - QBoxLayout *topLayout = new QVBoxLayout(this); - topLayout->addWidget(&list); - - list.setAllColumnsShowFocus(true); - list.setMinimumSize(425, 200); - list.setHeaderLabels(QStringList() << i18n("Type") << i18n("Resource") << i18n("Mounted Under")); - - this->setWhatsThis(i18n("This list shows the Samba and NFS shared" - " resources mounted on your system from other hosts. The \"Type\"" - " column tells you whether the mounted resource is a Samba or an NFS" - " type of resource. The \"Resource\" column shows the descriptive name" - " of the shared resource. Finally, the third column, which is labeled" - " \"Mounted under\" shows the location on your system where the shared" - " resource is mounted.") ); - - timer.start(10000); - QObject::connect(&timer, &QTimer::timeout, this, &ImportsView::updateList); - updateList(); -} - -void ImportsView::updateList() { - list.clear(); - char *e; - char buf[250]; - QByteArray s(""), strSource, strMount; - QString strType; - FILE *f=popen("mount", "r"); - if (f==nullptr) - return; - do { - e=fgets(buf, 250, f); - if (e) { - s=buf; - if ((s.contains(" nfs ")) || (s.contains(" smbfs "))) { - strSource=s.left(s.indexOf(" on /")); - strMount=s.mid(s.indexOf(" on /")+4, s.length()); - if ((s.contains(" nfs ")) || (s.contains("/remote on "))) - strType=QStringLiteral("NFS"); - else if (s.contains(" smbfs ")) - strType=QStringLiteral("SMB"); - int pos(strMount.indexOf(" type ")); - if (pos==-1) - pos=strMount.indexOf(" read/"); - strMount=strMount.left(pos); - QTreeWidgetItem *item = new QTreeWidgetItem(&list); - item->setText(0, strType); - item->setText(1, QString::fromUtf8(strSource)); - item->setText(2, QString::fromUtf8(strMount)); - }; - }; - } while (!feof(f)); - pclose(f); -} - diff --git a/Modules/samba/kcmsambaimports.h b/Modules/samba/kcmsambaimports.h deleted file mode 100644 index 520fc83..0000000 --- a/Modules/samba/kcmsambaimports.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * kcmsambaimports.h - * - * Copyright (c) 2000 Alexander Neundorf - * - * Requires the Qt widget libraries, available at no cost at - * https://www.qt.io/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef kcmsambaimports_h_included -#define kcmsambaimports_h_included - -#include -#include - -#include - -class ImportsView : public QWidget { -Q_OBJECT -public: - explicit ImportsView(QWidget *parent, KConfig *config=0); - virtual ~ImportsView() { - } - void saveSettings() { - } - void loadSettings() { - } -private: - KConfig *configFile; - QTreeWidget list; - QTimer timer; -private Q_SLOTS: - void updateList(); -}; - -#endif // main_included diff --git a/Modules/samba/kcmsambalog.cpp b/Modules/samba/kcmsambalog.cpp deleted file mode 100644 index a312ca8..0000000 --- a/Modules/samba/kcmsambalog.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/* - * kcmsambalog.cpp - * - * Copyright (c) 2000 Alexander Neundorf - * - * Requires the Qt widget libraries, available at no cost at - * https://www.qt.io/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "kcmsambalog.h" - -#define LOG_SCREEN_XY_OFFSET 10 - -LogView::LogView(QWidget *parent, KConfig *config) : - QWidget(parent), configFile(config), filesCount(0), connectionsCount(0), logFileName(QUrl::fromLocalFile(QStringLiteral("/var/log/samba/log.smbd")), this), label(i18n("Samba log file: "), this), viewHistory(this), showConnOpen(i18n("Show opened connections"), this), showConnClose(i18n("Show closed connections"), this), - showFileOpen(i18n("Show opened files"), this), showFileClose(i18n("Show closed files"), this), updateButton(i18n("&Update"), this) { - label.setTextInteractionFlags(Qt::TextSelectableByMouse); - label.setBuddy( &logFileName); - QVBoxLayout *mainLayout=new QVBoxLayout(this); - QHBoxLayout *leLayout=new QHBoxLayout(); - mainLayout->addItem(leLayout); - leLayout->addWidget(&label); - leLayout->addWidget(&logFileName, 1); - mainLayout->addWidget(&viewHistory, 1); - QGridLayout *subLayout=new QGridLayout(); - mainLayout->addItem(subLayout); - subLayout->addWidget(&showConnOpen, 0, 0); - subLayout->addWidget(&showConnClose, 1, 0); - subLayout->addWidget(&showFileOpen, 0, 1); - subLayout->addWidget(&showFileClose, 1, 1); - mainLayout->addWidget(&updateButton, 0, Qt::AlignLeft); - - logFileName.setWhatsThis(i18n("This page presents the contents of" - " your samba log file in a friendly layout. Check that the correct log" - " file for your computer is listed here. If you need to, correct the name" - " or location of the log file, and then click the \"Update\" button.") ); - - showConnOpen.setWhatsThis(i18n("Check this option if you want to" - " view the details for connections opened to your computer.") ); - - showConnClose.setWhatsThis(i18n("Check this option if you want to" - " view the events when connections to your computer were closed.") ); - - showFileOpen.setWhatsThis(i18n("Check this option if you want to" - " see the files which were opened on your computer by remote users." - " Note that file open/close events are not logged unless the samba" - " log level is set to at least 2 (you cannot set the log level" - " using this module).") ); - - showFileClose.setWhatsThis(i18n("Check this option if you want to" - " see the events when files opened by remote users were closed." - " Note that file open/close events are not logged unless the samba" - " log level is set to at least 2 (you cannot set the log level" - " using this module).") ); - - updateButton.setWhatsThis(i18n("Click here to refresh the information" - " on this page. The log file (shown above) will be read to obtain the" - " events logged by samba.") ); - - viewHistory.setAllColumnsShowFocus(true); - viewHistory.setFocusPolicy(Qt::ClickFocus); - - QStringList headers; - headers << i18n("Date & Time") << i18n("Event") << i18n("Service/File") - << i18n("Host/User") << i18n("Date & Time") << i18n("Event") - << i18n("Service/File") << i18n("Host/User"); - viewHistory.setHeaderLabels(headers); - - viewHistory.setWhatsThis(i18n("

This list shows details of the events" - " logged by samba. Note that events at the file level are not logged" - " unless you have configured the log level for samba to 2 or greater.

" - " As with many other lists in KDE, you can click on a column heading" - " to sort on that column. Click again to change the sorting direction" - " from ascending to descending or vice versa.

" - " If the list is empty, try clicking the \"Update\" button. The samba" - " log file will be read and the list refreshed.

") ); - - showConnOpen.setChecked(true); - showConnClose.setChecked(true); - showFileOpen.setChecked(false); - showFileClose.setChecked(false); - - connect(&updateButton, &QPushButton::clicked, this, &LogView::updateList); - emit contentsChanged(&viewHistory, 0, 0); - - label.setMinimumSize(label.sizeHint()); - logFileName.setMinimumSize(250, logFileName.sizeHint().height()); - viewHistory.setMinimumSize(425, 200); - showConnOpen.setMinimumSize(showConnOpen.sizeHint()); - showConnClose.setMinimumSize(showConnClose.sizeHint()); - showFileOpen.setMinimumSize(showFileOpen.sizeHint()); - showFileClose.setMinimumSize(showFileClose.sizeHint()); - updateButton.setFixedSize(updateButton.sizeHint()); -} - -void LogView::loadSettings() { - if (configFile==0) - return; - KConfigGroup group = configFile->group(LOGGROUPNAME); - logFileName.setUrl(QUrl::fromLocalFile(group.readPathEntry("SambaLogFile", QStringLiteral("/var/log/samba/log.smbd")))); - - showConnOpen.setChecked(group.readEntry("ShowConnectionOpen", true)); - showConnClose.setChecked(group.readEntry("ShowConnectionClose", false)); - showFileOpen.setChecked(group.readEntry("ShowFileOpen", true)); - showFileClose.setChecked(group.readEntry("ShowFileClose", false)); -} - -void LogView::saveSettings() { - if (configFile==0) - return; - KConfigGroup group = configFile->group(LOGGROUPNAME); - group.writePathEntry("SambaLogFile", logFileName.url().path()); - - group.writeEntry("ShowConnectionOpen", showConnOpen.isChecked()); - group.writeEntry("ShowConnectionClose", showConnClose.isChecked()); - group.writeEntry("ShowFileOpen", showFileOpen.isChecked()); - group.writeEntry("ShowFileClose", showFileClose.isChecked()); -} - -#define CONN_OPEN " connect to service " -#define CONN_CLOSE " closed connection to service " -#define FILE_OPEN " opened file " -#define FILE_CLOSE " closed file " - -//caution ! high optimized code :-) -void LogView::updateList() { - QFile logFile(logFileName.url().path()); - if (logFile.open(QIODevice::ReadOnly)) { - QApplication::setOverrideCursor(Qt::WaitCursor); - viewHistory.clear(); - filesCount=0; - connectionsCount=0; - - int connOpenLen(strlen(CONN_OPEN)); - int connCloseLen(strlen(CONN_CLOSE)); - int fileOpenLen(strlen(FILE_OPEN)); - int fileCloseLen(strlen(FILE_CLOSE)); - - char buf[400]; - char *c1, *c2, *c3, *c4, *c, time[25]; - int timeRead(0); - - while (!logFile.atEnd()) { - logFile.readLine(buf, sizeof(buf)); - timeRead=0; - if (buf[0]=='[') { - if (strlen(buf)>11) - if (buf[5]=='/') { - buf[20]='\0'; - strncpy(time, buf+1, sizeof(time)); - time[sizeof(time)-1] = '\0'; - timeRead=1; - }; - }; - if (timeRead==0) { - c1=nullptr; - c2=nullptr; - c3=nullptr; - c4=nullptr; - if (showConnOpen.isChecked()) - c1=strstr(buf, CONN_OPEN); - if (!c1) { - if (showConnClose.isChecked()) - c2=strstr(buf, CONN_CLOSE); - if (!c2) { - if (showFileOpen.isChecked()) - c3=strstr(buf, FILE_OPEN); - if (!c3) { - if (showFileClose.isChecked()) - c4=strstr(buf, FILE_CLOSE); - if (!c4) - continue; - }; - }; - }; - if (c1) { - c=strstr(buf, " as user"); - *c='\0'; - *c1='\0'; - new QTreeWidgetItemX(&viewHistory,time,I18N_NOOP("CONNECTION OPENED"),c1+connOpenLen,buf+2); - connectionsCount++; - } else if (c2) { - *c2='\0'; - new QTreeWidgetItemX(&viewHistory,time,I18N_NOOP("CONNECTION CLOSED"),c2+connCloseLen,buf+2); - } else if (c3) { - c=strstr(buf, " read="); - *c='\0'; - *c3='\0'; - new QTreeWidgetItemX(&viewHistory,time,I18N_NOOP(" FILE OPENED"),c3+fileOpenLen,buf+2); - filesCount++; - } else if (c4) { - c=strstr(buf, " (numopen="); - *c='\0'; - *c4='\0'; - new QTreeWidgetItemX(&viewHistory,time,I18N_NOOP(" FILE CLOSED"),c4+fileCloseLen,buf+2); - }; - }; - }; - logFile.close(); - emit contentsChanged(&viewHistory, filesCount, connectionsCount); - QApplication::restoreOverrideCursor(); - } else { - QString tmp = i18n("Could not open file %1", logFileName.url().path()); - KMessageBox::error(this, tmp); - }; -} - diff --git a/Modules/samba/kcmsambalog.h b/Modules/samba/kcmsambalog.h deleted file mode 100644 index cf859b2..0000000 --- a/Modules/samba/kcmsambalog.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * kcmsambalog.h - * - * Copyright (c) 2000 Alexander Neundorf - * - * Requires the Qt widget libraries, available at no cost at - * https://www.qt.io/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef kcmsambalog_h_included -#define kcmsambalog_h_included - -#include -#include -#include -#include - -#include -#include - -#define LOGGROUPNAME "SambaLogFileSettings" - -class LogView : public QWidget { -Q_OBJECT -public: - explicit LogView(QWidget *parent=0, KConfig *config=0); - virtual ~LogView() { - } - void saveSettings(); - void loadSettings(); -private: - KConfig *configFile; - int filesCount, connectionsCount; - KUrlRequester logFileName; - QLabel label; - QTreeWidget viewHistory; - QCheckBox showConnOpen, showConnClose, showFileOpen, showFileClose; - QPushButton updateButton; -private Q_SLOTS: - void updateList(); -Q_SIGNALS: - void contentsChanged(QTreeWidget *list, int nrOfFiles, int nrOfConnections); -}; - -class QTreeWidgetItemX : public QTreeWidgetItem { -public: - //a faster constructor saves a lot time - QTreeWidgetItemX(QTreeWidget *parent, const char *c0, const char *c1 = 0, const char *c2 = 0, const char *c3 = 0, const char *c4 = 0, const char *c5 = 0, const char *c6 = 0, const char *c7 = 0) : - QTreeWidgetItem(parent) { - setText( 0, QString::fromLatin1(c0)); - setText( 1, QString::fromLatin1(c1)); - setText( 2, QString::fromLatin1(c2)); - setText( 3, QString::fromLatin1(c3)); - if (c4==0) - return; - setText( 4, QString::fromLatin1(c4)); - if (c5==0) - return; - setText( 5, QString::fromLatin1(c5)); - if (c6==0) - return; - setText( 6, QString::fromLatin1(c6)); - if (c7==0) - return; - setText( 7, QString::fromLatin1(c7)); - } -}; - -#endif // main_included diff --git a/Modules/samba/kcmsambastatistics.cpp b/Modules/samba/kcmsambastatistics.cpp deleted file mode 100644 index 926611f..0000000 --- a/Modules/samba/kcmsambastatistics.cpp +++ /dev/null @@ -1,302 +0,0 @@ -/* - * kcmsambastatistics.cpp - * - * Copyright (c) 2000 Alexander Neundorf - * - * Requires the Qt widget libraries, available at no cost at - * https://www.qt.io/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "kcmsambastatistics.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -StatisticsView::StatisticsView(QWidget *parent, KConfig *config) : - QWidget(parent), configFile(config), dataList(0), connectionsCount(0), filesCount(0), calcCount(0) { - viewStatistics = new QTreeWidget( this ); - connectionsL = new QLabel( i18n( "Connections: 0" ), this ); - connectionsL->setTextInteractionFlags(Qt::TextSelectableByMouse); - filesL = new QLabel( i18n( "File accesses: 0" ), this ); - filesL->setTextInteractionFlags(Qt::TextSelectableByMouse); - eventCb = new QComboBox( this ); - eventL = new QLabel( i18n( "Event: " ), this ); - eventL->setTextInteractionFlags(Qt::TextSelectableByMouse); - eventL->setBuddy(eventCb); - serviceLe = new QLineEdit( this ); - serviceL = new QLabel( i18n( "Service/File:" ), this ); - serviceL->setTextInteractionFlags(Qt::TextSelectableByMouse); - serviceL->setBuddy(serviceLe); - hostLe = new QLineEdit( this ); - hostL = new QLabel( i18n( "Host/User:" ), this ); - hostL->setTextInteractionFlags(Qt::TextSelectableByMouse); - hostL->setBuddy(hostLe); - calcButton = new QPushButton( i18n( "&Search" ), this ); - clearButton = new QPushButton( i18n( "Clear Results" ), this ); - expandedInfoCb = new QCheckBox( i18n( "Show expanded service info" ), this ); - expandedUserCb = new QCheckBox( i18n( "Show expanded host info" ), this ); - - viewStatistics->setAllColumnsShowFocus(true); - viewStatistics->setFocusPolicy(Qt::ClickFocus); - - QStringList headers; - headers << i18n("Nr") << i18n("Event") << i18n("Service/File") << i18n("Host/User") << i18n("Hits"); //i18n("Percentage"),100); - viewStatistics->setHeaderLabels(headers); - - eventCb->setEditable(false); - eventCb->addItem(i18n("Connection")); - eventCb->addItem(i18n("File Access")); - - expandedInfoCb->setChecked(false); - expandedUserCb->setChecked(false); - clearStatistics(); - serviceLe->setText(QStringLiteral("*")); - hostLe->setText(QStringLiteral("*")); - - viewStatistics->setMinimumSize(375, 200); - connectionsL->setMinimumSize(connectionsL->sizeHint()); - filesL->setMinimumSize(filesL->sizeHint()); - eventL->setMinimumSize(eventL->sizeHint()); - eventCb->setMinimumSize(eventCb->sizeHint()); - hostL->setMinimumSize(hostL->sizeHint()); - hostLe->setMinimumSize(120, hostLe->sizeHint().height()); - serviceL->setMinimumSize(serviceL->sizeHint()); - serviceLe->setMinimumSize(120, serviceLe->sizeHint().height()); - calcButton->setMinimumSize(calcButton->sizeHint()); - clearButton->setMinimumSize(clearButton->sizeHint()); - expandedInfoCb->setMinimumSize(expandedInfoCb->sizeHint()); - expandedUserCb->setMinimumSize(expandedUserCb->sizeHint()); - - QVBoxLayout *topLayout=new QVBoxLayout(this); - topLayout->addWidget(viewStatistics, 1); - QGridLayout *subLayout=new QGridLayout(); - topLayout->addItem(subLayout); - subLayout->setColumnStretch(1, 1); - subLayout->setColumnStretch(2, 1); - - QHBoxLayout *twoButtonsLayout=new QHBoxLayout; - twoButtonsLayout->addWidget(calcButton, 1); - twoButtonsLayout->addWidget(clearButton, 1); - - subLayout->addWidget(connectionsL, 0, 0); - subLayout->addWidget(filesL, 0, 1); - subLayout->addWidget(eventL, 1, 0); - subLayout->addWidget(serviceL, 1, 1); - subLayout->addWidget(hostL, 1, 2); - subLayout->addWidget(eventCb, 2, 0); - subLayout->addWidget(serviceLe, 2, 1); - subLayout->addWidget(hostLe, 2, 2); - subLayout->addLayout(twoButtonsLayout, 3, 0); - subLayout->addWidget(expandedInfoCb, 3, 1); - subLayout->addWidget(expandedUserCb, 3, 2); - - connect(clearButton, &QPushButton::clicked, this, &StatisticsView::clearStatistics); - connect(calcButton, &QPushButton::clicked, this, &StatisticsView::calculate); - setListInfo(0, 0, 0); -} - -void StatisticsView::setListInfo(QTreeWidget *list, int nrOfFiles, int nrOfConnections) { - dataList=list; - filesCount=nrOfFiles; - connectionsCount=nrOfConnections; - connectionsL->setText(i18n("Connections: %1", connectionsCount)); - filesL->setText(i18n("File accesses: %1", filesCount)); - clearStatistics(); -} - -void StatisticsView::calculate() { - if (dataList==0) - return; - QApplication::setOverrideCursor(Qt::WaitCursor); - int connCount(0); - if (eventCb->currentText()==i18n("Connection")) - connCount=1; - //something has to be counted exactly - if ((expandedInfoCb->isChecked()) || (expandedUserCb->isChecked())) { - SambaLog sLog; - QRegExp rService(serviceLe->text(), Qt::CaseInsensitive, QRegExp::Wildcard); - QRegExp rHost(hostLe->text(), Qt::CaseInsensitive, QRegExp::Wildcard); - QString item2, item3; - for (int i = 0; i < dataList->topLevelItemCount(); ++i) - { - QTreeWidgetItem *item = dataList->topLevelItem(i); - if (connCount) { - if ((QString(item->text(1)).contains(i18n("CONNECTION OPENED"))) && (QString(item->text(2)).contains(rService)) && (QString(item->text(3)).contains(rHost))) { - if (expandedInfoCb->isChecked()) - item2=item->text(2); - else - item2=serviceLe->text(); - if (expandedUserCb->isChecked()) - item3=item->text(3); - else - item3=hostLe->text(); - sLog.addItem(item2, item3); - //count++; - } - } else { - if ((QString(item->text(1)).contains(i18n("FILE OPENED"))) && (QString(item->text(2)).contains(rService)) && (QString(item->text(3)).contains(rHost))) { - if (expandedInfoCb->isChecked()) - item2=item->text(2); - else - item2=serviceLe->text(); - if (expandedUserCb->isChecked()) - item3=item->text(3); - else - item3=hostLe->text(); - sLog.addItem(item2, item3); - - } - } - } - - foreach (const LogItem *tmpItem, sLog.items) - { - if (!tmpItem) - { - continue; - } - - foreach (const SmallLogItem *tmpStr, tmpItem->accessed) { - if (!tmpStr) - { - continue; - } - - calcCount++; - const QString number = QString::asprintf("%6d", calcCount); - const QString hits = QString::asprintf("%7d", tmpStr->count); - QTreeWidgetItem *item = new QTreeWidgetItem(viewStatistics); - item->setText(0, number); - item->setText(1, eventCb->currentText()); - item->setText(2, tmpItem->name); - item->setText(3, tmpStr->name); - item->setText(4, hits); - } - } - } - //no expanded info needed - else { - calcCount++; - int count(0); - QRegExp rService(serviceLe->text(), Qt::CaseInsensitive, QRegExp::Wildcard); - QRegExp rHost(hostLe->text(), Qt::CaseInsensitive, QRegExp::Wildcard); - for (int i = 0; i < dataList->topLevelItemCount(); ++i) - { - QTreeWidgetItem *item = dataList->topLevelItem(i); - if (connCount) { - if ((item->text(1).contains(i18n("CONNECTION OPENED"))) && (item->text(2).contains(rService)) && (item->text(3).contains(rHost))) - count++; - } else { - if ((item->text(1).contains(i18n("FILE OPENED"))) && (item->text(2).contains(rService)) && (item->text(3).contains(rHost))) - count++; - } - } - const QString number = QString::asprintf("%6d", calcCount); - const QString hits = QString::asprintf("%7d", count); - QTreeWidgetItem *item = new QTreeWidgetItem(viewStatistics); - item->setText(0, number); - item->setText(1, eventCb->currentText()); - item->setText(2, serviceLe->text()); - item->setText(3, hostLe->text()); - item->setText(4, hits); - }; - QApplication::restoreOverrideCursor(); -} - -void StatisticsView::clearStatistics() { - viewStatistics->clear(); - calcCount=0; -} - -void SambaLog::printItems() { - //qDebug() << "****** printing items: ******"; - foreach (const LogItem *tmpItem, items) - { - if (!tmpItem) - { - continue; - } - - //qDebug() << "SERVICE: " << tmpItem->name; - foreach (const SmallLogItem *tmpLog, tmpItem->accessed) { - if (!tmpLog) - { - continue; - } - //qDebug() << " accessed by: " << tmpLog->name << " " << tmpLog->count; - } - } - - //qDebug() << "------ end of printing ------"; -} - -LogItem* SambaLog::itemInList(const QString &name) { - foreach (LogItem *tmpItem, items) - { - if (!tmpItem) - { - continue; - } - - if (tmpItem->name==name) - { - return tmpItem; - } - } - - return nullptr; -} - -void SambaLog::addItem(const QString &share, const QString &user) { - //cout<<" adding connection: -"<count++; - tmp->addItem(user); - } else { - items.append(new LogItem(share,user)); - } -} - -SmallLogItem* LogItem::itemInList(const QString &name) { - foreach (SmallLogItem *tmpLog, accessed) { - if (tmpLog && tmpLog->name==name) { - return tmpLog; - } - } - return 0; -} - -void LogItem::addItem(const QString &host) { - SmallLogItem* tmp(itemInList(host)); - if (tmp!=0) - tmp->count++; - else - accessed.append(new SmallLogItem(host)); -} - diff --git a/Modules/samba/kcmsambastatistics.h b/Modules/samba/kcmsambastatistics.h deleted file mode 100644 index 5246d63..0000000 --- a/Modules/samba/kcmsambastatistics.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * kcmsambastatistics.h - * - * Copyright (c) 2000 Alexander Neundorf - * - * Requires the Qt widget libraries, available at no cost at - * https://www.qt.io/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef kcmsambastatistics_h_included -#define kcmsambastatistics_h_included - -#include -#include - -class QTreeWidget; -class QLabel; -class QComboBox; -class QCheckBox; -class QLineEdit; -class QPushButton; - -class KConfig; - -class SmallLogItem { -public: - SmallLogItem() : - name(QLatin1String("")), count(0) { - } - SmallLogItem(const QString &n) : - name(n), count(1) { - } - QString name; - int count; -}; - -class LogItem { -public: - LogItem() : - name(QLatin1String("")), accessed(), count(0) { - } - LogItem(const QString &n, const QString &a) : - name(n), accessed(), count(1) { - accessed.append(new SmallLogItem(a)); - } - ~LogItem() { - qDeleteAll(accessed); - accessed.clear(); - } - QString name; - QList accessed; - int count; - SmallLogItem* itemInList(const QString &name); - void addItem(const QString &host); -}; - -class SambaLog { -public: - ~SambaLog() { - qDeleteAll(items); - items.clear(); - } - QList items; - void addItem(const QString &share, const QString &host); - void printItems(); -private: - LogItem* itemInList(const QString &name); -}; - -class StatisticsView : public QWidget { -Q_OBJECT -public: - explicit StatisticsView(QWidget *parent=0, KConfig *config=0); - virtual ~StatisticsView() { - } - void saveSettings() { - } - void loadSettings() { - } -public Q_SLOTS: - void setListInfo(QTreeWidget *list, int nrOfFiles, int nrOfConnections); -private: - KConfig *configFile; - QTreeWidget* dataList; - QTreeWidget* viewStatistics; - QLabel* connectionsL, *filesL; - QComboBox* eventCb; - QLabel* eventL; - QLineEdit* serviceLe; - QLabel* serviceL; - QLineEdit* hostLe; - QLabel* hostL; - QPushButton* calcButton, *clearButton; - QCheckBox* expandedInfoCb, *expandedUserCb; - int connectionsCount, filesCount, calcCount; -private Q_SLOTS: - void clearStatistics(); - void calculate(); -}; -#endif // main_included diff --git a/Modules/samba/ksambasharemodel.cpp b/Modules/samba/ksambasharemodel.cpp new file mode 100644 index 0000000..db98ace --- /dev/null +++ b/Modules/samba/ksambasharemodel.cpp @@ -0,0 +1,92 @@ +/* + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ + +#include "ksambasharemodel.h" + +#include +#include + +KSambaShareModel::KSambaShareModel(QObject *parent) + : QAbstractListModel(parent) +{ + connect(KSambaShare::instance(), &KSambaShare::changed, + this, &KSambaShareModel::reloadData); + reloadData(); +} + +KSambaShareModel::~KSambaShareModel() = default; + +int KSambaShareModel::rowCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + return m_list.size(); +} + +int KSambaShareModel::columnCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + return static_cast(ColumnRole::ColumnCount); +} + +QVariant KSambaShareModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation != Qt::Horizontal || role != Qt::DisplayRole) { + return {}; // we only have column headers. + } + + Q_ASSERT(section < static_cast(ColumnRole::ColumnCount)); + switch (static_cast(section)) { + case ColumnRole::Name: + return i18nc("@title:column samba share name", "Name"); + case ColumnRole::Path: + return i18nc("@title:column samba share dir path", "Path"); + case ColumnRole::Comment: + return i18nc("@title:column samba share text comment/description", "Comment"); + case ColumnRole::ColumnCount: + break; // noop + } + + return {}; +} + +QVariant KSambaShareModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) { + return {}; + } + + Q_ASSERT(index.row() < m_list.length()); + Q_ASSERT(index.column() < static_cast(ColumnRole::ColumnCount)); + if (role == Qt::DisplayRole) { + switch (static_cast(index.column())) { + case ColumnRole::Name: + return m_list.at(index.row()).name(); + case ColumnRole::Path: + return m_list.at(index.row()).path(); + case ColumnRole::Comment: + return m_list.at(index.row()).comment(); + case ColumnRole::ColumnCount: + break; // noop + } + } + + return {}; +} + +void KSambaShareModel::reloadData() +{ + beginResetModel(); + m_list.clear(); + const auto samba = KSambaShare::instance(); + for (const auto &path : samba->sharedDirectories()) { + m_list += samba->getSharesByPath(path); + } + endResetModel(); +} + +bool KSambaShareModel::hasChildren(const QModelIndex &parent) const +{ + return !parent.isValid() ? false : (rowCount(parent) > 0); +} diff --git a/Modules/samba/ksambasharemodel.h b/Modules/samba/ksambasharemodel.h new file mode 100644 index 0000000..c2a909f --- /dev/null +++ b/Modules/samba/ksambasharemodel.h @@ -0,0 +1,43 @@ +/* + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ + +#ifndef KSAMBASHAREMODEL_H +#define KSAMBASHAREMODEL_H + +#include +#include + +/** + * Model of ksamabasharedata. Implementing properties + * as columns rather than roles. + */ +class KSambaShareModel : public QAbstractListModel +{ +Q_OBJECT +public: + enum class ColumnRole { + Name, + Path, + Comment, + ColumnCount, // End marker + }; + + explicit KSambaShareModel(QObject *parent = nullptr); + ~KSambaShareModel() override; + + int rowCount(const QModelIndex &parent) const override; + int columnCount(const QModelIndex &parent) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + QVariant data(const QModelIndex &index, int role) const override; + bool hasChildren(const QModelIndex &parent) const override; + +public slots: + void reloadData(); + +private: + QList m_list; +}; + +#endif // KSAMBASHAREMODEL_H diff --git a/Modules/samba/ksmbstatus.cpp b/Modules/samba/ksmbstatus.cpp deleted file mode 100644 index 83d9806..0000000 --- a/Modules/samba/ksmbstatus.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/* - * ksmbstatus.cpp - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include "ksmbstatus.h" - -#define Before(ttf,in) in.left(in.indexOf(ttf)) -#define After(ttf,in) (in.contains(ttf)?QString(in.mid(in.indexOf(ttf)+QString(ttf).length())):QLatin1String("")) - -NetMon::NetMon(QWidget * parent, KConfig *config) : - QWidget(parent), configFile(config), showmountProc(nullptr), strShare(""), strUser(""), strGroup(""), strMachine(""), strSince(""), strPid(""), iUser(0), iGroup(0), iMachine(0), iPid(0) { - QBoxLayout *topLayout = new QVBoxLayout(this); - - list = new QTreeWidget(this); - topLayout->addWidget(list); - version=new QLabel(this); - version->setTextInteractionFlags(Qt::TextSelectableByMouse); - topLayout->addWidget(version); - - list->setAllColumnsShowFocus(true); - list->setMinimumSize(425, 200); - - QStringList headers; - headers << i18n("Type") << i18n("Service") << i18n("Accessed From") - << i18n("UID") << i18n("GID") << i18n("PID") << i18n("Open Files"); - list->setHeaderLabels(headers); - - timer = new QTimer(this); - timer->start(15000); - QObject::connect(timer, &QTimer::timeout, this, &NetMon::update); - update(); -} - -void NetMon::processNFSLine(char *bufline, int) { - QByteArray line(bufline); - if (line.contains(":/")) { - QTreeWidgetItem *item = new QTreeWidgetItem(list); - item->setText(0, QStringLiteral("NFS")); - item->setText(0, After(QLatin1String(":"),QString::fromUtf8(line))); - item->setText(0, Before(QLatin1String(":/"),QString::fromUtf8(line))); - } -} - -void NetMon::processSambaLine(char *bufline, int) { - QByteArray line(bufline); - rownumber++; - if (rownumber == 2) - version->setText(QString::fromUtf8(bufline)); // second line = samba version - if ((readingpart==header) && line.contains("Service")) { - iUser=line.indexOf("uid"); - iGroup=line.indexOf("gid"); - iPid=line.indexOf("pid"); - iMachine=line.indexOf("machine"); - } else if ((readingpart==header) && (line.contains("---"))) { - readingpart=connexions; - } else if ((readingpart==connexions) && (int(line.length())>=iMachine)) { - strShare=line.mid(0, iUser); - strUser=line.mid(iUser, iGroup-iUser); - strGroup=line.mid(iGroup, iPid-iGroup); - strPid=line.mid(iPid, iMachine-iPid); - - line=line.mid(iMachine, line.length()); - strMachine=line; - QTreeWidgetItem * item = new QTreeWidgetItem(list); - item->setText(0, QStringLiteral("SMB")); - item->setText(1, QString::fromUtf8(strShare)); - item->setText(2, QString::fromUtf8(strMachine)); - item->setText(3, QString::fromUtf8(strUser)); - item->setText(4, QString::fromUtf8(strGroup)); - item->setText(5, QString::fromUtf8(strPid)/*,strSince*/); - } else if (readingpart==connexions) - readingpart=locked_files; - else if ((readingpart==locked_files) && (line.indexOf("No ")==0)) - readingpart=finished; - else if (readingpart==locked_files) { - if ((strncmp(bufline, "Pi", 2) !=0) // "Pid DenyMode ..." - && (strncmp(bufline, "--", 2) !=0)) // "------------" - { - char *tok=strtok(bufline, " "); - if (tok) { - int pid=atoi(tok); - (lo)[pid]++; - } - } - } -} - -// called when we get some data from smbstatus -// can be called for any size of buffer (one line, several lines, -// half of one ...) -void NetMon::readFromProcess() { - QProcess *process = qobject_cast(sender()); - if (!process || !process->canReadLine()) - return; - - qint64 buflen = 8046; // 8k enough? - char buffer[buflen]; - buflen = process->readLine(buffer, buflen); - ////qDebug()<<"received stuff"; - char s[250], *start, *end; - size_t len; - start = buffer; - while ((end = strchr(start, '\n'))) // look for '\n' - { - len = end-start; - if (len>=sizeof(s)) - len=sizeof(s)-1; - strncpy(s, start, len); - s[len] = '\0'; - ////qDebug() << "received: "<viewport()->update(); - list->update(); - } - */ - // here we could save the remaining part of line, if ever buffer - // doesn't end with a '\n' ... but will this happen ? -} - -void NetMon::update() { - QProcess *process = new QProcess(); - - memset(&lo, 0, sizeof(lo)); - list->clear(); - /* Re-read the Contents ... */ - - QString path(QString::fromUtf8(::getenv("PATH"))); - path += QLatin1String("/bin:/sbin:/usr/bin:/usr/sbin"); - - rownumber=0; - readingpart=header; - nrpid=0; - process->setEnvironment(QStringList() << (QStringLiteral("PATH=") + path)); - connect(process, &QProcess::readyRead, this, &NetMon::readFromProcess); - process->start(QStringLiteral("smbstatus")); - if (!process->waitForFinished()) { - version->setText(i18n("Error run smbstatus: %1", process->errorString())); - } else { - if (rownumber==0) // empty result - version->setText(i18n("Error: Unable to open configuration file \"smb.conf\"")); - else { - // ok -> count the number of locked files for each pid - for (int i = 0; i < list->topLevelItemCount(); ++i) - { - QTreeWidgetItem *row = list->topLevelItem(i); - // cerr<<"NetMon::update: this should be the pid: "<text(5)<text(5).toInt(); - row->setText(6,QStringLiteral("%1").arg((lo)[pid])); - } - } - } - - delete process; - process=nullptr; - - readingpart=nfs; - delete showmountProc; - showmountProc=new QProcess(); - connect(showmountProc, &QProcess::readyRead, this, &NetMon::readFromProcess); - showmountProc->setEnvironment(QStringList() << (QStringLiteral("PATH=") + path)); - //without this timer showmount hangs up to 5 minutes - //if the portmapper daemon isn't running - QTimer::singleShot(5000,this,&NetMon::killShowmount); - ////qDebug()<<"starting kill timer with 5 seconds"; - connect(showmountProc, static_cast(&QProcess::finished), this, &NetMon::killShowmount); - connect(showmountProc, &QProcess::errorOccurred, this, &NetMon::killShowmount); - showmountProc->start(QStringLiteral("showmount"), QStringList() << QStringLiteral("-a") << QStringLiteral("localhost")); - - version->adjustSize(); - list->show(); -} - -void NetMon::killShowmount() { - ////qDebug()<<"killShowmount()"; - showmountProc->deleteLater(); - showmountProc=nullptr; -} - diff --git a/Modules/samba/ksmbstatus.h b/Modules/samba/ksmbstatus.h deleted file mode 100644 index b18f6af..0000000 --- a/Modules/samba/ksmbstatus.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * ksmbstatus.h - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef ksmbstatus_h_included -#define ksmbstatus_h_included - -#include -#include -#include -#include - -#include - -#define SCREEN_XY_OFFSET 20 - -class NetMon : public QWidget { -Q_OBJECT -public: - explicit NetMon(QWidget *parent, KConfig * config=0); - void saveSettings() { - } - void loadSettings() { - } -private: - KConfig *configFile; - QProcess *showmountProc; - QTreeWidget *list; - QLabel *version; - QTimer *timer; - int rownumber; - enum {header, connexions, locked_files, finished, nfs} readingpart; - int lo[65536]; - int nrpid; - void processNFSLine(char *bufline, int linelen); - void processSambaLine(char *bufline, int linelen); - - QByteArray strShare, strUser, strGroup, strMachine, strSince, strPid; - int iUser, iGroup, iMachine, iPid; - -private Q_SLOTS: - void killShowmount(); - void update(); - void readFromProcess(); -}; - -#endif // main_included diff --git a/Modules/samba/main.cpp b/Modules/samba/main.cpp index 5451993..007b014 100644 --- a/Modules/samba/main.cpp +++ b/Modules/samba/main.cpp @@ -1,105 +1,82 @@ /* - * main.cpp for the samba kcontrol module - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ -#include - -#include -#include -#include +#include +#include #include -#include "kcmsambaimports.h" -#include "kcmsambalog.h" -#include "kcmsambastatistics.h" -#include "ksmbstatus.h" +#include #include +#include +#include +#include + +#include "ksambasharemodel.h" +#include "smbmountmodel.h" class SambaContainer : public KCModule { Q_OBJECT public: - SambaContainer(QWidget *parent=nullptr, const QVariantList &list = QVariantList()); - virtual ~SambaContainer(); - void load() override; - void save() override; + SambaContainer(QWidget *parent = nullptr, const QVariantList &list = QVariantList()); + ~SambaContainer() override = default; private: - KConfig config; - QTabWidget tabs; - NetMon status; - ImportsView imports; - LogView logView; - StatisticsView statisticsView; + QTableView *addTableView(const QString &localizedLabel, QAbstractListModel *model); }; K_PLUGIN_FACTORY(SambaFactory, registerPlugin(); ) -SambaContainer::SambaContainer(QWidget *parent, const QVariantList&) : - KCModule(parent), config(QStringLiteral("kcmsambarc")), tabs(this), status(&tabs, &config), imports(&tabs, &config), logView(&tabs, &config), statisticsView(&tabs, &config) { - QVBoxLayout *layout = new QVBoxLayout( this ); - layout->setContentsMargins(0, 0, 0, 0); - layout->setSpacing(0); - layout->addWidget(&tabs); - tabs.addTab(&status, i18n("&Exports")); - tabs.addTab(&imports, i18n("&Imports")); - tabs.addTab(&logView, i18n("&Log")); - tabs.addTab(&statisticsView, i18n("&Statistics")); - connect(&logView, &LogView::contentsChanged, &statisticsView, &StatisticsView::setListInfo); - setButtons(Help); - - setQuickHelp(i18n("

The Samba and NFS Status Monitor is a front end to the programs" - " smbstatus and showmount. Smbstatus reports on current" - " Samba connections, and is part of the suite of Samba tools, which" - " implements the SMB (Session Message Block) protocol, also called the" - " NetBIOS or LanManager protocol. This protocol can be used to provide" - " printer sharing or drive sharing services on a network including" - " machines running the various flavors of Microsoft Windows.

")); - - KAboutData *about = new KAboutData(i18n("kcmsamba"), - i18n("System Information Control Module"), - QString(), QString(), KAboutLicense::GPL, - i18n("(c) 2002 KDE Information Control Module Samba Team")); - about->addAuthor(i18n("Michael Glauche"), QString(), QStringLiteral("glauche@isa.rwth-aachen.de")); - about->addAuthor(i18n("Matthias Hoelzer"), QString(), QStringLiteral("hoelzer@kde.org")); +SambaContainer::SambaContainer(QWidget *parent, const QVariantList &) + : KCModule(parent) +{ + KAboutData *about = new KAboutData(i18n("kcmsamba"), + i18n("System Information Control Module"), + QString(), QString(), KAboutLicense::GPL, + i18n("(c) 2002 KDE Information Control Module Samba Team")); + about->addAuthor(i18n("Michael Glauche"), QString(), QStringLiteral("glauche@isa.rwth-aachen.de")); + about->addAuthor(i18n("Matthias Hoelzer"), QString(), QStringLiteral("hoelzer@kde.org")); about->addAuthor(i18n("David Faure"), QString(), QStringLiteral("faure@kde.org")); about->addAuthor(i18n("Harald Koschinski"), QString(), QStringLiteral("Harald.Koschinski@arcormail.de")); about->addAuthor(i18n("Wilco Greven"), QString(), QStringLiteral("greven@kde.org")); about->addAuthor(i18n("Alexander Neundorf"), QString(), QStringLiteral("neundorf@kde.org")); + about->addAuthor(i18n("Harald Sitter"), QString(), QStringLiteral("sitter@kde.org")); setAboutData(about); -} -SambaContainer::~SambaContainer() { - save(); -} + QVBoxLayout *layout = new QVBoxLayout(this); + Q_ASSERT(this->layout()); + setLayout(layout); + + addTableView(i18n("&Exports"), new KSambaShareModel(this)); -void SambaContainer::load() { - status.loadSettings(); - imports.loadSettings(); - logView.loadSettings(); - statisticsView.loadSettings(); + auto importsView = addTableView(i18n("&Imports"), new SmbMountModel(this)); + importsView->horizontalHeader()->setSectionResizeMode(static_cast(SmbMountModel::ColumnRole::Accessible), + QHeaderView::ResizeToContents); + + setButtons(Help); } -void SambaContainer::save() { - status.saveSettings(); - imports.saveSettings(); - logView.saveSettings(); - statisticsView.saveSettings(); - config.sync(); +QTableView *SambaContainer::addTableView(const QString &localizedLabel, QAbstractListModel *model) +{ + QString text = localizedLabel; + auto title = new KTitleWidget(this); + // hackily remove ampersand to not break i18n too much in 5.18 + // TODO: replace i18n'd string to one without quick access marker + title->setText(text.remove("&")); + title->setLevel(2); + layout()->addWidget(title); + + auto view = new QTableView(this); + layout()->addWidget(view); + view->setModel(model); + view->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + view->horizontalHeader()->reset(); + view->horizontalHeader()->setVisible(true); + view->verticalHeader()->setVisible(false); + + return view; } #include "main.moc" diff --git a/Modules/samba/smbmountmodel.cpp b/Modules/samba/smbmountmodel.cpp new file mode 100644 index 0000000..5e76a14 --- /dev/null +++ b/Modules/samba/smbmountmodel.cpp @@ -0,0 +1,147 @@ +/* + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ + +#include "smbmountmodel.h" + +#include +#include +#include +#include +#include +#include +#include + +SmbMountModel::SmbMountModel(QObject *parent) + : QAbstractListModel(parent) +{ + connect(Solid::DeviceNotifier::instance(), &Solid::DeviceNotifier::deviceAdded, + this, &SmbMountModel::addDevice); + connect(Solid::DeviceNotifier::instance(), &Solid::DeviceNotifier::deviceRemoved, + this, &SmbMountModel::removeDevice); + reloadData(); +} + +SmbMountModel::~SmbMountModel() = default; + +int SmbMountModel::rowCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + return m_devices.size(); +} + +int SmbMountModel::columnCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + return static_cast(ColumnRole::ColumnCount); +} + +QVariant SmbMountModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation != Qt::Horizontal || role != Qt::DisplayRole) { + return {}; // we only have column headers. + } + + Q_ASSERT(section (ColumnRole::ColumnCount)); + switch (static_cast(section)) { + case ColumnRole::Share: + return i18n("Resource"); // TODO: maybe reword for 5.19 + case ColumnRole::Path: + return i18n("Mounted Under"); // TODO: maybe reword for 5.19 + case ColumnRole::Accessible: + return i18nc("@title:column whether a samba share is accessible locally (i.e. mounted)", "Accessible"); + case ColumnRole::ColumnCount: + break; // noop + } + + return {}; +} + +QVariant SmbMountModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) { + return {}; + } + + Q_ASSERT(index.row() < m_devices.count()); + Q_ASSERT(index.column() (ColumnRole::ColumnCount)); + + if (role == Qt::DisplayRole) { + switch (static_cast(index.column())) { + case ColumnRole::Share: + return m_devices.at(index.row()).as()->url(); + case ColumnRole::Path: + return m_devices.at(index.row()).as()->filePath(); + case ColumnRole::Accessible: + break; // Decoration only + case ColumnRole::ColumnCount: + break; // noop + } + } + + if (role == Qt::DecorationRole) { + switch (static_cast(index.column())) { + case ColumnRole::Accessible: + // Using characters here since we use a QTableView and can't just + return m_devices.at(index.row()).as()->isAccessible() + ? QIcon::fromTheme("dialog-ok") + : QIcon::fromTheme("dialog-cancel"); + case ColumnRole::Share: + case ColumnRole::Path: + break; // Display only + case ColumnRole::ColumnCount: + break; // noop + } + } + + return {}; +} + +void SmbMountModel::addDevice(const QString &udi) +{ + auto it = deviceForUdi(udi); + if (it != m_devices.constEnd()) { + return; // already in the list + } + + beginInsertRows(QModelIndex(), m_devices.count(), m_devices.count()); + m_devices.append(Solid::Device(udi)); + endInsertRows(); +} + +void SmbMountModel::removeDevice(const QString &udi) +{ + auto it = deviceForUdi(udi); + if (it == m_devices.constEnd()) { + return; // untracked udi + } + + const int index = static_cast(std::distance(m_devices.constBegin(), it)); + beginRemoveRows(QModelIndex(), index, index); + m_devices.removeAt(index); + endRemoveRows(); +} + +void SmbMountModel::reloadData() +{ + beginResetModel(); + m_devices.clear(); + const auto devices = Solid::Device::listFromType(Solid::DeviceInterface::NetworkShare); + for (auto it = devices.begin(); it != devices.end(); ++it) { + switch (it->as()->type()) { + case Solid::NetworkShare::Cifs: + m_devices.append(*it); + continue; + case Solid::NetworkShare::Nfs: + case Solid::NetworkShare::Unknown: + continue; + } + } + endResetModel(); +} + +bool SmbMountModel::hasChildren(const QModelIndex &parent) const +{ + return !parent.isValid() ? false : (rowCount(parent) > 0); +} diff --git a/Modules/samba/smbmountmodel.h b/Modules/samba/smbmountmodel.h new file mode 100644 index 0000000..28618d5 --- /dev/null +++ b/Modules/samba/smbmountmodel.h @@ -0,0 +1,54 @@ +/* + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ + +#ifndef SMBMOUNTMODEL_H +#define SMBMOUNTMODEL_H + +#include +#include +#include + +/** + * Model of cifs mount entires. Implementing properties + * as columns rather than roles. + */ +class SmbMountModel : public QAbstractListModel +{ + Q_OBJECT +public: + enum class ColumnRole { + Share, + Path, + Accessible, + ColumnCount, // End marker + }; + + explicit SmbMountModel(QObject *parent = nullptr); + ~SmbMountModel() override; + + int rowCount(const QModelIndex &parent) const override; + int columnCount(const QModelIndex &parent) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + QVariant data(const QModelIndex &index, int role) const override; + bool hasChildren(const QModelIndex &parent) const override; + +private slots: + void addDevice(const QString &udi); + void removeDevice(const QString &udi); + void reloadData(); + +private: + inline QList::const_iterator deviceForUdi(const QString &udi) const + { + return std::find_if(m_devices.constBegin(), m_devices.constEnd(), + [&udi](const Solid::Device &device) { + return device.udi() == udi; + }); + } + + QList m_devices; +}; + +#endif // SMBMOUNTMODEL_H