[gxml/serialization] Fixes on Win32/64 build
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml/serialization] Fixes on Win32/64 build
- Date: Tue, 1 Apr 2014 18:55:29 +0000 (UTC)
commit 4a34996804a9163ff61f1a24847d2b0f1a7c312a
Author: Daniel Espinosa <esodan gmail com>
Date: Fri Mar 28 11:24:48 2014 -0600
Fixes on Win32/64 build
configure.ac | 40 ++++++-
gxml/Makefile.am | 102 ++++++++++++-----
gxml/gxml.symbols | 326 +++++++++++++++++++++++++++++++++++++++++++++++++++++
gxml/symbols.py | 26 +++++
4 files changed, 462 insertions(+), 32 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 88365ad..0fd0243 100644
--- a/configure.ac
+++ b/configure.ac
@@ -155,6 +155,39 @@ fi
# Check for GObject Introspection
GOBJECT_INTROSPECTION_CHECK([1.32.0])
+dnl Check Cross Compile
+dnl ******************************
+dnl Check for Operating System
+dnl ******************************
+dnl linklibext is the shared link library extension, which varies by platform
+
+#EXPORT_SYM_REGEX='-export-symbols-regex "^(gxml_|fnYM49765777344607__gxml).*"'
+#AC_MSG_CHECKING([for platform])
+#platform_win32=no
+#linklibext=".so"
+case "$host" in
+*-mingw*)
+# AC_MSG_RESULT([Win32 - MinGW])
+ platform_win32=yes
+# AC_DEFINE([USING_MINGW],[],[Using MinGW])
+# NO_UNDEFINED='-no-undefined'
+# LIBTOOL_EXPORT_OPTIONS=
+# linklibext=".dll"
+# AC_CHECK_TOOL(WINDRES, windres, windres)
+# AC_SUBST(WINDRES)
+# AC_CHECK_TOOL(DLLTOOL, dlltool, dlltool)
+# AC_SUBST(DLLTOOL)
+ ;;
+*)
+# AC_MSG_RESULT([Unix])
+# NO_UNDEFINED=''
+# LIBTOOL_EXPORT_OPTIONS=$EXPORT_SYM_REGEX
+# ;;
+esac
+AM_CONDITIONAL(PLATFORM_WIN32, [test $platform_win32 = yes])
+#AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
+#AC_SUBST(NO_UNDEFINED)
+
### Autoconf generating Makefiles
AC_CONFIG_FILES([
Makefile
@@ -177,7 +210,8 @@ AC_OUTPUT
# Print configuration summary
echo ""
echo " Configuration summary for GXml-$GXML_VERSION"
-echo " Installation prefix: $prefix"
-echo " Enable GObject Introspection (--enable-instrospection): `if test x$have_instrospection != xno;
then echo yes; else echo no; fi`"
-echo " Documentation: ${have_valadoc}"
+echo " Installation prefix: $prefix"
+echo " GObject Introspection: $found_introspection"
+echo " Vala Documentation: ${have_valadoc}"
+echo " Platform: $host"
echo ""
diff --git a/gxml/Makefile.am b/gxml/Makefile.am
index 8dd9cbb..499dc83 100644
--- a/gxml/Makefile.am
+++ b/gxml/Makefile.am
@@ -3,25 +3,6 @@
# Empty variable to be added elements later
CLEANFILES=
-### General Compilation flags
-AM_CPPFLAGS = \
- -include $(CONFIG_HEADER) \
- -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
- -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
- -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
- -DG_LOG_DOMAIN=\"gxml\" \
- $(NULL)
-
-AM_CFLAGS = \
- -g \
- $(GLIB_CFLAGS) \
- $(LIBXML_CFLAGS) \
- $(GIO_CFLAGS) \
- $(GEE_CFLAGS) \
- $(VALA_CFLAGS) \
- $(NULL)
-
-# -Wall # TODO: add this back when we can properly handle more libxml2/vala warnings
### Library
@@ -29,10 +10,8 @@ AM_CFLAGS = \
# Library to create
lib_LTLIBRARIES = libgxml-0.4.la
-VALAC=valac
-
# Vala source code
-libgxml_0_4_la_SOURCES = \
+sources = \
namespace-info.vala \
Attr.vala \
BackedNode.vala \
@@ -69,11 +48,30 @@ libgxml_0_4_la_SOURCES = \
SerializableGeeArrayList.vala \
SerializableContainer.vala
-gxml_0_4_la_vala.stamp: $(libgxml_0_4_la_SOURCES)
+
+### General Compilation flags
+AM_CPPFLAGS = \
+ -include $(CONFIG_HEADER) \
+ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
+ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
+ -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
+ -DG_LOG_DOMAIN=\"gxml\" \
+ $(NULL)
+
+AM_CFLAGS = \
+ -g \
+ $(GLIB_CFLAGS) \
+ $(LIBXML_CFLAGS) \
+ $(GIO_CFLAGS) \
+ $(GEE_CFLAGS) \
+ $(VALA_CFLAGS) \
+ $(NULL)
+
+# -Wall # TODO: add this back when we can properly handle more libxml2/vala warnings
+
# library flags
-VALAFLAGS = \
- $(AM_VALAFLAGS) \
+AM_VALAFLAGS = \
$(ERROR_VALAFLAGS) \
--gir=GXml-$(API_VERSION).gir \
--library=gxml-0.4 \
@@ -87,10 +85,10 @@ VALAFLAGS = \
--includedir gxml \
--vapi gxml-0.4.vapi \
-H gxml.h \
+ -C \
$(NULL)
libgxml_0_4_la_LIBADD = \
- $(AM_LDADD) \
$(GEE_LIBS) \
$(GIO_LIBS) \
$(GLIB_LIBS) \
@@ -99,15 +97,20 @@ libgxml_0_4_la_LIBADD = \
$(NULL)
libgxml_0_4_la_LDFLAGS = \
- $(AM_LDFLAGS) \
-version-info "$(LT_CURRENT)":"$(LT_REVISION)":"$(LT_AGE)"
+gxml_0_4_la_vala.stamp: $(sources)
+ $(VALAC) $(AM_VALAFLAGS) $(sources)
+
+libgxml_0_4_la_SOURCES=$(sources:.vala=.c)
+
# .h header file
-gxml.h: libgxml-0.4.la
+gxml.h: gxml_0_4_la_vala.stamp
gxmldir= $(includedir)/gxml-$(API_VERSION)/gxml
gxml_HEADERS = gxml.h
# .vapi Vala API file
+gxml-0.4.vapi: gxml_0_4_la_vala.stamp
vapidir = $(datadir)/vala/vapi
dist_vapi_DATA = \
gxml-0.4.vapi \
@@ -153,6 +156,45 @@ typelibdir = $(INTROSPECTION_TYPELIBDIR)
typelib_DATA = GXml-0.4.typelib
CLEANFILES += $(gir_DATA) $(typelibs_DATA)
endif
+
+if PLATFORM_WIN32
+libgxml_0_4_la_LDFLAGS += -export-symbols $(builddir)/libgxml-0.4.def
+#libgxml_0_4_la_LDFLAGS += -export-all-symbols -out-implib libgxml-0.4.lib --out-def libgxml-0.4.def
+libgxml_0_4_la_DEPENDENCIES = libgxml-0.4.def
+#libgxml_0_4_la_CFLAGS += -o libgxml-0.4.dll
+
+libgxml-0.4.def: gxml.symbols
+ (echo -e EXPORTS; $(CPP) -P $(DEF_FLAGS) - <$(srcdir)/gxml.symbols | sed -e '/^$$/d' -e 's/^/ /' -e
's/G_GNUC_[^ ]*//g' | sort) > gxml.def.tmp && mv gxml.def.tmp libgxml-0.4.def
+
+libgxml-0.4.lib: libgxml-0.4.def
+ $(DLLTOOL) --dllname libgxml-0.4.a --def libgxml-0.4.def --output-lib libgxml-0.4.lib
+
+#libgxml-0.4.dll: libgxml-0.4.la
+# $(CC) -shared -o libgxml-0.4.dll $(libgxml_0_4_la_SOURCES) $(libgxml_0_4_la_CFLAGS) \
+# -Wl,-export-symbols,$(builddir)/gxml.def,-export-lib,libgxml-0.4.lib,$(libgxml_0_4_la_LDFLAGS)
+
+#install-data-local: install-def-files
+#uninstall-local: uninstall-def-files
+
+#install-def-files: gxml.def libgxml-0.4.lib
+# $(INSTALL) $(builddir)/gxml.def $(DESTDIR)$(libdir)/libgxml-0.4.def
+# $(INSTALL) $(builddir)/libgxml-0.4.lib $(DESTDIR)$(libdir)/
+
+#uninstall-def-files:
+# -rm $(DESTDIR)$(libdir)/libgxml-0.4.def
+# -rm $(DESTDIR)$(libdir)/libgxml-0.4.lib
+libgxml-0.4.lib: libgxml-0.4.la
+libgxmllibdir=$(libdir)
+libgxmllib_DATA=libgxml-0.4.lib
+
+libgxml-0.4.def: libgxml-0.4.la
+libgxmldefdir=$(libdir)
+libgxmldef_DATA=libgxml-0.4.def
+
+endif
+
+
+
### Files to clean
BUILT_SOURCES = \
gxml_0_4_la_vala.stamp \
@@ -163,7 +205,9 @@ BUILT_SOURCES = \
CLEANFILES += \
$(BUILT_SOURCES) \
namespace-info.vala \
- $(libgxml_0_4_la_SOURCES:.vala=.c)
+ $(libgxml_0_4_la_SOURCES:.vala=.c) \
+ $(gir_DATA) \
+ $(typelib_DATA)
MAINTAINERCLEANFILES = $(BUILT_SOURCES)
diff --git a/gxml/gxml.symbols b/gxml/gxml.symbols
new file mode 100644
index 0000000..9c8bcaa
--- /dev/null
+++ b/gxml/gxml.symbols
@@ -0,0 +1,326 @@
+gxml_attr_get_name
+gxml_attr_get_specified
+gxml_attr_get_type
+gxml_attr_get_value
+gxml_attr_set_value
+gxml_backed_node_get_type
+gxml_cdata_section_get_type
+gxml_character_data_append_data
+gxml_character_data_delete_data
+gxml_character_data_get_data
+gxml_character_data_get_length
+gxml_character_data_get_type
+gxml_character_data_insert_data
+gxml_character_data_replace_data
+gxml_character_data_set_data
+gxml_character_data_substring_data
+gxml_comment_get_type
+gxml_document_construct
+gxml_document_construct_from_gfile
+gxml_document_construct_from_libxml2
+gxml_document_construct_from_path
+gxml_document_construct_from_stream
+gxml_document_construct_from_string
+gxml_document_construct_from_string_with_options
+gxml_document_create_attribute
+gxml_document_create_cdata_section
+gxml_document_create_comment
+gxml_document_create_document_fragment
+gxml_document_create_element
+gxml_document_create_entity_reference
+gxml_document_create_processing_instruction
+gxml_document_create_text_node
+gxml_document_fragment_get_type
+gxml_document_get_doctype
+gxml_document_get_document_element
+gxml_document_get_elements_by_tag_name
+gxml_document_get_implementation
+gxml_document_get_type
+gxml_document_new
+gxml_document_new_from_gfile
+gxml_document_new_from_libxml2
+gxml_document_new_from_path
+gxml_document_new_from_stream
+gxml_document_new_from_string
+gxml_document_new_from_string_with_options
+gxml_document_save_to_path
+gxml_document_save_to_stream
+gxml_document_type_get_entities
+gxml_document_type_get_name
+gxml_document_type_get_notations
+gxml_document_type_get_type
+gxml_dom_exception_get_type
+gxml_element_get_attribute
+gxml_element_get_attribute_node
+gxml_element_get_content
+gxml_element_get_elements_by_tag_name
+gxml_element_get_tag_name
+gxml_element_get_type
+gxml_element_normalize
+gxml_element_remove_attribute
+gxml_element_remove_attribute_node
+gxml_element_set_attribute
+gxml_element_set_attribute_node
+gxml_element_set_content
+gxml_entity_get_notation_name
+gxml_entity_get_public_id
+gxml_entity_get_system_id
+gxml_entity_get_type
+gxml_entity_reference_get_type
+gxml_enumeration_construct
+gxml_enumeration_get_nick
+gxml_enumeration_get_nick_camelcase
+gxml_enumeration_get_string
+gxml_enumeration_get_type
+gxml_enumeration_new
+gxml_enumeration_parse
+gxml_enumeration_ref
+gxml_enumeration_to_array
+gxml_enumeration_unref
+gxml_implementation_create_document
+gxml_implementation_get_type
+gxml_implementation_has_feature
+gxml_named_attr_map_get_type
+gxml_named_attr_map_get_values
+gxml_named_node_map_get_length
+gxml_named_node_map_get_named_item
+gxml_named_node_map_get_type
+gxml_named_node_map_item
+gxml_named_node_map_remove_named_item
+gxml_named_node_map_set_named_item
+gxml_namespace_attr_get_defined_namespace_uri
+gxml_namespace_attr_get_defined_prefix
+gxml_namespace_attr_get_type
+gxml_node_add_namespace_attr
+gxml_node_append_child
+gxml_node_clone_node
+gxml_node_copy
+gxml_node_get_attributes
+gxml_node_get_child_nodes
+gxml_node_get_first_child
+gxml_node_get_last_child
+gxml_node_get_local_name
+gxml_node_get_namespace_definitions
+gxml_node_get_namespace_uri
+gxml_node_get_next_sibling
+gxml_node_get_node_name
+gxml_node_get_node_type
+gxml_node_get_node_value
+gxml_node_get_owner_document
+gxml_node_get_parent_node
+gxml_node_get_prefix
+gxml_node_get_previous_sibling
+gxml_node_get_type
+gxml_node_has_child_nodes
+gxml_node_insert_before
+gxml_node_list_append_child
+gxml_node_list_first
+gxml_node_list_get
+gxml_node_list_get_length
+gxml_node_list_get_type
+gxml_node_list_insert_before
+gxml_node_list_item
+gxml_node_list_last
+gxml_node_list_remove_child
+gxml_node_list_replace_child
+gxml_node_list_to_string
+gxml_node_remove_child
+gxml_node_replace_child
+gxml_node_to_string
+gxml_node_type_get_type
+gxml_notation_get_public_id
+gxml_notation_get_system_id
+gxml_notation_get_type
+gxml_param_spec_enumeration
+gxml_processing_instruction_get_data
+gxml_processing_instruction_get_target
+gxml_processing_instruction_get_type
+gxml_processing_instruction_set_data
+gxml_serializable_array_list_construct
+gxml_serializable_array_list_default_deserialize
+gxml_serializable_array_list_default_deserialize_property
+gxml_serializable_array_list_default_serialize
+gxml_serializable_array_list_default_serialize_property
+gxml_serializable_array_list_deserialize
+gxml_serializable_array_list_deserialize_property
+gxml_serializable_array_list_find_property_spec
+gxml_serializable_array_list_get_property_value
+gxml_serializable_array_list_get_type
+gxml_serializable_array_list_init_properties
+gxml_serializable_array_list_list_serializable_properties
+gxml_serializable_array_list_new
+gxml_serializable_array_list_node_name
+gxml_serializable_array_list_property_use_nick
+gxml_serializable_array_list_serialize
+gxml_serializable_array_list_serialize_property
+gxml_serializable_array_list_serialize_use_xml_node_value
+gxml_serializable_array_list_set_property_value
+gxml_serializable_array_list_transform_from_string
+gxml_serializable_array_list_transform_to_string
+gxml_serializable_collection_get_type
+gxml_serializable_collection_is_collection
+gxml_serializable_container_construct
+gxml_serializable_container_get_type
+gxml_serializable_container_init_containers
+gxml_serializable_default_find_property_spec
+gxml_serializable_default_get_property_value
+gxml_serializable_default_init_properties
+gxml_serializable_default_list_serializable_properties
+gxml_serializable_default_set_property_value
+gxml_serializable_deserialize
+gxml_serializable_deserialize_property
+gxml_serializable_dual_key_map_construct
+gxml_serializable_dual_key_map_default_deserialize
+gxml_serializable_dual_key_map_default_deserialize_property
+gxml_serializable_dual_key_map_default_serialize
+gxml_serializable_dual_key_map_default_serialize_property
+gxml_serializable_dual_key_map_deserialize
+gxml_serializable_dual_key_map_deserialize_property
+gxml_serializable_dual_key_map_find_property_spec
+gxml_serializable_dual_key_map_get
+gxml_serializable_dual_key_map_get_enable_unknown_serializable_property
+gxml_serializable_dual_key_map_get_primary_key_type
+gxml_serializable_dual_key_map_get_primary_keys
+gxml_serializable_dual_key_map_get_property_value
+gxml_serializable_dual_key_map_get_secondary_key_type
+gxml_serializable_dual_key_map_get_size
+gxml_serializable_dual_key_map_get_type
+gxml_serializable_dual_key_map_get_value_type
+gxml_serializable_dual_key_map_init_properties
+gxml_serializable_dual_key_map_list_serializable_properties
+gxml_serializable_dual_key_map_new
+gxml_serializable_dual_key_map_node_name
+gxml_serializable_dual_key_map_property_use_nick
+gxml_serializable_dual_key_map_secondary_keys
+gxml_serializable_dual_key_map_serialize
+gxml_serializable_dual_key_map_serialize_property
+gxml_serializable_dual_key_map_serialize_use_xml_node_value
+gxml_serializable_dual_key_map_set
+gxml_serializable_dual_key_map_set_property_value
+gxml_serializable_dual_key_map_transform_from_string
+gxml_serializable_dual_key_map_transform_to_string
+gxml_serializable_dual_key_map_values
+gxml_serializable_dual_key_map_values_for_key
+gxml_serializable_find_property_spec
+gxml_serializable_get_enable_unknown_serializable_property
+gxml_serializable_get_ignored_serializable_properties
+gxml_serializable_get_properties
+gxml_serializable_get_property_value
+gxml_serializable_get_serialized_xml_node_value
+gxml_serializable_get_type
+gxml_serializable_get_unknown_serializable_property
+gxml_serializable_gvalue_to_string
+gxml_serializable_hash_map_construct
+gxml_serializable_hash_map_default_deserialize
+gxml_serializable_hash_map_default_deserialize_property
+gxml_serializable_hash_map_default_serialize
+gxml_serializable_hash_map_default_serialize_property
+gxml_serializable_hash_map_deserialize
+gxml_serializable_hash_map_deserialize_property
+gxml_serializable_hash_map_find_property_spec
+gxml_serializable_hash_map_get_enable_unknown_serializable_property
+gxml_serializable_hash_map_get_property_value
+gxml_serializable_hash_map_get_type
+gxml_serializable_hash_map_init_properties
+gxml_serializable_hash_map_list_serializable_properties
+gxml_serializable_hash_map_new
+gxml_serializable_hash_map_node_name
+gxml_serializable_hash_map_property_use_nick
+gxml_serializable_hash_map_serialize
+gxml_serializable_hash_map_serialize_property
+gxml_serializable_hash_map_serialize_use_xml_node_value
+gxml_serializable_hash_map_set_property_value
+gxml_serializable_hash_map_transform_from_string
+gxml_serializable_hash_map_transform_to_string
+gxml_serializable_init_properties
+gxml_serializable_json_construct
+gxml_serializable_json_deserialize_property
+gxml_serializable_json_find_property_spec
+gxml_serializable_json_get_enable_unknown_serializable_property
+gxml_serializable_json_get_property_value
+gxml_serializable_json_get_type
+gxml_serializable_json_init_properties
+gxml_serializable_json_list_serializable_properties
+gxml_serializable_json_new
+gxml_serializable_json_node_name
+gxml_serializable_json_property_use_nick
+gxml_serializable_json_serialize_property
+gxml_serializable_json_serialize_use_xml_node_value
+gxml_serializable_json_set_property_value
+gxml_serializable_json_transform_from_string
+gxml_serializable_json_transform_to_string
+gxml_serializable_list_serializable_properties
+gxml_serializable_map_dual_key_get_map_primary_key
+gxml_serializable_map_dual_key_get_map_secondary_key
+gxml_serializable_map_dual_key_get_type
+gxml_serializable_map_key_get_map_key
+gxml_serializable_map_key_get_type
+gxml_serializable_node_name
+gxml_serializable_object_model_construct
+gxml_serializable_object_model_default_deserialize
+gxml_serializable_object_model_default_deserialize_property
+gxml_serializable_object_model_default_node_name
+gxml_serializable_object_model_default_serialize
+gxml_serializable_object_model_default_serialize_property
+gxml_serializable_object_model_deserialize
+gxml_serializable_object_model_deserialize_property
+gxml_serializable_object_model_equals
+gxml_serializable_object_model_find_property_spec
+gxml_serializable_object_model_get_enable_unknown_serializable_property
+gxml_serializable_object_model_get_property_value
+gxml_serializable_object_model_get_type
+gxml_serializable_object_model_init_properties
+gxml_serializable_object_model_list_serializable_properties
+gxml_serializable_object_model_node_name
+gxml_serializable_object_model_property_use_nick
+gxml_serializable_object_model_serialize
+gxml_serializable_object_model_serialize_property
+gxml_serializable_object_model_serialize_use_xml_node_value
+gxml_serializable_object_model_set_property_value
+gxml_serializable_object_model_to_string
+gxml_serializable_object_model_transform_from_string
+gxml_serializable_object_model_transform_to_string
+gxml_serializable_property_use_nick
+gxml_serializable_serialize
+gxml_serializable_serialize_property
+gxml_serializable_serialize_use_xml_node_value
+gxml_serializable_set_ignored_serializable_properties
+gxml_serializable_set_properties
+gxml_serializable_set_property_value
+gxml_serializable_set_serialized_xml_node_value
+gxml_serializable_set_unknown_serializable_property
+gxml_serializable_string_to_gvalue
+gxml_serializable_transform_from_string
+gxml_serializable_transform_to_string
+gxml_serializable_tree_map_construct
+gxml_serializable_tree_map_default_deserialize
+gxml_serializable_tree_map_default_deserialize_property
+gxml_serializable_tree_map_default_serialize
+gxml_serializable_tree_map_default_serialize_property
+gxml_serializable_tree_map_deserialize
+gxml_serializable_tree_map_deserialize_property
+gxml_serializable_tree_map_find_property_spec
+gxml_serializable_tree_map_get_property_value
+gxml_serializable_tree_map_get_type
+gxml_serializable_tree_map_init_properties
+gxml_serializable_tree_map_list_serializable_properties
+gxml_serializable_tree_map_new
+gxml_serializable_tree_map_node_name
+gxml_serializable_tree_map_property_use_nick
+gxml_serializable_tree_map_serialize
+gxml_serializable_tree_map_serialize_property
+gxml_serializable_tree_map_serialize_use_xml_node_value
+gxml_serializable_tree_map_set_property_value
+gxml_serializable_tree_map_transform_from_string
+gxml_serializable_tree_map_transform_to_string
+gxml_serialization_clear_cache
+gxml_serialization_construct
+gxml_serialization_deserialize_object
+gxml_serialization_get_type
+gxml_serialization_new
+gxml_serialization_serialize_object
+gxml_text_get_type
+gxml_text_split_text
+gxml_value_get_enumeration
+gxml_value_set_enumeration
+gxml_value_take_enumeration
diff --git a/gxml/symbols.py b/gxml/symbols.py
new file mode 100755
index 0000000..d816e31
--- /dev/null
+++ b/gxml/symbols.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python3
+# You must specify the file to parse as command line argument
+import fileinput
+import re, os
+p = re.compile ('gxml_')
+f = open ("gxml.symbols", 'w')
+d = {'':''}
+blacklist = ("error_quark", "gxml_last_error;", "gxml_warning")
+for line in fileinput.input():
+ bl = False
+ for b in blacklist:
+ if b in line:
+ bl = True
+ print ("found blacklist" + line)
+ if ('gxml_' in line and not ('(gxml_' in line) and not bl):
+ sp = line.split (" ")
+ for s in sp:
+ if ('gxml_' in s):
+ print("FOUND:" + s)
+ d[s] = s
+ds = sorted (d)
+for t in ds:
+ if t == '':
+ continue
+ print ("ADDING: " + t)
+ f.write (str(t)+'\n')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]