debian/0000755000000000000000000000000012153411107007161 5ustar debian/source/0000755000000000000000000000000012153411107010461 5ustar debian/source/format0000644000000000000000000000001412153411107011667 0ustar 3.0 (quilt) debian/changelog0000644000000000000000000000037012153411107011033 0ustar apngasm (2.7-1) unstable; urgency=low * Initial release (Closes: #663415). * Use hardened build flags. http://wiki.debian.org/ReleaseGoals/SecurityHardeningBuildFlags -- Jari Aalto Sat, 01 Jun 2013 07:37:05 +0300 debian/watch0000644000000000000000000000016212153411107010211 0ustar version=3 opts="filenamemangle=s/-src//" \ http://sf.net/apngasm/apngasm-(.+)-src\.zip debian debian/repack.sh debian/control0000644000000000000000000000167012153411107010570 0ustar Source: apngasm Section: graphics Priority: optional Maintainer: Jari Aalto Build-Depends: debhelper (>= 9), libz-dev, libpng-dev Standards-Version: 3.9.4 Homepage: https://sourceforge.net/projects/apngasm Vcs-Git: git://anonscm.debian.org/collab-maint/apngasm.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/apngasm.git;a=summary Package: apngasm Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: apng2gif Description: assemble APNG animation from PNG/TGA image sequence Toos to create APNG file from individual PNG files with user given delay. . 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/clean0000644000000000000000000000002712153411107010165 0ustar apngasm *.o debian/*.1 debian/repack.sh0000755000000000000000000001622712153411107010775 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/rules0000755000000000000000000000072712153411107010247 0ustar #!/usr/bin/make -f PACKAGE = apngasm BIN = $(PACKAGE) CC ?= gcc LIBS = -lz -lpng 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) $(LIBS) override_dh_installchangelogs: dh_installchangelogs readme.txt %: dh $@ # End of file debian/compat0000644000000000000000000000000212153411107010357 0ustar 9 debian/apngasm.1.pod0000644000000000000000000000677012153411107011464 0ustar # Copyright # # Copyright (C) 2009-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 apngasm - assemble individual PNG files int to animated PNG file. =head1 SYNOPSIS apng2gif [] [options] =head1 DESCRIPTION Assemble individual PNG files into animated PNG file. Some optimizations used in APNG Assembler might re-sort the palette, or change the color type from RGBA and RGB modes to RGB and indexed modes. Those optimizations are only performed when they are lossless, but if you want to avoid changing the palette or colortype, see options to turn them off. 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 =over 4 =item B Keep the original palette and do do not optimize for created APNG. =item B Keep the original color type. =back =head1 EXAMPLES [Example 1] With following files, to have 3/4 seconds delay between the frames: frame01.png frame02.png frame03.png apngasm output.png frame01.png 3 4 You can control individual frame by creating control files, like for C: delay=25/100 [Example 2] The same as above, but the with frame00.png, which is "invisible". Notice the use of option B: frame00.png - invisible frame01.png frame02.png frame03.png apngasm output.png frame00.png 3 4 /f That way APNG supported browsers and image viewers will show frame01-frame02-frame03 animation, while IE and Chrome will display static frame00.png image. [Example 3] This way you'll get 1/10 sec delay: apngasm output.png frame01.png =head1 ENVIRONMENT None. =head1 FILES None. =head1 STANDARDS APNG homepage http://animatedpng.com =head1 SEE ALSO apng2gif(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/copyright0000644000000000000000000000427412153411107011123 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0 Upstream-Name: APNG Assembler Upstream-Contact: Max Stepin Source: https://sourceforge.net/projects/apngasm X-Upstream-Vcs: X-Upstream-Bugs: https://sourceforge.net/projects/apngasm/forums/forum/1151026 Files: * Copyright: 2010-2012 Max Stepin License: zlib-libpng Files: debian/* Copyright: 2013 Jari Aalto License: GPL-2+ License: zlib-libpng [From file apngasm.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.mk0000644000000000000000000000345312153411107011057 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/install0000644000000000000000000000002112153411107010543 0ustar apngasm /usr/bin debian/manpages0000644000000000000000000000001312153411107010671 0ustar debian/*.1