Merge pull request #2691 from joelteon/cdecl-osx
Update cdecl to block-supporting version
This commit is contained in:
commit
ec1eadf5a0
@ -45,6 +45,7 @@
|
|||||||
iElectric = "Domen Kozar <domen@dev.si>";
|
iElectric = "Domen Kozar <domen@dev.si>";
|
||||||
iyzsong = "Song Wenwu <iyzsong@gmail.com>";
|
iyzsong = "Song Wenwu <iyzsong@gmail.com>";
|
||||||
jcumming = "Jack Cummings <jack@mudshark.org>";
|
jcumming = "Jack Cummings <jack@mudshark.org>";
|
||||||
|
joelteon = "Joel Taylor <me@joelt.io>";
|
||||||
jwiegley = "John Wiegley <johnw@newartisans.com>";
|
jwiegley = "John Wiegley <johnw@newartisans.com>";
|
||||||
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
|
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
|
||||||
ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>";
|
ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>";
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
--- a/cdecl.c 2009-07-07 13:20:37.000000000 +0200
|
|
||||||
+++ a/cdecl.c.new 2009-07-07 13:25:00.000000000 +0200
|
|
||||||
@@ -91,7 +91,7 @@
|
|
||||||
#ifdef USE_READLINE
|
|
||||||
# include <readline/readline.h>
|
|
||||||
/* prototypes for functions related to readline() */
|
|
||||||
- char * getline();
|
|
||||||
+ char * mygetline();
|
|
||||||
char ** attempt_completion(char *, int, int);
|
|
||||||
char * keyword_completion(char *, int);
|
|
||||||
char * command_completion(char *, int);
|
|
||||||
@@ -375,7 +375,7 @@
|
|
||||||
static char *line_read = NULL;
|
|
||||||
|
|
||||||
/* Read a string, and return a pointer to it. Returns NULL on EOF. */
|
|
||||||
-char * getline ()
|
|
||||||
+char * mygetline ()
|
|
||||||
{
|
|
||||||
/* If the buffer has already been allocated, return the memory
|
|
||||||
to the free pool. */
|
|
||||||
@@ -887,7 +887,7 @@
|
|
||||||
|
|
||||||
if (!quiet) (void) printf("Type `help' or `?' for help\n");
|
|
||||||
ret = 0;
|
|
||||||
- while ((line = getline())) {
|
|
||||||
+ while ((line = mygetline())) {
|
|
||||||
if (!strcmp(line, "quit") || !strcmp(line, "exit")) {
|
|
||||||
free(line);
|
|
||||||
return ret;
|
|
@ -1,12 +0,0 @@
|
|||||||
Index: cdecl-2.5/cdecl.c
|
|
||||||
===================================================================
|
|
||||||
--- cdecl-2.5.orig/cdecl.c
|
|
||||||
+++ cdecl-2.5/cdecl.c
|
|
||||||
@@ -204,6 +204,7 @@ int DebugFlag = 0; /* -d, output debugg
|
|
||||||
#define ANSI 4 /* combo not allowed anymore in ANSI compiler */
|
|
||||||
#define A ANSI
|
|
||||||
|
|
||||||
+extern char **completion_matches PARAMS((char *, rl_compentry_func_t *));
|
|
||||||
/* This is an lower left triangular array. If we needed */
|
|
||||||
/* to save 9 bytes, the "long" row can be removed. */
|
|
||||||
char crosscheck[9][9] = {
|
|
13
pkgs/development/tools/cdecl/cdecl-2.5-lex.patch
Normal file
13
pkgs/development/tools/cdecl/cdecl-2.5-lex.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 1643b74..8f1ae11 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -33,7 +33,7 @@ c++decl: cdgram.c cdlex.c cdecl.c
|
||||||
|
rm -f cdecl
|
||||||
|
|
||||||
|
cdlex.c: cdlex.l
|
||||||
|
- lex cdlex.l && mv lex.yy.c cdlex.c
|
||||||
|
+ flex cdlex.l && mv lex.yy.c cdlex.c
|
||||||
|
|
||||||
|
cdgram.c: cdgram.y
|
||||||
|
yacc cdgram.y && mv y.tab.c cdgram.c
|
@ -1,64 +0,0 @@
|
|||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index 9e85686..b8e6e02 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -15,13 +15,14 @@
|
|
||||||
#
|
|
||||||
# add -DUSE_READLINE To compile in support for the GNU readline library.
|
|
||||||
|
|
||||||
-CFLAGS= -s -O2 -DUSE_READLINE
|
|
||||||
+CFLAGS=-DUSE_READLINE
|
|
||||||
CC= gcc
|
|
||||||
-LIBS= -lreadline -ltermcap
|
|
||||||
+LIBS= -lreadline -lncursesw
|
|
||||||
ALLFILES= makefile cdgram.y cdlex.l cdecl.c cdecl.1 testset testset++
|
|
||||||
-BINDIR= /usr/bin
|
|
||||||
-MANDIR= /usr/man/man1
|
|
||||||
-CATDIR= /usr/man/cat1
|
|
||||||
+PREFIX?= /usr
|
|
||||||
+BINDIR= $(PREFIX)/bin
|
|
||||||
+MANDIR= $(PREFIX)/man/man1
|
|
||||||
+CATDIR= $(PREFIX)/man/cat1
|
|
||||||
INSTALL= install -c
|
|
||||||
INSTALL_DATA= install -c -m 644
|
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ c++decl: cdgram.c cdlex.c cdecl.c
|
|
||||||
rm -f cdecl
|
|
||||||
|
|
||||||
cdlex.c: cdlex.l
|
|
||||||
- lex cdlex.l && mv lex.yy.c cdlex.c
|
|
||||||
+ flex cdlex.l && mv lex.yy.c cdlex.c
|
|
||||||
|
|
||||||
cdgram.c: cdgram.y
|
|
||||||
yacc cdgram.y && mv y.tab.c cdgram.c
|
|
||||||
@@ -43,8 +44,10 @@ test:
|
|
||||||
./c++decl < testset++
|
|
||||||
|
|
||||||
install: cdecl
|
|
||||||
+ $(INSTALL) -d $(BINDIR)
|
|
||||||
$(INSTALL) cdecl $(BINDIR)
|
|
||||||
ln $(BINDIR)/cdecl $(BINDIR)/c++decl
|
|
||||||
+ $(INSTALL) -d $(MANDIR)
|
|
||||||
$(INSTALL_DATA) cdecl.1 $(MANDIR)
|
|
||||||
$(INSTALL_DATA) c++decl.1 $(MANDIR)
|
|
||||||
|
|
||||||
diff --git a/cdecl.c b/cdecl.c
|
|
||||||
index f03f01e..1fdde9f 100644
|
|
||||||
--- a/cdecl.c
|
|
||||||
+++ b/cdecl.c
|
|
||||||
@@ -67,6 +67,7 @@ char cdeclsccsid[] = "@(#)cdecl.c 2.5 1/15/96";
|
|
||||||
# include <stddef.h>
|
|
||||||
# include <string.h>
|
|
||||||
# include <stdarg.h>
|
|
||||||
+# include <errno.h>
|
|
||||||
#else
|
|
||||||
# ifndef NOVARARGS
|
|
||||||
# include <varargs.h>
|
|
||||||
@@ -124,7 +125,6 @@ char real_prompt[MAX_NAME+3];
|
|
||||||
|
|
||||||
#if __STDC__
|
|
||||||
char *ds(char *), *cat(char *, ...), *visible(int);
|
|
||||||
- int getopt(int,char **,char *);
|
|
||||||
int main(int, char **);
|
|
||||||
int yywrap(void);
|
|
||||||
int dostdin(void);
|
|
@ -1,22 +1,25 @@
|
|||||||
{stdenv, fetchurl, yacc, flex, readline, ncurses}:
|
{stdenv, fetchurl, yacc, flex, readline, ncurses, gnused}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "cdecl-2.5";
|
name = "cdecl-2.5";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = ftp://metalab.unc.edu/pub/linux/devel/lang/c/cdecl-2.5.tar.gz;
|
url = "http://cdecl.org/files/cdecl-blocks-2.5.tar.gz";
|
||||||
md5 = "29895dab52e85b2474a59449e07b7996";
|
md5 = "c1927e146975b1c7524cbaf07a7c10f8";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./cdecl-2.5-implicit-pointer.patch ./cdecl-2.5.patch ./cdecl-2.5-gentoo.patch ];
|
patches = [ ./cdecl-2.5-lex.patch ];
|
||||||
preBuild = "
|
preBuild = ''
|
||||||
makeFlags=\"PREFIX=$out\"
|
${gnused}/bin/sed 's/getline/cdecl_getline/g' -i cdecl.c;
|
||||||
";
|
makeFlagsArray=(CFLAGS="-DBSD -DUSE_READLINE -std=gnu89" LIBS=-lreadline);
|
||||||
|
makeFlags="$makeFlags PREFIX=$out BINDIR=$out/bin MANDIR=$out/man1 CATDIR=$out/cat1";
|
||||||
|
mkdir -p $out/bin;
|
||||||
|
'';
|
||||||
buildInputs = [yacc flex readline ncurses];
|
buildInputs = [yacc flex readline ncurses];
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Translator English -- C/C++ declarations";
|
description = "Translator English -- C/C++ declarations";
|
||||||
license = "Public Domain";
|
license = "Public Domain";
|
||||||
maintainers = with stdenv.lib.maintainers; [viric];
|
maintainers = with stdenv.lib.maintainers; [viric joelteon];
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
platforms = stdenv.lib.platforms.unix;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user