*** cccp.c	1997/04/25 18:13:41	1.1
--- cccp.c	1997/05/26 15:11:14	1.4
***************
*** 3,8 ****
--- 3,12 ----
     Written by Paul Rubin, June 1986
     Adapted to ANSI C, Richard Stallman, Jan 1987
  
+    Modified by Andrew M. Bishop to provide better input to
+    C documentation program `cxref' 1995,1996.
+    All AMB hacks are indicated as such in the code (grep AMB).
+ 
  This program is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
  Free Software Foundation; either version 2, or (at your option) any
***************
*** 406,411 ****
--- 410,425 ----
  static enum {dump_none, dump_only, dump_names, dump_definitions}
       dump_macros = dump_none;
  
+ /* Start new option added by AMB */
+ 
+ /* Nonzero means that the #include lines are to be passed through to
+    output.
+ */
+ 
+ static int dump_includes = 0;
+ 
+ /* End new option added by AMB */
+ 
  /* Nonzero means pass all #define and #undef directives which we actually
     process through to the output stream.  This feature is used primarily
     to allow cc1 to record the #defines and #undefs for the sake of
***************
*** 964,970 ****
  /* Here is the actual list of #-directives, most-often-used first.  */
  
  static struct directive directive_table[] = {
!   {  6, do_define, "define", T_DEFINE, 0, 1},
    {  2, do_if, "if", T_IF},
    {  5, do_xifdef, "ifdef", T_IFDEF},
    {  6, do_xifdef, "ifndef", T_IFNDEF},
--- 978,984 ----
  /* Here is the actual list of #-directives, most-often-used first.  */
  
  static struct directive directive_table[] = {
!   {  6, do_define, "define", T_DEFINE, 0, 1, 1}, /* The last 1 is in future cccp.c added by AMB. */
    {  2, do_if, "if", T_IF},
    {  5, do_xifdef, "ifdef", T_IFDEF},
    {  6, do_xifdef, "ifndef", T_IFNDEF},
***************
*** 1355,1360 ****
--- 1369,1377 ----
    no_line_directives = 0;
    no_trigraphs = 1;
    dump_macros = dump_none;
+ /* Start new option added by AMB */
+   dump_includes = 0;
+ /* End new option added by AMB */
    no_output = 0;
    cplusplus = 0;
    cplusplus_comments = 1;
***************
*** 1666,1671 ****
--- 1683,1693 ----
  	    case 'D':
  	      dump_macros = dump_definitions;
  	      break;
+ /* Start new option added by AMB */
+ 	    case 'I':
+ 	      dump_includes = 1;
+ 	      break;
+ /* End new option added by AMB */
  	    }
  	  }
  	}
***************
*** 3841,3850 ****
  	    bp = ip->bufp;
  	    /* No need to copy the directive because of a comment at the end;
  	       just don't include the comment in the directive.  */
! 	    if (bp == limit || *bp == '\n') {
! 	      bp = obp;
! 	      goto endloop1;
  	    }
  	    /* Don't remove the comments if -traditional.  */
  	    if (! keep_comments)
  	      copy_directive++;
--- 3863,3879 ----
  	    bp = ip->bufp;
  	    /* No need to copy the directive because of a comment at the end;
  	       just don't include the comment in the directive.  */
! /* Start of code from future cccp.c added by AMB */
! 	    if (!put_out_comments) {
! 	      U_CHAR *p;
! 	      for (p = bp;  *p == ' ' || *p == '\t';  p++)
! 		continue;
! 	      if (*p == '\n') {
! 		bp = obp;
! 		goto endloop1;
! 	      }
  	    }
+ /* End of code from future cccp.c added by AMB */
  	    /* Don't remove the comments if -traditional.  */
  	    if (! keep_comments)
  	      copy_directive++;
***************
*** 3874,3880 ****
  
        /* If a directive should be copied through, and -E was given,
  	 pass it through before removing comments.  */
!       if (!no_output && kt->pass_thru && put_out_comments) {
          int len;
  
  	/* Output directive name.  */
--- 3903,3912 ----
  
        /* If a directive should be copied through, and -E was given,
  	 pass it through before removing comments.  */
!       if (!no_output && put_out_comments &&
! /* Start new option added by AMB */
!           (kt->pass_thru || (kt->type == T_INCLUDE && dump_includes))) {
! /* End new option added by AMB */
          int len;
  
  	/* Output directive name.  */
***************
*** 4002,4007 ****
--- 4034,4043 ----
  
        if (!no_output && already_output == 0
  	  && (kt->pass_thru
+ /* Start new option added by AMB */
+ 	      || (kt->type == T_INCLUDE
+ 		  && dump_includes)
+ /* End new option added by AMB */
  	      || (kt->type == T_DEFINE
  		  && (dump_macros == dump_names
  		      || dump_macros == dump_definitions)))) {
***************
*** 4013,4019 ****
          bcopy (kt->name, (char *) op->bufp, kt->length);
          op->bufp += kt->length;
  
! 	if (kt->pass_thru || dump_macros == dump_definitions) {
  	  /* Output arguments.  */
  	  len = (cp - buf);
  	  check_expand (op, len);
--- 4049,4059 ----
          bcopy (kt->name, (char *) op->bufp, kt->length);
          op->bufp += kt->length;
  
! 	if (kt->pass_thru || dump_macros == dump_definitions
! /* Start new option added by AMB */
!           || dump_includes
! /* End new option added by AMB */
!             ) {
  	  /* Output arguments.  */
  	  len = (cp - buf);
  	  check_expand (op, len);
