debian/0000755000000000000000000000000012153344553007173 5ustar debian/source/0000755000000000000000000000000012153344553010473 5ustar debian/source/format0000644000000000000000000000001412153344553011701 0ustar 3.0 (quilt) debian/changelog0000644000000000000000000000037012153344553011045 0ustar apngopt (1.2-1) unstable; urgency=low * Initial release (Closes: #663414). * Use hardened build flags. http://wiki.debian.org/ReleaseGoals/SecurityHardeningBuildFlags -- Jari Aalto Sat, 01 Jun 2013 05:57:49 +0300 debian/watch0000644000000000000000000000015712153344553010227 0ustar version=3 opts="filenamemangle=s/-src//" \ http://sf.net/apng/apngopt-(.+)-src\.zip debian debian/repack.sh debian/control0000644000000000000000000000155712153344553010606 0ustar Source: apngopt Section: graphics Priority: optional Maintainer: Jari Aalto Build-Depends: debhelper (>= 9), libz-dev Standards-Version: 3.9.4 Homepage: http://apng.sourceforge.net Vcs-Git: git://anonscm.debian.org/collab-maint/apngopt.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/apngopt.git;a=summary Package: apngopt Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: apng2gif Description: optimize APNG animated images Optimize APNG files by reducing their file size. . The Animated Portable Network Graphics (APNG) file format is an extension to the Portable Network Graphics (PNG) specification. It allows for animated PNG files that work similarly to animated GIF files, while retaining backward compatibility with non-animated PNG files and adding support for 8-bit transparency and 24-bit images. debian/clean0000644000000000000000000000002712153344553010177 0ustar apngopt *.o debian/*.1 debian/repack.sh0000755000000000000000000001622712153344553011007 0ustar #!/bin/sh # # Copyright # # Copyright (C) 2008-2010 Jari Aalto # # License # # 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, see . set -e set -u DIR="" Initialize () { # Check depends [ -x /bin/mktemp ] || Die "[ERROR]: mktemp (pkg: coreutils) not installed." [ -x /bin/bzip2 ] || Die "[ERROR]: bzip2 (pkg: bzip2) not installed." [ -x /bin/gzip ] || Die "[ERROR]: gzip (pkg: gzip) not installed." [ -x /bin/tar ] || Die "[ERROR]: tar (pkg: tar) not installed." } InitializeZip () { [ -x /usr/bin/unzip ] || Die "[ERROR]: unzip (pkg: unzip) not installed." } InitializeRar () { [ -x /usr/bin/unrar ] || Die "[ERROR]: unrar (pkg: unrar) not installed." } Help () { echo " SYNOPSIS repack.sh [--upstream-source] [PACKAGE] DESCRIPTION Repackage upstream source. The command line arguments are according to to uscan(1) order. The PACKAGE argument is optional. Can also repack *.zip and *.rar files. OPTIONS --upstream-source Option is ignored. It is passed from uscan(1) when debian/watch file is read. EXAMPLES To manually repack original upstream source foo-1.1.tar.gz to bar-1.10.orig.tar.gz: repack.sh 1.10 foo-1.1.tar.gz bar Save this file to debian/repack.sh and add following line to debian/watch: version=3 http://example.com .*package-(.+).tar.gz debian debian/repack.sh AUTHOR Copyright (C) 2008-2010 Jari Aalto Released under 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." exit 0 } Run () { if [ "${test+test_mode}" = "test_mode" ]; then echo "$@" else [ "${verbose+verbose_mode}" = "verbose_mode" ] && echo "$@" >&2 "$@" fi } Warn () { echo "$*" >&2 } Die () { Warn "$*" exit 1 } AtExit () { if [ "$DIR" ]; then [ -d "$DIR" ] && rm -rf "$DIR" fi } DebianVersion () { # No version conversions yet echo $1 } DebianTar () { local ver=$1 local dver=$2 local file=$3 local pkg=$4 # Convert suffixes file=$(echo $file | sed -e 's,\(tgz\|zip\|rar\)$,tar.gz,' ) # If version is same, use original file if [ "$ver" = "$dver" ]; then if [ "$pkg" ]; then echo $file | sed "s,.*$ver,${pkg}_$ver.orig," else echo $file fi return 0 fi if [ "$pkg" ]; then echo $file | sed -e "s,.*$ver,${pkg}_$dver.orig," else # replace with new version echo $file | sed -e "s,$ver,$dver.orig," fi } Pkg () { local file=$1 if [ -f debian/changelog ]; then dpkg-parsechangelog | awk '/^Source:/ {print $2}' else # package-1.1.tar.gz => package echo $file | sed "s,-[0-9].*,," fi } Version () { local file=$1 local pkg=$(Pkg $file) if [ ! "$pkg" ]; then Die "[ERROR] Internal error. 'pkg' variable not set. Run with debug (-x)" fi echo $file | sed -e "s,\.tar.*,," \ -e "s,\.tgz,," \ -e "s,\.tbz,," \ -e "s,\.tbz2,," \ -e "s,\.zip,," \ -e "s,\.7z,," \ -e "s,\.rar,," \ -e "s,\.lzma,," \ -e "s,\.xz,," \ -e "s,$pkg[-_],," } Cleanup () { [ "$1" ] || return 1 local dir dir=$1 find "$dir" \ \( \ -iname "*.exe" \ -o -name "*.swp" \ -o -name "DEADJOE" \ -o -name "*.[~#]" \ -o -name ".gitignore" \ -o -name ".bzrignore" \ -o -name ".svnignore" \ -o -name ".cvsignore" \ -o -path "*/debian/*" \ -o -path "*/CVS/*" \ -o -path "*/.svn/*" \ -o -path "*/.darcs/*" \ -o -path "*/.bzr/*" \ -o -path "*/.hg/*" \ -o -path "*/.git/*" \ \) \ -print0 | xargs --null --no-run-if-empty rm -rf --verbose # Remove executables find "$dir" -type f -print0 | xargs --null --no-run-if-empty file | awk -F: '$2 ~ /ELF|COFF|LSB exe/ {print $1}' | xargs --no-run-if-empty rm --verbose } Main () { if [ $# -eq 0 ]; then Help fi Initialize case "$1" in --help|-h) Help ;; --*) shift # Ignore uscan(1) argument --upstream-version in $1 ;; esac VER="$1" FILENAME="$2" DIR= if [ ! -f "$FILENAME" ]; then Die "[ERROR] Arg 2. File does not exist: $FILENAME" fi FILE_DIR=$(dirname $FILENAME) FILE=$(basename $FILENAME) PKG=${3:-$(Pkg $FILE)} if [ ! "$PKG" ]; then Die "[ERROR] Internal error. PKG not set. Run with debug (-x)" fi CURVER=$(Version $FILE) if [ ! "$CURVER" ]; then Die "[ERROR] Internal error. CURVER not set. Run with debug (-x)" fi DVER=$(DebianVersion "$VER") DFILE=$(DebianTar "$CURVER" "$DVER" "$FILE" $PKG) # Debian Developer's Reference 6.7.8.2 Repackaged upstream source REPACK_DIR="$PKG-$DVER.orig" DIR=$(mktemp -d ./tmp.repack.XXXXXX) if [ ! "$DIR" ]; then Die "[INTERNAL ERROR] mktemp(1) failed. Debug with 'sh -x PROGRAM'" fi echo "Repacking $FILENAME as $PKG-$DVER" # Create an extra directory to cope with tarballs that # do not have root/ directory UP_BASE="$DIR/unpack" Run mkdir "$UP_BASE" curdir=$(pwd) case "$FILENAME" in *.gz | *.bz2 ) Run tar -C "$UP_BASE" -xf "$FILENAME" ;; *.zip) InitializeZip adir=$(dirname $FILENAME) name=$(basename $FILENAME) Run cd "$UP_BASE" Run unzip "$curdir/$adir/$name" || return 1 cd $curdir ;; *.rar) InitializeRar adir=$(dirname $FILENAME) name=$(basename $FILENAME) Run cd "$UP_BASE" Run unrar x "$curdir/$adir/$name" || return 1 cd $curdir ;; *) Die "Unknonw file format: $FILENAME" ;; esac if [ $(ls -1 "$UP_BASE" | wc -l) -eq 1 ]; then # Tarball does contain a root directory UP_BASE="$UP_BASE/$(ls -1 "$UP_BASE")" fi if [ ! "$UP_BASE" ]; then Die "[INTERNAL ERROR] UP_BASE not set" fi Cleanup "$UP_BASE" # Repack Run mv "$UP_BASE" "$DIR/$REPACK_DIR" # Don't use pipes. Errors are not handled well with them. Run tar -C "$DIR" -cf "$DIR/repacked.tar" "$REPACK_DIR" # The .orig file must use gzip compression tar="$DIR/repacked.tar" case "$DFILE" in *.bz2) DFILE=$(echo $DFILE | sed "s/.bz2/.gz/") ;; *.gz) ;; *.zip) DFILE=$(echo $DFILE | sed "s/.zip/.gz/") ;; *.rar) DFILE=$(echo $DFILE | sed "s/.rar/.gz/") ;; *) Die "Unknown *.suffix in $DFILE" ;; esac suffix=".gz" Run gzip --best "$tar" if [ -f "$DFILE" ]; then echo "Warning, overwriting $DFILE" fi Run mv "$tar$suffix" "$DFILE" echo "Done $DFILE" } trap AtExit QUIT INT EXIT Main "$@" # End of file debian/rules0000755000000000000000000000070212153344553010252 0ustar #!/usr/bin/make -f PACKAGE = apngopt BIN = $(PACKAGE) CC ?= gcc export DEB_BUILD_MAINT_OPTIONS = hardening=+all CFLAGS += -Wall -std=c99 LDFLAGS += -Wl,--as-needed include debian/pod2man.mk man: $(MAKE) -C debian -f pod2man.mk PACKAGE=$(PACKAGE) makeman override_dh_auto_build: man $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(PACKAGE).c -o $(BIN) -lz override_dh_installchangelogs: dh_installchangelogs readme.txt %: dh $@ # End of file debian/compat0000644000000000000000000000000212153344553010371 0ustar 9 debian/apngopt.1.pod0000644000000000000000000000456512153344553011520 0ustar # Copyright # # Copyright (C) 2012 Jari Aalto # # License # # 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, see . # # Description # # To learn what TOP LEVEL sections to use in manual pages, # see POSIX/Susv standard and "Utility Description Defaults" at # http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap01.html#tag_01_11 # # This is manual page in Perl POD format. Read more at # http://perldoc.perl.org/perlpod.html or run command: # # perldoc perlpod | less # # To check the syntax: # # podchecker *.pod # # Create manual page with command: # # pod2man PAGE.N.pod > PAGE.N =pod =head1 NAME apngopt - optimize animated PNG image files =head1 SYNOPSIS apngopt [] =head1 DESCRIPTION After converting impage to APNG with e.g. gif2apng(1), the files size can further be reduced with this utility. The Animated Portable Network Graphics (APNG) file format is an extension to the Portable Network Graphics (PNG) specification. It allows for animated PNG files that work similarly to animated GIF files, while retaining backward compatibility with non-animated PNG files and adding support for 8-bit transparency and 24-bit images. =head1 OPTIONS None. =head1 ENVIRONMENT None. =head1 FILES None. =head1 STANDARDS APNG homepage http://animatedpng.com =head1 SEE ALSO apngopt(1) apng2gif(1) gif2apng(1) gifsicle(1) gifview(1) optipng(1) pngcheck(1) pngcrush pnginfo(1) pngnq(1) pngquant(1) =head1 AUTHORS Program was written by Max Stepi This manual page was written by Jari Aalto . Released under license GNU GPL version 2 or (at your option) any later version. For more information about license, visit . =cut debian/copyright0000644000000000000000000000431312153344553011127 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0 Upstream-Name: APNG Optimizer Upstream-Contact: Max Stepin Source: https://sourceforge.net/projects/apng/files/APNG_Optimizer X-Upstream-Vcs: X-Upstream-Bugs: https://sourceforge.net/projects/apng/forums/forum/1391817 Files: * Copyright: 2011-2012 Max Stepin License: zlib-libpng Files: debian/* Copyright: 2013 Jari Aalto License: GPL-2+ License: zlib-libpng [From file apngopt.c] . * zlib license * ------------ * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. * */ License: GPL-2+ This package 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 package 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, see . . On Debian systems, the complete text of the GNU General Public License can be found in "/usr/share/common-licenses/GPL-2". debian/pod2man.mk0000644000000000000000000000345312153344553011071 0ustar # pod2man.mk -- Makefile portion to convert *.pod files to manual pages # # Copyright information # # Copyright (C) 2008-2010 Jari Aalto # # License # # 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, see . # # Description # # Convert *.pod files to manual pages. Add this to Makefile: # # PACKAGE = package # # man: # make -f pod2man.mk PACKAGE=$(PACKAGE) makeman # # build: man ifneq (,) This makefile requires GNU Make. endif # This variable *must* be set when called PACKAGE ?= package # Optional variables to set MANSECT ?= 1 PODCENTER ?= User Commands PODDATE ?= $$(date "+%Y-%m-%d") # Directories MANSRC ?= MANDEST ?= $(MANSRC) MANPOD ?= $(MANSRC)$(PACKAGE).$(MANSECT).pod MANPAGE ?= $(MANDEST)$(PACKAGE).$(MANSECT) POD2MAN ?= pod2man POD2MAN_FLAGS ?= --utf8 makeman: $(MANPAGE) $(MANPAGE): $(MANPOD) # make target - create manual page from a *.pod page podchecker $(MANPOD) LC_ALL= LANG=C $(POD2MAN) $(POD2MAN_FLAGS) \ --center="$(PODCENTER)" \ --date="$(PODDATE)" \ --name="$(PACKAGE)" \ --section="$(MANSECT)" \ $(MANPOD) \ | sed 's,[Pp]erl v[0-9.]\+,$(PACKAGE),' \ > $(MANPAGE) && \ rm -f pod*.tmp # End of of Makefile part debian/install0000644000000000000000000000002112153344553010555 0ustar apngopt /usr/bin debian/manpages0000644000000000000000000000001312153344553010703 0ustar debian/*.1