bug-grep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] build: allow compilation on cygwin


From: Eric Blake
Subject: [PATCH] build: allow compilation on cygwin
Date: Fri, 19 Mar 2010 10:51:00 -0600

Gnulib is incompatible with -Wunused-macros.  Addtionally,
cygwin 1.7.1 coupled with --enable-gcc-warnings tripped on:

grep.c: In function 'print_line_middle':
grep.c:805: error: array subscript has type 'char' [-Wchar-subscripts]
grep.c: In function 'main':
grep.c:1833: error: 'optarg' redeclared without dllimport attribute: previous 
dllimport ignored [-Wattributes]
grep.c:1834: error: 'optind' redeclared without dllimport attribute after being 
referenced with dll linkage

* configure.ac (GNULIB_WARN_FLAGS): Disable -Wunused-macros.
* src/grep.c (print_line_middle): Use correct type to tolower.
(main): Drop useless redeclarations.
* .gitignore: Ignore more built files.

Signed-off-by: Eric Blake <address@hidden>
---

I tested with CVS cygwin (the soon-to-be-released 1.7.2, which has
better locale support than 1.7.1).

My copyright assignment isn't in yet, but this should count as trivial.

The testsuite is still running, but only because this patch let build
run to completion.  I'm seeing test failures on at least
case-fold-char-range, and wonder whether it might have something to do
with the fact that on cygwin, sizeof(wchar_t)==2, so full Unicode
support requires surrogate handling.  Or cygwin itself could still
have some bugs with wide char handling.

 .gitignore   |    3 +++
 configure.ac |    2 +-
 src/grep.c   |    4 +---
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index 32f9208..435321a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,10 @@
+!/gnulib-tests/Makefile.am
 !/lib/Makefile.am
 !/lib/savedir.c
 !/lib/savedir.h
 !/m4/djgpp.m4
 *.a
+*.exe
 *.o
 *~
 .deps
@@ -19,6 +21,7 @@
 /config.status
 /configure
 /configure.ac
+/gnulib-tests/*
 /lib/*
 /lib/charset.alias
 /lib/configmake.h
diff --git a/configure.ac b/configure.ac
index 50fcf5c..85f1563 100644
--- a/configure.ac
+++ b/configure.ac
@@ -130,7 +130,7 @@ if test "$gl_gcc_warnings" = yes; then
   # Remove the following and save the result in GNULIB_WARN_CFLAGS.
   nw=
   #nw="$nw -Wuninitialized"
-  #nw="$nw -Wunused-macros"
+  nw="$nw -Wunused-macros"
   #nw="$nw -Wmissing-prototypes"
   nw="$nw -Wold-style-definition"
   gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
diff --git a/src/grep.c b/src/grep.c
index 8193bc5..f4cd875 100644
--- a/src/grep.c
+++ b/src/grep.c
@@ -802,7 +802,7 @@ print_line_middle (const char *beg, const char *lim,
       /* This can't possibly be correct with UTF-8,
         but it's equivalent to what was there so far.  */
       while (--i >= 0)
-       buf[i] = tolower(beg[i]);
+       buf[i] = tolower((unsigned char) beg[i]);
     }
   else
     {
@@ -1830,8 +1830,6 @@ main (int argc, char **argv)
   int opt, cc, status;
   int default_context;
   FILE *fp;
-  extern char *optarg;
-  extern int optind;

   initialize_main (&argc, &argv);
   set_program_name (argv[0]);
-- 
1.6.6.1





reply via email to

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