diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index fb3f2bc..ab96034 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,19 @@ ctags-5.5.4.tar.gz ctags-5.6.tar.gz ctags-5.7.tar.gz ctags-5.8.tar.gz +/ctags-p5.9.20210307.0.tar.gz +/ctags-p5.9.20210509.0.tar.gz +/ctags-p5.9.20210725.0.tar.gz +/ctags-p5.9.20220206.0.tar.gz +/ctags-p5.9.20220313.0.tar.gz +/ctags-p5.9.20220424.0.tar.gz +/ctags-p5.9.20220508.0.tar.gz +/ctags-p5.9.20220619.0.tar.gz +/ctags-p5.9.20220724.0.tar.gz +/ctags-p5.9.20220911.0.tar.gz +/ctags-p5.9.20221016.0.tar.gz +/ctags-p5.9.20221120.0.tar.gz +/universal-ctags-6.0.0.tar.gz +/universal-ctags-6.1.0.tar.gz +/universal-ctags-6.2.0.tar.gz +/universal-ctags-6.2.1.tar.gz diff --git a/ctags-5.7-destdir.patch b/ctags-5.7-destdir.patch deleted file mode 100644 index 0aeafab..0000000 --- a/ctags-5.7-destdir.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -up ctags-5.7/Makefile.in.destdir ctags-5.7/Makefile.in ---- ctags-5.7/Makefile.in.destdir 2006-10-12 05:26:40.000000000 +0200 -+++ ctags-5.7/Makefile.in 2008-02-15 17:10:23.000000000 +0100 -@@ -59,7 +59,7 @@ include $(srcdir)/source.mak - - VPATH = $(srcdir) - --INSTALL = cp -+INSTALL = cp -p - INSTALL_PROG = $(INSTALL) - INSTALL_DATA = $(INSTALL) - -@@ -138,7 +141,8 @@ install-ebin: $(DEST_ETAGS) - install-lib: $(DEST_READ_LIB) $(DEST_READ_INC) - - $(DEST_CTAGS): $(CTAGS_EXEC) $(bindir) FORCE -- $(INSTALL_PROG) $(CTAGS_EXEC) $@ && chmod 755 $@ -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir) -+ $(INSTALL_PROG) $(CTAGS_EXEC) $(DESTDIR)$@ && chmod 755 $(DESTDIR)$@ - - $(DEST_ETAGS): - - if [ -x $(DEST_CTAGS) ]; then \ -@@ -153,7 +157,8 @@ install-cman: $(DEST_CMAN) - install-eman: $(DEST_EMAN) - - $(DEST_CMAN): $(man1dir) $(MANPAGE) FORCE -- - $(INSTALL_DATA) $(srcdir)/$(MANPAGE) $@ && chmod 644 $@ -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(man1dir) -+ - $(INSTALL_DATA) $(srcdir)/$(MANPAGE) $(DESTDIR)$@ && chmod 644 $(DESTDIR)$@ - - $(DEST_EMAN): - - if [ -f $(DEST_CMAN) ]; then \ -@@ -164,9 +169,11 @@ $(DEST_EMAN): - # install the library - # - $(DEST_READ_LIB): $(READ_LIB) $(libdir) FORCE -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(libdir) - $(INSTALL_PROG) $(READ_LIB) $@ && chmod 644 $@ - - $(DEST_READ_INC): $(READ_INC) $(incdir) FORCE -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(incdir) - $(INSTALL_PROG) $(READ_INC) $@ && chmod 644 $@ - - diff --git a/ctags-5.7-segment-fault.patch b/ctags-5.7-segment-fault.patch deleted file mode 100644 index 60e8809..0000000 --- a/ctags-5.7-segment-fault.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -ruN -x '*~' ctags-5.7/vim.c ctags-5.7/vim.c ---- ctags-5.7/vim.c 2006-10-26 12:06:21.000000000 +0900 -+++ ctags-5.7/vim.c 2009-08-28 22:21:31.000000000 +0900 -@@ -328,7 +328,7 @@ - */ - const unsigned char *cp = line; - -- if ( (int) *cp == '\\' ) -+ if ( cp && ( (int) *cp == '\\' ) ) - { - /* - * We are recursively calling this function is the command -@@ -350,9 +350,10 @@ - while (*cp && isspace ((int) *cp)) - ++cp; - } -- else if ( (!strncmp ((const char*) line, "comp", (size_t) 4) == 0) && -- (!strncmp ((const char*) line, "comc", (size_t) 4) == 0) && -- (strncmp ((const char*) line, "com", (size_t) 3) == 0) ) -+ else if ( line && -+ (!strncmp ((const char*) line, "comp", (size_t) 4) == 0) && -+ (!strncmp ((const char*) line, "comc", (size_t) 4) == 0) && -+ (strncmp ((const char*) line, "com", (size_t) 3) == 0) ) - { - cp += 2; - if ((int) *++cp == 'm' && (int) *++cp == 'a' && -@@ -394,6 +395,14 @@ - while (*cp && !isspace ((int) *cp)) - ++cp; - } -+ else if (!isalnum ((int) *cp)) -+ { -+ /* -+ * Broken syntax: throw away this line -+ */ -+ cmdProcessed = TRUE; -+ goto cleanUp; -+ } - } while ( *cp && !isalnum ((int) *cp) ); - - if ( ! *cp ) diff --git a/ctags-5.8-css.patch b/ctags-5.8-css.patch deleted file mode 100644 index 2744d33..0000000 --- a/ctags-5.8-css.patch +++ /dev/null @@ -1,260 +0,0 @@ -diff -up ctags-5.8/css.c.me ctags-5.8/css.c ---- ctags-5.8/css.c.me 2012-02-08 13:59:35.000000000 +0100 -+++ ctags-5.8/css.c 2012-02-08 13:55:16.000000000 +0100 -@@ -0,0 +1,226 @@ -+/*************************************************************************** -+ * css.c -+ * Character-based parser for Css definitions -+ * Author - Iago Rubio -+ **************************************************************************/ -+#include "general.h" -+ -+#include -+#include -+ -+#include "parse.h" -+#include "read.h" -+ -+ -+typedef enum eCssKinds { -+ K_NONE = -1, K_CLASS, K_SELECTOR, K_ID -+} cssKind; -+ -+static kindOption CssKinds [] = { -+ { TRUE, 'c', "class", "classes" }, -+ { TRUE, 's', "selector", "selectors" }, -+ { TRUE, 'i', "id", "identities" } -+}; -+ -+typedef enum _CssParserState { // state of parsing -+ P_STATE_NONE, // default state -+ P_STATE_IN_COMMENT, // into a comment, only multi line in CSS -+ P_STATE_IN_SINGLE_STRING, // into a single quoted string -+ P_STATE_IN_DOUBLE_STRING, // into a double quoted string -+ P_STATE_IN_DEFINITION, // on the body of the style definition, nothing for us -+ P_STATE_IN_MEDIA, // on a @media declaration, can be multi-line -+ P_STATE_IN_IMPORT, // on a @import declaration, can be multi-line -+ P_STATE_IN_NAMESPACE, // on a @namespace declaration -+ P_STATE_IN_PAGE, // on a @page declaration -+ P_STATE_IN_FONTFACE, // on a @font-face declaration -+ P_STATE_AT_END // end of parsing -+} CssParserState; -+ -+static void makeCssSimpleTag( vString *name, cssKind kind, boolean delete ) -+{ -+ vStringTerminate (name); -+ makeSimpleTag (name, CssKinds, kind); -+ vStringClear (name); -+ if( delete ) -+ vStringDelete (name); -+} -+ -+static boolean isCssDeclarationAllowedChar( const unsigned char *cp ) -+{ -+ return isalnum ((int) *cp) || -+ isspace ((int) *cp) || -+ *cp == '_' || // allowed char -+ *cp == '-' || // allowed char -+ *cp == '+' || // allow all sibling in a single tag -+ *cp == '>' || // allow all child in a single tag -+ *cp == '{' || // allow the start of the declaration -+ *cp == '.' || // allow classes and selectors -+ *cp == ',' || // allow multiple declarations -+ *cp == ':' || // allow pseudo classes -+ *cp == '*' || // allow globs as P + * -+ *cp == '#'; // allow ids -+} -+ -+static CssParserState parseCssDeclaration( const unsigned char **position, cssKind kind ) -+{ -+ vString *name = vStringNew (); -+ const unsigned char *cp = *position; -+ -+ // pick to the end of line including children and sibling -+ // if declaration is multiline go for the next line -+ while ( isCssDeclarationAllowedChar(cp) || -+ *cp == '\0' ) // track the end of line into the loop -+ { -+ if( (int) *cp == '\0' ) -+ { -+ cp = fileReadLine (); -+ if( cp == NULL ){ -+ makeCssSimpleTag(name, kind, TRUE); -+ *position = cp; -+ return P_STATE_AT_END; -+ } -+ } -+ else if( *cp == ',' ) -+ { -+ makeCssSimpleTag(name, kind, TRUE); -+ *position = ++cp; -+ return P_STATE_NONE; -+ } -+ else if( *cp == '{' ) -+ { -+ makeCssSimpleTag(name, kind, TRUE); -+ *position = ++cp; -+ return P_STATE_IN_DEFINITION; -+ } -+ -+ vStringPut (name, (int) *cp); -+ ++cp; -+ } -+ -+ makeCssSimpleTag(name, kind, TRUE); -+ *position = cp; -+ -+ return P_STATE_NONE; -+} -+ -+static CssParserState parseCssLine( const unsigned char *line, CssParserState state ) -+{ -+ vString *aux; -+ -+ while( *line != '\0' ) // fileReadLine returns NULL terminated strings -+ { -+ while (isspace ((int) *line)) -+ ++line; -+ switch( state ) -+ { -+ case P_STATE_NONE: -+ // pick first char if alphanumeric is a selector -+ if( isalnum ((int) *line) ) -+ state = parseCssDeclaration( &line, K_SELECTOR ); -+ else if( *line == '.' ) // a class -+ state = parseCssDeclaration( &line, K_CLASS ); -+ else if( *line == '#' ) // an id -+ state = parseCssDeclaration( &line, K_ID ); -+ else if( *line == '@' ) // at-rules, we'll ignore them -+ { -+ ++line; -+ aux = vStringNew(); -+ while( !isspace((int) *line) ) -+ { -+ vStringPut (aux, (int) *line); -+ ++line; -+ } -+ vStringTerminate (aux); -+ if( strcmp( aux->buffer, "media" ) == 0 ) -+ state = P_STATE_IN_MEDIA; -+ else if ( strcmp( aux->buffer, "import" ) == 0 ) -+ state = P_STATE_IN_IMPORT; -+ else if ( strcmp( aux->buffer, "namespace" ) == 0 ) -+ state = P_STATE_IN_NAMESPACE; -+ else if ( strcmp( aux->buffer, "page" ) == 0 ) -+ state = P_STATE_IN_PAGE; -+ else if ( strcmp( aux->buffer, "font-face" ) == 0 ) -+ state = P_STATE_IN_FONTFACE; -+ vStringDelete (aux); -+ } -+ else if( *line == '*' && *(line-1) == '/' ) // multi-line comment -+ state = P_STATE_IN_COMMENT; -+ break; -+ case P_STATE_IN_COMMENT: -+ if( *line == '/' && *(line-1) == '*') -+ state = P_STATE_NONE; -+ break; -+ case P_STATE_IN_SINGLE_STRING: -+ if( *line == '\'' && *(line-1) != '\\' ) -+ state = P_STATE_IN_DEFINITION; // PAGE, FONTFACE and DEFINITION are treated the same way -+ break; -+ case P_STATE_IN_DOUBLE_STRING: -+ if( *line=='"' && *(line-1) != '\\' ) -+ state = P_STATE_IN_DEFINITION; // PAGE, FONTFACE and DEFINITION are treated the same way -+ break; -+ case P_STATE_IN_MEDIA: -+ // skip to start of media body or line end -+ while( *line != '{' ) -+ { -+ if( *line == '\0' ) -+ break; -+ ++line; -+ } -+ if( *line == '{' ) -+ state = P_STATE_NONE; -+ break; -+ case P_STATE_IN_IMPORT: -+ case P_STATE_IN_NAMESPACE: -+ // skip to end of declaration or line end -+ while( *line != ';' ) -+ { -+ if( *line == '\0' ) -+ break; -+ ++line; -+ } -+ if( *line == ';' ) -+ state = P_STATE_NONE; -+ break; -+ case P_STATE_IN_PAGE: -+ case P_STATE_IN_FONTFACE: -+ case P_STATE_IN_DEFINITION: -+ if( *line == '}' ) -+ state = P_STATE_NONE; -+ else if( *line == '\'' ) -+ state = P_STATE_IN_SINGLE_STRING; -+ else if( *line == '"' ) -+ state = P_STATE_IN_DOUBLE_STRING; -+ break; -+ case P_STATE_AT_END: -+ return state; -+ break; -+ } -+ line++; -+ } -+ return state; -+} -+ -+static void findCssTags (void) -+{ -+ const unsigned char *line; -+ CssParserState state = P_STATE_NONE; -+ -+ while ( (line = fileReadLine ()) != NULL ) -+ { -+ state = parseCssLine( line, state ); -+ if( state==P_STATE_AT_END ) return; -+ } -+} -+ -+/* parser definition */ -+extern parserDefinition* CssParser (void) -+{ -+ static const char *const extensions [] = { "css", NULL }; -+ parserDefinition* def = parserNew ("CSS"); -+ def->kinds = CssKinds; -+ def->kindCount = KIND_COUNT (CssKinds); -+ def->extensions = extensions; -+ def->parser = findCssTags; -+ return def; -+} -+ -diff -up ctags-5.8/parsers.h.me ctags-5.8/parsers.h ---- ctags-5.8/parsers.h.me 2012-02-08 13:56:46.000000000 +0100 -+++ ctags-5.8/parsers.h 2012-02-08 13:57:25.000000000 +0100 -@@ -26,6 +26,7 @@ - CppParser, \ - CsharpParser, \ - CobolParser, \ -+ CssParser, \ - DosBatchParser, \ - EiffelParser, \ - ErlangParser, \ -diff -up ctags-5.8/source.mak.me ctags-5.8/source.mak ---- ctags-5.8/source.mak.me 2012-02-08 13:58:02.000000000 +0100 -+++ ctags-5.8/source.mak 2012-02-08 13:58:42.000000000 +0100 -@@ -17,6 +17,7 @@ SOURCES = \ - beta.c \ - c.c \ - cobol.c \ -+ css.c \ - dosbatch.c \ - eiffel.c \ - entry.c \ -@@ -79,6 +80,7 @@ OBJECTS = \ - beta.$(OBJEXT) \ - c.$(OBJEXT) \ - cobol.$(OBJEXT) \ -+ css.$(OBJEXT) \ - dosbatch.$(OBJEXT) \ - eiffel.$(OBJEXT) \ - entry.$(OBJEXT) \ diff --git a/ctags-5.8-cssparse.patch b/ctags-5.8-cssparse.patch deleted file mode 100644 index f70c374..0000000 --- a/ctags-5.8-cssparse.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -up ctags-5.8/css.c.me ctags-5.8/css.c ---- ctags-5.8/css.c.me 2012-10-18 22:03:20.126163700 +0200 -+++ ctags-5.8/css.c 2012-10-18 22:04:03.237107358 +0200 -@@ -73,10 +73,11 @@ static CssParserState parseCssDeclaratio - { - if( (int) *cp == '\0' ) - { -+ /* assign position to the end of line. */ -+ *position = cp; - cp = fileReadLine (); - if( cp == NULL ){ - makeCssSimpleTag(name, kind, TRUE); -- *position = cp; - return P_STATE_AT_END; - } - } diff --git a/ctags-5.8-format-security.patch b/ctags-5.8-format-security.patch deleted file mode 100644 index ccd3986..0000000 --- a/ctags-5.8-format-security.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur ctags-5.8.orig/lregex.c ctags-5.8/lregex.c ---- ctags-5.8.orig/lregex.c 2007-09-10 04:36:48.000000000 +0200 -+++ ctags-5.8/lregex.c 2014-04-14 21:09:17.716000000 +0200 -@@ -408,7 +408,7 @@ - const char* regexfile = parameter + 1; - FILE* const fp = fopen (regexfile, "r"); - if (fp == NULL) -- error (WARNING | PERROR, regexfile); -+ error (WARNING | PERROR, "%s", regexfile); - else - { - vString* const regex = vStringNew (); diff --git a/ctags-5.8-memmove.patch b/ctags-5.8-memmove.patch deleted file mode 100644 index 5608f04..0000000 --- a/ctags-5.8-memmove.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -r -u ctags-5.8.orig/routines.c ctags-5.8/routines.c ---- ctags-5.8.orig/routines.c 2013-06-13 10:42:08.048576327 -0400 -+++ ctags-5.8/routines.c 2013-06-13 10:48:25.150366836 -0400 -@@ -757,13 +757,13 @@ - else if (cp [0] != PATH_SEPARATOR) - cp = slashp; - #endif -- strcpy (cp, slashp + 3); -+ memmove (cp, slashp + 3, strlen(slashp + 3) + 1); - slashp = cp; - continue; - } - else if (slashp [2] == PATH_SEPARATOR || slashp [2] == '\0') - { -- strcpy (slashp, slashp + 2); -+ memmove (slashp, slashp + 2, strlen(slashp + 2) + 1); - continue; - } - } diff --git a/ctags-5.8-ocaml-crash.patch b/ctags-5.8-ocaml-crash.patch deleted file mode 100644 index 8263cca..0000000 --- a/ctags-5.8-ocaml-crash.patch +++ /dev/null @@ -1,251 +0,0 @@ -diff -up ctags-5.8/ocaml.c.me ctags-5.8/ocaml.c ---- ctags-5.8/ocaml.c.me 2012-08-02 12:42:21.652211192 +0200 -+++ ctags-5.8/ocaml.c 2012-08-02 13:06:59.751283639 +0200 -@@ -72,6 +72,7 @@ typedef enum { - OcaKEYWORD_if, - OcaKEYWORD_in, - OcaKEYWORD_let, -+ OcaKEYWORD_value, - OcaKEYWORD_match, - OcaKEYWORD_method, - OcaKEYWORD_module, -@@ -145,7 +146,7 @@ static const ocaKeywordDesc OcamlKeyword - { "try" , OcaKEYWORD_try }, - { "type" , OcaKEYWORD_type }, - { "val" , OcaKEYWORD_val }, -- { "value" , OcaKEYWORD_let }, /* just to handle revised syntax */ -+ { "value" , OcaKEYWORD_value }, /* just to handle revised syntax */ - { "virtual" , OcaKEYWORD_virtual }, - { "while" , OcaKEYWORD_while }, - { "with" , OcaKEYWORD_with }, -@@ -297,7 +298,6 @@ static void eatComment (lexingState * st - if (st->cp == NULL) - return; - c = st->cp; -- continue; - } - /* we've reached the end of the comment */ - else if (*c == ')' && lastIsStar) -@@ -308,13 +308,33 @@ static void eatComment (lexingState * st - { - st->cp = c; - eatComment (st); -+ - c = st->cp; -+ if (c == NULL) -+ return; -+ - lastIsStar = FALSE; -+ c++; - } -+ /* OCaml has a rule which says : -+ * -+ * "Comments do not occur inside string or character literals. -+ * Nested comments are handled correctly." -+ * -+ * So if we encounter a string beginning, we must parse it to -+ * get a good comment nesting (bug ID: 3117537) -+ */ -+ else if (*c == '"') -+ { -+ st->cp = c; -+ eatString (st); -+ c = st->cp; -+ } - else -+ { - lastIsStar = '*' == *c; -- -- c++; -+ c++; -+ } - } - - st->cp = c; -@@ -554,8 +574,7 @@ static int getLastNamedIndex ( void ) - - for (i = stackIndex - 1; i >= 0; --i) - { -- if (stack[i].contextName->buffer && -- strlen (stack[i].contextName->buffer) > 0) -+ if (vStringLength (stack[i].contextName) > 0) - { - return i; - } -@@ -866,6 +885,11 @@ static void prepareTag (tagEntryInfo * t - tag->kindName = OcamlKinds[kind].name; - tag->kind = OcamlKinds[kind].letter; - -+ if (kind == K_MODULE) -+ { -+ tag->lineNumberEntry = TRUE; -+ tag->lineNumber = 1; -+ } - parentIndex = getLastNamedIndex (); - if (parentIndex >= 0) - { -@@ -880,9 +904,12 @@ static void prepareTag (tagEntryInfo * t - * more information to it in the future */ - static void addTag (vString * const ident, int kind) - { -- tagEntryInfo toCreate; -- prepareTag (&toCreate, ident, kind); -- makeTagEntry (&toCreate); -+ if (OcamlKinds [kind].enabled && ident != NULL && vStringLength (ident) > 0) -+ { -+ tagEntryInfo toCreate; -+ prepareTag (&toCreate, ident, kind); -+ makeTagEntry (&toCreate); -+ } - } - - boolean needStrongPoping = FALSE; -@@ -942,15 +969,17 @@ static void typeRecord (vString * const - } - - /* handle : -- * exception ExceptionName ... */ -+ * exception ExceptionName of ... */ - static void exceptionDecl (vString * const ident, ocaToken what) - { - if (what == OcaIDENTIFIER) - { - addTag (ident, K_EXCEPTION); - } -- /* don't know what to do on else... */ -- -+ else /* probably ill-formed, give back to global scope */ -+ { -+ globalScope (ident, what); -+ } - toDoNext = &globalScope; - } - -@@ -1006,7 +1035,6 @@ static void constructorValidation (vStri - */ - static void typeDecl (vString * const ident, ocaToken what) - { -- - switch (what) - { - /* parameterized */ -@@ -1046,7 +1074,6 @@ static void typeDecl (vString * const id - * let typeRecord handle it. */ - static void typeSpecification (vString * const ident, ocaToken what) - { -- - switch (what) - { - case OcaIDENTIFIER: -@@ -1243,8 +1270,14 @@ static void localLet (vString * const id - * than the let definitions. - * Used after a match ... with, or a function ... or fun ... - * because their syntax is similar. */ --static void matchPattern (vString * const UNUSED (ident), ocaToken what) -+static void matchPattern (vString * const ident, ocaToken what) - { -+ /* keep track of [], as it -+ * can be used in patterns and can -+ * mean the end of match expression in -+ * revised syntax */ -+ static int braceCount = 0; -+ - switch (what) - { - case Tok_To: -@@ -1252,6 +1285,14 @@ static void matchPattern (vString * cons - toDoNext = &mayRedeclare; - break; - -+ case Tok_BRL: -+ braceCount++; -+ break; -+ -+ case OcaKEYWORD_value: -+ popLastNamed (); -+ globalScope (ident, what); -+ break; - - case OcaKEYWORD_in: - popLastNamed (); -@@ -1269,6 +1310,11 @@ static void mayRedeclare (vString * cons - { - switch (what) - { -+ case OcaKEYWORD_value: -+ /* let globalScope handle it */ -+ globalScope (ident, what); -+ break; -+ - case OcaKEYWORD_let: - case OcaKEYWORD_val: - toDoNext = localLet; -@@ -1388,6 +1434,7 @@ static void classSpecif (vString * const - * nearly a copy/paste of globalLet. */ - static void methodDecl (vString * const ident, ocaToken what) - { -+ - switch (what) - { - case Tok_PARL: -@@ -1435,6 +1482,7 @@ vString *lastModule; - */ - static void moduleSpecif (vString * const ident, ocaToken what) - { -+ - switch (what) - { - case OcaKEYWORD_functor: -@@ -1566,7 +1614,7 @@ static void globalScope (vString * const - { - /* Do not touch, this is used only by the global scope - * to handle an 'and' */ -- static parseNext previousParser = NULL; -+ static parseNext previousParser = &globalScope; - - switch (what) - { -@@ -1608,6 +1656,7 @@ static void globalScope (vString * const - /* val is mixed with let as global - * to be able to handle mli & new syntax */ - case OcaKEYWORD_val: -+ case OcaKEYWORD_value: - case OcaKEYWORD_let: - cleanupPreviousParser (); - toDoNext = &globalLet; -@@ -1617,7 +1666,7 @@ static void globalScope (vString * const - case OcaKEYWORD_exception: - cleanupPreviousParser (); - toDoNext = &exceptionDecl; -- previousParser = NULL; -+ previousParser = &globalScope; - break; - - /* must be a #line directive, discard the -@@ -1769,7 +1818,7 @@ static void computeModuleName ( void ) - if (isLowerAlpha (moduleName->buffer[0])) - moduleName->buffer[0] += ('A' - 'a'); - -- makeSimpleTag (moduleName, OcamlKinds, K_MODULE); -+ addTag (moduleName, K_MODULE); - vStringDelete (moduleName); - } - -@@ -1779,6 +1828,7 @@ static void initStack ( void ) - int i; - for (i = 0; i < OCAML_MAX_STACK_SIZE; ++i) - stack[i].contextName = vStringNew (); -+ stackIndex = 0; - } - - static void clearStack ( void ) -@@ -1794,8 +1844,8 @@ static void findOcamlTags (void) - lexingState st; - ocaToken tok; - -- computeModuleName (); - initStack (); -+ computeModuleName (); - tempIdent = vStringNew (); - lastModule = vStringNew (); - lastClass = vStringNew (); diff --git a/ctags-CVE-2014-7204.patch b/ctags-CVE-2014-7204.patch deleted file mode 100644 index 81c5e6e..0000000 --- a/ctags-CVE-2014-7204.patch +++ /dev/null @@ -1,89 +0,0 @@ ---- ctags/jscript.c.orig 2008-10-13 00:27:38.000000000 +0200 -+++ ctags/jscript.c 2014-09-30 13:49:34.837349283 +0200 -@@ -1,5 +1,5 @@ - /* -- * $Id: jscript.c 666 2008-05-15 17:47:31Z dfishburn $ -+ * $Id: jscript.c 791 2012-10-24 01:13:13Z dfishburn $ - * - * Copyright (c) 2003, Darren Hiebert - * -@@ -215,6 +215,7 @@ - * Tag generation functions - */ - -+/* - static void makeConstTag (tokenInfo *const token, const jsKind kind) - { - if (JsKinds [kind].enabled && ! token->ignoreTag ) -@@ -238,12 +239,13 @@ - - if (JsKinds [kind].enabled && ! token->ignoreTag ) - { -- /* -+ * - * If a scope has been added to the token, change the token - * string to include the scope when making the tag. -- */ -+ * - if ( vStringLength(token->scope) > 0 ) - { -+ * - fulltag = vStringNew (); - vStringCopy(fulltag, token->scope); - vStringCatS (fulltag, "."); -@@ -251,8 +253,54 @@ - vStringTerminate(fulltag); - vStringCopy(token->string, fulltag); - vStringDelete (fulltag); -+ * -+ jsKind parent_kind = JSTAG_CLASS; -+ -+ * -+ * if we're creating a function (and not a method), -+ * guess we're inside another function -+ * -+ if (kind == JSTAG_FUNCTION) -+ parent_kind = JSTAG_FUNCTION; -+ -+ e.extensionFields.scope[0] = JsKinds [parent_kind].name; -+ e.extensionFields.scope[1] = vStringValue (token->scope); - } -- makeConstTag (token, kind); -+ * makeConstTag (token, kind); * -+ makeTagEntry (&e); -+ } -+} -+*/ -+ -+static void makeJsTag (tokenInfo *const token, const jsKind kind) -+{ -+ if (JsKinds [kind].enabled && ! token->ignoreTag ) -+ { -+ const char *const name = vStringValue (token->string); -+ tagEntryInfo e; -+ initTagEntry (&e, name); -+ -+ e.lineNumber = token->lineNumber; -+ e.filePosition = token->filePosition; -+ e.kindName = JsKinds [kind].name; -+ e.kind = JsKinds [kind].letter; -+ -+ if ( vStringLength(token->scope) > 0 ) -+ { -+ jsKind parent_kind = JSTAG_CLASS; -+ -+ /* -+ * If we're creating a function (and not a method), -+ * guess we're inside another function -+ */ -+ if (kind == JSTAG_FUNCTION) -+ parent_kind = JSTAG_FUNCTION; -+ -+ e.extensionFields.scope[0] = JsKinds [parent_kind].name; -+ e.extensionFields.scope[1] = vStringValue (token->scope); -+ } -+ -+ makeTagEntry (&e); - } - } - diff --git a/ctags.spec b/ctags.spec index 8073786..f4e4435 100644 --- a/ctags.spec +++ b/ctags.spec @@ -1,19 +1,23 @@ Summary: A C programming language indexing and/or cross-reference tool Name: ctags -Version: 5.8 -Release: 30%{?dist} -License: GPLv2+ and LGPLv2+ and Public Domain -URL: http://ctags.sourceforge.net/ -Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz -Patch0: ctags-5.7-destdir.patch -Patch1: ctags-5.7-segment-fault.patch -Patch2: ctags-5.8-css.patch -Patch3: ctags-5.8-ocaml-crash.patch -Patch4: ctags-5.8-cssparse.patch -Patch5: ctags-5.8-memmove.patch -Patch6: ctags-5.8-format-security.patch -Patch7: ctags-CVE-2014-7204.patch +Version: 6.2.1 +Release: 1%{?dist} +License: GPL-2.0-or-later +URL: https://ctags.io/ +Source0: https://github.com/universal-ctags/ctags/releases/download/v%{version}/universal-%{name}-%{version}.tar.gz + +BuildRequires: autoconf +BuildRequires: automake BuildRequires: gcc +BuildRequires: jansson-devel +BuildRequires: libseccomp-devel +BuildRequires: libxml2-devel +BuildRequires: libyaml-devel +BuildRequires: make +BuildRequires: pkgconfig +BuildRequires: python3-docutils + +Obsoletes: %{name}-etags <= 5.8 %description Ctags generates an index (or tag) file of C language objects found in @@ -32,65 +36,124 @@ objects found in source files. Install ctags if you are going to use your system for C programming. -%package etags -Summary: Exuberant Ctags for emacs tag format -Requires: ctags = %{version}-%{release} -Requires: /usr/sbin/alternatives - -%description etags -This package will generate tags in a format which GNU Emacs understand, -it's a alternativ implementation of the GNU etags program. -Note: some command line options is not compatible with GNU etags. - - %prep -%setup -q -%patch0 -p1 -b .destdir -%patch1 -p1 -b .crash -%patch2 -p1 -b .css-support -%patch3 -p1 -b .ocaml-crash -%patch4 -p1 -b .cssparse-crash -%patch5 -p1 -b .memmove -%patch6 -p1 -b .fmt-sec -%patch7 -p1 -b .CVE-2014-7204 +%autosetup -p1 -n universal-%{name}-%{version} %build +./autogen.sh %configure %make_build %install -rm -rf %{buildroot} - %make_install -pushd %{buildroot}%{_bindir} -ln -s ctags etags.ctags -popd - -pushd %{buildroot}%{_mandir}/man1 -ln -s ctags.1.gz etags.ctags.1.gz -popd - -%posttrans etags -/usr/sbin/alternatives --install /usr/bin/etags emacs.etags /usr/bin/etags.ctags 20 \ - --slave /usr/share/man/man1/etags.1.gz emacs.etags.man /usr/share/man/man1/ctags.1.gz - -%postun etags -/usr/sbin/alternatives --remove etags /usr/bin/etags.ctags || : +%check +#make check %files %license COPYING -%doc EXTENDING.html FAQ NEWS README +%doc README.md %{_bindir}/%{name} -%{_mandir}/man1/%{name}.1* - -%files etags -%license COPYING -%{_bindir}/etags.%{name} -%{_mandir}/man1/etags.%{name}.1* +%{_bindir}/optscript +%{_bindir}/readtags +%{_mandir}/man1/* +%{_mandir}/man5/* +%{_mandir}/man7/* %changelog +* Wed Nov 12 2025 Than Ngo - 6.2.1-1 +- Update to 6.2.1 + +* Wed Sep 24 2025 Than Ngo - 6.2.0-1 +- Fix rhbz#2397816 - Update to 6.2.0 + +* Thu Jul 24 2025 Than Ngo - 6.1.0-4 +- Fix rhbz#2382883 - convert STI tests to TMT +- Fix test failure due to different outputs + +* Wed Jul 23 2025 Fedora Release Engineering - 6.1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 6.1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Oct 23 2024 Than Ngo - 6.1.0-1 +- update to 6.1.0 + +* Tue Oct 22 2024 Richard W.M. Jones - 6.0.0-7 +- Rebuild for Jansson 2.14 + (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/3PYINSQGKQ4BB25NQUI2A2UCGGLAG5ND/) + +* Wed Jul 17 2024 Fedora Release Engineering - 6.0.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 6.0.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 6.0.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 6.0.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Feb 14 2023 Than Ngo - 6.0.0-2 +- migrated to SPDX license + +* Wed Feb 01 2023 Than Ngo - 6.0.0-1 +- update to 6.0.0 + +* Thu Jan 19 2023 Fedora Release Engineering - 5.9-10.20221120.0 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Nov 21 2022 Than Ngo - 5.9-9.20221120.0 +- update to 5.9.20221120.0 + +* Tue Oct 18 2022 Than Ngo - 5.9-9.20221016.0 +- update to 5.9.20221016.0 + +* Mon Sep 12 2022 Than Ngo - 5.9-9.20220911.0 +- update to 5.9.20220911.0 + +* Wed Jul 27 2022 Than Ngo - 5.9-8.20220724.0 +- update to 5.9.20220724.0 + +* Wed Jul 20 2022 Fedora Release Engineering - 5.9-7.20220619.0 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jun 23 2022 Than Ngo - 5.9-6.20220619.0 +- update to 5.9.6.20220619.0 + +* Thu May 12 2022 Than Ngo - 5.9-6.20220508.0 +- update to 5.9.20220508.0 + +* Tue Apr 26 2022 Than Ngo - 5.9-5.20220424.0 +- 20220424.0 + +* Mon Mar 21 2022 Than Ngo - 5.9-4.20220313.0 +- update to 5.9-4.20220313.0 + +* Tue Feb 08 2022 Than Ngo - 5.9-3.20220206.0 +- update to p5.9.20220206.0 + +* Thu Jan 20 2022 Fedora Release Engineering - 5.9-2.20210725.0 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Jul 27 2021 Than Ngo - 5.9-1.20210725.0 +- update to p5.9-20210725 + +* Wed Jul 21 2021 Fedora Release Engineering - 5.9-0.2.20210509.0 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon May 10 2021 Than Ngo - 5.9-0.1.20210509.0 +- update to 5.9.20210509.0 + +* Thu Mar 11 2021 Than Ngo - 5.9-0.1.20210307.0 +- switch to universal ctags + +* Tue Jan 26 2021 Fedora Release Engineering - 5.8-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Mon Jul 27 2020 Fedora Release Engineering - 5.8-30 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild diff --git a/sources b/sources index d3a3d61..da0080f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c00f82ecdcc357434731913e5b48630d ctags-5.8.tar.gz +SHA512 (universal-ctags-6.2.1.tar.gz) = 70e1767a72ba804cf4bc5e5c2dfe13498694c67865d5c8ca412d14b7f7f4c01410c94f7d57daad62ce5885166c4e05128d1beb8184f39a11596045a3f4131007 diff --git a/tests/Sanity-test-for-ctags/ctags-kinds-list b/tests/Sanity-test-for-ctags/ctags-kinds-list index 2f1cf3b..c1b9b48 100644 --- a/tests/Sanity-test-for-ctags/ctags-kinds-list +++ b/tests/Sanity-test-for-ctags/ctags-kinds-list @@ -1,17 +1,87 @@ +Unknown [disabled] +Abaqus + p Parts + a Assembly + s Steps +Abc + s sections +Ada + P package specifications + p packages + T type specifications [off] + t types + U subtype specifications [off] + u subtypes + c record type components + l enum type literals + V variable specifications [off] + v variables + f generic formal parameters + n constants + x user defined exceptions + R subprogram specifications + r subprograms + K task specifications + k tasks + O protected data specifications + o protected data + E task/protected data entry specifications [off] + e task/protected data entries + b labels + i loop/declare identifiers + a automatic variables [off] + y loops and blocks with no identifier [off] Ant - p projects - t targets + p projects + t targets + P properties(global) + i antfiles +Asciidoc + c chapters + s sections + S level 2 sections + t level 3 sections + T level 4 sections + u level 5 sections + a anchors Asm d defines l labels m macros t types (structs and records) + z parameters for a macro [off] Asp d constants c classes f functions s subroutines v variables +Autoconf + p packages + t templates + m autoconf macros + w options specified with --with-... + e options specified with --enable-... + s substitution keys + c automake conditions + d definitions +AutoIt + f functions + r regions + g global variables + l local variables + S included scripts +Automake + d directories + P programs + M manuals + T ltlibraries + L libraries + S scripts + D datum + c conditions + s subdirs + p placeholder for EXTRA_, noinst_, and _check_ prefixed primaries (internal use) [off] Awk f functions Basic @@ -21,41 +91,126 @@ Basic t types v variables g enumerations + n namespace +Bats + t test cases + S scripts BETA f fragment definitions p all patterns [off] s slots (fragment uses) v patterns (virtual or rebound) +BibLaTeX + A artworks + B audios + C bibnotes + D bookinbooks + E Booklets + G collections + H commentarys + I datasets + J images + K interferences + L jurisdictions + M legislations + N legals + O letters + P movies + Q musics + R mvbooks + S mvcollections + T mvproceedings + U mvreferences + V onlines + W patents + g performances + h periodicals + i references + j reports + k reviews + l sets + m software + n standards + o suppbooks + p suppcollections + q suppperiodicals + r thesis + s videos + t xdatas +BibTeX + a article + b book + B booklet + c conference + i inbook + I incollection + j inproceedings + m manual + M mastersthesis + n misc + p phdthesis + P proceedings + s string + t techreport + u unpublished +Clojure + f functions + n namespaces +CMake + f functions + m macros + t targets + v variable definitions + D options specified with -D + p projects C - c classes d macro definitions e enumerators (values inside an enumeration) f function definitions g enumeration names + h included header files l local variables [off] - m class, struct, and union members - n namespaces + m struct, and union members p function prototypes [off] s structure names t typedefs u union names v variable definitions x external and forward variable declarations [off] + z function parameters inside function or prototype definitions [off] + L goto labels [off] + D parameters inside macro definitions [off] C++ - c classes d macro definitions e enumerators (values inside an enumeration) f function definitions g enumeration names + h included header files l local variables [off] m class, struct, and union members - n namespaces p function prototypes [off] s structure names t typedefs u union names v variable definitions x external and forward variable declarations [off] + z function parameters inside function or prototype definitions [off] + L goto labels [off] + D parameters inside macro definitions [off] + c classes + n namespaces + A namespace aliases [off] + N names imported via using scope::symbol [off] + U using namespace statements [off] + Z template parameters [off] +CPreProcessor + d macro definitions + h included header files + D macro parameters [off] +CSS + c classes + s selectors + i identities C# c classes d macro definitions @@ -70,55 +225,259 @@ C# p properties s structure names t typedefs +Ctags + l language definitions + k kind definitions Cobol - d data items - f file descriptions (FD, SD, RD) - g group items - p paragraphs - P program ids - s sections -CSS + f file descriptions (FD, SD, RD) + g group items + P program ids + s sections + D divisions + p paragraphs + d data items + S source code file +CobolFree + f file descriptions (FD, SD, RD) + g group items + P program ids + s sections + D divisions + p paragraphs + d data items + S source code file +CobolVariable + f file descriptions (FD, SD, RD) + g group items + P program ids + s sections + D divisions + p paragraphs + d data items + S source code file +CUDA + d macro definitions + e enumerators (values inside an enumeration) + f function definitions + g enumeration names + h included header files + l local variables [off] + m struct, and union members + p function prototypes [off] + s structure names + t typedefs + u union names + v variable definitions + x external and forward variable declarations [off] + z function parameters inside function or prototype definitions [off] + L goto labels [off] + D parameters inside macro definitions [off] +D + a aliases c classes - s selectors - i identities + g enumeration names + e enumerators (values inside an enumeration) + x external variable declarations [off] + f function definitions + i interfaces + l local variables [off] + m class, struct, and union members + X mixins + M modules + n namespaces + p function prototypes [off] + s structure names + T templates + u union names + v variable definitions + V version statements +Diff + m modified files + n newly created files + d deleted files + h hunks +DTD + E entities + p parameter entities + e elements + a attributes + n notations +DTS + p phandlers + l labels DosBatch - l labels - v variables + l labels + v variables Eiffel c classes f features l local entities [off] +Elixir + p protocols (defprotocol...) + m modules (defmodule ...) + f functions (def ...) + c callbacks (defcallback ...) + d delegates (defdelegate ...) + e exceptions (defexception ...) + g guards (defguard ...) + i implementations (defimpl ...) + a macros (defmacro ...) + o operators (e.g. "defmacro a <<< b") + r records (defrecord...) + t tests (test ...) + y types (@type ...) +EmacsLisp + Y unknown type of definitions + f functions + v variables + c constants + m macros + a aliases for functions + V aliases for variables + s inline function + i inline function + e errors + M minor modes + D derived major mode + C customizable variables + G customization groups + H customizable faces + T custom themes Erlang d macro definitions f functions m modules r record definitions + t type definitions +Falcon + c classes + f functions + m class members + v variables + i imports Flex f functions c classes + i interfaces + P packages m methods p properties v global variables + l local variables [off] + C constants + I imports x mxtags +Forth + w words + v variables + c constants Fortran b block data c common blocks e entry points + E enumerations f functions - i interface contents, generic names, and operators [off] + i interface contents, generic names, and operators k type and structure components l labels L local, common block, and namelist variables [off] m modules + M type bound procedures n namelists + N enumeration values p programs + P subprogram prototypes [off] s subroutines t derived types and structures v program (global) and module variables + S submodules +FrontMatter + t titles +FunctionParameters + m methods + f functions +Fypp + m macros +Gdbinit + d definitions + D documents [off] + t toplevel variables + l local variables [off] +GDScript + c classes + m methods + v variables + C constants + g enumeration names + e enumerated values + z function parameters [off] + l local variables [off] + s signals +GemSpec + g gems +Go + p packages + f functions + c constants + t types + v variables + s structs + i interfaces + m struct members + M struct anonymous members + n interface method specification + Y unknown + P name for specifying imported package + a type aliases + R receivers [off] +GPerf + k keywords + h hash function names + l lookup function names + c class names + s string pool names +Haskell + t types + c type constructors + f functions + m modules +Haxe + m methods + c classes + e enumerations + v variables + i interfaces + t typedefs HTML - a named anchors - f JavaScript functions + a named anchors + c classes + t titles + h H1 headings + i H2 headings + j H3 headings + C stylesheets + I identifiers + J scripts +Iniconf + s sections + k keys +Inko + o Class definition + m Method definition + t Trait definition + a Attribute definition + c Constant definition + r Reopen class +IPythonCell + c cells +ITcl + c classes + m methods + v object-specific variables + C common variables + p procedures within the class namespace Java + a annotation declarations c classes e enum constants f fields @@ -127,32 +486,165 @@ Java l local variables [off] m methods p packages +JavaProperties + k keys JavaScript f functions c classes m methods p properties + C constants v global variables + g generators + G getters + S setters + M fields +JSON + o objects + a arrays + n numbers + s strings + b booleans + z nulls +Julia + c Constants + f Functions + g Fields + m Macros + n Modules + s Structures + t Types + Y name defined in other modules +Kconfig + c configs + m menus + M the main menu + k kconfig file + C choices + v macro variables +LdScript + S sections + s symbols + v versions + i input sections +LEX + r named regular expression + c start or exclusive condition Lisp + Y unknown type of definitions f functions + v variables + m macros + c constants +LiterateHaskell + t types + c type constructors + f functions + m modules Lua f functions + Y unknown language object [off] +M4 + d macros + I macro files +Man + t titles + s sections + S sub sections Make m macros + t targets + I makefiles +Markdown + c chapters + s sections + S level 2 sections + t level 3 sections + T level 4 sections + u level 5 sections + n footnotes + h hashtags MatLab - f function - f function - f function + f function + v variable + c class +Meson + P projects + V variables + S subdirs + B build targets + c custom targets + t tests + b benchmark targets + r run targets + m modules +MesonOptions + s strings + b booleans + c combos + i integers + a arrays + f features +Moose + c classes + m methods + a attributes + w wrappers + r roles +Myrddin + f functions + c constants + v variables + t types + r traits + p packages +NSIS + s sections + f functions + v variables + d definitions + m macros + S section groups + p macro parameters [off] + l language strings + i NSIS scripts +ObjectiveC + i class interface + I class implementation + P Protocol + m Object's method + c Class' method + v Global variable + E Object field + f A function + p A property + t A type alias + s A type structure + e An enumeration + M A preprocessor macro + C categories OCaml c classes m Object's method M Module or functor v Global variable + p Signature item t Type name f A function C A constructor r A 'structure' field e An exception +Org + d definitions + p parts + c chapters + s sections + u subsections + b subsubsections + P paragraphs + G subparagraphs +Passwd + u user names Pascal f functions p procedures @@ -163,37 +655,197 @@ Perl p packages s subroutines d subroutine declarations [off] + M modules [off] + h marker for here document [off] +Perl6 + c classes + g grammars + m methods + o modules + p packages + r roles + u rules + b submethods + s subroutines + t tokens PHP - c classes - i interfaces - d constant definitions - f functions - v variables - v variables - j javascript functions - j javascript functions - j javascript functions + c classes + d constant definitions + f functions + i interfaces + l local variables [off] + n namespaces + t traits + v variables + a aliases +PkgConfig + N display names + p packages + v variabels +Pod + c chapters + s sections + S subsections + t subsubsections +PowerShell + f functions + v variables + c classes + i filter + g enum names +Protobuf + p packages + m messages + f fields + e enum constants + g enum types + s services + r RPC methods + o oneof names + G groups + D .proto definition +PuppetManifest + c classes + d definitions + n nodes + r resources + v variables + p parameters + V virtual resources + t type aliases Python c classes f functions m class members v variables - i imports + I name referring a module defined in other file + i modules + Y name referring a class/variable/function/module defined in other module + z function parameters [off] + l local variables [off] +PythonLoggingConfig + L logger sections + q logger qualnames +QemuHX + q QEMU Management Protocol dispatch table entries + i item in texinfo doc +QtMoc + s slots + S signals + p properties +Quarto + l chunk labels +RMarkdown + l chunk labels +R + f functions + l libraries + s sources + g global variables having values other than function() + v function variables having values other than function() + z function parameters inside function definitions [off] + c vectors explicitly created with `c()' + L lists explicitly created with `list()' + d data frame explicitly created with `data.frame()' + n names attribtes in vectors, lists, or dataframes +Rake + t tasks + n namespaces + f file tasks + d directory tasks + m multi tasks + x tasks defined with special constructor +Raku + c classes + g grammars + m methods + o modules + p packages + r roles + u rules + b submethods + s subroutines + t tokens +R6Class + c classes + m methods + f fields + a active binding functions +RSpec + d describes + c contexts + i things described with "it" REXX - s subroutines + s subroutines +Robot + t testcases + k keywords + v variables +RpmMacros + m macros +RpmSpec + t tags + m macros + p packages + g global macros + p patch files +ReStructuredText + H titles + h sub titles + c chapters + s sections + S subsections + t subsubsections + C citations + T targets + d substitute definitions Ruby c classes f methods m modules - F singleton methods + S singleton methods + C constants + A accessors + a aliases + L libraries +Rust + n module + s structural type + i trait interface + c implementation + f Function + g Enum + t Type Alias + v Global variable + M Macro Definition + m A struct field + e An enum variant + P A method + C A constant +S4Class + c classes + r representations + g generics + m methods Scheme f functions s sets -Sh +SCSS + m mixins f functions + v variables + c classes + P placeholder classes + i identities + z function parameters +Sh + a aliases + f functions + s script files + h label for here document SLang - f functions - n namespaces + f functions + n namespaces SML e exception declarations f function definitions @@ -203,63 +855,183 @@ SML t type definitions v value bindings SQL - c cursors - d prototypes [off] - f functions - F record fields - l local variables [off] + C PLSQL_CCFLAGS + D domains + E record fields L block label P packages + R services + S schemas + T triggers + U publications + V views + b database + c cursors + d prototypes [off] + e events + f functions + i indexes + l local variables [off] + n synonyms p procedures r records [off] s subtypes t tables - T triggers v variables - i indexes - e events - U publications - R services - D domains - V views - n synonyms x MobiLink Table Scripts y MobiLink Conn Scripts + z MobiLink Properties +SystemdUnit + u units +SystemTap + p probe aliases + f functions + v variables + m macros Tcl + p procedures + n namespaces + z procedure parameters [off] +TclOO c classes m methods - p procedures +Terraform + r resources + d data + v variables + p providers + m modules + o output +TerraformVariables Tex + p parts c chapters s sections u subsections b subsubsections - p parts P paragraphs G subparagraphs + l labels + i external input files + B bibliography items + C command created with \newcommand + o math operator created with \DeclareMathOperator + e environment created with \newenvironment + t theorem created with \newtheorem + N counter created with \newcounter +TeXBeamer + f frametitles + g framesubtitles +TTCN + M module definition + t type definition + c constant definition + d template definition + f function definition + s signature definition + C testcase definition + a altstep definition + G group definition + P module parameter definition + v variable instance + T timer instance + p port instance + m record/set/union member + e enumeration value +Txt2tags + s sections +TypeScript + f functions + c classes + i interfaces + g enums + e enumerators (values inside an enumeration) + m methods + n namespaces + z function parameters inside function definitions [off] + p properties + v variables + l local variables [off] + C constants + G generators + a aliases +V + f functions + p modules + v variables + c constants + R receivers in functions + l labels + s structs + m struct/interface members + n interface methods + e enumerators (values inside an enumeration) + g enumeration names + a type aliases + i interfaces + u union names + Y unknown (imported) variables, types and functions Vera c classes d macro definitions e enumerators (values inside an enumeration) f function definitions g enumeration names + i interfaces l local variables [off] m class, struct, and union members p programs P function prototypes [off] + s signals t tasks T typedefs v variable definitions x external variable declarations [off] + h included header files + D cpp macro parameters [off] Verilog - c constants (define, parameter, specparam) + c constants (parameter, specparam) + d text macros e events f functions m modules n net data types p ports - r register data types + r variable data types t tasks + b blocks (begin, fork) + i instances of module +SystemVerilog + c constants (parameter, specparam, enum values) + d text macros + e events + f functions + m modules + n net data types + p ports + r variable data types + t tasks + b blocks (begin, fork) + i instances of module or interface + A assertions (assert, assume, cover, restrict) + C classes + V covergroups + E enumerators + I interfaces + M modports + K packages + P programs + Q prototypes (extern, pure) [off] + R properties + S structs and unions + T type declarations + H checkers + L clocking + q sequences + w struct and union members + l interface class + O constraints + N nettype declarations VHDL c constant declarations t type definitions @@ -272,11 +1044,141 @@ VHDL p procedure prototypes and declarations P package definitions l local definitions [off] + a architectures + q port declarations + g generic declarations + s signal declarations + Q processes + v variables + A aliases Vim a autocommand groups c user-defined commands f function definitions m maps v variable definitions + n vimball filename + C constant definitions +WindRes + d dialogs + m menus + i icons + b bitmaps + c cursors + f fonts + v versions + a accelerators YACC - l labels + t tokens + l labels +YumRepo + r repository id +Zephir + c classes + d constant definitions + f functions + i interfaces + l local variables [off] + n namespaces + t traits + v variables + a aliases +Zsh + a aliases + f functions + s script files + h label for here document +DBusIntrospect + a arguments + i interfaces + m methods + s signals + p properties + n nodes +Glade + c classes + h handlers +Maven2 + g group identifiers + a artifact identifiers + p properties + r repository identifiers +PlistXML + k keys +RelaxNG + e elements + a attributes + n named patterns +SVG + d ids in defs tags +XRC + o objects +XML + i id attributes + n namespace prefixes + r root elements +XSLT + s stylesheets + p parameters + m matched template + n named template + v variables +Yaml + a anchors +AnsiblePlaybook + p plays +I18nRubyGem + k translation keys at the leafs + m the middle component of keys [off] + l the root element representing a locale [off] +OpenAPI + d schemas + p paths + R responses + P parameters + t titles + s servers (or hosts in swagger) + T tags +Varlink + i interfaces + m methods + I input parameters + O output parameters + s structs + f fields + g enumeration names + e enumerators (values inside an enumeration) + E errors + d error descriptors +Kotlin + p packages + i interfaces + c classes + o objects + m methods + T typealiases + C constants + v variables +Thrift + s structs + x exceptions + u unions + n namespaces + e enumerators (values inside an enumeration) + g enumeration names + m members + C constants + t typedefs + v services + f functions + z parameters [off] + Z parameters in throws list [off] + T thrift files +Elm + m modules + n modules renamed + t types + c constructors + a aliases + p ports + f functions diff --git a/tests/Sanity-test-for-ctags/ctags-lang-list b/tests/Sanity-test-for-ctags/ctags-lang-list index f9338de..804037b 100644 --- a/tests/Sanity-test-for-ctags/ctags-lang-list +++ b/tests/Sanity-test-for-ctags/ctags-lang-list @@ -1,42 +1,155 @@ +Abaqus +Abc +Ada +AnsiblePlaybook Ant +Asciidoc Asm Asp +Autoconf +AutoIt +Automake Awk Basic +Bats BETA +BibLaTeX +BibTeX C -C++ C# +C++ +Clojure +CMake Cobol +CobolFree +CobolVariable +CPreProcessor CSS +Ctags +CUDA +D +DBusIntrospect +Diff DosBatch +DTD +DTS Eiffel +Elixir +Elm +EmacsLisp Erlang +Falcon Flex +Forth Fortran +FrontMatter +FunctionParameters +Fypp +Gdbinit +GDScript +GemSpec +Glade +Go +GPerf +Haskell +Haxe HTML +I18nRubyGem +Iniconf +Inko +IPythonCell +ITcl Java +JavaProperties JavaScript +JSON +Julia +Kconfig +Kotlin +LdScript +LEX Lisp +LiterateHaskell Lua +M4 Make +Man +Markdown MatLab +Maven2 +Meson +MesonOptions +Moose +Myrddin +NSIS +ObjectiveC OCaml +OpenAPI +Org Pascal +Passwd Perl +Perl6 PHP +PkgConfig +PlistXML +Pod +PowerShell +Protobuf +PuppetManifest Python +PythonLoggingConfig +QemuHX +QtMoc +Quarto +R +R6Class +Rake +Raku +RelaxNG +ReStructuredText REXX +RMarkdown +Robot +RpmMacros +RpmSpec +RSpec Ruby +Rust +S4Class Scheme +SCSS Sh SLang SML SQL +SVG +SystemdUnit +SystemTap +SystemVerilog Tcl +TclOO +Terraform +TerraformVariables Tex +TeXBeamer +Thrift +TTCN +Txt2tags +TypeScript +Unknown [disabled] +V +Varlink Vera Verilog VHDL Vim +WindRes +XML +XRC +XSLT YACC +Yaml +YumRepo +Zephir +Zsh diff --git a/tests/Sanity-test-for-ctags/ctags-maps-list b/tests/Sanity-test-for-ctags/ctags-maps-list index d9fe867..6d9096b 100644 --- a/tests/Sanity-test-for-ctags/ctags-maps-list +++ b/tests/Sanity-test-for-ctags/ctags-maps-list @@ -1,42 +1,155 @@ -Ant *.build.xml -Asm *.asm *.ASM *.s *.S *.A51 *.29[kK] *.[68][68][kKsSxX] *.[xX][68][68] +Unknown +Abaqus *.inp +Abc *.abc *.abc +Ada *.adb *.ads *.Ada *.ada +Ant build.xml *.build.xml *.ant *.xml +Asciidoc *.asc *.adoc *.asciidoc *.asc *.adoc *.asciidoc +Asm *.A51 *.29[kK] *.[68][68][kKsSxX] *.[xX][68][68] *.asm *.ASM *.s *.S Asp *.asp *.asa +Autoconf configure.in *.ac +AutoIt *.au3 *.AU3 *.aU3 *.Au3 +Automake Makefile.am GNUmakefile.am *.am Awk *.awk *.gawk *.mawk -Basic *.bas *.bi *.bb *.pb +Basic *.bas *.bi *.bm *.bb *.pb +Bats *.bats BETA *.bet +BibLaTeX +BibTeX *.bib +Clojure *.clj *.cljs *.cljc +CMake CMakeLists.txt *.cmake C *.c -C++ *.c++ *.cc *.cp *.cpp *.cxx *.h *.h++ *.hh *.hp *.hpp *.hxx *.C *.H -C# *.cs -Cobol *.cbl *.cob *.CBL *.COB +C++ *.c++ *.cc *.cp *.cpp *.cxx *.h *.h++ *.hh *.hp *.hpp *.hxx *.inl *.C *.H *.CPP *.CXX +CPreProcessor CSS *.css +C# *.cs +Ctags *.ctags +Cobol *.cbl *.cob *.CBL *.COB +CobolFree +CobolVariable +CUDA *.cu *.cuh +D *.d *.di +Diff *.diff *.patch +DTD *.dtd *.mod +DTS *.dts *.dtsi DosBatch *.bat *.cmd Eiffel *.e +Elixir *.ex *.exs +EmacsLisp *.el Erlang *.erl *.ERL *.hrl *.HRL +Falcon *.fal *.ftd Flex *.as *.mxml -Fortran *.f *.for *.ftn *.f77 *.f90 *.f95 *.F *.FOR *.FTN *.F77 *.F90 *.F95 +Forth *.fth *.forth *.fs *.4th *.f +Fortran *.f *.for *.ftn *.f77 *.f90 *.f95 *.f03 *.f08 *.f15 *.F *.FOR *.FTN *.F77 *.F90 *.F95 *.F03 *.F08 *.F15 +FrontMatter +FunctionParameters +Fypp *.fy +Gdbinit .gdbinit *.gdb +GDScript *.gd +GemSpec *.gemspec +Go *.go +GPerf *.perf *.gperf +Haskell *.hs +Haxe *.hx HTML *.htm *.html +Iniconf *.ini *.conf +Inko *.inko +IPythonCell +ITcl *.itcl Java *.java -JavaScript *.js -Lisp *.cl *.clisp *.el *.l *.lisp *.lsp +JavaProperties *.properties +JavaScript *.js *.jsx *.mjs +JSON *.json +Julia *.jl +Kconfig Kconfig* +LdScript *.lds.S ld.script *.lds *.scr *.ld *.ldi +LEX *.lex *.l +Lisp *.cl *.clisp *.l *.lisp *.lsp +LiterateHaskell *.lhs Lua *.lua -Make *.mak *.mk [Mm]akefile GNUmakefile +M4 *.m4 *.spt +Man *.1 *.2 *.3 *.4 *.5 *.6 *.7 *.8 *.9 *.3pm *.3stap *.7stap +Make [Mm]akefile GNUmakefile *.mak *.mk +Markdown *.md *.markdown MatLab *.m -OCaml *.ml *.mli +Meson meson.build +MesonOptions meson_options.txt +Moose +Myrddin *.myr +NSIS *.nsi *.nsh +ObjectiveC *.mm *.m *.h +OCaml *.ml *.mli *.aug +Org *.org +Passwd passwd Pascal *.p *.pas -Perl *.pl *.pm *.plx *.perl -PHP *.php *.php3 *.phtml -Python *.py *.pyx *.pxd *.pxi *.scons +Perl *.pl *.pm *.ph *.plx *.perl +Perl6 *.p6 *.pm6 *.pm *.pl6 *.t6 +PHP *.php *.php3 *.php4 *.php5 *.php7 *.phtml +PkgConfig *.pc +Pod *.pod +PowerShell *.ps1 *.psm1 +Protobuf *.proto +PuppetManifest *.pp +Python *.py *.pyx *.pxd *.pxi *.scons *.wsgi +PythonLoggingConfig +QemuHX *.hx +QtMoc +Quarto *.qmd +RMarkdown *.rmd +R *.r *.R *.s *.q +Rake Rakefile *.rake +Raku *.raku *.rakumod *.rakutest *.rakudoc +R6Class +RSpec REXX *.cmd *.rexx *.rx +Robot *.robot +RpmMacros +RpmSpec *.spec +ReStructuredText *.rest *.reST *.rst Ruby *.rb *.ruby -Scheme *.SCM *.SM *.sch *.scheme *.scm *.sm -Sh *.sh *.SH *.bsh *.bash *.ksh *.zsh +Rust *.rs +S4Class +Scheme *.SCM *.SM *.sch *.scheme *.scm *.sm *.rkt +SCSS *.scss +Sh *.sh *.SH *.bsh *.bash *.ksh *.ash SLang *.sl SML *.sml *.sig SQL *.sql -Tcl *.tcl *.tk *.wish *.itcl +SystemdUnit *.service *.socket *.device *.mount *.automount *.swap *.target *.path *.timer *.snapshot *.slice +SystemTap *.stp *.stpm +Tcl *.tcl *.tk *.wish *.exp +TclOO +Terraform *.tf +TerraformVariables *.tfvars Tex *.tex +TeXBeamer +TTCN *.ttcn *.ttcn3 +Txt2tags *.t2t *.t2t +TypeScript *.ts +V *.v Vera *.vr *.vri *.vrh Verilog *.v +SystemVerilog *.sv *.svh *.svi VHDL *.vhdl *.vhd -Vim *.vim +Vim vimrc [._]vimrc gvimrc [._]gvimrc *.vim *.vba +WindRes *.rc YACC *.y +YumRepo *.repo +Zephir *.zep +Zsh *.zsh +DBusIntrospect *.xml +Glade *.glade +Maven2 pom.xml *.pom *.xml +PlistXML *.plist +RelaxNG *.rng +SVG *.svg +XRC *.xrc +XML *.xml +XSLT *.xsl *.xslt +Yaml *.yml *.yaml +AnsiblePlaybook +I18nRubyGem +OpenAPI openapi.yaml +Varlink *.varlink +Kotlin *.kt *.kts +Thrift *.thrift +Elm *.elm diff --git a/tests/Sanity-test-for-ctags/main.fmf b/tests/Sanity-test-for-ctags/main.fmf new file mode 100644 index 0000000..a15acec --- /dev/null +++ b/tests/Sanity-test-for-ctags/main.fmf @@ -0,0 +1,13 @@ +summary: Run tests in all contexts +description: '' +contact: Than Ngo +component: + - ctags +test: ./runtest.sh +framework: beakerlib +recommend: + - ctags + - man-db +duration: 5m +extra-summary: /CoreOS/ctags/Sanity-test-for-ctags +extra-task: /CoreOS/ctags/Sanity-test-for-ctags diff --git a/tests/Sanity-test-for-ctags/runtest.sh b/tests/Sanity-test-for-ctags/runtest.sh index d952395..52c366e 100755 --- a/tests/Sanity-test-for-ctags/runtest.sh +++ b/tests/Sanity-test-for-ctags/runtest.sh @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # ctags basics PACKAGES="ctags" @@ -6,7 +6,6 @@ PACKAGES="ctags" # source the test script helpers # requires beakerlib package -. /usr/bin/rhts-environment.sh || exit 1 . /usr/share/beakerlib/beakerlib.sh || exit 1 rlJournalStart diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 6ec7675..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Run tests in all contexts -- hosts: localhost - tags: - - classic - roles: - - role: standard-test-beakerlib - tests: - - Sanity-test-for-ctags - required_packages: - - ctags - - man-db