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:         [email protected] (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:         [email protected] (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;