| @@ -46,6 +46,12 @@ While NSM can start and stop any program it only becomes convenient if clients s | |||
| implement support. This enables saving and hiding the GUI, amongst other features. | |||
| Documentation and tutorials for software-developers will be added at a later date. | |||
| ## Documentation and Manual | |||
| See the generated website installed in your systems SHARE dir or docs/out/index.html from this | |||
| repository. Alternatively you can read the online version on our github page. All are the same | |||
| files. We also provide a set of manpages for each executable (see below). | |||
| ## Fork and License | |||
| This is a fork of non-session-manager, by Jonathan Moore Liles <male@tuxfamily.net> http://non.tuxfamily.org/ | |||
| which was released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. | |||
| @@ -53,11 +59,20 @@ which was released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. | |||
| All files, except nsm.h kept in this fork were GPL "version 2 of the License, or (at your | |||
| option) any later version." | |||
| `nsm.h` is licensed under the ISCL. | |||
| `nsm.h` is licensed under the ISC License. | |||
| New-Session-Manager changed the license to GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007. | |||
| See file COPYING | |||
| Documentation in docs/ is licensed Creative Commons CC-By-Sa. | |||
| It consist of mostly generated files and snippet files which do not have a license header for | |||
| technical reasons. | |||
| All original documentation source files are CC-By-Sa Version v4.0 (see file docs/src/LICENSE), | |||
| the source file docs/src/api/index.adoc is a derived work from NON-Session-Managers API file which | |||
| is licensed CC-By-Sa v2.5. Therefore our derived API document is also CC-By-Sa v2.5 | |||
| (see files docs/src/api/readme.txt and docs/src/api/LICENSE) | |||
| ## Build | |||
| The build system is meson. | |||
| @@ -442,8 +442,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b | |||
| <div class="details"> | |||
| <span id="author" class="author">Jonathan Moore Liles</span><br> | |||
| <span id="email" class="email"><<a href="mailto:male@tuxfamily.org">male@tuxfamily.org</a>></span><br> | |||
| <span id="revnumber">version 1.2,</span> | |||
| <span id="revdate">2013-04-06</span> | |||
| <span id="revnumber">version 1.2</span> | |||
| </div> | |||
| <div id="toc" class="toc"> | |||
| <div id="toctitle">Table of Contents</div> | |||
| @@ -1453,7 +1452,7 @@ of which might respond to the message by updating their own tempo maps.</p> | |||
| <div id="footer"> | |||
| <div id="footer-text"> | |||
| Version 1.2<br> | |||
| Last updated 2020-07-06 22:15:39 +0200 | |||
| Last updated 2020-07-07 02:52:30 +0200 | |||
| </div> | |||
| </div> | |||
| </body> | |||
| @@ -556,7 +556,7 @@ Documentation and tutorials for software-developers will be added at a later dat | |||
| <div id="footer"> | |||
| <div id="footer-text"> | |||
| Version 1.4<br> | |||
| Last updated 2020-07-06 22:15:39 +0200 | |||
| Last updated 2020-07-07 02:52:30 +0200 | |||
| </div> | |||
| </div> | |||
| </body> | |||
| @@ -0,0 +1,430 @@ | |||
| from: https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt | |||
| Attribution-ShareAlike 4.0 International | |||
| ======================================================================= | |||
| Creative Commons Corporation ("Creative Commons") is not a law firm and | |||
| does not provide legal services or legal advice. Distribution of | |||
| Creative Commons public licenses does not create a lawyer-client or | |||
| other relationship. Creative Commons makes its licenses and related | |||
| information available on an "as-is" basis. Creative Commons gives no | |||
| warranties regarding its licenses, any material licensed under their | |||
| terms and conditions, or any related information. Creative Commons | |||
| disclaims all liability for damages resulting from their use to the | |||
| fullest extent possible. | |||
| Using Creative Commons Public Licenses | |||
| Creative Commons public licenses provide a standard set of terms and | |||
| conditions that creators and other rights holders may use to share | |||
| original works of authorship and other material subject to copyright | |||
| and certain other rights specified in the public license below. The | |||
| following considerations are for informational purposes only, are not | |||
| exhaustive, and do not form part of our licenses. | |||
| Considerations for licensors: Our public licenses are | |||
| intended for use by those authorized to give the public | |||
| permission to use material in ways otherwise restricted by | |||
| copyright and certain other rights. Our licenses are | |||
| irrevocable. Licensors should read and understand the terms | |||
| and conditions of the license they choose before applying it. | |||
| Licensors should also secure all rights necessary before | |||
| applying our licenses so that the public can reuse the | |||
| material as expected. Licensors should clearly mark any | |||
| material not subject to the license. This includes other CC- | |||
| licensed material, or material used under an exception or | |||
| limitation to copyright. More considerations for licensors: | |||
| wiki.creativecommons.org/Considerations_for_licensors | |||
| Considerations for the public: By using one of our public | |||
| licenses, a licensor grants the public permission to use the | |||
| licensed material under specified terms and conditions. If | |||
| the licensor's permission is not necessary for any reason--for | |||
| example, because of any applicable exception or limitation to | |||
| copyright--then that use is not regulated by the license. Our | |||
| licenses grant only permissions under copyright and certain | |||
| other rights that a licensor has authority to grant. Use of | |||
| the licensed material may still be restricted for other | |||
| reasons, including because others have copyright or other | |||
| rights in the material. A licensor may make special requests, | |||
| such as asking that all changes be marked or described. | |||
| Although not required by our licenses, you are encouraged to | |||
| respect those requests where reasonable. More considerations | |||
| for the public: | |||
| wiki.creativecommons.org/Considerations_for_licensees | |||
| ======================================================================= | |||
| Creative Commons Attribution-ShareAlike 4.0 International Public | |||
| License | |||
| By exercising the Licensed Rights (defined below), You accept and agree | |||
| to be bound by the terms and conditions of this Creative Commons | |||
| Attribution-ShareAlike 4.0 International Public License ("Public | |||
| License"). To the extent this Public License may be interpreted as a | |||
| contract, You are granted the Licensed Rights in consideration of Your | |||
| acceptance of these terms and conditions, and the Licensor grants You | |||
| such rights in consideration of benefits the Licensor receives from | |||
| making the Licensed Material available under these terms and | |||
| conditions. | |||
| Section 1 -- Definitions. | |||
| a. Adapted Material means material subject to Copyright and Similar | |||
| Rights that is derived from or based upon the Licensed Material | |||
| and in which the Licensed Material is translated, altered, | |||
| arranged, transformed, or otherwise modified in a manner requiring | |||
| permission under the Copyright and Similar Rights held by the | |||
| Licensor. For purposes of this Public License, where the Licensed | |||
| Material is a musical work, performance, or sound recording, | |||
| Adapted Material is always produced where the Licensed Material is | |||
| synched in timed relation with a moving image. | |||
| b. Adapter's License means the license You apply to Your Copyright | |||
| and Similar Rights in Your contributions to Adapted Material in | |||
| accordance with the terms and conditions of this Public License. | |||
| c. BY-SA Compatible License means a license listed at | |||
| creativecommons.org/compatiblelicenses, approved by Creative | |||
| Commons as essentially the equivalent of this Public License. | |||
| d. Copyright and Similar Rights means copyright and/or similar rights | |||
| closely related to copyright including, without limitation, | |||
| performance, broadcast, sound recording, and Sui Generis Database | |||
| Rights, without regard to how the rights are labeled or | |||
| categorized. For purposes of this Public License, the rights | |||
| specified in Section 2(b)(1)-(2) are not Copyright and Similar | |||
| Rights. | |||
| e. Effective Technological Measures means those measures that, in the | |||
| absence of proper authority, may not be circumvented under laws | |||
| fulfilling obligations under Article 11 of the WIPO Copyright | |||
| Treaty adopted on December 20, 1996, and/or similar international | |||
| agreements. | |||
| f. Exceptions and Limitations means fair use, fair dealing, and/or | |||
| any other exception or limitation to Copyright and Similar Rights | |||
| that applies to Your use of the Licensed Material. | |||
| g. License Elements means the license attributes listed in the name | |||
| of a Creative Commons Public License. The License Elements of this | |||
| Public License are Attribution and ShareAlike. | |||
| h. Licensed Material means the artistic or literary work, database, | |||
| or other material to which the Licensor applied this Public | |||
| License. | |||
| i. Licensed Rights means the rights granted to You subject to the | |||
| terms and conditions of this Public License, which are limited to | |||
| all Copyright and Similar Rights that apply to Your use of the | |||
| Licensed Material and that the Licensor has authority to license. | |||
| j. Licensor means the individual(s) or entity(ies) granting rights | |||
| under this Public License. | |||
| k. Share means to provide material to the public by any means or | |||
| process that requires permission under the Licensed Rights, such | |||
| as reproduction, public display, public performance, distribution, | |||
| dissemination, communication, or importation, and to make material | |||
| available to the public including in ways that members of the | |||
| public may access the material from a place and at a time | |||
| individually chosen by them. | |||
| l. Sui Generis Database Rights means rights other than copyright | |||
| resulting from Directive 96/9/EC of the European Parliament and of | |||
| the Council of 11 March 1996 on the legal protection of databases, | |||
| as amended and/or succeeded, as well as other essentially | |||
| equivalent rights anywhere in the world. | |||
| m. You means the individual or entity exercising the Licensed Rights | |||
| under this Public License. Your has a corresponding meaning. | |||
| Section 2 -- Scope. | |||
| a. License grant. | |||
| 1. Subject to the terms and conditions of this Public License, | |||
| the Licensor hereby grants You a worldwide, royalty-free, | |||
| non-sublicensable, non-exclusive, irrevocable license to | |||
| exercise the Licensed Rights in the Licensed Material to: | |||
| a. reproduce and Share the Licensed Material, in whole or | |||
| in part; and | |||
| b. produce, reproduce, and Share Adapted Material. | |||
| 2. Exceptions and Limitations. For the avoidance of doubt, where | |||
| Exceptions and Limitations apply to Your use, this Public | |||
| License does not apply, and You do not need to comply with | |||
| its terms and conditions. | |||
| 3. Term. The term of this Public License is specified in Section | |||
| 6(a). | |||
| 4. Media and formats; technical modifications allowed. The | |||
| Licensor authorizes You to exercise the Licensed Rights in | |||
| all media and formats whether now known or hereafter created, | |||
| and to make technical modifications necessary to do so. The | |||
| Licensor waives and/or agrees not to assert any right or | |||
| authority to forbid You from making technical modifications | |||
| necessary to exercise the Licensed Rights, including | |||
| technical modifications necessary to circumvent Effective | |||
| Technological Measures. For purposes of this Public License, | |||
| simply making modifications authorized by this Section 2(a) | |||
| (4) never produces Adapted Material. | |||
| 5. Downstream recipients. | |||
| a. Offer from the Licensor -- Licensed Material. Every | |||
| recipient of the Licensed Material automatically | |||
| receives an offer from the Licensor to exercise the | |||
| Licensed Rights under the terms and conditions of this | |||
| Public License. | |||
| b. Additional offer from the Licensor -- Adapted Material. | |||
| Every recipient of Adapted Material from You | |||
| automatically receives an offer from the Licensor to | |||
| exercise the Licensed Rights in the Adapted Material | |||
| under the conditions of the Adapter's License You apply. | |||
| c. No downstream restrictions. You may not offer or impose | |||
| any additional or different terms or conditions on, or | |||
| apply any Effective Technological Measures to, the | |||
| Licensed Material if doing so restricts exercise of the | |||
| Licensed Rights by any recipient of the Licensed | |||
| Material. | |||
| 6. No endorsement. Nothing in this Public License constitutes or | |||
| may be construed as permission to assert or imply that You | |||
| are, or that Your use of the Licensed Material is, connected | |||
| with, or sponsored, endorsed, or granted official status by, | |||
| the Licensor or others designated to receive attribution as | |||
| provided in Section 3(a)(1)(A)(i). | |||
| b. Other rights. | |||
| 1. Moral rights, such as the right of integrity, are not | |||
| licensed under this Public License, nor are publicity, | |||
| privacy, and/or other similar personality rights; however, to | |||
| the extent possible, the Licensor waives and/or agrees not to | |||
| assert any such rights held by the Licensor to the limited | |||
| extent necessary to allow You to exercise the Licensed | |||
| Rights, but not otherwise. | |||
| 2. Patent and trademark rights are not licensed under this | |||
| Public License. | |||
| 3. To the extent possible, the Licensor waives any right to | |||
| collect royalties from You for the exercise of the Licensed | |||
| Rights, whether directly or through a collecting society | |||
| under any voluntary or waivable statutory or compulsory | |||
| licensing scheme. In all other cases the Licensor expressly | |||
| reserves any right to collect such royalties. | |||
| Section 3 -- License Conditions. | |||
| Your exercise of the Licensed Rights is expressly made subject to the | |||
| following conditions. | |||
| a. Attribution. | |||
| 1. If You Share the Licensed Material (including in modified | |||
| form), You must: | |||
| a. retain the following if it is supplied by the Licensor | |||
| with the Licensed Material: | |||
| i. identification of the creator(s) of the Licensed | |||
| Material and any others designated to receive | |||
| attribution, in any reasonable manner requested by | |||
| the Licensor (including by pseudonym if | |||
| designated); | |||
| ii. a copyright notice; | |||
| iii. a notice that refers to this Public License; | |||
| iv. a notice that refers to the disclaimer of | |||
| warranties; | |||
| v. a URI or hyperlink to the Licensed Material to the | |||
| extent reasonably practicable; | |||
| b. indicate if You modified the Licensed Material and | |||
| retain an indication of any previous modifications; and | |||
| c. indicate the Licensed Material is licensed under this | |||
| Public License, and include the text of, or the URI or | |||
| hyperlink to, this Public License. | |||
| 2. You may satisfy the conditions in Section 3(a)(1) in any | |||
| reasonable manner based on the medium, means, and context in | |||
| which You Share the Licensed Material. For example, it may be | |||
| reasonable to satisfy the conditions by providing a URI or | |||
| hyperlink to a resource that includes the required | |||
| information. | |||
| 3. If requested by the Licensor, You must remove any of the | |||
| information required by Section 3(a)(1)(A) to the extent | |||
| reasonably practicable. | |||
| b. ShareAlike. | |||
| In addition to the conditions in Section 3(a), if You Share | |||
| Adapted Material You produce, the following conditions also apply. | |||
| 1. The Adapter's License You apply must be a Creative Commons | |||
| license with the same License Elements, this version or | |||
| later, or a BY-SA Compatible License. | |||
| 2. You must include the text of, or the URI or hyperlink to, the | |||
| Adapter's License You apply. You may satisfy this condition | |||
| in any reasonable manner based on the medium, means, and | |||
| context in which You Share Adapted Material. | |||
| 3. You may not offer or impose any additional or different terms | |||
| or conditions on, or apply any Effective Technological | |||
| Measures to, Adapted Material that restrict exercise of the | |||
| rights granted under the Adapter's License You apply. | |||
| Section 4 -- Sui Generis Database Rights. | |||
| Where the Licensed Rights include Sui Generis Database Rights that | |||
| apply to Your use of the Licensed Material: | |||
| a. for the avoidance of doubt, Section 2(a)(1) grants You the right | |||
| to extract, reuse, reproduce, and Share all or a substantial | |||
| portion of the contents of the database; | |||
| b. if You include all or a substantial portion of the database | |||
| contents in a database in which You have Sui Generis Database | |||
| Rights, then the database in which You have Sui Generis Database | |||
| Rights (but not its individual contents) is Adapted Material, | |||
| including for purposes of Section 3(b); and | |||
| c. You must comply with the conditions in Section 3(a) if You Share | |||
| all or a substantial portion of the contents of the database. | |||
| For the avoidance of doubt, this Section 4 supplements and does not | |||
| replace Your obligations under this Public License where the Licensed | |||
| Rights include other Copyright and Similar Rights. | |||
| Section 5 -- Disclaimer of Warranties and Limitation of Liability. | |||
| a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE | |||
| EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS | |||
| AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF | |||
| ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, | |||
| IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, | |||
| WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR | |||
| PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, | |||
| ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT | |||
| KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT | |||
| ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. | |||
| b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE | |||
| TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, | |||
| NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, | |||
| INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, | |||
| COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR | |||
| USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN | |||
| ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR | |||
| DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR | |||
| IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. | |||
| c. The disclaimer of warranties and limitation of liability provided | |||
| above shall be interpreted in a manner that, to the extent | |||
| possible, most closely approximates an absolute disclaimer and | |||
| waiver of all liability. | |||
| Section 6 -- Term and Termination. | |||
| a. This Public License applies for the term of the Copyright and | |||
| Similar Rights licensed here. However, if You fail to comply with | |||
| this Public License, then Your rights under this Public License | |||
| terminate automatically. | |||
| b. Where Your right to use the Licensed Material has terminated under | |||
| Section 6(a), it reinstates: | |||
| 1. automatically as of the date the violation is cured, provided | |||
| it is cured within 30 days of Your discovery of the | |||
| violation; or | |||
| 2. upon express reinstatement by the Licensor. | |||
| For the avoidance of doubt, this Section 6(b) does not affect any | |||
| right the Licensor may have to seek remedies for Your violations | |||
| of this Public License. | |||
| c. For the avoidance of doubt, the Licensor may also offer the | |||
| Licensed Material under separate terms or conditions or stop | |||
| distributing the Licensed Material at any time; however, doing so | |||
| will not terminate this Public License. | |||
| d. Sections 1, 5, 6, 7, and 8 survive termination of this Public | |||
| License. | |||
| Section 7 -- Other Terms and Conditions. | |||
| a. The Licensor shall not be bound by any additional or different | |||
| terms or conditions communicated by You unless expressly agreed. | |||
| b. Any arrangements, understandings, or agreements regarding the | |||
| Licensed Material not stated herein are separate from and | |||
| independent of the terms and conditions of this Public License. | |||
| Section 8 -- Interpretation. | |||
| a. For the avoidance of doubt, this Public License does not, and | |||
| shall not be interpreted to, reduce, limit, restrict, or impose | |||
| conditions on any use of the Licensed Material that could lawfully | |||
| be made without permission under this Public License. | |||
| b. To the extent possible, if any provision of this Public License is | |||
| deemed unenforceable, it shall be automatically reformed to the | |||
| minimum extent necessary to make it enforceable. If the provision | |||
| cannot be reformed, it shall be severed from this Public License | |||
| without affecting the enforceability of the remaining terms and | |||
| conditions. | |||
| c. No term or condition of this Public License will be waived and no | |||
| failure to comply consented to unless expressly agreed to by the | |||
| Licensor. | |||
| d. Nothing in this Public License constitutes or may be interpreted | |||
| as a limitation upon, or waiver of, any privileges and immunities | |||
| that apply to the Licensor or You, including from the legal | |||
| processes of any jurisdiction or authority. | |||
| ======================================================================= | |||
| Creative Commons is not a party to its public | |||
| licenses. Notwithstanding, Creative Commons may elect to apply one of | |||
| its public licenses to material it publishes and in those instances | |||
| will be considered the “Licensor.” The text of the Creative Commons | |||
| public licenses is dedicated to the public domain under the CC0 Public | |||
| Domain Dedication. Except for the limited purpose of indicating that | |||
| material is shared under a Creative Commons public license or as | |||
| otherwise permitted by the Creative Commons policies published at | |||
| creativecommons.org/policies, Creative Commons does not authorize the | |||
| use of the trademark "Creative Commons" or any other trademark or logo | |||
| of Creative Commons without its prior written consent including, | |||
| without limitation, in connection with any unauthorized modifications | |||
| to any of its public licenses or any other arrangements, | |||
| understandings, or agreements concerning use of licensed material. For | |||
| the avoidance of doubt, this paragraph does not form part of the | |||
| public licenses. | |||
| Creative Commons may be contacted at creativecommons.org. | |||
| @@ -1,6 +1,5 @@ | |||
| #!/bin/sh | |||
| #The documentation is built statically and does not belong to the normal build process. | |||
| #Updating is part of the development process, not compiling or packaging. | |||
| #Run this before a release, or any time you want to update the docs or the README. | |||
| @@ -8,10 +7,9 @@ | |||
| #This script takes common snippets of information and updates or generates source info files from | |||
| #them. | |||
| # parse src/nsmd.cpp for API version, insert into /docs/src/api/index.adoc | |||
| # parse /CHANGELOG first line for package version, insert into /meson.build and /docs/src/index.adoc | |||
| # parse src/nsmd.cpp for package version, insert into /meson.build and /docs/src/index.adoc | |||
| # generate /README.md (shares text with manual index) | |||
| # generate /docs/src/index.adoc (shares text with readme) | |||
| # generate manpages (need all kind of information) | |||
| # generate manpages | |||
| # convert all .adoc files to html in /docs/ (This enables github to directly present this dir as website) | |||
| # | |||
| #We do _not_ change the copyright date in files license-headers. | |||
| @@ -23,11 +21,14 @@ set -u #Trace unset variables as an error. | |||
| #Change pwd to root dir | |||
| parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) | |||
| cd "$parent_path"/../.. | |||
| [ -f "CHANGELOG" ] || exit 1 #assert correct dir | |||
| [ -f "CHANGELOG" ] || ( echo "not in the root dir"; exit 1 ) #assert correct dir | |||
| [ -f "build/nsmd" ] || ( echo "no build/ dir with binaries"; exit 1 ) #assert build was made, for manpages | |||
| #Gather data | |||
| ROOT=$(pwd) #save for later | |||
| VERSION=$(head -n 1 "CHANGELOG") | |||
| VERSION=$(grep "define VERSION_STRING" "src/nsmd.cpp" | cut -d ' ' -f 3) #Get version as "1.4" string | |||
| VERSION="${VERSION%\"}" #Remove " | |||
| VERSION="${VERSION#\"}" #Remove " | |||
| _MAJORAPI=$(grep "define NSM_API_VERSION_MAJOR" "src/nsmd.cpp" | cut -d ' ' -f 3) | |||
| _MINORAPI=$(grep "define NSM_API_VERSION_MINOR" "src/nsmd.cpp" | cut -d ' ' -f 3) | |||
| @@ -37,6 +38,7 @@ APIVERSION=$_MAJORAPI"."$_MINORAPI | |||
| echo "Root: $ROOT" | |||
| echo "Version: $VERSION" | |||
| echo "API Version: $APIVERSION" | |||
| echo "Please make sure that your meson build dir is up to date for manpage generation" | |||
| read -p "Is parsed data correct? Continue by writing files? [y|n] " -n 1 -r | |||
| if [[ ! $REPLY =~ ^[Yy]$ ]] | |||
| then | |||
| @@ -45,23 +47,42 @@ then | |||
| exit 1 | |||
| fi | |||
| echo | |||
| echo | |||
| #Package Version Number | |||
| echo "Update meson.build version number" | |||
| cd "$ROOT" | |||
| sed -i "/^version :.*/c\version : '$VERSION'," meson.build #Find the version line and replace with entire new line | |||
| echo "Update docs to programs version number" | |||
| cd "$ROOT/docs/src" | |||
| sed -i '/^\:revnumber.*/c\:revnumber: '$VERSION index.adoc #Find the revnumber line and replace with entire new line | |||
| #API Version Number | |||
| echo "Update API document to API version number" | |||
| cd "$ROOT/docs/src/api" | |||
| sed -i '/^\:revnumber.*/c\:revnumber: '$APIVERSION index.adoc #Find the revnumber line and replace with entire new line | |||
| #Generate README.md | |||
| echo "Generate README from snippets" | |||
| cd "$ROOT/docs/src" | |||
| cat "readme-00.md" "readme-01.md" "readme-02.md" > "$ROOT/README.md" | |||
| #Generate website and documentation with Asciidoctor | |||
| cd "$ROOT/docs" | |||
| echo "Generate website and documentation with Asciidoctor using README snippets" | |||
| echo " We generate directly into docs/ and not into e.g. docs/out because github can read docs/ directly." | |||
| cd "$ROOT/docs/" | |||
| mkdir -p "api" | |||
| asciidoctor src/index.adoc -o index.html | |||
| asciidoctor src/api/index.adoc -o api/index.html | |||
| echo "Generate all manpages" | |||
| cd "$ROOT/docs/src" #We tested earlier that a build-dir exists | |||
| help2man ../../build/nsmd --version-string="nsmd Version $VERSION" --no-info --include manpage-common.h2m > nsmd.1 | |||
| help2man ../../build/nsm-legacy-gui --version-string="nsm-legacy-gui Version $VERSION" --no-info --include manpage-common.h2m > nsm-legacy-gui.1 | |||
| help2man ../../build/nsm-proxy --version-string="nsm-proxy Version $VERSION" --no-info --include manpage-common.h2m > nsm-proxy.1 | |||
| help2man ../../build/nsm-proxy-gui --version-string="nsm-proxy-gui Version $VERSION" --no-info --include manpage-common.h2m > nsm-proxy-gui.1 | |||
| help2man ../../build/jackpatch --version-string="jackpatch Version $VERSION" --no-info --include manpage-common.h2m > jackpatch.1 | |||
| echo | |||
| echo "Finished. You need to commit your changes to git manually" | |||
| @@ -0,0 +1,30 @@ | |||
| .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
| .TH JACKPATCH "1" "July 2020" "jackpatch Version 1.4" "User Commands" | |||
| .SH NAME | |||
| jackpatch \- manual page for jackpatch Version 1.4 | |||
| .SH DESCRIPTION | |||
| jackpatch \- Remember the JACK Audio Connection Kit Graph in NSM | |||
| .PP | |||
| It is a module for the 'New Session Manager' and only communicates | |||
| over OSC in an NSM\-Session and has no standalone functionality. | |||
| .SS "Usage:" | |||
| .IP | |||
| jackpatch \fB\-\-help\fR | |||
| .SH OPTIONS | |||
| .TP | |||
| \fB\-\-help\fR | |||
| Show this screen | |||
| .SH "REPORTING BUGS" | |||
| https://github.com/linuxaudio/new-session-manager/issues | |||
| .SH COPYRIGHT | |||
| up to 2020: | |||
| Jonathan Moore Liles https://non.tuxfamily.org/ | |||
| from 2020: | |||
| https://github.com/linuxaudio/new-session-manager | |||
| .SH "SEE ALSO" | |||
| The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
| For example: | |||
| xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
| The documentation can also be found online https://github.com/linuxaudio/new-session-manager | |||
| @@ -0,0 +1,24 @@ | |||
| [name] | |||
| jackpatch - JACK Audio Connection Kit environment saver for the "New Session Manager" | |||
| [usage] | |||
| jackapatch is a module for "New Session Manager". | |||
| It only communicates over OSC in an NSM-Session and has no standalone functionality. | |||
| [Reporting bugs] | |||
| https://github.com/linuxaudio/new-session-manager/issues | |||
| [copyright] | |||
| up to 2020: | |||
| Jonathan Moore Liles https://non.tuxfamily.org/ | |||
| from 2020: | |||
| https://github.com/linuxaudio/new-session-manager | |||
| [see also] | |||
| The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
| For example: | |||
| xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
| The documentation can also be found online https://github.com/linuxaudio/new-session-manager | |||
| @@ -0,0 +1,17 @@ | |||
| [Reporting bugs] | |||
| https://github.com/linuxaudio/new-session-manager/issues | |||
| [copyright] | |||
| up to 2020: | |||
| Jonathan Moore Liles https://non.tuxfamily.org/ | |||
| from 2020: | |||
| https://github.com/linuxaudio/new-session-manager | |||
| [see also] | |||
| The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
| For example: | |||
| xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
| The documentation can also be found online https://github.com/linuxaudio/new-session-manager | |||
| @@ -0,0 +1,36 @@ | |||
| .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
| .TH NSM-LEGACY-GUI "1" "July 2020" "nsm-legacy-gui Version 1.4" "User Commands" | |||
| .SH NAME | |||
| nsm-legacy-gui \- manual page for nsm-legacy-gui Version 1.4 | |||
| .SH DESCRIPTION | |||
| legacy\-gui \- FLTK GUI for the 'New Session Manager' | |||
| .SS "Usage:" | |||
| .IP | |||
| legacy\-gui | |||
| legacy\-gui \fB\-\-help\fR | |||
| .SH OPTIONS | |||
| .TP | |||
| \fB\-\-help\fR | |||
| Show this screen | |||
| .TP | |||
| \fB\-\-nsm\-url\fR url | |||
| Connect to a running nsmd [Example: osc.udp://mycomputer.localdomain:38356/]. | |||
| .TP | |||
| \fB\-\-\fR | |||
| Everything after \fB\-\-\fR will be given to nsmd as server options. See nsmd \fB\-\-help\fR . | |||
| .PP | |||
| For backwards compatibility this executable also exist as symlink 'non\-session_manager | |||
| .SH "REPORTING BUGS" | |||
| https://github.com/linuxaudio/new-session-manager/issues | |||
| .SH COPYRIGHT | |||
| up to 2020: | |||
| Jonathan Moore Liles https://non.tuxfamily.org/ | |||
| from 2020: | |||
| https://github.com/linuxaudio/new-session-manager | |||
| .SH "SEE ALSO" | |||
| The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
| For example: | |||
| xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
| The documentation can also be found online https://github.com/linuxaudio/new-session-manager | |||
| @@ -0,0 +1,34 @@ | |||
| .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
| .TH NSM-PROXY-GUI "1" "July 2020" "nsm-proxy-gui Version 1.4" "User Commands" | |||
| .SH NAME | |||
| nsm-proxy-gui \- manual page for nsm-proxy-gui Version 1.4 | |||
| .SH DESCRIPTION | |||
| nsm\-proxy\-gui \- GUI for nsm\-proxy, a wrapper for executables without direct NSM\-Support. | |||
| .SS "Usage:" | |||
| .IP | |||
| nsm\-proxy\-gui \fB\-\-help\fR | |||
| nsm\-proxy\-gui \fB\-\-connect\-to\fR | |||
| .SH OPTIONS | |||
| .TP | |||
| \fB\-\-help\fR | |||
| Show this screen | |||
| .TP | |||
| \fB\-\-connect\-to\fR | |||
| Connect to running nsm\-proxy | |||
| .PP | |||
| nsmd\-proxy\-gui is usually not called by the user directly, | |||
| but autostarted when nsm\-proxy is added to a session (through a GUI). | |||
| .SH "REPORTING BUGS" | |||
| https://github.com/linuxaudio/new-session-manager/issues | |||
| .SH COPYRIGHT | |||
| up to 2020: | |||
| Jonathan Moore Liles https://non.tuxfamily.org/ | |||
| from 2020: | |||
| https://github.com/linuxaudio/new-session-manager | |||
| .SH "SEE ALSO" | |||
| The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
| For example: | |||
| xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
| The documentation can also be found online https://github.com/linuxaudio/new-session-manager | |||
| @@ -0,0 +1,30 @@ | |||
| .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
| .TH NSM-PROXY "1" "July 2020" "nsm-proxy Version 1.4" "User Commands" | |||
| .SH NAME | |||
| nsm-proxy \- manual page for nsm-proxy Version 1.4 | |||
| .SH DESCRIPTION | |||
| nsm\-proxy \- Wrapper for executables without direct NSM\-Support. | |||
| .PP | |||
| It is a module for the 'New Session Manager' and only communicates | |||
| over OSC in an NSM\-Session and has no standalone functionality. | |||
| .SS "Usage:" | |||
| .IP | |||
| nsm\-proxy \fB\-\-help\fR | |||
| .SH OPTIONS | |||
| .TP | |||
| \fB\-\-help\fR | |||
| Show this screen | |||
| .SH "REPORTING BUGS" | |||
| https://github.com/linuxaudio/new-session-manager/issues | |||
| .SH COPYRIGHT | |||
| up to 2020: | |||
| Jonathan Moore Liles https://non.tuxfamily.org/ | |||
| from 2020: | |||
| https://github.com/linuxaudio/new-session-manager | |||
| .SH "SEE ALSO" | |||
| The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
| For example: | |||
| xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
| The documentation can also be found online https://github.com/linuxaudio/new-session-manager | |||
| @@ -0,0 +1,50 @@ | |||
| .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
| .TH NSMD "1" "July 2020" "nsmd Version 1.4" "User Commands" | |||
| .SH NAME | |||
| nsmd \- manual page for nsmd Version 1.4 | |||
| .SH DESCRIPTION | |||
| nsmd \- Daemon and server for the 'New Session Manager' | |||
| .SS "Usage:" | |||
| .IP | |||
| nsmd | |||
| nsmd \fB\-\-help\fR | |||
| nsmd \fB\-\-version\fR | |||
| .SH OPTIONS | |||
| .TP | |||
| \fB\-\-help\fR | |||
| Show this screen | |||
| .TP | |||
| \fB\-\-version\fR | |||
| Show version | |||
| .TP | |||
| \fB\-\-osc\-port\fR portnum | |||
| OSC port number [Default: provided by system]. | |||
| .TP | |||
| \fB\-\-session\-root\fR path | |||
| Base path for sessions [Default: \fI\,~/NSM\/\fP Sessions]. | |||
| .TP | |||
| \fB\-\-load\-session\fR name | |||
| Load existing session [Example: "My Song"]. | |||
| .TP | |||
| \fB\-\-gui\-url\fR url | |||
| Connect to running legacy\-gui [Example: osc.udp://mycomputer.localdomain:38356/]. | |||
| .TP | |||
| \fB\-\-detach\fR | |||
| Detach from console. | |||
| .PP | |||
| nsmd can be run headless with existing sessions. To create new ones it is recommended to use a GUI | |||
| such as nsm\-legacy\-gui (included) or Argodejo (separate package) | |||
| .SH "REPORTING BUGS" | |||
| https://github.com/linuxaudio/new-session-manager/issues | |||
| .SH COPYRIGHT | |||
| up to 2020: | |||
| Jonathan Moore Liles https://non.tuxfamily.org/ | |||
| from 2020: | |||
| https://github.com/linuxaudio/new-session-manager | |||
| .SH "SEE ALSO" | |||
| The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
| For example: | |||
| xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
| The documentation can also be found online https://github.com/linuxaudio/new-session-manager | |||
| @@ -1,4 +1,10 @@ | |||
| ## Documentation and Manual | |||
| See the generated website installed in your systems SHARE dir or docs/out/index.html from this | |||
| repository. Alternatively you can read the online version on our github page. All are the same | |||
| files. We also provide a set of manpages for each executable (see below). | |||
| ## Fork and License | |||
| This is a fork of non-session-manager, by Jonathan Moore Liles <male@tuxfamily.net> http://non.tuxfamily.org/ | |||
| which was released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. | |||
| @@ -6,11 +12,20 @@ which was released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. | |||
| All files, except nsm.h kept in this fork were GPL "version 2 of the License, or (at your | |||
| option) any later version." | |||
| `nsm.h` is licensed under the ISCL. | |||
| `nsm.h` is licensed under the ISC License. | |||
| New-Session-Manager changed the license to GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007. | |||
| See file COPYING | |||
| Documentation in docs/ is licensed Creative Commons CC-By-Sa. | |||
| It consist of mostly generated files and snippet files which do not have a license header for | |||
| technical reasons. | |||
| All original documentation source files are CC-By-Sa Version v4.0 (see file docs/src/LICENSE), | |||
| the source file docs/src/api/index.adoc is a derived work from NON-Session-Managers API file which | |||
| is licensed CC-By-Sa v2.5. Therefore our derived API document is also CC-By-Sa v2.5 | |||
| (see files docs/src/api/readme.txt and docs/src/api/LICENSE) | |||
| ## Build | |||
| The build system is meson. | |||
| @@ -1,7 +0,0 @@ | |||
| Hallo Welt | |||
| Lol Rolf | |||
| == Cool Cool | |||
| Cool | |||
| @@ -17,7 +17,16 @@ | |||
| # along with New-Session-Manager. If not, see <https://www.gnu.org/licenses/>. | |||
| ############################################################################## | |||
| project('new-session-manager', 'c', 'cpp', version : '1.4', license : 'GPLv3') | |||
| #Please keep the version number in a separate line so we can automatically update it. | |||
| #Also keep it at the beginning of the line and leave spaces around the colon. | |||
| #It's source is in src/nsmd.cpp #DEFINE VERSION_STRING | |||
| project( | |||
| 'new-session-manager', | |||
| 'c', 'cpp', | |||
| version : '1.4', | |||
| license : 'GPLv3', | |||
| ) | |||
| ############## | |||
| #Dependencies | |||
| @@ -96,6 +105,11 @@ if get_option('nsm-legacy-gui') | |||
| ) | |||
| install_data('src/org.linuxaudio.nsm-legacy-gui.desktop', install_dir : get_option('datadir') / 'applications') | |||
| install_data('docs/index.html', install_dir : get_option('datadir') / 'doc/new-session-manager') | |||
| install_data('docs/api/index.html', install_dir : get_option('datadir') / 'doc/new-session-manager/api') | |||
| install_data('CHANGELOG', install_dir : get_option('datadir') / 'doc/new-session-manager') | |||
| install_data('README.md', install_dir : get_option('datadir') / 'doc/new-session-manager') | |||
| install_man(['docs/src/nsmd.1', 'docs/src/nsm-proxy.1', 'docs/src/nsm-proxy-gui.1', 'docs/src/nsm-legacy-gui.1', 'docs/src/jackpatch.1', ]) | |||
| meson.add_install_script('sh', '-c', | |||
| 'ln -sf nsm-legacy-gui ${DESTDIR}@0@/@1@/non-session-manager'.format( | |||
| @@ -45,6 +45,7 @@ | |||
| #include <errno.h> | |||
| #include <stdlib.h> | |||
| #include <jack/jack.h> | |||
| #include <getopt.h> | |||
| #include <lo/lo.h> | |||
| @@ -756,7 +757,40 @@ port_registration_callback( jack_port_id_t id, int reg, void *arg ) | |||
| int | |||
| main ( int argc, char **argv ) | |||
| { | |||
| /* get_args( argc, argv ); */ | |||
| //Command line parameters | |||
| static struct option long_options[] = | |||
| { | |||
| { "help", no_argument, 0, 'h' }, | |||
| { 0, 0, 0, 0 } | |||
| }; | |||
| int option_index = 0; | |||
| int c = 0; | |||
| while ( ( c = getopt_long_only( argc, argv, "", long_options, &option_index ) ) != -1 ) | |||
| { | |||
| switch ( c ) | |||
| { | |||
| case 'h': | |||
| { | |||
| const char *usage = | |||
| "jackpatch - Remember the JACK Audio Connection Kit Graph in NSM\n\n" | |||
| "It is a module for the 'New Session Manager' and only communicates\n" | |||
| "over OSC in an NSM-Session and has no standalone functionality.\n" | |||
| "\n" | |||
| "Usage:\n" | |||
| " jackpatch --help\n" | |||
| "\n" | |||
| "Options:\n" | |||
| " --help Show this screen\n" | |||
| ""; | |||
| printf ( usage ); | |||
| exit(0); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| jack_status_t status; | |||
| @@ -1348,7 +1348,22 @@ main (int argc, char **argv ) | |||
| break; | |||
| } | |||
| case 'h': | |||
| printf( "Usage: %s [--nsm-url...] [-- server options ]\n\n", argv[0] ); | |||
| //Print usage message according to POSIX.1-2017 | |||
| const char *usage = | |||
| "legacy-gui - FLTK GUI for the 'New Session Manager'\n\n" | |||
| "Usage:\n" | |||
| " legacy-gui\n" | |||
| " legacy-gui --help\n" | |||
| "\n" | |||
| "Options:\n" | |||
| " --help Show this screen\n" | |||
| " --nsm-url url Connect to a running nsmd [Example: osc.udp://mycomputer.localdomain:38356/].\n" | |||
| " -- Everything after -- will be given to nsmd as server options. See nsmd --help .\n" | |||
| "\n" | |||
| "For backwards compatibility this executable also exist as symlink 'non-session_manager\n" | |||
| "\n" | |||
| ""; | |||
| printf ( usage ); | |||
| exit(0); | |||
| break; | |||
| } | |||
| @@ -35,6 +35,8 @@ | |||
| #include <stdio.h> | |||
| #include <stdlib.h> | |||
| #include <string.h> | |||
| #include <getopt.h> | |||
| lo_server losrv; | |||
| lo_address nsmp_addr; | |||
| @@ -171,9 +173,9 @@ void | |||
| handle_save_signal ( Fl_Widget *o, void *v ) | |||
| { | |||
| int sig = 0; | |||
| const char* picked = ui->save_signal_choice->mvalue()->label(); | |||
| if ( !strcmp( picked, "SIGUSR1" ) ) | |||
| sig = SIGUSR1; | |||
| else if ( !strcmp( picked, "SIGUSR2" ) ) | |||
| @@ -189,9 +191,9 @@ void | |||
| handle_stop_signal ( Fl_Widget *o, void *v ) | |||
| { | |||
| int sig = SIGTERM; | |||
| const char* picked = ui->stop_signal_choice->mvalue()->label(); | |||
| if ( !strcmp( picked, "SIGTERM" ) ) | |||
| sig = SIGTERM; | |||
| else if ( !strcmp( picked, "SIGINT" ) ) | |||
| @@ -250,28 +252,71 @@ check_error ( void *v ) | |||
| o->show(); | |||
| } | |||
| free(client_error); | |||
| client_error = NULL; | |||
| } | |||
| Fl::repeat_timeout( 0.5f, check_error, v ); | |||
| } | |||
| int | |||
| main ( int argc, char **argv ) | |||
| { | |||
| if ( argc != 3 ) | |||
| //Command line parameters | |||
| const char * gui_url = NULL; | |||
| static struct option long_options[] = | |||
| { | |||
| fprintf( stderr, "Usage: %s --connect-to url\n", argv[0] ); | |||
| return 1; | |||
| { "connect-to", required_argument, 0, 'u' }, | |||
| { "help", no_argument, 0, 'h' }, | |||
| { 0, 0, 0, 0 } | |||
| }; | |||
| int option_index = 0; | |||
| int c = 0; | |||
| while ( ( c = getopt_long_only( argc, argv, "", long_options, &option_index ) ) != -1 ) | |||
| { | |||
| switch ( c ) | |||
| { | |||
| case 'u': | |||
| { | |||
| gui_url = optarg; | |||
| break; | |||
| } | |||
| case 'h': | |||
| { | |||
| const char *usage = | |||
| "nsm-proxy-gui - GUI for nsm-proxy, a wrapper for executables without direct NSM-Support.\n\n" | |||
| "Usage:\n" | |||
| " nsm-proxy-gui --help\n" | |||
| " nsm-proxy-gui --connect-to\n" | |||
| "\n" | |||
| "Options:\n" | |||
| " --help Show this screen\n" | |||
| " --connect-to Connect to running nsm-proxy\n" | |||
| "\n\n" | |||
| "nsmd-proxy-gui is usually not called by the user directly,\n" | |||
| "but autostarted when nsm-proxy is added to a session (through a GUI).\n" | |||
| ""; | |||
| printf ( usage ); | |||
| exit(0); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| if ( gui_url == NULL ) | |||
| exit(1); | |||
| init_osc( NULL ); | |||
| nsmp_addr = lo_address_new_from_url( argv[2] ); | |||
| nsmp_addr = lo_address_new_from_url( gui_url ); | |||
| printf( "Connecting to nsm-proxy at: %s\n", argv[2] ); | |||
| if ( ! nsmp_addr ) | |||
| exit(1); | |||
| printf( "Connecting to nsm-proxy at: %s\n", gui_url ); | |||
| ui = new NSM_Proxy_UI; | |||
| @@ -280,7 +325,7 @@ main ( int argc, char **argv ) | |||
| connect_ui(); | |||
| lo_send_from( nsmp_addr, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/update", "" ); | |||
| w->show(); | |||
| Fl::lock(); | |||
| @@ -40,6 +40,7 @@ | |||
| #include <sys/signalfd.h> | |||
| #include <sys/stat.h> | |||
| #include <sys/wait.h> | |||
| #include <getopt.h> | |||
| static lo_server losrv; | |||
| static lo_address nsm_addr; | |||
| @@ -149,7 +150,7 @@ public: | |||
| if ( ! (pid = fork()) ) | |||
| { | |||
| MESSAGE( "Launching %s\n", _executable ); | |||
| // char *args[] = { strdup( executable ), NULL }; | |||
| char *cmd; | |||
| @@ -160,13 +161,13 @@ public: | |||
| asprintf( &cmd, "exec %s >error.log 2>&1", _executable ); | |||
| char *args[] = { strdup("/bin/sh"), strdup( "-c" ), cmd, NULL }; | |||
| setenv( "NSM_CLIENT_ID", nsm_client_id, 1 ); | |||
| setenv( "NSM_SESSION_NAME", nsm_display_name, 1 ); | |||
| if ( _config_file ) | |||
| setenv( "CONFIG_FILE", _config_file, 1 ); | |||
| unsetenv( "NSM_URL" ); | |||
| if ( -1 == execvp( "/bin/sh", args ) ) | |||
| { | |||
| WARNING( "Error starting process: %s", strerror( errno ) ); | |||
| @@ -188,7 +189,7 @@ public: | |||
| { | |||
| _stop_signal = s; | |||
| } | |||
| void label ( const char *s ) | |||
| { | |||
| if ( _label ) | |||
| @@ -208,14 +209,14 @@ public: | |||
| bool dump ( const char *path ) | |||
| { | |||
| { | |||
| char *fname; | |||
| asprintf( &fname, "%s/%s", path, CONFIG_FILE_NAME ); | |||
| FILE *fp = fopen( fname, "w" ); | |||
| free( fname ); | |||
| if ( !fp ) | |||
| { | |||
| WARNING( "Error opening file for saving: %s", strerror( errno ) ); | |||
| @@ -234,7 +235,7 @@ public: | |||
| fprintf( fp, "save signal\n\t%i\n", _save_signal ); | |||
| fprintf( fp, "stop signal\n\t%i\n", _stop_signal ); | |||
| if ( _label && strlen(_label) ) | |||
| fprintf( fp, "label\n\t%s\n", _label ); | |||
| @@ -255,13 +256,13 @@ public: | |||
| char *name; | |||
| char *value; | |||
| MESSAGE( "Loading file config \"%s\"", path ); | |||
| MESSAGE( "Loading file config \"%s\"", path ); | |||
| while ( 2 == fscanf( fp, "%m[^\n]\n\t%m[^\n]\n", &name, &value ) ) | |||
| { | |||
| DMESSAGE( "%s=%s", name, value ); | |||
| if ( !strcmp( name, "executable" ) ) | |||
| _executable = value; | |||
| else if (!strcmp( name, "arguments" ) ) | |||
| @@ -383,10 +384,10 @@ osc_announce_reply ( const char *path, const char *types, lo_arg **argv, int arg | |||
| return -1; | |||
| printf( "Successfully registered. NSM says: %s", &argv[1]->s ); | |||
| nsm_is_active = 1; | |||
| nsm_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ) ); | |||
| return 0; | |||
| } | |||
| @@ -417,19 +418,19 @@ show_gui ( void ) | |||
| char executable[] = "nsm-proxy-gui"; | |||
| MESSAGE( "Launching %s\n", executable ); | |||
| char *url = lo_server_get_url( losrv ); | |||
| char *args[] = { executable, strdup( "--connect-to" ), url, NULL }; | |||
| if ( -1 == execvp( executable, args ) ) | |||
| { | |||
| WARNING( "Error starting process: %s", strerror( errno ) ); | |||
| exit(1); | |||
| } | |||
| } | |||
| gui_pid = pid; | |||
| lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_shown", "" ); | |||
| @@ -492,7 +493,7 @@ osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_mess | |||
| mkdir( new_path, 0777 ); | |||
| chdir( new_path ); | |||
| asprintf( &new_filename, "%s/%s", new_path, CONFIG_FILE_NAME ); | |||
| struct stat st; | |||
| @@ -517,7 +518,7 @@ osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_mess | |||
| if ( project_file ) | |||
| free( project_file ); | |||
| project_file = strdup( new_path ); | |||
| // new_filename; | |||
| @@ -546,7 +547,7 @@ int | |||
| osc_save_signal ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) | |||
| { | |||
| nsm_proxy->save_signal( argv[0]->i ); | |||
| return 0; | |||
| } | |||
| @@ -554,7 +555,7 @@ int | |||
| osc_stop_signal ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) | |||
| { | |||
| nsm_proxy->stop_signal( argv[0]->i ); | |||
| return 0; | |||
| } | |||
| @@ -567,7 +568,7 @@ osc_start ( const char *path, const char *types, lo_arg **argv, int argc, lo_mes | |||
| { | |||
| hide_gui(); | |||
| } | |||
| return 0; | |||
| } | |||
| @@ -575,7 +576,7 @@ int | |||
| osc_kill ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) | |||
| { | |||
| nsm_proxy->kill(); | |||
| return 0; | |||
| } | |||
| @@ -662,9 +663,9 @@ void handle_sigchld ( ) | |||
| int status; | |||
| pid_t pid = waitpid(-1, &status, WNOHANG); | |||
| if (pid <= 0) | |||
| if (pid <= 0) | |||
| break; | |||
| if ( pid == gui_pid ) | |||
| { | |||
| lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" ); | |||
| @@ -725,6 +726,40 @@ main ( int argc, char **argv ) | |||
| signal_fd = signalfd( -1, &mask, SFD_NONBLOCK ); | |||
| //Command line parameters | |||
| static struct option long_options[] = | |||
| { | |||
| { "help", no_argument, 0, 'h' }, | |||
| { 0, 0, 0, 0 } | |||
| }; | |||
| int option_index = 0; | |||
| int c = 0; | |||
| while ( ( c = getopt_long_only( argc, argv, "", long_options, &option_index ) ) != -1 ) | |||
| { | |||
| switch ( c ) | |||
| { | |||
| case 'h': | |||
| { | |||
| const char *usage = | |||
| "nsm-proxy - Wrapper for executables without direct NSM-Support.\n\n" | |||
| "It is a module for the 'New Session Manager' and only communicates\n" | |||
| "over OSC in an NSM-Session and has no standalone functionality.\n" | |||
| "\n" | |||
| "Usage:\n" | |||
| " nsm-proxy --help\n" | |||
| "\n" | |||
| "Options:\n" | |||
| " --help Show this screen\n" | |||
| ""; | |||
| printf ( usage ); | |||
| exit(0); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| nsm_proxy = new NSM_Proxy(); | |||
| init_osc( NULL ); | |||
| @@ -748,16 +783,16 @@ main ( int argc, char **argv ) | |||
| for ( ;; ) | |||
| { | |||
| ssize_t s = read(signal_fd, &fdsi, sizeof(struct signalfd_siginfo)); | |||
| if (s == sizeof(struct signalfd_siginfo)) | |||
| { | |||
| if (fdsi.ssi_signo == SIGCHLD) | |||
| handle_sigchld(); | |||
| } | |||
| lo_server_recv_noblock( losrv, 500 ); | |||
| if ( die_now ) | |||
| die(); | |||
| } | |||
| } | |||
| } | |||
| @@ -69,6 +69,7 @@ static char *session_root; | |||
| #define NSM_API_VERSION_MAJOR 1 | |||
| #define NSM_API_VERSION_MINOR 2 | |||
| #define VERSION_STRING "1.4" | |||
| #define ERR_OK 0 | |||
| #define ERR_GENERAL_ERROR -1 | |||
| @@ -2432,17 +2433,17 @@ int main(int argc, char *argv[]) | |||
| load_session = optarg; | |||
| break; | |||
| case 'v': | |||
| printf( "%s 1.4\n", argv[0] ); | |||
| printf( "%s " VERSION_STRING "\n", argv[0] ); | |||
| exit(0); | |||
| break; | |||
| case 'h': | |||
| //Print usage message according to POSIX.1-2017 | |||
| const char *usage = | |||
| "%s\n\n" | |||
| "nsmd - Daemon and server for the 'New Session Manager'\n\n" | |||
| "Usage:\n" | |||
| " %s\n" | |||
| " %s --help\n" | |||
| " %s --version\n" | |||
| " nsmd\n" | |||
| " nsmd --help\n" | |||
| " nsmd --version\n" | |||
| "\n" | |||
| "Options:\n" | |||
| " --help Show this screen\n" | |||
| @@ -2452,8 +2453,11 @@ int main(int argc, char *argv[]) | |||
| " --load-session name Load existing session [Example: \"My Song\"].\n" | |||
| " --gui-url url Connect to running legacy-gui [Example: osc.udp://mycomputer.localdomain:38356/].\n" | |||
| " --detach Detach from console.\n" | |||
| "\n\n" | |||
| "nsmd can be run headless with existing sessions. To create new ones it is recommended to use a GUI\n" | |||
| "such as nsm-legacy-gui (included) or Argodejo (separate package)\n" | |||
| ""; | |||
| printf ( usage, argv[0], argv[0], argv[0], argv[0] ); | |||
| printf ( usage ); | |||
| exit(0); | |||
| break; | |||
| } | |||