mcinglis / libstr

Functions for working with null-terminated arrays of `char`s.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Libstr provides functions for working with null-terminated arrays of chars.

Releases

I'll tag the releases according to semantic versioning. All the macros preceded by // @public are considered public: they'll only change between major versions. The other macros could change any time. Non-preprocessor identifiers defined in header files are always considered public. New identifiers prefixed with str_ or strm_ (any case) will not warrant a major version bump.

Every version tag will be signed with my GPG key (fingerprint: 0xD020F814).

Dependencies

Package.json specifies the dependencies of Libstr: where to get them, and what version to use. I've developed a tool called Puck that will parse such a Package.json, download the specified repositories, check out the specified version, and, if the dependency has its own Package.json, repeat that process for its dependencies. With puck on your PATH, in the directory of Libstr:

$ puck update
$ puck execute build
# Then you are able to:
$ make

There's nothing magic to what Puck does, so if you would prefer, you can set up the dependencies manually. You just need to have the dependencies in the deps directory within the Libstr directory, and have them built (if necessary) before building Libstr.

Collaboration

Libstr is available at Bitbucket and GitHub.

Questions, discussion, bug reports and feature requests are welcome at the GitHub issue tracker, or via emails.

To contribute changes, you're welcome to email me patches as per git format-patch, or to send me a pull request on any of the aforementioned sites. You're also welcome to just send me a link to your remote repository, and I'll merge stuff from that as I want to.

To accept notable contributions, I'll require you to assign your copyright to me. In your email/pull request and commit messages, please insert: "I hereby irrevocably transfer to Malcolm Inglis (http://minglis.id.au) all copyrights, title, and interest, throughout the world, in these contributions to Libstr". If you can, please sign the email or pull request, ensuring your GPG key is publicly available.

License

Copyright 2015 Malcolm Inglis http://minglis.id.au

Libstr is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Libstr 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with Libstr. If not, see https://gnu.org/licenses/.

Contact me for proprietary licensing options.

Why AGPL?

I believe that nonfree software is harmful, and I don't want to contribute to its development at all. I believe that a free society must necessarily operate on free software. I want to encourage the development of free software, and discourage the development of nonfree software.

The GPL was designed to ensure that the software stays free software; "to ensure that every user has freedom". The GPL's protections may have sufficed in 1990, but they don't in 2014. The GPL doesn't consider users of a web service to be users of the software implementing that server. Thankfully, the AGPL does.

The AGPL ensures that if Libstr is used to implement a web service, then the entire source code of that web service must be free software. This way, I'm not contributing to nonfree software, whether it's executed locally or provided over a network.

About

Functions for working with null-terminated arrays of `char`s.

License:GNU Affero General Public License v3.0


Languages

Language:C 94.5%Language:Makefile 5.5%