diff options
Diffstat (limited to 'snap/local/print-inkscape-version.cpp')
-rw-r--r-- | snap/local/print-inkscape-version.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/snap/local/print-inkscape-version.cpp b/snap/local/print-inkscape-version.cpp new file mode 100644 index 0000000..210f806 --- /dev/null +++ b/snap/local/print-inkscape-version.cpp @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// Use the Inkscape compiled version identifier and print it out with +// the Snap restrictions on versions. Only a few characters are allowed +// and a limit of 32 characters total. + +#include "inkscape-version.h" + +#include <iostream> +#include <cctype> + +int main (int argc, char ** argv) { + std::string outstr; + + for (const auto& c : std::string{Inkscape::version_string}) { + if (outstr.length() == 32) { + break; + } + + if (std::isalpha(c) || std::isdigit(c)) { + outstr.append(1, c); + continue; + } + + if (c == '(' || c == ')' || c == ',') { + continue; + } + + if (c == '.' || c == '-') { + outstr.append(1, c); + continue; + } + + outstr.append(1, '-'); + } + + while (outstr.length() > 0 && !std::isalpha(outstr.back()) && !std::isdigit(outstr.back())) { + outstr.pop_back(); + } + + std::cout << outstr << std::endl; + + return 0; +} |