[packages/ctags] Switch from unmaintained crags to maintained universal ctags (6.2.1) project.

arekm arekm at pld-linux.org
Mon Aug 31 23:11:05 CEST 2026


commit 9f2d19dacabb6b21764c1b6846983744470c7243
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Mon Aug 31 23:10:41 2026 +0200

    Switch from unmaintained crags to maintained universal ctags (6.2.1) project.

 attr.patch                    | 294 ------------------------------------------
 branch.sh                     |  41 ------
 ctags-5.7-segment-fault.patch |  41 ------
 ctags-5.8-css.patch           | 260 -------------------------------------
 ctags-5.8-cssparse.patch      |  16 ---
 ctags.spec                    | 290 +++++++++++++++++++++++------------------
 6 files changed, 161 insertions(+), 781 deletions(-)
---
diff --git a/ctags.spec b/ctags.spec
index 76f0220..a245dc2 100644
--- a/ctags.spec
+++ b/ctags.spec
@@ -1,172 +1,204 @@
-Summary:	Exuberant ctags -- C cross-reference tool
-Summary(de.UTF-8):	Exuberant ctags - C-Cross-Reference-Tool
-Summary(es.UTF-8):	ctags - generador de listas de referencia
-Summary(fr.UTF-8):	ctags exubérant
-Summary(ko.UTF-8):	여러 언어로 된 소스 코드에 색인을 만들어주는 도구
-Summary(pl.UTF-8):	ctags - generator list odwołań
-Summary(pt_BR.UTF-8):	Ctags exuberantes! Ferramenta de referência cruzada para C
-Summary(ru.UTF-8):	Утилита для индексации и построения ссылок для языка C
-Summary(tr.UTF-8):	C dili için çapraz-başvuru (cross-reference) aracı
-Summary(uk.UTF-8):	Утиліта для індексації та побудови посилань для мови C
+Summary:	Universal Ctags -- source code cross-reference tool
+Summary(de.UTF-8):	Universal Ctags - Querverweis-Werkzeug für Quelltext
+Summary(es.UTF-8):	Universal Ctags - generador de referencias cruzadas
+Summary(fr.UTF-8):	Universal Ctags - outil de références croisées
+Summary(ko.UTF-8):	Universal Ctags - 여러 언어로 된 소스 코드에 색인을 만들어주는 도구
+Summary(pl.UTF-8):	Universal Ctags - generator list odwołań
+Summary(pt_BR.UTF-8):	Universal Ctags - ferramenta de referência cruzada
+Summary(ru.UTF-8):	Universal Ctags - утилита для построения перекрёстных ссылок
+Summary(tr.UTF-8):	Universal Ctags - çapraz başvuru (cross-reference) aracı
+Summary(uk.UTF-8):	Universal Ctags - утиліта для побудови перехресних посилань
 Name:		ctags
-Version:	5.8
-Release:	7
+Version:	6.2.1
+Release:	1
 License:	GPL v2+
 Group:		Development/Tools
-Source0:	http://downloads.sourceforge.net/ctags/%{name}-%{version}.tar.gz
-# Source0-md5:	c00f82ecdcc357434731913e5b48630d
-Source1:	branch.sh
-Patch0:		branch.diff
-# Patch0-md5:	6a14a7eb89b1ef01f6849c9ad1fc169b
-Patch1:		%{name}-5.7-segment-fault.patch
-Patch2:		%{name}-5.8-css.patch
-Patch3:		%{name}-5.8-cssparse.patch
-Patch4:		attr.patch
-URL:		http://ctags.sourceforge.net/
-BuildRequires:	autoconf >= 1.12
-BuildRequires:	automake
+Source0:	https://github.com/universal-ctags/ctags/releases/download/v%{version}/universal-%{name}-%{version}.tar.gz
+# Source0-md5:	61718f5238cd005155cf0e9aa22e10e1
+URL:		https://ctags.io/
+BuildRequires:	jansson-devel
+BuildRequires:	libseccomp-devel
+BuildRequires:	libxml2-devel >= 2.7.7
+BuildRequires:	pcre2-8-devel
+BuildRequires:	pkgconfig
 BuildRequires:	rpmbuild(macros) >= 1.402
+BuildRequires:	yaml-devel
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
-Ctags generates an index (or tag) file of C language objects found in
-C source and header files. The index makes it easy for text editors or
-other utilities to locate the indexed items. Ctags can also generate a
-cross reference file which lists information about the various objects
-found in a set of C language files in human readable form. Exuberant
-Ctags improves on ctags because it can find all types of C language
-tags, including macro definitions, enumerated values (values inside
-enum{...}), function and method definitions, enum/struct/union tags,
-external function prototypes, typedef names and variable declarations.
-Exuberant Ctags is far less likely to be fooled by code containing #if
-preprocessor conditional constructs than ctags. Exuberant ctags
-supports output of emacs style TAGS files and can be used to print out
-a list of selected objects found in source files.
+Ctags generates an index (or tag) file of language objects found in
+source files. The index makes it easy for text editors or other
+utilities to locate the indexed items. Ctags can also generate a cross
+reference file which lists information about the various objects found
+in a set of source files in human readable form. Universal Ctags is the
+maintained successor of Exuberant Ctags; it covers many more languages
+and finds all types of tags, including macro definitions, enumerated
+values (values inside enum{...}), function and method definitions,
+enum/struct/union tags, external function prototypes, typedef names and
+variable declarations. It is far less likely to be fooled by code
+containing #if preprocessor conditional constructs than the original
+ctags, supports output of emacs style TAGS files and can be used to
+print out a list of selected objects found in source files.
 
 %description -l de.UTF-8
-'#if'-Präprozessor-Bedingungen enthält, dank eines konditionalen Ein
-verbessertes ctags, das tags für alle möglichen tag-Typen generiert:
-Makrodefinitionen, aufgezählte Werte (Werte in enum{...}), Funktions-
-und Methodendefinitionen, enum/struct/union-tags, externe
-Funktionsprototypen (wahlweise), typedefs und variable Deklarationen.
-Es läßt sich weit weniger gut durch Code täuschen, der
-Pfadauswahlalgorithmus, der komplizierte Entscheidungen trifft, und
-eines Ausweiche-Algorithmus, der ins Spiel kommt, wenn der erste dem
-Problem nicht gewachsen ist. Kann auch benutzt werden, um eine Liste
-ausgewählter Objekte, die in Quelldateien gefunden wurden,
-auszudrucken.
+Ctags erzeugt eine Index- bzw. Tag-Datei der in Quelldateien
+gefundenen Sprachobjekte. Dieser Index erleichtert es Texteditoren und
+anderen Werkzeugen, die indizierten Elemente aufzufinden. Ctags kann
+außerdem eine Querverweisdatei erzeugen, die Informationen über die
+gefundenen Objekte in lesbarer Form auflistet. Universal Ctags ist der
+gepflegte Nachfolger von Exuberant Ctags; es unterstützt deutlich mehr
+Sprachen und findet alle Arten von Tags: Makrodefinitionen,
+Aufzählungswerte (Werte innerhalb von enum{...}), Funktions- und
+Methodendefinitionen, enum/struct/union-Tags, externe
+Funktionsprototypen, Typedef-Namen und Variablendeklarationen. Es
+lässt sich von Code mit bedingten '#if'-Präprozessor-Konstrukten
+deutlich seltener täuschen als das ursprüngliche ctags, kann
+TAGS-Dateien im Emacs-Format ausgeben und eine Liste ausgewählter, in
+Quelldateien gefundener Objekte ausdrucken.
 
 %description -l es.UTF-8
-Un ctags mejor que crea tags para todos los tipos posibles de tag:
-definiciones de macro, valores enumerados, definiciones de función y
-método, tags enum/struct/union, prototipos de función externa
-(opcional), typedefs y declaraciones variables. Es más difícil de ser
-engañado en códigos que contenga la directiva condicional #if para el
-preprocesador, pues utiliza un algoritmo condicional de camino para
-solucionar decisiones complicadas, y un algoritmo de rescate cuando
-este falla. También puede ser usado para enseñar una lista de objetos
-seleccionados que esté en los archivos fuente.
+Ctags genera un archivo de índice (o de tags) con los objetos de
+lenguaje encontrados en los archivos fuente. Ese índice facilita a los
+editores de texto y a otras utilidades la localización de los
+elementos indexados. Ctags también puede generar un archivo de
+referencias cruzadas que lista, en un formato legible, información
+sobre los distintos objetos encontrados. Universal Ctags es el sucesor
+mantenido de Exuberant Ctags; admite muchos más lenguajes y encuentra
+todos los tipos de tag: definiciones de macro, valores enumerados
+(valores dentro de enum{...}), definiciones de función y método, tags
+enum/struct/union, prototipos de función externa, typedefs y
+declaraciones de variables. Es mucho más difícil de engañar con código
+que contenga la directiva condicional #if del preprocesador que el
+ctags original, permite generar archivos TAGS al estilo de Emacs y
+puede usarse para mostrar una lista de los objetos seleccionados que
+estén en los archivos fuente.
 
 %description -l fr.UTF-8
-un ctags amélioré générant des tags pour tous les types de tags
-possibles : définitions de macros, valeurs énumérées (valeurs dans
-enum{...}), définitions de fonctions et de méthodes, enum/struct/union
-tags, prototypes de fonctions externes (optionnel), typedefs, et
-déclarations de variables. Peut aussi être utilisé pour afficher une
-liste des objets choisis trouvés dans les fichiers source.
+Ctags génère un fichier d'index (ou de tags) des objets de langage
+trouvés dans les fichiers source. Cet index permet aux éditeurs de
+texte et aux autres utilitaires de localiser facilement les éléments
+indexés. Ctags peut aussi générer un fichier de références croisées
+qui présente sous une forme lisible les informations sur les
+différents objets trouvés. Universal Ctags est le successeur maintenu
+d'Exuberant Ctags ; il prend en charge bien plus de langages et trouve
+tous les types de tags : définitions de macros, valeurs énumérées
+(valeurs dans enum{...}), définitions de fonctions et de méthodes,
+tags enum/struct/union, prototypes de fonctions externes, typedefs et
+déclarations de variables. Il se laisse beaucoup moins facilement
+tromper que le ctags d'origine par du code contenant des constructions
+conditionnelles « #if » du préprocesseur, gère la sortie de fichiers
+TAGS au format Emacs et peut être utilisé pour afficher une liste des
+objets choisis trouvés dans les fichiers source.
 
 %description -l pl.UTF-8
-Generator tabeli odwołań dla: makr, zmiennych, funkcji i procedur,
-definicji typów, metod (C++) itp. Używany do generacji listy
+Generator tabeli odwołań dla makr, zmiennych, funkcji i procedur,
+definicji typów, metod itp. Używany do generowania listy
 wyspecyfikowanych obiektów znalezionych w plikach źródłowych. Tablica
 owych odwołań może być wykorzystywana przez większość standardowych
-edytorów tekstu (vim, joe, emacs), do przemieszczania się w źródłach
-między deklaracją i użyciem danego symbolu.
+edytorów tekstu (vim, joe, emacs) do przemieszczania się w źródłach
+między deklaracją a użyciem danego symbolu. Universal Ctags jest
+utrzymywanym następcą Exuberant Ctags i obsługuje znacznie więcej
+języków programowania.
 
 %description -l pt_BR.UTF-8
-Um ctags melhor que gera tags para todos os tipos possíveis de tag:
-definições de macro, valores enumerados, definições de função e
-método, tags enum/struct/union, protótipos de função externa
-(opcional), typedefs e declarações variáveis. É mais difícil de ser
-enganado em códigos que contenha a diretiva condicional #if para o
-pré-processador, pois utiliza um algoritmo condicional de caminho para
-resolver decisões complicadas, e um algoritmo de resgate quando este
-falha. Também pode ser usado para mostrar uma lista de objetos
-selecionados que estejam nos arquivos fonte.
+O Ctags gera um arquivo de índice (ou de tags) com os objetos de
+linguagem encontrados nos arquivos fonte. Esse índice facilita aos
+editores de texto e a outros utilitários a localização dos itens
+indexados. O Ctags também pode gerar um arquivo de referências
+cruzadas que lista, em formato legível, informações sobre os diversos
+objetos encontrados. O Universal Ctags é o sucessor mantido do
+Exuberant Ctags; ele abrange muito mais linguagens e encontra todos os
+tipos de tag: definições de macro, valores enumerados (valores dentro
+de enum{...}), definições de função e método, tags enum/struct/union,
+protótipos de função externa, typedefs e declarações de variáveis. É
+muito mais difícil de ser enganado por código que contenha a diretiva
+condicional #if do pré-processador do que o ctags original, gera
+arquivos TAGS no estilo do Emacs e pode ser usado para mostrar uma
+lista dos objetos selecionados que estejam nos arquivos fonte.
 
 %description -l ru.UTF-8
-Ctags генерирует индексный (или тэг-) файл объектов языка C, которые
-находятся в файлах исходных текстов и хедерах на языке C. Такой индекс
-облегчает текстовым редакторам и другим утилитам поиск индексированных
-объектов. Ctags также может генерировать файл перекрестных ссылок,
-который содержит информацию о различных объектах, содержащихся в
-наборе файлов на языке C в пригодной для чтения форме. Exuberant Ctags
-представляет собой усовершенствование стандартного ctags, т.к. он
-способен находить все типы тэгов языка C, включая макроопределения,
-перечисляемые значения (значения внутри enum{...}), определения
-функций и методов, тэги enum/struct/union, прототипы внешних функций,
-имена typedef и декларации переменных. Exuberant Ctags значительно
-труднее обмануть кодом, содержащим условные конструкции препроцессора
-'#if', чем оригинальный ctags. Exuberant Ctags поддерживает вывод
-файла TAGS в стиле Emacs и может быть использован для вывода списка
-выбранных объектов, найденных в исходных файлах.
+Ctags генерирует индексный (или тег-) файл языковых объектов, которые
+находятся в файлах исходных текстов. Такой индекс облегчает текстовым
+редакторам и другим утилитам поиск индексированных объектов. Ctags
+также может генерировать файл перекрёстных ссылок, который содержит
+информацию о различных объектах, найденных в наборе исходных файлов, в
+пригодной для чтения форме. Universal Ctags — поддерживаемый преемник
+Exuberant Ctags; он понимает намного больше языков и способен находить
+все типы тегов, включая макроопределения, перечисляемые значения
+(значения внутри enum{...}), определения функций и методов, теги
+enum/struct/union, прототипы внешних функций, имена typedef и
+декларации переменных. Universal Ctags значительно труднее обмануть
+кодом, содержащим условные конструкции препроцессора '#if', чем
+оригинальный ctags. Universal Ctags поддерживает вывод файла TAGS в
+стиле Emacs и может быть использован для вывода списка выбранных
+объектов, найденных в исходных файлах.
 
 %description -l tr.UTF-8
-Olabilecek her türlü etiket çeşitleri - makro tanımlamaları, sayılı
-(enumerated) değerler, fonksiyon ve yöntem (method) tanımlamaları, tip
-ve değişken tanımları - için etiketler üretir. Kaynak kodlarında
-bulunan, seçilmiş nesnelerin listesinin çıktısını yazıcıdan almak için
-de kullanılabilir.
+Ctags, kaynak dosyalarda bulunan dil nesnelerinin bir dizin (etiket)
+dosyasını üretir. Bu dizin, metin düzenleyicilerin ve diğer araçların
+dizinlenmiş öğeleri bulmasını kolaylaştırır. Ctags ayrıca bulunan
+nesneler hakkındaki bilgileri okunabilir biçimde listeleyen bir çapraz
+başvuru dosyası da üretebilir. Universal Ctags, Exuberant Ctags'in
+bakımı sürdürülen ardılıdır; çok daha fazla dili destekler ve her
+türlü etiketi bulur: makro tanımlamaları, sayılı (enumerated)
+değerler, fonksiyon ve yöntem (method) tanımlamaları,
+enum/struct/union etiketleri, dış fonksiyon prototipleri, typedef
+adları ve değişken tanımlamaları. Koşullu '#if' önişlemci yapıları
+içeren kodlarda özgün ctags'e göre çok daha az yanılır, Emacs
+biçimindeki TAGS dosyalarını üretebilir ve kaynak dosyalarda bulunan
+seçilmiş nesnelerin listesini yazdırmak için kullanılabilir.
 
 %description -l uk.UTF-8
-Ctags генерує індексний (або тег-) файл об'єктів мови C, які
-знаходяться у файлах вихідних текстів та хедерах на мові C. Такий
-індекс полегшує текстовим редакторам та іншим утилітам пошук
-індексованих об'єктів. Ctags також може генерувати файл перехресних
-посилань, який містить інформацію про різні об'єкти, які містяться у
-наборі файлів на мові C у придатній для читання формі. Exuberant Ctags
-являє собою вдосконалення стандартного ctags, так як він у стані
-знаходити всі типи тегів мови C, включаючи макровизначення, значення
-всередині enum{...}, визначення функцій та методів, теги
-enum/struct/union, прототипи зовнішніх функцій, імена typedef та
-декларації змінних. Exuberant Ctags значно тяжче обманути кодом, що
-містить умовні конструкцію препроцесора #if, ніж оригінальний ctags.
-Exuberant Ctags підтримує вивід файлу TAGS у стилі Emacs і може бути
-використаний для виводу списку вибраних об'єктів, які знаходяться у
-вихідних файлах.
+Ctags генерує індексний (або тег-) файл мовних об'єктів, які
+знаходяться у файлах вихідних текстів. Такий індекс полегшує текстовим
+редакторам та іншим утилітам пошук індексованих об'єктів. Ctags також
+може генерувати файл перехресних посилань, який містить інформацію про
+різні об'єкти, знайдені у наборі вихідних файлів, у придатній для
+читання формі. Universal Ctags — підтримуваний наступник Exuberant
+Ctags; він розуміє значно більше мов та здатний знаходити всі типи
+тегів, включаючи макровизначення, значення всередині enum{...},
+визначення функцій та методів, теги enum/struct/union, прототипи
+зовнішніх функцій, імена typedef та декларації змінних. Universal
+Ctags значно важче обманути кодом, що містить умовні конструкції
+препроцесора #if, ніж оригінальний ctags. Universal Ctags підтримує
+вивід файлу TAGS у стилі Emacs і може бути використаний для виводу
+списку вибраних об'єктів, які знаходяться у вихідних файлах.
 
 %prep
-%setup -q
-%patch -P0 -p0
-#%%patch1 -p1 recheck
-%patch -P2 -p1
-%patch -P3 -p1
-%patch -P4 -p1
+%setup -q -n universal-%{name}-%{version}
 
 %build
-%{__autoconf}
-cp -f /usr/share/automake/install-sh .
-cp -f /usr/share/automake/config.sub .
+# /usr/bin/etags belongs to emacs-common; the etags mode of ctags is not
+# command line compatible with GNU etags, see ctags-incompatibilities(7)
 %configure \
-	--enable-etags \
-	--enable-tmpdir=/tmp
+	--disable-etags \
+	--disable-silent-rules \
+	--enable-json \
+	--enable-pcre2 \
+	--enable-seccomp \
+	--enable-tmpdir=/tmp \
+	--enable-xml \
+	--enable-yaml
 
 %{__make}
 
 %install
 rm -rf $RPM_BUILD_ROOT
-%{__make} -j1 install \
-	prefix=$RPM_BUILD_ROOT%{_prefix} \
-	bindir=$RPM_BUILD_ROOT%{_bindir} \
-	mandir=$RPM_BUILD_ROOT%{_mandir}
+
+%{__make} install \
+	DESTDIR=$RPM_BUILD_ROOT
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(644,root,root,755)
-%doc EXTENDING.html FAQ NEWS README
+%doc COPYING NEWS.rst README.md
 %attr(755,root,root) %{_bindir}/ctags
-%attr(755,root,root) %{_bindir}/etags
+%attr(755,root,root) %{_bindir}/optscript
+%attr(755,root,root) %{_bindir}/readtags
 %{_mandir}/man1/ctags.1*
-%{_mandir}/man1/etags.1*
+%{_mandir}/man1/readtags.1*
+%{_mandir}/man5/ctags-json-output.5*
+%{_mandir}/man5/tags.5*
+%{_mandir}/man7/ctags-*.7*
diff --git a/attr.patch b/attr.patch
deleted file mode 100644
index b1fc65d..0000000
--- a/attr.patch
+++ /dev/null
@@ -1,294 +0,0 @@
-diff -ur ctags-5.8.orig/c.c ctags-5.8/c.c
---- ctags-5.8.orig/c.c	2023-01-29 21:39:39.092029264 +0100
-+++ ctags-5.8/c.c	2023-01-29 21:56:25.586429350 +0100
-@@ -619,7 +619,7 @@
- 	return name;
- }
- 
--static void __unused__ pt (tokenInfo *const token)
-+static void ctags_attr_unused pt (tokenInfo *const token)
- {
- 	if (isType (token, TOKEN_NAME))
- 		printf ("type: %-12s: %-13s   line: %lu\n",
-@@ -634,7 +634,7 @@
- 			tokenString (token->type), token->lineNumber);
- }
- 
--static void __unused__ ps (statementInfo *const st)
-+static void ctags_attr_unused ps (statementInfo *const st)
- {
- 	unsigned int i;
- 	printf ("scope: %s   decl: %s   gotName: %s   gotParenName: %s\n",
-diff -ur ctags-5.8.orig/debug.h ctags-5.8/debug.h
---- ctags-5.8.orig/debug.h	2007-06-24 21:57:09.000000000 +0200
-+++ ctags-5.8/debug.h	2023-01-29 21:54:58.442301695 +0100
-@@ -58,7 +58,7 @@
- *   Function prototypes
- */
- extern void lineBreak (void);
--extern void debugPrintf (const enum eDebugLevels level, const char *const format, ...) __printf__ (2, 3);
-+extern void debugPrintf (const enum eDebugLevels level, const char *const format, ...) ctags_attr_printf (2, 3);
- extern void debugPutc (const int level, const int c);
- extern void debugParseNest (const boolean increase, const unsigned int level);
- extern void debugCppNest (const boolean begin, const unsigned int level);
-diff -ur ctags-5.8.orig/eiffel.c ctags-5.8/eiffel.c
---- ctags-5.8.orig/eiffel.c	2023-01-29 21:39:39.095362496 +0100
-+++ ctags-5.8/eiffel.c	2023-01-29 21:56:12.003492590 +0100
-@@ -807,7 +807,7 @@
- 
- static boolean parseType (tokenInfo *const token);
- 
--static void parseGeneric (tokenInfo *const token, boolean declaration __unused__)
-+static void parseGeneric (tokenInfo *const token, boolean declaration ctags_attr_unused)
- {
- 	unsigned int depth = 0;
- #ifdef TYPE_REFERENCE_TOOL
-diff -ur ctags-5.8.orig/general.h ctags-5.8/general.h
---- ctags-5.8.orig/general.h	2007-05-03 05:21:08.000000000 +0200
-+++ ctags-5.8/general.h	2023-01-29 21:54:14.060256268 +0100
-@@ -57,11 +57,11 @@
-  *  to prevent warnings about unused variables.
-  */
- #if (__GNUC__ > 2  ||  (__GNUC__ == 2  &&  __GNUC_MINOR__ >= 7)) && !defined (__GNUG__)
--# define __unused__  __attribute__((unused))
--# define __printf__(s,f)  __attribute__((format (printf, s, f)))
-+# define ctags_attr_unused  __attribute__((unused))
-+# define ctags_attr_printf(s,f)  __attribute__((format (printf, s, f)))
- #else
--# define __unused__
--# define __printf__(s,f)
-+# define ctags_attr_unused
-+# define ctags_attr_printf(s,f)
- #endif
- 
- /*
-diff -ur ctags-5.8.orig/lregex.c ctags-5.8/lregex.c
---- ctags-5.8.orig/lregex.c	2023-01-29 21:39:39.082029568 +0100
-+++ ctags-5.8/lregex.c	2023-01-29 21:56:52.985628533 +0100
-@@ -538,11 +538,11 @@
- #endif  /* HAVE_REGEX */
- 
- extern void addTagRegex (
--		const langType language __unused__,
--		const char* const regex __unused__,
--		const char* const name __unused__,
--		const char* const kinds __unused__,
--		const char* const flags __unused__)
-+		const langType language ctags_attr_unused,
-+		const char* const regex ctags_attr_unused,
-+		const char* const name ctags_attr_unused,
-+		const char* const kinds ctags_attr_unused,
-+		const char* const flags ctags_attr_unused)
- {
- #ifdef HAVE_REGEX
- 	Assert (regex != NULL);
-@@ -564,10 +564,10 @@
- }
- 
- extern void addCallbackRegex (
--		const langType language __unused__,
--		const char* const regex __unused__,
--		const char* const flags __unused__,
--		const regexCallback callback __unused__)
-+		const langType language ctags_attr_unused,
-+		const char* const regex ctags_attr_unused,
-+		const char* const flags ctags_attr_unused,
-+		const regexCallback callback ctags_attr_unused)
- {
- #ifdef HAVE_REGEX
- 	Assert (regex != NULL);
-@@ -581,7 +581,7 @@
- }
- 
- extern void addLanguageRegex (
--		const langType language __unused__, const char* const regex __unused__)
-+		const langType language ctags_attr_unused, const char* const regex ctags_attr_unused)
- {
- #ifdef HAVE_REGEX
- 	if (! regexBroken)
-@@ -602,7 +602,7 @@
- */
- 
- extern boolean processRegexOption (const char *const option,
--								   const char *const parameter __unused__)
-+								   const char *const parameter ctags_attr_unused)
- {
- 	boolean handled = FALSE;
- 	const char* const dash = strchr (option, '-');
-@@ -624,7 +624,7 @@
- 	return handled;
- }
- 
--extern void disableRegexKinds (const langType language __unused__)
-+extern void disableRegexKinds (const langType language ctags_attr_unused)
- {
- #ifdef HAVE_REGEX
- 	if (language <= SetUpper  &&  Sets [language].count > 0)
-@@ -639,8 +639,8 @@
- }
- 
- extern boolean enableRegexKind (
--		const langType language __unused__,
--		const int kind __unused__, const boolean mode __unused__)
-+		const langType language ctags_attr_unused,
-+		const int kind ctags_attr_unused, const boolean mode ctags_attr_unused)
- {
- 	boolean result = FALSE;
- #ifdef HAVE_REGEX
-@@ -660,7 +660,7 @@
- 	return result;
- }
- 
--extern void printRegexKinds (const langType language __unused__, boolean indent __unused__)
-+extern void printRegexKinds (const langType language ctags_attr_unused, boolean indent ctags_attr_unused)
- {
- #ifdef HAVE_REGEX
- 	if (language <= SetUpper  &&  Sets [language].count > 0)
-diff -ur ctags-5.8.orig/lua.c ctags-5.8/lua.c
---- ctags-5.8.orig/lua.c	2006-10-12 05:26:40.000000000 +0200
-+++ ctags-5.8/lua.c	2023-01-29 21:56:09.113576927 +0100
-@@ -37,7 +37,7 @@
- */
- 
- /* for debugging purposes */
--static void __unused__ print_string (char *p, char *q)
-+static void ctags_attr_unused print_string (char *p, char *q)
- {
- 	for ( ; p != q; p++)
- 		fprintf (errout, "%c", *p);
-diff -ur ctags-5.8.orig/main.c ctags-5.8/main.c
---- ctags-5.8.orig/main.c	2007-06-07 06:35:21.000000000 +0200
-+++ ctags-5.8/main.c	2023-01-29 21:56:29.099660063 +0100
-@@ -522,7 +522,7 @@
-  *		Start up code
-  */
- 
--extern int main (int __unused__ argc, char **argv)
-+extern int main (int ctags_attr_unused argc, char **argv)
- {
- 	cookedArgs *args;
- #ifdef VMS
-diff -ur ctags-5.8.orig/options.c ctags-5.8/options.c
---- ctags-5.8.orig/options.c	2007-09-05 04:00:44.000000000 +0200
-+++ ctags-5.8/options.c	2023-01-29 21:55:59.927178263 +0100
-@@ -730,7 +730,7 @@
- }
- 
- static void processExcludeOption (
--		const char *const option __unused__, const char *const parameter)
-+		const char *const option ctags_attr_unused, const char *const parameter)
- {
- 	const char *const fileName = parameter + 1;
- 	if (parameter [0] == '\0')
-@@ -867,7 +867,7 @@
- }
- 
- static void processFilterTerminatorOption (
--		const char *const option __unused__, const char *const parameter)
-+		const char *const option ctags_attr_unused, const char *const parameter)
- {
- 	freeString (&Option.filterTerminator);
- 	Option.filterTerminator = stringCopy (parameter);
-@@ -930,8 +930,8 @@
- }
- 
- static void processHelpOption (
--		const char *const option __unused__,
--		const char *const parameter __unused__)
-+		const char *const option ctags_attr_unused,
-+		const char *const parameter ctags_attr_unused)
- {
- 	printProgramIdentification ();
- 	putchar ('\n');
-@@ -1139,8 +1139,8 @@
- }
- 
- static void processLicenseOption (
--		const char *const option __unused__,
--		const char *const parameter __unused__)
-+		const char *const option ctags_attr_unused,
-+		const char *const parameter ctags_attr_unused)
- {
- 	printProgramIdentification ();
- 	puts ("");
-@@ -1166,8 +1166,8 @@
- }
- 
- static void processListMapsOption (
--		const char *const __unused__ option,
--		const char *const __unused__ parameter)
-+		const char *const ctags_attr_unused option,
-+		const char *const ctags_attr_unused parameter)
- {
- 	if (parameter [0] == '\0' || strcasecmp (parameter, "all") == 0)
- 	    printLanguageMaps (LANG_AUTO);
-@@ -1183,8 +1183,8 @@
- }
- 
- static void processListLanguagesOption (
--		const char *const option __unused__,
--		const char *const parameter __unused__)
-+		const char *const option ctags_attr_unused,
-+		const char *const parameter ctags_attr_unused)
- {
- 	printLanguageList ();
- 	exit (0);
-@@ -1358,8 +1358,8 @@
- }
- 
- static void processVersionOption (
--		const char *const option __unused__,
--		const char *const parameter __unused__)
-+		const char *const option ctags_attr_unused,
-+		const char *const parameter ctags_attr_unused)
- {
- 	printProgramIdentification ();
- 	exit (0);
-diff -ur ctags-5.8.orig/options.h ctags-5.8/options.h
---- ctags-5.8.orig/options.h	2007-09-05 04:00:44.000000000 +0200
-+++ ctags-5.8/options.h	2023-01-29 21:55:10.711944997 +0100
-@@ -122,7 +122,7 @@
- /*
- *   FUNCTION PROTOTYPES
- */
--extern void verbose (const char *const format, ...) __printf__ (1, 2);
-+extern void verbose (const char *const format, ...) ctags_attr_printf (1, 2);
- extern void freeList (stringList** const pString);
- extern void setDefaultTagFileName (void);
- extern void checkOptions (void);
-diff -ur ctags-5.8.orig/parse.c ctags-5.8/parse.c
---- ctags-5.8.orig/parse.c	2007-07-31 07:35:33.000000000 +0200
-+++ ctags-5.8/parse.c	2023-01-29 21:56:18.749962319 +0100
-@@ -376,7 +376,7 @@
- */
- 
- extern void processLanguageDefineOption (
--		const char *const option, const char *const parameter __unused__)
-+		const char *const option, const char *const parameter ctags_attr_unused)
- {
- #ifdef HAVE_REGEX
- 	if (parameter [0] == '\0')
-diff -ur ctags-5.8.orig/routines.c ctags-5.8/routines.c
---- ctags-5.8.orig/routines.c	2023-01-29 21:39:39.068696639 +0100
-+++ ctags-5.8/routines.c	2023-01-29 21:56:04.163721350 +0100
-@@ -526,7 +526,7 @@
- 
- #if ! defined (HAVE_STAT_ST_INO)
- 
--static void canonicalizePath (char *const path __unused__)
-+static void canonicalizePath (char *const path ctags_attr_unused)
- {
- #if defined (MSDOS_STYLE_PATH)
- 	char *p;
-diff -ur ctags-5.8.orig/routines.h ctags-5.8/routines.h
---- ctags-5.8.orig/routines.h	2007-06-07 06:35:21.000000000 +0200
-+++ ctags-5.8/routines.h	2023-01-29 21:55:18.851708213 +0100
-@@ -85,7 +85,7 @@
- extern void setExecutableName (const char *const path);
- extern const char *getExecutableName (void);
- extern const char *getExecutablePath (void);
--extern void error (const errorSelection selection, const char *const format, ...) __printf__ (2, 3);
-+extern void error (const errorSelection selection, const char *const format, ...) ctags_attr_printf (2, 3);
- 
- /* Memory allocation functions */
- #ifdef NEED_PROTO_MALLOC
diff --git a/branch.sh b/branch.sh
deleted file mode 100755
index 53abfa6..0000000
--- a/branch.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-set -e
-package=ctags
-svn=svn://svn.code.sf.net/p/ctags/code
-tag=ctags-5.8
-out=branch.diff
-
-d=$-
-filter() {
-	set -$d
-	# Excluding files which change version or were not in dist tarball
-	filterdiff \
-		-x 'NEWS' \
-		-x 'maintainer.mak' \
-		-x 'Test/*' \
-		-x 'website/*' \
-		| \
-	# remove revno's for smaller diffs
-	sed -e 's,^\([-+]\{3\} .*\)\t(revision [0-9]\+)$,\1,'
-}
-
-old=$svn/tags/$tag
-new=$svn/trunk
-echo >&2 "Running diff: $old -> $new"
-LC_ALL=C svn diff --old=$old --new=$new > $out.tmp
-revno=$(sed -ne 's,^[-+]\{3\} .*\t(revision \([0-9]\+\))$,\1,p' $out.tmp | sort -urn | head -n1)
-echo >&2 "Revision $revno"
-[ "$revno" -gt 0 ] || exit 1
-
-sed -i -e "1i# Revision $revno" $out.tmp
-filter < $out.tmp > $out.tmp2 && mv -f $out.{tmp2,tmp}
-
-if cmp -s $out{,.tmp}; then
-	echo >&2 "No new diffs..."
-	rm -f $out.tmp
-	exit 0
-fi
-mv -f $out{.tmp,}
-
-../md5 $package.spec
-../dropin $out
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 <iagorubio(at)users.sourceforge.net>
-+ **************************************************************************/
-+#include "general.h"
-+
-+#include <string.h> 
-+#include <ctype.h> 
-+
-+#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;
-       }
-     }
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/ctags.git/commitdiff/9f2d19dacabb6b21764c1b6846983744470c7243




More information about the pld-cvs-commit mailing list