--- /dev/null
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN epiphany-extensions-2.18.0.orig/configure.ac epiphany-extensions-2.18.0/configure.ac
+--- epiphany-extensions-2.18.0.orig/configure.ac 2007-03-11 10:29:02.000000000 -0400
++++ epiphany-extensions-2.18.0/configure.ac 2007-03-15 13:17:01.000000000 -0400
+@@ -153,7 +153,7 @@ AM_CONDITIONAL([HAVE_OPENSP],[test "x$en
+
+ AC_MSG_CHECKING([which extensions to build])
+
+-ALL_EXTENSIONS="actions adblock auto-reload auto-scroller certificates error-viewer extensions-manager-ui gestures greasemonkey java-console livehttpheaders page-info permissions push-scroller rss sample sample-mozilla select-stylesheet sidebar smart-bookmarks tab-groups tab-states"
++ALL_EXTENSIONS="actions adblock auto-reload auto-scroller certificates error-viewer extensions-manager-ui gestures greasemonkey java-console livehttpheaders page-info permissions push-scroller rss sample sample-mozilla select-stylesheet sessionsaver sidebar smart-bookmarks tab-groups tab-states"
+ USEFUL_EXTENSIONS="actions adblock auto-reload auto-scroller certificates error-viewer extensions-manager-ui gestures java-console page-info push-scroller select-stylesheet sidebar smart-bookmarks tab-groups tab-states"
+ DEFAULT_EXTENSIONS="actions adblock auto-scroller certificates error-viewer extensions-manager-ui gestures java-console page-info push-scroller select-stylesheet sidebar smart-bookmarks tab-groups tab-states"
+
+@@ -386,6 +386,7 @@ extensions/sample-mozilla/mozilla/Makefi
+ extensions/sample-python/Makefile
+ extensions/select-stylesheet/Makefile
+ extensions/select-stylesheet/mozilla/Makefile
++extensions/sessionsaver/Makefile
+ extensions/sidebar/Makefile
+ extensions/smart-bookmarks/Makefile
+ extensions/smart-bookmarks/mozilla/Makefile
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN epiphany-extensions-2.18.0.orig/extensions/sessionsaver/Makefile.am epiphany-extensions-2.18.0/extensions/sessionsaver/Makefile.am
+--- epiphany-extensions-2.18.0.orig/extensions/sessionsaver/Makefile.am 1969-12-31 19:00:00.000000000 -0500
++++ epiphany-extensions-2.18.0/extensions/sessionsaver/Makefile.am 2007-03-15 13:15:56.000000000 -0400
+@@ -0,0 +1,34 @@
++extensiondir = $(EXTENSIONS_DIR)
++extension_LTLIBRARIES = libsessionsaverextension.la
++
++libsessionsaverextension_la_SOURCES = \
++ ephy-sessionsaver-extension.c \
++ ephy-sessionsaver-extension.h \
++ sessionsaver.c
++libsessionsaverextension_la_LDFLAGS = -module -avoid-version
++
++libsessionsaverextension_la_CPPFLAGS = \
++ -I$(top_srcdir)/include \
++ -DSHARE_DIR=\"$(pkgdatadir)\" \
++ -DEPHY_EXTENSIONS_LOCALEDIR=\"$(datadir)/locale\" \
++ $(AM_CPPFLAGS)
++
++libsessionsaverextension_la_CFLAGS = \
++ $(EPIPHANY_DEPENDENCY_CFLAGS) \
++ $(AM_CFLAGS)
++
++extensioninidir = $(extensiondir)
++extensionini_in_files = sessionsaver.ephy-extension.in.in
++extensionini_DATA = $(extensionini_in_files:.ephy-extension.in.in=.ephy-extension)
++
++%.ephy-extension.in: %.ephy-extension.in.in $(extension_LTLIBRARIES)
++ sed -e "s|%LIBRARY%|`. ./$(extension_LTLIBRARIES) && echo $$dlname`|" \
++ -e "s|%EXTENSION_DIR%|$(extensiondir)|" \
++ $< > $@
++
++@EPIPHANY_EXTENSION_RULE@
++
++CLEANFILES = $(extensionini_DATA)
++DISTCLEANFILES = $(extensionini_DATA)
++
++EXTRA_DIST = $(extensionini_in_files)
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN epiphany-extensions-2.18.0.orig/extensions/sessionsaver/Makefile.in epiphany-extensions-2.18.0/extensions/sessionsaver/Makefile.in
+--- epiphany-extensions-2.18.0.orig/extensions/sessionsaver/Makefile.in 1969-12-31 19:00:00.000000000 -0500
++++ epiphany-extensions-2.18.0/extensions/sessionsaver/Makefile.in 2007-03-15 13:18:13.000000000 -0400
+@@ -0,0 +1,645 @@
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# @configure_input@
++
++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
++# 2003, 2004, 2005 Free Software Foundation, Inc.
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
++# PARTICULAR PURPOSE.
++
++@SET_MAKE@
++
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++VPATH = @srcdir@
++pkgdatadir = $(datadir)/@PACKAGE@
++pkglibdir = $(libdir)/@PACKAGE@
++pkgincludedir = $(includedir)/@PACKAGE@
++top_builddir = ../..
++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
++INSTALL = @INSTALL@
++install_sh_DATA = $(install_sh) -c -m 644
++install_sh_PROGRAM = $(install_sh) -c
++install_sh_SCRIPT = $(install_sh) -c
++INSTALL_HEADER = $(INSTALL_DATA)
++transform = $(program_transform_name)
++NORMAL_INSTALL = :
++PRE_INSTALL = :
++POST_INSTALL = :
++NORMAL_UNINSTALL = :
++PRE_UNINSTALL = :
++POST_UNINSTALL = :
++build_triplet = @build@
++host_triplet = @host@
++subdir = extensions/sessionsaver
++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++am__aclocal_m4_deps = $(top_srcdir)/m4/epiphany.m4 \
++ $(top_srcdir)/m4/gecko.m4 $(top_srcdir)/m4/gnome-doc-utils.m4 \
++ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/configure.ac
++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
++ $(ACLOCAL_M4)
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
++am__vpath_adj = case $$p in \
++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
++ *) f=$$p;; \
++ esac;
++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
++am__installdirs = "$(DESTDIR)$(extensiondir)" \
++ "$(DESTDIR)$(extensioninidir)"
++extensionLTLIBRARIES_INSTALL = $(INSTALL)
++LTLIBRARIES = $(extension_LTLIBRARIES)
++libsessionsaverextension_la_LIBADD =
++am_libsessionsaverextension_la_OBJECTS = \
++ libsessionsaverextension_la-ephy-sessionsaver-extension.lo \
++ libsessionsaverextension_la-sessionsaver.lo
++libsessionsaverextension_la_OBJECTS = \
++ $(am_libsessionsaverextension_la_OBJECTS)
++DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++depcomp = $(SHELL) $(top_srcdir)/depcomp
++am__depfiles_maybe = depfiles
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
++ $(AM_CFLAGS) $(CFLAGS)
++CCLD = $(CC)
++LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++ $(AM_LDFLAGS) $(LDFLAGS) -o $@
++SOURCES = $(libsessionsaverextension_la_SOURCES)
++DIST_SOURCES = $(libsessionsaverextension_la_SOURCES)
++extensioniniDATA_INSTALL = $(INSTALL_DATA)
++DATA = $(extensionini_DATA)
++ETAGS = etags
++CTAGS = ctags
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++ACLOCAL = @ACLOCAL@
++ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
++ALL_LINGUAS = @ALL_LINGUAS@
++AMDEP_FALSE = @AMDEP_FALSE@
++AMDEP_TRUE = @AMDEP_TRUE@
++AMTAR = @AMTAR@
++AM_CFLAGS = @AM_CFLAGS@
++AM_CPPFLAGS = @AM_CPPFLAGS@
++AM_CXXFLAGS = @AM_CXXFLAGS@
++AR = @AR@
++AUTOCONF = @AUTOCONF@
++AUTOHEADER = @AUTOHEADER@
++AUTOMAKE = @AUTOMAKE@
++AWK = @AWK@
++BUILD_EXTENSIONS = @BUILD_EXTENSIONS@
++CATALOGS = @CATALOGS@
++CATOBJEXT = @CATOBJEXT@
++CC = @CC@
++CCDEPMODE = @CCDEPMODE@
++CFLAGS = @CFLAGS@
++CPP = @CPP@
++CPPFLAGS = @CPPFLAGS@
++CXX = @CXX@
++CXXCPP = @CXXCPP@
++CXXDEPMODE = @CXXDEPMODE@
++CXXFLAGS = @CXXFLAGS@
++CYGPATH_W = @CYGPATH_W@
++DATADIRNAME = @DATADIRNAME@
++DBUS_CFLAGS = @DBUS_CFLAGS@
++DBUS_LIBS = @DBUS_LIBS@
++DEFS = @DEFS@
++DEPDIR = @DEPDIR@
++DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
++DIST_EXTENSIONS = @DIST_EXTENSIONS@
++DOC_USER_FORMATS = @DOC_USER_FORMATS@
++ECHO = @ECHO@
++ECHO_C = @ECHO_C@
++ECHO_N = @ECHO_N@
++ECHO_T = @ECHO_T@
++EGREP = @EGREP@
++ENABLE_SK_FALSE = @ENABLE_SK_FALSE@
++ENABLE_SK_TRUE = @ENABLE_SK_TRUE@
++EPIPHANY_DEPENDENCY_CFLAGS = @EPIPHANY_DEPENDENCY_CFLAGS@
++EPIPHANY_DEPENDENCY_LIBS = @EPIPHANY_DEPENDENCY_LIBS@
++EPIPHANY_EXTENSIONS_DIR = @EPIPHANY_EXTENSIONS_DIR@
++EPIPHANY_EXTENSIONS_MAJOR = @EPIPHANY_EXTENSIONS_MAJOR@
++EPIPHANY_EXTENSION_RULE = @EPIPHANY_EXTENSION_RULE@
++EPIPHANY_HAS_PYTHON = @EPIPHANY_HAS_PYTHON@
++EPIPHANY_ICONDIR = @EPIPHANY_ICONDIR@
++EPIPHANY_REQUIRED = @EPIPHANY_REQUIRED@
++EXEEXT = @EXEEXT@
++EXTENSIONS_DIR = @EXTENSIONS_DIR@
++F77 = @F77@
++FFLAGS = @FFLAGS@
++GCONFTOOL = @GCONFTOOL@
++GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
++GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
++GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
++GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
++GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
++GMOFILES = @GMOFILES@
++GMSGFMT = @GMSGFMT@
++GREP = @GREP@
++HAVE_GECKO_1_7_FALSE = @HAVE_GECKO_1_7_FALSE@
++HAVE_GECKO_1_7_TRUE = @HAVE_GECKO_1_7_TRUE@
++HAVE_GECKO_1_8_1_FALSE = @HAVE_GECKO_1_8_1_FALSE@
++HAVE_GECKO_1_8_1_TRUE = @HAVE_GECKO_1_8_1_TRUE@
++HAVE_GECKO_1_8_FALSE = @HAVE_GECKO_1_8_FALSE@
++HAVE_GECKO_1_8_TRUE = @HAVE_GECKO_1_8_TRUE@
++HAVE_GECKO_1_9_FALSE = @HAVE_GECKO_1_9_FALSE@
++HAVE_GECKO_1_9_TRUE = @HAVE_GECKO_1_9_TRUE@
++HAVE_GECKO_DEBUG_FALSE = @HAVE_GECKO_DEBUG_FALSE@
++HAVE_GECKO_DEBUG_TRUE = @HAVE_GECKO_DEBUG_TRUE@
++HAVE_GNOME_DOC_UTILS_FALSE = @HAVE_GNOME_DOC_UTILS_FALSE@
++HAVE_GNOME_DOC_UTILS_TRUE = @HAVE_GNOME_DOC_UTILS_TRUE@
++HAVE_MOZILLA_TOOLKIT_FALSE = @HAVE_MOZILLA_TOOLKIT_FALSE@
++HAVE_MOZILLA_TOOLKIT_TRUE = @HAVE_MOZILLA_TOOLKIT_TRUE@
++HAVE_OPENSP_FALSE = @HAVE_OPENSP_FALSE@
++HAVE_OPENSP_TRUE = @HAVE_OPENSP_TRUE@
++HELP_DIR = @HELP_DIR@
++INSTALL_DATA = @INSTALL_DATA@
++INSTALL_PROGRAM = @INSTALL_PROGRAM@
++INSTALL_SCRIPT = @INSTALL_SCRIPT@
++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INSTOBJEXT = @INSTOBJEXT@
++INTLLIBS = @INTLLIBS@
++INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
++INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
++INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
++INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
++INTLTOOL_ICONV = @INTLTOOL_ICONV@
++INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
++INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
++INTLTOOL_MERGE = @INTLTOOL_MERGE@
++INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
++INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
++INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
++INTLTOOL_PERL = @INTLTOOL_PERL@
++INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
++INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
++INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
++INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
++INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
++INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
++INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
++INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
++INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
++INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
++INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
++INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
++INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
++INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
++LDFLAGS = @LDFLAGS@
++LIBGLIB_REQUIRED = @LIBGLIB_REQUIRED@
++LIBGTK_REQUIRED = @LIBGTK_REQUIRED@
++LIBOBJS = @LIBOBJS@
++LIBS = @LIBS@
++LIBTOOL = @LIBTOOL@
++LIBXML_REQUIRED = @LIBXML_REQUIRED@
++LN_S = @LN_S@
++LTLIBOBJS = @LTLIBOBJS@
++MAINT = @MAINT@
++MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
++MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
++MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MOZILLA = @MOZILLA@
++MOZILLA_COMPONENT_CFLAGS = @MOZILLA_COMPONENT_CFLAGS@
++MOZILLA_COMPONENT_LIBS = @MOZILLA_COMPONENT_LIBS@
++MOZILLA_FLAVOUR = @MOZILLA_FLAVOUR@
++MOZILLA_HOME = @MOZILLA_HOME@
++MOZILLA_INCLUDE_ROOT = @MOZILLA_INCLUDE_ROOT@
++MOZILLA_PREFIX = @MOZILLA_PREFIX@
++MSGFMT = @MSGFMT@
++MSGFMT_OPTS = @MSGFMT_OPTS@
++OBJEXT = @OBJEXT@
++OMF_DIR = @OMF_DIR@
++PACKAGE = @PACKAGE@
++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
++PACKAGE_NAME = @PACKAGE_NAME@
++PACKAGE_STRING = @PACKAGE_STRING@
++PACKAGE_TARNAME = @PACKAGE_TARNAME@
++PACKAGE_VERSION = @PACKAGE_VERSION@
++PATH_SEPARATOR = @PATH_SEPARATOR@
++PCRE_CFLAGS = @PCRE_CFLAGS@
++PCRE_CONFIG = @PCRE_CONFIG@
++PCRE_LIBS = @PCRE_LIBS@
++PKG_CONFIG = @PKG_CONFIG@
++POFILES = @POFILES@
++POSUB = @POSUB@
++PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
++PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
++PYTHON = @PYTHON@
++PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
++PYTHON_PLATFORM = @PYTHON_PLATFORM@
++PYTHON_PREFIX = @PYTHON_PREFIX@
++PYTHON_VERSION = @PYTHON_VERSION@
++RANLIB = @RANLIB@
++SED = @SED@
++SET_MAKE = @SET_MAKE@
++SHELL = @SHELL@
++STRIP = @STRIP@
++USE_NLS = @USE_NLS@
++VERSION = @VERSION@
++WARN_CFLAGS = @WARN_CFLAGS@
++WARN_CXXFLAGS = @WARN_CXXFLAGS@
++XGETTEXT = @XGETTEXT@
++ac_ct_CC = @ac_ct_CC@
++ac_ct_CXX = @ac_ct_CXX@
++ac_ct_F77 = @ac_ct_F77@
++am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
++am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
++am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
++am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
++am__include = @am__include@
++am__leading_dot = @am__leading_dot@
++am__quote = @am__quote@
++am__tar = @am__tar@
++am__untar = @am__untar@
++bindir = @bindir@
++build = @build@
++build_alias = @build_alias@
++build_cpu = @build_cpu@
++build_os = @build_os@
++build_vendor = @build_vendor@
++datadir = @datadir@
++datarootdir = @datarootdir@
++docdir = @docdir@
++dvidir = @dvidir@
++exec_prefix = @exec_prefix@
++host = @host@
++host_alias = @host_alias@
++host_cpu = @host_cpu@
++host_os = @host_os@
++host_vendor = @host_vendor@
++htmldir = @htmldir@
++includedir = @includedir@
++infodir = @infodir@
++install_sh = @install_sh@
++libdir = @libdir@
++libexecdir = @libexecdir@
++localedir = @localedir@
++localstatedir = @localstatedir@
++mandir = @mandir@
++mkdir_p = @mkdir_p@
++oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
++pkgpyexecdir = @pkgpyexecdir@
++pkgpythondir = @pkgpythondir@
++prefix = @prefix@
++program_transform_name = @program_transform_name@
++psdir = @psdir@
++pyexecdir = @pyexecdir@
++pythondir = @pythondir@
++sbindir = @sbindir@
++sharedstatedir = @sharedstatedir@
++sysconfdir = @sysconfdir@
++target_alias = @target_alias@
++extensiondir = $(EXTENSIONS_DIR)
++extension_LTLIBRARIES = libsessionsaverextension.la
++libsessionsaverextension_la_SOURCES = \
++ ephy-sessionsaver-extension.c \
++ ephy-sessionsaver-extension.h \
++ sessionsaver.c
++
++libsessionsaverextension_la_LDFLAGS = -module -avoid-version
++libsessionsaverextension_la_CPPFLAGS = \
++ -I$(top_srcdir)/include \
++ -DSHARE_DIR=\"$(pkgdatadir)\" \
++ -DEPHY_EXTENSIONS_LOCALEDIR=\"$(datadir)/locale\" \
++ $(AM_CPPFLAGS)
++
++libsessionsaverextension_la_CFLAGS = \
++ $(EPIPHANY_DEPENDENCY_CFLAGS) \
++ $(AM_CFLAGS)
++
++extensioninidir = $(extensiondir)
++extensionini_in_files = sessionsaver.ephy-extension.in.in
++extensionini_DATA = $(extensionini_in_files:.ephy-extension.in.in=.ephy-extension)
++CLEANFILES = $(extensionini_DATA)
++DISTCLEANFILES = $(extensionini_DATA)
++EXTRA_DIST = $(extensionini_in_files)
++all: all-am
++
++.SUFFIXES:
++.SUFFIXES: .c .lo .o .obj
++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
++ @for dep in $?; do \
++ case '$(am__configure_deps)' in \
++ *$$dep*) \
++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
++ && exit 0; \
++ exit 1;; \
++ esac; \
++ done; \
++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign extensions/sessionsaver/Makefile'; \
++ cd $(top_srcdir) && \
++ $(AUTOMAKE) --foreign extensions/sessionsaver/Makefile
++.PRECIOUS: Makefile
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ @case '$?' in \
++ *config.status*) \
++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
++ *) \
++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
++ esac;
++
++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++
++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++install-extensionLTLIBRARIES: $(extension_LTLIBRARIES)
++ @$(NORMAL_INSTALL)
++ test -z "$(extensiondir)" || $(mkdir_p) "$(DESTDIR)$(extensiondir)"
++ @list='$(extension_LTLIBRARIES)'; for p in $$list; do \
++ if test -f $$p; then \
++ f=$(am__strip_dir) \
++ echo " $(LIBTOOL) --mode=install $(extensionLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(extensiondir)/$$f'"; \
++ $(LIBTOOL) --mode=install $(extensionLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(extensiondir)/$$f"; \
++ else :; fi; \
++ done
++
++uninstall-extensionLTLIBRARIES:
++ @$(NORMAL_UNINSTALL)
++ @set -x; list='$(extension_LTLIBRARIES)'; for p in $$list; do \
++ p=$(am__strip_dir) \
++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(extensiondir)/$$p'"; \
++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(extensiondir)/$$p"; \
++ done
++
++clean-extensionLTLIBRARIES:
++ -test -z "$(extension_LTLIBRARIES)" || rm -f $(extension_LTLIBRARIES)
++ @list='$(extension_LTLIBRARIES)'; for p in $$list; do \
++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
++ test "$$dir" != "$$p" || dir=.; \
++ echo "rm -f \"$${dir}/so_locations\""; \
++ rm -f "$${dir}/so_locations"; \
++ done
++libsessionsaverextension.la: $(libsessionsaverextension_la_OBJECTS) $(libsessionsaverextension_la_DEPENDENCIES)
++ $(LINK) -rpath $(extensiondir) $(libsessionsaverextension_la_LDFLAGS) $(libsessionsaverextension_la_OBJECTS) $(libsessionsaverextension_la_LIBADD) $(LIBS)
++
++mostlyclean-compile:
++ -rm -f *.$(OBJEXT)
++
++distclean-compile:
++ -rm -f *.tab.c
++
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsessionsaverextension_la-ephy-sessionsaver-extension.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsessionsaverextension_la-sessionsaver.Plo@am__quote@
++
++.c.o:
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++
++.c.obj:
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
++
++.c.lo:
++@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
++
++libsessionsaverextension_la-ephy-sessionsaver-extension.lo: ephy-sessionsaver-extension.c
++@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsessionsaverextension_la_CPPFLAGS) $(CPPFLAGS) $(libsessionsaverextension_la_CFLAGS) $(CFLAGS) -MT libsessionsaverextension_la-ephy-sessionsaver-extension.lo -MD -MP -MF "$(DEPDIR)/libsessionsaverextension_la-ephy-sessionsaver-extension.Tpo" -c -o libsessionsaverextension_la-ephy-sessionsaver-extension.lo `test -f 'ephy-sessionsaver-extension.c' || echo '$(srcdir)/'`ephy-sessionsaver-extension.c; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsessionsaverextension_la-ephy-sessionsaver-extension.Tpo" "$(DEPDIR)/libsessionsaverextension_la-ephy-sessionsaver-extension.Plo"; else rm -f "$(DEPDIR)/libsessionsaverextension_la-ephy-sessionsaver-extension.Tpo"; exit 1; fi
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ephy-sessionsaver-extension.c' object='libsessionsaverextension_la-ephy-sessionsaver-extension.lo' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsessionsaverextension_la_CPPFLAGS) $(CPPFLAGS) $(libsessionsaverextension_la_CFLAGS) $(CFLAGS) -c -o libsessionsaverextension_la-ephy-sessionsaver-extension.lo `test -f 'ephy-sessionsaver-extension.c' || echo '$(srcdir)/'`ephy-sessionsaver-extension.c
++
++libsessionsaverextension_la-sessionsaver.lo: sessionsaver.c
++@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsessionsaverextension_la_CPPFLAGS) $(CPPFLAGS) $(libsessionsaverextension_la_CFLAGS) $(CFLAGS) -MT libsessionsaverextension_la-sessionsaver.lo -MD -MP -MF "$(DEPDIR)/libsessionsaverextension_la-sessionsaver.Tpo" -c -o libsessionsaverextension_la-sessionsaver.lo `test -f 'sessionsaver.c' || echo '$(srcdir)/'`sessionsaver.c; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsessionsaverextension_la-sessionsaver.Tpo" "$(DEPDIR)/libsessionsaverextension_la-sessionsaver.Plo"; else rm -f "$(DEPDIR)/libsessionsaverextension_la-sessionsaver.Tpo"; exit 1; fi
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sessionsaver.c' object='libsessionsaverextension_la-sessionsaver.lo' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsessionsaverextension_la_CPPFLAGS) $(CPPFLAGS) $(libsessionsaverextension_la_CFLAGS) $(CFLAGS) -c -o libsessionsaverextension_la-sessionsaver.lo `test -f 'sessionsaver.c' || echo '$(srcdir)/'`sessionsaver.c
++
++mostlyclean-libtool:
++ -rm -f *.lo
++
++clean-libtool:
++ -rm -rf .libs _libs
++
++distclean-libtool:
++ -rm -f libtool
++uninstall-info-am:
++install-extensioniniDATA: $(extensionini_DATA)
++ @$(NORMAL_INSTALL)
++ test -z "$(extensioninidir)" || $(mkdir_p) "$(DESTDIR)$(extensioninidir)"
++ @list='$(extensionini_DATA)'; for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ f=$(am__strip_dir) \
++ echo " $(extensioniniDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(extensioninidir)/$$f'"; \
++ $(extensioniniDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(extensioninidir)/$$f"; \
++ done
++
++uninstall-extensioniniDATA:
++ @$(NORMAL_UNINSTALL)
++ @list='$(extensionini_DATA)'; for p in $$list; do \
++ f=$(am__strip_dir) \
++ echo " rm -f '$(DESTDIR)$(extensioninidir)/$$f'"; \
++ rm -f "$(DESTDIR)$(extensioninidir)/$$f"; \
++ done
++
++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | \
++ $(AWK) ' { files[$$0] = 1; } \
++ END { for (i in files) print i; }'`; \
++ mkid -fID $$unique
++tags: TAGS
++
++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
++ $(TAGS_FILES) $(LISP)
++ tags=; \
++ here=`pwd`; \
++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | \
++ $(AWK) ' { files[$$0] = 1; } \
++ END { for (i in files) print i; }'`; \
++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
++ test -n "$$unique" || unique=$$empty_fix; \
++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$tags $$unique; \
++ fi
++ctags: CTAGS
++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
++ $(TAGS_FILES) $(LISP)
++ tags=; \
++ here=`pwd`; \
++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | \
++ $(AWK) ' { files[$$0] = 1; } \
++ END { for (i in files) print i; }'`; \
++ test -z "$(CTAGS_ARGS)$$tags$$unique" \
++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
++ $$tags $$unique
++
++GTAGS:
++ here=`$(am__cd) $(top_builddir) && pwd` \
++ && cd $(top_srcdir) \
++ && gtags -i $(GTAGS_ARGS) $$here
++
++distclean-tags:
++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
++
++distdir: $(DISTFILES)
++ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
++ list='$(DISTFILES)'; for file in $$list; do \
++ case $$file in \
++ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
++ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
++ esac; \
++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
++ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
++ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
++ dir="/$$dir"; \
++ $(mkdir_p) "$(distdir)$$dir"; \
++ else \
++ dir=''; \
++ fi; \
++ if test -d $$d/$$file; then \
++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
++ fi; \
++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
++ else \
++ test -f $(distdir)/$$file \
++ || cp -p $$d/$$file $(distdir)/$$file \
++ || exit 1; \
++ fi; \
++ done
++check-am: all-am
++check: check-am
++all-am: Makefile $(LTLIBRARIES) $(DATA)
++installdirs:
++ for dir in "$(DESTDIR)$(extensiondir)" "$(DESTDIR)$(extensioninidir)"; do \
++ test -z "$$dir" || $(mkdir_p) "$$dir"; \
++ done
++install: install-am
++install-exec: install-exec-am
++install-data: install-data-am
++uninstall: uninstall-am
++
++install-am: all-am
++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
++
++installcheck: installcheck-am
++install-strip:
++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
++ `test -z '$(STRIP)' || \
++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
++mostlyclean-generic:
++
++clean-generic:
++ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
++
++distclean-generic:
++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
++
++maintainer-clean-generic:
++ @echo "This command is intended for maintainers to use"
++ @echo "it deletes files that may require special tools to rebuild."
++clean: clean-am
++
++clean-am: clean-extensionLTLIBRARIES clean-generic clean-libtool \
++ mostlyclean-am
++
++distclean: distclean-am
++ -rm -rf ./$(DEPDIR)
++ -rm -f Makefile
++distclean-am: clean-am distclean-compile distclean-generic \
++ distclean-libtool distclean-tags
++
++dvi: dvi-am
++
++dvi-am:
++
++html: html-am
++
++info: info-am
++
++info-am:
++
++install-data-am: install-extensionLTLIBRARIES install-extensioniniDATA
++
++install-exec-am:
++
++install-info: install-info-am
++
++install-man:
++
++installcheck-am:
++
++maintainer-clean: maintainer-clean-am
++ -rm -rf ./$(DEPDIR)
++ -rm -f Makefile
++maintainer-clean-am: distclean-am maintainer-clean-generic
++
++mostlyclean: mostlyclean-am
++
++mostlyclean-am: mostlyclean-compile mostlyclean-generic \
++ mostlyclean-libtool
++
++pdf: pdf-am
++
++pdf-am:
++
++ps: ps-am
++
++ps-am:
++
++uninstall-am: uninstall-extensionLTLIBRARIES \
++ uninstall-extensioniniDATA uninstall-info-am
++
++.PHONY: CTAGS GTAGS all all-am check check-am clean \
++ clean-extensionLTLIBRARIES clean-generic clean-libtool ctags \
++ distclean distclean-compile distclean-generic \
++ distclean-libtool distclean-tags distdir dvi dvi-am html \
++ html-am info info-am install install-am install-data \
++ install-data-am install-exec install-exec-am \
++ install-extensionLTLIBRARIES install-extensioniniDATA \
++ install-info install-info-am install-man install-strip \
++ installcheck installcheck-am installdirs maintainer-clean \
++ maintainer-clean-generic mostlyclean mostlyclean-compile \
++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++ tags uninstall uninstall-am uninstall-extensionLTLIBRARIES \
++ uninstall-extensioniniDATA uninstall-info-am
++
++
++%.ephy-extension.in: %.ephy-extension.in.in $(extension_LTLIBRARIES)
++ sed -e "s|%LIBRARY%|`. ./$(extension_LTLIBRARIES) && echo $$dlname`|" \
++ -e "s|%EXTENSION_DIR%|$(extensiondir)|" \
++ $< > $@
++
++@EPIPHANY_EXTENSION_RULE@
++# Tell versions [3.59,3.63) of GNU make to not export all variables.
++# Otherwise a system limit (for SysV at least) may be exceeded.
++.NOEXPORT:
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN epiphany-extensions-2.18.0.orig/extensions/sessionsaver/ephy-sessionsaver-extension.c epiphany-extensions-2.18.0/extensions/sessionsaver/ephy-sessionsaver-extension.c
+--- epiphany-extensions-2.18.0.orig/extensions/sessionsaver/ephy-sessionsaver-extension.c 1969-12-31 19:00:00.000000000 -0500
++++ epiphany-extensions-2.18.0/extensions/sessionsaver/ephy-sessionsaver-extension.c 2007-03-15 13:15:56.000000000 -0400
+@@ -0,0 +1,318 @@
++/*
++ * Copyright (C) 2006 Gustavo Gama
++ *
++ * 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, 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, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * $Id: epiphany-extensions-2.18.0-sessionsaver-v4.patch,v 1.1 2007/04/26 16:09:26 dang Exp $
++ */
++
++#include "config.h"
++
++#include "ephy-sessionsaver-extension.h"
++#include "ephy-debug.h"
++#include "ephy-file-helpers.h"
++
++#include <epiphany/ephy-extension.h>
++#include <epiphany/ephy-window.h>
++#include <epiphany/ephy-shell.h>
++#include <epiphany/ephy-session.h>
++
++#include <gmodule.h>
++#include <glib.h>
++#include <glib/gstdio.h>
++#include <glib/gi18n-lib.h>
++
++#include <libgnomevfs/gnome-vfs-ops.h>
++
++#include <gtk/gtkaction.h>
++#include <gtk/gtkactiongroup.h>
++#include <gtk/gtkuimanager.h>
++
++#include <time.h>
++
++#define EPHY_SESSIONSAVER_EXTENSION_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_SESSIONSAVER_EXTENSION, EphySessionSaverExtensionPrivate))
++
++#define WINDOW_DATA_KEY "SessionSaverUIEWindowData"
++#define SESSIONSAVER_DEFAULT_SESSION_FILE "sessionsaver_default.xml"
++
++struct _EphySessionSaverExtensionPrivate
++{
++ gboolean loaded;
++};
++
++typedef struct
++{
++ EphySessionSaverExtension *extension;
++ GtkActionGroup *action_group;
++ guint ui_id;
++} WindowData;
++
++static GObjectClass *parent_class = NULL;
++
++static GType type = 0;
++
++static void quit_cb (GtkAction *action,
++ EphyWindow *window);
++
++static gboolean delete_window_cb (GtkWidget *widget,
++ GdkEvent *event,
++ gpointer user_data);
++
++static const GtkActionEntry action_entries [] =
++{
++ { "SessionSaverUIQuitItem",
++ NULL,
++ N_("_Quit"),
++ "<control>Q",
++ N_("Quit"),
++ G_CALLBACK (quit_cb) },
++};
++
++static void
++ephy_sessionsaver_extension_init (EphySessionSaverExtension *extension)
++{
++ char *session_file;
++ EphyShell *shell;
++ EphySession *session;
++
++ LOG ("EphySessionSaverExtension initialising");
++ extension->priv = EPHY_SESSIONSAVER_EXTENSION_GET_PRIVATE (extension);
++ extension->priv->loaded = FALSE;
++
++ /* check for existance of the default sessionsaver session file */
++ session_file = g_build_filename (ephy_dot_dir (),
++ SESSIONSAVER_DEFAULT_SESSION_FILE,
++ NULL);
++ if (g_file_test (session_file,
++ G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR) == TRUE)
++ {
++
++ shell = ephy_shell_get_default ();
++ session = EPHY_SESSION (ephy_shell_get_session (shell));
++
++ ephy_session_queue_command
++ (session, EPHY_SESSION_CMD_LOAD_SESSION, session_file,
++ NULL, (guint32) time(NULL), FALSE);
++
++ /* the session file is no longer unlinked here. Since the
++ * session queue will only be processed afterwards, it is
++ * important to ensure that there will *exist* a session file
++ * by the time the session command is processed. The removal
++ * of the session file is thus delayed until the (first) window
++ * is attached. */
++ }
++
++ g_free (session_file);
++}
++
++static void
++ephy_sessionsaver_extension_finalize (GObject *object)
++{
++ LOG ("EphySessionSaverExtension finalising");
++
++ G_OBJECT_CLASS (parent_class)->finalize (object);
++}
++
++static void
++save_session (EphySession *session)
++{
++ char *session_file;
++
++ session_file = g_build_filename (ephy_dot_dir (),
++ SESSIONSAVER_DEFAULT_SESSION_FILE,
++ NULL);
++ ephy_session_save (session, session_file);
++ g_free (session_file);
++}
++
++static void
++quit_cb (GtkAction *action,
++ EphyWindow *window)
++{
++ WindowData *data;
++ EphyShell *shell;
++ EphySession *session;
++
++ LOG ("SessionSaver quit");
++ data = g_object_get_data (G_OBJECT (window), WINDOW_DATA_KEY);
++ g_return_if_fail (data != NULL);
++
++ shell = ephy_shell_get_default ();
++ session = EPHY_SESSION( ephy_shell_get_session (shell) );
++
++ save_session (session);
++
++ ephy_session_close(session);
++}
++
++static gboolean
++delete_window_cb (GtkWidget *widget,
++ GdkEvent *event,
++ gpointer user_data)
++{
++ EphyWindow *window;
++ EphyShell *shell;
++ EphySession *session;
++ GList *windows;
++
++ window = EPHY_WINDOW (widget);
++
++ shell = ephy_shell_get_default ();
++ session = EPHY_SESSION( ephy_shell_get_session (shell) );
++
++ windows = ephy_session_get_windows (session);
++ if (g_list_length(windows) == 1) {
++ /* the user closed the last window; save the session before
++ * quiting */
++ save_session (session);
++ }
++
++ g_signal_handlers_disconnect_by_func (window,
++ G_CALLBACK (delete_window_cb),
++ NULL);
++ return FALSE;
++}
++
++static void
++impl_attach_window (EphyExtension *ext,
++ EphyWindow *window)
++{
++ GtkUIManager *manager;
++ WindowData *data;
++
++ data = g_new (WindowData, 1);
++ data->extension = EPHY_SESSIONSAVER_EXTENSION (ext);
++
++ manager = GTK_UI_MANAGER (ephy_window_get_ui_manager (window));
++ data->action_group = gtk_action_group_new ("SessionSaverUIEActions");
++ gtk_action_group_set_translation_domain (data->action_group, GETTEXT_PACKAGE);
++ gtk_action_group_add_actions (data->action_group, action_entries,
++ G_N_ELEMENTS (action_entries), window);
++
++ gtk_ui_manager_insert_action_group (manager, data->action_group, -1);
++ g_object_unref (data->action_group);
++
++ data->ui_id = gtk_ui_manager_new_merge_id (manager);
++
++ g_object_set_data_full (G_OBJECT (window), WINDOW_DATA_KEY, data,
++ (GDestroyNotify) g_free);
++
++ gtk_ui_manager_add_ui (manager, data->ui_id, "/menubar/FileMenu",
++ "SessionSaverUIQuitItem", "SessionSaverUIQuitItem",
++ GTK_UI_MANAGER_MENUITEM, FALSE);
++
++ g_signal_connect (G_OBJECT (window), "delete-event",
++ G_CALLBACK (delete_window_cb), NULL);
++
++ /* if this is the first window attached, set the appropriate flag
++ * and remove the session file */
++ if (data->extension->priv->loaded == FALSE) {
++ char *session_file;
++
++ data->extension->priv->loaded = TRUE;
++
++ /* check for existance of the default sessionsaver session file */
++ session_file = g_build_filename (ephy_dot_dir (),
++ SESSIONSAVER_DEFAULT_SESSION_FILE,
++ NULL);
++ if (g_file_test (session_file,
++ G_FILE_TEST_EXISTS |
++ G_FILE_TEST_IS_REGULAR) == TRUE)
++ {
++ gnome_vfs_unlink (session_file);
++ }
++
++ g_free (session_file);
++ }
++}
++
++static void
++impl_detach_window (EphyExtension *ext,
++ EphyWindow *window)
++{
++ GtkUIManager *manager;
++ WindowData *data;
++
++ manager = GTK_UI_MANAGER (ephy_window_get_ui_manager (window));
++
++ data = (WindowData *) g_object_get_data (G_OBJECT (window),
++ WINDOW_DATA_KEY);
++ g_return_if_fail (data != NULL);
++
++ gtk_ui_manager_remove_ui (manager, data->ui_id);
++ gtk_ui_manager_remove_action_group (manager, data->action_group);
++
++ g_object_set_data (G_OBJECT (window), WINDOW_DATA_KEY, NULL);
++}
++
++static void
++ephy_sessionsaver_extension_iface_init (EphyExtensionIface *iface)
++{
++ iface->attach_window = impl_attach_window;
++ iface->detach_window = impl_detach_window;
++}
++
++static void
++ephy_sessionsaver_extension_class_init (EphySessionSaverExtensionClass *klass)
++{
++ GObjectClass *object_class = G_OBJECT_CLASS (klass);
++ parent_class = g_type_class_peek_parent (klass);
++ object_class->finalize = ephy_sessionsaver_extension_finalize;
++ g_type_class_add_private (object_class, sizeof (EphySessionSaverExtensionPrivate));
++}
++
++GType
++ephy_sessionsaver_extension_get_type (void)
++{
++ return type;
++}
++
++GType
++ephy_sessionsaver_extension_register_type (GTypeModule *module)
++{
++ static const GTypeInfo our_info =
++ {
++ sizeof (EphySessionSaverExtensionClass),
++ NULL, /* base_init */
++ NULL, /* base_finalize */
++ (GClassInitFunc) ephy_sessionsaver_extension_class_init,
++ NULL,
++ NULL, /* class_data */
++ sizeof (EphySessionSaverExtension),
++ 0, /* n_preallocs */
++ (GInstanceInitFunc) ephy_sessionsaver_extension_init
++ };
++
++ static const GInterfaceInfo extension_info =
++ {
++ (GInterfaceInitFunc) ephy_sessionsaver_extension_iface_init,
++ NULL,
++ NULL
++ };
++
++ type = g_type_module_register_type (module,
++ G_TYPE_OBJECT,
++ "EphySessionSaverExtension",
++ &our_info, 0);
++
++ g_type_module_add_interface (module,
++ type,
++ EPHY_TYPE_EXTENSION,
++ &extension_info);
++
++ return type;
++}
++
++/* vim: set tabstop=8 shiftwidth=8 noexpandtab: */
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN epiphany-extensions-2.18.0.orig/extensions/sessionsaver/ephy-sessionsaver-extension.h epiphany-extensions-2.18.0/extensions/sessionsaver/ephy-sessionsaver-extension.h
+--- epiphany-extensions-2.18.0.orig/extensions/sessionsaver/ephy-sessionsaver-extension.h 1969-12-31 19:00:00.000000000 -0500
++++ epiphany-extensions-2.18.0/extensions/sessionsaver/ephy-sessionsaver-extension.h 2007-03-15 13:15:56.000000000 -0400
+@@ -0,0 +1,60 @@
++/*
++ * Copyright (C) 2003 Marco Pesenti Gritti
++ * Copyright (C) 2003 Christian Persch
++ *
++ * 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, 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, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * $Id: epiphany-extensions-2.18.0-sessionsaver-v4.patch,v 1.1 2007/04/26 16:09:26 dang Exp $
++ */
++
++#ifndef EPHY_SESSIONSAVER_EXTENSION_H
++#define EPHY_SESSIONSAVER_EXTENSION_H
++
++#include <glib.h>
++#include <glib-object.h>
++
++G_BEGIN_DECLS
++
++#define EPHY_TYPE_SESSIONSAVER_EXTENSION (ephy_sessionsaver_extension_get_type ())
++#define EPHY_SESSIONSAVER_EXTENSION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EPHY_TYPE_SESSIONSAVER_EXTENSION, EphySessionSaverExtension))
++#define EPHY_SESSIONSAVER_EXTENSION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EPHY_TYPE_SESSIONSAVER_EXTENSION, EphySessionSaverExtensionClass))
++#define EPHY_IS_SESSIONSAVER_EXTENSION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EPHY_TYPE_SESSIONSAVER_EXTENSION))
++#define EPHY_IS_SESSIONSAVER_EXTENSION_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EPHY_TYPE_SESSIONSAVER_EXTENSION))
++#define EPHY_SESSIONSAVER_EXTENSION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EPHY_TYPE_SESSIONSAVER_EXTENSION, EphySessionSaverExtensionClass))
++
++typedef struct _EphySessionSaverExtension EphySessionSaverExtension;
++typedef struct _EphySessionSaverExtensionClass EphySessionSaverExtensionClass;
++typedef struct _EphySessionSaverExtensionPrivate EphySessionSaverExtensionPrivate;
++
++struct _EphySessionSaverExtensionClass
++{
++ GObjectClass parent_class;
++};
++
++struct _EphySessionSaverExtension
++{
++ GObject parent_instance;
++
++ /*< private >*/
++ EphySessionSaverExtensionPrivate *priv;
++};
++
++GType ephy_sessionsaver_extension_get_type (void);
++
++GType ephy_sessionsaver_extension_register_type (GTypeModule *module);
++
++G_END_DECLS
++
++#endif
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN epiphany-extensions-2.18.0.orig/extensions/sessionsaver/sessionsaver.c epiphany-extensions-2.18.0/extensions/sessionsaver/sessionsaver.c
+--- epiphany-extensions-2.18.0.orig/extensions/sessionsaver/sessionsaver.c 1969-12-31 19:00:00.000000000 -0500
++++ epiphany-extensions-2.18.0/extensions/sessionsaver/sessionsaver.c 2007-03-15 13:15:56.000000000 -0400
+@@ -0,0 +1,44 @@
++/*
++ * Copyright (C) 2003 Marco Pesenti Gritti
++ * Copyright (C) 2003, 2004 Christian Persch
++ *
++ * 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, 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, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * $Id: epiphany-extensions-2.18.0-sessionsaver-v4.patch,v 1.1 2007/04/26 16:09:26 dang Exp $
++ */
++
++#include "config.h"
++
++#include "ephy-sessionsaver-extension.h"
++#include "ephy-debug.h"
++
++#include <glib/gi18n-lib.h>
++#include <gmodule.h>
++
++G_MODULE_EXPORT GType register_module (GTypeModule *module);
++
++G_MODULE_EXPORT GType
++register_module (GTypeModule *module)
++{
++ LOG ("Registering EphySessionSaverExtension");
++
++#ifdef ENABLE_NLS
++ /* Initialise the i18n stuff */
++ bindtextdomain (GETTEXT_PACKAGE, EPHY_EXTENSIONS_LOCALEDIR);
++ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
++#endif /* ENABLE_NLS */
++
++ return ephy_sessionsaver_extension_register_type (module);
++}
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN epiphany-extensions-2.18.0.orig/extensions/sessionsaver/sessionsaver.ephy-extension.in.in epiphany-extensions-2.18.0/extensions/sessionsaver/sessionsaver.ephy-extension.in.in
+--- epiphany-extensions-2.18.0.orig/extensions/sessionsaver/sessionsaver.ephy-extension.in.in 1969-12-31 19:00:00.000000000 -0500
++++ epiphany-extensions-2.18.0/extensions/sessionsaver/sessionsaver.ephy-extension.in.in 2007-03-15 13:15:56.000000000 -0400
+@@ -0,0 +1,11 @@
++[Epiphany Extension]
++_Name=SessionSaver
++_Description=Session Saver Extension
++Authors=Gustavo Gama <gama (at) vettalabs (dot) org>
++Version=0.4
++URL=http://www.gnome.org/projects/epiphany/extensions.html
++
++
++[Loader]
++Type=shlib
++Library=%EXTENSION_DIR%/%LIBRARY%