Revert "pcmanfm: Update to 0.9.7"

This reverts commit d6ba72ac34.

This recipe is not cross compile safe and failes on non0x86 builds.
This commit is contained in:
Richard Purdie 2010-07-25 13:40:17 +01:00
parent 7edde59de4
commit 43b8e66467
5 changed files with 532 additions and 5 deletions

View File

@ -0,0 +1,15 @@
Index: pcmanfm-0.5/pcmanfm.desktop.in
===================================================================
--- pcmanfm-0.5.orig/pcmanfm.desktop.in
+++ pcmanfm-0.5/pcmanfm.desktop.in
@@ -1,8 +1,7 @@
[Desktop Entry]
Version=1.0
-Encoding=UTF-8
-Name=PCMan File Manager
-Categories=Application;System;Utility;Core;GTK;
+Name=File Manager
+Categories=System;Utility;Core;GTK;
Name[zh_TW]=檔案總管
Exec=pcmanfm %F
Icon=pcmanfm

View File

@ -0,0 +1,432 @@
diff -urNd ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/configure.in pcmanfm-0.3.0.1/configure.in
--- ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/configure.in 2006-08-20 15:45:28.000000000 +0100
+++ pcmanfm-0.3.0.1/configure.in 2006-08-20 20:37:36.000000000 +0100
@@ -63,8 +63,8 @@
LIBS="$LIBS $FAM_LIBS"
AC_CHECK_FUNCS([FAMNoExists])
LIBS="$save_LIBS"
-else
- AC_MSG_ERROR([Fatal Error: no fam or gamin detected.])
+#else
+# AC_MSG_ERROR([Fatal Error: no fam or gamin detected.])
fi
AC_SUBST([FAM_CFLAGS])
diff -urNd ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c
--- ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c 2006-07-16 20:00:46.000000000 +0100
+++ pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c 2006-08-20 20:54:07.000000000 +0100
@@ -31,7 +31,6 @@
VFSFileMonitorCallbackEntry;
static GHashTable* monitor_hash = NULL;
-static FAMConnection fam;
static GIOChannel* fam_io_channel = NULL;
static guint fam_io_watch = 0;
@@ -40,6 +39,8 @@
GIOCondition cond,
gpointer user_data );
+#ifdef HAVE_FAM_H
+static FAMConnection fam;
static gboolean connect_to_fam()
{
@@ -81,6 +82,16 @@
FAMClose( &fam );
}
}
+#else
+static gboolean connect_to_fam ()
+{
+ return FALSE;
+}
+
+static void disconnect_from_fam ()
+{
+}
+#endif
/* final cleanup */
void vfs_file_monitor_clean()
@@ -109,6 +120,7 @@
VFSFileMonitorCallback cb,
gpointer user_data )
{
+#ifdef HAVE_FAM_H
VFSFileMonitor * monitor;
VFSFileMonitorCallbackEntry cb_ent;
gboolean add_new = FALSE;
@@ -154,12 +166,16 @@
}
++monitor->n_ref;
return monitor;
+#else
+ return NULL;
+#endif
}
void vfs_file_monitor_remove( VFSFileMonitor* fm,
VFSFileMonitorCallback cb,
gpointer user_data )
{
+#ifdef HAVE_FAM_H
int i;
VFSFileMonitorCallbackEntry* callbacks;
if ( cb && fm->callbacks )
@@ -183,12 +199,14 @@
g_array_free( fm->callbacks, TRUE );
g_slice_free( VFSFileMonitor, fm );
}
+#endif
}
static void reconnect_fam( gpointer key,
gpointer value,
gpointer user_data )
{
+#ifdef HAVE_FAM_H
struct stat file_stat;
VFSFileMonitor* monitor = ( VFSFileMonitor* ) value;
const char* path = ( const char* ) key;
@@ -209,6 +227,7 @@
monitor );
}
}
+#endif
}
/* event handler of all FAM events */
@@ -216,6 +235,7 @@
GIOCondition cond,
gpointer user_data )
{
+#ifdef HAVE_FAM_H
FAMEvent evt;
VFSFileMonitor* monitor = NULL;
VFSFileMonitorCallbackEntry* cb;
@@ -266,5 +286,8 @@
}
}
return TRUE;
+#else
+ return TRUE;
+#endif
}
diff -urNd ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c~ pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c~
--- ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c~ 1970-01-01 01:00:00.000000000 +0100
+++ pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c~ 2006-08-20 20:50:49.000000000 +0100
@@ -0,0 +1,292 @@
+/*
+* C Implementation: vfs-monitor
+*
+* Description:
+*
+*
+* Author: Hong Jen Yee (PCMan) <pcman.tw (AT) gmail.com>, (C) 2006
+*
+* Copyright: See COPYING file that comes with this distribution
+*
+*/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vfs-file-monitor.h"
+#include <sys/types.h> /* for stat */
+#include <sys/stat.h>
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "glib-mem.h"
+
+typedef struct
+{
+ VFSFileMonitorCallback callback;
+ gpointer user_data;
+}
+VFSFileMonitorCallbackEntry;
+
+static GHashTable* monitor_hash = NULL;
+static FAMConnection fam;
+static GIOChannel* fam_io_channel = NULL;
+static guint fam_io_watch = 0;
+
+/* event handler of all FAM events */
+static gboolean on_fam_event( GIOChannel *channel,
+ GIOCondition cond,
+ gpointer user_data );
+
+#ifdef HAVE_FAM_H
+static gboolean connect_to_fam()
+{
+ if ( FAMOpen( &fam ) )
+ {
+ fam_io_channel = NULL;
+ fam.fd = -1;
+ g_warning( "There is no FAM/gamin server\n" );
+ return FALSE;
+ }
+#if HAVE_FAMNOEXISTS
+ /*
+ * Disable the initital directory content loading.
+ * This can greatly speed up directory loading, but
+ * unfortunately, it's not compatible with original FAM.
+ */
+ FAMNoExists( &fam ); /* This is an extension of gamin */
+#endif
+
+ fam_io_channel = g_io_channel_unix_new( fam.fd );
+ g_io_channel_set_encoding( fam_io_channel, NULL, NULL );
+ g_io_channel_set_buffered( fam_io_channel, FALSE );
+
+ fam_io_watch = g_io_add_watch( fam_io_channel,
+ G_IO_IN | G_IO_HUP,
+ on_fam_event,
+ NULL );
+ return TRUE;
+}
+
+static void disconnect_from_fam()
+{
+ if ( fam_io_channel )
+ {
+ g_io_channel_unref( fam_io_channel );
+ fam_io_channel = NULL;
+ g_source_remove( fam_io_watch );
+
+ FAMClose( &fam );
+ }
+}
+#else
+static gboolean connect_to_fam ()
+{
+ return FALSE;
+}
+
+static void disconnect_from_fam ()
+{
+}
+#endif
+
+/* final cleanup */
+void vfs_file_monitor_clean()
+{
+ disconnect_from_fam();
+ if ( monitor_hash )
+ {
+ g_hash_table_destroy( monitor_hash );
+ monitor_hash = NULL;
+ }
+}
+
+/*
+* Init monitor:
+* Establish connection with gamin/fam.
+*/
+gboolean vfs_file_monitor_init()
+{
+ monitor_hash = g_hash_table_new( g_str_hash, g_str_equal );
+ if ( ! connect_to_fam() )
+ return FALSE;
+ return TRUE;
+}
+
+VFSFileMonitor* vfs_file_monitor_add( const char* path,
+ VFSFileMonitorCallback cb,
+ gpointer user_data )
+{
+#ifdef HAVE_FAM_H
+ VFSFileMonitor * monitor;
+ VFSFileMonitorCallbackEntry cb_ent;
+ gboolean add_new = FALSE;
+ struct stat file_stat;
+
+ if ( ! monitor_hash )
+ {
+ if ( !vfs_file_monitor_init() )
+ return NULL;
+ }
+ monitor = ( VFSFileMonitor* ) g_hash_table_lookup ( monitor_hash, path );
+ if ( ! monitor )
+ {
+ monitor = g_slice_new0( VFSFileMonitor );
+ monitor->path = g_strdup( path );
+ monitor->callbacks = g_array_new ( FALSE, FALSE, sizeof( VFSFileMonitorCallbackEntry ) );
+ g_hash_table_insert ( monitor_hash,
+ path,
+ monitor );
+ if ( lstat( path, &file_stat ) != -1 )
+ {
+ if ( S_ISDIR( file_stat.st_mode ) )
+ {
+ FAMMonitorDirectory( &fam,
+ path,
+ &monitor->request,
+ monitor );
+ }
+ else
+ {
+ FAMMonitorFile( &fam,
+ path,
+ &monitor->request,
+ monitor );
+ }
+ }
+ }
+ if ( cb )
+ { /* Install a callback */
+ cb_ent.callback = cb;
+ cb_ent.user_data = user_data;
+ monitor->callbacks = g_array_append_val( monitor->callbacks, cb_ent );
+ }
+ ++monitor->n_ref;
+ return monitor;
+#else
+ return NULL;
+#endif
+}
+
+void vfs_file_monitor_remove( VFSFileMonitor* fm,
+ VFSFileMonitorCallback cb,
+ gpointer user_data )
+{
+#ifdef HAVE_FAM_H
+ int i;
+ VFSFileMonitorCallbackEntry* callbacks;
+ if ( cb && fm->callbacks )
+ {
+ callbacks = ( VFSFileMonitorCallbackEntry* ) fm->callbacks->data;
+ for ( i = 0; i < fm->callbacks->len; ++i )
+ {
+ if ( callbacks[ i ].callback == cb && callbacks[ i ].user_data == user_data )
+ {
+ fm->callbacks = g_array_remove_index_fast ( fm->callbacks, i );
+ break;
+ }
+ }
+ }
+ --fm->n_ref;
+ if ( 0 >= fm->n_ref )
+ {
+ FAMCancelMonitor( &fam, &fm->request );
+ g_hash_table_remove( monitor_hash, fm->path );
+ g_free( fm->path );
+ g_array_free( fm->callbacks, TRUE );
+ g_slice_free( VFSFileMonitor, fm );
+ }
+#endif
+}
+
+static void reconnect_fam( gpointer key,
+ gpointer value,
+ gpointer user_data )
+{
+#ifdef HAVE_FAM_H
+ struct stat file_stat;
+ VFSFileMonitor* monitor = ( VFSFileMonitor* ) value;
+ const char* path = ( const char* ) key;
+ if ( lstat( path, &file_stat ) != -1 )
+ {
+ if ( S_ISDIR( file_stat.st_mode ) )
+ {
+ FAMMonitorDirectory( &fam,
+ path,
+ &monitor->request,
+ monitor );
+ }
+ else
+ {
+ FAMMonitorFile( &fam,
+ path,
+ &monitor->request,
+ monitor );
+ }
+ }
+#endif
+}
+
+/* event handler of all FAM events */
+static gboolean on_fam_event( GIOChannel *channel,
+ GIOCondition cond,
+ gpointer user_data )
+{
+#ifdef HAVE_FAM_H
+ FAMEvent evt;
+ VFSFileMonitor* monitor = NULL;
+ VFSFileMonitorCallbackEntry* cb;
+ VFSFileMonitorCallback func;
+ int i;
+
+ if ( cond & G_IO_HUP )
+ {
+ disconnect_from_fam();
+ if ( g_hash_table_size ( monitor_hash ) > 0 )
+ {
+ /*
+ Disconnected from FAM server, but there are still monitors.
+ This may be caused by crash of FAM server.
+ So we have to reconnect to FAM server.
+ */
+ connect_to_fam();
+ g_hash_table_foreach( monitor_hash, ( GHFunc ) reconnect_fam, NULL );
+ }
+ return TRUE; /* don't need to remove the event source since
+ it has been removed by disconnect_from_fam(). */
+ }
+
+ while ( FAMPending( &fam ) )
+ {
+ if ( FAMNextEvent( &fam, &evt ) > 0 )
+ {
+ monitor = ( VFSFileMonitor* ) evt.userdata;
+ switch ( evt.code )
+ {
+ case FAMCreated:
+ case FAMDeleted:
+ case FAMChanged:
+ /* Call the callback functions */
+ if ( monitor->callbacks && monitor->callbacks->len )
+ {
+ cb = ( VFSFileMonitorCallbackEntry* ) monitor->callbacks->data;
+ for ( i = 0; i < monitor->callbacks->len; ++i )
+ {
+ func = cb[ i ].callback;
+ func( monitor, evt.code, evt.filename, cb[ i ].user_data );
+ }
+ }
+ break;
+ default:
+ return TRUE; /* Other events are not supported */
+ }
+ }
+ }
+ return TRUE;
+#else
+ return TRUE;
+#endif
+}
+
diff -urNd ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.h pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.h
--- ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.h 2006-04-03 00:38:33.000000000 +0100
+++ pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.h 2006-08-20 20:47:00.000000000 +0100
@@ -20,7 +20,16 @@
#define _VFS_FILE_MONITOR_H_
#include <glib.h>
+#ifdef HAVE_FAM_H
#include <fam.h>
+#else
+# define FAMCreated 0
+# define FAMDeleted 1
+# define FAMChanged 2
+typedef struct {
+ int reqnum;
+} FAMRequest;
+#endif
G_BEGIN_DECLS

View File

@ -0,0 +1,60 @@
Index: pcmanfm-0.5/src/main.c
===================================================================
--- pcmanfm-0.5.orig/src/main.c
+++ pcmanfm-0.5/src/main.c
@@ -118,7 +118,7 @@
static void init_folder();
static void init_daemon_or_desktop();
-static void check_icon_theme();
+/*static void check_icon_theme();*/
static gboolean handle_parsed_commandline_args();
@@ -322,7 +322,7 @@
gtk_widget_show ( GTK_WIDGET( main_window ) );
return main_window;
}
-
+#if 0
void check_icon_theme()
{
GtkSettings * settings;
@@ -361,7 +361,7 @@
}
g_free( theme );
}
-
+#endif
#ifdef _DEBUG_THREAD
G_LOCK_DEFINE(gdk_lock);
@@ -405,7 +405,7 @@
vfs_file_info_set_thumbnail_size( app_settings.big_icon_size,
app_settings.small_icon_size );
- check_icon_theme();
+/* check_icon_theme();*/
folder_initialized = TRUE;
}
Index: pcmanfm-0.5/src/main-window.c
===================================================================
--- pcmanfm-0.5.orig/src/main-window.c
+++ pcmanfm-0.5/src/main-window.c
@@ -633,6 +633,7 @@
gtk_widget_grab_focus ( GTK_WIDGET( main_window->address_bar ) );
#ifdef SUPER_USER_CHECKS
+#if 0
/* Create warning bar for super user */
if ( geteuid() == 0 ) /* Run as super user! */
{
@@ -648,6 +649,7 @@
main_window->status_bar, FALSE, FALSE, 2 );
}
#endif
+#endif
/* Create client area */
main_window->notebook = gtk_notebook_new();

View File

@ -0,0 +1,13 @@
--- pcmanfm-0.3.2.2-org/src/inotify/inotify-syscalls.h 2010-01-07 14:53:56.938000062 +0800
+++ pcmanfm-0.3.2.2/src/inotify/inotify-syscalls.h 2010-01-07 14:54:57.830000065 +0800
@@ -39,6 +39,10 @@
# define __NR_inotify_init 290
# define __NR_inotify_add_watch 291
# define __NR_inotify_rm_watch 292
+#elif defined (__mips__)
+# define __NR_inotify_init 284
+# define __NR_inotify_add_watch 285
+# define __NR_inotify_rm_watch 286
#else
# error "Unsupported architecture!"
#endif

View File

@ -4,12 +4,12 @@ BUGTRACKER = ""
LICENSE = "GPLv2 & GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
file://src/pcmanfm.h;endline=22;md5=417b3855771a3a87f8ad753d994491f0 \
file://src/gseal-gtk-compat.h;endline=21;md5=46922c8691f58d124f9420fe16149ce2"
file://src/pcmanfm.h;endline=22;md5=0fa9129ee918f493e573154f6ec43fb7 \
file://src/find-files.c;endline=26;md5=9a92e8f329c97de94e90976a37dde5a5"
SECTION = "x11"
PRIORITY = "optional"
DEPENDS = "gtk+ startup-notification libfm"
DEPENDS = "gtk+ startup-notification"
DEPENDS_append_poky = " libowl"
PR = "r0"
@ -20,9 +20,14 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/pcmanfm-${PV}.tar.gz \
file://gnome-fs-directory.png \
file://gnome-fs-regular.png \
file://gnome-mime-text-plain.png \
file://emblem-symbolic-link.png"
file://emblem-symbolic-link.png \
file://desktop.patch;patch=1 \
file://no-warnings.patch;patch=1 \
file://pcmanfm-mips-fix.patch;patch=1"
#SRC_URI_append_poky = " file://owl-window-menu.patch;patch=1"
SRC_URI_append_poky = " file://owl-window-menu.patch;patch=1"
EXTRA_OECONF = "--enable-inotify --disable-hal"
inherit autotools pkgconfig
@ -32,3 +37,5 @@ do_install_append () {
install -m 0644 ${WORKDIR}/*.png ${D}/${datadir}/pixmaps
}
FILES_${PN} += "${datadir}/pixmaps/*.png"