Merge pull request #2691 from joelteon/cdecl-osx

Update cdecl to block-supporting version
This commit is contained in:
Austin Seipp 2014-06-03 20:37:30 -05:00
commit ec1eadf5a0
6 changed files with 26 additions and 114 deletions

View File

@ -45,6 +45,7 @@
iElectric = "Domen Kozar <domen@dev.si>";
iyzsong = "Song Wenwu <iyzsong@gmail.com>";
jcumming = "Jack Cummings <jack@mudshark.org>";
joelteon = "Joel Taylor <me@joelt.io>";
jwiegley = "John Wiegley <johnw@newartisans.com>";
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>";

View File

@ -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;

View File

@ -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] = {

View 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

View File

@ -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);

View File

@ -1,22 +1,25 @@
{stdenv, fetchurl, yacc, flex, readline, ncurses}:
{stdenv, fetchurl, yacc, flex, readline, ncurses, gnused}:
stdenv.mkDerivation {
name = "cdecl-2.5";
src = fetchurl {
url = ftp://metalab.unc.edu/pub/linux/devel/lang/c/cdecl-2.5.tar.gz;
md5 = "29895dab52e85b2474a59449e07b7996";
url = "http://cdecl.org/files/cdecl-blocks-2.5.tar.gz";
md5 = "c1927e146975b1c7524cbaf07a7c10f8";
};
patches = [ ./cdecl-2.5-implicit-pointer.patch ./cdecl-2.5.patch ./cdecl-2.5-gentoo.patch ];
preBuild = "
makeFlags=\"PREFIX=$out\"
";
patches = [ ./cdecl-2.5-lex.patch ];
preBuild = ''
${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];
meta = {
description = "Translator English -- C/C++ declarations";
license = "Public Domain";
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [viric joelteon];
platforms = stdenv.lib.platforms.unix;
};
}