summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Bidulock2015-06-10 23:28:05 -0600
committerBrian Bidulock2015-06-10 23:28:05 -0600
commite84ddf87c9409f5ce7422bb988367c64d28dc787 (patch)
tree8c8f6be4fad2b6c98b6bfd3c7c58f68223ec0975
downloadaur-e84ddf87c9409f5ce7422bb988367c64d28dc787.tar.gz
initial version
-rw-r--r--.SRCINFO22
-rw-r--r--PKGBUILD43
-rw-r--r--arch-yaourt.patch335
-rw-r--r--xfe.install11
4 files changed, 411 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..b29797669e65
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,22 @@
+pkgbase = xfe-arch
+ pkgdesc = An MS-Explorer like file manager for X with Archlinux xfp support.
+ pkgver = 1.37
+ pkgrel = 1
+ url = http://roland65.free.fr/xfe
+ install = xfe.install
+ arch = i686
+ arch = x86_64
+ license = GPL
+ makedepends = intltool
+ depends = fox
+ depends = desktop-file-utils
+ optdepends = yaourt: xfp archlinux support
+ provides = xfe=1.37
+ conflicts = xfe
+ source = http://downloads.sourceforge.net/sourceforge/xfe/xfe-1.37.tar.gz
+ source = arch-yaourt.patch
+ md5sums = ce2a317ab4f7d728878d815afe13c1be
+ md5sums = 513b73351f65137f8796934dc041b8e9
+
+pkgname = xfe-arch
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..75f63aaf1277
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,43 @@
+# Maintainer: Brian Bidulock <bidulock@openss7.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Eric Belanger <belanger@astro.umontreal.ca>
+# Contributor: Ravi Desai <ravster3@hotmail.com>
+
+pkgname=xfe-arch
+_pkgname=xfe
+pkgver=1.37
+pkgrel=1
+pkgdesc="An MS-Explorer like file manager for X with Archlinux xfp support."
+arch=('i686' 'x86_64')
+url="http://roland65.free.fr/xfe"
+license=("GPL")
+provides=("$_pkgname=$pkgver")
+conflicts=("$_pkgname")
+depends=('fox' 'desktop-file-utils')
+makedepends=('intltool')
+optdepends=('yaourt: xfp archlinux support')
+install="$_pkgname.install"
+source=("http://downloads.sourceforge.net/sourceforge/$_pkgname/$_pkgname-$pkgver.tar.gz"
+ "arch-yaourt.patch")
+md5sums=('ce2a317ab4f7d728878d815afe13c1be'
+ '513b73351f65137f8796934dc041b8e9')
+
+prepare() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ patch -Np1 -b -z .orig <../arch-yaourt.patch
+ sed -i 's|freetype/config/ftheader.h|config/ftheader.h|g' configure.ac
+ aclocal
+ automake --add-missing
+ autoreconf
+}
+
+build() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/arch-yaourt.patch b/arch-yaourt.patch
new file mode 100644
index 000000000000..240714d28f3b
--- /dev/null
+++ b/arch-yaourt.patch
@@ -0,0 +1,335 @@
+diff --git a/src/FilePanel.cpp b/src/FilePanel.cpp
+index 8691ca3..6cffb52 100644
+--- a/src/FilePanel.cpp
++++ b/src/FilePanel.cpp
+@@ -66,6 +66,7 @@ extern FXStringDict* fsdevices;
+ extern FXStringDict* mtdevices;
+ extern FXbool deb_based;
+ extern FXbool rpm_based;
++extern FXbool pkg_based;
+ #endif
+
+ extern FXbool allowPopupScroll;
+@@ -3582,10 +3583,12 @@ long FilePanel::onCmdPopupMenu(FXObject* o,FXSelector s,void* p)
+ // Last and before last file extensions
+ FXString ext1=name.rafter('.',1);
+ FXString ext2=name.rafter('.',2);
++ FXString ext3=name.rafter('.',3);
+
+ // Convert these extensions to lower case
+ ext1.lower();
+ ext2.lower();
++ ext3.lower();
+
+ // Destination folder name
+ FXString extract_to_folder;
+@@ -3601,6 +3604,14 @@ long FilePanel::onCmdPopupMenu(FXObject* o,FXSelector s,void* p)
+ new FXMenuCommand(menu,_("&Extract here"),archexticon,current,FilePanel::ID_EXTRACT_HERE);
+ new FXMenuCommand(menu,extract_to_folder,archexticon,current,FilePanel::ID_EXTRACT_TO_FOLDER);
+ new FXMenuCommand(menu,_("E&xtract to..."),archexticon,current,FilePanel::ID_EXTRACT);
++#if defined(linux)
++ if (ext3=="pkg.tar.xz")
++ {
++ new FXMenuCommand(menu,_("&View"),packageicon,current,FilePanel::ID_VIEW);
++ new FXMenuCommand(menu,_("Install/Up&grade"),packageicon,current,ID_PKG_INSTALL);
++ new FXMenuCommand(menu,_("Un&install"),packageicon,current,ID_PKG_UNINSTALL);
++ }
++#endif
+ }
+ else if ((num==1) && (ext1=="gz" || ext1=="bz2" || ext1=="xz" || ext1=="z"))
+ {
+@@ -4265,6 +4276,8 @@ long FilePanel::onCmdPkgInstall(FXObject*,FXSelector,void*)
+ cmd="rpm -Uvh " + path;
+ else if(comparecase(ext,"deb")==0)
+ cmd="dpkg -i "+ path;
++ else if(comparecase(ext,"xz")==0)
++ cmd="yaourt -U "+ path;
+
+ // Wait cursor
+ getApp()->beginWaitCursor();
+@@ -4313,6 +4326,11 @@ long FilePanel::onCmdPkgUninstall(FXObject*,FXSelector,void*)
+ name=name.section('_',0);
+ cmd="dpkg -r "+ name;
+ }
++ else if(comparecase(ext,"xz")==0)
++ {
++ name=name.section('-',0);
++ cmd="yaourt -R "+ name;
++ }
+
+ // Wait cursor
+ getApp()->beginWaitCursor();
+@@ -4728,6 +4746,8 @@ long FilePanel::onCmdPkgQuery(FXObject* o,FXSelector sel,void*)
+ cmd="rpm -qf " + ::quote(file);
+ else if(deb_based)
+ cmd="dpkg -S " + ::quote(file);
++ else if(pkg_based)
++ cmd="yaourt -Qo " + ::quote(file) + " 2>/dev/null";
+ else
+ {
+ MessageBox::error(this,BOX_OK,_("Error"),_("No compatible package manager (rpm or dpkg) found!"));
+@@ -4780,6 +4800,13 @@ long FilePanel::onCmdPkgQuery(FXObject* o,FXSelector sel,void*)
+ else
+ str="";
+ }
++ if (pkg_based) // PKG based distribution
++ {
++ if (str.find("owned by ") != -1)
++ str=str.erase(0,str.find("owned by ")+9);
++ else
++ str="";
++ }
+
+ // Display the related output message
+ FXString message;
+diff --git a/src/Properties.cpp b/src/Properties.cpp
+index f01603f..94feaef 100644
+--- a/src/Properties.cpp
++++ b/src/Properties.cpp
+@@ -228,6 +228,14 @@ PropertiesBox::PropertiesBox(FXWindow *win,FXString file,FXString path): DialogB
+
+ extension=file.rafter('.',1);
+ extension=extension.lower();
++#if defined(linux)
++ FXString ext3;
++ ext3=file.rafter('.',3);
++ ext3=ext3.lower();
++ if (ext3=="pkg.tar.xz")
++ editlbl = _("Install/Upgrade:");
++ else
++#endif
+ if (extension=="gz" || extension=="tgz" || extension=="tar" || extension=="taz" || extension=="bz2"
+ || extension=="tbz2" || extension=="tbz" || extension =="xz" || extension=="txz" || extension=="zip"
+ || extension=="7z" || extension=="Z" || extension=="lzh" || extension=="rar"
+diff --git a/src/SearchPanel.cpp b/src/SearchPanel.cpp
+index 19106d4..7ce021a 100644
+--- a/src/SearchPanel.cpp
++++ b/src/SearchPanel.cpp
+@@ -52,6 +52,7 @@ extern int OpenNum;
+ #if defined(linux)
+ extern FXbool deb_based;
+ extern FXbool rpm_based;
++extern FXbool pkg_based;
+ #endif
+
+ // Button separator margins and height
+@@ -1687,16 +1688,22 @@ long SearchPanel::onCmdPopupMenu(FXObject* o,FXSelector s,void* p)
+ // Last and before last file extensions
+ FXString ext1=name.rafter('.',1);
+ FXString ext2=name.rafter('.',2);
++ FXString ext3=name.rafter('.',3);
+
+ // Convert these extensions to lower case
+ ext1.lower();
+ ext2.lower();
++ ext3.lower();
+
+ // Display the extract and package menus according to the archive extensions
+ if((num==1) && (ext2=="tar.gz" || ext2=="tar.bz2" || ext2=="tar.xz" || ext2=="tar.z"))
+ {
+ ar=TRUE;
+ new FXMenuCommand(menu,_("E&xtract to..."),archexticon,this,SearchPanel::ID_EXTRACT);
++#if defined(linux)
++ if (ext3=="pkg.tar.xz")
++ new FXMenuCommand(menu,_("&View"),packageicon,this,SearchPanel::ID_VIEW);
++#endif
+ }
+ else if ((num==1) && (ext1=="gz" || ext1=="bz2" || ext1=="xz" || ext1=="z"))
+ {
+@@ -3368,9 +3375,11 @@ long SearchPanel::onCmdPkgQuery(FXObject* o,FXSelector sel,void*)
+ cmd="rpm -qf " + ::quote(file);
+ else if(deb_based)
+ cmd="dpkg -S " + ::quote(file);
++ else if(pkg_based)
++ cmd="yaourt -Qo " + ::quote(file) + " 2>/dev/null";
+ else
+ {
+- MessageBox::error(this,BOX_OK,_("Error"),_("No compatible package manager (rpm or dpkg) found!"));
++ MessageBox::error(this,BOX_OK,_("Error"),_("No compatible package manager (rpm, dpkg or yaourt) found!"));
+ return 0;
+ }
+
+@@ -3420,6 +3429,14 @@ long SearchPanel::onCmdPkgQuery(FXObject* o,FXSelector sel,void*)
+ else
+ str="";
+ }
++ if (pkg_based) // PKG based distribution
++ {
++ // "No package" indicates no package otherwise part after "owned by"
++ if (str.find("owned by ") != -1)
++ str=str.erase(0,str.find("owned by ")+9);
++ else
++ str="";
++ }
+
+ // Display the related output message
+ FXString message;
+diff --git a/src/XFilePackage.cpp b/src/XFilePackage.cpp
+index e0e341d..d08ec00 100644
+--- a/src/XFilePackage.cpp
++++ b/src/XFilePackage.cpp
+@@ -31,6 +31,7 @@
+ char **args;
+ FXbool dpkg=FALSE;
+ FXbool rpm=FALSE;
++FXbool yaourt=FALSE;
+ FXColor highlightcolor;
+ FXbool allowPopupScroll=FALSE;
+ FXuint single_click;
+@@ -212,7 +213,7 @@ XFilePackage::~XFilePackage()
+ long XFilePackage::onCmdAbout(FXObject*,FXSelector,void*)
+ {
+ FXString msg;
+- msg.format(_("X File Package Version %s is a simple rpm or deb package manager.\n\n"),VERSION);
++ msg.format(_("X File Package Version %s is a simple rpm, deb or pkg package manager.\n\n"),VERSION);
+ msg += COPYRIGHT;
+ MessageBox about(this,_("About X File Package"),msg.text(),xfpicon,BOX_OK|DECOR_TITLE|DECOR_BORDER,
+ JUSTIFY_CENTER_X|ICON_BEFORE_TEXT|LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y);
+@@ -229,6 +230,8 @@ long XFilePackage::onCmdOpen(FXObject*,FXSelector,void*)
+ _("RPM source packages"), "*.src.rpm",
+ _("RPM packages"), "*.rpm",
+ _("DEB packages"), "*.deb",
++ _("SRC packages"), "*.src.tar.gz",
++ _("PKG packages"), "*.pkg.tar.xz",
+ NULL
+ };
+
+@@ -268,6 +271,8 @@ long XFilePackage::onCmdInstall(FXObject*,FXSelector,void*)
+ cmd="rpm -Uvh "+filename;
+ else if(comparecase(ext,"deb")==0)
+ cmd="dpkg -i "+filename;
++ else if(comparecase(ext,"xz")==0)
++ cmd="yaourt -U "+filename;
+ else
+ {
+ MessageBox::error(this,BOX_OK,_("Error"),_("Unknown package format"));
+@@ -318,6 +323,13 @@ long XFilePackage::onCmdUninstall(FXObject*,FXSelector,void*)
+ package=package.section('_',0);
+ cmd="dpkg -r "+ package;
+ }
++ else if(comparecase(ext,"xz")==0)
++ {
++ // Get package name
++ package=FXPath::name(filename);
++ package=package.section('-',0);
++ cmd="yaourt -R "+ package;
++ }
+ else
+ {
+ MessageBox::error(this,BOX_OK,_("Error"),_("Unknown package format"));
+@@ -416,6 +428,11 @@ long XFilePackage::onUpdFileList(FXObject*,FXSelector,void*)
+ errorflag=FALSE;
+ cmd="dpkg -c "+::quote(filename);
+ }
++ else if(comparecase(ext,"xz")==0)
++ {
++ errorflag=FALSE;
++ cmd="yaourt -Qlpq "+::quote(filename);
++ }
+ else if (errorflag==FALSE)
+ {
+ errorflag=TRUE;
+@@ -480,6 +497,12 @@ long XFilePackage::onUpdDescription(FXObject*,FXSelector,void*)
+ buf += _("[DEB package]\n");
+ cmd="dpkg -I "+::quote(filename);
+ }
++ else if(comparecase(ext,"xz")==0)
++ {
++ errorflag=FALSE;
++ buf += _("[PKG package]\n");
++ cmd="yaourt -Qip "+::quote(filename);
++ }
+ else if (errorflag==FALSE)
+ {
+ errorflag=TRUE;
+@@ -627,7 +650,7 @@ void XFilePackage::create()
+ -h, --help Print (this) help screen and exit.\n\
+ -v, --version Print version information and exit.\n\
+ \n\
+- [package] is the path to the rpm or deb package you want to open on start up.\n\
++ [package] is the path to the rpm, deb or arch package you want to open on start up.\n\
+ \n")
+
+
+@@ -793,11 +816,27 @@ int main(int argc,char* argv[])
+ if (strstr(textrpm,"RPM")!=NULL)
+ rpm=TRUE;
+ pclose(rpmcmd);
++
++ cmd="yaourt --version 2>&1";
++ FILE *pkgcmd=popen(cmd.text(),"r");
++ if(!pkgcmd)
++ {
++ perror("popen");
++ exit(1);
++ }
++ char textpkg[10000]={0};
++ FXString bufpkg;
++ while(fgets(textpkg,sizeof(textpkg),pkgcmd))
++ bufpkg+=textpkg;
++ snprintf(textpkg,sizeof(textpkg)-1,"%s",bufpkg.text());
++ if (strstr(textpkg,"yaourt")!=NULL)
++ yaourt=TRUE;
++ pclose(pkgcmd);
+
+ // No package manager was found
+- if ((dpkg==FALSE) && (rpm==FALSE))
++ if ((dpkg==FALSE) && (rpm==FALSE) && (yaourt==FALSE))
+ {
+- MessageBox::error(window,BOX_OK,_("Error"),_("No compatible package manager (rpm or dpkg) found!"));
++ MessageBox::error(window,BOX_OK,_("Error"),_("No compatible package manager (rpm, dpkg or yaourt) found!"));
+ exit(1);
+ }
+
+diff --git a/src/help.h b/src/help.h
+index 850ec0d..5c44c09 100644
+--- a/src/help.h
++++ b/src/help.h
+@@ -49,7 +49,7 @@
+ - Integrated text editor (X File Write, Xfw)\n \
+ - Integrated text viewer (X File View, Xfv)\n \
+ - Integrated image viewer (X File Image, Xfi)\n \
+- - Integrated package (rpm or deb) viewer / installer / uninstaller (X File Package, Xfp)\n \
++ - Integrated package (rpm, deb or pkg) viewer / installer / uninstaller (X File Package, Xfp)\n \
+ - Custom shell scripts (like Nautilus scripts)\n \
+ - Search files and directories\n \
+ - Copy/Cut/Paste files from and to your favorite desktop (GNOME/KDE/XFCE/ROX)\n \
+diff --git a/src/main.cpp b/src/main.cpp
+index 79bf00c..5586ae3 100644
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -198,6 +198,7 @@ char **args;
+ #if defined(linux)
+ FXbool deb_based=FALSE;
+ FXbool rpm_based=FALSE;
++FXbool pkg_based=FALSE;
+ #endif
+
+ // Base directories (according to the Freedesktop specification version 0.7)
+@@ -336,6 +337,26 @@ int main(int argc,char *argv[])
+ rpm_based=TRUE;
+ pclose(rpmcmd);
+ }
++
++ // When the distro is neither debian nor rpm based, test if
++ // yaourt based.
++ if (!deb_based && !rpm_based) {
++ cmd="yaourt --version 2>&1";
++ FILE *pkgcmd=popen(cmd.text(),"r");
++ if (!pkgcmd)
++ {
++ perror("popen");
++ exit(1);
++ }
++ char textpkg[10000]={0};
++ FXString bufpkg;
++ while(fgets(textpkg,sizeof(textpkg),pkgcmd))
++ bufpkg+=textpkg;
++ snprintf(textpkg,sizeof(textpkg)-1,"%s",bufpkg.text());
++ if (strstr(textpkg,"yaourt")!=NULL)
++ pkg_based=TRUE;
++ pclose(pkgcmd);
++ }
+ #endif
+
+ // Parse basic arguments
diff --git a/xfe.install b/xfe.install
new file mode 100644
index 000000000000..e111ef946053
--- /dev/null
+++ b/xfe.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}