Blob Blame History Raw
To: vim-dev@vim.org
Subject: Patch 7.2.173
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.173
Problem:    Without lint there is no check for unused function arguments.
Solution:   Use gcc -Wunused-parameter instead of lint.  For a few files add
	    attributes to arguments that are known not to be used.
Files:	    src/auto/configure, src/buffer.c, src/charset.c, src/diff.c,
	    src/configure.in, src/config.h.in, src/edit.c, src/ex_cmds.c,
	    src/ex_cmds2.c, src/version.c, src/vim.h


*** ../vim-7.2.172/src/auto/configure	2009-05-13 14:48:55.000000000 +0200
--- src/auto/configure	2009-05-14 22:08:12.000000000 +0200
***************
*** 10362,10367 ****
--- 10372,10427 ----
  
  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
  
+ { $as_echo "$as_me:$LINENO: checking whether __attribute__((unused)) is allowed" >&5
+ $as_echo_n "checking whether __attribute__((unused)) is allowed... " >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ #include <stdio.h>
+ int
+ main ()
+ {
+ int x __attribute__((unused));
+   ;
+   return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+ if { (ac_try="$ac_compile"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+ $as_echo "$ac_try_echo") >&5
+   (eval "$ac_compile") 2>conftest.er1
+   ac_status=$?
+   grep -v '^ *+' conftest.er1 >conftest.err
+   rm -f conftest.er1
+   cat conftest.err >&5
+   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && {
+ 	 test -z "$ac_c_werror_flag" ||
+ 	 test ! -s conftest.err
+        } && test -s conftest.$ac_objext; then
+   { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }; cat >>confdefs.h <<\_ACEOF
+ #define HAVE_ATTRIBUTE_UNUSED 1
+ _ACEOF
+ 
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ 	{ $as_echo "$as_me:$LINENO: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ 
  if test "${ac_cv_header_elf_h+set}" = set; then
    { $as_echo "$as_me:$LINENO: checking for elf.h" >&5
  $as_echo_n "checking for elf.h... " >&6; }
*** ../vim-7.2.172/src/buffer.c	2009-05-13 20:47:07.000000000 +0200
--- src/buffer.c	2009-05-14 21:34:06.000000000 +0200
***************
*** 512,523 ****
   * buf_freeall() - free all things allocated for a buffer that are related to
   * the file.
   */
- /*ARGSUSED*/
      void
  buf_freeall(buf, del_buf, wipe_buf)
      buf_T	*buf;
!     int		del_buf;	/* buffer is going to be deleted */
!     int		wipe_buf;	/* buffer is going to be wiped out */
  {
  #ifdef FEAT_AUTOCMD
      int		is_curbuf = (buf == curbuf);
--- 512,522 ----
   * buf_freeall() - free all things allocated for a buffer that are related to
   * the file.
   */
      void
  buf_freeall(buf, del_buf, wipe_buf)
      buf_T	*buf;
!     int		del_buf UNUSED;	    /* buffer is going to be deleted */
!     int		wipe_buf UNUSED;    /* buffer is going to be wiped out */
  {
  #ifdef FEAT_AUTOCMD
      int		is_curbuf = (buf == curbuf);
***************
*** 2437,2447 ****
   * another tab page.
   * Returns NULL when there isn't any info.
   */
- /*ARGSUSED*/
      static wininfo_T *
  find_wininfo(buf, skip_diff_buffer)
      buf_T	*buf;
!     int		skip_diff_buffer;
  {
      wininfo_T	*wip;
  
--- 2436,2445 ----
   * another tab page.
   * Returns NULL when there isn't any info.
   */
      static wininfo_T *
  find_wininfo(buf, skip_diff_buffer)
      buf_T	*buf;
!     int		skip_diff_buffer UNUSED;
  {
      wininfo_T	*wip;
  
***************
*** 4278,4287 ****
   * Make "ffname" a full file name, set "sfname" to "ffname" if not NULL.
   * "ffname" becomes a pointer to allocated memory (or NULL).
   */
- /*ARGSUSED*/
      void
  fname_expand(buf, ffname, sfname)
!     buf_T	*buf;
      char_u	**ffname;
      char_u	**sfname;
  {
--- 4276,4284 ----
   * Make "ffname" a full file name, set "sfname" to "ffname" if not NULL.
   * "ffname" becomes a pointer to allocated memory (or NULL).
   */
      void
  fname_expand(buf, ffname, sfname)
!     buf_T	*buf UNUSED;
      char_u	**ffname;
      char_u	**sfname;
  {
***************
*** 5577,5587 ****
   * this buffer.  Call this to wipe out a temp buffer that does not contain any
   * marks.
   */
- /*ARGSUSED*/
      void
  wipe_buffer(buf, aucmd)
      buf_T	*buf;
!     int		aucmd;	    /* When TRUE trigger autocommands. */
  {
      if (buf->b_fnum == top_file_num - 1)
  	--top_file_num;
--- 5574,5583 ----
   * this buffer.  Call this to wipe out a temp buffer that does not contain any
   * marks.
   */
      void
  wipe_buffer(buf, aucmd)
      buf_T	*buf;
!     int		aucmd UNUSED;	    /* When TRUE trigger autocommands. */
  {
      if (buf->b_fnum == top_file_num - 1)
  	--top_file_num;
*** ../vim-7.2.172/src/charset.c	2009-05-13 14:10:46.000000000 +0200
--- src/charset.c	2009-05-14 21:34:30.000000000 +0200
***************
*** 1026,1038 ****
   * string at start of line.  Warning: *headp is only set if it's a non-zero
   * value, init to 0 before calling.
   */
- /*ARGSUSED*/
      int
  win_lbr_chartabsize(wp, s, col, headp)
      win_T	*wp;
      char_u	*s;
      colnr_T	col;
!     int		*headp;
  {
  #ifdef FEAT_LINEBREAK
      int		c;
--- 1026,1037 ----
   * string at start of line.  Warning: *headp is only set if it's a non-zero
   * value, init to 0 before calling.
   */
      int
  win_lbr_chartabsize(wp, s, col, headp)
      win_T	*wp;
      char_u	*s;
      colnr_T	col;
!     int		*headp UNUSED;
  {
  #ifdef FEAT_LINEBREAK
      int		c;
*** ../vim-7.2.172/src/diff.c	2009-05-13 18:54:14.000000000 +0200
--- src/diff.c	2009-05-14 21:24:59.000000000 +0200
***************
*** 652,661 ****
   * The buffers are written to a file, also for unmodified buffers (the file
   * could have been produced by autocommands, e.g. the netrw plugin).
   */
- /*ARGSUSED*/
      void
  ex_diffupdate(eap)
!     exarg_T	*eap;	    /* can be NULL, it's not used */
  {
      buf_T	*buf;
      int		idx_orig;
--- 652,660 ----
   * The buffers are written to a file, also for unmodified buffers (the file
   * could have been produced by autocommands, e.g. the netrw plugin).
   */
      void
  ex_diffupdate(eap)
!     exarg_T	*eap UNUSED;	    /* can be NULL */
  {
      buf_T	*buf;
      int		idx_orig;
***************
*** 1094,1103 ****
  /*
   * Set options to show difs for the current window.
   */
- /*ARGSUSED*/
      void
  ex_diffthis(eap)
!     exarg_T	*eap;
  {
      /* Set 'diff', 'scrollbind' on and 'wrap' off. */
      diff_win_options(curwin, TRUE);
--- 1093,1101 ----
  /*
   * Set options to show difs for the current window.
   */
      void
  ex_diffthis(eap)
!     exarg_T	*eap UNUSED;
  {
      /* Set 'diff', 'scrollbind' on and 'wrap' off. */
      diff_win_options(curwin, TRUE);
*** ../vim-7.2.172/src/configure.in	2009-05-13 14:48:55.000000000 +0200
--- src/configure.in	2009-05-14 22:08:06.000000000 +0200
***************
*** 2067,2072 ****
--- 2067,2077 ----
  	AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
  	AC_MSG_RESULT(no))
  
+ AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
+ AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
+ 	AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
+ 	AC_MSG_RESULT(no))
+ 
  dnl Checks for header files.
  AC_CHECK_HEADER(elf.h, HAS_ELF=1)
  dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
*** ../vim-7.2.172/src/config.h.in	2009-03-02 02:44:54.000000000 +0100
--- src/config.h.in	2009-05-14 21:15:02.000000000 +0200
***************
*** 30,35 ****
--- 30,38 ----
  /* Define when __DATE__ " " __TIME__ can be used */
  #undef HAVE_DATE_TIME
  
+ /* Define when __attribute__((unused)) can be used */
+ #undef HAVE_ATTRIBUTE_UNUSED
+ 
  /* defined always when using configure */
  #undef UNIX
  
*** ../vim-7.2.172/src/edit.c	2009-05-13 18:54:14.000000000 +0200
--- src/edit.c	2009-05-14 21:35:08.000000000 +0200
***************
*** 1447,1456 ****
   * Only redraw when there are no characters available.  This speeds up
   * inserting sequences of characters (e.g., for CTRL-R).
   */
- /*ARGSUSED*/
      static void
  ins_redraw(ready)
!     int		ready;	    /* not busy with something */
  {
      if (!char_avail())
      {
--- 1447,1455 ----
   * Only redraw when there are no characters available.  This speeds up
   * inserting sequences of characters (e.g., for CTRL-R).
   */
      static void
  ins_redraw(ready)
!     int		ready UNUSED;	    /* not busy with something */
  {
      if (!char_avail())
      {
***************
*** 1962,1971 ****
   * Only matters when there are composing characters.
   * Return TRUE when something was deleted.
   */
- /*ARGSUSED*/
     static int
  del_char_after_col(limit_col)
!     int limit_col;
  {
  #ifdef FEAT_MBYTE
      if (enc_utf8 && limit_col >= 0)
--- 1961,1969 ----
   * Only matters when there are composing characters.
   * Return TRUE when something was deleted.
   */
     static int
  del_char_after_col(limit_col)
!     int limit_col UNUSED;
  {
  #ifdef FEAT_MBYTE
      if (enc_utf8 && limit_col >= 0)
*** ../vim-7.2.172/src/ex_cmds.c	2009-05-14 21:51:06.000000000 +0200
--- src/ex_cmds.c	2009-05-14 21:11:01.000000000 +0200
***************
*** 43,52 ****
  /*
   * ":ascii" and "ga".
   */
- /*ARGSUSED*/
      void
  do_ascii(eap)
!     exarg_T	*eap;
  {
      int		c;
      int		cval;
--- 43,51 ----
  /*
   * ":ascii" and "ga".
   */
      void
  do_ascii(eap)
!     exarg_T	*eap UNUSED;
  {
      int		c;
      int		cval;
***************
*** 2373,2382 ****
   *   ^?		^H
   * not ^?	^?
   */
- /*ARGSUSED*/
      void
  do_fixdel(eap)
!     exarg_T	*eap;
  {
      char_u  *p;
  
--- 2372,2380 ----
   *   ^?		^H
   * not ^?	^?
   */
      void
  do_fixdel(eap)
!     exarg_T	*eap UNUSED;
  {
      char_u  *p;
  
***************
*** 6127,6136 ****
  /*
   * ":exusage"
   */
- /*ARGSUSED*/
      void
  ex_exusage(eap)
!     exarg_T	*eap;
  {
      do_cmdline_cmd((char_u *)"help ex-cmd-index");
  }
--- 6125,6133 ----
  /*
   * ":exusage"
   */
      void
  ex_exusage(eap)
!     exarg_T	*eap UNUSED;
  {
      do_cmdline_cmd((char_u *)"help ex-cmd-index");
  }
***************
*** 6138,6147 ****
  /*
   * ":viusage"
   */
- /*ARGSUSED*/
      void
  ex_viusage(eap)
!     exarg_T	*eap;
  {
      do_cmdline_cmd((char_u *)"help normal-index");
  }
--- 6135,6143 ----
  /*
   * ":viusage"
   */
      void
  ex_viusage(eap)
!     exarg_T	*eap UNUSED;
  {
      do_cmdline_cmd((char_u *)"help normal-index");
  }
***************
*** 7154,7163 ****
   * Function given to ExpandGeneric() to obtain the sign command
   * expansion.
   */
- /*ARGSUSED*/
      char_u *
  get_sign_name(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      sign_T	*sp;
--- 7150,7158 ----
   * Function given to ExpandGeneric() to obtain the sign command
   * expansion.
   */
      char_u *
  get_sign_name(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      sign_T	*sp;
*** ../vim-7.2.172/src/ex_cmds2.c	2009-05-13 18:54:14.000000000 +0200
--- src/ex_cmds2.c	2009-05-14 21:35:40.000000000 +0200
***************
*** 680,689 ****
  /*
   * ":breaklist".
   */
- /*ARGSUSED*/
      void
  ex_breaklist(eap)
!     exarg_T	*eap;
  {
      struct debuggy *bp;
      int		i;
--- 680,688 ----
  /*
   * ":breaklist".
   */
      void
  ex_breaklist(eap)
!     exarg_T	*eap UNUSED;
  {
      struct debuggy *bp;
      int		i;
***************
*** 1342,1355 ****
  /*
   * return TRUE if buffer was changed and cannot be abandoned.
   */
- /*ARGSUSED*/
      int
  check_changed(buf, checkaw, mult_win, forceit, allbuf)
      buf_T	*buf;
      int		checkaw;	/* do autowrite if buffer was changed */
      int		mult_win;	/* check also when several wins for the buf */
      int		forceit;
!     int		allbuf;		/* may write all buffers */
  {
      if (       !forceit
  	    && bufIsChanged(buf)
--- 1341,1353 ----
  /*
   * return TRUE if buffer was changed and cannot be abandoned.
   */
      int
  check_changed(buf, checkaw, mult_win, forceit, allbuf)
      buf_T	*buf;
      int		checkaw;	/* do autowrite if buffer was changed */
      int		mult_win;	/* check also when several wins for the buf */
      int		forceit;
!     int		allbuf UNUSED;	/* may write all buffers */
  {
      if (       !forceit
  	    && bufIsChanged(buf)
***************
*** 1759,1770 ****
   *
   * Return FAIL for failure, OK otherwise.
   */
- /*ARGSUSED*/
      static int
  do_arglist(str, what, after)
      char_u	*str;
!     int		what;
!     int		after;		/* 0 means before first one */
  {
      garray_T	new_ga;
      int		exp_count;
--- 1757,1767 ----
   *
   * Return FAIL for failure, OK otherwise.
   */
      static int
  do_arglist(str, what, after)
      char_u	*str;
!     int		what UNUSED;
!     int		after UNUSED;		/* 0 means before first one */
  {
      garray_T	new_ga;
      int		exp_count;
***************
*** 2549,2559 ****
  
  static void source_callback __ARGS((char_u *fname, void *cookie));
  
- /*ARGSUSED*/
      static void
  source_callback(fname, cookie)
      char_u	*fname;
!     void	*cookie;
  {
      (void)do_source(fname, FALSE, DOSO_NONE);
  }
--- 2546,2555 ----
  
  static void source_callback __ARGS((char_u *fname, void *cookie));
  
      static void
  source_callback(fname, cookie)
      char_u	*fname;
!     void	*cookie UNUSED;
  {
      (void)do_source(fname, FALSE, DOSO_NONE);
  }
***************
*** 2680,2689 ****
  /*
   * ":options"
   */
- /*ARGSUSED*/
      void
  ex_options(eap)
!     exarg_T	*eap;
  {
      cmd_source((char_u *)SYS_OPTWIN_FILE, NULL);
  }
--- 2676,2684 ----
  /*
   * ":options"
   */
      void
  ex_options(eap)
!     exarg_T	*eap UNUSED;
  {
      cmd_source((char_u *)SYS_OPTWIN_FILE, NULL);
  }
***************
*** 3190,3199 ****
  /*
   * ":scriptnames"
   */
- /*ARGSUSED*/
      void
  ex_scriptnames(eap)
!     exarg_T	*eap;
  {
      int i;
  
--- 3185,3193 ----
  /*
   * ":scriptnames"
   */
      void
  ex_scriptnames(eap)
!     exarg_T	*eap UNUSED;
  {
      int i;
  
***************
*** 3317,3328 ****
   * Return a pointer to the line in allocated memory.
   * Return NULL for end-of-file or some error.
   */
- /* ARGSUSED */
      char_u *
  getsourceline(c, cookie, indent)
!     int		c;		/* not used */
      void	*cookie;
!     int		indent;		/* not used */
  {
      struct source_cookie *sp = (struct source_cookie *)cookie;
      char_u		*line;
--- 3311,3321 ----
   * Return a pointer to the line in allocated memory.
   * Return NULL for end-of-file or some error.
   */
      char_u *
  getsourceline(c, cookie, indent)
!     int		c UNUSED;
      void	*cookie;
!     int		indent UNUSED;
  {
      struct source_cookie *sp = (struct source_cookie *)cookie;
      char_u		*line;
***************
*** 3649,3658 ****
   * ":scriptencoding": Set encoding conversion for a sourced script.
   * Without the multi-byte feature it's simply ignored.
   */
- /*ARGSUSED*/
      void
  ex_scriptencoding(eap)
!     exarg_T	*eap;
  {
  #ifdef FEAT_MBYTE
      struct source_cookie	*sp;
--- 3642,3650 ----
   * ":scriptencoding": Set encoding conversion for a sourced script.
   * Without the multi-byte feature it's simply ignored.
   */
      void
  ex_scriptencoding(eap)
!     exarg_T	*eap UNUSED;
  {
  #ifdef FEAT_MBYTE
      struct source_cookie	*sp;
***************
*** 4101,4110 ****
   * Function given to ExpandGeneric() to obtain the possible arguments of the
   * ":language" command.
   */
- /*ARGSUSED*/
      char_u *
  get_lang_arg(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      if (idx == 0)
--- 4093,4101 ----
   * Function given to ExpandGeneric() to obtain the possible arguments of the
   * ":language" command.
   */
      char_u *
  get_lang_arg(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      if (idx == 0)
*** ../vim-7.2.172/src/version.c	2009-05-14 22:00:37.000000000 +0200
--- src/version.c	2009-05-14 22:14:51.000000000 +0200
***************
*** 1623,1632 ****
  /*
   * ":intro": clear screen, display intro screen and wait for return.
   */
- /*ARGSUSED*/
      void
  ex_intro(eap)
!     exarg_T	*eap;
  {
      screenclear();
      intro_message(TRUE);
--- 1625,1633 ----
  /*
   * ":intro": clear screen, display intro screen and wait for return.
   */
      void
  ex_intro(eap)
!     exarg_T	*eap UNUSED;
  {
      screenclear();
      intro_message(TRUE);
*** ../vim-7.2.172/src/vim.h	2009-05-13 18:54:14.000000000 +0200
--- src/vim.h	2009-05-14 21:17:51.000000000 +0200
***************
*** 262,267 ****
--- 262,275 ----
  # define __PARMS(x) __ARGS(x)
  #endif
  
+ /* Mark unused function arguments with UNUSED, so that gcc -Wunused-parameter
+  * can be used to check for mistakes. */
+ #ifdef HAVE_ATTRIBUTE_UNUSED
+ # define UNUSED __attribute__((unused))
+ #else
+ # define UNUSED
+ #endif
+ 
  /* if we're compiling in C++ (currently only KVim), the system
   * headers must have the correct prototypes or nothing will build.
   * conversely, our prototypes might clash due to throw() specifiers and
*** ../vim-7.2.172/src/version.c	2009-05-14 22:00:37.000000000 +0200
--- src/version.c	2009-05-14 22:14:51.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     173,
  /**/

-- 
SIGIRO -- irony detected (iron core dumped)

 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///