�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ� ���ͯj�ӣ��ƺ���ӣ� ? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!usr/share/doc/adobe-mappings-pdf/README.md000064400000003430152530114440014137 0ustar00# Mapping Resources for PDF These mapping resources are used to derive content from PDF (*Portable Document Format*) files that include CJK (Chinese, Japanese, and Korean) information. These mapping resources are in use by Adobe Reader, Adobe Acrobat (Pro and Standard), and Acrobat Distiller, which are now part of the Adobe Document Cloud family. These mapping resources are also useful for third-party PDF clients, thus the need for this open source project. ## Contents This project includes the following mapping resources for PDF, divided into two categories, ToUnicode and everything else: *pdf2unicode*: ToUnicode Mapping Resources (for Adobe-GB1, Adobe-CNS1, Adobe-Japan1, and Adobe-Korea1) *pdf2other*: All Other Mapping Resources The reason to separate the ToUnicode mapping resources from the other mapping resources is related to the static nature of the other mapping mapping resources. The ToUnicode mapping resources are subject to change when a new Supplement is defined, or when a new version of Unicode triggers additional mappings in CMap resources that in turn influence these mapping resources. ## Mapping Resources for PDF Versus CMap Resources Mapping resources for PDF should not be confused with CMap resources. While both types of resources share the same file structure and syntax, they have very different functions. CMap resources unidirectionally map character codes, such as Unicode, to CIDs (*Character IDs*). Mapping resources for PDF have a variety of functions, such as mapping CIDs to character codes, or mapping character codes to other character codes. ## Getting Involved Send suggestions for changes to the Mapping Resources for PDF project maintainer, [Dr. Ken Lunde](mailto:lunde@adobe.com?subject=[GitHub]%20Mapping%20Resources%20for%20PDF), for consideration. usr/share/doc/gnutls/README.md000064400000017010152530635650012030 0ustar00[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/330/badge)](https://bestpractices.coreinfrastructure.org/projects/330) |Branch|CI system|Status|Test suite coverage|Fuzzer coverage| |:----:|:-------:|-----:|:------:|:-------------:| |Master/3.6.x|Gitlab|[![build status](https://gitlab.com/gnutls/gnutls/badges/master/pipeline.svg)](https://gitlab.com/gnutls/gnutls/commits/master)|[![coverage report](https://gitlab.com/gnutls/gnutls/badges/master/coverage.svg)](https://gnutls.gitlab.io/coverage/master)|[![Fuzzer coverage report](https://gnutls.gitlab.io/coverage/master-fuzz/badge.svg)](https://gnutls.gitlab.io/coverage/master-fuzz)| |Master/3.6.x|Travis|[![build status](https://travis-ci.org/gnutls/gnutls.svg?branch=master)](https://travis-ci.org/gnutls/gnutls)|N/A|N/A| # GnuTLS -- Information for developers GnuTLS implements the TLS/SSL (Transport Layer Security aka Secure Sockets Layer) protocol. Additional information can be found at [www.gnutls.org](https://www.gnutls.org/). This file contains instructions for developers and advanced users that want to build from version controlled sources. See [INSTALL.md](INSTALL.md) for building released versions. We require several tools to check out and build the software, including: * [Make](https://www.gnu.org/software/make/) * [Automake](https://www.gnu.org/software/automake/) (use 1.11.3 or later) * [Autoconf](https://www.gnu.org/software/autoconf/) * [Autogen](https://www.gnu.org/software/autogen/) (use 5.16 or later) * [Libtool](https://www.gnu.org/software/libtool/) * [Gettext](https://www.gnu.org/software/gettext/) * [Texinfo](https://www.gnu.org/software/texinfo/) * [Tar](https://www.gnu.org/software/tar/) * [Gzip](https://www.gnu.org/software/gzip/) * [Texlive & epsf](https://www.tug.org/texlive/) (for PDF manual) * [GTK-DOC](https://www.gtk.org/gtk-doc/) (for API manual) * [Git](https://git-scm.com/) * [Perl](https://www.cpan.org/) * [Nettle](https://www.lysator.liu.se/~nisse/nettle/) * [Guile](https://www.gnu.org/software/guile/) * [p11-kit](https://p11-glue.github.io/p11-glue/p11-kit.html) * [gperf](https://www.gnu.org/software/gperf/) * [libtasn1](https://www.gnu.org/software/libtasn1/) (optional) * [Libidn2](https://www.gnu.org/software/libidn/#libidn2) (optional, for internationalization of DNS, IDNA 2008) * [Libunistring](https://www.gnu.org/software/libunistring/) (optional, for internationalization) * [AWK](https://www.gnu.org/software/awk/) (for make dist, pmccabe2html) * [bison](https://www.gnu.org/software/bison) (for datetime parser in certtool) * [libunbound](https://unbound.net/) (for DANE support) * [libabigail](https://pagure.io/libabigail/) (for abi comparison in make dist) * [tcsd](https://trousers.sourceforge.net/) (for TPM support; optional) * [swtpm](https://github.com/stefanberger/swtpm) (for TPM test; optional) * [ncat](https://nmap.org/download.html) (for TPM test; optional) * [tpm-tools](https://trousers.sourceforge.net/) (for TPM test; optional) * [expect](https://core.tcl.tk/expect/index) (for TPM test; optional) The required software is typically distributed with your operating system, and the instructions for installing them differ. Here are some hints: Debian/Ubuntu: ``` apt-get install -y dash git-core autoconf libtool gettext autopoint apt-get install -y automake autogen nettle-dev libp11-kit-dev libtspi-dev libunistring-dev apt-get install -y guile-2.2-dev libtasn1-6-dev libidn2-0-dev gawk gperf apt-get install -y libunbound-dev dns-root-data bison gtk-doc-tools apt-get install -y texinfo texlive texlive-generic-recommended texlive-extra-utils ``` __NOTE:__ Some software versions might not be available in older releases, e.g. `nettle-dev`. Available backport repos, APT-Pinning or source code compilating can be used to install these versions (and dependencies) from a newer release. Fedora/RHEL: ``` yum install -y dash git autoconf libtool gettext-devel automake autogen patch yum install -y nettle-devel p11-kit-devel autogen-libopts-devel libunistring-devel yum install -y trousers-devel guile22-devel libtasn1-devel libidn2-devel gawk gperf yum install -y libtasn1-tools unbound-devel bison gtk-doc texinfo texlive ``` Sometimes, you may need to install more recent versions of Automake, Nettle, P11-kit and Autogen, which you will need to build from sources. Dependencies that are used during make check or make dist are listed below. Moreover, for basic interoperability testing you may want to install openssl and mbedtls. * [Valgrind](https://valgrind.org/) (optional) * [Libasan](https://gcc.gnu.org//) (optional) * [datefudge](https://packages.debian.org/datefudge) (optional) * [nodejs](https://nodejs.org/) (needed for certain test cases) * [softhsm](https://www.opendnssec.org/softhsm/) (for testing smart card support) * [dieharder](https://www.phy.duke.edu/~rgb/General/dieharder.php) (for testing PRNG) * [lcov](https://linux-test-project.github.io/) (for code coverage) * [util-linux](https://github.com/karelzak/util-linux) or just [lscpu](https://github.com/NanXiao/lscpu) (for CPU feature detection) * [libev](hhttp://software.schmorp.de/pkg/libev.html) (for testing) Debian/Ubuntu: ``` apt-get install -y valgrind nodejs softhsm2 datefudge lcov libssl-dev libcmocka-dev expect libev-dev apt-get install -y dieharder openssl abigail-tools socat net-tools ppp lockfile-progs util-linux ``` __NOTE:__ `libubsan0` and `libasan1` are required on older versions of Ubuntu <= 16.04. This packages must be manually added on these versions: ``` apt-get install -y v libubsan0 libasan1 ``` Fedora/RHEL: ``` yum install -y valgrind libasan libasan-static libubsan nodejs softhsm datefudge lcov openssl-devel expect libev-devel yum install -y dieharder mbedtls-utils openssl libabigail libcmocka-devel socat lockfile-progs util-linux ``` To download the version controlled sources: ``` $ git clone https://gitlab.com/gnutls/gnutls.git $ cd gnutls ``` The next step is to bootstrap and ./configure: ``` $ ./bootstrap $ ./configure ``` When built this way, some developer defaults will be enabled. See cfg.mk for details. Then build the project normally, and run the test suite. ``` $ make $ make check ``` To test the code coverage of the test suite use the following: ``` $ ./configure --enable-code-coverage $ make && make check && make code-coverage-capture ``` Individual tests that may require additional hardware (e.g., smart cards) are: ``` $ sh tests/suite/testpkcs11 ``` # Building for windows It is recommended to cross compile using Fedora and the following dependencies: ``` yum install -y wine mingw32-nettle mingw32-libtasn1 mingw32-gcc ``` and build as: ``` mingw32-configure --enable-local-libopts --disable-non-suiteb-curves --disable-doc --without-p11-kit mingw32-make mingw32-make check ``` # Continuous Integration (CI) We utilize two continuous integration systems, the gitlab-ci and travis. Gitlab-CI is used to test most of the Linux systems (see .gitlab-ci.yml), and is split in two phases, build image creation and compilation/test. The build image creation is done at the gnutls/build-images subproject and uploads the image at the gitlab.com container registry. The compilation/test phase is on every commit to gnutls project. The Travis based CI, is used to test compilation on MacOSX based systems. # Contributing See [the contributing document](CONTRIBUTING.md). Happy hacking! ---------------------------------------------------------------------- Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. usr/share/doc/libX11-common/README.md000064400000002200152530722220013023 0ustar00libX11 - Core X11 protocol client library ----------------------------------------- Documentation for this library can be found in the included man pages, and in the Xlib spec from the specs subdirectory, also available at: https://www.x.org/releases/current/doc/libX11/libX11/libX11.html https://www.x.org/releases/current/doc/libX11/libX11/libX11.pdf and the O'Reilly Xlib books, which they have made freely available online, though only for older versions of X11: - X Series Volume 2: Xlib Reference Manual (1989, covers X11R3) https://www.archive.org/details/xlibretmanver1102nyemiss - X Series Volume 2: Xlib Reference Manual, 2nd Edition (1990, covers X11R4) https://www.archive.org/details/xlibrefmanv115ed02nyemiss All questions regarding this software should be directed at the Xorg mailing list: https://lists.x.org/mailman/listinfo/xorg The master development code repository can be found at: https://gitlab.freedesktop.org/xorg/lib/libX11 Please submit bug reports and requests to merge patches there. For patch submission instructions, see: https://www.x.org/wiki/Development/Documentation/SubmittingPatches usr/share/doc/libdnf/README.md000064400000010234152531415210011740 0ustar00libdnf ====== This library provides a high level package-manager. It's core library of [dnf](https://github.com/rpm-software-management/dnf), [PackageKit](https://github.com/hughsie/PackageKit) and [rpm-ostree](https://github.com/projectatomic/rpm-ostree). It's replacement for deprecated [hawkey library](https://github.com/rpm-software-management/hawkey) which it contains inside and uses [librepo](https://github.com/rpm-software-management/librepo) under the hood. :warning: :warning: :warning: **Note that libdnf is currently being reworked and is considered unstable. Once major users like PackageKit and DNF are fully ported, a new stable release will be considered.** :warning: :warning: :warning: License ---- LGPLv2+ Building for Fedora =================== To install build requirements, run following command: dnf install check-devel cmake cppunit-devel gcc gcc-c++ glib2-devel gpgme-devel gtk-doc json-c-devel libmodulemd-devel librepo-devel libsolv-devel libsolv-tools make python2-devel python3-devel python2-sphinx python3-sphinx python2-breathe python3-breathe rpm-devel sqlite-devel swig libsmartcols-devel From the checkout dir: mkdir build cd build/ cmake .. -DPYTHON_DESIRED=3 make Building the documentation, from the build/ directory:: make doc Building RPMs: tito build --rpm --test Tests ===== All unit tests should pass after the build finishes: cd build make test There are two parts of unit tests: unit tests in C and unit tests in Python. To run the C part of the tests manually, from hawkey checkout:: build/tests/test_main tests/repos/ To manually execute the Python tests, from libdnf git checkout directory:: PYTHONPATH=`readlink -f ./build/src/python/` python3 -m unittest discover -bt python/hawkey/tests/ -s python/hawkey/tests/tests/ The PYTHONPATH is unfortunately needed as the Python test suite needs to know where to import the built hawkey modules. Contribution ============ Here's the most direct way to get your work merged into the project. 1. Fork the project 1. Clone down your fork 1. Implement your feature or bug fix and commit changes 1. If the change fixes a bug at [Red Hat bugzilla](https://bugzilla.redhat.com/), or if it is important to the end user, add the following block to the commit message: = changelog = msg: message to be included in the changelog type: one of: bugfix/enhancement/security (this field is required when message is present) resolves: URLs to bugs or issues resolved by this commit (can be specified multiple times) related: URLs to any related bugs or issues (can be specified multiple times) * For example:: = changelog = msg: Do not close the database if it wasn't opened type: bugfix resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1761976 * For your convenience, you can also use git commit template by running the following command in the top-level directory of this project: git config commit.template ./.git-commit-template 1. In a separate commit, add your name and email under ``Libdnf CONTRIBUTORS`` section in the [authors file](https://github.com/rpm-software-management/libdnf/blob/dnf-4-master/README.md) as a reward for your generosity 1. Push the branch to your fork 1. Send a pull request for your branch Please do not create pull requests with translation (.po) file improvements. Fix the translation on `Fedora Weblate `_ instead. Documentation ============= See the [hawkey documentation page](http://hawkey.readthedocs.org). Information internal to the hawkey development is maintained on a [github wiki](https://github.com/rpm-software-management/dnf/wiki#wiki-Contact). Useful links ============ Bug database: * [libdnf github issues](https://github.com/rpm-software-management/libdnf/issues) * [bugzilla](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=POST&bug_status=MODIFIED&bug_status=ON_DEV&bug_status=ON_QA&bug_status=VERIFIED&bug_status=RELEASE_PENDING&bug_status=CLOSED&component=libdnf&list_id=8513553&product=Fedora&query_format=advanced) usr/share/doc/podman-plugins/README.md000064400000004703152531445600013451 0ustar00# dnsname plugin ## IMPORTANT As of 2023, this repository is no longer actively maintained. Our development efforts are happening in [netavark](https://github.com/containers/netavark/) and [aardvark-dns](https://github.com/containers/aardvark-dns/) that should provide a better alternative. ## Overview This plugin sets up the use of dnsmasq on a given CNI network so that Pods can resolve each other by name. When configured, the pod and its IP address are added to a network specific hosts file that dnsmasq reads in. Similarly, when a pod is removed from the network, it will remove the entry from the hosts file. Each CNI network will have its own dnsmasq instance. The *dnsname* plugin was specifically designed for the [Podman](https://github.com/containers/podman) container engine. Follow the [mini-tutorial](README_PODMAN.md) to use it with Podman. ## Usage The dnsname plugin can be enabled in the cni network configuration file. ``` { "cniVersion": "0.4.0", "name": "cni-bridge-network", "plugins": [ { "type": "bridge", "bridge": "cni0", ... } }, { "type": "dnsname", "domainName": "foobar.com", "capabilities": { "aliases": true } } ] } ``` ## DNSMasq configuration files The dnsmasq service and its configuration files are considered to be very fluid and are not meant to survive a system reboot. Therefore, files are stored in `/run/containers/cni/dnsname`, or under `$XDG_RUNTIME_DIR/containers/cni/dnsname` if `XDG_RUNTIME_DIR` is specified. The plugin knows to recreate the necessary files if it detects they are not present. ## DNSMasq default configuration Much like the implementation of DNSMasq for libvirt, this plugin will only set up dnsmasq to listen on the network interfaces associated with the CNI network. The DNSMasq services are not configured or managed by systemd but rather only by the plugin itself. ## Network aliases The dnsname plugin is capable of not only adding the container name for DNS resolution but also adding network aliases. These aliases are also added to the DNSMasq host file. ## Reporting issues If you are using dnsname code compiled directly from github, then reporting bugs and problem to the dnsname github issues tracker is appropriate. In the case that you are using code compiled and provided by a Linux distribution, you should file the problem with their appropriate bug tracker (bugzilla/trackpad). opt/cpanel/ea-wappspector/README.md000064400000013405152531766010013032 0ustar00# wappspector Command-line interface utility to analyze the file structure of a web hosting server and identify the frameworks and CMS used in the websites hosted on it. [![unit-test](https://github.com/plesk/wappspector/actions/workflows/unit-test.yml/badge.svg)](https://github.com/plesk/wappspector/actions/workflows/unit-test.yml) ## Matchers ### Technology & Frameworks | Technology | Version | Check type | |-------------|------------|----------------------------------| | PHP | - | Any `*.php` file | | Ruby | 2, 3 | `Rakefile` in root dir | | Python | 2, 3 | Any `*.py` file | | Laravel | 8, 9, 10 | `artisan` file in root dir | | Symfony | 3, 4, 5, 6 | `symfony.lock` file in root dir | | CodeIgniter | 4 | `spark` file in root dir | | CakePHP | 3, 4 | `bin/cake` file | | Yii | 2 | `yii` file in root dir | | Composer | - | `composer.json` file in root dir | | .NET | - | Any `*.dll` file | | Node.js | - | `package.json` file in root dir | ### CMS | Name | Major version | Check type | |------------|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | WordPress | 2 - 6 | Existence and contents of `wp-includes/version.php` | | Joomla! | 1 - 6 | Existence and contents of `configuration.php` in root dir and version files in `libraries/src/Version.php` or `libraries/cms/version/version.php` or similar | | Drupal | 6 - 10 | Existence and contents of `/modules/system/system.info` or `/core/modules/system/system.info.yml` | | PrestaShop | 1.6, 1.7.8, 8.0 | Existence and contents of `/config/settings.inc.php` | | TYPO3 | 7.6, 8.7, 9, 10, 11, 12 | Existence and contents of `/typo3/sysext/core/Classes/Core/SystemEnvironmentBuilder.php` or `/typo3/sysext/core/Classes/Information/Typo3Version.php` or `/t3lib/config_default.php` | | EmDash | 0.0.3 - 0.4.0 | Existence and contents of `package.json` | ### Site builders | Name | Check type | |--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Sitejet | The `index.html` file exists and contains the `ed-element` and `webcard.apiHost=` strings | | WebPresenceBuilder | The `index.html` file contains the `` tag or contains the following DOM structure: the `div` tag with the `page` ID contains the `div` tags with the `watermark` and `layout` IDs | | Site.pro | The `sitepro` folder exists and the `sitepro` string is contained in the `web.config` or `.htaccess` files | | Duda.co | The `Style` folder contains the `desktop.css`, `mobile.css`, or `tablet.css` files. The style file contains the `dmDudaonePreviewBody` or `dudaSnipcartProductGalleryId` strings, or the `Scripts/runtime.js` file contains the `duda` string | | Siteplus | The `index.html` file exists and contains the `edit.site` string, and the `/bundle/publish/` directory exists and contains the `bundle.js` file. The `bundle.js` file contains the `siteplus` string | ## How to build phar ```shell composer global require clue/phar-composer composer install php -d phar.readonly=off ~/.composer/vendor/bin/phar-composer build . ``` Run the created `wappspector.phar`: ```shell ./wappspector.phar ./test-data ``` ## Changing matchers order To change the matchers order or to disable some of them, you should override `matchers` entry of DI container. ```php $diContainer = \Plesk\Wappspector\DIContainer::build(); $matchers = $diContainer->get('matchers'); array_unshift($matchers, \Some\New\Matcher::class); $diContainer->set('matchers', $matchers); ``` or ```php // only detect WordPress installs $diContainer = \Plesk\Wappspector\DIContainer::build(); $diContainer->set('matchers', [\Plesk\Wappspector\Matchers\Wordpress::class]); ``` ## Testing ```shell ./vendor/bin/phpunit ``` usr/share/doc/libslirp/README.md000064400000002745152532350430012335 0ustar00# libslirp libslirp is a user-mode networking library used by virtual machines, containers or various tools. ## Getting Started ### Prerequisites A C compiler, meson and glib2 development libraries. (see also [.gitlab-ci.yml](.gitlab-ci.yml) DEPS variable for the list of dependencies on Fedora) ### Building You may build and install the shared library with meson: ``` sh meson build ninja -C build install ``` And configure QEMU with --enable-slirp=system to link against it. (QEMU may build with the submodule static library using --enable-slirp=git) ### Testing Unfortunately, there are no automated tests available. You may run QEMU ``-net user`` linked with your development version. ## Contributing Feel free to open issues on the [project issues](https://gitlab.freedesktop.org/slirp/libslirp/issues) page. You may clone the [gitlab project](https://gitlab.freedesktop.org/slirp/libslirp) and create a merge request. Contributing with gitlab allows gitlab workflow, tracking issues, running CI etc. Alternatively, you may send patches to slirp@lists.freedesktop.org mailing list. ## Versioning We intend to use [libtool's versioning](https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html) for the shared libraries and use [SemVer](http://semver.org/) for project versions. For the versions available, see the [tags on this repository](https://gitlab.freedesktop.org/slirp/libslirp/releases). ## License See the [COPYRIGHT](COPYRIGHT) file for details. usr/share/doc/librsvg2/README.md000064400000013046152532355520012250 0ustar00Librsvg ======= This is librsvg - A small library to render Scalable Vector Graphics ([SVG][svg]), associated with the [GNOME Project][gnome]. It renders SVG files to [Cairo][cairo] surfaces. Cairo is the 2D, antialiased drawing library that GNOME uses to draw things to the screen or to generate output for printing. Do you want to render non-animated SVGs to a Cairo surface with a minimal API? Librsvg may be adequate for you. ***GITHUB WILL DELETE YOUR PULL REQUESTS!*** We use [`gitlab.gnome.org`](https://gitlab.gnome.org/GNOME/librsvg) instead. Please see [`CONTRIBUTING.md`][contributing] for details. Using librsvg ------------- **Compiling:** Librsvg uses a mostly normal [autotools] setup. You may run into some peculiarities due to the Rust internals library if you are **cross-compiling** or if you are in a **build system with no network access**, or if you are **building binary packages from a librsvg tarball**. In those cases, please refer to the [`COMPILING.md`][compiling] file. **Documentation:** You can read the [documentation for librsvg][docs] at developer.gnome.org. Please [tell us][mail] if you don't find something there that you need. **Bug tracking:** If you have found a bug, take a look at [our bug tracker][bugs]. Please see the "[reporting bugs][reporting-bugs]" section in the file [CONTRIBUTING.md][contributing] to see how to provide a good bug report. **Asking questions:** Feel free to ask questions about using librsvg in the [desktop-devel-list][d-d-l] mailing list. **Programming languages:** Librsvg exports its API through [GObject Introspection][gi]. This way, it is available in many programming languages other than C. Please see your language binding's documentation for information on how to load the `Rsvg` namespace. Contributing to librsvg's development ------------------------------------- There is a code of conduct for contributors to librsvg; please see the file [`code-of-conduct.md`][coc]. For information on how to report bugs, or how to contribute to librsvg in general, please see the file [`CONTRIBUTING.md`][contributing]. Goals of librsvg ---------------- Librsvg aims to be a low-footprint library for rendering SVG images. It is used primarily in the [GNOME project](https://www.gnome.org) to render SVG icons and vector images that appear on the desktop. It is also used in Wikimedia to render the SVG images that appear in Wikipedia, so that even old web browsers can display them. Many projects which casually need to render static SVG images use librsvg. We aim to be a "render this SVG for me, quickly, and with a minimal API" kind of library. Feature additions will be considered on a case-by-case basis. Non-goals of librsvg -------------------- We don't aim to: * Implement every single SVG feature that is in the spec. * Implement scripting or external access to the SVG's DOM. * Implement support for CSS-based animations (but if you can think of a nice API to do this, we would be glad to know!) * Replace the industrial-strength SVG rendering machinery in modern web browsers. Of course, [contributions are welcome][contributing]. In particular, if you find nice ways of doing the above while still maintaining the existing API of librsvg, we would love to know about it! Who uses librsvg? ----------------- Librsvg is part of the [GNOME platform][platform]. Inside GNOME, librsvg takes multiple roles: * Loads SVGs from the generic gdk-pixbuf loader infrastructure, so any application which uses gdk-pixbuf can load SVGs as if they were raster images. * Loads SVG icons for the desktop. * Creates SVG thumbnails for the file manager. * Loads SVGs within GNOME's default image viewer, Eye of Gnome. Outside of GNOME's core: * GNOME games (chess, five-or-more, etc. to draw game pieces) * GIMP * GCompris * Claws-mail * Darktable * Mate-panel * Evas/Enlightenment * Emacs * ImageMagick * Wikipedia, to render SVGs as raster images for old browsers. *Special thanks to Wikimedia for providing excellent bug reports.* Presentations on librsvg ------------------------ "[Replacing C library code with Rust: What I learned with librsvg][guadec-presentation]" was presented at GUADEC 2017. It gives a little history of librsvg, and how/why it is being ported to Rust from C. Maintainers ----------- The maintainer of librsvg is [Federico Mena Quintero][federico]. Feel free to contact me for any questions you may have about librsvg, both its usage and its development. You can contact me in the following ways: * [Mail me][mail] at federico@gnome.org. * IRC: I am `federico` on `irc.gnome.org` in the `#rust` or `#gnome-hackers` channels. I'm there most weekdays (Mon-Fri) starting at about UTC 14:00 (that's 08:00 my time; I am in the UTC-6 timezone). If this is not a convenient time for you, feel free to [mail me][mail] and we can arrange a time. [svg]: https://en.wikipedia.org/wiki/Scalable_Vector_Graphics [gnome]: https://www.gnome.org/ [cairo]: https://www.cairographics.org/ [coc]: code-of-conduct.md [autotools]: https://autotools.io/index.html [compiling]: COMPILING.md [docs]: https://developer.gnome.org/rsvg/stable/ [mail]: mailto:federico@gnome.org [bugs]: https://gitlab.gnome.org/GNOME/librsvg/issues [gi]: https://wiki.gnome.org/Projects/GObjectIntrospection [contributing]: CONTRIBUTING.md [reporting-bugs]: CONTRIBUTING.md#reporting-bugs [d-d-l]: https://mail.gnome.org/mailman/listinfo/desktop-devel-list [federico]: https://people.gnome.org/~federico/ [platform]: https://developer.gnome.org/ [guadec-presentation]: https://people.gnome.org/~federico/blog/docs/fmq-porting-c-to-rust.pdf usr/share/doc/fuse3/README.md000064400000012212152532705470011540 0ustar00libfuse ======= About ----- FUSE (Filesystem in Userspace) is an interface for userspace programs to export a filesystem to the Linux kernel. The FUSE project consists of two components: the *fuse* kernel module (maintained in the regular kernel repositories) and the *libfuse* userspace library (maintained in this repository). libfuse provides the reference implementation for communicating with the FUSE kernel module. A FUSE file system is typically implemented as a standalone application that links with libfuse. libfuse provides functions to mount the file system, unmount it, read requests from the kernel, and send responses back. libfuse offers two APIs: a "high-level", synchronous API, and a "low-level" asynchronous API. In both cases, incoming requests from the kernel are passed to the main program using callbacks. When using the high-level API, the callbacks may work with file names and paths instead of inodes, and processing of a request finishes when the callback function returns. When using the low-level API, the callbacks must work with inodes and responses must be sent explicitly using a separate set of API functions. Supported Platforms ------------------- * Linux (fully) * BSD (mostly/best-effort) * For OS-X, please use [OSXFUSE](https://osxfuse.github.io/) Installation ------------ You can download libfuse from https://github.com/libfuse/libfuse/releases. To build and install, we recommend to use [Meson](http://mesonbuild.com/) and [Ninja](https://ninja-build.org). After extracting the libfuse tarball, create a (temporary) build directory and run Meson: $ mkdir build; cd build $ meson .. Normally, the default build options will work fine. If you nevertheless want to adjust them, you can do so with the *mesonconf* command: $ mesonconf # list options $ mesonconf -D disable-mtab=true # set an option To build, test and install libfuse, you then use Ninja: $ ninja $ sudo python3 -m pytest test/ $ sudo ninja install Running the tests requires the [py.test](http://www.pytest.org/) Python module. Instead of running the tests as root, the majority of tests can also be run as a regular user if *util/fusermount3* is made setuid root first: $ sudo chown root:root util/fusermount3 $ sudo chmod 4755 util/fusermount3 $ python3 -m pytest test/ Security implications --------------------- The *fusermount3* program is installed setuid root. This is done to allow normal users to mount their own filesystem implementations. To limit the harm that malicious users can do this way, *fusermount3* enforces the following limitations: - The user can only mount on a mountpoint for which he has write permission - The mountpoint must not be a sticky directory which isn't owned by the user (like /tmp usually is) - No other user (including root) can access the contents of the mounted filesystem (though this can be relaxed by allowing the use of the *allow_other* and *allow_root* mount options in */etc/fuse.conf*) If you intend to use the *allow_other* mount options, be aware that FUSE has an unresolved [security bug](https://github.com/libfuse/libfuse/issues/15): if the *default_permissions* mount option is not used, the results of the first permission check performed by the file system for a directory entry will be re-used for subsequent accesses as long as the inode of the accessed entry is present in the kernel cache - even if the permissions have since changed, and even if the subsequent access is made by a different user. This is of little concern if the filesystem is accessible only to the mounting user (which has full access to the filesystem anyway), but becomes a security issue when other users are allowed to access the filesystem (since they can exploit this to perform operations on the filesystem that they do not actually have permissions for). This bug needs to be fixed in the Linux kernel and has been known since 2006 but unfortunately no fix has been applied yet. If you depend on correct permission handling for FUSE file systems, the only workaround is to use `default_permissions` (which does not currently support ACLs), or to completely disable caching of directory entry attributes. Building your own filesystem ------------------------------ FUSE comes with several example file systems in the `examples` directory. For example, the *passthrough* examples mirror the contents of the root directory under the mountpoint. Start from there and adapt the code! The documentation of the API functions and necessary callbacks is mostly contained in the files `include/fuse.h` (for the high-level API) and `include/fuse_lowlevel.h` (for the low-level API). An autogenerated html version of the API is available in the `doc/html` directory and at http://libfuse.github.io/doxygen. Getting Help ------------ If you need help, please ask on the mailing list (subscribe at https://lists.sourceforge.net/lists/listinfo/fuse-devel). Please report any bugs on the GitHub issue tracker at https://github.com/libfuse/libfuse/issues. Professional Support -------------------- Professional support is offered via [Rath Consulting](http://www.rath-consulting.biz). usr/share/doc/tpm2-tss/README.md000064400000025367152532710460012216 0ustar00[![Linux Build Status](https://travis-ci.org/tpm2-software/tpm2-tss.svg?branch=master)](https://travis-ci.org/tpm2-software/tpm2-tss) [![Windows Build status](https://ci.appveyor.com/api/projects/status/2rdmyn1ndkiavngn?svg=true)](https://ci.appveyor.com/project/tpm2-software/tpm2-tss) [![Coverity Scan](https://img.shields.io/coverity/scan/3997.svg)](https://scan.coverity.com/projects/tpm2-tss) [![Coverage Status](https://codecov.io/gh/tpm2-software/tpm2-tss/branch/master/graph/badge.svg)](https://codecov.io/gh/tpm2-software/tpm2-tss) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2332/badge)](https://bestpractices.coreinfrastructure.org/projects/2332) [![Total alerts](https://img.shields.io/lgtm/alerts/g/tpm2-software/tpm2-tss.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/tpm2-software/tpm2-tss/alerts/) [![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/tpm2-software/tpm2-tss.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/tpm2-software/tpm2-tss/context:cpp) # Overview This repository hosts source code implementing the Trusted Computing Group's (TCG) TPM2 Software Stack (TSS). This stack consists of the following layers from top to bottom: * Enhanced System API (ESAPI) as described in the [TSS 2.0 Enhanced System API (ESAPI) Specification](https://trustedcomputinggroup.org/wp-content/uploads/TSS_ESAPI_Version-0.9_Revision-04_reviewEND030918.pdf). This API is a 1-to-1 mapping of the TPM2 commands documented in Part 3 of the TPM2 specification. Additionally there are asynchronous versions of each command. In addition to SAPI, the ESAPI performs tracking of meta data for TPM object and automatic calculation of session based authorization and encryption values. Both the synchronous and asynchronous API are exposed through a single library: libtss2-esys. * System API (SAPI) as described in the [system level API and TPM command transmission interface specification](http://www.trustedcomputinggroup.org/resources/tss_system_level_api_and_tpm_command_transmission_interface_specification). This API is a 1-to-1 mapping of the TPM2 commands documented in Part 3 of the TPM2 specification. Additionally there are asynchronous versions of each command. These asynchronous variants may be useful for integration into event-driven programming environments. Both the synchronous and asynchronous API are exposed through a single library: libtss2-sys. * Marshaling/Unmarshaling (MU) as described in the [TCG TSS 2.0 Marshaling/Unmarshaling API Specification](https://trustedcomputinggroup.org/wp-content/uploads/TSS_Marshaling_Unmarshaling_API_Version-1.0_Revision-04_review_ENDS030918.pdf). This API provides a set of marshaling and unmarshaling functions for all data types define by the TPM library specification. The Marshaling/Unmarshaling API is exposed through a library called libtss2-mu. * TPM Command Transmission Interface (TCTI) that is described in the same specification. This API provides a standard interface to transmit / receive TPM command / response buffers. It is expected that any number of libraries implementing the TCTI API will be implemented as a way to abstract various platform specific IPC mechanisms. Currently this repository provides two TCTI implementations: libtss2-tcti-device and libtss2-tcti-mssim. The former should be used for direct access to the TPM through the Linux kernel driver. The latter implements the protocol exposed by the Microsoft software TPM2 simulator. * The [TCG TSS 2.0 Overview and Common Structures Specification](https://trustedcomputinggroup.org/wp-content/uploads/TSS_Overview_Common_Structures_Version-0.9_Revision-03_Review_030918.pdf) forms the basis for all implementations in this project. NOTE: We deviate from this draft of the specification by increasing the value of TPM2_NUM_PCR_BANKS from 3 to 16 to ensure compatibility with TPM2 implementations that have enabled a larger than typical number of PCR banks. This larger value for TPM2_NUM_PCR_BANKS is expected to be included in a future revision of the specification. # Build and Installation Instructions: Instructions to build and install tpm2-tss are available in the [INSTALL](INSTALL.md) file. # Getting in Touch: If you're looking to discuss the source code in this project or get some questions answered you should join the 01.org TPM2 mailing list: https://lists.01.org/mailman/listinfo/tpm2. We also have an IRC channel set up on [FreeNode](https://freenode.net/) called \#tpm2.0-tss. In case you want to contribute to the project, please also have a look at the [Contribution Guidelines](CONTRIBUTING.md). # Test Suite This repository contains a test suite intended to exercise the TCTI, SAPI and ESAPI code. This test suite is *not* intended to test a TPM implementation, so this test suite should only be run against a TPM simulator. If this test suite is executed against a TPM other than the software simulator it may cause damage to the TPM (NV storage wear out, etc.). You have been warned. ## Simulator The TPM library specification contains reference code sufficient to construct a software TPM 2.0 simulator. This code was provided by Microsoft and they provide a binary download for Windows [here](https://www.microsoft.com/en-us/download/details.aspx?id=52507). IBM has repackaged this code with a few Makefiles so that the Microsoft code can be built and run on Linux systems. The Linux version of the Microsoft TPM 2.0 simulator can be obtained [here](https://downloads.sourceforge.net/project/ibmswtpm2/ibmtpm974.tar.gz). Once you've downloaded and successfully built and execute the simulator it will, by default, be accepting connections on the localhost, TCP ports 2321 and 2322. Issues building or running the simulator should be reported to the IBM software TPM2 project. NOTE: The Intel TCG TSS is currently tested against version 974 of the simulator. Compatibility with later versions has not yet been tested. ## Testing To test the various TCTI, SAPI and ESAPI api calls, unit and integration tests can be run by configuring the build to enable unit testing and running the "check" build target. It is recommended to use a simulator for testing, and the simulator will be automatically launched by the tests. Please review the dependency list in [INSTALL](INSTALL.md) for dependencies when building the test suite. ``` $ ./configure --enable-unit --enable-integration $ make -j$(nproc) check ``` This will generate a file called "test-suite.log" in the root of the build directory. Please report failures in a Github 'issue' with a full log of the test run. NOTE: The unit and integration tests can be enabled independently. The --enable-unit option controls unit tests, and --enable-integration controls the integration tests. ### Running tests on physical TPM device To run integration tests on a physical TPM device, including a TPM hardware or a software TPM implemented in platform firmware the configure script provides two options. The first option is called --with-ptpm and it is used to point to the TPM device interface exposed by the OS, for example: ``` $ ./configure --with-ptpm=/dev/tpm0 ``` The second option, --with-ptpmtests, enables a "class" of test. There are three classes: 1. destructive - these tests can affect TPM capability or lifespan 2. mandatory - these tests check all the functionality that is mandatory per the TCG specification (default). 3. optional - these tests are for functionality that is optional per the TCG specification. For example to enable both mandatory and optional test cases during configure one needs to set this flag as follows: ``` $ ./configure --with-ptpmtests="mandatory,optional" ``` Tht default value for the flag is "mandatory" Any combination of the three is valid. The two flags are only valid when the integration tests are enabled with --enable-integration flag. After that the following command is used to run the test on the configured TPM device: ``` $ sudo make check-ptpm ``` or ``` $ sudo make check -j 1 ``` Note: The tests can not be run in paralel. ### Running valgrind check The unit and integration tests can be run under the valgrind tool, which performs additional checks on the library and test code, such as memory leak checks etc. The following command is used to run the tests under valgrind: $ make check-valgrind This command will enable all valgrind "tools" and kick off as many test as many tools it supports. It is possible to enable different valgrind tools (checks) in more granularity. This can be controlled by invoking different tools separately using check-valgrind-<tool>, for instance: ``` $ make check-valgrind-memcheck ``` or ``` $ make check-valgrind-drd ``` Currently the the following tools are supported: memcheck - Performs memory related checks. This is the default tool. helgrind - Performs synchronization errors checks. drd - Performs thread related checks. sgcheck - Performs stack overrun related checks. Note that the valgring tool can also be invoked manually using the standard libtool: ``` $ libtool exec valgrind --tool=memcheck --leak-check=full \ test/integration/esys-auto-session-flags.int ``` This allows for more control on what checks are performed. ### Logging While investigating issues it might be helpful to enable extra debug/trace output. It can be enabled separately for different components. The description how to do this can be found in the [logging](doc/logging.md) file. ### Fuzzing All system API function calls can be tested using a fuzzing library. The description how to do this can be found in the [fuzzing](doc/fuzzing.md) file. # Architecture/Block Diagram SAPI library, TAB/RM, and Test Code Block Diagram: ![Architecture Block Diagram](doc/TSS_block_diagram.png) # Project Layout ├── doc : various bits of documentation\ ├── include : header files installed in $(includedir)\ │ └── tss2 : all public headers for this project\ ├── lib : data files used by the build or installed into $(libdir)\ ├── m4 : autoconf support macros\ ├── man : man pages\ ├── script : scripts used by the build or CI\ ├── src : all source files\ │ ├── tss2-esys : enhanced system API (ESAPI) implementation\ │ │   └── api : ESAPI TPM API implementation\ │ ├── tss2-mu : TPM2 type marshaling/unmarshaling (MU) API implementation\ │ ├── tss2-sys : system API (SAPI) implementation\ │ │   └── api : SAPI public API implementation\ │ ├── tss2-tcti : TCTI implementations for device and mssim\ │ └── util : Internal utility library (e.g. logging framework)\ └── test : test code\    ├── integration : integration test harness and test cases\    ├── tpmclient : monolithic, legacy test application\    └── unit : unit tests usr/share/doc/perl-HTTP-Cookies/README.md000064400000015761152532744560013643 0ustar00# NAME HTTP::Cookies - HTTP cookie jars # VERSION version 6.04 # SYNOPSIS use HTTP::Cookies; $cookie_jar = HTTP::Cookies->new( file => "$ENV{'HOME'}/lwp_cookies.dat", autosave => 1, ); use LWP; my $browser = LWP::UserAgent->new; $browser->cookie_jar($cookie_jar); Or for an empty and temporary cookie jar: use LWP; my $browser = LWP::UserAgent->new; $browser->cookie_jar( {} ); # DESCRIPTION This class is for objects that represent a "cookie jar" -- that is, a database of all the HTTP cookies that a given LWP::UserAgent object knows about. Cookies are a general mechanism which server side connections can use to both store and retrieve information on the client side of the connection. For more information about cookies refer to and . This module also implements the new style cookies described in [RFC 2965](https://tools.ietf.org/html/rfc2965). The two variants of cookies are supposed to be able to coexist happily. Instances of the class _HTTP::Cookies_ are able to store a collection of Set-Cookie2: and Set-Cookie: headers and are able to use this information to initialize Cookie-headers in _HTTP::Request_ objects. The state of a _HTTP::Cookies_ object can be saved in and restored from files. # LIMITATIONS This module does not support [Public Suffix](https://publicsuffix.org/) encouraged by a more recent standard, [RFC 6265](https://tools.ietf.org/html/rfc6265). This module's shortcomings mean that a malicious Web site can set cookies to track your user agent across all sites under a top level domain. See `t/publicsuffix.t` in this module's distribution for details. [HTTP::CookieJar::LWP](https://metacpan.org/pod/HTTP::CookieJar::LWP) supports Public Suffix, but only provides a limited subset of this module's functionality and [does not support](https://metacpan.org/pod/HTTP::CookieJar#LIMITATIONS-AND-CAVEATS) standards older than _RFC 6265_. # METHODS The following methods are provided: - $cookie\_jar = HTTP::Cookies->new The constructor takes hash style parameters. The following parameters are recognized: file: name of the file to restore cookies from and save cookies to autosave: save during destruction (bool) ignore_discard: save even cookies that are requested to be discarded (bool) hide_cookie2: do not add Cookie2 header to requests Future parameters might include (not yet implemented): max_cookies 300 max_cookies_per_domain 20 max_cookie_size 4096 no_cookies list of domain names that we never return cookies to - $cookie\_jar->get\_cookies( $url\_or\_domain ) - $cookie\_jar->get\_cookies( $url\_or\_domain, $cookie\_key,... ) Returns a hash of the cookies that applies to the given URL. If a domainname is given as argument, then a prefix of "https://" is assumed. If one or more $cookie\_key parameters are provided return the given values, or `undef` if the cookie isn't available. - $cookie\_jar->add\_cookie\_header( $request ) The add\_cookie\_header() method will set the appropriate Cookie:-header for the _HTTP::Request_ object given as argument. The $request must have a valid url attribute before this method is called. - $cookie\_jar->extract\_cookies( $response ) The extract\_cookies() method will look for Set-Cookie: and Set-Cookie2: headers in the _HTTP::Response_ object passed as argument. Any of these headers that are found are used to update the state of the $cookie\_jar. - $cookie\_jar->set\_cookie( $version, $key, $val, $path, $domain, $port, $path\_spec, $secure, $maxage, $discard, \\%rest ) The set\_cookie() method updates the state of the $cookie\_jar. The $key, $val, $domain, $port and $path arguments are strings. The $path\_spec, $secure, $discard arguments are boolean values. The $maxage value is a number indicating number of seconds that this cookie will live. A value of $maxage <= 0 will delete this cookie. %rest defines various other attributes like "Comment" and "CommentURL". - $cookie\_jar->save - $cookie\_jar->save( $file ) This method file saves the state of the $cookie\_jar to a file. The state can then be restored later using the load() method. If a filename is not specified we will use the name specified during construction. If the attribute _ignore\_discard_ is set, then we will even save cookies that are marked to be discarded. The default is to save a sequence of "Set-Cookie3" lines. "Set-Cookie3" is a proprietary LWP format, not known to be compatible with any browser. The _HTTP::Cookies::Netscape_ sub-class can be used to save in a format compatible with Netscape. - $cookie\_jar->load - $cookie\_jar->load( $file ) This method reads the cookies from the file and adds them to the $cookie\_jar. The file must be in the format written by the save() method. - $cookie\_jar->revert This method empties the $cookie\_jar and re-loads the $cookie\_jar from the last save file. - $cookie\_jar->clear - $cookie\_jar->clear( $domain ) - $cookie\_jar->clear( $domain, $path ) - $cookie\_jar->clear( $domain, $path, $key ) Invoking this method without arguments will empty the whole $cookie\_jar. If given a single argument only cookies belonging to that domain will be removed. If given two arguments, cookies belonging to the specified path within that domain are removed. If given three arguments, then the cookie with the specified key, path and domain is removed. - $cookie\_jar->clear\_temporary\_cookies Discard all temporary cookies. Scans for all cookies in the jar with either no expire field or a true `discard` flag. To be called when the user agent shuts down according to RFC 2965. - $cookie\_jar->scan( \\&callback ) The argument is a subroutine that will be invoked for each cookie stored in the $cookie\_jar. The subroutine will be invoked with the following arguments: 0 version 1 key 2 val 3 path 4 domain 5 port 6 path_spec 7 secure 8 expires 9 discard 10 hash - $cookie\_jar->as\_string - $cookie\_jar->as\_string( $skip\_discardables ) The as\_string() method will return the state of the $cookie\_jar represented as a sequence of "Set-Cookie3" header lines separated by "\\n". If $skip\_discardables is TRUE, it will not return lines for cookies with the _Discard_ attribute. # SEE ALSO [HTTP::Cookies::Netscape](https://metacpan.org/pod/HTTP::Cookies::Netscape), [HTTP::Cookies::Microsoft](https://metacpan.org/pod/HTTP::Cookies::Microsoft) # AUTHOR Gisle Aas # COPYRIGHT AND LICENSE This software is copyright (c) 2002-2017 by Gisle Aas. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. opt/cpanel/ea-wappspector/vendor/phar-io/manifest/README.md000064400000013177152533127550017504 0ustar00# Manifest Component for reading [phar.io](https://phar.io/) manifest information from a [PHP Archive (PHAR)](http://php.net/phar). ## Installation You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): composer require phar-io/manifest If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: composer require --dev phar-io/manifest ## Usage Examples ### Read from `manifest.xml` ```php use PharIo\Manifest\ManifestLoader; use PharIo\Manifest\ManifestSerializer; $manifest = ManifestLoader::fromFile('manifest.xml'); var_dump($manifest); echo (new ManifestSerializer)->serializeToString($manifest); ```
Output ```shell object(PharIo\Manifest\Manifest)#14 (6) { ["name":"PharIo\Manifest\Manifest":private]=> object(PharIo\Manifest\ApplicationName)#10 (1) { ["name":"PharIo\Manifest\ApplicationName":private]=> string(12) "some/library" } ["version":"PharIo\Manifest\Manifest":private]=> object(PharIo\Version\Version)#12 (5) { ["originalVersionString":"PharIo\Version\Version":private]=> string(5) "1.0.0" ["major":"PharIo\Version\Version":private]=> object(PharIo\Version\VersionNumber)#13 (1) { ["value":"PharIo\Version\VersionNumber":private]=> int(1) } ["minor":"PharIo\Version\Version":private]=> object(PharIo\Version\VersionNumber)#23 (1) { ["value":"PharIo\Version\VersionNumber":private]=> int(0) } ["patch":"PharIo\Version\Version":private]=> object(PharIo\Version\VersionNumber)#22 (1) { ["value":"PharIo\Version\VersionNumber":private]=> int(0) } ["preReleaseSuffix":"PharIo\Version\Version":private]=> NULL } ["type":"PharIo\Manifest\Manifest":private]=> object(PharIo\Manifest\Library)#6 (0) { } ["copyrightInformation":"PharIo\Manifest\Manifest":private]=> object(PharIo\Manifest\CopyrightInformation)#19 (2) { ["authors":"PharIo\Manifest\CopyrightInformation":private]=> object(PharIo\Manifest\AuthorCollection)#9 (1) { ["authors":"PharIo\Manifest\AuthorCollection":private]=> array(1) { [0]=> object(PharIo\Manifest\Author)#15 (2) { ["name":"PharIo\Manifest\Author":private]=> string(13) "Reiner Zufall" ["email":"PharIo\Manifest\Author":private]=> object(PharIo\Manifest\Email)#16 (1) { ["email":"PharIo\Manifest\Email":private]=> string(16) "reiner@zufall.de" } } } } ["license":"PharIo\Manifest\CopyrightInformation":private]=> object(PharIo\Manifest\License)#11 (2) { ["name":"PharIo\Manifest\License":private]=> string(12) "BSD-3-Clause" ["url":"PharIo\Manifest\License":private]=> object(PharIo\Manifest\Url)#18 (1) { ["url":"PharIo\Manifest\Url":private]=> string(26) "https://domain.tld/LICENSE" } } } ["requirements":"PharIo\Manifest\Manifest":private]=> object(PharIo\Manifest\RequirementCollection)#17 (1) { ["requirements":"PharIo\Manifest\RequirementCollection":private]=> array(1) { [0]=> object(PharIo\Manifest\PhpVersionRequirement)#20 (1) { ["versionConstraint":"PharIo\Manifest\PhpVersionRequirement":private]=> object(PharIo\Version\SpecificMajorAndMinorVersionConstraint)#24 (3) { ["originalValue":"PharIo\Version\AbstractVersionConstraint":private]=> string(3) "7.0" ["major":"PharIo\Version\SpecificMajorAndMinorVersionConstraint":private]=> int(7) ["minor":"PharIo\Version\SpecificMajorAndMinorVersionConstraint":private]=> int(0) } } } } ["bundledComponents":"PharIo\Manifest\Manifest":private]=> object(PharIo\Manifest\BundledComponentCollection)#8 (1) { ["bundledComponents":"PharIo\Manifest\BundledComponentCollection":private]=> array(0) { } } } ```
### Create via API ```php $bundled = new \PharIo\Manifest\BundledComponentCollection(); $bundled->add( new \PharIo\Manifest\BundledComponent('vendor/packageA', new \PharIo\Version\Version('1.2.3-dev') ) ); $manifest = new PharIo\Manifest\Manifest( new \PharIo\Manifest\ApplicationName('vendor/package'), new \PharIo\Version\Version('1.0.0'), new \PharIo\Manifest\Library(), new \PharIo\Manifest\CopyrightInformation( new \PharIo\Manifest\AuthorCollection(), new \PharIo\Manifest\License( 'BSD-3-Clause', new \PharIo\Manifest\Url('https://spdx.org/licenses/BSD-3-Clause.html') ) ), new \PharIo\Manifest\RequirementCollection(), $bundled ); echo (new ManifestSerializer)->serializeToString($manifest); ```
Output ```xml ```
usr/share/doc/perl-Expect/README.md000064400000003642152533153560012710 0ustar00###Status [![Build Status](https://travis-ci.org/jacoby/expect.pm.png)](https://travis-ci.org/jacoby/expect.pm) Expect.pm ========= Expect requires the latest version of IO::Tty, also available from CPAN. IO::Stty has become optional but I'd suggest you also install it. If you use the highly recommended CPAN module, there is a Bundle::Expect available that installs everything for you. If you prefer manual installation, the usual perl Makefile.PL make make test make install should work. Note that IO::Tty is very system-dependend. It has been extensively reworked and tested, but there still may be systems that have problems. Please be sure to read the FAQ section in the Expect pod manpage, especially the section about using Expect to control telnet/ssh etc. There are other ways to work around password entry, you definitely don't need Expect for ssh automatisation! The Perl Expect module was inspired more by the functionality of Tcl/Expect than any previous Expect-like tool such as Comm.pl or chat2.pl. The Tcl version of Expect is a creation of Don Libes (libes@nist.gov) and can be found at http://expect.nist.gov/. Don has written an excellent in-depth tutorial of Tcl/Expect, which is _Exploring Expect_. It is the O'Reilly book with the monkey on the front. Don has several references to other articles on the Expect web page. I try to stay as close to Tcl/Expect in interface and semantics as possible (so I can refer questions to the Tcl/Expect docu). Suggestions for improvement are always welcome. There are two mailing lists available, expectperl-announce and expectperl-discuss, at http://lists.sourceforge.net/lists/listinfo/expectperl-announce and http://lists.sourceforge.net/lists/listinfo/expectperl-discuss Thanks to everybody who wrote to me, either with bug reports, enhancement suggestions or especially fixes! Dave Jacoby (maintaner of Expect.pm) jacoby@cpan.org 2015-10-31 usr/share/doc/nrpe/README.md000064400000022730152533272250011461 0ustar00![Nagios!](https://www.nagios.com/wp-content/uploads/2015/05/Nagios-Black-500x124.png) Nagios Remote Plugin Executor (NRPE) ==================================== For installation instructions and information on the design overview of the NRPE addon, please read the PDF documentation that is found in this directory: `docs/NRPE.pdf`. If you are upgrading from a previous version, you'll want to check the [Changelog](CHANGELOG.md) and then run `./update-cfg.pl` to add the new SSL parameters to your config file. TL;DR: You can jump straight to [Compiling](#compiling) and [Installing](#installing) You'll want to read up on the [Security](SECURITY.md) document regarding NRPE, no doubt. And make sure to check out the [SSL Readme](README.SSL.md) as well, if you plan on using encryption methods to transmit `nrpe` data. Purpose ------- The purpose of this addon is to allow you to execute Nagios plugins on a remote host in as transparent a manner as possible. Contents -------- There are two pieces to this addon: 1. `nrpe` This program runs as a background process on the remote host and processes command execution requests from the check_nrpe plugin on the Nagios host. Upon receiving a plugin request from an authorized host, it will execute the command line associated with the command name it received and send the program output and return code back to the check_nrpe plugin 2. `check_nrpe` This is a plugin that is run on the Nagios host and is used to contact the NRPE process on remote hosts. The plugin requests that a plugin be executed on the remote host and wait for the NRPE process to execute the plugin and return the result. The plugin then uses the output and return code from the plugin execution on the remote host for its own output and return code. Compiling --------- If you are having any problems compiling on your system, please let us know (preferrably with fixes). Most users should be able to compile `nrpe` and the `check_nrpe` plugin with the following commands... ./configure make all ***HINT:*** `./configure --help` **NOTE:** If you're cloning from GitHub, you'll need to run `autoconf` first. **NOTE:** Since the check_nrpe plugin and nrpe daemon run on different machines (the plugin runs on the Nagios host and the daemon runs on the remote host), you will have to compile the nrpe daemon on the target machine. Installing ---------- You have a few options here. The binaries created from `make all` were placed in your `src/` directory. You can either copy these where they need to be, or you can run any of the following `make install` options: * `make install-groups-users` Add the users and groups sepcified during `./configure`. Defaults to nagios and nagios, respectively. You can override these with the `./configure --with-nrpe-user=USER --with-nrpe-group=GROUP`. * `make install` This will run both `install-plugin` and `install-daemon`. * `make install-plugin` This will install the plugin by default in `/usr/local/nagios/libexec`. You can override this behavior by using the `--with-pluginsdir=DIR` flag during `./configure`. * `make install-daemon` This will install the plugin by default in `/usr/local/nagios/bin`. You can override this behavior by using the `--prefix=DIR` or `--bindir=DIR` flags during `./configure`. * `make install-config` This will install the sample config by default in `/usr/local/nagios/etc`. You can override this behavior by using the `--with-pkgsysconfdir=DIR` flag during `./configure`. * `make install-inetd` `./configure` attempts to determine your inetd type. If it finds it, it will install the appropriate inetd script in the proper location. You can help it out with `./configure --with-inetd-type=TYPE` where `TYPE` can be one of: `inetd`, `xinetd`, `systemd`, `launchd`, `smf10`, `smf11`. * `make install-init` `./configure` attempts to determine the appropriate init type. If it figures it out, will install the required startup script. You can help it out with `./configure --with-init-type=TYPE` where TYPE can be one of: `bsd`, `sysv`, `systemd`, `launchd`, `smf10`, `smf11`, `upstart`, `openrc`. If you used all the necessary `./configure` flags, you shouldn't need to tweak your config file any at this point, and a simple `service nrpe start` or `systemctl start nrpe.service` should work just fine. Configuring ----------- A sample config file for the NRPE daemon are located in the `sample-config/` subdirectory. If you used the proper flags during `./configure`, this file should contain all of the appropriate information as a starting point. Running Under `inetd` or `xinetd` --------------------------------- If you plan on running nrpe under inetd or xinetd and making use of TCP wrappers, you need to add a line to your `/etc/services` file as follows (modify the port number as you see fit) nrpe 5666/tcp # NRPE The run `make install-inetd` to copy the appropriate file, or add the appropriate line to your `/etc/inetd.conf`. **NOTE:** If you run nrpe under inetd or xinetd, the server_port and allowed_hosts variables in the nrpe configuration file are ignored. * `inetd` After running `make install-inetd`, your `/etc/inetd.conf` file will contain lines similar to the following: # Enable the following entry to enable the nrpe daemon #nrpe stream tcp nowait nagios /usr/local/nagios/bin/nrpe nrpe -c /usr/local/nagios/etc/nr # Enable the following entry if the nrpe daemon didn't link with libwrap #nrpe stream tcp nowait nagios /usr/sbin/tcpd /usr/local/nagios/bin/nrpe -c /usr/local/nag Un-comment the appropriate line, then Restart inetd: /etc/rc.d/init.d/inet restart OpenBSD users can use the following command to restart inetd: kill -HUP `cat /var/run/inet.pid` Then add entries to your `/etc/hosts.allow` and `/etc/hosts.deny` file to enable TCP wrapper protection for the nrpe service. This is optional, although highly recommended. * `xinetd` If your system uses xinetd instead of inetd, `make install-inetd` will create a file called `nrpe` in your `/etc/xinetd.d` directory that contains a file similar to this: # default: off # description: NRPE (Nagios Remote Plugin Executor) service nrpe { disable = yes socket_type = stream port = @NRPE_PORT@ wait = no user = nagios group = nagios server = /usr/local/nagios/bin/nrpe server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd only_from = 127.0.0.1 log_on_failure += USERID } * Replace `disable = yes` with `disable = no` * Replace the `127.0.0.1` field with the IP addresses of hosts which are allowed to connect to the NRPE daemon. This only works if xinetd was compiled with support for tcpwrappers. * Add entries to your `/etc/hosts.allow` and `/etc/hosts.deny` file to enable TCP wrapper protection for the nrpe service. This is optional, although highly recommended. * Restart xinetd: /etc/rc.d/init.d/xinetd restart Configuring Things On The Nagios Host --------------------------------------- Examples for configuring the nrpe daemon are found in the sample `nrpe.cfg` file included in this distribution. That config file resides on the remote host(s) along with the nrpe daemon. The check_nrpe plugin gets installed on the Nagios host. In order to use the check_nrpe plugin from within Nagios, you will have to define a few things in the host config file. An example command definition for the check_nrpe plugin would look like this: define command{ command_name check_nrpe command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } In any service definitions that use the nrpe plugin/daemon to get their results, you would set the service check command portion of the definition to something like this (sample service definition is simplified for this example): define service{ host_name someremotehost service_description someremoteservice check_command check_nrpe!yourcommand ... etc ... } where `yourcommand` is a name of a command that you define in your `nrpe.cfg` file on the remote host (see the docs in the sample nrpe.cfg file for more information). License Notice -------------- NRPE - Nagios Remote Plugin Executor Copyright (c) 2017 Nagios Enterprises 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., 675 Mass Ave, Cambridge, MA 02139, USA. Questions? ---------- If you have questions about this addon, or encounter problems getting things working along the way, your best bet for an answer or quick resolution is to check the [Nagios Support Forums](https://support.nagios.com/forum/viewforum.php?f=5). usr/share/doc/perl-DBI/README.md000064400000006746152533360470012066 0ustar00# DBI - The Perl Database Interface. [![Build Status](https://secure.travis-ci.org/perl5-dbi/dbi.png)](http://travis-ci.org/perl5-dbi/dbi/) See [COPYRIGHT](https://metacpan.org/module/DBI#COPYRIGHT) section in DBI.pm for usage and distribution rights. See [GETTING HELP](https://metacpan.org/module/DBI#GETTING-HELP) section in DBI.pm for how to get help. # QUICK START GUIDE: The DBI requires one or more 'driver' modules to talk to databases, but they are not needed to build or install the DBI. Check that a DBD::* module exists for the database you wish to use. Install the DBI using a installer like cpanm, cpanplus, cpan, or whatever is recommened by the perl distribution you're using. Make sure the DBI tests run successfully before installing. Use the 'perldoc DBI' command to read the DBI documentation. Install the DBD::* driver module you wish to use in the same way. It is often important to read the driver README file carefully. Make sure the driver tests run successfully before installing. The DBI.pm file contains the DBI specification and other documentation. PLEASE READ IT. It'll save you asking questions on the mailing list which you will be told are already answered in the documentation. For more information and to keep informed about progress you can join the a mailing list via mailto:dbi-users-help@perl.org You can post to the mailing list without subscribing. (Your first post may be delayed a day or so while it's being moderated.) To help you make the best use of the dbi-users mailing list, and any other lists or forums you may use, I strongly recommend that you read "How To Ask Questions The Smart Way" by Eric Raymond: http://www.catb.org/~esr/faqs/smart-questions.html Much useful information and online archives of the mailing lists can be found at http://dbi.perl.org/ See also http://metacpan.org/ # IF YOU HAVE PROBLEMS: First, read the notes in the INSTALL file. If you can't fix it your self please post details to dbi-users@perl.org. Please include: 1. A complete log of a complete build, e.g.: perl Makefile.PL (do a make realclean first) make make test make test TEST_VERBOSE=1 (if any of the t/* tests fail) 2. The output of perl -V 3. If you get a core dump, try to include a stack trace from it. Try installing the Devel::CoreStack module to get a stack trace. If the stack trace mentions XS_DynaLoader_dl_load_file then rerun make test after setting the environment variable PERL_DL_DEBUG to 2. 4. If your installation succeeds, but your script does not behave as you expect, the problem is possibly in your script. Before sending to dbi-users, try writing a small, easy to use test case to reproduce your problem. Also, use the DBI->trace method to trace your database calls. Please don't post problems to usenet, google groups or perl5-porters. This software is supported via the dbi-users mailing list. For more information and to keep informed about progress you can join the mailing list via mailto:dbi-users-help@perl.org (please note that I do not run or manage the mailing list). It is important to check that you are using the latest version before posting. If you're not then we're very likely to simply say "upgrade to the latest". You would do yourself a favour by upgrading beforehand. Please remember that we're all busy. Try to help yourself first, then try to help us help you by following these guidelines carefully. Regards, Tim Bunce and the perl5-dbi team. usr/share/doc/svt-av1-libs/Docs/README.md000064400000002667152533363230013643 0ustar00# SVT-AV1 Documentation **User Guides**: * [SVT-AV1 Encoder User Guide](svt-av1_encoder_user_guide.md) * [SVT-AV1 Decoder User Guide](svt-av1_decoder_user_guide.md) **Detailed Encoder Documentation**: * [SVT-AV1 Encoder Design Guide](svt-av1-encoder-design.md) * [SVT-AV1 Decoder Design Guide](svt-av1-decoder-design.md) * [Altref Appendix](Appendix-Alt-Refs.md) * [CDEF Appendix](Appendix-CDEF.md) * [CfL Appendix](Appendix-CfL.md) * [Compliant Subpel Interpolation Filter Search Appendix](Appendix-Compliant-Subpel-Interpolation-Filter-Search.md) * [Compound Mode Prediction Appendix](Appendix-Compound-Mode-Prediction.md) * [Deblocking Loop Filter (LF) Appendix](Appendix-DLF.md) * [Film Grain Synthesis Appendix](Appendix-Film-Grain-Synthesis.md) * [Filter Intra Appendix](Appendix-Filter-Intra.md) * [Global Motion Appendix](Appendix-Global-Motion.md) * [Intra Block Copy Appendix](Appendix-Intra-Block-Copy.md) * [Local Warped Motion appendix](Appendix-Local-Warped-Motion.md) * [Palette Prediction Appendix](Appendix-Palette-Prediction.md) * [Restoration Filter Appendix](Appendix-Restoration-Filter.md) * [Subpel Interpolation in the Open Loop Motion Estimation Appendix](Appendix-Subpel-Interpolation-Open-Loop-ME.md) * [TX Search Appendix](Appendix-TX-Search.md) * [SQ Weight Appendix](Appendix-SQ-Weight.md) * [Variance Based Adaptive Quantization Appendix](Appendix-Variance-Based-Adaptive-Quantization.md) usr/share/doc/ipcalc/README.md000064400000004165152533404030011743 0ustar00[![Build Status](https://travis-ci.org/nmav/ipcalc.svg?branch=master)](https://travis-ci.org/nmav/ipcalc) # Information about ipcalc This is a modern tool to assist in network address calculations for IPv4 and IPv6. It acts both as a tool to output human readable information about a network or address, as well as a tool suitable to be used by scripts or other programs. It supports printing a summary about the provided network address, multiple command line options per information to be printed, transparent IPv6 support, and in addition it will use libGeoIP if available to provide geographic information. # Examples ## IPv4 ``` $ ./ipcalc --all-info 193.92.150.2/24 Address: 193.92.150.2 Network: 193.92.150.0/24 Netmask: 255.255.255.0 = 24 Broadcast: 193.92.150.255 Reverse DNS: 150.92.193.in-addr.arpa. Address space: Internet Address class: Class C HostMin: 193.92.150.1 HostMax: 193.92.150.254 Hosts/Net: 254 Country code: GR Country: Greece ``` ``` $ ./ipcalc -pnmb --minaddr --maxaddr --geoinfo --addrspace 193.92.150.2/255.255.255.224 NETMASK=255.255.255.224 PREFIX=27 BROADCAST=193.92.150.31 NETWORK=193.92.150.0 MINADDR=193.92.150.1 MAXADDR=193.92.150.30 ADDRSPACE="Internet" COUNTRY="Greece" ``` ## IPv6 ``` $ ./ipcalc --all-info 2a03:2880:20:4f06:face:b00c:0:14/64 Full Address: 2a03:2880:0020:4f06:face:b00c:0000:0014 Address: 2a03:2880:20:4f06:face:b00c:0:14 Full Network: 2a03:2880:0020:4f06:0000:0000:0000:0000/64 Network: 2a03:2880:20:4f06::/64 Netmask: ffff:ffff:ffff:ffff:: = 64 Reverse DNS: 6.0.f.4.0.2.0.0.0.8.8.2.3.0.a.2.ip6.arpa. Address space: Global Unicast HostMin: 2a03:2880:20:4f06:: HostMax: 2a03:2880:20:4f06:ffff:ffff:ffff:ffff Hosts/Net: 2^(64) = 18446744073709551616 Country code: IE Country: Ireland ``` ``` $ ./ipcalc -pnmb --minaddr --maxaddr --addrspace --geoinfo 2a03:2880:20:4f06:face:b00c:0:14/64 NETMASK=ffff:ffff:ffff:ffff:: PREFIX=64 NETWORK=2a03:2880:20:4f06:: MINADDR=2a03:2880:20:4f06:: MAXADDR=2a03:2880:20:4f06:ffff:ffff:ffff:ffff ADDRSPACE="Global Unicast" COUNTRY="Ireland" ``` usr/share/doc/tbb/README.md000064400000003145152533432710011262 0ustar00# Intel(R) Threading Building Blocks 2018 Update 2 [![Stable release](https://img.shields.io/badge/version-2018_U2-green.svg)](https://github.com/01org/tbb/releases/tag/2018_U2) [![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE) Intel(R) Threading Building Blocks (Intel(R) TBB) lets you easily write parallel C++ programs that take full advantage of multicore performance, that are portable, composable and have future-proof scalability. ## Release Information Here are the latest [Changes](CHANGES) and [Release Notes](doc/Release_Notes.txt) (contains system requirements and known issues). ## Documentation * Intel(R) TBB [tutorial](https://software.intel.com/en-us/tbb-tutorial) * Intel(R) TBB general documentation: [stable](https://software.intel.com/en-us/tbb-documentation) and [latest](https://www.threadingbuildingblocks.org/docs/help/index.htm) ## Support Please report issues and suggestions via [GitHub issues](https://github.com/01org/tbb/issues) or start a topic on the [Intel(R) TBB forum](http://software.intel.com/en-us/forums/intel-threading-building-blocks/). ## How to Contribute Please, read the instructions on the official [Intel(R) TBB open source site](https://www.threadingbuildingblocks.org/submit-contribution). ## Engineering team contacts * [E-mail us.](mailto:inteltbbdevelopers@intel.com) ------------------------------------------------------------------------ Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries. \* Other names and brands may be claimed as the property of others. usr/share/doc/slirp4netns/README.md000064400000022057152533601570013005 0ustar00# slirp4netns: User-mode networking for unprivileged network namespaces slirp4netns provides user-mode networking ("slirp") for unprivileged network namespaces. - [Motivation](#motivation) - [Projects using slirp4netns](#projects-using-slirp4netns) - [Maintenance policy](#maintenance-policy) - [Quick start](#quick-start) - [Install](#install) - [Usage](#usage) - [Manual](#manual) - [Benchmarks](#benchmarks) - [iperf3 (netns -> host)](#iperf3-netns---host) - [Install from source](#install-from-source) - [Acknowledgement](#acknowledgement) - [License](#license) ## Motivation Starting with Linux 3.8, unprivileged users can create [`network_namespaces(7)`](http://man7.org/linux/man-pages/man7/network_namespaces.7.html) along with [`user_namespaces(7)`](http://man7.org/linux/man-pages/man7/user_namespaces.7.html). However, unprivileged network namespaces had not been very useful, because creating [`veth(4)`](http://man7.org/linux/man-pages/man4/veth.4.html) pairs across the host and network namespaces still requires the root privileges. (i.e. No internet connection) slirp4netns allows connecting a network namespace to the Internet in a completely unprivileged way, by connecting a TAP device in a network namespace to the usermode TCP/IP stack (["slirp"](https://gitlab.freedesktop.org/slirp/libslirp)). ## Projects using slirp4netns Kubernetes distributions: * [Usernetes](https://github.com/rootless-containers/usernetes) (via RootlessKit) * [k3s](https://k3s.io) (via RootlessKit) Container engines: * [Podman](https://github.com/containers/libpod) * [Buildah](https://github.com/containers/buildah) * [ctnr](https://github.com/mgoltzsche/ctnr) (via slirp-cni-plugin) * [Docker & Moby](https://get.docker.com/rootless) (optionally, via RootlessKit) * [containerd/nerdctl](https://github.com/containerd/nerdctl) (optionally, via RootlessKit) Tools: * [RootlessKit](https://github.com/rootless-containers/rootlesskit) * [become-root](https://github.com/giuseppe/become-root) * [slirp-cni-plugin](https://github.com/mgoltzsche/slirp-cni-plugin) ## Maintenance policy Version | Status -------------------------------|------------------------------------------------------------------------ v1.2.x | :white_check_mark: Active v1.1.x | End of Life (May 2, 2022) v1.0.x | End of Life (Jun 2, 2020) v0.4.x | End of Life (Sep 30, 2020) v0.3.x | End of Life (Mar 31, 2020) v0.2.x | End of Life (Aug 30, 2019) Early versions prior to v0.2.x | End of Life (Jan 5, 2019) See https://github.com/rootless-containers/slirp4netns/releases for the releases. ### Security advisories See https://github.com/rootless-containers/slirp4netns/security/advisories for the past security advisories. :warning: We had been collecting [the vulnerabilities of QEMU/libslirp](https://www.cvedetails.com/product/57329/Libslirp-Project-Libslirp.html?vendor_id=20192) in this slirp4netns repo until the end of 2020, as the slirp4netns releases prior to v1.0.0 were always statically linked with a specific version of QEMU/libslirp. Starting with 2021, the vulnerabilities of libslirp are no longer collected in this slirp4netns repo, as slirp4netns >= v1.0.0 can be linked with an arbitrary version of libslirp.
Run slirp4netns --version to check the version of the linked libslirp.

```console $ slirp4netns --version slirp4netns version 1.1.8 commit: d361001f495417b880f20329121e3aa431a8f90f libslirp: 4.4.0 SLIRP_CONFIG_VERSION_MAX: 3 libseccomp: 2.4.3 ```

## Quick start ### Install Statically linked binaries available for x86\_64, aarch64, armv7l, s390x, ppc64le, and riscv64: https://github.com/rootless-containers/slirp4netns/releases Also available as a package on almost all Linux distributions: * [RHEL/CentOS (since 7.7 and 8.0)](https://pkgs.org/search/?q=slirp4netns) * [Fedora (since 28)](https://src.fedoraproject.org/rpms/slirp4netns) * [Arch Linux](https://www.archlinux.org/packages/community/x86_64/slirp4netns/) * [openSUSE (since Leap 15.0)](https://build.opensuse.org/package/show/openSUSE%3AFactory/slirp4netns) * [SUSE Linux Enterprise (since 15)](https://build.opensuse.org/package/show/devel%3Akubic/slirp4netns) * [Debian GNU/Linux (since 10.0)](https://packages.debian.org/buster/slirp4netns) * [Ubuntu (since 19.04)](https://packages.ubuntu.com/search?keywords=slirp4netns) * [NixOS](https://github.com/NixOS/nixpkgs/tree/master/pkgs/tools/networking/slirp4netns) * [Gentoo Linux](https://packages.gentoo.org/packages/app-emulation/slirp4netns) * [Slackware](https://git.slackbuilds.org/slackbuilds/tree/network/slirp4netns) * [Void Linux](https://github.com/void-linux/void-packages/tree/master/srcpkgs/slirp4netns) * [Alpine Linux (since 3.14)](https://pkgs.alpinelinux.org/packages?name=slirp4netns) e.g. ```console $ sudo apt-get install slirp4netns ``` To install slirp4netns from the source, see [Install from source](#install-from-source). ### Usage **Terminal 1**: Create user/network/mount namespaces ```console (host)$ unshare --user --map-root-user --net --mount (namespace)$ echo $$ > /tmp/pid ``` In this documentation, we use `(host)$` as the prompt of the host shell, `(namespace)$` as the prompt of the shell running in the namespaces. If `unshare` fails, try the following commands (known to be needed on Debian, Arch, and old CentOS 7.X): ```console (host)$ sudo sh -c 'echo "user.max_user_namespaces=28633" >> /etc/sysctl.d/userns.conf' (host)$ [ -f /proc/sys/kernel/unprivileged_userns_clone ] && sudo sh -c 'echo "kernel.unprivileged_userns_clone=1" >> /etc/sysctl.d/userns.conf' (host)$ sudo sysctl --system ``` **Terminal 2**: Start slirp4netns ```console (host)$ slirp4netns --configure --mtu=65520 --disable-host-loopback $(cat /tmp/pid) tap0 starting slirp, MTU=65520 ... ``` **Terminal 1**: Make sure the `tap0` is configured and connected to the Internet ```console (namespace)$ ip a 1: lo: mtu 65536 qdisc noop state DOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 3: tap0: mtu 65520 qdisc fq_codel state UNKNOWN group default qlen 1000 link/ether c2:28:0c:0e:29:06 brd ff:ff:ff:ff:ff:ff inet 10.0.2.100/24 brd 10.0.2.255 scope global tap0 valid_lft forever preferred_lft forever inet6 fe80::c028:cff:fe0e:2906/64 scope link valid_lft forever preferred_lft forever (namespace)$ echo "nameserver 10.0.2.3" > /tmp/resolv.conf (namespace)$ mount --bind /tmp/resolv.conf /etc/resolv.conf (namespace)$ curl https://example.com ``` ## Manual Manual: [`slirp4netns.1.md`](slirp4netns.1.md) * [Description](./slirp4netns.1.md#description) * [Options](./slirp4netns.1.md#options) * [Example](./slirp4netns.1.md#example) * [Routing ping packets](./slirp4netns.1.md#routing-ping-packets) * [API socket](./slirp4netns.1.md#api-socket) * [Defined namespace paths](./slirp4netns.1.md#defined-namespace-paths) * [Outbound addresses](./slirp4netns.1.md#outbound-addresses) * [Inter-namespace communication](./slirp4netns.1.md#inter-namespace-communication) * [Inter-host communication](./slirp4netns.1.md#inter-host-communication) * [Bugs](./slirp4netns.1.md#bugs) ## Benchmarks ### iperf3 (netns -> host) Aug 28, 2018, on [RootlessKit](https://github.com/rootless-containers/rootlesskit) Travis: https://github.com/rootless-containers/rootlesskit/pull/16 Implementation | MTU=1500 | MTU=4000 | MTU=16384 | MTU=65520 ---------------|------------|------------|-------------|------------ vde_plug | 763 Mbps |Unsupported | Unsupported | Unsupported VPNKit | 514 Mbps | 526 Mbps | 540 Mbps | Unsupported slirp4netns | 1.07 Gbps | 2.78 Gbps | 4.55 Gbps | 9.21 Gbps slirp4netns is faster than [vde_plug](https://github.com/rd235/vdeplug_slirp) and [VPNKit](https://github.com/moby/vpnkit) because slirp4netns is optimized to avoid copying packets across the namespaces. The latest revision of slirp4netns is regularly benchmarked (`make benchmark`) on [CI](https://github.com/rootless-containers/slirp4netns/actions?query=workflow%3AMain). ## Install from source Build dependencies (`apt-get`): ```console $ sudo apt-get install libglib2.0-dev libslirp-dev libcap-dev libseccomp-dev ``` Build dependencies (`dnf`): ```console $ sudo dnf install glib2-devel libslirp-devel libcap-devel libseccomp-devel ``` Installation steps: ```console $ ./autogen.sh $ ./configure --prefix=/usr $ make $ sudo make install ``` * [libslirp](https://gitlab.freedesktop.org/slirp/libslirp) needs to be v4.1.0 or later. * To build `slirp4netns` as a static binary, run `./configure` with `LDFLAGS=-static`. * If you set `--prefix` to `$HOME`, you don't need to run `make install` with `sudo`. ## Acknowledgement See [`vendor/README.md`](./vendor/README.md). ## License [GPL-2.0-or-later](COPYING) usr/share/doc/oniguruma/README.md000064400000025600152533771160012526 0ustar00Oniguruma ========= https://github.com/kkos/oniguruma Oniguruma is a modern and flexible regular expressions library. It encompasses features from different regular expression implementations that traditionally exist in different languages. It comes close to being a complete superset of all regular expression features found in other regular expression implementations. Its features include: * Character encoding can be specified per regular expression object. * Several regular expression types are supported: * Oniguruma (native) * POSIX * Grep * GNU Regex * Perl * Java * Ruby * Emacs Supported character encodings: ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, EUC-JP, EUC-TW, EUC-KR, EUC-CN, Shift_JIS, Big5, GB18030, KOI8-R, CP1251, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 * GB18030: contributed by KUBO Takehiro * CP1251: contributed by Byte New feature of version 6.8.2 -------------------------- * Fix: #80 UChar in header causes issue * NEW API: onig_set_callout_user_data_of_match_param() (* omission in 6.8.0) * add doc/CALLOUTS.API and doc/CALLOUTS.API.ja New feature of version 6.8.1 -------------------------- * Update shared library version to 5.0.0 for API incompatible changes from 6.7.1 New feature of version 6.8.0 -------------------------- * Retry-limit-in-match function enabled by default * NEW: configure option --enable-posix-api=no (* enabled by default) * NEW API: onig_search_with_param(), onig_match_with_param() * NEW: Callouts of contents (?{...contents...}) (?{...}\[tag]\[X<>]) (?{{...}}) * NEW: Callouts of name (*name) (*name\[tag]{args...}) * NEW: Builtin callouts (*FAIL) (*MISMATCH) (*ERROR{n}) (*COUNT) (*MAX{n}) etc.. * Examples of Callouts program: [callout.c](sample/callout.c), [count.c](sample/count.c), [echo.c](sample/echo.c) (* Callout function API is experimental level and isn't fixed definitely yet. Undocumented now) New feature of version 6.7.1 -------------------------- * NEW: Mechanism of retry-limit-in-match (* disabled by default) New feature of version 6.7.0 -------------------------- * NEW: hexadecimal codepoint \uHHHH * NEW: add ONIG_SYNTAX_ONIGURUMA (== ONIG_SYNTAX_DEFAULT) * Disabled \N and \O on ONIG_SYNTAX_RUBY * Reduced size of object file New feature of version 6.6.0 -------------------------- * NEW: ASCII only mode options for character type/property (?WDSP) * NEW: Extended Grapheme Cluster boundary \y, \Y (*original) * NEW: Extended Grapheme Cluster \X * Range-clear (Absent-clear) operator restores previous range in retractions. New feature of version 6.5.0 -------------------------- * NEW: \K (keep) * NEW: \R (general newline) \N (no newline) * NEW: \O (true anychar) * NEW: if-then-else (?(...)...\|...) * NEW: Backreference validity checker (?(xxx)) (*original) * NEW: Absent repeater (?~absent) \[is equal to (?\~\|absent|\O*)] * NEW: Absent expression (?~|absent|expr) (*original) * NEW: Absent stopper (?~|absent) (*original) New feature of version 6.4.0 -------------------------- * Fix fatal problem of endless repeat on Windows * NEW: call zero (call the total regexp) \g<0> * NEW: relative backref/call by positive number \k<+n>, \g<+n> New feature of version 6.3.0 -------------------------- * NEW: octal codepoint \o{.....} * Fixed CVE-2017-9224 * Fixed CVE-2017-9225 * Fixed CVE-2017-9226 * Fixed CVE-2017-9227 * Fixed CVE-2017-9228 * Fixed CVE-2017-9229 New feature of version 6.1.2 -------------------------- * allow word bound, word begin and word end in look-behind. * NEW option: ONIG_OPTION_CHECK_VALIDITY_OF_STRING New feature of version 6.1 -------------------------- * improved doc/RE * NEW API: onig_scan() New feature of version 6.0 -------------------------- * Update Unicode 8.0 Property/Case-folding * NEW API: onig_unicode_define_user_property() License ------- BSD license. Install ------- ### Case 1: Unix and Cygwin platform 1. autoreconf -vfi (* case: configure script is not found.) 2. ./configure 3. make 4. make install * uninstall make uninstall * configuration check onig-config --cflags onig-config --libs onig-config --prefix onig-config --exec-prefix ### Case 2: Windows 64/32bit platform (Visual Studio) execute make_win64 or make_win32 onig_s.lib: static link library onig.dll: dynamic link library * test (ASCII/Shift_JIS) 1. cd src 2. copy ..\windows\testc.c . 3. nmake -f Makefile.windows ctest (I have checked by Visual Studio Community 2015) Regular Expressions ------------------- See [doc/RE](doc/RE) or [doc/RE.ja](doc/RE.ja) for Japanese. Usage ----- Include oniguruma.h in your program. (Oniguruma API) See doc/API for Oniguruma API. If you want to disable UChar type (== unsigned char) definition in oniguruma.h, define ONIG_ESCAPE_UCHAR_COLLISION and then include oniguruma.h. If you want to disable regex_t type definition in oniguruma.h, define ONIG_ESCAPE_REGEX_T_COLLISION and then include oniguruma.h. Example of the compiling/linking command line in Unix or Cygwin, (prefix == /usr/local case) cc sample.c -L/usr/local/lib -lonig If you want to use static link library(onig_s.lib) in Win32, add option -DONIG_EXTERN=extern to C compiler. Sample Programs --------------- |File |Description | |:---------------------|:-----------------------------------------| |sample/simple.c |example of the minimum (Oniguruma API) | |sample/names.c |example of the named group callback. | |sample/encode.c |example of some encodings. | |sample/listcap.c |example of the capture history. | |sample/posix.c |POSIX API sample. | |sample/scan.c |example of using onig_scan(). | |sample/sql.c |example of the variable meta characters. | |sample/user_property.c|example of user defined Unicode property. | |sample/callout.c |example of callouts. | Test Programs |File |Description | |:------------------|:--------------------------------------| |sample/syntax.c |Perl, Java and ASIS syntax test. | |sample/crnl.c |--enable-crnl-as-line-terminator test | Source Files ------------ |File |Description | |:------------------|:-------------------------------------------------------| |oniguruma.h |Oniguruma API header file (public) | |onig-config.in |configuration check program template | |regenc.h |character encodings framework header file | |regint.h |internal definitions | |regparse.h |internal definitions for regparse.c and regcomp.c | |regcomp.c |compiling and optimization functions | |regenc.c |character encodings framework | |regerror.c |error message function | |regext.c |extended API functions (deluxe version API) | |regexec.c |search and match functions | |regparse.c |parsing functions. | |regsyntax.c |pattern syntax functions and built-in syntax definitions| |regtrav.c |capture history tree data traverse functions | |regversion.c |version info function | |st.h |hash table functions header file | |st.c |hash table functions | |oniggnu.h |GNU regex API header file (public) | |reggnu.c |GNU regex API functions | |onigposix.h |POSIX API header file (public) | |regposerr.c |POSIX error message function | |regposix.c |POSIX API functions | |mktable.c |character type table generator | |ascii.c |ASCII encoding | |euc_jp.c |EUC-JP encoding | |euc_tw.c |EUC-TW encoding | |euc_kr.c |EUC-KR, EUC-CN encoding | |sjis.c |Shift_JIS encoding | |big5.c |Big5 encoding | |gb18030.c |GB18030 encoding | |koi8.c |KOI8 encoding | |koi8_r.c |KOI8-R encoding | |cp1251.c |CP1251 encoding | |iso8859_1.c |ISO-8859-1 (Latin-1) | |iso8859_2.c |ISO-8859-2 (Latin-2) | |iso8859_3.c |ISO-8859-3 (Latin-3) | |iso8859_4.c |ISO-8859-4 (Latin-4) | |iso8859_5.c |ISO-8859-5 (Cyrillic) | |iso8859_6.c |ISO-8859-6 (Arabic) | |iso8859_7.c |ISO-8859-7 (Greek) | |iso8859_8.c |ISO-8859-8 (Hebrew) | |iso8859_9.c |ISO-8859-9 (Latin-5 or Turkish) | |iso8859_10.c |ISO-8859-10 (Latin-6 or Nordic) | |iso8859_11.c |ISO-8859-11 (Thai) | |iso8859_13.c |ISO-8859-13 (Latin-7 or Baltic Rim) | |iso8859_14.c |ISO-8859-14 (Latin-8 or Celtic) | |iso8859_15.c |ISO-8859-15 (Latin-9 or West European with Euro) | |iso8859_16.c |ISO-8859-16 (Latin-10) | |utf8.c |UTF-8 encoding | |utf16_be.c |UTF-16BE encoding | |utf16_le.c |UTF-16LE encoding | |utf32_be.c |UTF-32BE encoding | |utf32_le.c |UTF-32LE encoding | |unicode.c |common codes of Unicode encoding | |unicode_fold_data.c|Unicode folding data | |win32/Makefile |Makefile for Win32 (VC++) | |win32/config.h |config.h for Win32 | usr/share/doc/svt-av1-libs/README.md000064400000020775152534071010012744 0ustar00# Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder) The Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder) is an AV1-compliant encoder/decoder library core. The SVT-AV1 encoder development is a work-in-progress targeting performance levels applicable to both VOD and Live encoding / transcoding video applications. The SVT-AV1 decoder implementation is targeting future codec research activities. ## License SVT-AV1 is licensed under the Alliance for Open Media license and Patent License. See [LICENSE](LICENSE.md) and [PATENTS](PATENTS.md) for details. Please refer to the [license Q&A](https://01.org/svt/downloads/svt-av1-license-change-qa) if you have any questions about the licensing history of SVT-AV1. ## Documentation More details about the SVT-AV1 usage and implementation can be found under: - [svt-av1-encoder-user-guide](Docs/svt-av1_encoder_user_guide.md) - [svt-av1-decoder-user-guide](Docs/svt-av1_decoder_user_guide.md) - [svt-av1-documentation-page](Docs/README.md) ## System Requirements ### Operating System SVT-AV1 Encoder may run on any Windows* or Linux* 64 bit operating systems. The list below represents the operating systems that the encoder application and library were tested and validated on: - __Windows* Operating Systems (64-bit):__ - Windows* Server 2016 - __Linux* Operating Systems (64-bit):__ - Ubuntu* 16.04 Server LTS - Ubuntu* 18.04 Server LTS - __Unix* Operating Systems (64-bit):__ - MacOS ### Hardware The SVT-AV1 Encoder library supports the x86 architecture - __CPU Requirements__ In order to achieve the performance targeted by the SVT-AV1 Encoder, the specific CPU model listed above would need to be used when running the encoder. Otherwise, the encoder runs on any 5th Generation Intel® Core™ processor, (Intel® Xeon® CPUs, E5-v4 or newer). - __RAM Requirements__ The SVT-AV1 Encoder adapts to the system on which it is being run. The memory requirements depend on the number of cores the system contains, the input frame rate of the input sequence (`-fps`) and the look ahead distance passed to the encoder (`-lad`). The SVT-AV1 Encoder application will display an error if the system does not have enough RAM to support the encode prior to the start of the encode. The following table shows the minimum amount of RAM required for some standard resolutions of 10bit video per stream: | Resolution | 8-vCPU Commit Size (GB)| 40-vCPU Commit Size (GB)| |-----------------------|------------------------|-------------------------| | 4k | 14 | 24 | | 1080p | 6 | 10 | | 720p | 4 | 7 | | 480p | 3 | 5 | ## Build and Install ### Windows* Operating Systems (64-bit) - __Build Requirements__ - Visual Studio* 2017 (download [here](https://www.visualstudio.com/vs/older-downloads/)) or 2019 (download [here](https://visualstudio.microsoft.com/downloads/)) - CMake 3.5 or later (download [here](https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-win64-x64.msi)) - YASM Assembler version 1.2.0 or later - Download the yasm exe from the following [link](http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe) - Rename yasm-*-win64.exe to yasm.exe - Copy yasm.exe into a location that is in the `PATH` environment variable - __Build Instructions__ - Build the project by following the steps below - cd into `Build\windows` - run `build.bat <2019|2017|2015>` [This will generate the .sln files and build the project] - __Binaries Location__ - Binaries can be found under `/Bin/Release` or `/Bin/Debug`, depending on whether Debug or Release were selected in the build mode. - __Installation__ For the binaries to operate properly on your system, the following conditions have to be met: - On any of the Windows* Operating Systems listed in the OS requirements section, install Visual Studio* 2015/2017/2019 - Once the installation is complete, copy the binaries to a location making sure that both the sample application `SvtAv1EncApp.exe` and library `SvtAv1Enc.dll` are in the same folder. - Open the command prompt window at the chosen location and run the sample application to encode: `SvtAV1EncApp.exe -i [in.yuv] -w [width] -h [height] -b [out.ivf]` - Sample application supports reading from pipe. E.g. `ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | SvtAv1EncApp.exe -i stdin -n [number_of_frames_to_encode] -w [width] -h [height]` ### Linux* Operating Systems (64-bit) - __Build Requirements__ - GCC 5.4.0 or later - CMake 3.5.1 or later - YASM Assembler version 1.2.0 or later - __Build Instructions__ - `cd Build/linux` - `./build.sh ` - __Sample Binaries location__ - Binaries can be found under `Bin/Release` and/or `Bin/Debug` - __Installation__ For the binaries to operate properly on your system, the following conditions have to be met: - On any of the Linux* Operating Systems listed above, copy the binaries under a location of your choice. - Change the permissions on the sample application `SvtAV1EncApp` executable by running the command: `chmod +x SvtAv1EncApp` - cd into your chosen location - Run the sample application to encode: `./SvtAv1EncApp -i [in.yuv] -w [width] -h [height] -b [out.ivf]` - Sample application supports reading from pipe. E.g. `ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | ./SvtAv1EncApp -i stdin -n [number_of_frames_to_encode] -w [width] -h [height]` ## SVT-AV1 ffmpeg plugin installation ### 1. Build and install SVT-AV1 ``` bash git clone --depth=1 https://gitlab.com/AOMediaCodec/SVT-AV1.git cd SVT-AV1 cd Build cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release make -j $(nproc) sudo make install ``` ### 2. Enable libsvtav1 in FFmpeg NOTE: If you wish to use an FFmpeg tag or release before 4.4, please go [here](https://gitlab.com/AOMediaCodec/SVT-AV1/tree/v0.8.4/ffmpeg_plugin) and consult that page to properly patch ffmpeg for use with SVT-AV1. ``` bash git clone --depth=1 https://github.com/FFmpeg/FFmpeg ffmpeg cd ffmpeg export LD_LIBRARY_PATH+=":/usr/local/lib" export PKG_CONFIG_PATH+=":/usr/local/lib/pkgconfig" ./configure --enable-libsvtav1 make -j $(nproc) ``` ### 3. Verify that ffmpeg is working ``` bash ./ffmpeg -i input.mp4 -c:v libsvtav1 -y test.mp4 ``` ## How to evaluate by ready-to-run executables with docker Refer to the guide [here](https://github.com/OpenVisualCloud/Dockerfiles/blob/master/doc/svt.md#Evaluate-SVT). ## Demo features and limitations - **Multi-instance support:** The multi-instance functionality is a demo feature implemented in the SVT-AV1 Encoder sample application as an example of one sample application using multiple encoding libraries. Encoding using the multi-instance support is limited to only 6 simultaneous streams. For example two channels encoding on Windows: `SvtAV1EncApp.exe -nch 2 -c firstchannel.cfg secondchannel.cfg` - **Features enabled:** The library will display an error message any feature combination that is not currently supported. ## How to Contribute We welcome community contributions to the SVT-AV1 Encoder and Decoder. Thank you for your time! By contributing to the project, you agree to the license, patent and copyright terms in the AOM License and Patent License and to the release of your contribution under these terms. See [LICENSE](LICENSE.md) and [PATENTS](PATENTS.md) for details. ## Contributor agreement You will be required to execute the appropriate [contributor agreement](http://aomedia.org/license/) to ensure that the AOMedia Project has the right to distribute your changes. ### Contribution process - Follow the [coding guidelines](STYLE.md) and the [contributing guidelines](CONTRIBUTING.md) - Validate that your changes do not break a build - Perform smoke tests and ensure they pass - Submit a pull request for review to the maintainer ### How to Report Bugs and Provide Feedback Use the [Issues](https://gitlab.com/AOMediaCodec/SVT-AV1/issues) tab on Github. To avoid duplicate issues, please make sure you go through the existing issues before logging a new one. ## IRC `#svt` on Freenode. Join via [Freenode Webchat](https://webchat.freenode.net/?channels=svt) or use your favorite IRC client. A [public log](https://freenode.logbot.info/svt) is available. ## Performance tracker Performance and raw data files available at usr/share/doc/json-c/README.md000064400000012123152534110060011670 0ustar00`json-c` {#mainpage} ======== 1. [Overview and Build Status](#overview) 2. [Building on Unix](#buildunix) 3. [Install Prerequisites](#installprereq) 4. [Building with partial threading support](#buildthreaded) 5. [Linking to libjson-c](#linking) 6. [Using json-c](#using) JSON-C - A JSON implementation in C ----------------------------------- Build Status * [AppVeyor Build](https://ci.appveyor.com/project/hawicz/json-c) ![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/json-c/json-c?branch=master&svg=true) * [Travis Build](https://travis-ci.org/json-c/json-c) ![Travis Build Status](https://travis-ci.org/json-c/json-c.svg?branch=master) JSON-C implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects. It aims to conform to [RFC 7159](https://tools.ietf.org/html/rfc7159). Building on Unix with `git`, `gcc` and `autotools` -------------------------------------------------- Home page for json-c: https://github.com/json-c/json-c/wiki ### Prerequisites: See also the "Installing prerequisites" section below. - `gcc`, `clang`, or another C compiler - `libtool>=2.2.6b` If you're not using a release tarball, you'll also need: - `autoconf>=2.64` (`autoreconf`) - `automake>=1.13` Make sure you have a complete `libtool` install, including `libtoolize`. To generate docs (e.g. as part of make distcheck) you'll also need: - `doxygen>=1.8.13` ### Build instructions: `json-c` GitHub repo: https://github.com/json-c/json-c ```sh $ git clone https://github.com/json-c/json-c.git $ cd json-c $ sh autogen.sh ``` followed by ```sh $ ./configure # --enable-threading $ make $ make install ``` To build and run the test programs: ```sh $ make check $ make USE_VALGRIND=0 check # optionally skip using valgrind ``` Install prerequisites ----------------------- If you are on a relatively modern system, you'll likely be able to install the prerequisites using your OS's packaging system. ### Install using apt (e.g. Ubuntu 16.04.2 LTS) ```sh sudo apt install git sudo apt install autoconf automake libtool sudo apt install valgrind # optional ``` Then start from the "git clone" command, above. ### Manually install and build autoconf, automake and libtool For older OS's that don't have up-to-date version of the packages will require a bit more work. For example, CentOS release 5.11, etc... ```sh curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz curl -O http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz curl -O http://ftp.gnu.org/gnu/libtool/libtool-2.2.6b.tar.gz tar xzf autoconf-2.69.tar.gz tar xzf automake-1.15.tar.gz tar xzf libtool-2.2.6b.tar.gz export PATH=${HOME}/ac_install/bin:$PATH (cd autoconf-2.69 && \ ./configure --prefix ${HOME}/ac_install && \ make && \ make install) (cd automake-1.15 && \ ./configure --prefix ${HOME}/ac_install && \ make && \ make install) (cd libtool-2.2.6b && \ ./configure --prefix ${HOME}/ac_install && \ make && \ make install) ``` Building with partial threading support ---------------------------------------- Although json-c does not support fully multi-threaded access to object trees, it has some code to help make use in threaded programs a bit safer. Currently, this is limited to using atomic operations for json_object_get() and json_object_put(). Since this may have a performance impact, of at least 3x slower according to https://stackoverflow.com/a/11609063, it is disabled by default. You may turn it on by adjusting your configure command with: --enable-threading Separately, the default hash function used for object field keys, lh_char_hash, uses a compare-and-swap operation to ensure the randomly seed is only generated once. Because this is a one-time operation, it is always compiled in when the compare-and-swap operation is available. Linking to `libjson-c` ---------------------- If your system has `pkgconfig`, then you can just add this to your `makefile`: ```make CFLAGS += $(shell pkg-config --cflags json-c) LDFLAGS += $(shell pkg-config --libs json-c) ``` Without `pkgconfig`, you would do something like this: ```make JSON_C_DIR=/path/to/json_c/install CFLAGS += -I$(JSON_C_DIR)/include/json-c LDFLAGS+= -L$(JSON_C_DIR)/lib -ljson-c ``` Using json-c ------------ To use json-c you can either include json.h, or preferrably, one of the following more specific header files: * json_object.h - Core types and methods. * json_tokener.h - Methods for parsing and serializing json-c object trees. * json_pointer.h - JSON Pointer (RFC 6901) implementation for retrieving objects from a json-c object tree. * json_object_iterator.h - Methods for iterating over single json_object instances. * json_visit.h - Methods for walking a tree of json-c objects. * json_util.h - Miscelleanous utility functions. For a full list of headers see [files.html](files.html) usr/share/doc/perl-File-HomeDir/README.md000064400000033120152534153350013654 0ustar00# NAME File::HomeDir - Find your home and other directories on any platform # SYNOPSIS use File::HomeDir; # Modern Interface (Current User) $home = File::HomeDir->my_home; $desktop = File::HomeDir->my_desktop; $docs = File::HomeDir->my_documents; $music = File::HomeDir->my_music; $pics = File::HomeDir->my_pictures; $videos = File::HomeDir->my_videos; $data = File::HomeDir->my_data; $dist = File::HomeDir->my_dist_data('File-HomeDir'); $dist = File::HomeDir->my_dist_config('File-HomeDir'); # Modern Interface (Other Users) $home = File::HomeDir->users_home('foo'); $desktop = File::HomeDir->users_desktop('foo'); $docs = File::HomeDir->users_documents('foo'); $music = File::HomeDir->users_music('foo'); $pics = File::HomeDir->users_pictures('foo'); $video = File::HomeDir->users_videos('foo'); $data = File::HomeDir->users_data('foo'); # DESCRIPTION **File::HomeDir** is a module for locating the directories that are "owned" by a user (typicaly your user) and to solve the various issues that arise trying to find them consistently across a wide variety of platforms. The end result is a single API that can find your resources on any platform, making it relatively trivial to create Perl software that works elegantly and correctly no matter where you run it. This module provides two main interfaces. The first is a modern [File::Spec](https://metacpan.org/pod/File::Spec)-style interface with a consistent OO API and different implementation modules to support various platforms. You are **strongly** recommended to use this interface. The second interface is for legacy support of the original 0.07 interface that exported a `home()` function by default and tied the `%~` variable. It is generally not recommended that you use this interface, but due to back-compatibility reasons they will remain supported until at least 2010. The `%~` interface has been deprecated. Documentation was removed in 2009, Unit test were removed in 2011, usage will issue warnings from 2012, and the interface will be removed entirely in 2015 (in line with the general Perl toolchain convention of a 10 year support period for legacy APIs that are potentially or actually in common use). ## Platform Neutrality In the Unix world, many different types of data can be mixed together in your home directory (although on some Unix platforms this is no longer the case, particularly for "desktop"-oriented platforms). On some non-Unix platforms, separate directories are allocated for different types of data and have been for a long time. When writing applications on top of **File::HomeDir**, you should thus always try to use the most specific method you can. User documents should be saved in `my_documents`, data that supports an application but isn't normally editing by the user directory should go into `my_data`. On platforms that do not make any distinction, all these different methods will harmlessly degrade to the main home directory, but on platforms that care **File::HomeDir** will always try to Do The Right Thing(tm). # METHODS Two types of methods are provided. The `my_method` series of methods for finding resources for the current user, and the `users_method` (read as "user's method") series for finding resources for arbitrary users. This split is necessary, as on most platforms it is **much** easier to find information about the current user compared to other users, and indeed on a number you cannot find out information such as `users_desktop` at all, due to security restrictions. All methods will double check (using a `-d` test) that a directory actually exists before returning it, so you may trust in the values that are returned (subject to the usual caveats of race conditions of directories being deleted at the moment between a directory being returned and you using it). However, because in some cases platforms may not support the concept of home directories at all, any method may return `undef` (both in scalar and list context) to indicate that there is no matching directory on the system. For example, most untrusted 'nobody'-type users do not have a home directory. So any modules that are used in a CGI application that at some level of recursion use your code, will result in calls to File::HomeDir returning undef, even for a basic home() call. ## my\_home The `my_home` method takes no arguments and returns the main home/profile directory for the current user. If the distinction is important to you, the term "current" refers to the real user, and not the effective user. This is also the case for all of the other "my" methods. Returns the directory path as a string, `undef` if the current user does not have a home directory, or dies on error. ## my\_desktop The `my_desktop` method takes no arguments and returns the "desktop" directory for the current user. Due to the diversity and complexity of implementions required to deal with implementing the required functionality fully and completely, the `my_desktop` method may or may not be implemented on each platform. That said, I am extremely interested in code to implement `my_desktop` on Unix, as long as it is capable of dealing (as the Windows implementation does) with internationalisation. It should also avoid false positive results by making sure it only returns the appropriate directories for the appropriate platforms. Returns the directory path as a string, `undef` if the current user does not have a desktop directory, or dies on error. ## my\_documents The `my_documents` method takes no arguments and returns the directory (for the current user) where the user's documents are stored. Returns the directory path as a string, `undef` if the current user does not have a documents directory, or dies on error. ## my\_music The `my_music` method takes no arguments and returns the directory where the current user's music is stored. No bias is made to any particular music type or music program, rather the concept of a directory to hold the user's music is made at the level of the underlying operating system or (at least) desktop environment. Returns the directory path as a string, `undef` if the current user does not have a suitable directory, or dies on error. ## my\_pictures The `my_pictures` method takes no arguments and returns the directory where the current user's pictures are stored. No bias is made to any particular picture type or picture program, rather the concept of a directory to hold the user's pictures is made at the level of the underlying operating system or (at least) desktop environment. Returns the directory path as a string, `undef` if the current user does not have a suitable directory, or dies on error. ## my\_videos The `my_videos` method takes no arguments and returns the directory where the current user's videos are stored. No bias is made to any particular video type or video program, rather the concept of a directory to hold the user's videos is made at the level of the underlying operating system or (at least) desktop environment. Returns the directory path as a string, `undef` if the current user does not have a suitable directory, or dies on error. ## my\_data The `my_data` method takes no arguments and returns the directory where local applications should stored their internal data for the current user. Generally an application would create a subdirectory such as `.foo`, beneath this directory, and store its data there. By creating your directory this way, you get an accurate result on the maximum number of platforms. But see the documentation about `my_dist_config()` or `my_dist_data()` below. For example, on Unix you get `~/.foo` and on Win32 you get `~/Local Settings/Application Data/.foo` Returns the directory path as a string, `undef` if the current user does not have a data directory, or dies on error. ## my\_dist\_config File::HomeDir->my_dist_config( $dist [, \%params] ); # For example... File::HomeDir->my_dist_config( 'File-HomeDir' ); File::HomeDir->my_dist_config( 'File-HomeDir', { create => 1 } ); The `my_dist_config` method takes a distribution name as argument and returns an application-specific directory where they should store their internal configuration. The base directory will be either `my_config` if the platform supports it, or `my_documents` otherwise. The subdirectory itself will be `BASE/Perl/Dist-Name`. If the base directory is the user's homedir, `my_dist_config` will be in `~/.perl/Dist-Name` (and thus be hidden on all Unixes). The optional last argument is a hash reference to tweak the method behaviour. The following hash keys are recognized: - create Passing a true value to this key will force the creation of the directory if it doesn't exist (remember that `File::HomeDir`'s policy is to return `undef` if the directory doesn't exist). Defaults to false, meaning no automatic creation of directory. ## my\_dist\_data File::HomeDir->my_dist_data( $dist [, \%params] ); # For example... File::HomeDir->my_dist_data( 'File-HomeDir' ); File::HomeDir->my_dist_data( 'File-HomeDir', { create => 1 } ); The `my_dist_data` method takes a distribution name as argument and returns an application-specific directory where they should store their internal data. This directory will be of course a subdirectory of `my_data`. Platforms supporting data-specific directories will use `DATA_DIR/perl/dist/Dist-Name` following the common "DATA/vendor/application" pattern. If the `my_data` directory is the user's homedir, `my_dist_data` will be in `~/.perl/dist/Dist-Name` (and thus be hidden on all Unixes). The optional last argument is a hash reference to tweak the method behaviour. The following hash keys are recognized: - create Passing a true value to this key will force the creation of the directory if it doesn't exist (remember that `File::HomeDir`'s policy is to return `undef` if the directory doesn't exist). Defaults to false, meaning no automatic creation of directory. ## users\_home $home = File::HomeDir->users_home('foo'); The `users_home` method takes a single param and is used to locate the parent home/profile directory for an identified user on the system. While most of the time this identifier would be some form of user name, it is permitted to vary per-platform to support user ids or UUIDs as applicable for that platform. Returns the directory path as a string, `undef` if that user does not have a home directory, or dies on error. ## users\_documents $docs = File::HomeDir->users_documents('foo'); Returns the directory path as a string, `undef` if that user does not have a documents directory, or dies on error. ## users\_data $data = File::HomeDir->users_data('foo'); Returns the directory path as a string, `undef` if that user does not have a data directory, or dies on error. # FUNCTIONS ## home use File::HomeDir; $home = home(); $home = home('foo'); $home = File::HomeDir::home(); $home = File::HomeDir::home('foo'); The `home` function is exported by default and is provided for compatibility with legacy applications. In new applications, you should use the newer method-based interface above. Returns the directory path to a named user's home/profile directory. If provided no param, returns the directory path to the current user's home/profile directory. # TO DO - Add more granularity to Unix, and add support to VMS and other esoteric platforms, so we can consider going core. - Add consistent support for users\_\* methods # SUPPORT This module is stored in an Open Repository at the following address. [http://svn.ali.as/cpan/trunk/File-HomeDir](http://svn.ali.as/cpan/trunk/File-HomeDir) Write access to the repository is made available automatically to any published CPAN author, and to most other volunteers on request. If you are able to submit your bug report in the form of new (failing) unit tests, or can apply your fix directly instead of submitting a patch, you are **strongly** encouraged to do so as the author currently maintains over 100 modules and it can take some time to deal with non-Critical bug reports or patches. This will guarantee that your issue will be addressed in the next release of the module. If you cannot provide a direct test or fix, or don't have time to do so, then regular bug reports are still accepted and appreciated via the CPAN bug tracker. [http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-HomeDir](http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-HomeDir) For other issues, for commercial enhancement or support, or to have your write access enabled for the repository, contact the author at the email address above. # ACKNOWLEDGEMENTS The biggest acknowledgement goes to Chris Nandor, who wielded his legendary Mac-fu and turned my initial fairly ordinary Darwin implementation into something that actually worked properly everywhere, and then donated a Mac OS X license to allow it to be maintained properly. # AUTHORS Adam Kennedy <adamk@cpan.org> Sean M. Burke <sburke@cpan.org> Chris Nandor <cnandor@cpan.org> Stephen Steneker <stennie@cpan.org> # SEE ALSO [File::ShareDir](https://metacpan.org/pod/File::ShareDir), [File::HomeDir::Win32](https://metacpan.org/pod/File::HomeDir::Win32) (legacy) # COPYRIGHT Copyright 2005 - 2012 Adam Kennedy. Some parts copyright 2000 Sean M. Burke. Some parts copyright 2006 Chris Nandor. Some parts copyright 2006 Stephen Steneker. Some parts copyright 2009-2011 Jérôme Quelin. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. usr/share/doc/pkgconf/README.md000064400000012374152534325300012143 0ustar00# pkgconf [![Build Status](https://travis-ci.org/pkgconf/pkgconf.svg?branch=master)](https://travis-ci.org/pkgconf/pkgconf) [![Documentation Status](https://readthedocs.org/projects/pkgconf/badge/?version=latest)](http://pkgconf.readthedocs.io/en/latest/?badge=latest) `pkgconf` is a program which helps to configure compiler and linker flags for development libraries. It is similar to pkg-config from freedesktop.org. `libpkgconf` is a library which provides access to most of `pkgconf`'s functionality, to allow other tooling such as compilers and IDEs to discover and use libraries configured by pkgconf. ## using `pkgconf` with autotools Implementations of pkg-config, such as pkgconf, are typically used with the PKG_CHECK_MODULES autoconf macro. As far as we know, pkgconf is compatible with all known variations of this macro. pkgconf detects at runtime whether or not it was started as 'pkg-config', and if so, attempts to set program options such that its behaviour is similar. In terms of the autoconf macro, it is possible to specify the PKG_CONFIG environment variable, so that you can test pkgconf without overwriting your pkg-config binary. Some other build systems may also respect the PKG_CONFIG environment variable. To set the environment variable on the bourne shell and clones (i.e. bash), you can run: $ export PKG_CONFIG=/usr/bin/pkgconf ## comparison of `pkgconf` and `pkg-config` dependency resolvers pkgconf builds an acyclic directed dependency graph. This allows for the user to more conservatively link their binaries -- which may be helpful in some environments, such as when prelink(1) is being used. As a result of building a directed dependency graph designed for the specific problem domain provided by the user, more accurate dependencies can be determined. Current release versions of pkg-config, on the other hand, build a database of all known pkg-config files on the system before attempting to resolve dependencies, which is a considerably slower and less efficient design. Efforts have been made recently to improve this behaviour. As of the 1.1 series, pkgconf also fully implements support for `Provides` rules, while pkg-config does not. pkg-config only provides the `--print-provides` functionality as a stub. There are other intentional implementation differences in pkgconf's dependency resolver verses pkg-config's dependency resolver in terms of completeness and correctness, such as, for example, how `Conflicts` rules are processed. ## linker flags optimization As previously mentioned, pkgconf makes optimizations to the linker flags in both the case of static and shared linking in order to avoid overlinking binaries and also simplifies the `CFLAGS` and `LIBS` output of the pkgconf tool for improved readability. This functionality depends on the pkg-config module properly declaring it's dependency tree instead of using `Libs` and `Cflags` fields to directly link against other modules which have pkg-config metadata files installed. Doing so is discouraged by the [freedesktop tutorial][fd-tut] anyway. [fd-tut]: http://people.freedesktop.org/~dbn/pkg-config-guide.html ## compatibility with pkg-config We do not provide bug-level compatibility with pkg-config. What that means is, if you feel that there is a legitimate regression versus pkg-config, do let us know, but also make sure that the .pc files are valid and follow the rules of the [pkg-config tutorial][fd-tut], as most likely fixing them to follow the specified rules will solve the problem. ## compiling `pkgconf` and `libpkgconf` on UNIX pkgconf is basically compiled the same way any other autotools-based project is compiled: $ ./configure $ make $ sudo make install If you are installing pkgconf into a custom prefix, such as `/opt/pkgconf`, you will likely want to define the default system includedir and libdir for your toolchain. To do this, use the `--with-system-includedir` and `--with-system-libdir` configure flags like so: $ ./configure \ --prefix=/opt/pkgconf \ --with-system-libdir=/lib:/usr/lib \ --with-system-includedir=/usr/include $ make $ sudo make install ## compiling `pkgconf` and `libpkgconf` with CMake (usually for Windows) pkgconf is compiled using CMake on Windows. In theory, you could also use CMake to build on UNIX, but this is not recommended at this time as it pkgconf is typically built much earlier than CMake. $ mkdir build $ cd build $ cmake .. $ make $ sudo make install There are a few defines such as SYSTEM_LIBDIR, PKGCONFIGDIR and SYSTEM_INCLUDEDIR. However, on Windows, the default PKGCONFIGDIR value is usually overridden at runtime based on path relocation. ## pkg-config symlink If you want pkgconf to be used when you invoke `pkg-config`, you should install a symlink for this. We do not do this for you, as we believe it is better for vendors to make this determination themselves. $ ln -sf pkgconf /usr/bin/pkg-config ## release tarballs Release tarballs are available at . Please do not use the github tarballs as they are not pristine (instead generated by github everytime a download occurs). ## reporting bugs See . Also you can contact us at `#pkgconf` at `irc.freenode.net`. usr/lib/dracut/modules.d/80lvmmerge/README.md000064400000004055152534462110014553 0ustar00# lvmmerge - dracut module ## Preparation - ensure that the lvm thin pool is big enough - backup any (most likely /boot and /boot/efi) device with: ``` # mkdir /restoredev # dev=; umount $dev; dd if="$dev" of=/restoredev/$(systemd-escape -p "$dev"); mount $dev ``` - backup the MBR ``` # dev=; dd if="$dev" of=/restoredev/$(systemd-escape -p "$dev") bs=446 count=1 # ls -l /dev/disk/by-path/virtio-pci-0000\:00\:07.0 lrwxrwxrwx. 1 root root 9 Jul 24 04:27 /dev/disk/by-path/virtio-pci-0000:00:07.0 -> ../../vda ``` - backup some partitions ``` # dev=/dev/disk/by-path/virtio-pci-0000:00:07.0 # dd if="$dev" of=/restoredev/$(systemd-escape -p "$dev") bs=446 count=1 # umount /boot/efi # dev=/dev/disk/by-partuuid/687177a8-86b3-4e37-a328-91d20db9563c # dd if="$dev" of=/restoredev/$(systemd-escape -p "$dev") # umount /boot # dev=/dev/disk/by-partuuid/4fdf99e9-4f28-4207-a26f-c76546824eaf # dd if="$dev" of=/restoredev/$(systemd-escape -p "$dev") ``` Final /restoredev ``` # ls -al /restoredev/ total 1253380 drwx------. 2 root root 250 Jul 24 04:38 . dr-xr-xr-x. 18 root root 242 Jul 24 04:32 .. -rw-------. 1 root root 209715200 Jul 24 04:34 dev-disk-by\x2dpartuuid-4fdf99e9\x2d4f28\x2d4207\x2da26f\x2dc76546824eaf -rw-------. 1 root root 1073741824 Jul 24 04:34 dev-disk-by\x2dpartuuid-687177a8\x2d86b3\x2d4e37\x2da328\x2d91d20db9563c -rw-------. 1 root root 446 Jul 24 04:38 dev-disk-by\x2dpath-virtio\x2dpci\x2d0000:00:07.0 ``` - make a thin snapshot ``` # lvm lvcreate -pr -s rhel/root --name reset ``` - mark the snapshot with a tag ``` # lvm lvchange --addtag reset rhel/reset ``` - remove /restoredev ``` # rm -fr /restoredev ``` ## Operation If a boot entry with ```rd.lvm.mergetags=``` is selected and there are LVs with `````` dracut will - make a copy of the snapshot - merge it back to the original - rename the copy back to the name of the snapshot - if /restordev appears in the root, then it will restore the images found in that directory. This can be used to restore /boot and /boot/efi and the MBR of the boot device