[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[6463] enable XSParagraph module with fall-back to pure Perl module
From: |
Gavin D. Smith |
Subject: |
[6463] enable XSParagraph module with fall-back to pure Perl module |
Date: |
Sat, 25 Jul 2015 12:12:25 +0000 |
Revision: 6463
http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=6463
Author: gavin
Date: 2015-07-25 12:12:24 +0000 (Sat, 25 Jul 2015)
Log Message:
-----------
enable XSParagraph module with fall-back to pure Perl module
Modified Paths:
--------------
trunk/ChangeLog
trunk/tp/Texinfo/Convert/Plaintext.pm
trunk/tp/Texinfo/Convert/XSParagraph/XSParagraph.pm
trunk/tp/Texinfo/Convert/XSParagraph/XSParagraph.xs
trunk/tp/Texinfo/Convert/XSParagraph/xspara.c
trunk/tp/Texinfo/Convert/XSParagraph/xspara.h
trunk/tp/t/converters_tests.t
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2015-07-24 22:29:51 UTC (rev 6462)
+++ trunk/ChangeLog 2015-07-25 12:12:24 UTC (rev 6463)
@@ -1,3 +1,14 @@
+2015-07-25 Gavin Smith <address@hidden>
+
+ * tp/Texinfo/Convert/Plaintext.pm (new_formatter): Uncomment
+ line using XSParagraph module. Don't call XSParagraph::hello.
+ * tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_hello)
+ (xspara_init): Rename. Specify whether an error occurred in the
+ return value.
+ * tp/Texinfo/Convert/XSParagraph/XSParagraph.pm: Place code in
+ BEGIN block. Call XSParagraph::init, and on error, replace
+ XSParagraph module with Texinfo::Convert::Paragraph.
+
2015-07-24 Karl Berry <address@hidden>
* util/htmlxref.cnf (flex): no mono manual.
@@ -2,12 +13,12 @@
-2015-07-25 Gavin Smith <address@hidden>
+2015-07-24 Gavin Smith <address@hidden>
* doc/refcard/txirefcard.texi: 'h' for Info tutorial, not 'H'.
-2015-07-25 Gavin Smith <address@hidden>
+2015-07-24 Gavin Smith <address@hidden>
* doc/texinfo.texi (Writing a Menu, Command List),
* doc/refcard/txirefcard.tex: Document @validatemenus.
-2015-07-25 Gavin Smith <address@hidden>
+2015-07-24 Gavin Smith <address@hidden>
Modified: trunk/tp/Texinfo/Convert/Plaintext.pm
===================================================================
--- trunk/tp/Texinfo/Convert/Plaintext.pm 2015-07-24 22:29:51 UTC (rev
6462)
+++ trunk/tp/Texinfo/Convert/Plaintext.pm 2015-07-25 12:12:24 UTC (rev
6463)
@@ -32,8 +32,6 @@
use Texinfo::Convert::UnFilled;
use XSParagraph;
-XSParagraph::hello ();
-# TODO: Run initialization code for XSParagraph implicitly.
use Carp qw(cluck);
Modified: trunk/tp/Texinfo/Convert/XSParagraph/XSParagraph.pm
===================================================================
--- trunk/tp/Texinfo/Convert/XSParagraph/XSParagraph.pm 2015-07-24 22:29:51 UTC
(rev 6462)
+++ trunk/tp/Texinfo/Convert/XSParagraph/XSParagraph.pm 2015-07-25 12:12:24 UTC
(rev 6463)
@@ -34,9 +34,7 @@
);
-our $VERSION = '6.0';
-#bootstrap XSParagraph $VERSION;
-
+BEGIN {
# We get this from XSParagraph.la
# my $dlpath = "Texinfo/Convert/XSParagraph/.libs/XSParagraph.so.0";
@@ -60,13 +58,15 @@
my ($libtool_dir, $libtool_archive) = _find_file("XSParagraph.la");
if (!$libtool_archive) {
- die "XSParagraph: couldn't find Libtool archive file\n";
+ warn "XSParagraph: couldn't find Libtool archive file\n";
+ goto FALLBACK;
}
my $fh;
open $fh, $libtool_archive;
if (!$fh) {
- die "XSParagraph: couldn't open Libtool archive file\n";
+ warn "XSParagraph: couldn't open Libtool archive file\n";
+ goto FALLBACK;
}
# Look for the line in XSParagraph.la giving the name of the loadable object.
@@ -78,7 +78,8 @@
}
}
if (!$dlname) {
- die "XSParagraph: couldn't find name of shared object\n";
+ warn "XSParagraph: couldn't find name of shared object\n";
+ goto FALLBACK;
}
# The *.so file is under .libs in the source directory.
@@ -87,14 +88,17 @@
my $dlpath = DynaLoader::dl_findfile($dlname);
if (!$dlpath) {
- die "XSParagraph: couldn't find $dlname\n";
+ warn "XSParagraph: couldn't find $dlname\n";
+ goto FALLBACK;
}
#print STDERR "loadable object is at $dlpath\n";
my $module = "XSParagraph";
+our $VERSION = '6.0';
# Following steps under "bootstrap" in "man DynaLoader".
+#bootstrap XSParagraph $VERSION;
# TODO: Execute blib/arch/auto/XSParagraph/XSParagraph.bs ?
# That file is empty.
@@ -103,7 +107,8 @@
my $flags = 0;
my $libref = DynaLoader::dl_load_file($dlpath, $flags);
if (!$libref) {
- die "XSParagraph: couldn't load file $dlpath\n";
+ warn "XSParagraph: couldn't load file $dlpath\n";
+ goto FALLBACK;
}
my @undefined_symbols = DynaLoader::dl_undef_symbols();
if ($#undefined_symbols+1 != 0) {
@@ -111,13 +116,15 @@
}
my $symref = DynaLoader::dl_find_symbol($libref, "boot_$module");
if (!$symref) {
- die "XSParagraph: couldn't find boot_$module symbol\n";
+ warn "XSParagraph: couldn't find boot_$module symbol\n";
+ goto FALLBACK;
}
my $boot_fn = DynaLoader::dl_install_xsub("${module}::bootstrap",
$symref, $dlname);
if (!$boot_fn) {
- die "XSParagraph: couldn't bootstrap\n";
+ warn "XSParagraph: couldn't bootstrap\n";
+ goto FALLBACK;
}
push @DynaLoader::dl_shared_objects, $dlpath; # record files loaded
@@ -127,6 +134,20 @@
# be called from Perl code.
&$boot_fn($module, $VERSION);
+if (!XSParagraph::init ()) {
+ warn "XSParagraph: error initializing\n";
+ goto FALLBACK;
+}
+
+if (0) {
+FALLBACK:
+ # Fall back to using the Perl code.
+ *XSParagraph:: = *Texinfo::Convert::Paragraph::;
+}
+
+} # end BEGIN
+
+
# Preloaded methods go here.
#########################################################################
@@ -137,10 +158,5 @@
return "\n";
}
-# Will not be implemented.
-sub add_underlying_text($$)
-{
-}
-
1;
__END__
Modified: trunk/tp/Texinfo/Convert/XSParagraph/XSParagraph.xs
===================================================================
--- trunk/tp/Texinfo/Convert/XSParagraph/XSParagraph.xs 2015-07-24 22:29:51 UTC
(rev 6462)
+++ trunk/tp/Texinfo/Convert/XSParagraph/XSParagraph.xs 2015-07-25 12:12:24 UTC
(rev 6463)
@@ -1,5 +1,4 @@
#include <config.h>
-/* Gnulib needs the config.h from the top-level directory. */
#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
@@ -11,10 +10,10 @@
#include "xspara.h"
-MODULE = XSParagraph PACKAGE = XSParagraph PREFIX = xspara_
+MODULE = XSParagraph PACKAGE = XSParagraph PREFIX = xspara_
-void
-xspara_hello()
+int
+xspara_init ()
void
xspara_set_state (state)
Modified: trunk/tp/Texinfo/Convert/XSParagraph/xspara.c
===================================================================
--- trunk/tp/Texinfo/Convert/XSParagraph/xspara.c 2015-07-24 22:29:51 UTC
(rev 6462)
+++ trunk/tp/Texinfo/Convert/XSParagraph/xspara.c 2015-07-25 12:12:24 UTC
(rev 6463)
@@ -183,8 +183,8 @@
#endif
-void
-xspara_hello (void)
+int
+xspara_init (void)
{
char *utf8_locale = 0;
int len;
@@ -230,7 +230,7 @@
{
failure:
fprintf (stderr, "Couldn't set UTF-8 character type in locale.\n");
- abort ();
+ return 0; /* failure */
}
else
{
@@ -241,6 +241,7 @@
fprintf (stderr, "character encoding is: %s\n",
nl_langinfo (CODESET));
*/
+ return 1; /* success */
}
}
Modified: trunk/tp/Texinfo/Convert/XSParagraph/xspara.h
===================================================================
--- trunk/tp/Texinfo/Convert/XSParagraph/xspara.h 2015-07-24 22:29:51 UTC
(rev 6462)
+++ trunk/tp/Texinfo/Convert/XSParagraph/xspara.h 2015-07-25 12:12:24 UTC
(rev 6463)
@@ -1,7 +1,7 @@
int xspara_new (HV *conf);
void xspara_set_state (HV *state);
void xspara_get_state (HV *state);
-void xspara_hello (void);
+int xspara_init (void);
char *xspara_add_next (char *, int, int end_sentence);
char *xspara_add_text (char *);
char *xspara_set_space_protection (int space_protection, int ignore_columns,
@@ -11,3 +11,6 @@
char *xspara_get_pending (void);
char *xspara_end (void);
char *xspara_add_pending_word (int add_spaces);
+void xspara_allow_end_sentence (void);
+void xspara_inhibit_end_sentence (void);
+int xspara_end_line_count (void);
Modified: trunk/tp/t/converters_tests.t
===================================================================
--- trunk/tp/t/converters_tests.t 2015-07-24 22:29:51 UTC (rev 6462)
+++ trunk/tp/t/converters_tests.t 2015-07-25 12:12:24 UTC (rev 6463)
@@ -984,7 +984,9 @@
'.
$at_commands_in_refs_text,
-{}, {'TEST' => 1}], # TEST => 1 triggers @today constant expansion for diffs
+{'todo' =>
+ {'file_info' => 'different results from XS and pure Perl modules',
+ }}, {'TEST' => 1}], # TEST => 1 triggers @today constant expansion for diffs
['at_commands_in_refs_latin1',
'@setfilename at_commands_in_refs_latin1.info
@documentencoding ISO-8859-15
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [6463] enable XSParagraph module with fall-back to pure Perl module,
Gavin D. Smith <=