From ceb86b571c1cabf2a0890603b140a1af99912fd9 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Wed, 27 May 2020 14:57:48 +0200 Subject: Cleanup: move man pages to the respective program source directories Signed-off-by: David Oberhollenzer --- doc/Makemodule.am | 3 - doc/gensquashfs.1 | 201 ------------------------------------------------------ doc/rdsquashfs.1 | 99 --------------------------- doc/sqfs2tar.1 | 93 ------------------------- doc/sqfsdiff.1 | 72 ------------------- doc/tar2sqfs.1 | 154 ----------------------------------------- 6 files changed, 622 deletions(-) delete mode 100644 doc/gensquashfs.1 delete mode 100644 doc/rdsquashfs.1 delete mode 100644 doc/sqfs2tar.1 delete mode 100644 doc/sqfsdiff.1 delete mode 100644 doc/tar2sqfs.1 (limited to 'doc') diff --git a/doc/Makemodule.am b/doc/Makemodule.am index 9963467..f6870c8 100644 --- a/doc/Makemodule.am +++ b/doc/Makemodule.am @@ -1,4 +1 @@ -dist_man1_MANS += doc/gensquashfs.1 doc/rdsquashfs.1 doc/sqfs2tar.1 -dist_man1_MANS += doc/tar2sqfs.1 doc/sqfsdiff.1 - EXTRA_DIST += doc/format.txt doc/parallelism.txt doc/mainpage.dox diff --git a/doc/gensquashfs.1 b/doc/gensquashfs.1 deleted file mode 100644 index 9ef4ee8..0000000 --- a/doc/gensquashfs.1 +++ /dev/null @@ -1,201 +0,0 @@ -.TH GENSQUASHFS "1" "June 2019" "generate squashfs images" "User Commands" -.SH NAME -gensquashfs \- generate squashfs images -.SH SYNOPSIS -.B gensquashfs -[\fI\,OPTIONS\/\fR] \/\fR -.SH DESCRIPTION -Generate a SquashFS image. -.SH OPTIONS -.TP -\fB\-\-pack\-file\fR, \fB\-F\fR -Use a \fBgen_init_cpio\fR style description file. The file format is specified -below. If \fB\-\-pack\-dir\fR is used, input file paths are relative to the -pack directory, otherwise they are relative to the directory the pack file -is in. -.TP -\fB\-\-pack\-dir\fR, \fB\-D\fR -If \fB\-\-pack\-file\fR is used, this is the root path relative to which to -read files. If no pack file is specified, pack the contents of the given -directory into a SquashFS image. The directory becomes the root of the file -system. -.TP -\fB\-\-compressor\fR, \fB\-c\fR -Select the compressor to use. -Run \fBgensquashfs \-\-help\fR to get a list of all available compressors -and the default selection. -.TP -\fB\-\-comp\-extra\fR, \fB\-X\fR -A comma separated list of extra options for the selected compressor. Specify -\fBhelp\fR to get a list of available options. -.TP -\fB\-\-num\-jobs\fR, \fB\-j\fR -If libsquashfs was compiled with a built in thread pool based, parallel data -compressor, this option can be used to set the number of compressor -threads. If not set, the default is the number of available CPU cores. -.TP -\fB\-\-queue\-backlog\fR, \fB\-Q\fR -Maximum number of data blocks in the thread worker queue before the packer -starts waiting for the block processors to catch up. Higher values result -in higher memory consumption. Defaults to 10 times the number of workers. -.TP -\fB\-\-block\-size\fR, \fB\-b\fR -Block size to use for Squashfs image. -Defaults to 131072. -.TP -\fB\-\-dev\-block\-size\fR, \fB\-B\fR -Device block size to padd the image to. -Defaults to 4096. -.TP -\fB\-\-keep\-time\fR, \fB\-k\fR -When using \fB\-\-pack\-dir\fR only, use the timestamps from the input files -instead of setting defaults on all input paths. The root inode and the -modification time on the SquashFS image itself will still be set to defaults. -.TP -\fB\-\-one\-file\-system\fR, \fB\-o\fR -When using \fB\-\-pack\-dir\fR only, stay in the local filesystem and do not -cross mount points. -.TP -\fB\-\-defaults\fR, \fB\-d\fR -A comma separated list of default values for -implicitly created directories. -The following values can be set: -.TS -tab(;) allbox; -l l -l l -l l -l l -l l -rd. -\fBOption\fR;\fBDefault\fR -uid=;0 -gid=;0 -mode=;0755 -mtime=;\fB$SOURCE\_DATE\_EPOCH\fR if set, 0 otherwise -.TE -.TP -.TP -\fB\-\-set\-uid\fR, \fB\-u\fR -Force the owners user ID for ALL inodes to this value, no matter what the pack -file or directory entries actually specify. -.TP -\fB\-\-set\-gid\fR, \fB\-g\fR -Force the owners group ID for ALL inodes to this value, no matter what the pack -file or directory entries actually specify. -.TP -\fB\-\-all\-root\fR -A short hand for `\-\-set\-uid 0 \-\-set\-gid 0`. -.TP -\fB\-\-selinux\fR, \fB\-s\fR -If built with SELinux support, use the given SELinux label file to add context -labels to the elements packed into the SquashFS image. -.TP -\fB\-\-exportable\fR, \fB\-e\fR -Generate an export table for NFS support. -.TP -\fB\-\-no\-tail\-packing\fR, \fB\-T\fR -Do not perform tail end packing on files that are larger than the specified -block size. -.TP -\fB\-\-force\fR, \fB\-f\fR -Overwrite the output file if it exists. -.TP -\fB\-\-quiet\fR, \fB\-q\fR -Do not print out progress reports. -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH INPUT FILE FORMAT -The input file contains a simple, newline separated list that describe the -files to be included in the squashfs image: -.PP -.in +4n -.nf -# a comment -file [] -dir -nod -slink -link -pipe -sock -.fi -.in - -.TS -tab(;) allbox; -l l -l l -l l -l l -l l -l l -l l -l l -l l -rd. -;T{ -Absolute path of the entry in the image. Can be put in quotes -if some components contain spaces. -T} -;T{ -Optional location of the input file. Can be specified relative to either the -description file or the pack directory. If omitted, the image path is used -as a relative path. -T} -;Symlink or hardlink target. -;Mode/permissions of the entry. -;Numeric user id. -;Numeric group id. -;Device type (b=block, c=character). -;Major number of a device special file. -;Minor number of a device special file. -.TE - -.PP -Example: -.PP -.in +4n -.nf -# A simple squashfs image -dir /dev 0755 0 0 -nod /dev/console 0600 0 0 c 5 1 -dir /root 0700 0 0 -dir /sbin 0755 0 0 - -# Add a file. Input is relative to pack dir or listing path -file /sbin/init 0755 0 0 ../init/sbin/init - -# Read from ./bin/bash relative to pack dir or listing path -# /bin is created implicitly with default attributes. -file /bin/bash 0755 0 0 - -# file name with a space in it and a "special" name -file "/opt/my app/\\"special\\"/data" 0600 0 0 -.fi -.in -.SH ENVIRONMENT -If the command line switch \fB\-\-defaults\fR is not used or no default mtime -is specified, the value of the environment variable \fBSOURCE\_DATE\_EPOCH\fR -is used for all file and filesystem timestamps. - -If \fBSOURCE\_DATE\_EPOCH\fR is not set, not a parsable number or it is out of -range, the timestamps default to 0. - -Environment variables are only used if no explicit command line switches -are set. Explicit command line switches are always preferred over the -environment variables. -.SH SEE ALSO -rdsquashfs(1), tar2sqfs(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/rdsquashfs.1 b/doc/rdsquashfs.1 deleted file mode 100644 index a5e1d77..0000000 --- a/doc/rdsquashfs.1 +++ /dev/null @@ -1,99 +0,0 @@ -.TH RDSQUASHFS "1" "May 2019" "inspect SquashFS filesystems" "User Commands" -.SH NAME -rdsquashfs \- tool to examine or uncompress SquashFS filesystems -.SH SYNOPSIS -.B rdsquashfs -[\fI\,OPTIONS\/\fR] \fI\,\/\fR -.SH DESCRIPTION -View or extract the contents of a squashfs image. -.PP -The following options can be used to specify what operation to perform. One -of those has to be present: -.TP -\fB\-\-list\fR, \fB\-l\fR -Produce a directory listing similar to \fBls \-l\fR for a given path in -the SquashFS image. -.TP -\fB\-\-cat\fR, \fB\-c\fR -If the specified path is a regular file in the image, extract it and dump -its contents to stdout. -.TP -\fB\-\-xattr\fR, \fB\-x\fR -If the inode that the specified path resolves to has extended attributes, dump -them as key value pairs to stdout. -.TP -\fB\-\-unpack\-path\fR, \fB\-u\fR -Unpack the specified sub directory from the image. To unpack everything, -simply specify /. -.TP -\fB\-\-describe\fR, \fB\-d\fR -Produce a file listing from the image compatible with the format consumed by -gensquashfs. -.PP -The following options can be used to control the behaviour of the specified -operation: -.TP -\fB\-\-unpack\-root\fR, \fB\-p\fR -If used with \fB\-\-unpack\-path\fR, this is where the -data is unpacked to. If used with \fB\-\-describe\fR, this -is used as a prefix for the input path of -regular files. -.TP -\fB\-\-no\-dev\fR, \fB\-D\fR -Skip device special files when parsing the filesystem tree. -.TP -\fB\-\-no\-sock\fR, \fB\-S\fR -Skip socket files when parsing the filesystem tree. -.TP -\fB\-\-no\-fifo\fR, \fB\-F\fR -Skip named pipes when parsing the filesystem tree. -.TP -\fB\-\-no\-slink\fR, \fB\-L\fR -Skip symbolic links when parsing the filesystem tree. -.TP -\fB\-\-no\-empty\-dir\fR, \fB\-E\fR -Skip empty directories, including ones that are empty after applying -the above rules. -.PP -The following options are specific to unpacking files from a SquashFS image -to disk: -.TP -\fB\-\-no\-sparse\fR, \fB\-Z\fR -Do not create sparse files. Always unpack sparse files by -writing blocks of zeros to disk. -.TP -\fB\-\-set\-xattr\fR, \fB\-X\fR -Set the extended attributes from the SquashFS image. -.TP -\fB\-\-set\-times\fR, \fB\-T\fR -Set the create and modify timestamps of the file to the mtime -from the SquashFS image. -.TP -\fB\-\-chmod\fR, \fB\-C\fR -Change permission flags of unpacked files to -those stored in the SquashFS image. -.TP -\fB\-\-chown\fR, \fB\-O\fR -Change ownership of unpacked files to the -UID/GID set in the SquashFS image. -.TP -\fB\-\-quiet\fR, \fB\-q\fR -Do not print out progress while unpacking. -.PP -Other options: -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH SEE ALSO -gensquashfs(1), sqfs2tar(1), sqfsdiff(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/sqfs2tar.1 b/doc/sqfs2tar.1 deleted file mode 100644 index 0fc69f6..0000000 --- a/doc/sqfs2tar.1 +++ /dev/null @@ -1,93 +0,0 @@ -.TH SQFS2TAR "1" "June 2019" "sqfs2tar" "User Commands" -.SH NAME -sqfs2tar \- turn a SquashFS image into a tar archive -.SH SYNOPSIS -.B sqfs2tar -[\fI\,OPTIONS\/\fR...] \fI\,\/\fR -.SH DESCRIPTION -Quickly and painlessly turn a SquashFS filesystem image into a tar archive -that can then be examined and processed by any tool that can work on tar -archives. The resulting archive is written to stdout. -.PP -Possible options: -.TP -\fB\-\-root\-becomes\fR, \fB\-r\fR -Prefix all paths in the tarball with the given directory name and add an -entry for this directory that receives all meta data (permissions, ownership, -extended attributes, et cetera) of the root inode. - -The special value \fB.\fR can be used since many tar archivers themselves pack -the attributes of the root directory that way and naturally support this. - -If this option is not used, all meta data from the root inode IS LOST! -.TP -\fB\-\-subdir\fR, \fB\-d\fR -Unpack the given sub directory instead of the filesystem root. Can be specified -more than once to select multiple directories. If only one is specified, it -becomes the new root of the archive filesystem tree. -.TP -\fB\-\-keep\-as\-dir\fR, \fB\-k\fR -If \fB\-\-subdir\fR is used only once, don't make the subdir the archive root, -instead keep it as prefix for all unpacked files. Using \fB\-\-subdir\fR more -than once implies \fB\-\-keep\-as\-dir\fR. -.TP -\fB\-\-no\-xattr\fR, \fB\-X\fR -Discard extended attributes from the SquashFS image. The default behavior is -to copy all xattrs attached to SquashFS inodes into the resulting tar archive. -.TP -\fB\-\-no\-hard\-links\fR, \fB\-L\fR -Normally, sqfs2tar runs hard link detection and generates hard links for -entries that refer to the same inode. If this flag is set, hard link -detection is not performed and duplicate data records are generated -instead. -.TP -\fB\-\-no\-skip\fR, \fB\-s\fR -Abort if a file cannot be stored in a tar archive. For instance, the tar format -does not support socket files, but SquashFS does. The default behaviour of -\fBsqfs2tar\fR is to emit a warning to stderr and skip the entry. If this flag -is set, processing is aborted and \fBsqfs2tar\fR exits with an error status. -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH COMPATIBILITY -The output format is pre-POSIX ustar using GNU extensions where necessary. -Experimentation determined that this is most widely supported by activeley -used tar implementations (besides GNU tar), even more than the newer POSIX -format with PAX extensions. - -If any file or directory is encountered that cannot be converted, it is -skipped and a warning is written to stderr. Unless the \fB\-\-no\-skip\fR -option is set, which aborts processing if a file cannot be converted. - -This mainly affects socket files which are supported by SquashFS but not by -POSIX tar, GNU tar or PAX. - -Since the tar format contains a sequence of files with absolute names, it has -no direct concept of a tree or an unnamed root node. Consequently, meta data -from the SquashFS root inode is lost, unless the \fB\-\-root\-becomes\fR option -is used. -.SH EXAMPLES -Turn a SquashFS image into a tar archive: -.IP -sqfs2tar rootfs.sqfs > rootfs.tar -.TP -Turn a SquashFS image into a gzip'ed tar archive: -.IP -sqfs2tar rootfs.sqfs | gzip > rootfs.tar.gz -.TP -Turn a SquashFS image into an LZMA2 compressed tar archive: -.IP -sqfs2tar rootfs.sqfs | xz > rootfs.tar.xz -.SH SEE ALSO -rdsquashfs(1), tar2sqfs(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/sqfsdiff.1 b/doc/sqfsdiff.1 deleted file mode 100644 index c0ee550..0000000 --- a/doc/sqfsdiff.1 +++ /dev/null @@ -1,72 +0,0 @@ -.TH SQFSDIFF "1" "August 2019" "sqfsdiff" "User Commands" -.SH NAME -sqfsdiff \- compare two squashfs images by contents and metadata -.SH SYNOPSIS -.B sqfsdiff -[\fI\,OPTIONS\/\fR...] \-\-old \fI\,\fR \-\-new \fI\,\/\fR -.SH DESCRIPTION -Compare two squashfs images. In contrast to doing a direct diff of the -images, this actually parses the filesystems and generates a more -meaningful difference report. -.PP -If only contents are compared, any differences in packed file layout, -ordering, compression, inode meta data and so on is ignored and the two -images are considered equal if each directory contains the same entries, -symlink with the same paths have the same targets, device nodes the same -device number and files the same size and contents. -.PP -A report of any difference is printed to stdout. The exit status is similar -that of diff(1): 0 means equal, 1 means different, 2 means problem. -.PP -Possible options: -.TP -\fB\-\-old\fR, \fB\-a\fR -Specify the first filesystem image or source directory, relativ to which the -changes are evaluated. -.TP -\fB\-\-new\fR, \fB\-b\fR -Specify the second filesystem image to source directory to compare to the -first one. -.TP -\fB\-\-no\-contents\fR, \fB\-C\fR -Do not compare file contents. -.TP -\fB\-\-no\-owner\fR, \fB\-O\fR -Do not compare file owners. -.TP -\fB\-\-no\-permissions\fR, \fB\-P\fR -Do not compare permission bits. -.TP -\fB\-\-timestamps\fR, \fB\-T\fR -Compare file timestamps. -.TP -\fB\-\-inode\-num\fR, \fB\-I\fR -Compare inode numbers of all files. -.TP -\fB\-\-super\fR, \fB\-S\fR -Also compare meta data in super blocks. -.TP -\fB\-\-extract\fR, \fB\-e\fR -Extract files that exist in both images but have different contents to the -specified directory. Contents of the first image end up in a sub directory -named \fBold\fR and the contents of the second image in a sub directory -named \fBnew\fR. -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH EXIT STATUS -The exit status is similar that of diff(1): 0 means equal, 1 means different, -2 means problem. -.SH SEE ALSO -rdsquashfs(1), sqfs2tar(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer et al -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/tar2sqfs.1 b/doc/tar2sqfs.1 deleted file mode 100644 index da344ec..0000000 --- a/doc/tar2sqfs.1 +++ /dev/null @@ -1,154 +0,0 @@ -.TH TAR2SQFS "1" "June 2019" "tar2sqfs" "User Commands" -.SH NAME -tar2sqfs \- create a SquashFS image from a tar archive -.SH SYNOPSIS -.B tar2sqfs -[\fI\,OPTIONS\/\fR...] \fI\,\/\fR -.SH DESCRIPTION -Quickly and painlessly turn a tar ball into a SquashFS filesystem image. -.PP -Possible options: -.TP -\fB\-\-root\-becomes\fR, \fB\-r\fR -If set, only pack entries that are underneath the specified directory. The -prefix is stripped and the meta data for the directory itself is copied to the -root inode (i.e. the ownership, permissions, extended attributes, -modification time). - -If this option is not set, tar2sqfs implicitly treats \fB./\fR or absolute -paths this way, i.e. if the archive contains an entry for \fB./\fR, it becomes -the root node and the prefix is stripped from all paths (and similar for -absolute paths and \fB/\fR). -.TP -\fB\-\-compressor\fR, \fB\-c\fR -Select the compressor to use. -Run \fBtar2sqfs \-\-help\fR to get a list of all available compressors -and the default selection. -.TP -\fB\-\-comp\-extra\fR, \fB\-X\fR -A comma separated list of extra options for the selected compressor. Specify -\fBhelp\fR to get a list of available options. -.TP -\fB\-\-num\-jobs\fR, \fB\-j\fR -If libsquashfs was compiled with a thread pool based, parallel data -compressor, this option can be used to set the number of compressor -threads. If not set, the default is the number of available CPU cores. -.TP -\fB\-\-queue\-backlog\fR, \fB\-Q\fR -Maximum number of data blocks in the thread worker queue before the packer -starts waiting for the block processors to catch up. Higher values result -in higher memory consumption. Defaults to 10 times the number of workers. -.TP -\fB\-\-block\-size\fR, \fB\-b\fR -Block size to use for SquashFS image. -Defaults to 131072. -.TP -\fB\-\-dev\-block\-size\fR, \fB\-B\fR -Device block size to padd the image to. -Defaults to 4096. -.TP -\fB\-\-defaults\fR, \fB\-d\fR -A comma separated list of default values for -implicitly created directories. -The following values can be set: -.TS -tab(;) allbox; -l l -l l -l l -l l -l l -rd. -\fBOption\fR;\fBDefault\fR -uid=;0 -gid=;0 -mode=;0755 -mtime=;\fB$SOURCE\_DATE\_EPOCH\fR if set, 0 otherwise -.TE -.TP -.TP -\fB\-\-no\-keep\-time\fR, \fB\-k\fR -Replace the time stamps from the tar archive with default time stamps for all -entries. - -The default behavior is to preserve the time stamps from the archive to the -extent possible (SquashFS has second resolution and 32 bit time stamps; tar can -use extensions to specify much larger timestamps with arbitrary precision). The -root inode (unless \fB\-\-root\-becomes\fR is used) and the modification time on -the SquashFS image itself will still be set to defaults. -.TP -\fB\-\-no\-xattr\fR, \fB\-x\fR -Do not copy extended attributes from archive. Default behaviour is to copy all -extended attributes and skip the ones that cannot be encoded in SquashFS. -.TP -\fB\-\-no\-skip\fR, \fB\-s\fR -Abort if a tar record cannot be read instead of skipping it. -.TP -\fB\-\-exportable\fR, \fB\-e\fR -Generate an export table for NFS support. -.TP -\fB\-\-no\-tail\-packing\fR, \fB\-T\fR -Do not perform tail end packing on files that are larger than the -specified block size. -.TP -\fB\-\-force\fR, \fB\-f\fR -Overwrite the output file if it exists. -.TP -\fB\-\-quiet\fR, \fB\-q\fR -Do not print out progress reports. -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH COMPATIBILITY -Currently the program can process v7 format, pre-POSIX ustar, POSIX tar and GNU -tar archives. PAX extension headers are also supported. Global PAX headers are -ignored. - -The support for GNU tar is limited to commonly used subset (i.e. some legacy -extensions that GNU tar itself no longer generates are not supported; neither -are mutli volume archives). - -Extended attributes are supported through the SCHILY.xattr PAX extension -(favoured by GNU tar and star) or through the LIBARCHIVE.xattr PAX extension. - -If any unsupported section or extended attribute key is encountered in an -archive, a warning message is written to stderr. If the \fB\-\-no\-skip\fR -option is set, processing aborts. By default, unknown sections and unsupported -extended attributes are simply skipped after issuing a warning. -.SH ENVIRONMENT -If the command line switch \fB\-\-defaults\fR is not used or no default mtime -is specified, the value of the environment variable \fBSOURCE\_DATE\_EPOCH\fR -is used for all file and filesystem timestamps. - -If \fBSOURCE\_DATE\_EPOCH\fR is not set, not a parsable number or it is out of -range, the timestamps default to 0. - -Environment variables are only used if no explicit command line switches -are set. Explicit command line switches are always preferred over the -environment variables. -.SH EXAMPLES -.TP -Turn an uncompressed tar archive into a SquashFS image: -.IP -tar2sqfs rootfs.sqfs < rootfs.tar -.TP -Turn a gzip'ed tar archive into a SquashFS image: -.IP -zcat rootfs.tar.gz | tar2sqfs rootfs.sqfs -.TP -Turn an LZMA2 compressed tar archive into a SquashFS image: -.IP -xzcat rootfs.tar.xz | tar2sqfs rootfs.sqfs -.SH SEE ALSO -gensquashfs(1), rdsquashfs(1), sqfs2tar(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. -- cgit v1.2.3