debian/0000755000000000000000000000000012153401210007153 5ustar debian/source/0000755000000000000000000000000012153401210010453 5ustar debian/source/format0000644000000000000000000000001412153401210011661 0ustar 3.0 (quilt) debian/changelog0000644000000000000000000000022612153401210011025 0ustar apngdis (2.5-1) unstable; urgency=low * Initial release (Closes: #663416). -- Jari Aalto Sat, 01 Jun 2013 08:15:35 +0300 debian/watch0000644000000000000000000000016212153401210010203 0ustar version=3 opts="filenamemangle=s/-src//" \ http://sf.net/apngdis/apngdis-(.+)-src\.zip debian debian/repack.sh debian/control0000644000000000000000000000162112153401210010556 0ustar Source: apngdis Section: graphics Priority: optional Maintainer: Jari Aalto Build-Depends: debhelper (>= 9), libz-dev Standards-Version: 3.9.4 Homepage: https://sourceforge.net/projects/apngdis Vcs-Git: git://anonscm.debian.org/collab-maint/apngdis.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/apngdis.git;a=summary Package: apngdis Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: apng2gif Description: deconstruct APNG file into a sequence of PNG frames Extract invividual PNG files from animated PNG. . 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/clean0000644000000000000000000000002712153401210010157 0ustar apngdis *.o debian/*.1 debian/repack.sh0000755000000000000000000001622712153401210010767 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/rules0000755000000000000000000000072112153401210010233 0ustar #!/usr/bin/make -f PACKAGE = apngdis BIN = $(PACKAGE) CC ?= gcc LIBS = -lz 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/apngdis.1.pod0000644000000000000000000000545512153401210011454 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 apngdis - deconstruct APNG file into a sequence of PNG frames =head1 SYNOPSIS apng2gif filename.png =head1 DESCRIPTION Extract invividual PNG files from animated PNG. After editing PNG frames in programs like Photoshop or GIMP, you can assemle files back into APNG using apngasm(1). Crrectly handles all blend/dispose combinations, in all color modes/depths. Some optimizations used in apngasm(1) 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 None. =head1 ENVIRONMENT None. =head1 FILES None. =head1 STANDARDS APNG homepage http://animatedpng.com =head1 SEE ALSO apngasm(1) 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/compat0000644000000000000000000000000212153401210010351 0ustar 9 debian/copyright0000644000000000000000000000437512153401210011117 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0 Upstream-Name: apngdis Upstream-Contact: Max Stepi Source: https://sourceforge.net/projects/apngdis X-Upstream-Vcs: X-Upstream-Bugs: https://sourceforge.net/p/apng/discussion/ Comment: This project does not have its own bug tracker. Use apng project support tracker. Files: * Copyright: 2010-2012 Max Stepi License: zlib-libpng Files: debian/* Copyright: 2013 Jari Aalto License: GPL-2+ License: zlib-libpng [From file apngdis.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.mk0000644000000000000000000000345312153401210011051 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/install0000644000000000000000000000002112153401210010535 0ustar apngdis /usr/bin debian/manpages0000644000000000000000000000001312153401210010663 0ustar debian/*.1