*** gnulib/lib/error.h	2012-12-24 20:10:43.000000000 +0900
--- srclib/error.h	2012-12-24 20:08:16.000000000 +0900
***************
*** 31,36 ****
--- 31,45 ----
  # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
  #endif
  
+ #if GNULIB_REPLACE_ERROR
+ # undef error_print_progname
+ # undef error_message_count
+ # undef error_one_per_line
+ # define error_print_progname rpl_error_print_progname
+ # define error_message_count rpl_error_message_count
+ # define error_one_per_line rpl_error_one_per_line
+ #endif
+ 
  #ifdef __cplusplus
  extern "C" {
  #endif
***************
*** 49,62 ****
  /* If NULL, error will flush stdout, then print on stderr the program
     name, a colon and a space.  Otherwise, error will call this
     function without parameters instead.  */
! extern void (*error_print_progname) (void);
  
  /* This variable is incremented each time 'error' is called.  */
! extern unsigned int error_message_count;
  
  /* Sometimes we want to have at most one error per line.  This
     variable controls whether this mode is selected or not.  */
! extern int error_one_per_line;
  
  #ifdef	__cplusplus
  }
--- 58,71 ----
  /* If NULL, error will flush stdout, then print on stderr the program
     name, a colon and a space.  Otherwise, error will call this
     function without parameters instead.  */
! extern DLL_VARIABLE void (*error_print_progname) (void);
  
  /* This variable is incremented each time 'error' is called.  */
! extern DLL_VARIABLE unsigned int error_message_count;
  
  /* Sometimes we want to have at most one error per line.  This
     variable controls whether this mode is selected or not.  */
! extern DLL_VARIABLE int error_one_per_line;
  
  #ifdef	__cplusplus
  }
