This list is closed, nobody may subscribe to it.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(12) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(13) |
Feb
(2) |
Mar
(1) |
Apr
(1) |
May
|
Jun
(38) |
Jul
(10) |
Aug
(70) |
Sep
(63) |
Oct
(61) |
Nov
(41) |
Dec
(28) |
| 2002 |
Jan
(43) |
Feb
(11) |
Mar
(9) |
Apr
(2) |
May
(97) |
Jun
(94) |
Jul
(13) |
Aug
(49) |
Sep
(41) |
Oct
(24) |
Nov
(55) |
Dec
(126) |
| 2003 |
Jan
(90) |
Feb
(75) |
Mar
(32) |
Apr
(24) |
May
(54) |
Jun
(54) |
Jul
(22) |
Aug
(4) |
Sep
(16) |
Oct
(8) |
Nov
(6) |
Dec
(13) |
| 2004 |
Jan
|
Feb
(17) |
Mar
(60) |
Apr
(21) |
May
(12) |
Jun
|
Jul
(13) |
Aug
|
Sep
(29) |
Oct
|
Nov
|
Dec
(2) |
| 2005 |
Jan
(22) |
Feb
(3) |
Mar
(2) |
Apr
(13) |
May
(82) |
Jun
(18) |
Jul
(30) |
Aug
(17) |
Sep
(3) |
Oct
(19) |
Nov
(4) |
Dec
(8) |
| 2006 |
Jan
(1) |
Feb
(6) |
Mar
(2) |
Apr
(40) |
May
|
Jun
(21) |
Jul
(1) |
Aug
(410) |
Sep
(3) |
Oct
|
Nov
(56) |
Dec
(7) |
| 2007 |
Jan
(19) |
Feb
|
Mar
(4) |
Apr
(8) |
May
(19) |
Jun
(6) |
Jul
(4) |
Aug
(6) |
Sep
|
Oct
(4) |
Nov
(3) |
Dec
(2) |
| 2008 |
Jan
(13) |
Feb
(18) |
Mar
(12) |
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
|
Feb
(6) |
Mar
(8) |
Apr
(2) |
May
(2) |
Jun
|
Jul
|
Aug
(2) |
Sep
(11) |
Oct
(13) |
Nov
(17) |
Dec
(6) |
| 2010 |
Jan
(24) |
Feb
(10) |
Mar
(27) |
Apr
(20) |
May
(108) |
Jun
(8) |
Jul
(23) |
Aug
(38) |
Sep
(49) |
Oct
(17) |
Nov
(12) |
Dec
(14) |
| 2011 |
Jan
(17) |
Feb
(7) |
Mar
(28) |
Apr
(8) |
May
(20) |
Jun
(11) |
Jul
(7) |
Aug
(12) |
Sep
(4) |
Oct
(20) |
Nov
(19) |
Dec
(2) |
| 2012 |
Jan
(2) |
Feb
(6) |
Mar
(5) |
Apr
(24) |
May
(5) |
Jun
(4) |
Jul
(6) |
Aug
(18) |
Sep
(38) |
Oct
(26) |
Nov
(12) |
Dec
(6) |
| 2013 |
Jan
(19) |
Feb
(18) |
Mar
(44) |
Apr
(35) |
May
(18) |
Jun
(21) |
Jul
(10) |
Aug
(19) |
Sep
(44) |
Oct
(25) |
Nov
(1) |
Dec
(2) |
| 2014 |
Jan
(8) |
Feb
|
Mar
|
Apr
(5) |
May
(1) |
Jun
(3) |
Jul
|
Aug
(3) |
Sep
|
Oct
(4) |
Nov
(4) |
Dec
(7) |
| 2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(4) |
Jul
(6) |
Aug
(2) |
Sep
(8) |
Oct
(2) |
Nov
(1) |
Dec
(3) |
| 2016 |
Jan
(7) |
Feb
(9) |
Mar
(5) |
Apr
(5) |
May
(9) |
Jun
(4) |
Jul
(20) |
Aug
(4) |
Sep
(7) |
Oct
(6) |
Nov
(9) |
Dec
(2) |
| 2017 |
Jan
(7) |
Feb
(7) |
Mar
(5) |
Apr
|
May
(1) |
Jun
(4) |
Jul
(12) |
Aug
(4) |
Sep
(1) |
Oct
(4) |
Nov
(11) |
Dec
(14) |
| 2018 |
Jan
(3) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
1
|
2
(1) |
3
(1) |
4
|
5
(1) |
|
6
|
7
(2) |
8
|
9
(1) |
10
|
11
(5) |
12
(4) |
|
13
|
14
(2) |
15
|
16
|
17
(1) |
18
|
19
|
|
20
|
21
(1) |
22
|
23
|
24
|
25
|
26
|
|
27
|
28
|
29
|
30
|
31
|
|
|
|
From: Keith M. <kei...@us...> - 2007-05-21 04:13:24
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv30435
Modified Files:
ChangeLog mcsource.c
Log Message:
Handle CRLF line endings in source files.
Index: mcsource.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcsource.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** mcsource.c 17 May 2007 18:45:08 -0000 1.9
--- mcsource.c 21 May 2007 04:13:20 -0000 1.10
***************
*** 10,14 ****
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 14-May-2007
*
*
--- 10,14 ----
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 21-May-2007
*
*
***************
*** 162,166 ****
}
! static
off_t mc_workspace_wanted( int fd )
{
--- 162,166 ----
}
! static inline
off_t mc_workspace_wanted( int fd )
{
***************
*** 177,181 ****
}
! static
size_t mc_add_escape( iconv_t *iconv_map, char *msgbuf, wchar_t code )
{
--- 177,181 ----
}
! static inline
size_t mc_add_escape( iconv_t *iconv_map, char *msgbuf, wchar_t code )
{
***************
*** 187,193 ****
}
! static
char *mc_update_workspace( char *buf, char *cache, unsigned int count )
{
# ifdef DEBUG
unsigned int xcount = count;
--- 187,196 ----
}
! static inline
char *mc_update_workspace( char *buf, char *cache, unsigned int count )
{
+ /* A helper function, to transfer encoded text from the input buffer
+ * to the workspace in which compiled messages are being collected.
+ */
# ifdef DEBUG
unsigned int xcount = count;
***************
*** 231,235 ****
static iconv_t iconv_map[2] = {(iconv_t)(-1), (iconv_t)(-1)};
char *messages; off_t msgloc, headroom;
-
/*
* This `shift' state index is used to control interpretation
--- 234,237 ----
***************
*** 243,269 ****
* to multiply it by the associated number base), are:--
*/
! # define OCTAL_SEQUENCE_DECODE 3
! # define HEXADECIMAL_SEQUENCE_DECODE 4
const char *dev_stdin = "/dev/stdin";
if( (strcmp( input, "-") == 0) || (strcmp( input, dev_stdin ) == 0) )
{
input_fd = fd = STDIN_FILENO;
input = dev_stdin;
}
!
else if( (input_fd = fd = open( input, O_RDONLY | O_BINARY )) < 0 )
return NULL;
-
dfprintf(( stderr, "\n%s:new source file\n%s:", input, input ));
if( (messages = mc_malloc( headroom = mc_workspace_wanted( fd ))) == NULL )
{
close( input_fd );
return NULL;
}
msgloc = (off_t)(0);
while( (fd >= 0) && ((count = read( fd, buf, sizeof( buf ) )) > 0) )
{
char *p = buf;
int high_water_mark = count - ( count >> 2 );
--- 245,298 ----
* to multiply it by the associated number base), are:--
*/
! # define OCTAL_SEQUENCE_DECODE 3
! # define HEXADECIMAL_SEQUENCE_DECODE 4
+ /* We use `last_char' to keep track track the character parsed
+ * in the most * recently preceding cycle. (This is required so
+ * that we may explicitly handle CRLF line terminations, which are
+ * to be considered as a single character code; Microsoft's `O_TEXT'
+ * kludge cannot be used, because we may be running `gencat' as a
+ * cross hosted tool, on a platform which doesn't support this).
+ */
+ wchar_t last_char = L'\0';
+
+ /* Get a file descriptor for the input stream ...
+ */
const char *dev_stdin = "/dev/stdin";
if( (strcmp( input, "-") == 0) || (strcmp( input, dev_stdin ) == 0) )
{
+ /* ... reading from standard input ...
+ */
input_fd = fd = STDIN_FILENO;
input = dev_stdin;
}
! /* ... or otherwise, from a named file ...
! */
else if( (input_fd = fd = open( input, O_RDONLY | O_BINARY )) < 0 )
+ /*
+ * ... which we must be able to open, else we bail out.
+ */
return NULL;
dfprintf(( stderr, "\n%s:new source file\n%s:", input, input ));
+
+ /* Allocate the workspace, in which we will collect the text of the
+ * messages to be compiled into the catalogue ...
+ */
if( (messages = mc_malloc( headroom = mc_workspace_wanted( fd ))) == NULL )
{
+ /* ... but release our input file descriptor, and bail out,
+ * when we can't get sufficient memory.
+ */
close( input_fd );
return NULL;
}
+ /* Parse the input stream ...
+ */
msgloc = (off_t)(0);
while( (fd >= 0) && ((count = read( fd, buf, sizeof( buf ) )) > 0) )
{
+ /* ... for as long as there is text to be read ...
+ */
char *p = buf;
int high_water_mark = count - ( count >> 2 );
***************
*** 271,274 ****
--- 300,306 ----
while( count > 0 )
{
+ /* ... scanning character by character,
+ * through the entire content of the input buffer.
+ */
wchar_t c;
int skip = 1;
***************
*** 307,311 ****
{
count -= skip;
! if( status & NEWLINE )
{
/* We just started parsing a new input line ...
--- 339,355 ----
{
count -= skip;
! if( c == '\r' )
! /*
! * The current input character is a carriage return.
! * This may simply be the lead byte of a CRLF line terminator
! * in a CRLF format input file, but we will not know this until
! * we examine the following input character; request a FLUSH,
! * so we keep the workspace consistent, and defer processing
! * this CR until the next cycle, (by which time, it will
! * have been moved into `last_char').
! */
! status |= FLUSH;
!
! else if( status & NEWLINE )
{
/* We just started parsing a new input line ...
***************
*** 322,326 ****
* of the previous line ...
*/
- status &= ~MSGTEXT;
dfprintf(( stderr, "\n\n%s:%d:new input record", input, linenum ));
if( c == '$' )
--- 366,369 ----
***************
*** 645,649 ****
* escaped octal digit sequence, or it terminates one.
*/
- size_t len = 0;
switch( c )
{
--- 688,691 ----
***************
*** 660,670 ****
* an encoded octal digit sequence ...
*/
! if( (accumulator > 0) && ((len =
! mc_add_escape( iconv_map, messages + msgloc, accumulator ))
! > (size_t)(0)) )
! {
! headroom -= len;
! msgloc += len;
! }
shift = 0;
}
--- 702,724 ----
* an encoded octal digit sequence ...
*/
! if( accumulator > 0 )
! {
! /* if it is a valid, non-NUL character code,
! * add it into the workspace ...
! */
! size_t len;
! dfprintf(( stderr, "\n%s:%u:", input, linenum ));
! len = mc_add_escape( iconv_map, messages + msgloc, accumulator );
! if( len > (size_t)(0) )
! {
! /* ... adjusting `headroom' and `msgloc' accordingly.
! */
! headroom -= len;
! msgloc += len;
! }
! }
! /* Cancel the shift state which brought us to here;
! * its purpose has been satisfied.
! */
shift = 0;
}
***************
*** 684,687 ****
--- 738,756 ----
* Check for other characters with special significance.
*/
+ if( last_char == L'\r' )
+ {
+ /* The previous character was a deferred carriage return,
+ * but it was *not* the lead byte in a CRLF line terminator,
+ * so we need to emit it into the message definition.
+ */
+ dfprintf(( stderr, "\n%s:%u:", input, linenum ));
+ size_t len = mc_add_escape( iconv_map, messages + msgloc, L'\r' );
+ if( len > (size_t)(0) )
+ {
+ headroom -= len;
+ msgloc += len;
+ }
+ }
+
if( status & ESCAPE )
{
***************
*** 762,765 ****
--- 831,837 ----
if( len > (size_t)(0) )
{
+ /* Adjust the `headroom' counter, and the current `msgloc' offset,
+ * to account for the escape code we just added to the message buffer.
+ */
headroom -= len;
msgloc += len;
***************
*** 778,781 ****
--- 850,856 ----
else if( c == quote )
{
+ /* This is the designated `quote' character ...
+ * Toggle the state of the quoted context indicator flag.
+ */
dfprintf(( stderr, "\n%s:%u:%s quoted context", input, linenum, (status & QUOTED) ? "end" : "begin" ));
status = (status ^ QUOTED) | FLUSH;
***************
*** 784,787 ****
--- 859,866 ----
else
{
+ /* This is just a regular character ...
+ * Schedule it for copying it to the message buffer,
+ * when the next FLUSH is invoked.
+ */
xcount += skip;
dinvoke(( dtrace = dtrace ? dtrace : fprintf( stderr, "\n%s:%u:scan input: ", input, linenum ) ));
***************
*** 791,794 ****
--- 870,881 ----
if( count < ICONV_MB_LEN_MAX )
{
+ /* There may not be sufficient bytes in the input queue,
+ * to satisfy a fetch request for a potential multibyte sequence,
+ * so request a FLUSH now, so that the buufer may be replenished.
+ *
+ * Note that we must reset `skip', to avoid double accounting
+ * for content already scheduled for, but not yet copied to the
+ * message compilation buffer.
+ */
skip = 0;
status |= FLUSH;
***************
*** 828,831 ****
--- 915,922 ----
if( (status & CONTINUED) == 0 )
{
+ /* the following input line is not marked as a continuation,
+ * so its initial character *must* be interpreted as a member
+ * of the POSIX Portable Character Set.
+ */
status &= ~ENCODED;
}
***************
*** 842,849 ****
--- 933,947 ----
while( headroom < (xcount + ICONV_MB_LEN_MAX) )
{
+ /* Ensure that the workspace includes sufficient free space
+ * to accommodate all content to be transferred, plus at least
+ * one additional maximum length multibyte character sequence.
+ * if not, expand it in `BUFSIZ' increments, until it does ...
+ */
headroom += BUFSIZ;
dfprintf(( stderr, "\n%s:%u:insufficient workspace remaining; grow allocation to %u bytes", input, linenum, (unsigned)(msgloc + headroom) ));
if( (messages = realloc( messages, msgloc + headroom )) == NULL )
{
+ /* ... bailing out, if the required expansion fails.
+ */
gencat_errno = mc_errout( FATAL( MSG_OUT_OF_MEMORY ));
close( input_fd );
***************
*** 851,854 ****
--- 949,955 ----
}
}
+ /* Adjust the `headroom' counter, and the `msgloc' offset,
+ * to account for the content, as it is transferred.
+ */
headroom -= xcount;
dfprintf(( stderr, "\n%s:%u:", input, linenum ));
***************
*** 856,861 ****
--- 957,971 ----
- messages;
dfprintf(( stderr, "; %u byte%s free", headroom, headroom == 1 ? "" : "s" ));
+
if( (status & (MSGTEXT | NEWLINE | CONTINUED)) == (MSGTEXT | NEWLINE) )
{
+ /* We've found the end of a message definition record in our input,
+ * and it is not marked for continuation on the following input line;
+ * we must terminate the associated entry in our message buffer.
+ *
+ * Note that we *must* create a local variable to pass the terminator
+ * code; the `iconv_wctomb' marcro needs to pass the *address* for
+ * this to the `iconv_wrap' function.
+ */
wchar_t terminator = L'\0';
if( codeset == NULL )
***************
*** 868,874 ****
codeset_decl_src = input;
}
! int xcount = iconv_wctomb( messages + msgloc, terminator );
if( xcount >= 0 )
{
dfprintf(( stderr, "\n%s:%u:end of message; terminator added: %d byte(s)", input, linenum, xcount ));
msgloc += xcount;
--- 978,988 ----
codeset_decl_src = input;
}
! /* Encode the terminator, and add it into the workspace ...
! */
! xcount = iconv_wctomb( messages + msgloc, terminator );
if( xcount >= 0 )
{
+ /* ... adjusting `headroom' counter and `msgloc' offset accordingly.
+ */
dfprintf(( stderr, "\n%s:%u:end of message; terminator added: %d byte(s)", input, linenum, xcount ));
msgloc += xcount;
***************
*** 880,883 ****
--- 994,998 ----
}
tail->len = msgloc - tail->loc;
+ status &= ~MSGTEXT;
}
status &= ~FLUSH;
***************
*** 902,920 ****
}
}
}
dfprintf(( stderr, "\n%s:end of input; (count is now %d bytes)", input, count ));
- /*
- * We reached the end of the input stream.
- * If the final record was a message definition,
- * then the MSGTEXT parser state will still be active;
- * this state would be cancelled immediately, at the start of the next cycle,
- * but becuase there is no more input data, we will not start another cycle.
- * To avoid misidentifying this case as an incomplete final message,
- * and so displaying an erroneous warning,
- * we clear this state now.
- */
- if( (count == 0)
- && ((status & (MSGTEXT | NEWLINE | CONTINUED)) == (MSGTEXT | NEWLINE)) )
- status &= ~MSGTEXT;
}
/*
--- 1017,1026 ----
}
}
+ /* Make a note of the character code we have just parsed,
+ * for possible deferred processing in the next cycle.
+ */
+ last_char = c;
}
dfprintf(( stderr, "\n%s:end of input; (count is now %d bytes)", input, count ));
}
/*
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** ChangeLog 17 May 2007 18:45:07 -0000 1.11
--- ChangeLog 21 May 2007 04:13:20 -0000 1.12
***************
*** 1,2 ****
--- 1,13 ----
+ 2007-05-20 Keith Marshall <kei...@us...>
+
+ Handle CRLF line endings in source files.
+
+ * mcsource.c: Add numerous additional comments.
+ (mc_source): Add `last_char' local variable; use it to implement
+ one character look ahead, to suppress emission of extraneous CRs
+ into the compiled message text, when immediately followed by LF.
+ (mc_workspace_wanted, mc_update_workspace): Mark as `inline'.
+ (mc_add_escape): Mark as `inline'.
+
2007-05-17 Keith Marshall <kei...@us...>
|
|
From: Keith M. <kei...@us...> - 2007-05-17 18:45:14
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv24749
Modified Files:
ChangeLog mcsource.c
Log Message:
Correct rev 1.7 logic defect; tidy up DEBUG mode output formatting.
Index: mcsource.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcsource.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** mcsource.c 14 May 2007 19:55:09 -0000 1.8
--- mcsource.c 17 May 2007 18:45:08 -0000 1.9
***************
*** 207,210 ****
--- 207,212 ----
# define CODESET_DECLARED codeset_decl_src, codeset_decl_lineno
+ dinvoke( int dtrace = 0; )
+
long accumulator;
int fd, input_fd, count;
***************
*** 358,361 ****
--- 360,364 ----
{
xcount += skip;
+ dinvoke(( dtrace = dtrace ? dtrace : fprintf( stderr, "\n%s:%u:scan input: ", input, linenum ) ));
dfputc(( c, stderr ));
}
***************
*** 688,692 ****
size_t len = 0;
status &= ~ESCAPE;
! dfprintf(( stderr, "%s:%u:", input, linenum ));
switch( c )
{
--- 691,695 ----
size_t len = 0;
status &= ~ESCAPE;
! dfprintf(( stderr, "\n%s:%u:", input, linenum ));
switch( c )
{
***************
*** 782,785 ****
--- 785,789 ----
{
xcount += skip;
+ dinvoke(( dtrace = dtrace ? dtrace : fprintf( stderr, "\n%s:%u:scan input: ", input, linenum ) ));
dfputc(( c, stderr ));
}
***************
*** 791,828 ****
}
}
! if( c == L'\n' )
! {
! /* Mark the end of the current input line,
! * and schedule any pending message data from this line
! * for flushing to the message collection buffer.
! */
! status |= NEWLINE | FLUSH;
! /* If "QUOTED" context remains active, at the end of this line,
! * then we have an implicit continuation, so force it.
! */
! if( (status & QUOTED) == QUOTED )
! status |= CONTINUED;
! /* Clean up the context of any pending directive processing.
! */
! switch( status & CATEGORY )
! {
! case DEFQUOTE:
! /*
! * If we see end of line with a DEFQUOTE pending, then
! * there was no defining character with the "quote" directive,
! * so we must disable "quote" character recognition.
! */
! quote = L'\0';
! dfprintf(( stderr, ": none assigned" ));
! break;
! }
! if( (status & CONTINUED) == 0 )
! {
! status &= ~ENCODED;
! }
}
}
--- 795,832 ----
}
}
+ }
! if( c == L'\n' )
! {
! /* Mark the end of the current input line,
! * and schedule flushing of any pending message data from this line
! * to the message collection buffer.
! */
! status |= NEWLINE | FLUSH;
! /* If "QUOTED" context remains active, at the end of this line,
! * then we have an implicit continuation, so force it.
! */
! if( (status & QUOTED) == QUOTED )
! status |= CONTINUED;
! /* Clean up the context of any pending directive processing.
! */
! switch( status & CATEGORY )
! {
! case DEFQUOTE:
! /*
! * If we see end of line with a DEFQUOTE pending, then
! * there was no defining character with the "quote" directive,
! * so we must disable "quote" character recognition.
! */
! quote = L'\0';
! dfprintf(( stderr, ": none assigned" ));
! break;
! }
! if( (status & CONTINUED) == 0 )
! {
! status &= ~ENCODED;
}
}
***************
*** 835,842 ****
* BEFORE we proceed to the next cycle.
*/
while( headroom < (xcount + ICONV_MB_LEN_MAX) )
{
headroom += BUFSIZ;
! dfprintf(( stderr, "<grow allocation to %u bytes>", (unsigned)(msgloc + headroom) ));
if( (messages = realloc( messages, msgloc + headroom )) == NULL )
{
--- 839,847 ----
* BEFORE we proceed to the next cycle.
*/
+ dinvoke(( dtrace = 0 ));
while( headroom < (xcount + ICONV_MB_LEN_MAX) )
{
headroom += BUFSIZ;
! dfprintf(( stderr, "\n%s:%u:insufficient workspace remaining; grow allocation to %u bytes", input, linenum, (unsigned)(msgloc + headroom) ));
if( (messages = realloc( messages, msgloc + headroom )) == NULL )
{
***************
*** 850,854 ****
msgloc = mc_update_workspace( messages + msgloc, p - xcount - skip, xcount )
- messages;
! dfprintf(( stderr, "; %u byte%s free\n", headroom, headroom == 1 ? "" : "s" ));
if( (status & (MSGTEXT | NEWLINE | CONTINUED)) == (MSGTEXT | NEWLINE) )
{
--- 855,859 ----
msgloc = mc_update_workspace( messages + msgloc, p - xcount - skip, xcount )
- messages;
! dfprintf(( stderr, "; %u byte%s free", headroom, headroom == 1 ? "" : "s" ));
if( (status & (MSGTEXT | NEWLINE | CONTINUED)) == (MSGTEXT | NEWLINE) )
{
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** ChangeLog 14 May 2007 19:55:09 -0000 1.10
--- ChangeLog 17 May 2007 18:45:07 -0000 1.11
***************
*** 1,2 ****
--- 1,8 ----
+ 2007-05-17 Keith Marshall <kei...@us...>
+
+ * mcsource.c (mc_source): Adjust block nesting to correct logic
+ defect introduced in revision 1.7 (2007-05-14).
+ [DEBUG]: Tidy up formatting of some ugly debugging messages.
+
2007-05-14 Keith Marshall <kei...@us...>
|
|
From: Keith M. <kei...@us...> - 2007-05-14 19:55:14
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv12670
Modified Files:
ChangeLog mcsource.c
Log Message:
* mcsource.c (mc_source): Close `input_fd' prior to every use of `return', when returning abnormally.
Index: mcsource.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcsource.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** mcsource.c 14 May 2007 19:50:17 -0000 1.7
--- mcsource.c 14 May 2007 19:55:09 -0000 1.8
***************
*** 10,14 ****
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 12-May-2007
*
*
--- 10,14 ----
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 14-May-2007
*
*
***************
*** 256,260 ****
--- 256,263 ----
dfprintf(( stderr, "\n%s:new source file\n%s:", input, input ));
if( (messages = mc_malloc( headroom = mc_workspace_wanted( fd ))) == NULL )
+ {
+ close( input_fd );
return NULL;
+ }
msgloc = (off_t)(0);
***************
*** 491,494 ****
--- 494,498 ----
dfputc(( '\n', stderr ));
gencat_errno = mc_errout( FATAL( MSG_SETNUM_NOT_INCR ), setnum, accumulator );
+ close( input_fd );
return NULL;
}
***************
*** 602,605 ****
--- 606,610 ----
dfputc(( '\n', stderr ));
gencat_errno = mc_errout( FATAL( MSG_MSGNUM_NOT_INCR ), msgnum, accumulator );
+ close( input_fd );
return NULL;
}
***************
*** 837,840 ****
--- 842,846 ----
{
gencat_errno = mc_errout( FATAL( MSG_OUT_OF_MEMORY ));
+ close( input_fd );
return NULL;
}
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** ChangeLog 14 May 2007 19:50:16 -0000 1.9
--- ChangeLog 14 May 2007 19:55:09 -0000 1.10
***************
*** 1,4 ****
--- 1,9 ----
2007-05-14 Keith Marshall <kei...@us...>
+ * mcsource.c (mc_source): Close `input_fd' prior to every use
+ of `return', when returning abnormally.
+
+ 2007-05-14 Keith Marshall <kei...@us...>
+
Support all escape sequences required by POSIX 1003.1.
|
|
From: Keith M. <kei...@us...> - 2007-05-14 19:50:28
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv10447
Modified Files:
ChangeLog mcsource.c
Log Message:
Support all escape sequences required by POSIX 1003.1.
Index: mcsource.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcsource.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** mcsource.c 12 May 2007 16:54:35 -0000 1.6
--- mcsource.c 14 May 2007 19:50:17 -0000 1.7
***************
*** 205,209 ****
struct msgdict *mc_source( const char *input )
{
! # define CODESET_DECLARED codeset_decl_src, codeset_decl_lineno
long accumulator;
--- 205,209 ----
struct msgdict *mc_source( const char *input )
{
! # define CODESET_DECLARED codeset_decl_src, codeset_decl_lineno
long accumulator;
***************
*** 230,233 ****
--- 230,247 ----
char *messages; off_t msgloc, headroom;
+ /*
+ * This `shift' state index is used to control interpretation
+ * of octal escape sequences in message text; for normal text
+ * processing, it should be set to zero.
+ */
+ unsigned shift = 0;
+ /*
+ * Other shift states supported, (they define the number of bits
+ * by which the accumulator must be shifted to the left, in order
+ * to multiply it by the associated number base), are:--
+ */
+ # define OCTAL_SEQUENCE_DECODE 3
+ # define HEXADECIMAL_SEQUENCE_DECODE 4
+
const char *dev_stdin = "/dev/stdin";
if( (strcmp( input, "-") == 0) || (strcmp( input, dev_stdin ) == 0) )
***************
*** 301,305 ****
{
/* When this new line is NOT simply a logical continuation
! * of the previous line...
*/
status &= ~MSGTEXT;
--- 315,319 ----
{
/* When this new line is NOT simply a logical continuation
! * of the previous line ...
*/
status &= ~MSGTEXT;
***************
*** 363,367 ****
if( id == keyword )
{
! /* But, we didn't find any keyword...
*
* This is a comment line, but it may be the special case of
--- 377,381 ----
if( id == keyword )
{
! /* But, we didn't find any keyword ...
*
* This is a comment line, but it may be the special case of
***************
*** 432,443 ****
else if( status & NUMERIC )
{
! /* We are parsing a numeric value...
! */
if( isdigit( c ) )
{
! /* ...and the current character is part of the number,
* so add it into the accumulator.
*/
! accumulator = accumulator * 10 + c - L'0';
}
--- 446,457 ----
else if( status & NUMERIC )
{
! /* We are parsing a numeric value ...
! */
if( isdigit( c ) )
{
! /* ... and the current character is part of the number,
* so add it into the accumulator.
*/
! accumulator = accumulator * 10 + c - L'0';
}
***************
*** 617,719 ****
{
/* We are compiling a message ...
! * Continue scanning the current input line,
! * until we find the end-of-line marker.
! */
! if( c != L'\n' )
! {
! /* We haven't reached end-of-line yet...
! * Check for other characters with special significance.
! */
! if( status & ESCAPE )
! {
! /* The current input character was escaped...
! * Clear the ESCAPE flag, and interpret this case.
! */
! size_t len = 0;
! status &= ~ESCAPE;
! dfprintf(( stderr, "%s:%u:", input, linenum ));
! switch ( c )
! {
! case L'r': /* embed a carriage return */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\r' );
! break;
!
! case L'n': /* embed a newline */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\n' );
! break;
! default: /* not a special case; just pass it through */
! xcount += skip;
! dfprintf(( stderr, "pass through escape code: %0#4.4x", c ));
! }
! if( len > (size_t)(0) )
{
! headroom -= len;
! msgloc += len;
}
- }
! else if( c == L'\\' )
! {
! /* This is the escape character...
! * Set the parser flags, so that any cached message data is flushed,
! * and switch to ESCAPE mode, to interpret the next character.
! */
! status |= FLUSH | ESCAPE;
! }
! else if( c == quote )
! {
! dfprintf(( stderr, "\n%s:%u:%s quoted context", input, linenum, (status & QUOTED) ? "end" : "begin" ));
! status = (status ^ QUOTED) | FLUSH;
! }
! else
! {
! xcount += skip;
! dfputc(( c, stderr ));
! }
! }
! if( count < ICONV_MB_LEN_MAX )
! {
! skip = 0;
! status |= FLUSH;
}
- }
! if( c == L'\n' )
! {
! /* Mark the end of the current input line,
! * and schedule any pending message data from this line
! * for flushing to the message collection buffer.
! */
! status |= NEWLINE | FLUSH;
! /* If "QUOTED" context remains active, at the end of this line,
! * then we have an implicit continuation, so force it.
! */
! if( (status & QUOTED) == QUOTED )
! status |= CONTINUED;
! /* Clean up the context of any pending directive processing.
! */
! switch( status & CATEGORY )
! {
! case DEFQUOTE:
! /*
! * If we see end of line with a DEFQUOTE pending,
! * then there was no defining character with the "quote" directive,
! * so we must disable "quote" character recognition.
! */
! quote = L'\0';
! dfprintf(( stderr, ": none assigned" ));
! break;
! }
! if( (status & CONTINUED) == 0 )
! {
! status &= ~ENCODED;
! }
! }
}
--- 631,825 ----
{
/* We are compiling a message ...
! */
! if( shift )
! {
! /* The current input character is either part of an
! * escaped octal digit sequence, or it terminates one.
! */
! size_t len = 0;
! switch( c )
! {
! case L'0' ... L'7':
! /*
! * This is a continuation of the sequence ...
! */
! accumulator = (accumulator << shift) + c - L'0';
! break;
! default:
! /*
! * This is the character immediately following
! * an encoded octal digit sequence ...
! */
! if( (accumulator > 0) && ((len =
! mc_add_escape( iconv_map, messages + msgloc, accumulator ))
! > (size_t)(0)) )
! {
! headroom -= len;
! msgloc += len;
! }
! shift = 0;
! }
! }
! /* Do not use `else' here; the `shift' state may have changed
! * since the preceding check, in which case, we may also need
! * to do this ...
! */
! if( shift == 0 )
! {
! /* Continue scanning the current input line,
! * until we find the end-of-line marker.
! */
! if( c != L'\n' )
! {
! /* We haven't reached end-of-line yet ...
! * Check for other characters with special significance.
! */
! if( status & ESCAPE )
{
! /* The current input character was escaped ...
! * Clear the ESCAPE flag, and interpret this case.
! */
! size_t len = 0;
! status &= ~ESCAPE;
! dfprintf(( stderr, "%s:%u:", input, linenum ));
! switch( c )
! {
! /* Thus, for the standard escape sequences ...
! */
! case L'b':
! /*
! * The "\b" escape sequence is to be interpreted as
! * a literal backspace; encode it ...
! */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\b' );
! break;
!
! case L'r':
! /*
! * Similarly for "\r", which is to be encoded as
! * a carriage return ...
! */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\r' );
! break;
!
! case L'n':
! /*
! * And for "\n", representing a newline ...
! */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\n' );
! break;
!
! case L't':
! /*
! * ... "\t", representing a horizontal tab ...
! */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\t' );
! break;
!
! case L'v':
! /*
! * ... "\v", representing a vertical tab ...
! */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\v' );
! break;
!
! case L'f':
! /*
! * ... and "\f", representing a form feed.
! */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\f' );
! break;
!
! case L'0' ... L'7':
! /*
! * This is the first in a "\ddd" octal digit sequence;
! * initialise the accumulator, and activate the appropriate
! * shift state, to capture the remaining digits.
! */
! accumulator = c - L'0';
! shift = OCTAL_SEQUENCE_DECODE;
! break;
!
! default:
! /*
! * Anything else is not a special case; we can simply pass it
! * through as a regular character. Notice that we don't need
! * to treat "\\" as special; this default action produces the
! * desired effect.
! */
! xcount += skip;
! dfprintf(( stderr, "pass through escape code: %0#4.4x", c ));
! }
! if( len > (size_t)(0) )
! {
! headroom -= len;
! msgloc += len;
! }
}
! else if( c == L'\\' )
! {
! /* This is the escape character ...
! * Set the parser flags, so that cached message data is flushed,
! * and switch to ESCAPE mode, to interpret the next character.
! */
! status |= FLUSH | ESCAPE;
! }
! else if( c == quote )
! {
! dfprintf(( stderr, "\n%s:%u:%s quoted context", input, linenum, (status & QUOTED) ? "end" : "begin" ));
! status = (status ^ QUOTED) | FLUSH;
! }
! else
! {
! xcount += skip;
! dfputc(( c, stderr ));
! }
! }
! if( count < ICONV_MB_LEN_MAX )
! {
! skip = 0;
! status |= FLUSH;
! }
}
! if( c == L'\n' )
! {
! /* Mark the end of the current input line,
! * and schedule any pending message data from this line
! * for flushing to the message collection buffer.
! */
! status |= NEWLINE | FLUSH;
! /* If "QUOTED" context remains active, at the end of this line,
! * then we have an implicit continuation, so force it.
! */
! if( (status & QUOTED) == QUOTED )
! status |= CONTINUED;
! /* Clean up the context of any pending directive processing.
! */
! switch( status & CATEGORY )
! {
! case DEFQUOTE:
! /*
! * If we see end of line with a DEFQUOTE pending, then
! * there was no defining character with the "quote" directive,
! * so we must disable "quote" character recognition.
! */
! quote = L'\0';
! dfprintf(( stderr, ": none assigned" ));
! break;
! }
! if( (status & CONTINUED) == 0 )
! {
! status &= ~ENCODED;
! }
! }
! }
}
***************
*** 802,811 ****
}
/*
! * At the end of the current input file...
* Check that the parser finished in an appropriate termination state.
*/
if( status & QUOTED )
{
! /* Abnormal termination...
* EOF was encountered within a quoted literal, before the closing
* quote was found; diagnose abnormal termination state.
--- 908,917 ----
}
/*
! * At the end of the current input file ...
* Check that the parser finished in an appropriate termination state.
*/
if( status & QUOTED )
{
! /* Abnormal termination ...
* EOF was encountered within a quoted literal, before the closing
* quote was found; diagnose abnormal termination state.
***************
*** 816,820 ****
if( (status & NEWLINE) != NEWLINE )
{
! /* Abnormal termination...
* The input file lacks a terminating newline; diagnose abnormal
* termination state.
--- 922,926 ----
if( (status & NEWLINE) != NEWLINE )
{
! /* Abnormal termination ...
* The input file lacks a terminating newline; diagnose abnormal
* termination state.
***************
*** 825,829 ****
if( status & MSGTEXT )
{
! /* Abnormal termination...
* EOF was encountered while parsing a continued message definition;
* dignose abnormal termination state, and mark incomplete message
--- 931,935 ----
if( status & MSGTEXT )
{
! /* Abnormal termination ...
* EOF was encountered while parsing a continued message definition;
* dignose abnormal termination state, and mark incomplete message
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** ChangeLog 12 May 2007 22:51:10 -0000 1.8
--- ChangeLog 14 May 2007 19:50:16 -0000 1.9
***************
*** 1,2 ****
--- 1,13 ----
+ 2007-05-14 Keith Marshall <kei...@us...>
+
+ Support all escape sequences required by POSIX 1003.1.
+
+ * mcsource.c (OCTAL_SEQUENCE_DECODE): New manifest constant.
+ (HEXADECIMAL_SEQUENCE_DECODE): Ditto, but not currently used.
+ (mc_source): Interpret "\n", "\r", "\b", "\t", "\v" and "\f"
+ standard escapes, and also "\ddd" generic octal digit sequence
+ escapes, appearing in message text definitions; "\\" is also
+ implicitly handled as required.
+
2007-05-12 Keith Marshall <kei...@us...>
|
|
From: Keith M. <kei...@us...> - 2007-05-12 22:51:14
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv31171
Modified Files:
ChangeLog mcmerge.c
Log Message:
Add support for `delset' directive.
Index: mcmerge.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcmerge.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** mcmerge.c 12 May 2007 16:54:35 -0000 1.2
--- mcmerge.c 12 May 2007 22:51:10 -0000 1.3
***************
*** 41,44 ****
--- 41,68 ----
#include <gcmsgs.h>
+ static
+ struct msgdict *mc_delset( unsigned short setnum, struct msgdict *msgset )
+ {
+ /* Helper function, called by `mc_merge', to unlink message references
+ * in any set specified in a `delset' directive.
+ */
+ while( msgset && (msgset->set == setnum) )
+ {
+ /* Walk the message list, freeing the memory allocated to message
+ * entries with matching set number.
+ */
+ struct msgdict *ref = msgset;
+ msgset = msgset->link;
+ free( ref );
+ }
+ /* When done, return the address of the first message in the set,
+ * if any, following the one we just deleted; `mc_merge' will link
+ * this to succeed the predecessor, if any, of the deleted set,
+ * or otherwise, replacing the first set in the catalogue,
+ * thus implicitly unlinking the deleted messages.
+ */
+ return msgset;
+ }
+
struct msgdict *mc_merge( struct msgdict *cat, struct msgdict *input )
{
***************
*** 234,241 ****
else if( input->set && (input->base == NULL) )
{
! /* This is a a `delset' operation...
! * FIXME: we don't have support for this yet!
*/
- fprintf( errmsg( MSG_DEL_UNSUPPORTED ), progname, input->src, input->lineno );
free( input );
}
--- 258,335 ----
else if( input->set && (input->base == NULL) )
{
! /* This is a a `delset' operation; it will delete all messages
! * currently present in the catalogue, which are assigned to the
! * specified message set.
! *
! * Obviously, if the catalogue is currently empty, then this is
! * a no-op...
! */
! if( cat )
! {
! /* ...but when we do already have some content defined, then we
! * must locate and delete the specified set, if it exists.
! */
! if( cat->set == input->set )
! {
! /* The set to be deleted is the first in the catalogue...
! */
! if( mark->set == input->set )
! /*
! * ...and the current insertion point also lies within
! * this set, so *both* references must be adjusted.
! */
! mark = cat = mc_delset( input->set, cat );
!
! else
! /* ...the current insertion point has already advanced
! * beyond the set to be deleted, so leave it unchanged,
! * and simply remove the entire initial message set.
! */
! cat = mc_delset( input->set, cat );
! }
! else
! {
! /* The set to be deleted is not the first in the catalogue,
! * so we must locate the last message entry in the set which
! * immediately precedes that to be deleted; this becomes the
! * reference point, from which deletion commences, and to
! * which any following message set must be relinked.
! */
! struct msgdict *delset, *ref = cat;
!
! /* Our search for this reference entry begins at the start
! * of the catalogue; however, if the current insertion point
! * lies in a set which precedes that to be deleted, then we
! * may immediately jump ahead to this point.
! */
! if( mark->key < input->key )
! ref = mark;
!
! /* We now walk the message list, until we either find the
! * required reference point, or our search overruns the end
! * of the list.
! */
! while( ((delset = ref->link) != NULL) && (delset->key < input->key) )
! ref = delset;
!
! /* Now, we must check the current insertion point, to ensure
! * that * it does not refer to an entry we are about to delete;
! * if it points to a message with a set number matching that of
! * the set to be deleted, then we must adjust it.
! */
! if( mark->set == input->set )
! mark = ref;
!
! /* Finally, if we found entries in the set to be deleted,
! * then we discard them.
! */
! if( delset->set == input->set )
! ref->link = mc_delset( input->set, delset );
! }
! }
! /* Whether or not we actually found and deleted the specified
! * message set, (if not, we silently ignore the `delset' request),
! * the current input record serves no further purpose.
*/
free( input );
}
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** ChangeLog 12 May 2007 16:54:35 -0000 1.7
--- ChangeLog 12 May 2007 22:51:10 -0000 1.8
***************
*** 1,4 ****
--- 1,14 ----
2007-05-12 Keith Marshall <kei...@us...>
+ Add support for `delset' directive.
+
+ * mcmerge.c (mc_delset): New static function...
+ (mc_merge): Use it.
+
+ * include/gcmsgs.h (MSG_DEL_UNSUPPORTED): Redundant message
+ definition; deleted.
+
+ 2007-05-12 Keith Marshall <kei...@us...>
+
Add support for single message deletion.
|
|
From: Keith M. <kei...@us...> - 2007-05-12 22:51:13
|
Update of /cvsroot/mingw/catgets/include In directory sc8-pr-cvs16:/tmp/cvs-serv31171/include Modified Files: gcmsgs.h Log Message: Add support for `delset' directive. Index: gcmsgs.h =================================================================== RCS file: /cvsroot/mingw/catgets/include/gcmsgs.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** gcmsgs.h 12 May 2007 16:54:36 -0000 1.2 --- gcmsgs.h 12 May 2007 22:51:10 -0000 1.3 *************** *** 50,54 **** #define MSG_REDEFINED 2, 7, "%s: %s:%u: redefinition of message %u in set %u\n" #define MSG_PREVIOUS_HERE 2, 8, "%s: %s:%u: previous definition was here\n" - #define MSG_DEL_UNSUPPORTED 3, 1, "%s: %s:%u: `delset' operation not yet supported\n" #define MSG_EOF_IN_QUOTES 3, 2, "%s:%u: unexpected EOF encountered before closing quote\n" #define MSG_TEXT_DISCARDED 3, 3, "%s:%u: incomplete message marked for deletion\n" --- 50,53 ---- |
|
From: Keith M. <kei...@us...> - 2007-05-12 16:54:40
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv23082
Modified Files:
ChangeLog gencat.c mcmerge.c mcsource.c
Log Message:
Add support for single message deletion.
Index: mcmerge.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcmerge.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** mcmerge.c 6 Apr 2007 22:34:52 -0000 1.1.1.1
--- mcmerge.c 12 May 2007 16:54:35 -0000 1.2
***************
*** 11,15 ****
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 30-Dec-2006
*
*
--- 11,15 ----
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 12-May-2007
*
*
***************
*** 66,102 ****
while( input )
{
struct msgdict *next = input->link;
dfprintf(( stderr, "Process entry from %s line %u\n", input->src, input->lineno ));
- if( input->base == NULL )
- {
- /* This is a `delete' operation...
- * FIXME: we don't have support for this yet!
- */
- fprintf( errmsg( MSG_DEL_UNSUPPORTED ), progname, input->src, input->lineno );
- free( input );
- }
! else
{
! /* This is either an `insert' or a `replace' operation...
! * locate the insertion point, within the current message list.
*/
-
struct msgdict *curr = mark;
while( curr && (curr->key < input->key) )
{
mark = curr;
curr = curr->link;
}
! if( curr == NULL )
{
! /* This is appending to the end of the message list... */
!
if( mark )
{
! /* ...extending an existing message list. */
!
input->link = mark->link;
mark->link = input;
--- 66,111 ----
while( input )
{
+ /* Save a pointer to the *next* input record;
+ * we will use this later, to progress to the next record,
+ * after we've freed the current reference structure.
+ */
struct msgdict *next = input->link;
dfprintf(( stderr, "Process entry from %s line %u\n", input->src, input->lineno ));
! if( input->set && input->msg )
{
! /* The input reference specifies both set and message numbers.
! * Thus, the operation to be performed relates to a single message,
! * which is to be inserted, replaced or deleted at the appropriate
! * position within the current message list; before proceeding,
! * we must locate this position.
*/
struct msgdict *curr = mark;
while( curr && (curr->key < input->key) )
{
+ /* We loop over the existing messages in the dictionary,
+ * until we find the location at which the input message
+ * should be placed; when we find it, we leave `curr'
+ * pointing at the target location reference, while
+ * `mark' points to its immediate predecessor.
+ */
mark = curr;
curr = curr->link;
}
! /* Now that we've identified *where* the current input reference
! * belongs, in the current message list, we may determine *what*
! * action is to be performed for this record.
! */
! if( input->base && (curr == NULL) )
{
! /* The input record specifies actual message content,
! * which is to be appended to the end of the message list...
! */
if( mark )
{
! /* ...extending an existing message list.
! */
input->link = mark->link;
mark->link = input;
***************
*** 105,113 ****
));
}
-
else
{
! /* There is no current message list; start one now! */
!
cat = mark = input;
mark->link = NULL;
--- 114,121 ----
));
}
else
{
! /* ...there is no current message list; start one now!
! */
cat = mark = input;
mark->link = NULL;
***************
*** 115,129 ****
}
}
-
else if( curr->key == input->key )
{
! /* This is replacement of an existing message. */
!
! if( curr->lineno > 0 )
{
! /* This a collision...
! * diagnose, and ignore this redefinition.
*/
fprintf( errmsg( MSG_REDEFINED ), GENCAT_MSG_INPUT, curr->msg, curr->set );
fprintf( errmsg( MSG_PREVIOUS_HERE ), GENCAT_MSG_SRC( curr ));
--- 123,164 ----
}
}
else if( curr->key == input->key )
{
! /* The input record refers to a message which is already present
! * in the current message list; the operation to be performed is
! * either deletion or replacement.
! */
! if( input->base == NULL )
{
! /* This input reference specifies no message content;
! * it is a request to delete the existing message.
! */
! if( curr == cat )
! /*
! * We are deleting the first message in the current list,
! * so we simply reassign the initial list entry.
! */
! cat = cat->link;
!
! else
! /* We are deleting a message from within the list, so we
! * relink the immediately preceding reference, to chain it
! * directly to the immediately succeeding one.
! */
! mark->link = curr->link;
!
! /* In either case, we may release the the memory allocated to
! * the defunct dictionary reference for the deleted message.
*/
+ free( curr );
+ }
+ else if( curr->lineno > 0 )
+ {
+ /* This a redefinition of a message which has previously been
+ * sourced from another input file in the current input stream;
+ * this represents a collision, which is probably unintentional,
+ * so diagnose it, and ignore this redefinition.
+ */
fprintf( errmsg( MSG_REDEFINED ), GENCAT_MSG_INPUT, curr->msg, curr->set );
fprintf( errmsg( MSG_PREVIOUS_HERE ), GENCAT_MSG_SRC( curr ));
***************
*** 132,143 ****
else
{
dfprintf(( stderr, "Replace set %u message %u\n", curr->set, curr->msg ));
-
if( curr == cat )
{
! /* This is the first message in the current list,
! * so we simply replace it.
*/
-
cat = input;
}
--- 167,180 ----
else
{
+ /* This is replacement of an existing message, which has
+ * been inherited from a previously existing message catalogue;
+ * such replacement is assumed to be intentional, so...
+ */
dfprintf(( stderr, "Replace set %u message %u\n", curr->set, curr->msg ));
if( curr == cat )
{
! /* ...when this is the first message in the current list,
! * we simply replace it.
*/
cat = input;
}
***************
*** 145,155 ****
else
{
! /* There are preceding messages in the list,
! * so we must relink the predecessor to this replacement.
*/
-
mark->link = input;
}
input->link = curr->link;
free( curr );
--- 182,196 ----
else
{
! /* ...but when there are preceding messages in the list,
! * we must relink the predecessor to this replacement.
*/
mark->link = input;
}
+ /* Now, to complete the replacement of the original message,
+ * link any successor to the new reference, release the memory
+ * allocated to the replaced dictionary entry, and mark the
+ * new entry as the current reference point.
+ */
input->link = curr->link;
free( curr );
***************
*** 157,191 ****
}
}
-
else
{
! /* This is insertion of a new message within the current list,
! * (maybe preceding all messages which are already in the list).
*/
-
dfprintf(( stderr, "Insert set %u message %u ", input->set, input->msg ));
if( mark == curr )
{
! /* This entry must precede any which is already in the list,
! * so make it the new initial message.
*/
-
dfprintf(( stderr, "at start of list " ));
cat = mark = input;
}
-
else
{
! /* There is already an existing message which must precede this one,
! * so link this new one to follow the existing predecessor.
*/
-
dfprintf(( stderr, "after set %u message %u and ", mark->set, mark->msg ));
mark->link = input;
}
dfprintf(( stderr, "before set %u message %u\n", curr->set, curr->msg ));
input->link = curr;
}
}
input = next;
}
--- 198,259 ----
}
}
else
{
! /* There is no existing reference with set and message numbers
! * matching the current input record; thus the input record must
! * be inserted between the existing `mark' and `curr' entries.
*/
dfprintf(( stderr, "Insert set %u message %u ", input->set, input->msg ));
if( mark == curr )
{
! /* The `curr' entry is the first in the existing dictionary,
! * so we insert the input record before it, as the new initial
! * entry in the dictionary, leaving `mark' pointing to it.
*/
dfprintf(( stderr, "at start of list " ));
cat = mark = input;
}
else
{
! /* There is already an existing message which must precede this
! * new entry in the dictionary, so we link this new entry as its
! * immediate successor.
*/
dfprintf(( stderr, "after set %u message %u and ", mark->set, mark->msg ));
mark->link = input;
}
+ /*
+ * In either case, any existing `curr' entry must be linked as
+ * successor to the inserted entry.
+ */
dfprintf(( stderr, "before set %u message %u\n", curr->set, curr->msg ));
input->link = curr;
}
}
+
+ else if( input->set && (input->base == NULL) )
+ {
+ /* This is a a `delset' operation...
+ * FIXME: we don't have support for this yet!
+ */
+ fprintf( errmsg( MSG_DEL_UNSUPPORTED ), progname, input->src, input->lineno );
+ free( input );
+ }
+
+ else
+ {
+ /* The input record contains an improperly formed message reference.
+ * We should *never* get to here! If we do, then the entire message
+ * catalogue dictionary structure is invalid; diagnose and abort.
+ */
+ fprintf( errmsg( MSG_INTERNAL_ERROR ), progname, msgarg( MSG_BAD_INDEX ) );
+ exit( EXIT_FAILURE );
+ }
+
+ /* Whatever operation we have just performed, if no fatal error
+ * occurred we proceed to the next input record, if any, using the
+ * pointer we saved earlier, since `input->link' may not now be
+ * a valid reference; (`input' may have been `freed').
+ */
input = next;
}
***************
*** 198,201 ****
--- 266,273 ----
}
# endif
+
+ /* When all input records have been processed,
+ * we return the resultant message catalogue index to the caller.
+ */
return cat;
}
Index: gencat.c
===================================================================
RCS file: /cvsroot/mingw/catgets/gencat.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** gencat.c 6 Apr 2007 22:34:51 -0000 1.1.1.1
--- gencat.c 12 May 2007 16:54:35 -0000 1.2
***************
*** 9,13 ****
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 05-Mar-2007
*
*
--- 9,13 ----
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 12-May-2007
*
*
***************
*** 91,95 ****
* are already contained within the specified message catalogue.
*/
-
if( (cat = mc_load( msgcat = *++argv )) == NULL )
switch( errno )
--- 91,94 ----
***************
*** 103,107 ****
default:
! fprintf( errmsg( MSG_CATLOAD_FAILED ), progname, msgcat );
return EXIT_FAILURE;
}
--- 102,106 ----
default:
! fprintf( errmsg( MSG_BAD_CATALOGUE ), progname, msgcat );
return EXIT_FAILURE;
}
***************
*** 109,113 ****
/* Merge new or updated message definitions from input files.
*/
-
while( --argc )
cat = mc_merge( cat, mc_source( *++argv ));
--- 108,111 ----
***************
*** 200,204 ****
* Diagnose, and bail out.
*/
-
fprintf( errmsg( MSG_MISSING_ARGS ), progname );
fprintf( errmsg( MSG_GENCAT_USAGE ), progname );
--- 198,201 ----
Index: mcsource.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcsource.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** mcsource.c 11 May 2007 22:48:17 -0000 1.5
--- mcsource.c 12 May 2007 16:54:35 -0000 1.6
***************
*** 10,14 ****
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 11-May-2007
*
*
--- 10,14 ----
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 12-May-2007
*
*
***************
*** 544,550 ****
/* We may now complete the message details in the new
* dictionary slot, and commit the record to the catalogue.
*/
this->src = input;
! this->base = messages;
this->lineno = linenum;
this->set = setnum;
--- 544,557 ----
/* We may now complete the message details in the new
* dictionary slot, and commit the record to the catalogue.
+ * Note that, if the message number tag in the source file
+ * is on an otherwise empty line, and is *immediately*
+ * followed by a newline, with no intervening space,
+ * then this message should be deleted; we flag this
+ * by setting `this->base = NULL'. In all other cases,
+ * the message is to be placed into the catalogue, so
+ * we set 'this->base = messages'.
*/
this->src = input;
! this->base = (c == L'\n') ? NULL : messages;
this->lineno = linenum;
this->set = setnum;
***************
*** 574,579 ****
else
{
! /* This doesn't satisfy the requirement for incrementing "msgnum",
! * so complain, and bail out.
*/
dfputc(( '\n', stderr ));
--- 581,588 ----
else
{
! /* This doesn't satisfy the POSIX requirement that,
! * within each set, messages must appear in strictly
! * incrementing "msgnum" order, so complain, and
! * bail out.
*/
dfputc(( '\n', stderr ));
***************
*** 833,836 ****
--- 842,851 ----
for( tail = head; tail != NULL; tail = tail->link )
{
+ /* Just do this for all entries in the list!
+ * Don't assume we can optimise by quitting if we find a reference
+ * which is already mapped to the correct address; the list could
+ * have moved, and subsequently have moved back to the old address,
+ * in which case a later entry could be invalid.
+ */
if( tail->base != NULL )
/*
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** ChangeLog 11 May 2007 22:48:17 -0000 1.6
--- ChangeLog 12 May 2007 16:54:35 -0000 1.7
***************
*** 1,2 ****
--- 1,28 ----
+ 2007-05-12 Keith Marshall <kei...@us...>
+
+ Add support for single message deletion.
+
+ * mcsource.c: More comment improvements.
+ (mc_source): Set `this->base = NULL' on parsing a message number
+ immediately followed by `newline'; this causes the message to be
+ removed from the internal catalogue index, when the input record
+ is merged.
+
+ * mcmerge.c (mc_merge): Reorganise logic; add section to remove
+ entries with `set > 0 && msg > 0 && base == NULL'.
+ Relocate logic block for processing `delset' requests; still need
+ an implementation for this.
+ Add logic block to catch and diagnose invalid index entries.
+
+ * include/gcmsgs.h (MSG_CATLOAD_FAILED): Renamed symbolic define...
+ (MSG_BAD_CATALOGUE): ...to this.
+ (MSG_INTERNAL_ERROR, MSG_BAD_INDEX): New message defines; used by
+ `mc_merge', to diagnose invalid index entries.
+
+ * include/gencat.h (msgarg): New macro; used by `mc_merge', to
+ associate `MSG_BAD_INDEX' with `MSG_INTERNAL_ERROR'.
+
+ * gencat.c (main): Use `MSG_BAD_CATALOGUE'.
+
2007-05-11 Keith Marshall <kei...@us...>
|
|
From: Keith M. <kei...@us...> - 2007-05-12 16:54:39
|
Update of /cvsroot/mingw/catgets/include In directory sc8-pr-cvs16:/tmp/cvs-serv23082/include Modified Files: gcmsgs.h gencat.h Log Message: Add support for single message deletion. Index: gencat.h =================================================================== RCS file: /cvsroot/mingw/catgets/include/gencat.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** gencat.h 6 Apr 2007 22:34:56 -0000 1.1.1.1 --- gencat.h 12 May 2007 16:54:36 -0000 1.2 *************** *** 12,16 **** * * Written by Keith Marshall <kei...@us...> ! * Last modification: 27-Mar-2007 * * --- 12,16 ---- * * Written by Keith Marshall <kei...@us...> ! * Last modification: 12-May-2007 * * *************** *** 90,93 **** --- 90,94 ---- extern size_t iconv_wrap( int, iconv_t, char *, size_t, char *, size_t ); + #define msgarg(MSG) catgets( gencat_messages, MSG ) #define errmsg(MSG) stderr, catgets( gencat_messages, MSG ) #define FATAL(MSG) input, linenum, catgets( gencat_messages, MSG ) Index: gcmsgs.h =================================================================== RCS file: /cvsroot/mingw/catgets/include/gcmsgs.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** gcmsgs.h 6 Apr 2007 22:34:56 -0000 1.1.1.1 --- gcmsgs.h 12 May 2007 16:54:36 -0000 1.2 *************** *** 41,45 **** #define MSG_OUTPUT_NOFILE 1, 3, "%s: %s: cannot create temporary output file\n" #define MSG_OUT_OF_MEMORY 1, 4, "%s: out of memory\n" ! #define MSG_CATLOAD_FAILED 2, 1, "%s: %s: catalogue exists, but failed to load\n" #define MSG_UNKNOWN_CODESET 2, 2, "%s: %s: unknown codeset descriptor\n" #define MSG_CODESET_CLASH 2, 3, "%s:%u: codeset `%s' conflicts with prior declaration\n" --- 41,46 ---- #define MSG_OUTPUT_NOFILE 1, 3, "%s: %s: cannot create temporary output file\n" #define MSG_OUT_OF_MEMORY 1, 4, "%s: out of memory\n" ! #define MSG_INTERNAL_ERROR 1, 5, "%s: internal error: %s\n" ! #define MSG_BAD_CATALOGUE 2, 1, "%s: %s: file is not a valid message catalogue\n" #define MSG_UNKNOWN_CODESET 2, 2, "%s: %s: unknown codeset descriptor\n" #define MSG_CODESET_CLASH 2, 3, "%s:%u: codeset `%s' conflicts with prior declaration\n" *************** *** 49,56 **** #define MSG_REDEFINED 2, 7, "%s: %s:%u: redefinition of message %u in set %u\n" #define MSG_PREVIOUS_HERE 2, 8, "%s: %s:%u: previous definition was here\n" ! #define MSG_DEL_UNSUPPORTED 3, 1, "%s: %s:%u: deletion of message entities not yet supported\n" #define MSG_EOF_IN_QUOTES 3, 2, "%s:%u: unexpected EOF encountered before closing quote\n" #define MSG_TEXT_DISCARDED 3, 3, "%s:%u: incomplete message marked for deletion\n" #define MSG_MISSING_NEWLINE 3, 4, "%s:%u: missing newline at end of file\n" /* ! * !$ end of file --- 50,58 ---- #define MSG_REDEFINED 2, 7, "%s: %s:%u: redefinition of message %u in set %u\n" #define MSG_PREVIOUS_HERE 2, 8, "%s: %s:%u: previous definition was here\n" ! #define MSG_DEL_UNSUPPORTED 3, 1, "%s: %s:%u: `delset' operation not yet supported\n" #define MSG_EOF_IN_QUOTES 3, 2, "%s:%u: unexpected EOF encountered before closing quote\n" #define MSG_TEXT_DISCARDED 3, 3, "%s:%u: incomplete message marked for deletion\n" #define MSG_MISSING_NEWLINE 3, 4, "%s:%u: missing newline at end of file\n" + #define MSG_BAD_INDEX 3, 5, "invalid reference in message index" /* ! * !$ end of file |
|
From: Keith M. <kei...@us...> - 2007-05-11 22:48:22
|
Update of /cvsroot/mingw/catgets/include In directory sc8-pr-cvs16:/tmp/cvs-serv15402/include Modified Files: debug.h Log Message: Miscellaneous comment and layout improvements. Index: debug.h =================================================================== RCS file: /cvsroot/mingw/catgets/include/debug.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** debug.h 6 Apr 2007 22:34:56 -0000 1.1.1.1 --- debug.h 11 May 2007 22:48:17 -0000 1.2 *************** *** 4,8 **** * * Written by Keith Marshall <kei...@us...> ! * Last modification: 02-Apr-2007 * * THIS SOFTWARE IS NOT COPYRIGHTED --- 4,8 ---- * * Written by Keith Marshall <kei...@us...> ! * Last modification: 11-May-2007 * * THIS SOFTWARE IS NOT COPYRIGHTED *************** *** 26,30 **** # define dfprintf(x) fprintf x # define dfputc(x) fputc x - # define DCODEFMT "<escape: %#4.4x>" #else /* --- 26,29 ---- |
|
From: Keith M. <kei...@us...> - 2007-05-11 22:48:21
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv15402
Modified Files:
ChangeLog mcsource.c
Log Message:
Miscellaneous comment and layout improvements.
Index: mcsource.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcsource.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** mcsource.c 11 May 2007 19:56:17 -0000 1.4
--- mcsource.c 11 May 2007 22:48:17 -0000 1.5
***************
*** 10,14 ****
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 27-Mar-2007
*
*
--- 10,14 ----
*
* Written by Keith Marshall <kei...@us...>
! * Last modification: 11-May-2007
*
*
***************
*** 96,100 ****
* and activate the appropriate parser attribute bits to process it.
*/
-
static struct directives
{
--- 96,99 ----
***************
*** 150,155 ****
static
! int errout( const char *src, long linenum, const char *fmt, ... )
{
va_list args;
va_start( args, fmt );
--- 149,157 ----
static
! int mc_errout( const char *src, long linenum, const char *fmt, ... )
{
+ /* Message dispatcher for error messages,
+ * used when `gencat_errno' is to be set to indicate `EXIT_FAILURE'.
+ */
va_list args;
va_start( args, fmt );
***************
*** 161,165 ****
static
! off_t wanted( int fd )
{
struct stat info;
--- 163,167 ----
static
! off_t mc_workspace_wanted( int fd )
{
struct stat info;
***************
*** 176,190 ****
static
! size_t add_escape( iconv_t *iconv_map, char *msgbuf, wchar_t code )
{
/* A trivial helper function, for encoding an escape sequence into the
* compiled message stream.
*/
! dfprintf(( stderr, DCODEFMT, code ));
return iconv_wctomb( msgbuf, code );
}
static
! char *update_workspace( char *buf, char *cache, unsigned int count )
{
# ifdef DEBUG
--- 178,192 ----
static
! size_t mc_add_escape( iconv_t *iconv_map, char *msgbuf, wchar_t code )
{
/* A trivial helper function, for encoding an escape sequence into the
* compiled message stream.
*/
! dfprintf(( stderr, "add escape code: %0#4.4x", code ));
return iconv_wctomb( msgbuf, code );
}
static
! char *mc_update_workspace( char *buf, char *cache, unsigned int count )
{
# ifdef DEBUG
***************
*** 239,243 ****
dfprintf(( stderr, "\n%s:new source file\n%s:", input, input ));
! if( (messages = mc_malloc( headroom = wanted( fd ))) == NULL )
return NULL;
--- 241,245 ----
dfprintf(( stderr, "\n%s:new source file\n%s:", input, input ));
! if( (messages = mc_malloc( headroom = mc_workspace_wanted( fd ))) == NULL )
return NULL;
***************
*** 292,296 ****
* and clear the set/message number accumulator.
*/
-
++linenum;
status &= ~( DIRECTIVE | NUMERIC | CATEGORY );
--- 294,297 ----
***************
*** 302,306 ****
* of the previous line...
*/
-
status &= ~MSGTEXT;
dfprintf(( stderr, "\n\n%s:%d:new input record", input, linenum ));
--- 303,306 ----
***************
*** 311,315 ****
* or it's a comment.
*/
-
status |= DIRECTIVE;
id = keyword;
--- 311,314 ----
***************
*** 321,325 ****
* with a the message identified by an explicit numeric key.
*/
-
status |= NUMERIC;
accumulator = c - L'0';
--- 320,323 ----
***************
*** 334,338 ****
* as part of the message definition.
*/
-
if( c == quote )
{
--- 332,335 ----
***************
*** 351,355 ****
* so clear the related NEWLINE and CONTINUATION flags.
*/
-
status &= ~( NEWLINE | CONTINUED );
}
--- 348,351 ----
***************
*** 361,370 ****
* directive identifying keyword.
*/
-
if( isspace( c ) )
{
/* We found the keyword delimiting space ...
*/
-
if( id == keyword )
{
--- 357,364 ----
***************
*** 375,379 ****
* set the comment state, to parse any codeset assignment.
*/
-
status = (status & ~CATEGORY) | DEFCONV;
dfprintf(( stderr, "\n%s:%u:record type: comment", input, linenum ));
--- 369,372 ----
***************
*** 420,424 ****
* identify it, and establish its associated parser state.
*/
-
*id = '\0';
status = mc_directive( status, keyword );
--- 413,416 ----
***************
*** 433,437 ****
* add the current character to the keyword parse buffer.
*/
-
if( (id - keyword) < (sizeof( keyword ) - 1) )
*id++ = c;
--- 425,428 ----
***************
*** 443,447 ****
/* We are parsing a numeric value...
*/
-
if( isdigit( c ) )
{
--- 434,437 ----
***************
*** 449,453 ****
* so add it into the accumulator.
*/
-
accumulator = accumulator * 10 + c - L'0';
}
--- 439,442 ----
***************
*** 459,463 ****
* and process as appropriate.
*/
-
switch( status & CATEGORY )
{
--- 448,451 ----
***************
*** 466,472 ****
* Invoked by a "set" directive,
* open a new numbered message set within the catalogue ...
- *
*/
-
dfprintf(( stderr, ": add set with id = %ld", accumulator ));
if( accumulator > setnum )
--- 454,458 ----
***************
*** 480,484 ****
* and reset the "msgnum", for the start of a new set.
*/
-
setnum = accumulator;
msgnum = 0;
--- 466,469 ----
***************
*** 490,496 ****
* so complain, and bail out.
*/
-
dfputc(( '\n', stderr ));
! gencat_errno = errout( FATAL( MSG_SETNUM_NOT_INCR ), setnum, accumulator );
return NULL;
}
--- 475,480 ----
* so complain, and bail out.
*/
dfputc(( '\n', stderr ));
! gencat_errno = mc_errout( FATAL( MSG_SETNUM_NOT_INCR ), setnum, accumulator );
return NULL;
}
***************
*** 501,505 ****
* Invoked by a "delset" directive,
* mark a numbered message set for deletion from the catalogue.
- *
*/
dfprintf(( stderr, ": delete set with id = %ld", accumulator ));
--- 485,488 ----
***************
*** 512,516 ****
* so fill it in as a `delset' request entry.
*/
-
this->src = input;
this->lineno = linenum;
--- 495,498 ----
***************
*** 523,527 ****
* so simply insert this as the first one.
*/
-
head = tail = this;
this->link = NULL;
--- 505,508 ----
***************
*** 533,537 ****
* so the new one must be added at the end.
*/
-
this->link = tail->link;
tail->link = this;
--- 514,517 ----
***************
*** 550,554 ****
* this requirement, so add a new message to the catalogue.
*/
-
struct msgdict *this;
if( (this = mc_malloc( sizeof( struct msgdict ))) != NULL )
--- 530,533 ----
***************
*** 560,564 ****
* simply open the default set.
*/
-
if( setnum == 0 )
setnum = NL_SETD;
--- 539,542 ----
***************
*** 567,571 ****
* dictionary slot, and commit the record to the catalogue.
*/
-
this->src = input;
this->base = messages;
--- 545,548 ----
***************
*** 579,583 ****
* so simply insert this as the first one.
*/
-
head = tail = this;
this->link = NULL;
--- 556,559 ----
***************
*** 589,593 ****
* so the new one must be added at the end.
*/
-
this->link = tail->link;
tail->link = this;
--- 565,568 ----
***************
*** 602,608 ****
* so complain, and bail out.
*/
-
dfputc(( '\n', stderr ));
! gencat_errno = errout( FATAL( MSG_MSGNUM_NOT_INCR ), msgnum, accumulator );
return NULL;
}
--- 577,582 ----
* so complain, and bail out.
*/
dfputc(( '\n', stderr ));
! gencat_errno = mc_errout( FATAL( MSG_MSGNUM_NOT_INCR ), msgnum, accumulator );
return NULL;
}
***************
*** 626,630 ****
* character appears before end of line.
*/
-
quote = (c == L'\n') ? L'\0' : c;
dfprintf(( stderr, quote ? ": assigned as %#4.4x" : ": none assigned", quote ));
--- 600,603 ----
***************
*** 638,642 ****
* until we find the end-of-line marker.
*/
-
if( c != L'\n' )
{
--- 611,614 ----
***************
*** 644,648 ****
* Check for other characters with special significance.
*/
-
if( status & ESCAPE )
{
--- 616,619 ----
***************
*** 650,669 ****
* Clear the ESCAPE flag, and interpret this case.
*/
-
size_t len = 0;
status &= ~ESCAPE;
switch ( c )
{
case L'r': /* embed a carriage return */
! len = add_escape( iconv_map, messages + msgloc, L'\r' );
break;
case L'n': /* embed a newline */
! len = add_escape( iconv_map, messages + msgloc, L'\n' );
break;
default: /* not a special case; just pass it through */
xcount += skip;
! dfputc(( c, stderr ));
}
if( len > (size_t)(0) )
--- 621,640 ----
* Clear the ESCAPE flag, and interpret this case.
*/
size_t len = 0;
status &= ~ESCAPE;
+ dfprintf(( stderr, "%s:%u:", input, linenum ));
switch ( c )
{
case L'r': /* embed a carriage return */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\r' );
break;
case L'n': /* embed a newline */
! len = mc_add_escape( iconv_map, messages + msgloc, L'\n' );
break;
default: /* not a special case; just pass it through */
xcount += skip;
! dfprintf(( stderr, "pass through escape code: %0#4.4x", c ));
}
if( len > (size_t)(0) )
***************
*** 680,684 ****
* and switch to ESCAPE mode, to interpret the next character.
*/
-
status |= FLUSH | ESCAPE;
}
--- 651,654 ----
***************
*** 709,713 ****
* for flushing to the message collection buffer.
*/
-
status |= NEWLINE | FLUSH;
--- 679,682 ----
***************
*** 715,719 ****
* then we have an implicit continuation, so force it.
*/
-
if( (status & QUOTED) == QUOTED )
status |= CONTINUED;
--- 684,687 ----
***************
*** 721,725 ****
/* Clean up the context of any pending directive processing.
*/
-
switch( status & CATEGORY )
{
--- 689,692 ----
***************
*** 730,734 ****
* so we must disable "quote" character recognition.
*/
-
quote = L'\0';
dfprintf(( stderr, ": none assigned" ));
--- 697,700 ----
***************
*** 755,759 ****
if( (messages = realloc( messages, msgloc + headroom )) == NULL )
{
! gencat_errno = errout( FATAL( MSG_OUT_OF_MEMORY ));
return NULL;
}
--- 721,725 ----
if( (messages = realloc( messages, msgloc + headroom )) == NULL )
{
! gencat_errno = mc_errout( FATAL( MSG_OUT_OF_MEMORY ));
return NULL;
}
***************
*** 761,765 ****
headroom -= xcount;
dfprintf(( stderr, "\n%s:%u:", input, linenum ));
! msgloc = update_workspace( messages + msgloc, p - xcount - skip, xcount ) - messages;
dfprintf(( stderr, "; %u byte%s free\n", headroom, headroom == 1 ? "" : "s" ));
if( (status & (MSGTEXT | NEWLINE | CONTINUED)) == (MSGTEXT | NEWLINE) )
--- 727,732 ----
headroom -= xcount;
dfprintf(( stderr, "\n%s:%u:", input, linenum ));
! msgloc = mc_update_workspace( messages + msgloc, p - xcount - skip, xcount )
! - messages;
dfprintf(( stderr, "; %u byte%s free\n", headroom, headroom == 1 ? "" : "s" ));
if( (status & (MSGTEXT | NEWLINE | CONTINUED)) == (MSGTEXT | NEWLINE) )
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** ChangeLog 11 May 2007 19:56:17 -0000 1.5
--- ChangeLog 11 May 2007 22:48:17 -0000 1.6
***************
*** 1,4 ****
--- 1,19 ----
2007-05-11 Keith Marshall <kei...@us...>
+ * mcsource.c: Miscellaneous comment and layout improvements;
+ improved formatting of some debugging/tracing messages.
+ (add_escape): Static function renamed...
+ (mc_add_escape): ...to this.
+ (wanted): Static function renamed...
+ (mc_workspace_wanted): ...to this.
+ (update_workspace): Static function renamed...
+ (mc_update_workspace): ...to this.
+ (errout): Static function renamed...
+ (mc_errout): ...to this.
+
+ * include/debug.h (DCODEFMT): Redundant macro; deleted.
+
+ 2007-05-11 Keith Marshall <kei...@us...>
+
Avoid attempt to read input again, after EOF detected; this caused
strange behaviour if processing an interactive input stream.
|
|
From: Keith M. <kei...@us...> - 2007-05-11 19:56:22
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv26676
Modified Files:
ChangeLog mcsource.c
Log Message:
Avoid attempt to read input again, after EOF detected.
Index: mcsource.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcsource.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** mcsource.c 11 May 2007 19:34:37 -0000 1.3
--- mcsource.c 11 May 2007 19:56:17 -0000 1.4
***************
*** 205,210 ****
# define CODESET_DECLARED codeset_decl_src, codeset_decl_lineno
- int fd, count;
long accumulator;
char buf[BUFSIZ], keyword[64];
char *id;
--- 205,210 ----
# define CODESET_DECLARED codeset_decl_src, codeset_decl_lineno
long accumulator;
+ int fd, input_fd, count;
char buf[BUFSIZ], keyword[64];
char *id;
***************
*** 231,239 ****
if( (strcmp( input, "-") == 0) || (strcmp( input, dev_stdin ) == 0) )
{
! fd = STDIN_FILENO;
input = dev_stdin;
}
! else if( (fd = open( input, O_RDONLY | O_BINARY )) < 0 )
return NULL;
--- 231,239 ----
if( (strcmp( input, "-") == 0) || (strcmp( input, dev_stdin ) == 0) )
{
! input_fd = fd = STDIN_FILENO;
input = dev_stdin;
}
! else if( (input_fd = fd = open( input, O_RDONLY | O_BINARY )) < 0 )
return NULL;
***************
*** 243,247 ****
msgloc = (off_t)(0);
! while( (count = read( fd, buf, sizeof( buf ) )) > 0 )
{
char *p = buf;
--- 243,247 ----
msgloc = (off_t)(0);
! while( (fd >= 0) && ((count = read( fd, buf, sizeof( buf ) )) > 0) )
{
char *p = buf;
***************
*** 796,805 ****
if( (p - buf) > high_water_mark )
{
char *copyptr;
for( copyptr = buf; count; count-- )
*copyptr++ = *p++;
! p = buf; count = copyptr - p;
dfprintf(( stderr, "\n%s:%u:input count depleted: %u byte%s remaining", input, linenum, count, count == 1 ? "" : "s" ));
! count += read( fd, copyptr, sizeof( buf ) - count );
dfprintf(( stderr, "; read new input: count adjusted to %u byte%s", count, count == 1 ? "" : "s" ));
high_water_mark = count - ( count >> 2 );
--- 796,808 ----
if( (p - buf) > high_water_mark )
{
+ int ref;
char *copyptr;
for( copyptr = buf; count; count-- )
*copyptr++ = *p++;
! p = buf; ref = count = copyptr - p;
dfprintf(( stderr, "\n%s:%u:input count depleted: %u byte%s remaining", input, linenum, count, count == 1 ? "" : "s" ));
! if( (fd >= 0)
! && (ref == (count += read( fd, copyptr, sizeof( buf ) - count ))) )
! fd = -1;
dfprintf(( stderr, "; read new input: count adjusted to %u byte%s", count, count == 1 ? "" : "s" ));
high_water_mark = count - ( count >> 2 );
***************
*** 873,876 ****
--- 876,883 ----
dfputc(( L'\n', stderr ));
+ /* We are done with the current input source;
+ * close its file descriptor, and return the message list.
+ */
+ close( input_fd );
return head;
}
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ChangeLog 11 May 2007 19:35:35 -0000 1.4
--- ChangeLog 11 May 2007 19:56:17 -0000 1.5
***************
*** 1,4 ****
--- 1,14 ----
2007-05-11 Keith Marshall <kei...@us...>
+ Avoid attempt to read input again, after EOF detected; this caused
+ strange behaviour if processing an interactive input stream.
+
+ * mcsource.c (mc_source): New local variable `input_fd'; assign it as
+ a duplicate of `fd'. Set `fd' to -1, when EOF detected; don't do any
+ more reads, after `fd' set to this invalid value. Call `close' on
+ `input_fd', before return.
+
+ 2007-05-11 Keith Marshall <kei...@us...>
+
Avoid calling `iconv' with unintialised codeset converter.
|
|
From: Keith M. <kei...@us...> - 2007-05-11 19:35:39
|
Update of /cvsroot/mingw/catgets In directory sc8-pr-cvs16:/tmp/cvs-serv3180 Modified Files: ChangeLog Log Message: Avoid calling `iconv' with unintialised codeset converter. Index: ChangeLog =================================================================== RCS file: /cvsroot/mingw/catgets/ChangeLog,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ChangeLog 9 May 2007 22:43:51 -0000 1.3 --- ChangeLog 11 May 2007 19:35:35 -0000 1.4 *************** *** 1,2 **** --- 1,10 ---- + 2007-05-11 Keith Marshall <kei...@us...> + + Avoid calling `iconv' with unintialised codeset converter. + + * mcsource.c (mc_default_codeset): New static function. + (mc_source): Use it, before each `iconv' call, to initialise the + codeset converters, if `codeset' has not been assigned. + 2007-05-09 Keith Marshall <kei...@us...> |
|
From: Keith M. <kei...@us...> - 2007-05-11 19:34:41
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv31715
Modified Files:
mcsource.c
Log Message:
Avoid calling `iconv' with unintialised codeset converter.
Index: mcsource.c
===================================================================
RCS file: /cvsroot/mingw/catgets/mcsource.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** mcsource.c 20 Apr 2007 22:24:03 -0000 1.2
--- mcsource.c 11 May 2007 19:34:37 -0000 1.3
***************
*** 131,134 ****
--- 131,153 ----
static
+ char *mc_default_codeset( void )
+ {
+ /* Helper function, called when the message definition file for a
+ * catalogue doesn't explicitly specify a codeset for the messages;
+ * establish the default codeset for the message catalogue, using
+ * the codeset of the LC_MESSAGES category in the present locale.
+ */
+ char *codeset;
+
+ if( (codeset = setlocale( LC_MESSAGES, "" )) == NULL )
+ codeset = setlocale( LC_MESSAGES, NULL );
+ setlocale( LC_CTYPE, codeset );
+ codeset = strdup( nl_langinfo( CODESET ));
+ setlocale( LC_CTYPE, "C" );
+
+ return codeset;
+ }
+
+ static
int errout( const char *src, long linenum, const char *fmt, ... )
{
***************
*** 239,243 ****
* we have established an appropriate codeset mapping.
*/
-
if( codeset == NULL )
{
--- 258,261 ----
***************
*** 245,255 ****
* so default to the codeset of the system locale.
*/
!
! if( (codeset = setlocale( LC_MESSAGES, "" )) == NULL )
! codeset = setlocale( LC_MESSAGES, NULL );
! setlocale( LC_CTYPE, codeset );
! codeset = strdup( nl_langinfo( CODESET ));
! setlocale( LC_CTYPE, "C" );
! codeset = map_codeset( iconv_map, codeset, "wchar_t" );
codeset_decl_lineno = linenum;
codeset_decl_src = input;
--- 263,267 ----
* so default to the codeset of the system locale.
*/
! codeset = map_codeset( iconv_map, mc_default_codeset(), "wchar_t" );
codeset_decl_lineno = linenum;
codeset_decl_src = input;
***************
*** 260,264 ****
* transforming to the wide character domain, for local processing.
*/
-
p += ((skip = iconv_mbtowc( &c, p, count )) > 0) ? skip : 0;
}
--- 272,275 ----
***************
*** 269,273 ****
* or "C" locale, so read single byte character sequences.
*/
-
c = (wchar_t)(*p++);
}
--- 280,283 ----
***************
*** 756,759 ****
--- 766,778 ----
{
wchar_t terminator = L'\0';
+ if( codeset == NULL )
+ {
+ /* No codeset mapping is yet in place,
+ * so default to the codeset of the system locale.
+ */
+ codeset = map_codeset( iconv_map, mc_default_codeset(), "wchar_t" );
+ codeset_decl_lineno = linenum;
+ codeset_decl_src = input;
+ }
int xcount = iconv_wctomb( messages + msgloc, terminator );
if( xcount >= 0 )
|
|
From: Keith M. <kei...@us...> - 2007-05-09 22:43:57
|
Update of /cvsroot/mingw/catgets
In directory sc8-pr-cvs16:/tmp/cvs-serv23041
Modified Files:
ChangeLog catopen.c
Log Message:
Provide more robust handling of possibly incomplete LC_MESSAGES macro expansions, when parsing NLSPATH.
Index: catopen.c
===================================================================
RCS file: /cvsroot/mingw/catgets/catopen.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** catopen.c 20 Apr 2007 22:24:02 -0000 1.2
--- catopen.c 9 May 2007 22:43:51 -0000 1.3
***************
*** 127,130 ****
--- 127,157 ----
static
+ int mc_check_break_code( wchar_t chk, wchar_t *break_code )
+ {
+ /* Helper function, called by `mc_nlspath_open;
+ * it checks a given character against each of the
+ * contextually valid delimiters, to establish where
+ * to split the LC_MESSAGES string into components.
+ */
+ if( chk )
+ {
+ /* If we haven't run out of characters to parse...
+ */
+ while( *break_code )
+ {
+ /* Check the current character against each valid delimiter,
+ * and return the character code if a match is found.
+ */
+ if( chk == *break_code++ )
+ return (int)(chk);
+ }
+ }
+ /* Fall through on no match,
+ * returning zero, to tell `mc_nlspath_open' to keep parsing.
+ */
+ return 0;
+ }
+
+ static
int mc_nlspath_open( __const char *msgcat, unsigned flags )
{
***************
*** 276,297 ****
|| ((nls_locale = setlocale( LC_MESSAGES, NULL )) != NULL) )
{
- wchar_t break_code = L'\0';
subst = nls_locale;
! if( chk == L'l' )
{
! break_code = L'_';
}
else if( (chk == L't') || (chk == L'c') )
{
! break_code = (chk == L't') ? L'_' : L'.';
do subst += (copy_index = mbtowc( &chk, subst, MB_CUR_MAX ));
! while( (copy_index > 0) && (chk != break_code) );
! break_code = (break_code == L'_') ? L'.' : L'\0';
}
while( ((copy_index = mbtowc( &chk, subst, MB_CUR_MAX )) > 0)
! && (chk != break_code) )
{
if( headroom > copy_index )
--- 303,326 ----
|| ((nls_locale = setlocale( LC_MESSAGES, NULL )) != NULL) )
{
subst = nls_locale;
+ wchar_t *break_code = L"_.@";
! if( chk == L'L' )
{
! break_code += 3;
}
else if( (chk == L't') || (chk == L'c') )
{
! if( chk == L'c' )
! ++break_code;
do subst += (copy_index = mbtowc( &chk, subst, MB_CUR_MAX ));
! while( (copy_index > 0) && (chk != *break_code) );
! if( *++break_code == L'@' )
! ++break_code;
}
while( ((copy_index = mbtowc( &chk, subst, MB_CUR_MAX )) > 0)
! && ! mc_check_break_code( chk, break_code ) )
{
if( headroom > copy_index )
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/catgets/ChangeLog,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ChangeLog 20 Apr 2007 22:24:02 -0000 1.2
--- ChangeLog 9 May 2007 22:43:51 -0000 1.3
***************
*** 1,2 ****
--- 1,11 ----
+ 2007-05-09 Keith Marshall <kei...@us...>
+
+ Provide more robust handling of possibly incomplete LC_MESSAGES macro
+ expansions, when parsing NLSPATH.
+
+ * catopen.c (mc_check_break_code): New function.
+ (mc_nlspath_open): Use it to identify break points, when splitting
+ LC_MESSAGES string into its component parts.
+
2007-04-20 Keith Marshall <kei...@us...>
|
|
From: Keith M. <kei...@us...> - 2007-05-07 21:51:42
|
Update of /cvsroot/mingw/regex In directory sc8-pr-cvs16:/tmp/cvs-serv25405 Modified Files: ChangeLog Log Message: Version 2.5.1 released. Index: ChangeLog =================================================================== RCS file: /cvsroot/mingw/regex/ChangeLog,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ChangeLog 7 May 2007 21:05:53 -0000 1.6 --- ChangeLog 7 May 2007 21:51:38 -0000 1.7 *************** *** 1,4 **** --- 1,10 ---- 2007-05-07 Keith Marshall <kei...@us...> + Version 2.5.1 released on MinGW download site. + + * r2-5-1: Release tag assigned. + + 2007-05-07 Keith Marshall <kei...@us...> + Another bug reported by Julien Lecomte <ju...@fa...> *************** *** 9,12 **** --- 15,24 ---- * configure: Regenerated. + 2007-05-07 Keith Marshall <kei...@us...> + + Version 2.5 released on MinGW download site. + + * r2-5-as-built: Release tag assigned. + 2007-05-05 Keith Marshall <kei...@us...> |
|
From: Keith M. <kei...@us...> - 2007-05-07 21:05:58
|
Update of /cvsroot/mingw/regex
In directory sc8-pr-cvs16:/tmp/cvs-serv813
Modified Files:
ChangeLog Makefile.in configure configure.ac
Log Message:
Another bug reported by Julien Lecomte <ju...@fa...>
Index: Makefile.in
===================================================================
RCS file: /cvsroot/mingw/regex/Makefile.in,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** Makefile.in 5 May 2007 19:14:19 -0000 1.4
--- Makefile.in 7 May 2007 21:05:53 -0000 1.5
***************
*** 68,72 ****
libgnurx-$(DLLVERSION).dll libgnurx.dll.a: $(OBJECTS)
! $(CC) -shared -o libgnurx-$(DLLVERSION).dll $(LDFLAGS) $(OBJECTS)
libregex.a: libgnurx.dll.a
--- 68,72 ----
libgnurx-$(DLLVERSION).dll libgnurx.dll.a: $(OBJECTS)
! $(CC) $(CFLAGS) -shared -o libgnurx-$(DLLVERSION).dll $(LDFLAGS) $(OBJECTS)
libregex.a: libgnurx.dll.a
Index: configure.ac
===================================================================
RCS file: /cvsroot/mingw/regex/configure.ac,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** configure.ac 3 May 2007 22:46:09 -0000 1.2
--- configure.ac 7 May 2007 21:05:54 -0000 1.3
***************
*** 21,25 ****
# PATCHLEVEL is optional; comment/uncomment and adjust as required.
#
! # MINGW_AC_DEFINE_PACKAGE_ID([PATCHLEVEL], [1])
#
# DLL_VERSION is required; installed DLLs will be versioned, by
--- 21,25 ----
# PATCHLEVEL is optional; comment/uncomment and adjust as required.
#
! MINGW_AC_DEFINE_PACKAGE_ID([PATCHLEVEL], [1])
#
# DLL_VERSION is required; installed DLLs will be versioned, by
***************
*** 76,80 ****
AC_SUBST([GNURX_LIB])
AC_SUBST([CC_QUALIFIED], ["$CC $CC_QUALIFIED"])
! LDFLAGS='-Wl,--enable-auto-image-base -Wl,--out-implib,libgnurx.dll.a'
test -n "${GNURX_LIB}" && LDFLAGS="$LDFLAGS -Wl,--output-def,libgnurx.def"
AC_CONFIG_FILES([Makefile])
--- 76,80 ----
AC_SUBST([GNURX_LIB])
AC_SUBST([CC_QUALIFIED], ["$CC $CC_QUALIFIED"])
! LDFLAGS="$LDFLAGS -Wl,--enable-auto-image-base -Wl,--out-implib,libgnurx.dll.a"
test -n "${GNURX_LIB}" && LDFLAGS="$LDFLAGS -Wl,--output-def,libgnurx.def"
AC_CONFIG_FILES([Makefile])
Index: configure
===================================================================
RCS file: /cvsroot/mingw/regex/configure,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** configure 3 May 2007 22:46:09 -0000 1.2
--- configure 7 May 2007 21:05:54 -0000 1.3
***************
*** 1,5 ****
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
! # Generated by GNU Autoconf 2.59 for MinGW libgnurx 2.5.
#
# Report bugs to <https://sourceforge.net/tracker/?group_id=2435&atid=102435>.
--- 1,5 ----
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
! # Generated by GNU Autoconf 2.59 for MinGW libgnurx 2.5.1.
#
# Report bugs to <https://sourceforge.net/tracker/?group_id=2435&atid=102435>.
***************
*** 270,275 ****
PACKAGE_NAME='MinGW libgnurx'
PACKAGE_TARNAME='mingw-libgnurx'
! PACKAGE_VERSION='2.5'
! PACKAGE_STRING='MinGW libgnurx 2.5'
PACKAGE_BUGREPORT='https://sourceforge.net/tracker/?group_id=2435&atid=102435'
--- 270,275 ----
PACKAGE_NAME='MinGW libgnurx'
PACKAGE_TARNAME='mingw-libgnurx'
! PACKAGE_VERSION='2.5.1'
! PACKAGE_STRING='MinGW libgnurx 2.5.1'
PACKAGE_BUGREPORT='https://sourceforge.net/tracker/?group_id=2435&atid=102435'
***************
*** 739,743 ****
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
! \`configure' configures MinGW libgnurx 2.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
--- 739,743 ----
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
! \`configure' configures MinGW libgnurx 2.5.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
***************
*** 796,800 ****
if test -n "$ac_init_help"; then
case $ac_init_help in
! short | recursive ) echo "Configuration of MinGW libgnurx 2.5:";;
esac
cat <<\_ACEOF
--- 796,800 ----
if test -n "$ac_init_help"; then
case $ac_init_help in
! short | recursive ) echo "Configuration of MinGW libgnurx 2.5.1:";;
esac
cat <<\_ACEOF
***************
*** 914,918 ****
if $ac_init_version; then
cat <<\_ACEOF
! MinGW libgnurx configure 2.5
generated by GNU Autoconf 2.59
--- 914,918 ----
if $ac_init_version; then
cat <<\_ACEOF
! MinGW libgnurx configure 2.5.1
generated by GNU Autoconf 2.59
***************
*** 928,932 ****
running configure, to aid debugging if configure makes a mistake.
! It was created by MinGW libgnurx $as_me 2.5, which was
generated by GNU Autoconf 2.59. Invocation command line was
--- 928,932 ----
running configure, to aid debugging if configure makes a mistake.
! It was created by MinGW libgnurx $as_me 2.5.1, which was
generated by GNU Autoconf 2.59. Invocation command line was
***************
*** 2393,2397 ****
CC_QUALIFIED="$CC $CC_QUALIFIED"
! LDFLAGS='-Wl,--enable-auto-image-base -Wl,--out-implib,libgnurx.dll.a'
test -n "${GNURX_LIB}" && LDFLAGS="$LDFLAGS -Wl,--output-def,libgnurx.def"
ac_config_files="$ac_config_files Makefile"
--- 2393,2397 ----
CC_QUALIFIED="$CC $CC_QUALIFIED"
! LDFLAGS="$LDFLAGS -Wl,--enable-auto-image-base -Wl,--out-implib,libgnurx.dll.a"
test -n "${GNURX_LIB}" && LDFLAGS="$LDFLAGS -Wl,--output-def,libgnurx.def"
ac_config_files="$ac_config_files Makefile"
***************
*** 2790,2794 ****
cat >&5 <<_CSEOF
! This file was extended by MinGW libgnurx $as_me 2.5, which was
generated by GNU Autoconf 2.59. Invocation command line was
--- 2790,2794 ----
cat >&5 <<_CSEOF
! This file was extended by MinGW libgnurx $as_me 2.5.1, which was
generated by GNU Autoconf 2.59. Invocation command line was
***************
*** 2845,2849 ****
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
! MinGW libgnurx config.status 2.5
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
--- 2845,2849 ----
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
! MinGW libgnurx config.status 2.5.1
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/regex/ChangeLog,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** ChangeLog 5 May 2007 19:14:19 -0000 1.5
--- ChangeLog 7 May 2007 21:05:53 -0000 1.6
***************
*** 1,2 ****
--- 1,12 ----
+ 2007-05-07 Keith Marshall <kei...@us...>
+
+ Another bug reported by Julien Lecomte <ju...@fa...>
+
+ * Makefile.in (gnurx-version.dll): Pass CFLAGS in link command.
+
+ * configure.ac (LDFLAGS): Append; don't override user's settings.
+ (MINGW_AC_DEFINE_PACKAGE_ID): Increment `PATCHLEVEL'.
+ * configure: Regenerated.
+
2007-05-05 Keith Marshall <kei...@us...>
|
|
From: Keith M. <kei...@us...> - 2007-05-05 19:14:23
|
Update of /cvsroot/mingw/regex
In directory sc8-pr-cvs16:/tmp/cvs-serv11790
Modified Files:
ChangeLog Makefile.in
Log Message:
* Makefile.in (SRCDIST_FILES): Remove reference to `nomsvc'.
Index: Makefile.in
===================================================================
RCS file: /cvsroot/mingw/regex/Makefile.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** Makefile.in 3 May 2007 22:46:08 -0000 1.3
--- Makefile.in 5 May 2007 19:14:19 -0000 1.4
***************
*** 52,56 ****
SRCDIST_FILES = ${srcdir}/configure ${srcdir}/configure.ac ${srcdir}/aclocal.m4 \
${srcdir}/pkgid.m4 ${srcdir}/Makefile.in ${srcdir}/README ${srcdir}/COPYING.LIB \
! $(SOURCES) $(wildcard ${srcdir}/*.[37]) ${srcdir}/nomsvc ${srcdir}/ChangeLog
ZIPCMD = @ZIPCMD@
--- 52,56 ----
SRCDIST_FILES = ${srcdir}/configure ${srcdir}/configure.ac ${srcdir}/aclocal.m4 \
${srcdir}/pkgid.m4 ${srcdir}/Makefile.in ${srcdir}/README ${srcdir}/COPYING.LIB \
! $(SOURCES) $(wildcard ${srcdir}/*.[37]) ${srcdir}/ChangeLog
ZIPCMD = @ZIPCMD@
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/regex/ChangeLog,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ChangeLog 3 May 2007 22:46:08 -0000 1.4
--- ChangeLog 5 May 2007 19:14:19 -0000 1.5
***************
*** 1,2 ****
--- 1,6 ----
+ 2007-05-05 Keith Marshall <kei...@us...>
+
+ * Makefile.in (SRCDIST_FILES): Remove reference to `nomsvc'.
+
2007-05-03 Keith Marshall <kei...@us...>
|
|
From: Keith M. <kei...@us...> - 2007-05-03 22:46:18
|
Update of /cvsroot/mingw/regex In directory sc8-pr-cvs16:/tmp/cvs-serv6136 Modified Files: ChangeLog Makefile.in README aclocal.m4 configure configure.ac Removed Files: nomsvc Log Message: Add `--enable-msvc-implib' configuration option. Index: configure =================================================================== RCS file: /cvsroot/mingw/regex/configure,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** configure 30 Apr 2007 22:46:36 -0000 1.1 --- configure 3 May 2007 22:46:09 -0000 1.2 *************** *** 274,278 **** PACKAGE_BUGREPORT='https://sourceforge.net/tracker/?group_id=2435&atid=102435' ! ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CC_QUALIFIED MSVCLIB ac_ct_MSVCLIB DLLVERSION ZIPCMD ZIPEXT install_dev GNURX_LIB LIBOBJS LTLIBOBJS' ac_subst_files='' --- 274,278 ---- PACKAGE_BUGREPORT='https://sourceforge.net/tracker/?group_id=2435&atid=102435' ! ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CC_QUALIFIED DLLVERSION ZIPCMD ZIPEXT MSVCLIB ac_ct_MSVCLIB GNURX_LIB install_dev LIBOBJS LTLIBOBJS' ac_subst_files='' *************** *** 804,807 **** --- 804,808 ---- --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-dist=TYPE package distribution as TYPE tar or zip [TYPE=tar] + --enable-msvc-implib enable building of MSVC compatible import libraries --disable-dev-install omit development libraries with `make install' *************** *** 2239,2243 **** CFLAGS=$popCFLAGS ! if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lib", so it can be a program name with args. set dummy ${ac_tool_prefix}lib; ac_word=$2 --- 2240,2276 ---- CFLAGS=$popCFLAGS ! ! # Set the release version for the resultant DLL. ! # ! DLLVERSION=0 ! ! ! # User configuration options. ! # ! ZIPCMD='tar czhf' ! ! ZIPEXT='.tar.gz' ! ! test "xtar" = xzip && ZIPCMD='zip -r' ZIPEXT='.zip' ! # Check whether --enable-dist or --disable-dist was given. ! if test "${enable_dist+set}" = set; then ! enableval="$enable_dist" ! case $enableval in ! tar) ;; zip) ZIPCMD='zip -r' ZIPEXT='.zip' ;; ! *) { echo "$as_me:$LINENO: WARNING: $enableval:unsupported distribution format" >&5 ! echo "$as_me: WARNING: $enableval:unsupported distribution format" >&2;} ! { echo "$as_me:$LINENO: WARNING: reverting to tar format" >&5 ! echo "$as_me: WARNING: reverting to tar format" >&2;} ;; ! esac ! ! fi; ! # Check whether --enable-msvc-implib or --disable-msvc-implib was given. ! if test "${enable_msvc_implib+set}" = set; then ! enableval="$enable_msvc_implib" ! ! else ! enable_msvc_implib=no ! fi; ! if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lib", so it can be a program name with args. set dummy ${ac_tool_prefix}lib; ac_word=$2 *************** *** 2318,2346 **** fi ! # Set the release version for the resultant DLL. ! # ! DLLVERSION=0 ! ! # User configuration options. ! # ! ZIPCMD='tar czhf' ! ZIPEXT='.tar.gz' ! test "xtar" = xzip && ZIPCMD='zip -r' ZIPEXT='.zip' ! # Check whether --enable-dist or --disable-dist was given. ! if test "${enable_dist+set}" = set; then ! enableval="$enable_dist" ! case $enableval in ! tar) ;; zip) ZIPCMD='zip -r' ZIPEXT='.zip' ;; ! *) { echo "$as_me:$LINENO: WARNING: $enableval:unsupported distribution format" >&5 ! echo "$as_me: WARNING: $enableval:unsupported distribution format" >&2;} ! { echo "$as_me:$LINENO: WARNING: reverting to tar format" >&5 ! echo "$as_me: WARNING: reverting to tar format" >&2;} ;; ! esac - fi; install_dev=install-dev --- 2351,2383 ---- fi + if test "x$enable_msvc_implib" = xyes && test -n "$MSVCLIB" + then GNURX_LIB="gnurx.lib" + elif test "x$enable_msvc_implib" = xyes + then { echo "$as_me:$LINENO: WARNING: no MSVC compatible \`lib' program found in \$PATH ! The MSVC \`lib' program is required to build MSVC compatible import libs. ! Since this program does not appear to be installed on this computer, MSVC ! compatible import libs will not be built; configuration will continue, but ! only MinGW format import libs will be included in the resultant build. ! If you wish to build a development kit which does include import libs for ! MSVC, in addition to those for MinGW, you should ensure that MSVC has been ! installed on this computer, and that \$PATH includes the directory in which ! its \`lib' program is located, then run \`configure' again. ! " >&5 ! echo "$as_me: WARNING: no MSVC compatible \`lib' program found in \$PATH ! The MSVC \`lib' program is required to build MSVC compatible import libs. ! Since this program does not appear to be installed on this computer, MSVC ! compatible import libs will not be built; configuration will continue, but ! only MinGW format import libs will be included in the resultant build. ! If you wish to build a development kit which does include import libs for ! MSVC, in addition to those for MinGW, you should ensure that MSVC has been ! installed on this computer, and that \$PATH includes the directory in which ! its \`lib' program is located, then run \`configure' again. ! " >&2;} ! fi install_dev=install-dev *************** *** 2357,2363 **** LDFLAGS='-Wl,--enable-auto-image-base -Wl,--out-implib,libgnurx.dll.a' ! if test -n "${MSVCLIB}" ! then LDFLAGS="$LDFLAGS -Wl,--output-def,libgnurx.def" GNURX_LIB=gnurx.lib ! else MSVCLIB='${srcdir}/nomsvc lib'; fi ac_config_files="$ac_config_files Makefile" --- 2394,2398 ---- LDFLAGS='-Wl,--enable-auto-image-base -Wl,--out-implib,libgnurx.dll.a' ! test -n "${GNURX_LIB}" && LDFLAGS="$LDFLAGS -Wl,--output-def,libgnurx.def" ac_config_files="$ac_config_files Makefile" *************** *** 3004,3014 **** s,@OBJEXT@,$OBJEXT,;t t s,@CC_QUALIFIED@,$CC_QUALIFIED,;t t - s,@MSVCLIB@,$MSVCLIB,;t t - s,@ac_ct_MSVCLIB@,$ac_ct_MSVCLIB,;t t s,@DLLVERSION@,$DLLVERSION,;t t s,@ZIPCMD@,$ZIPCMD,;t t s,@ZIPEXT@,$ZIPEXT,;t t ! s,@install_dev@,$install_dev,;t t s,@GNURX_LIB@,$GNURX_LIB,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t --- 3039,3049 ---- s,@OBJEXT@,$OBJEXT,;t t s,@CC_QUALIFIED@,$CC_QUALIFIED,;t t s,@DLLVERSION@,$DLLVERSION,;t t s,@ZIPCMD@,$ZIPCMD,;t t s,@ZIPEXT@,$ZIPEXT,;t t ! s,@MSVCLIB@,$MSVCLIB,;t t ! s,@ac_ct_MSVCLIB@,$ac_ct_MSVCLIB,;t t s,@GNURX_LIB@,$GNURX_LIB,;t t + s,@install_dev@,$install_dev,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t Index: ChangeLog =================================================================== RCS file: /cvsroot/mingw/regex/ChangeLog,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ChangeLog 2 May 2007 18:02:22 -0000 1.3 --- ChangeLog 3 May 2007 22:46:08 -0000 1.4 *************** *** 1,2 **** --- 1,20 ---- + 2007-05-03 Keith Marshall <kei...@us...> + + Add `--enable-msvc-implib' configuration option. + + * README (--enable-msvc-implib): Document it. + * aclocal.m4 (MINGW_AC_MSVC_IMPORT_LIBS): New macro; implement it. + + * configure.ac (MINGW_AC_MSVC_IMPORT_LIBS): Use it to define... + (GNURX_LIB): ...this; no longer set explicitly. + * configure: Regenerated. + + * Makefile.in (GNURX_LIB): Use AC_SUBST result, in place of... + (gnurx.lib): ...this, as a prequisite for `all' target. + (MSVCLIB): Define explicitly; do not use AC_SUBST result. + + * nomsvc: File deleted; it is obsoleted by... + (MINGW_AC_MSVC_IMPORT_LIBS): ...this aclocal.m4 macro. + 2007-05-02 Keith Marshall <kei...@us...> Index: Makefile.in =================================================================== RCS file: /cvsroot/mingw/regex/Makefile.in,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Makefile.in 2 May 2007 18:02:23 -0000 1.2 --- Makefile.in 3 May 2007 22:46:08 -0000 1.3 *************** *** 46,50 **** OBJECTS = regex.o ! MSVCLIB = @MSVCLIB@ BINDIST_FILES = libgnurx-$(DLLVERSION).dll --- 46,50 ---- OBJECTS = regex.o ! MSVCLIB = lib BINDIST_FILES = libgnurx-$(DLLVERSION).dll *************** *** 57,61 **** ZIPEXT = @ZIPEXT@ ! all: libgnurx-$(DLLVERSION).dll libgnurx.dll.a libregex.a gnurx.lib Makefile: config.status Makefile.in --- 57,61 ---- ZIPEXT = @ZIPEXT@ ! all: libgnurx-$(DLLVERSION).dll libgnurx.dll.a libregex.a @GNURX_LIB@ Makefile: config.status Makefile.in Index: README =================================================================== RCS file: /cvsroot/mingw/regex/README,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** README 30 Apr 2007 22:46:36 -0000 1.2 --- README 3 May 2007 22:46:08 -0000 1.3 *************** *** 57,63 **** 3) Adapted the build procedure, to avoid a dependency on the `lib' program from Microsoft's MSVC tool chain. This is achieved by ! simply declining to build an MSVC compatible import library, ! if this tool is not present, while retaining the capability to ! do so, if the tool *is* present. 4) Added `install', `install-dll' and `install-dev' targets, to --- 57,76 ---- 3) Adapted the build procedure, to avoid a dependency on the `lib' program from Microsoft's MSVC tool chain. This is achieved by ! providing an option to configure, which is disabled by default; ! it may by activated by specifying `--enable-msvc-implib' on the ! configure command line. If this option is not activated, or if ! the MSVC `lib' tool is not present, the Makefile is configured ! without binding the rule for building an MSVC compatible import ! library, to the default target, (although the rule is left in ! place for explicit use). ! ! If the `--enable-msvc-implib' option is specified, but `lib' is ! not present, then configure will issue a warning message, and ! will again configure the Makefile without binding this rule to ! the default target. ! ! Only if the `--enable-msvc-implib' option is specified, *and* ! the `lib' tool is present, will building of an MSVC compatible ! import library be configured as a default deliverable. 4) Added `install', `install-dll' and `install-dev' targets, to Index: configure.ac =================================================================== RCS file: /cvsroot/mingw/regex/configure.ac,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** configure.ac 30 Apr 2007 22:46:37 -0000 1.1 --- configure.ac 3 May 2007 22:46:09 -0000 1.2 *************** *** 61,65 **** AC_PROG_CC MINGW_AC_PROG_CC_OPTIONS([CC_QUALIFIED], [-m], [threads tune=pentium3]) - AC_CHECK_TOOL([MSVCLIB], [lib]) # Set the release version for the resultant DLL. --- 61,64 ---- *************** *** 70,73 **** --- 69,73 ---- # MINGW_AC_DISTRIBUTION_TYPE([tar]) + MINGW_AC_MSVC_IMPORT_LIBS([GNURX_LIB], [gnurx.lib]) MINGW_AC_DEV_INSTALL_OPTION *************** *** 77,83 **** AC_SUBST([CC_QUALIFIED], ["$CC $CC_QUALIFIED"]) LDFLAGS='-Wl,--enable-auto-image-base -Wl,--out-implib,libgnurx.dll.a' ! if test -n "${MSVCLIB}" ! then LDFLAGS="$LDFLAGS -Wl,--output-def,libgnurx.def" GNURX_LIB=gnurx.lib ! else MSVCLIB='${srcdir}/nomsvc lib'; fi AC_CONFIG_FILES([Makefile]) AC_OUTPUT --- 77,81 ---- AC_SUBST([CC_QUALIFIED], ["$CC $CC_QUALIFIED"]) LDFLAGS='-Wl,--enable-auto-image-base -Wl,--out-implib,libgnurx.dll.a' ! test -n "${GNURX_LIB}" && LDFLAGS="$LDFLAGS -Wl,--output-def,libgnurx.def" AC_CONFIG_FILES([Makefile]) AC_OUTPUT Index: aclocal.m4 =================================================================== RCS file: /cvsroot/mingw/regex/aclocal.m4,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** aclocal.m4 30 Apr 2007 22:46:36 -0000 1.1 --- aclocal.m4 3 May 2007 22:46:08 -0000 1.2 *************** *** 84,86 **** --- 84,123 ---- [test "x$enableval" = xno && install_dev=""])dnl ])# MINGW_AC_DEV_INSTALL_OPTION + + # MINGW_AC_MSVC_IMPORT_LIBS( VARNAME, TARGET ) + # -------------------------------------------- + # Check for the availability of the MSVC `lib' program. + # If it is found in $PATH, and the user has requested `--enable-msvc-implib', + # then set the AC_SUBST variable VARNAME to TARGET, otherwise set VARNAME to + # the null string. + # + # If the user has requested `--enable-msvc-implib', but MSVC `lib' cannot be + # found, then `configure' will print a warning; this will be suppressed, if + # `--enable-msvc-implib' has not been requested. + # + AC_DEFUN([MINGW_AC_MSVC_IMPORT_LIBS], + [AC_ARG_ENABLE([msvc-implib], + AS_HELP_STRING([--enable-msvc-implib], + [enable building of MSVC compatible import libraries]),[], + [enable_msvc_implib=no]) + AC_CHECK_TOOL([MSVCLIB], [lib]) + if test "x$enable_msvc_implib" = xyes && test -n "$MSVCLIB" + then $1="$2" + elif test "x$enable_msvc_implib" = xyes + then AC_MSG_WARN([no MSVC compatible `lib' program found in \$PATH + + The MSVC `lib' program is required to build MSVC compatible import libs. + Since this program does not appear to be installed on this computer, MSVC + compatible import libs will not be built; configuration will continue, but + only MinGW format import libs will be included in the resultant build. + + If you wish to build a development kit which does include import libs for + MSVC, in addition to those for MinGW, you should ensure that MSVC has been + installed on this computer, and that \$PATH includes the directory in which + its `lib' program is located, then run `configure' again. + ]) + fi + AC_SUBST([$1])dnl + ])# MINGW_AC_MSVC_IMPORT_LIBS + # $RCSfile$Revision$: end of file --- nomsvc DELETED --- |
|
From: Keith M. <kei...@us...> - 2007-05-02 18:02:26
|
Update of /cvsroot/mingw/regex
In directory sc8-pr-cvs16:/tmp/cvs-serv11950
Modified Files:
ChangeLog Makefile.in
Log Message:
Fix bugs reported by Julien Lecomte
Index: Makefile.in
===================================================================
RCS file: /cvsroot/mingw/regex/Makefile.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Makefile.in 30 Apr 2007 22:46:35 -0000 1.1
--- Makefile.in 2 May 2007 18:02:23 -0000 1.2
***************
*** 49,53 ****
BINDIST_FILES = libgnurx-$(DLLVERSION).dll
! DEVDIST_FILES = ${srcdir}/regex.h libgnurx.dll.a libregex.a @GNURX_LIB@
SRCDIST_FILES = ${srcdir}/configure ${srcdir}/configure.ac ${srcdir}/aclocal.m4 \
${srcdir}/pkgid.m4 ${srcdir}/Makefile.in ${srcdir}/README ${srcdir}/COPYING.LIB \
--- 49,53 ----
BINDIST_FILES = libgnurx-$(DLLVERSION).dll
! DEVDIST_FILES = libgnurx.dll.a libregex.a @GNURX_LIB@
SRCDIST_FILES = ${srcdir}/configure ${srcdir}/configure.ac ${srcdir}/aclocal.m4 \
${srcdir}/pkgid.m4 ${srcdir}/Makefile.in ${srcdir}/README ${srcdir}/COPYING.LIB \
***************
*** 65,69 ****
./config.status --recheck
! libgnurx-$(DLLVERSION).dll libgnurx.dll.a: $(OBJECTS) Makefile
$(CC) -shared -o libgnurx-$(DLLVERSION).dll $(LDFLAGS) $(OBJECTS)
--- 65,71 ----
./config.status --recheck
! $(OBJECTS): Makefile
!
! libgnurx-$(DLLVERSION).dll libgnurx.dll.a: $(OBJECTS)
$(CC) -shared -o libgnurx-$(DLLVERSION).dll $(LDFLAGS) $(OBJECTS)
Index: ChangeLog
===================================================================
RCS file: /cvsroot/mingw/regex/ChangeLog,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ChangeLog 30 Apr 2007 22:46:34 -0000 1.2
--- ChangeLog 2 May 2007 18:02:22 -0000 1.3
***************
*** 1,2 ****
--- 1,11 ----
+ 2007-05-02 Keith Marshall <kei...@us...>
+
+ Fix bugs reported by Julien Lecomte <ju...@fa...>
+
+ * Makefile.in (OBJECTS): Make them depend on `Makefile', to ensure
+ that they will be recompiled after any rerun of `configure'.
+ (DEVDIST_FILES): Don't duplicate `regex.h' in `lib'; it's already
+ explicitly copied to `include'.
+
2007-04-30 Keith Marshall <kei...@us...>
|