[Xfce4-commits] r26443 - in xarchiver/trunk: . pixmaps src
Giuseppe Torelli
colossus at xfce.org
Fri Dec 7 10:38:04 CET 2007
Author: colossus
Date: 2007-12-07 09:38:04 +0000 (Fri, 07 Dec 2007)
New Revision: 26443
Removed:
xarchiver/trunk/pixmaps/xarchiver-add_button.png
xarchiver/trunk/pixmaps/xarchiver-extract_button.png
Modified:
xarchiver/trunk/INSTALL
xarchiver/trunk/depcomp
xarchiver/trunk/install-sh
xarchiver/trunk/missing
xarchiver/trunk/pixmaps/Makefile.am
xarchiver/trunk/pixmaps/xarchiver-add.png
xarchiver/trunk/pixmaps/xarchiver-extract.png
xarchiver/trunk/src/add_dialog.c
xarchiver/trunk/src/archive.c
xarchiver/trunk/src/archive.h
xarchiver/trunk/src/extract_dialog.c
xarchiver/trunk/src/interface.c
xarchiver/trunk/src/interface.h
xarchiver/trunk/src/main.c
xarchiver/trunk/src/window.c
xarchiver/trunk/src/window.h
Log:
Changed add and extract icons to the latest tango ones.
Deleted add_button.png and extract_button.png.
Show comment options now works for comment in zip archives.
Filenames in zip archives with bad characters like [ and ] are handled properly.
Adding stuff works with drag and drop.
Modified: xarchiver/trunk/INSTALL
===================================================================
--- xarchiver/trunk/INSTALL 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/INSTALL 2007-12-07 09:38:04 UTC (rev 26443)
@@ -1,8 +1,8 @@
Installation Instructions
*************************
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
-Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
@@ -10,7 +10,10 @@
Basic Installation
==================
-These are generic installation instructions.
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@@ -23,9 +26,9 @@
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
+the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
-cache files.)
+cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
@@ -35,20 +38,17 @@
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
+ `./configure' to configure the package for your system.
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
2. Type `make' to compile the package.
@@ -78,7 +78,7 @@
by setting variables in the command line or in the environment. Here
is an example:
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
@@ -87,17 +87,15 @@
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
+own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
Installation Names
==================
@@ -190,12 +188,12 @@
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script). Here is a another example:
+overridden in the site shell script).
- /bin/bash ./configure CONFIG_SHELL=/bin/bash
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
-Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
-configuration-related scripts to be executed by `/bin/bash'.
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
Modified: xarchiver/trunk/depcomp
===================================================================
--- xarchiver/trunk/depcomp 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/depcomp 2007-12-07 09:38:04 UTC (rev 26443)
@@ -1,9 +1,10 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2005-07-09.11
+scriptversion=2006-10-15.18
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
# 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
@@ -91,7 +92,20 @@
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
stat=$?
if test $stat -eq 0; then :
else
@@ -276,6 +290,46 @@
rm -f "$tmpdepfile"
;;
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
@@ -288,13 +342,13 @@
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
- # static library. This mecanism is used in libtool 1.4 series to
+ # static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in in $dir.libs/$base.o.d and
+ # compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
Modified: xarchiver/trunk/install-sh
===================================================================
--- xarchiver/trunk/install-sh 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/install-sh 2007-12-07 09:38:04 UTC (rev 26443)
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2005-05-14.22
+scriptversion=2006-10-14.15
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -39,15 +39,24 @@
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
+# from scratch.
+nl='
+'
+IFS=" "" $nl"
+
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
-# put in absolute paths if you don't have them in your path; or use env. vars.
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
@@ -58,7 +67,13 @@
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
-chmodcmd="$chmodprog 0755"
+posix_glob=
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chmodcmd=$chmodprog
chowncmd=
chgrpcmd=
stripcmd=
@@ -95,7 +110,7 @@
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
-while test -n "$1"; do
+while test $# -ne 0; do
case $1 in
-c) shift
continue;;
@@ -111,9 +126,15 @@
--help) echo "$usage"; exit $?;;
- -m) chmodcmd="$chmodprog $2"
+ -m) mode=$2
shift
shift
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
continue;;
-o) chowncmd="$chownprog $2"
@@ -136,25 +157,33 @@
--version) echo "$0 $scriptversion"; exit $?;;
- *) # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- test -n "$dir_arg$dstarg" && break
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dstarg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dstarg"
- shift # fnord
- fi
- shift # arg
- dstarg=$arg
- done
+ --) shift
break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
esac
done
-if test -z "$1"; then
+if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+fi
+
+if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
@@ -164,6 +193,33 @@
exit 0
fi
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
for src
do
# Protect names starting with `-'.
@@ -173,15 +229,11 @@
if test -n "$dir_arg"; then
dst=$src
- src=
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
- if test -d "$dst"; then
- mkdircmd=:
- chmodcmd=
- else
- mkdircmd=$mkdirprog
- fi
- else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
@@ -208,53 +260,188 @@
echo "$0: $dstarg: Is a directory" >&2
exit 1
fi
- dst=$dst/`basename "$src"`
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
fi
fi
- # This sed command emulates the dirname command.
- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+ obsolete_mkdir_used=false
- # Make sure that the destination directory exists.
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
- # Skip lots of stat calls in the usual case.
- if test ! -d "$dstdir"; then
- defaultIFS='
- '
- IFS="${IFS-$defaultIFS}"
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
- oIFS=$IFS
- # Some sh's can't handle IFS=/ for some reason.
- IFS='%'
- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
- shift
- IFS=$oIFS
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
- pathcomp=
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
- while test $# -ne 0 ; do
- pathcomp=$pathcomp$1
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix=/ ;;
+ -*) prefix=./ ;;
+ *) prefix= ;;
+ esac
+
+ case $posix_glob in
+ '')
+ if (set -f) 2>/dev/null; then
+ posix_glob=true
+ else
+ posix_glob=false
+ fi ;;
+ esac
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob && set -f
+ set fnord $dstdir
shift
- if test ! -d "$pathcomp"; then
- $mkdirprog "$pathcomp"
- # mkdir can fail with a `File exist' error in case several
- # install-sh are creating the directory concurrently. This
- # is OK.
- test -d "$pathcomp" || exit
+ $posix_glob && set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
- pathcomp=$pathcomp/
- done
+ fi
fi
if test -n "$dir_arg"; then
- $doit $mkdircmd "$dst" \
- && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
- dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
@@ -262,10 +449,9 @@
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
- trap '(exit $?); exit' 1 2 13 15
# Copy the file name to the temp name.
- $doit $cpprog "$src" "$dsttmp" &&
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
@@ -276,10 +462,10 @@
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+ && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# Now rename the file to the real destination.
- { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+ { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
|| {
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
@@ -291,11 +477,12 @@
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
- if test -f "$dstdir/$dstfile"; then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
- || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ if test -f "$dst"; then
+ $doit $rmcmd -f "$dst" 2>/dev/null \
+ || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
+ && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
|| {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
else
@@ -304,17 +491,14 @@
} &&
# Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ $doit $mvcmd "$dsttmp" "$dst"
}
- }
- fi || { (exit 1); exit 1; }
+ } || exit 1
+
+ trap '' 0
+ fi
done
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
- (exit 0); exit 0
-}
-
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
Modified: xarchiver/trunk/missing
===================================================================
--- xarchiver/trunk/missing 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/missing 2007-12-07 09:38:04 UTC (rev 26443)
@@ -1,9 +1,9 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2005-06-08.21
+scriptversion=2006-05-10.23
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
@@ -33,6 +33,8 @@
fi
run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
@@ -44,7 +46,7 @@
msg="missing on your system"
-case "$1" in
+case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
@@ -77,6 +79,7 @@
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
@@ -106,7 +109,7 @@
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
-case "$1" in
+case $1 in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
@@ -135,7 +138,7 @@
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
-case "$1" in
+case $1 in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
@@ -164,7 +167,7 @@
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
- case "$f" in
+ case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
@@ -192,8 +195,8 @@
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
@@ -214,25 +217,25 @@
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
- if [ $# -ne 1 ]; then
+ if test $# -ne 1; then
eval LASTARG="\${$#}"
- case "$LASTARG" in
+ case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
- if [ ! -f y.tab.h ]; then
+ if test ! -f y.tab.h; then
echo >y.tab.h
fi
- if [ ! -f y.tab.c ]; then
+ if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
@@ -244,18 +247,18 @@
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
- if [ $# -ne 1 ]; then
+ if test $# -ne 1; then
eval LASTARG="\${$#}"
- case "$LASTARG" in
+ case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
- if [ ! -f lex.yy.c ]; then
+ if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
@@ -267,11 +270,9 @@
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
- fi
- if [ -f "$file" ]; then
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
@@ -289,11 +290,17 @@
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
@@ -317,13 +324,13 @@
fi
firstarg="$1"
if shift; then
- case "$firstarg" in
+ case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
- case "$firstarg" in
+ case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
Modified: xarchiver/trunk/pixmaps/Makefile.am
===================================================================
--- xarchiver/trunk/pixmaps/Makefile.am 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/pixmaps/Makefile.am 2007-12-07 09:38:04 UTC (rev 26443)
@@ -4,8 +4,6 @@
pixmaps_DATA = xarchiver-add.png \
xarchiver-extract.png \
- xarchiver-add_button.png \
- xarchiver-extract_button.png \
xarchiver-behaviour.svg
EXTRA_DIST = $(pixmaps_DATA)
Modified: xarchiver/trunk/pixmaps/xarchiver-add.png
===================================================================
(Binary files differ)
Deleted: xarchiver/trunk/pixmaps/xarchiver-add_button.png
Modified: xarchiver/trunk/pixmaps/xarchiver-extract.png
===================================================================
(Binary files differ)
Deleted: xarchiver/trunk/pixmaps/xarchiver-extract_button.png
Modified: xarchiver/trunk/src/add_dialog.c
===================================================================
--- xarchiver/trunk/src/add_dialog.c 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/add_dialog.c 2007-12-07 09:38:04 UTC (rev 26443)
@@ -319,7 +319,7 @@
GTK_WIDGET_SET_FLAGS (add_dialog->cancel_button, GTK_CAN_DEFAULT);
add_dialog->add_button = gtk_button_new();
- add_dialog->add_image = xa_main_window_find_image("xarchiver-add_button.png", GTK_ICON_SIZE_SMALL_TOOLBAR);
+ add_dialog->add_image = xa_main_window_find_image("xarchiver-add.png", GTK_ICON_SIZE_SMALL_TOOLBAR);
add_dialog->add_hbox = gtk_hbox_new(FALSE, 4);
add_dialog->add_label = gtk_label_new_with_mnemonic(_("_Add"));
@@ -549,42 +549,42 @@
}
done = TRUE;
if (add_dialog->recurse != NULL)
- archive->add_recurse = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON ( add_dialog->recurse ));
+ archive->add_recurse = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON (add_dialog->recurse));
if (add_dialog->add_full_path != NULL)
- archive->full_path = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON ( add_dialog->add_full_path ));
+ archive->full_path = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON (add_dialog->add_full_path));
if (add_dialog->update != NULL)
- archive->update = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON ( add_dialog->update ));
+ archive->update = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON (add_dialog->update));
if (add_dialog->remove_files != NULL)
- archive->remove_files = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON ( add_dialog->remove_files ));
+ archive->remove_files = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON (add_dialog->remove_files));
if (add_dialog->freshen != NULL)
- archive->freshen = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON ( add_dialog->freshen ));
+ archive->freshen = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON (add_dialog->freshen));
if (add_dialog->solid_archive)
- archive->solid_archive = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON ( add_dialog->solid_archive ));
+ archive->solid_archive = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON (add_dialog->solid_archive));
if (add_dialog->compression_scale != NULL)
{
- archive->compression_level = gtk_adjustment_get_value (GTK_ADJUSTMENT ( add_dialog->compression_value ));
- compression_string = g_strdup_printf ( "%d",archive->compression_level );
+ archive->compression_level = gtk_adjustment_get_value (GTK_ADJUSTMENT (add_dialog->compression_value));
+ compression_string = g_strdup_printf ("%d",archive->compression_level);
}
//Set the current dir so to avoid archiving the leading directory inside the archive
- gtk_tree_model_get_iter_first(GTK_TREE_MODEL(add_dialog->file_liststore), &iter);
- gtk_tree_model_get (GTK_TREE_MODEL(add_dialog->file_liststore), &iter, 1, &first_item, -1);
- gchar *current_dir = g_path_get_dirname ( first_item );
- g_free ( first_item );
- chdir ( current_dir );
- g_free ( current_dir );
+ gtk_tree_model_get_iter_first(GTK_TREE_MODEL(add_dialog->file_liststore),&iter);
+ gtk_tree_model_get (GTK_TREE_MODEL(add_dialog->file_liststore),&iter,1,&first_item,-1);
+ gchar *current_dir = g_path_get_dirname (first_item);
+ g_free (first_item);
+ chdir (current_dir);
+ g_free (current_dir);
/* Let's concatenate the files to add */
names = g_string_new ( " " );
archive->status = XA_ARCHIVESTATUS_ADD;
- if ( archive->full_path == 1 && (archive->type == XARCHIVETYPE_TAR || archive->type == XARCHIVETYPE_TAR_BZ2 || archive->type == XARCHIVETYPE_TAR_GZ || archive->type == XARCHIVETYPE_TAR_LZMA) )
+ if (archive->full_path == 1 && (archive->type == XARCHIVETYPE_TAR || archive->type == XARCHIVETYPE_TAR_BZ2 || archive->type == XARCHIVETYPE_TAR_GZ || archive->type == XARCHIVETYPE_TAR_LZMA) )
{
while (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(add_dialog->file_liststore), &iter) )
{
@@ -601,14 +601,14 @@
gtk_list_store_remove (add_dialog->file_liststore, &iter);
}
}
- gtk_widget_set_sensitive ( Stop_button , TRUE);
- gtk_widget_set_sensitive ( check_menu , FALSE);
- gtk_widget_set_sensitive ( close1 , FALSE);
- gtk_widget_set_sensitive ( properties , FALSE);
+ gtk_widget_set_sensitive (Stop_button,TRUE);
+ gtk_widget_set_sensitive (check_menu,FALSE);
+ gtk_widget_set_sensitive (close1,FALSE);
+ gtk_widget_set_sensitive (properties,FALSE);
xa_set_button_state (0,0,0,0,0,0,0,0);
gtk_widget_hide (add_dialog->dialog1);
- command = xa_add_single_files ( archive, names, compression_string);
+ command = xa_add_single_files (archive,names,compression_string);
g_string_free ( names, TRUE);
if (compression_string != NULL)
g_free (compression_string);
Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/archive.c 2007-12-07 09:38:04 UTC (rev 26443)
@@ -89,13 +89,13 @@
if (archive->parse_output)
{
g_io_add_watch (ioc, G_IO_IN|G_IO_PRI|G_IO_ERR|G_IO_HUP|G_IO_NVAL, xa_process_output, archive);
- g_child_watch_add ( archive->child_pid, (GChildWatchFunc)xa_watch_child, archive);
+ g_child_watch_add (archive->child_pid, (GChildWatchFunc)xa_watch_child, archive);
}
- err_ioc = g_io_channel_unix_new ( archive->error_fd );
- g_io_channel_set_encoding (err_ioc, locale , NULL);
- g_io_channel_set_flags ( err_ioc , G_IO_FLAG_NONBLOCK , NULL );
- g_io_add_watch (err_ioc, G_IO_IN|G_IO_PRI|G_IO_ERR|G_IO_HUP|G_IO_NVAL, xa_dump_child_error_messages, archive);
+ err_ioc = g_io_channel_unix_new (archive->error_fd);
+ g_io_channel_set_encoding (err_ioc,locale,NULL);
+ g_io_channel_set_flags (err_ioc,G_IO_FLAG_NONBLOCK,NULL);
+ g_io_add_watch (err_ioc,G_IO_IN|G_IO_PRI|G_IO_ERR|G_IO_HUP|G_IO_NVAL, xa_dump_child_error_messages, archive);
}
static gboolean xa_process_output (GIOChannel *ioc, GIOCondition cond, gpointer data)
Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/archive.h 2007-12-07 09:38:04 UTC (rev 26443)
@@ -42,7 +42,7 @@
XA_ARCHIVESTATUS_IDLE = 0,
XA_ARCHIVESTATUS_EXTRACT,
XA_ARCHIVESTATUS_ADD,
- XA_ARCHIVESTATUS_RELOAD,
+ XA_ARCHIVESTATUS_DELETE,
XA_ARCHIVESTATUS_OPEN,
XA_ARCHIVESTATUS_TEST,
XA_ARCHIVESTATUS_SFX
Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/extract_dialog.c 2007-12-07 09:38:04 UTC (rev 26443)
@@ -250,7 +250,7 @@
GTK_WIDGET_SET_FLAGS (dialog_data->cancel_button, GTK_CAN_DEFAULT);
dialog_data->extract_button = gtk_button_new();
- dialog_data->extract_image = xa_main_window_find_image("xarchiver-extract_button.png", GTK_ICON_SIZE_SMALL_TOOLBAR);
+ dialog_data->extract_image = xa_main_window_find_image("xarchiver-extract.png", GTK_ICON_SIZE_SMALL_TOOLBAR);
dialog_data->extract_hbox = gtk_hbox_new(FALSE, 4);
dialog_data->extract_label = gtk_label_new_with_mnemonic(_("_Extract"));
@@ -809,7 +809,7 @@
_name = g_strconcat (gtk_entry_get_text(GTK_ENTRY(location_entry)),name,NULL);
g_free (name);
name = _name;
- xa_shell_quote_filename (name,names);
+ xa_shell_quote_filename (name,names,archive);
xxx = g_slist_append (xxx,name);
}
g_free (permission);
Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/interface.c 2007-12-07 09:38:04 UTC (rev 26443)
@@ -136,7 +136,7 @@
gtk_container_add (GTK_CONTAINER (menuitem2_menu), addfile);
gtk_widget_add_accelerator (addfile, "activate",accel_group,GDK_c, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
- image2 = xa_main_window_find_image ("xarchiver-add_button.png", GTK_ICON_SIZE_MENU);
+ image2 = xa_main_window_find_image ("xarchiver-add.png", GTK_ICON_SIZE_MENU);
gtk_widget_show (image2);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (addfile), image2);
@@ -146,7 +146,7 @@
gtk_container_add (GTK_CONTAINER (menuitem2_menu), extract_menu);
gtk_widget_add_accelerator (extract_menu, "activate",accel_group,GDK_e, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
- image2 = xa_main_window_find_image ("xarchiver-extract_button.png", GTK_ICON_SIZE_MENU);
+ image2 = xa_main_window_find_image ("xarchiver-extract.png", GTK_ICON_SIZE_MENU);
gtk_widget_show (image2);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (extract_menu), image2);
@@ -683,35 +683,36 @@
return password;
}
-
-GtkWidget *xa_create_comment_window()
+widget_data *xa_create_output_window(gchar *title)
{
- GtkWidget *view_window;
- GtkWidget *scrolledwindow2;
- GtkWidget *textview1;
+ GtkWidget *vbox,*textview,*scrolledwindow;
+ widget_data *data;
- view_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title (GTK_WINDOW (view_window), _("Archive comment window"));
- gtk_window_set_destroy_with_parent (GTK_WINDOW (view_window), TRUE);
- gtk_window_set_type_hint (GTK_WINDOW (view_window), GDK_WINDOW_TYPE_HINT_UTILITY);
- gtk_window_set_position (GTK_WINDOW (view_window), GTK_WIN_POS_CENTER);
- gtk_window_set_default_size(GTK_WINDOW (view_window), 450, 300);
- gtk_window_set_modal ( GTK_WINDOW (view_window),TRUE);
- gtk_window_set_transient_for ( GTK_WINDOW (view_window) , GTK_WINDOW (MainWindow) );
- scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
- g_object_set (G_OBJECT (scrolledwindow2),"hscrollbar-policy", GTK_POLICY_AUTOMATIC,"shadow-type", GTK_SHADOW_IN,"vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL);
- gtk_container_add (GTK_CONTAINER (view_window), scrolledwindow2);
- gtk_widget_show (scrolledwindow2);
+ data = g_new0(widget_data,1);
+ data->dialog1 = gtk_dialog_new_with_buttons (title,
+ GTK_WINDOW (MainWindow), GTK_DIALOG_NO_SEPARATOR,
+ GTK_STOCK_CLOSE,GTK_RESPONSE_CLOSE, NULL);
+ gtk_dialog_set_default_response (GTK_DIALOG (data->dialog1), GTK_RESPONSE_CLOSE);
+ gtk_widget_set_size_request (data->dialog1, 400, 250);
+ vbox = GTK_DIALOG (data->dialog1)->vbox;
- textview1 = gtk_text_view_new ();
- gtk_widget_show (textview1);
- gtk_container_add (GTK_CONTAINER (scrolledwindow2), textview1);
- gtk_container_set_border_width (GTK_CONTAINER (textview1), 5);
- gtk_text_view_set_editable (GTK_TEXT_VIEW (textview1), FALSE);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview1), FALSE);
- viewtextbuf = gtk_text_view_get_buffer ( GTK_TEXT_VIEW (textview1) );
- gtk_text_buffer_get_start_iter (viewtextbuf, &viewenditer);
- return view_window;
+ scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), scrolledwindow, TRUE, TRUE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 4);
+ g_object_set (G_OBJECT (scrolledwindow),"hscrollbar-policy", GTK_POLICY_AUTOMATIC,"shadow-type", GTK_SHADOW_IN,"vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL);
+
+ data->textbuffer = gtk_text_buffer_new (NULL);
+ gtk_text_buffer_create_tag (data->textbuffer, "font","family", "monospace", NULL);
+ gtk_text_buffer_get_iter_at_offset (data->textbuffer, &data->iter, 0);
+
+ textview = gtk_text_view_new_with_buffer (data->textbuffer);
+ g_object_unref (data->textbuffer);
+ gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (textview), FALSE);
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview), FALSE);
+
+ gtk_widget_show_all (data->dialog1);
+ return data;
}
GtkWidget *create_archive_properties_window ()
Modified: xarchiver/trunk/src/interface.h
===================================================================
--- xarchiver/trunk/src/interface.h 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/interface.h 2007-12-07 09:38:04 UTC (rev 26443)
@@ -35,8 +35,6 @@
GtkWidget *progressbar;
GtkWidget *info_label;
GtkWidget *viewport1,*viewport2;
-GtkTextBuffer *viewtextbuf;
-GtkTextIter viewenditer, viewstart, viewend;
GtkWidget *archive_properties_window;
GtkWidget *table1;
GtkWidget *path_label;
@@ -115,16 +113,23 @@
GtkTooltips *pad_tooltip;
GtkWidget *ebox;
+typedef struct
+{
+ GtkWidget *dialog1;
+ GtkTextBuffer *textbuffer;
+ GtkTextIter iter;
+} widget_data;
+
+gchar *password_dialog ();
void set_label (GtkWidget *label,gchar *text);
int xa_progressbar_pulse (gpointer data);
-GtkWidget *xa_create_comment_window();
+widget_data *xa_create_output_window(gchar *);
void xa_create_mainwindow (GtkWidget *MainWindow,gboolean show_location);
GtkWidget *create_archive_properties_window (void);
void xa_handle_navigation_buttons (GtkMenuItem *menuitem, gpointer user_data);
void xa_add_page (XArchive *archive);
void xa_page_has_changed (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data);
void xa_close_page (GtkWidget *widget, gpointer data);
-gchar *password_dialog ();
void xa_set_button_state (gboolean New, gboolean Open,gboolean Close, gboolean add,gboolean extract, gboolean sfx, gboolean test, gboolean info);
#endif
Modified: xarchiver/trunk/src/main.c
===================================================================
--- xarchiver/trunk/src/main.c 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/main.c 2007-12-07 09:38:04 UTC (rev 26443)
@@ -174,15 +174,15 @@
if ( g_file_test ( archive_name,G_FILE_TEST_EXISTS) )
{
- _current_dir = g_path_get_basename ( archive_name );
- xa_shell_quote_filename ( _current_dir, string );
+ _current_dir = g_path_get_basename (archive_name);
+ xa_shell_quote_filename (_current_dir,string,archive_cmd);
g_free (_current_dir);
}
for (x = 1; x< argc; x++)
{
_current_dir = g_path_get_basename ( argv[x] );
- xa_shell_quote_filename ( _current_dir, string );
+ xa_shell_quote_filename (_current_dir,string,archive_cmd);
g_free (_current_dir);
}
Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/window.c 2007-12-07 09:38:04 UTC (rev 26443)
@@ -134,7 +134,7 @@
void xa_archive_operation_finished(XArchive *archive,gboolean error)
{
- if (archive->status == XA_ARCHIVESTATUS_RELOAD)
+ if (archive->status == XA_ARCHIVESTATUS_ADD || archive->status == XA_ARCHIVESTATUS_DELETE)
{
xa_reload_archive_content(archive);
return;
@@ -144,7 +144,7 @@
else
gtk_widget_set_sensitive (comment_menu,FALSE);
- if (archive->has_comment && archive->status == XA_ARCHIVESTATUS_OPEN) // && the button is checked in the pref dialog)
+ if (archive->has_comment && archive->status == XA_ARCHIVESTATUS_OPEN && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs_window->check_show_comment)))
xa_show_archive_comment (NULL, NULL);
if (archive->status == XA_ARCHIVESTATUS_SFX && archive->type == XARCHIVETYPE_RAR)
@@ -276,12 +276,12 @@
return;
}
}
- type = xa_detect_archive_type ( path );
+ type = xa_detect_archive_type (path);
if (type == -1)
{
gchar *utf8_path,*msg;
- utf8_path = g_filename_to_utf8 (path, -1, NULL, NULL, NULL);
+ utf8_path = g_filename_to_utf8 (path,-1,NULL,NULL,NULL);
msg = g_strdup_printf (_("Can't open file \"%s\":"), utf8_path);
response = xa_show_message_dialog (GTK_WINDOW (MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,msg,
_("Archive format is not recognized!"));
@@ -309,30 +309,35 @@
g_free (path);
return;
}
+ /* Detect archive comment, only ZIP and ARJ are supported */
+ if (type == XARCHIVETYPE_ZIP)
+ archive[current_page]->has_comment = xa_detect_archive_comment (XARCHIVETYPE_ZIP,path,archive[current_page]);
+ else if (type == XARCHIVETYPE_ARJ)
+ archive[current_page]->has_comment = xa_detect_archive_comment (XARCHIVETYPE_ARJ,path,archive[current_page]);
archive[current_page]->type = type;
archive[current_page]->path = g_strdup (path);
- archive[current_page]->escaped_path = xa_escape_bad_chars ( archive[current_page]->path , "$\'`\"\\!?* ()&|@#:;" );
+ archive[current_page]->escaped_path = xa_escape_bad_chars (archive[current_page]->path,"$\'`\"\\!?* ()&|@#:;");
archive[current_page]->status = XA_ARCHIVESTATUS_OPEN;
xa_add_page (archive[current_page]);
xa_disable_delete_view_buttons (FALSE);
- gtk_widget_set_sensitive ( view_shell_output1 , TRUE );
+ gtk_widget_set_sensitive (view_shell_output1,TRUE);
g_free (path);
//Does the user open an archive from the command line whose archiver is not installed ?
gchar *ext = NULL;
- if ( archive[current_page]->type == XARCHIVETYPE_RAR )
+ if ( archive[current_page]->type == XARCHIVETYPE_RAR)
ext = "rar";
- else if ( archive[current_page]->type == XARCHIVETYPE_7ZIP )
+ else if (archive[current_page]->type == XARCHIVETYPE_7ZIP)
ext = "7z";
- else if ( archive[current_page]->type == XARCHIVETYPE_ARJ )
+ else if (archive[current_page]->type == XARCHIVETYPE_ARJ)
ext = "arj";
- else if ( archive[current_page]->type == XARCHIVETYPE_LHA )
+ else if (archive[current_page]->type == XARCHIVETYPE_LHA)
ext = "lzh";
if ( ext != NULL )
- if ( ! g_list_find ( ArchiveType , ext ) )
+ if (!g_list_find (ArchiveType,ext))
{
response = xa_show_message_dialog (GTK_WINDOW (MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,_("Sorry, this archive format is not supported:"),_("the proper archiver is not installed!") );
return;
@@ -539,7 +544,6 @@
void xa_delete_archive (GtkMenuItem *menuitem, gpointer user_data)
{
gboolean result;
- gchar *esc_filename = NULL;
gchar *command = NULL;
gchar *tar;
gint x;
@@ -590,10 +594,7 @@
break;
case XARCHIVETYPE_ZIP:
- /* single quotes are not enough when deleting */
- esc_filename = xa_escape_common_chars (names->str , "*?[]", '\\', 0);
- command = g_strconcat ( "zip -d " , archive[id]->escaped_path , esc_filename , NULL );
- g_free (esc_filename);
+ command = g_strconcat ( "zip -d " , archive[id]->escaped_path , names->str , NULL );
break;
case XARCHIVETYPE_7ZIP:
@@ -613,7 +614,7 @@
}
if (command != NULL)
{
- archive[id]->status = XA_ARCHIVESTATUS_RELOAD;
+ archive[id]->status = XA_ARCHIVESTATUS_DELETE;
xa_set_button_state (0,0,0,0,0,0,0,0);
gtk_widget_set_sensitive (Stop_button,TRUE);
result = xa_run_command (archive[id],command,1);
@@ -637,7 +638,7 @@
gtk_widget_destroy ( add_window->dialog1 );
if (command != NULL)
{
- archive[idx]->status = XA_ARCHIVESTATUS_RELOAD;
+ archive[idx]->status = XA_ARCHIVESTATUS_ADD;
xa_run_command (archive[idx],command,1);
g_free (command);
}
@@ -1070,14 +1071,14 @@
return path;
}
-int xa_detect_archive_type ( gchar *filename )
+int xa_detect_archive_type (gchar *filename)
{
FILE *dummy_ptr = NULL;
int xx = -1;
unsigned char magic[14];
if (filename != NULL)
- dummy_ptr = fopen ( filename , "r" );
+ dummy_ptr = fopen (filename,"r");
if (dummy_ptr == NULL)
{
@@ -1095,33 +1096,122 @@
else
return -2;
}
- fread ( magic, 1, 14, dummy_ptr );
- if ( memcmp ( magic,"\x50\x4b\x03\x04",4 ) == 0 || memcmp ( magic,"\x50\x4b\x05\x06",4 ) == 0 )
+ fread (magic, 1, 14, dummy_ptr);
+ if (memcmp (magic,"\x50\x4b\x03\x04",4) == 0 || memcmp ( magic,"\x50\x4b\x05\x06",4 ) == 0)
xx = XARCHIVETYPE_ZIP;
- else if ( memcmp ( magic,"\x60\xea",2 ) == 0 )
+ else if (memcmp (magic,"\x60\xea",2 ) == 0)
xx = XARCHIVETYPE_ARJ;
- else if ( memcmp ( magic,"\x52\x61\x72\x21",4 ) == 0 )
+ else if (memcmp ( magic,"\x52\x61\x72\x21",4 ) == 0)
xx = XARCHIVETYPE_RAR;
- else if ( memcmp ( magic,"\x42\x5a\x68",3 ) == 0 )
+ else if (memcmp ( magic,"\x42\x5a\x68",3 ) == 0)
xx = XARCHIVETYPE_BZIP2;
- else if ( memcmp ( magic,"\x1f\x8b",2) == 0 || memcmp ( magic,"\x1f\x9d",2 ) == 0 )
+ else if (memcmp ( magic,"\x1f\x8b",2) == 0 || memcmp ( magic,"\x1f\x9d",2 ) == 0)
xx = XARCHIVETYPE_GZIP;
- else if ( memcmp ( magic,"\x5d\x00\x00\x80",4 ) == 0 )
+ else if (memcmp ( magic,"\x5d\x00\x00\x80",4 ) == 0)
xx = XARCHIVETYPE_LZMA;
- else if ( memcmp ( magic,"\xed\xab\xee\xdb",4 ) == 0 )
+ else if (memcmp ( magic,"\xed\xab\xee\xdb",4 ) == 0)
xx = XARCHIVETYPE_RPM;
- else if ( memcmp ( magic,"\x37\x7a\xbc\xaf\x27\x1c",6 ) == 0 )
+ else if (memcmp ( magic,"\x37\x7a\xbc\xaf\x27\x1c",6) == 0)
xx = XARCHIVETYPE_7ZIP;
- else if ( isTar ( dummy_ptr ) )
+ else if (isTar ( dummy_ptr))
xx = XARCHIVETYPE_TAR;
- else if ( isLha ( dummy_ptr ) )
+ else if (isLha ( dummy_ptr))
xx = XARCHIVETYPE_LHA;
- else if ( memcmp ( magic,"!<arch>\ndebian", 14 ) == 0 )
+ else if (memcmp ( magic,"!<arch>\ndebian",14) == 0)
xx = XARCHIVETYPE_DEB;
- fclose ( dummy_ptr );
+ fclose (dummy_ptr);
return xx;
}
+gboolean xa_detect_archive_comment (int type, gchar *filename, XArchive *archive)
+{
+ FILE *stream;
+ char sig;
+ guint cmt_len = 0;
+ int byte;
+ unsigned char eocds[] = { 0x50, 0x4b, 0x05, 0x06 };
+ unsigned long long int eocds_position = 0;
+
+ unsigned short int len = 0;
+ int eof;
+ size_t seqptr = 0;
+
+ stream = fopen (filename,"r");
+ if (stream == NULL)
+ return FALSE;
+
+ if (type == XARCHIVETYPE_ZIP)
+ {
+ /* Let's position the file indicator to 64KB before the end of the archive */
+ fseek(stream, 0L, SEEK_SET);
+ /* Let's reach the end of central directory signature now */
+ while( ! feof(stream) )
+ {
+ byte = (eof = fgetc(stream));
+ if (eof == EOF)
+ break;
+ if (byte == eocds[seqptr])
+ {
+ if (++seqptr == sizeof(eocds))
+ {
+ eocds_position = ftell(stream) + 16 ;
+ seqptr = 0;
+ }
+ continue;
+ }
+ else
+ {
+ if (seqptr)
+ seqptr = 0;
+ }
+ }
+ fseek (stream,eocds_position,SEEK_SET);
+ fread (&len,1,2,stream);
+ if (len == 0)
+ return FALSE;
+ else
+ {
+ archive->comment = g_string_new("");
+ while (cmt_len != len)
+ {
+ fread (&sig,1,1,stream);
+ g_string_append_c (archive->comment,sig);
+ cmt_len++;
+ }
+ return TRUE;
+ }
+ }
+ else if (type == XARCHIVETYPE_ARJ)
+ {
+ /* Let's avoid the archive name */
+ fseek ( stream, 39 , SEEK_SET );
+ while (sig != 0)
+ {
+ fread (&sig,1,1,stream);
+ cmt_len++;
+ }
+ fseek ( stream, 39 + cmt_len , SEEK_SET );
+ sig = 1;
+ /* Let's read the archive comment byte after byte now */
+ archive->comment = g_string_new("");
+ while (sig != 0)
+ {
+ fread (&sig,1,1,stream);
+
+ if (sig == 0 && archive->comment->len == 0)
+ {
+ g_string_free (archive->comment,FALSE);
+ archive->comment = NULL;
+ return FALSE;
+ }
+ else
+ g_string_append (archive->comment,&sig);
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
void xa_remove_columns()
{
gint current_page;
@@ -1201,9 +1291,7 @@
void xa_show_cmd_line_output (GtkMenuItem *menuitem)
{
- GtkWidget *vbox,*textview,*scrolledwindow;
- GtkTextBuffer *textbuffer;
- GtkTextIter iter;
+ widget_data *xa_cmd_line_output;
GSList *output;
gchar *line = NULL;
gchar *utf8_line;
@@ -1213,44 +1301,20 @@
current_page = gtk_notebook_get_current_page (notebook);
idx = xa_find_archive_index (current_page);
+ xa_cmd_line_output = xa_create_output_window(_("Command line output"));
- xa_cmd_line_output = gtk_dialog_new_with_buttons (_("Command line output"),
- GTK_WINDOW (MainWindow), GTK_DIALOG_NO_SEPARATOR,
- GTK_STOCK_CLOSE,GTK_RESPONSE_CLOSE, NULL);
- gtk_dialog_set_default_response (GTK_DIALOG (xa_cmd_line_output), GTK_RESPONSE_CLOSE);
- gtk_widget_set_size_request (xa_cmd_line_output, 400, 250);
- vbox = GTK_DIALOG (xa_cmd_line_output)->vbox;
-
- scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
- gtk_box_pack_start (GTK_BOX (vbox), scrolledwindow, TRUE, TRUE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 4);
- g_object_set (G_OBJECT (scrolledwindow),"hscrollbar-policy", GTK_POLICY_AUTOMATIC,"shadow-type", GTK_SHADOW_IN,"vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL);
-
- textbuffer = gtk_text_buffer_new (NULL);
- gtk_text_buffer_create_tag (textbuffer, "font","family", "monospace", NULL);
- gtk_text_buffer_get_iter_at_offset (textbuffer, &iter, 0);
-
- textview = gtk_text_view_new_with_buffer (textbuffer);
- g_object_unref (textbuffer);
- gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
- gtk_text_view_set_editable (GTK_TEXT_VIEW (textview), FALSE);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview), FALSE);
-
- gtk_widget_show (vbox);
- gtk_widget_show (scrolledwindow);
- gtk_widget_show (textview);
-
output = g_slist_reverse (archive[idx]->error_output);
while (output)
{
line = output->data;
utf8_line = g_locale_to_utf8 (line, -1, NULL, &bytes_written, NULL);
- gtk_text_buffer_insert_with_tags_by_name (textbuffer, &iter, utf8_line, bytes_written, "font", NULL);
+ gtk_text_buffer_insert_with_tags_by_name (xa_cmd_line_output->textbuffer, &xa_cmd_line_output->iter, utf8_line, bytes_written, "font", NULL);
g_free (utf8_line);
output = output->next;
}
- gtk_dialog_run (GTK_DIALOG(xa_cmd_line_output));
- gtk_widget_destroy (xa_cmd_line_output);
+ gtk_dialog_run (GTK_DIALOG(xa_cmd_line_output->dialog1));
+ gtk_widget_destroy (xa_cmd_line_output->dialog1);
+ g_free(xa_cmd_line_output);
}
void xa_cancel_archive (GtkMenuItem *menuitem,gpointer data)
@@ -1294,12 +1358,11 @@
XEntry *entry = NULL;
gchar *full_pathname;
gchar *editor_path;
- gchar *dummy;
+ GString *names = g_string_new("");
GList *row_list = NULL;
gboolean result = FALSE;
gint current_page;
gint idx;
- GString *names = g_string_new (" ");
current_page = gtk_notebook_get_current_page (notebook);
idx = xa_find_archive_index (current_page);
@@ -1340,9 +1403,8 @@
}
full_pathname = xa_build_full_path_name_from_entry(entry);
- dummy = g_shell_quote(full_pathname);
+ xa_shell_quote_filename(full_pathname,names,archive[idx]);
g_free(full_pathname);
- full_pathname = dummy;
full_path = archive[idx]->full_path;
overwrite = archive[idx]->overwrite;
@@ -1355,8 +1417,7 @@
result = xa_create_temp_directory(tmp_dir);
archive[idx]->tmp = g_strdup(tmp_dir);
}
- names = g_string_append(names,full_pathname);
- g_free(full_pathname);
+
command = xa_extract_single_files(archive[idx],names,archive[idx]->tmp);
g_string_free (names,TRUE);
@@ -1534,13 +1595,23 @@
}
}
-void xa_shell_quote_filename (gchar *filename,GString *data)
+void xa_shell_quote_filename (gchar *filename,GString *data,XArchive *archive)
{
gchar *quoted_filename = NULL;
+ gchar *esc_filename = NULL;
- quoted_filename = g_shell_quote (filename);
- g_string_prepend (data, quoted_filename);
- g_string_prepend_c (data, ' ');
+ quoted_filename = g_shell_quote(filename);
+ if (archive->status != XA_ARCHIVESTATUS_ADD)
+ {
+ if (strstr(filename,"[") || strstr(filename,"]"))
+ {
+ esc_filename = xa_escape_common_chars (quoted_filename , "*?[]", '\\', 0);
+ g_free(quoted_filename);
+ quoted_filename = esc_filename;
+ }
+ }
+ g_string_prepend (data,quoted_filename);
+ g_string_prepend_c (data,' ');
g_free (quoted_filename);
}
@@ -1556,7 +1627,7 @@
gtk_tree_model_get (model,iter,archive[idx]->nc+1,&entry,-1);
filename = xa_build_full_path_name_from_entry(entry);
- xa_shell_quote_filename (filename,data);
+ xa_shell_quote_filename (filename,data,archive[idx]);
g_free (filename);
}
@@ -1565,32 +1636,32 @@
gchar *fullname;
gchar *name;
- gtk_tree_model_get (model, iter, 1, &fullname, -1);
- name = g_path_get_basename ( fullname );
+ gtk_tree_model_get (model,iter,1,&fullname,-1);
+ name = g_path_get_basename (fullname);
- xa_shell_quote_filename ( name , data );
+ //xa_shell_quote_filename (name,data);
g_free (fullname);
}
-
+//TODO: to remove this and also in add_dialog.c:600
void xa_cat_filenames (GtkTreeModel *model, GtkTreePath *treepath, GtkTreeIter *iter, GString *data)
{
gchar *fullname;
- gtk_tree_model_get (model, iter, 1, &fullname, -1);
- xa_shell_quote_filename ( fullname , data );
+ gtk_tree_model_get (model,iter,1,&fullname,-1);
+ //xa_shell_quote_filename (fullname,data);
g_free (fullname);
}
-void Update_StatusBar ( gchar *msg)
+void Update_StatusBar (gchar *msg)
{
gtk_label_set_text (GTK_LABEL (info_label), msg);
}
void xa_disable_delete_view_buttons (gboolean value)
{
- gtk_widget_set_sensitive (delete_menu, value);
- gtk_widget_set_sensitive (View_button, value);
- gtk_widget_set_sensitive (view_menu, value);
+ gtk_widget_set_sensitive (delete_menu,value);
+ gtk_widget_set_sensitive (View_button,value);
+ gtk_widget_set_sensitive (view_menu,value);
}
void drag_begin (GtkWidget *treeview1,GdkDragContext *context, gpointer data)
@@ -1790,8 +1861,8 @@
}
GString *names = g_string_new (" ");
- _current_dir = g_path_get_dirname ( array[0] );
- current_dir = g_filename_from_uri ( _current_dir, NULL, NULL );
+ _current_dir = g_path_get_dirname (array[0]);
+ current_dir = g_filename_from_uri (_current_dir,NULL,NULL);
g_free (_current_dir);
chdir ( current_dir );
g_free (current_dir);
@@ -1799,10 +1870,10 @@
while (array[len])
{
- filename = g_filename_from_uri ( array[len] , NULL, NULL );
- name = g_path_get_basename ( filename );
+ filename = g_filename_from_uri (array[len],NULL,NULL);
+ name = g_path_get_basename (filename);
g_free (filename);
- xa_shell_quote_filename ( name, names );
+ xa_shell_quote_filename (name,names,archive[idx]);
g_free (name);
len++;
}
@@ -1954,20 +2025,27 @@
Update_StatusBar (_("Please enter the password first!"));
}
-void xa_show_archive_comment ( GtkMenuItem *menuitem , gpointer user_data )
+void xa_show_archive_comment (GtkMenuItem *menuitem,gpointer user_data)
{
- GtkWidget *comment_window;
+ widget_data *comment_window;
+ gchar *utf8_line;
+ gsize len;
gint current_page;
gint idx;
current_page = gtk_notebook_get_current_page(notebook);
idx = xa_find_archive_index (current_page);
- comment_window = xa_create_comment_window();
- gtk_text_buffer_create_tag (viewtextbuf, "bold","weight", PANGO_WEIGHT_BOLD, NULL);
- gtk_text_buffer_insert (viewtextbuf, &viewenditer, "\n", 1);
- gtk_text_buffer_insert_with_tags_by_name (viewtextbuf, &viewenditer, archive[idx]->comment->str, archive[idx]->comment->len, "bold", NULL);
- gtk_widget_show (comment_window);
+ comment_window = xa_create_output_window(_("Archive Comment"));
+
+ gtk_text_buffer_insert (comment_window->textbuffer, &comment_window->iter, "\n", 1);
+ utf8_line = g_locale_to_utf8 (archive[current_page]->comment->str, -1, NULL, &len, NULL);
+ gtk_text_buffer_insert_with_tags_by_name (comment_window->textbuffer, &comment_window->iter, utf8_line, len, "font", NULL);
+ g_free(utf8_line);
+
+ gtk_dialog_run (GTK_DIALOG(comment_window->dialog1));
+ gtk_widget_destroy (comment_window->dialog1);
+ g_free(comment_window);
}
void xa_location_entry_activated (GtkEntry *entry, gpointer user_data)
Modified: xarchiver/trunk/src/window.h
===================================================================
--- xarchiver/trunk/src/window.h 2007-12-07 09:33:08 UTC (rev 26442)
+++ xarchiver/trunk/src/window.h 2007-12-07 09:38:04 UTC (rev 26443)
@@ -56,7 +56,7 @@
gboolean done,full_path,overwrite,add_recurse;
Extract_dialog_data *extract_window;
Add_dialog_data *add_window;
-GtkWidget *dialog, *scrollwin, *xa_cmd_line_output , *view_window, *archive_properties_win;
+GtkWidget *dialog, *scrollwin, *view_window, *archive_properties_win;
void xa_new_archive (GtkMenuItem *menuitem, gpointer user_data);
void xa_open_archive (GtkMenuItem *menuitem, gpointer user_data );
@@ -88,6 +88,7 @@
int xa_show_message_dialog ( GtkWindow *window, int mode,int type,int button, const gchar *message1,const gchar *message2);
int xa_detect_archive_type ( gchar *filename );
+gboolean xa_detect_archive_comment ( int type, gchar *filename, XArchive *archive );
gboolean key_press_function ( GtkWidget* widget, GdkEventKey* event,gpointer data);
gboolean treeview_select_search (GtkTreeModel *model,gint column,const gchar *key,GtkTreeIter *iter,gpointer search_data);
gboolean xa_check_child_for_error_on_exit(XArchive *archive,gint status);
@@ -97,7 +98,7 @@
void xa_remove_columns();
void xa_create_liststore ( XArchive *archive, gchar *columns_names[]);
void xa_concat_filenames (GtkTreeModel *model, GtkTreePath *treepath, GtkTreeIter *iter, GString *data);
-void xa_shell_quote_filename (gchar *filename , GString *data);
+void xa_shell_quote_filename (gchar *filename,GString *data,XArchive *archive);
void xa_cat_filenames (GtkTreeModel *model, GtkTreePath *treepath, GtkTreeIter *iter, GString *data);
void xa_cat_filenames_basename (GtkTreeModel *model, GtkTreePath *treepath, GtkTreeIter *iter, GString *data);
void xa_disable_delete_view_buttons (gboolean value);
More information about the Xfce4-commits
mailing list