[37084] trunk/dports/textproc/rxp
simon at macports.org
simon at macports.org
Mon May 26 09:05:48 PDT 2008
Revision: 37084
http://trac.macosforge.org/projects/macports/changeset/37084
Author: simon at macports.org
Date: 2008-05-26 09:05:48 -0700 (Mon, 26 May 2008)
Log Message:
-----------
textproc/rxp: Updated to version 1.4.8.
Modified Paths:
--------------
trunk/dports/textproc/rxp/Portfile
Added Paths:
-----------
trunk/dports/textproc/rxp/files/
trunk/dports/textproc/rxp/files/patch-1.4.8.diff
Modified: trunk/dports/textproc/rxp/Portfile
===================================================================
--- trunk/dports/textproc/rxp/Portfile 2008-05-26 16:05:31 UTC (rev 37083)
+++ trunk/dports/textproc/rxp/Portfile 2008-05-26 16:05:48 UTC (rev 37084)
@@ -3,7 +3,7 @@
PortSystem 1.0
name rxp
-version 1.4.4
+version 1.4.8
categories textproc
platforms darwin
maintainers simon openmaintainer
@@ -17,7 +17,10 @@
checksums md5 9131f22e11182819b2e1ee2722260a5b \
sha1 5bdb64be2f8b3ddec00fc197da6827d5f8351a6c \
rmd160 96648d9e41911ed0b9520f1b3498449de6f73e72
+distname ${name}-1.4.4
+patchfiles patch-1.4.8.diff
+
use_configure no
destroot {
Added: trunk/dports/textproc/rxp/files/patch-1.4.8.diff
===================================================================
--- trunk/dports/textproc/rxp/files/patch-1.4.8.diff (rev 0)
+++ trunk/dports/textproc/rxp/files/patch-1.4.8.diff 2008-05-26 16:05:48 UTC (rev 37084)
@@ -0,0 +1,531 @@
+diff -r -u ./Makefile Makefile
+--- ./Makefile 2005-01-14 18:27:00.000000000 +0100
++++ Makefile 2006-06-29 13:05:26.000000000 +0200
+@@ -1,4 +1,4 @@
+-VERSION= 1.4.4
++VERSION= 1.4.8
+
+ CHAR_SIZE=16
+
+diff -r -u ./ctype16.h ctype16.h
+--- ./ctype16.h 2004-03-17 16:53:21.000000000 +0100
++++ ctype16.h 2005-11-04 15:53:06.000000000 +0100
+@@ -1,7 +1,7 @@
+ #ifndef CTYPE16_H
+ #define CTYPE16_H
+
+-#ifndef FOR_LT
++#ifndef STD_API
+ #define STD_API
+ #endif
+
+diff -r -u ./dtd.c dtd.c
+--- ./dtd.c 2004-11-02 19:20:20.000000000 +0100
++++ dtd.c 2006-05-30 17:11:06.000000000 +0200
+@@ -469,6 +469,7 @@
+ e->xml_space_attribute = 0;
+ e->xml_lang_attribute = 0;
+ e->xml_id_attribute = 0;
++ e->xml_base_attribute = 0;
+ e->notation_attribute = 0;
+ e->cached_nsdef = 0;
+ e->is_externally_declared = 0;
+@@ -635,6 +636,7 @@
+ static Char xml_space[] = {'x','m','l',':','s','p','a','c','e',0};
+ static Char xml_lang[] = {'x','m','l',':','l','a','n','g',0};
+ static Char xml_id[] = {'x','m','l',':','i','d',0};
++ static Char xml_base[] = {'x','m','l',':','b','a','s','e',0};
+ static Char xmlns[] = {'x','m','l','n','s',0};
+ Char *t;
+
+@@ -695,6 +697,8 @@
+ element->xml_lang_attribute = a;
+ else if(Strcmp(name, xml_id) == 0)
+ element->xml_id_attribute = a;
++ else if(Strcmp(name, xml_base) == 0)
++ element->xml_base_attribute = a;
+
+ a->cached_nsdef = 0;
+
+diff -r -u ./dtd.h dtd.h
+--- ./dtd.h 2004-11-02 18:46:07.000000000 +0100
++++ dtd.h 2006-05-30 17:09:37.000000000 +0200
+@@ -147,6 +147,7 @@
+ AttributeDefinition xml_space_attribute; /* xml:space attribute, if it has one */
+ AttributeDefinition xml_lang_attribute; /* xml:lang attribute, if it has one */
+ AttributeDefinition xml_id_attribute; /* xml:id attribute, if it has one */
++ AttributeDefinition xml_base_attribute; /* xml:base attribute, if it has one */
+ AttributeDefinition notation_attribute; /* NOTATION attribute, if it has one */
+ NSElementDefinition cached_nsdef;
+ const Char *prefix, *local;
+diff -r -u ./input.c input.c
+--- ./input.c 2005-01-14 17:10:00.000000000 +0100
++++ input.c 2005-10-05 13:44:46.000000000 +0200
+@@ -740,7 +740,10 @@
+ /* There are never more characters than bytes in the input */
+ if(s->line_alloc < s->line_length + (s->insize - s->nextin))
+ {
+- s->line_alloc = s->line_length + (s->insize - s->nextin);
++ if(s->line_alloc == 0)
++ s->line_alloc = 1024;
++ while(s->line_alloc < s->line_length + (s->insize - s->nextin))
++ s->line_alloc *= 2;
+ s->line = Realloc(s->line, s->line_alloc * sizeof(Char));
+ }
+
+diff -r -u ./rxp.1 rxp.1
+--- ./rxp.1 2004-12-14 14:29:03.000000000 +0100
++++ rxp.1 2006-03-28 13:17:34.000000000 +0200
+@@ -171,7 +171,8 @@
+ set the initial mode for catalog processing; the default is \f3system\f1.
+
+ If the variable
+-.B RXPURL is set, it is used as the URL of the document to parse. This may
++.B RXPURL
++is set, it is used as the URL of the document to parse. This may
+ be useful in CGI scripts and the like to avoid shell parsing of a
+ user-supplied argument.
+
+diff -r -u ./rxp.c rxp.c
+--- ./rxp.c 2005-01-14 17:57:49.000000000 +0100
++++ rxp.c 2006-06-12 16:14:59.000000000 +0200
+@@ -37,7 +37,7 @@
+ void print_ns_attrs(NamespaceBinding ns, int count);
+ void print_namespaces(NamespaceBinding ns);
+ void print_attrs(ElementDefinition e, Attribute a);
+-void print_text(Char *text);
++void print_text(Char *text, int is_attr);
+ int printable(int c);
+ void print_special(int c);
+ void print_text_bit(Char *text);
+@@ -51,7 +51,7 @@
+ attr_defaults = 0, merge = 0, strict_xml = 0, tree = 0, validate = 0,
+ xml_space = 0, namespaces = 0, simple_error = 0, experiment = 0,
+ read_dtd = 0, unicode_check = 0, xml_id = 0;
+-enum {o_unspec, o_none, o_bits, o_plain, o_can1, o_can2, o_can3, o_infoset, o_diff} output_format = o_unspec;
++enum {o_unspec, o_none, o_bits, o_plain, o_can1, o_can2, o_can3, o_infoset, o_diff, o_diff2} output_format = o_unspec;
+ char *enc_name = 0, *base_uri = 0, *my_dtd_name, *my_dtd_sysid = 0;
+ CharacterEncoding encoding = CE_unknown;
+ InputSource source = 0;
+@@ -140,6 +140,9 @@
+ case 'd':
+ output_format = o_diff;
+ break;
++ case 'D':
++ output_format = o_diff2;
++ break;
+ default:
+ fprintf(stderr, "bad output format %s\n", argv[i]);
+ return 1;
+@@ -181,7 +184,7 @@
+ }
+ time_limit = atoi(argv[i]);
+ #else
+- fprintf("-R not supported on this system\n");
++ fprintf(stderr,"-R not supported on this system\n");
+ return 1;
+ #endif
+ break;
+@@ -423,7 +426,7 @@
+ return 1;
+ }
+ }
+- else if(strict_xml)
++ else if(strict_xml || canonical_output)
+ encoding = CE_UTF_8;
+ else
+ encoding = source->entity->encoding;
+@@ -688,37 +691,58 @@
+ print_ns_attrs(bit->ns_dict, bit->nsc);
+ if(bit->type == XBIT_start)
+ Printf(">");
+- else if(canonical_output)
++ else if(canonical_output && output_format < o_diff)
++ Printf("></%S>", bit->element_definition->name);
++ else if(output_format == o_diff)
+ Printf("></%S>", bit->element_definition->name);
++ else if(output_format > o_diff)
++ Printf(">\n</%S>", bit->element_definition->name);
+ else
+ Printf("/>");
++ if(output_format == o_diff2)
++ Printf("\n");
+ break;
+ case XBIT_end:
+ Printf("</%S>", bit->element_definition->name);
++ if(output_format == o_diff2)
++ Printf("\n");
+ break;
+ case XBIT_pi:
+ Printf("<?%S %S%s",
+ bit->pi_name, bit->pi_chars, nsgml ? ">" : "?>");
+- if(p->state <= PS_prolog2 && !canonical_output)
++ if((p->state <= PS_prolog2 && !canonical_output) ||
++ output_format == o_diff2)
+ Printf("\n");
+ break;
+ case XBIT_cdsect:
+ if(canonical_output)
+ /* Print CDATA sections as plain PCDATA in canonical XML */
+- print_text(bit->cdsect_chars);
++ print_text(bit->cdsect_chars, 0);
+ else
+ Printf("<![CDATA[%S]]>", bit->cdsect_chars);
++ if(output_format == o_diff2)
++ Printf("\n");
+ break;
+ case XBIT_pcdata:
+- if(output_format != o_can3 || !bit->pcdata_ignorable_whitespace)
+- print_text(bit->pcdata_chars);
++ if(output_format == o_diff2)
++ {
++ if(bit->pcdata_chars[0] == '\n')
++ /* we have already printed a linefeed */
++ print_text(bit->pcdata_chars+1, 0);
++ else
++ print_text(bit->pcdata_chars, 0);
++ if(bit->pcdata_chars[Strlen(bit->pcdata_chars) - 1] != '\n')
++ Printf("\n");
++ }
++ else if(output_format != o_can3 || !bit->pcdata_ignorable_whitespace)
++ print_text(bit->pcdata_chars, 0);
+ break;
+ case XBIT_comment:
+ if(canonical_output)
+ /* no comments in canonical XML */
+ break;
+ Printf("<!--%S-->", bit->comment_chars);
+- if(p->state <= PS_prolog2)
++ if(p->state <= PS_prolog2 || output_format == o_diff2)
+ Printf("\n");
+ break;
+ default:
+@@ -764,7 +788,7 @@
+ aa[i]->definition->local);
+ else
+ Printf(" %S=\"", aa[i]->definition->name);
+- print_text(aa[i]->value);
++ print_text(aa[i]->value, 1);
+ Printf("\"");
+ }
+
+@@ -801,7 +825,7 @@
+ VectorPush(dtd_bits, copy);
+ }
+
+-void print_text(Char *text)
++void print_text(Char *text, int is_attr)
+ {
+ Char *pc, *last;
+
+@@ -816,15 +840,18 @@
+ int c = *pc, type = 0;
+
+ if(c == '&' || c == '<' || c == '>' || c == '"' ||
++ c == 0x0d ||
+ (c > 127 && !printable(c)))
+ type = 1;
+- else if(c == 9 || c == 10 || c == 13)
++ else if(c == 9 || c == 10)
+ type = 2;
+- else if(c < 0x20 || (c >= 0x7f && c < 0xa0))
++ else if(c < 0x20 || (c >= 0x7f && c < 0xa0) ||
++ c == 0x85 || c == 0x2028)
+ type = 3;
+
+ if(type == 1 ||
+- (canonical_output && output_format != o_diff && type == 2) ||
++ (canonical_output && output_format < o_diff && type == 2) ||
++ (is_attr && type == 2) ||
+ (xml_version > XV_1_0 && type == 3))
+ {
+ if(pc > last)
+diff -r -u ./stdio16.c stdio16.c
+--- ./stdio16.c 2005-01-14 17:10:54.000000000 +0100
++++ stdio16.c 2005-10-04 17:47:23.000000000 +0200
+@@ -55,6 +55,8 @@
+
+ #define BufferSize 4096
+
++static char8 null = 0;
++
+ typedef int ReadProc(FILE16 *file, unsigned char *buf, int max_count);
+ typedef int WriteProc(FILE16 *file, const unsigned char *buf, int count);
+ typedef int SeekProc(FILE16 *file, long offset, int ptrname);
+@@ -106,6 +108,12 @@
+ static int StringClose(FILE16 *file);
+ static int StringFlush(FILE16 *file);
+
++static int MStringRead(FILE16 *file, unsigned char *buf, int max_count);
++static int MStringWrite(FILE16 *file, const unsigned char *buf, int count);
++static int MStringSeek(FILE16 *file, long offset, int ptrname);
++static int MStringClose(FILE16 *file);
++static int MStringFlush(FILE16 *file);
++
+ #if defined(WIN32) && ! defined(__CYGWIN__)
+ #ifdef SOCKETS_IMPLEMENTED
+ static int WinsockRead(FILE16 *file, unsigned char *buf, int max_count);
+@@ -1158,8 +1166,6 @@
+
+ static int StringClose(FILE16 *file)
+ {
+- static char8 null = 0;
+-
+ if(file->flags & FILE16_write)
+ ConvertASCII(&null, 1, file); /* null terminate */
+
+@@ -1171,6 +1177,115 @@
+
+ static int StringFlush(FILE16 *file)
+ {
++ if(file->flags & FILE16_write)
++ {
++ /* null terminate, but leave position unchanged */
++ int save = file->handle2;
++ ConvertASCII(&null, 1, file);
++ file->handle2 = save;
++ }
++
++ return 0;
++}
++
++FILE16 *MakeStringFILE16(const char *type)
++{
++ FILE16 *file;
++
++ if(!(file = MakeFILE16(type)))
++ return 0;
++
++ file->read = MStringRead;
++ file->write = MStringWrite;
++ file->seek = MStringSeek;
++ file->close = MStringClose;
++ file->flush = MStringFlush;
++
++ file->handle = 0;
++ file->handle2 = 0;
++ file->handle3 = 0;
++
++ return file;
++}
++
++void *StringFILE16String(FILE16 *file)
++{
++ return file->handle;
++}
++
++int StringFILE16StringLength(FILE16 *file)
++{
++ return file->handle2;
++}
++
++static int MStringRead(FILE16 *file, unsigned char *buf, int max_count)
++{
++ return 0;
++}
++
++static int MStringWrite(FILE16 *file, const unsigned char *buf, int count)
++{
++ char *p;
++
++ if(file->handle2 + count > file->handle3)
++ {
++ int newsize = (file->handle3 == 0 ? 32 : file->handle3);
++
++ while(file->handle2 + count > newsize)
++ newsize *= 2;
++
++ file->handle = Realloc(file->handle, newsize);
++ if(!file->handle)
++ return -1;
++ file->handle3 = newsize;
++ }
++
++ p = (char *)file->handle + file->handle2;
++ memcpy(p, buf, count);
++ file->handle2 += count;
++
++ return 0;
++}
++
++static int MStringSeek(FILE16 *file, long offset, int ptrname)
++{
++ switch(ptrname)
++ {
++ case SEEK_CUR:
++ offset = file->handle2 + offset;
++ break;
++ case SEEK_END:
++ if(file->handle3 < 0)
++ return -1;
++ offset = file->handle3 + offset;
++ break;
++ }
++
++ if(file->handle3 >= 0 && offset > file->handle3)
++ return -1;
++
++ file->handle2 = offset;
++
++ return 0;
++}
++
++static int MStringClose(FILE16 *file)
++{
++ Free(file->handle);
++
++ return 0;
++}
++
++static int MStringFlush(FILE16 *file)
++{
++ if(file->flags & FILE16_write)
++ {
++ /* null terminate, but leave position unchanged */
++ int save = file->handle2;
++ ConvertASCII(&null, 1, file);
++ file->handle2 = save;
++ }
++
+ return 0;
+ }
+
+diff -r -u ./stdio16.h stdio16.h
+--- ./stdio16.h 2002-10-03 16:37:44.000000000 +0200
++++ stdio16.h 2005-10-04 17:46:45.000000000 +0200
+@@ -15,6 +15,9 @@
+ STD_API FILE16 *MakeFILE16FromFILE(FILE *f, const char *type);
+ STD_API FILE16 *MakeFILE16FromFD(int fd, const char *type);
+ STD_API FILE16 *MakeFILE16FromString(void *buf, long size, const char *type);
++STD_API FILE16 *MakeStringFILE16(const char *type);
++STD_API void *StringFILE16String(FILE16 *file);
++STD_API int StringFILE16StringLength(FILE16 *file);
+ #ifdef WIN32
+ #ifdef SOCKETS_IMPLEMENTED
+ STD_API FILE16 *MakeFILE16FromWinsock(int sock, const char *type);
+diff -r -u ./system.h system.h
+--- ./system.h 2003-05-20 02:17:27.000000000 +0200
++++ system.h 2005-11-04 15:53:06.000000000 +0100
+@@ -1,11 +1,35 @@
++#if defined(WIN32) && ! defined(__GNUC__)
++#undef HAVE_LONG_LONG
++#else
+ #define HAVE_LONG_LONG
++#endif
+
+ #define SOCKETS_IMPLEMENTED
+
++#define EXPRT
++#define IMPRT
++
++#if defined(WIN32) && ! defined(__CYGWIN__) && ! defined(STD_API)
++ #ifdef __BORLAND__
++ #undef EXPRT
++ #undef IMPRT
++ #define EXPRT _export
++ #define IMPRT _import
++ #else
++ #undef STD_API
++ #ifdef _BUILD_STD
++ #define STD_API __declspec(dllexport)
++ #else
++ #define STD_API __declspec(dllimport)
++ #endif
++ #define XML_API STD_API
++ #endif
++#else
++#if ! defined(STD_API)
+ #define STD_API
+ #define XML_API
+-#define WIN_IMP
+-#define EXPRT
++#endif
++#endif
+
+ void *Malloc(int bytes);
+ void *Realloc(void *mem, int bytes);
+diff -r -u ./url.c url.c
+--- ./url.c 2004-06-11 13:39:17.000000000 +0200
++++ url.c 2006-05-30 18:29:22.000000000 +0200
+@@ -175,6 +175,8 @@
+ * The parts of the URL are returned in scheme, host, port and path
+ * if these are non-null.
+ * Caller should free the results.
++ *
++ * XXX we probably don't handle the query component properly.
+ */
+
+ char *url_merge(const char *url, const char *base,
+@@ -255,6 +257,7 @@
+ if(j - i == 2 && p[i+1] == '.')
+ {
+ strcpy(&p[i+1], p[j] ? &p[j+1] : &p[j]);
++ i = 0; /* start again from beginning */
+ continue;
+ }
+
+@@ -559,6 +562,14 @@
+ *scheme = *host = *path = 0;
+ *port = -1;
+
++ /* Check for degenerate case */
++
++ if(url[0] == 0)
++ {
++ *path = strdup8("");
++ return;
++ }
++
+ /* Does it start with a scheme? */
+
+ for(p = (char *)url; *p; p++)
+diff -r -u ./version.c version.c
+--- ./version.c 2005-01-14 18:09:25.000000000 +0100
++++ version.c 2006-06-29 13:04:14.000000000 +0200
+@@ -1,2 +1,2 @@
+ char *rxp_version_string =
+- "RXP 1.4.4 Copyright Richard Tobin, LTG, HCRC, University of Edinburgh";
++ "RXP 1.4.8 Copyright Richard Tobin, LTG, HCRC, University of Edinburgh";
+diff -r -u ./xmlparser.c xmlparser.c
+--- ./xmlparser.c 2004-11-03 14:47:31.000000000 +0100
++++ xmlparser.c 2005-06-17 20:14:34.000000000 +0200
+@@ -1,10 +1,10 @@
+-/* $Id: xmlparser.c,v 1.131 2004/11/03 13:47:31 richard Exp $
++/* $Id: xmlparser.c,v 1.133 2005/06/17 18:14:34 richard Exp $
+ */
+
+ #define DEBUG_FSM 0
+
+ #ifndef lint
+-static char vcid[] = "$Id: xmlparser.c,v 1.131 2004/11/03 13:47:31 richard Exp $";
++static char vcid[] = "$Id: xmlparser.c,v 1.133 2005/06/17 18:14:34 richard Exp $";
+ #endif /* lint */
+
+ /*
+@@ -3436,7 +3436,7 @@
+ e->name));
+ }
+ else if(ParserGetFlag(p, Validate) && p->standalone == SDD_yes &&
+- e->is_externally_declared)
++ p->state == PS_body && e->is_externally_declared)
+ {
+ require(validity_error(p, "Reference to externally declared entity "
+ "\"%S\" in document declared standalone",
+@@ -4257,6 +4257,8 @@
+ element->xml_id_attribute == a && a->type != AT_id)
+ {
+ warn(p, "xml:id error: xml:id attribute must be declared as type ID");
++ /* Fix the declaration so that we treat it as type ID */
++ a->type = AT_id;
+ }
+ if(ParserGetFlag(p, XMLNamespaces))
+ {
+@@ -4517,6 +4519,8 @@
+ return 1;
+ }
+
++/* NB assumes we are parsing the DTD */
++
+ static int parsing_external_subset(Parser p)
+ {
+ Entity e = p->source->entity;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20080526/653f0897/attachment-0001.htm
More information about the macports-changes
mailing list