texinfo-commits
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]