diff -c ctags/CHANGES ctags-2.0.1/CHANGES
*** ctags/CHANGES	Wed Feb 18 00:25:27 1998
--- ctags-2.0.1/CHANGES	Thu Feb 19 23:07:46 1998
***************
*** 1,8 ****
  Exuberant Ctags
  ===============
  
! 2.0 (98-Feb 18):
! ----------------
  Added support for C++.
  
  Added ability to include tags for each source file to allow jumping to a
--- 1,8 ----
  Exuberant Ctags
  ===============
  
! 2.0.1 (98-Feb-19):
! ------------------
  Added support for C++.
  
  Added ability to include tags for each source file to allow jumping to a
diff -c ctags/COPYING ctags-2.0.1/COPYING
*** ctags/COPYING	Wed Feb 18 08:55:06 1998
--- ctags-2.0.1/COPYING	Fri Feb 20 00:17:43 1998
***************
*** 11,16 ****
  GNU General Public License for more details.
  
  You can obtain a copy of the GNU General Public License from
! http://fly.hiwaay.net/~darren/ctags/gpl.html, or by writing to the
! Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
! MA  02111-1307  USA
--- 11,17 ----
  GNU General Public License for more details.
  
  You can obtain a copy of the GNU General Public License from
! the GNU web site at http://www.gnu.org/copyleft/gpl.html, or from the
! Exuberant Ctags web site at http://home.hiwaay.net/~darren/ctags/gpl.html,
! or by writing to the Free Software Foundation, Inc., 59 Temple Place,
! Suite 330, Boston, MA  02111-1307  USA
diff -c ctags/MANIFEST ctags-2.0.1/MANIFEST
*** ctags/MANIFEST	Mon Oct 13 23:45:03 1997
--- ctags-2.0.1/MANIFEST	Thu Feb 19 23:04:06 1998
***************
*** 1,9 ****
  All packages include these files:
  
- ANNOUNCE	A public announcement for Exuberant Ctags
  CHANGES		Package change history
  COPYING		Terms of distribution (GNU GPL)
! MANIFEST	This file, itself.
  INSTALL		Installation instructions
  INSTALL.DOS	Installation instructions for MSDOS, Windows, OS/2 and Amiga
  QUOTES		A collection of enthusiastic user feedback for Exuberant Ctags
--- 1,9 ----
  All packages include these files:
  
  CHANGES		Package change history
  COPYING		Terms of distribution (GNU GPL)
! FAQ		Frequently Asked Questions
! MANIFEST	This file, itself
  INSTALL		Installation instructions
  INSTALL.DOS	Installation instructions for MSDOS, Windows, OS/2 and Amiga
  QUOTES		A collection of enthusiastic user feedback for Exuberant Ctags
***************
*** 35,41 ****
  mkinstalldirs	A Bourne shell script for creating installation directories
  strstr.c	For old UNIX hosts which do not support this library function
  
! The packages distributed with pre-compiled executables (e.g. MS-DOS, MS-WIN,
  OS/2) also include these files:
  
  ctags.exe	The platform-dependant executable
--- 35,41 ----
  mkinstalldirs	A Bourne shell script for creating installation directories
  strstr.c	For old UNIX hosts which do not support this library function
  
! The packages distributed with pre-compiled executables (e.g. MS-DOS, Win95/NT,
  OS/2) also include these files:
  
  ctags.exe	The platform-dependant executable
diff -c ctags/ctags.h ctags-2.0.1/ctags.h
*** ctags/ctags.h	Tue Feb 17 23:40:41 1998
--- ctags-2.0.1/ctags.h	Thu Feb 19 23:09:12 1998
***************
*** 51,57 ****
  =   General defines
  ============================================================================*/
  #ifndef PROGRAM_VERSION
! # define PROGRAM_VERSION	"2.0"
  #endif
  #define PROGRAM_NAME	"Exuberant Ctags"
  #define PROGRAM_URL	"http://home.hiwaay.net/~darren/ctags"
--- 51,57 ----
  =   General defines
  ============================================================================*/
  #ifndef PROGRAM_VERSION
! # define PROGRAM_VERSION	"2.0.1"
  #endif
  #define PROGRAM_NAME	"Exuberant Ctags"
  #define PROGRAM_URL	"http://home.hiwaay.net/~darren/ctags"
diff -c ctags/ctags.lsm ctags-2.0.1/ctags.lsm
*** ctags/ctags.lsm	Wed Feb 18 00:36:46 1998
--- ctags-2.0.1/ctags.lsm	Thu Feb 19 23:06:06 1998
***************
*** 1,7 ****
  Begin3
  Title:          Exuberant Ctags
! Version:        2.0
! Entered-date:   18FEB98
  Description:    A better ctags which generates tags for all possible tag
  		types: macro definitions, enumerated values (values inside
  		enum{...}), function and method definitions, enum/struct/union
--- 1,7 ----
  Begin3
  Title:          Exuberant Ctags
! Version:        2.0.1
! Entered-date:   19FEB98
  Description:    A better ctags which generates tags for all possible tag
  		types: macro definitions, enumerated values (values inside
  		enum{...}), function and method definitions, enum/struct/union
***************
*** 14,24 ****
  Keywords:       ctags etags tags Exuberant C C++ tool utility source index
  Author:         darren@hiebert.com (Darren Hiebert)
  Primary-site:   sunsite.unc.edu /pub/Linux/devel/lang/c
! 		83kB ctags-2.0.tar.gz
  Alternate-site: ftp://ftp.hmi.com/pub/ctags
! 		83kB ctags-2.0.tar.gz
  Original-site:  http://home.hiwaay.net/~darren/ctags
! 		83kB archives/ctags-2.0.tar.gz
  Platforms:      UNIX, MSDOS, QNX, Windows 95/NT, OS/2, Amiga
  Copying-policy: GNU General Public License
  End
--- 14,24 ----
  Keywords:       ctags etags tags Exuberant C C++ tool utility source index
  Author:         darren@hiebert.com (Darren Hiebert)
  Primary-site:   sunsite.unc.edu /pub/Linux/devel/lang/c
! 		83kB ctags-2.0.1.tar.gz
  Alternate-site: ftp://ftp.hmi.com/pub/ctags
! 		83kB ctags-2.0.1.tar.gz
  Original-site:  http://home.hiwaay.net/~darren/ctags
! 		83kB archives/ctags-2.0.1.tar.gz
  Platforms:      UNIX, MSDOS, QNX, Windows 95/NT, OS/2, Amiga
  Copying-policy: GNU General Public License
  End
diff -c ctags/entry.c ctags-2.0.1/entry.c
*** ctags/entry.c	Sat Feb  7 00:34:03 1998
--- ctags-2.0.1/entry.c	Wed Feb 18 21:47:20 1998
***************
*** 57,62 ****
--- 57,63 ----
  static boolean includeTag __ARGS((const tagScope scope, const tagType type));
  static void makeTagEntry __ARGS((const tagInfo *const tag, const memberInfo *const pMember, const tagScope scope, const tagType type, const boolean useLineNumber));
  static void writePseudoTag __ARGS((const char *const tagName, const char *const fileName, const char *const pattern));
+ static void updateSortedFlag __ARGS((const char *const line, FILE *const fp, const boolean startOfLine));
  
  /*============================================================================
  =   Function definitions
***************
*** 472,477 ****
--- 473,500 ----
      }
  }
  
+ static void updateSortedFlag( line, fp, startOfLine )
+     const char *const line;
+     FILE *const fp;
+     const boolean startOfLine;
+ {
+     const char *const tab = strchr(line, '\t');
+ 
+     if (tab != NULL)
+     {
+ 	const size_t boolOffset = tab - line + 1;	/* where it should be */
+ 
+ 	if (line[boolOffset] == '0'  ||  line[boolOffset] == '1')
+ 	{
+ 	    const long nextLine = ftell(fp);
+ 
+ 	    fseek(fp, startOfLine + boolOffset, SEEK_SET);
+ 	    fputc(Option.sorted ? '1' : '0', fp);
+ 	    fseek(fp, nextLine, SEEK_SET);
+ 	}
+     }
+ }
+ 
  /*  Look through all line beginning with "!_TAG_FILE", and update those which
   *  require it.
   */
***************
*** 491,527 ****
      rewind(fp);
      line = readLine(&TagFile.line, fp);
      while (line != NULL  &&  line[0] == class[0])
  	if (strncmp(line, class, classLength) == 0)
  	{
  	    char tab, classType[16];
  
- 	    ++linesRead;
  	    if (sscanf(line + classLength, "%15s%c", classType, &tab) == 2  &&
  		tab == '\t')
  	    {
  		if (strcmp(classType, "_SORTED") == 0)
! 		{
! 		    const size_t boolOffset =
! 				    (const char *)strchr(line, '\t') - line + 1;
! 
! 		    if (line[boolOffset] == '0'  ||  line[boolOffset] == '1')
! 		    {
! 			const long nextLine = ftell(fp);
! 
! 			fseek(fp, startOfLine + boolOffset, SEEK_SET);
! 			fputc(Option.sorted ? '1' : '0', fp);
! 			fseek(fp, nextLine, SEEK_SET);
! 		    }
! 		}
! #if 0	/* not yet necessary */
! 		else if (strcmp(classType, "_FORMAT") == 0)
! 		{
! 		}
! #endif
  	    }
  	    startOfLine = ftell(fp);
- 	    line = readLine(&TagFile.line, fp);
  	}
      while (line != NULL)			/* skip to end of file */
      {
  	++linesRead;
--- 514,535 ----
      rewind(fp);
      line = readLine(&TagFile.line, fp);
      while (line != NULL  &&  line[0] == class[0])
+     {
+ 	++linesRead;
  	if (strncmp(line, class, classLength) == 0)
  	{
  	    char tab, classType[16];
  
  	    if (sscanf(line + classLength, "%15s%c", classType, &tab) == 2  &&
  		tab == '\t')
  	    {
  		if (strcmp(classType, "_SORTED") == 0)
! 		    updateSortedFlag(line, fp, startOfLine);
  	    }
  	    startOfLine = ftell(fp);
  	}
+ 	line = readLine(&TagFile.line, fp);
+     }
      while (line != NULL)			/* skip to end of file */
      {
  	++linesRead;
