commit:     2ed2e1cfbabf9e75e2dfbc9341a152db254bc19e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 21 17:18:01 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Nov 21 17:19:20 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2ed2e1cf

app-editors/teco: More offerings to appease the gods of clang

Bump ebuild to EAPI 8 while at it.

Closes: https://bugs.gentoo.org/879041
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 app-editors/teco/files/teco-more-warnings.patch  | 149 +++++++++++++++++++++++
 app-editors/teco/files/teco-void-functions.patch |  20 +--
 app-editors/teco/teco-36_p19940820-r1.ebuild     |  59 +++++++++
 3 files changed, 219 insertions(+), 9 deletions(-)

diff --git a/app-editors/teco/files/teco-more-warnings.patch 
b/app-editors/teco/files/teco-more-warnings.patch
new file mode 100644
index 000000000000..dd072e6f97eb
--- /dev/null
+++ b/app-editors/teco/files/teco-more-warnings.patch
@@ -0,0 +1,149 @@
+https://bugs.gentoo.org/879041
+
+--- teco/te_defs.h
++++ teco/te_defs.h
+@@ -320,7 +320,72 @@
+ extern char mapch[], mapch_l[];         /* char mapping tables              */
+ extern unsigned char spec_chars[];      /* special character table          */
+ 
+-extern char skipto(), getcmdc(), getcmdc0();    /* routines that return chars 
*/
++extern void block_inter(int func);
++extern void crlf(void);
++extern void delete1(int nchars);
++extern void dly_free_blist(struct buffcell *p);
++extern void do_ctlp(void);
++extern void do_e(void);
++extern void do_f(void);
++extern void do_o(void);
++extern void do_window(int ref_flag);
++extern void exec_cmds1(void);
++extern void exec_cmdstr(void);
++extern void find_enditer(void);
++extern void free_blist(struct buffcell *p);
++extern void insert1(void);
++extern void insert2(int count);
++extern void kill_output(struct outfiledata *outptr);
++extern void make_buffer(struct qh *p);
++extern void movenchars(struct qp *from, struct qp *to, int n);
++extern void moveuntil(struct qp *from, struct qp *to, char c,
++                    int *n, int max, int trace);
++extern void panic(void);
++extern void pop_iteration(int arg);
++extern void retype_cmdstr(char c);
++extern void set_pointer(int pos, struct qp *ptr);
++extern void set_term_par(int lines, int cols);
++extern void set_var(int *arg);
++extern void setup_tty(int arg);
++extern void te_fx(void);
++extern void type_char(char c);
++extern void vt(int func);
++extern void window(int arg);
++extern void write_file(struct qp *wbuff, int nchars, int ffsw);
++extern char getcmdc(int trace);
++extern char getcmdc0(int trace);
++extern char gettty(void);
++extern char skipto(int arg);
++extern int backc(struct qp *arg);
++extern int build_string(struct qh *sbuff);
++extern int do_en(void);
++extern int do_eq(void);
++extern int do_eq1(char *shell);
++extern int do_fb(void);
++extern int do_glob(struct qh *gbuff);
++extern int do_nsearch(char arg);
++extern int do_search(int count);
++extern int end_search(int result);
++extern int fwdc(struct qp *arg);
++extern int fwdcx(struct qp *arg);
++extern int get_value(int d);
++extern int getqspec(int fors, char c);
++extern int gettty_nowait(void);
++extern int line_args(int d, struct qp *p);
++extern int lines(int arg);
++extern int peekcmdc(char arg);
++extern int read_cmdstr(void);
++extern int read_file(struct qp *rbuff, int *nchars, int endsw);
++extern int read_filename(int flag, char func);
++extern int read_stream(FILE *file, int *ff_found, struct qp *rbuff,
++                     int *nchars, int endsw, int crlf_sw, int ff_sw);
++extern int setup_search(void);
++extern int srch_cmp(void);
++extern int tgetent(char *bp, const char *name);
++extern int tgetnum(const char *id);
++extern int w_lines(int n, struct qp *ps, struct qp *pd);
++extern int w_setptr(int loc, struct qp *pp);
++extern int w_overflow(int wd);
+ 
+ extern FILE *eisw;                      /* indirect command file pointer    */
+ extern FILE *fopen();
+--- teco/te_exec2.c
++++ teco/te_exec2.c
+@@ -8,10 +8,15 @@
+ /* version for multiple buffers  04/19/89 11.29 */
+ 
+ #include "te_defs.h"
++#include <unistd.h>
+ #include <sys/wait.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ 
++/* these shouldn't be necessary, since we include unistd.h and sys/stat.h */
++extern int fchmod(int fd, mode_t mode);
++extern pid_t vfork(void);
++
+ void do_en_next(), set_var(), write_file(), write_stream();
+ void kill_output(), pop_iteration(), find_enditer(), find_endcond();
+ 
+--- teco/te_fxstub.c
++++ teco/te_fxstub.c
+@@ -10,7 +10,7 @@
+ 
+ #include "te_defs.h"
+ 
+-te_fx()
++void te_fx()
+ {
+     ERROR(E_IFC);
+ }
+--- teco/te_main.c
++++ teco/te_main.c
+@@ -46,6 +46,7 @@
+ 
+ void cleanup(), print_string(), save_args(), read_startup(), get_term_par();
+ 
++int
+ main(argc, argv)
+     int argc;           /* arg count */
+     char *argv[];       /* array of string pointers */
+--- teco/te_rdcmd.c
++++ teco/te_rdcmd.c
+@@ -7,6 +7,7 @@
+ #include "te_defs.h"
+ 
+ void retype_cmdstr(char c);
++int find_lasteol(void);
+ int ccount;             /* count of chars read in */
+ 
+ int read_cmdstr()
+--- teco/te_srch.c
++++ teco/te_srch.c
+@@ -156,7 +156,7 @@
+ /* routine to do N, _, E_ searches:  search, if search fails, then get  */
+ /* next page and continue                                               */
+ 
+-do_nsearch(arg)
++int do_nsearch(arg)
+     char arg;       /* arg is 'n', '_', or 'e' to define which search */
+     {
+     int scount;     /* search count */
+--- teco/te_utils.c
++++ teco/te_utils.c
+@@ -144,7 +144,7 @@
+     return(1);
+     }
+ 
+-fwdcx(arg)
++int fwdcx(arg)
+     struct qp *arg;
+     {
+     if ((*arg).c >= CELLSIZE-1)     /* test char count for max */

diff --git a/app-editors/teco/files/teco-void-functions.patch 
b/app-editors/teco/files/teco-void-functions.patch
index f8a1d7ad346e..ee08d1ace9ea 100644
--- a/app-editors/teco/files/teco-void-functions.patch
+++ b/app-editors/teco/files/teco-void-functions.patch
@@ -6,7 +6,7 @@ https://bugs.gentoo.org/729254
  #define SIGINTMASK 2
  #endif
  
-+void crlf(), type_char();
++void crlf(), type_char(char c);
 +
  int lf_sw;                                  /* nonzero: make up a LF 
following an entered CR */
  int ttyflags;                               /* flags for (stdin) file 
descriptor */
@@ -178,16 +178,18 @@ https://bugs.gentoo.org/729254
      register int icnt;
 --- teco-orig/te_main.c
 +++ teco/te_main.c
-@@ -44,6 +44,8 @@
+@@ -44,6 +44,10 @@
  
  #include "te_defs.h"
  
-+void cleanup(), print_string(), save_args(), read_startup(), get_term_par();
++void cleanup(), read_startup(), get_term_par();
++void print_string(int arg);
++void save_args(int argc, char *argv[], struct qh *q);
 +
  main(argc, argv)
      int argc;           /* arg count */
      char *argv[];       /* array of string pointers */
-@@ -103,6 +105,7 @@
+@@ -103,6 +107,7 @@
  
  /* reset screen state, keyboard state; remove open output files */
  
@@ -195,7 +197,7 @@ https://bugs.gentoo.org/729254
  cleanup()
      {
      window(WIN_OFF);            /* restore screen */
-@@ -115,6 +118,7 @@
+@@ -115,6 +120,7 @@
  /* print string for error message */
  /* argument is subscript of a qreg qh, prints text from that buffer */
  
@@ -203,7 +205,7 @@ https://bugs.gentoo.org/729254
  print_string(arg)
      int arg;
      {
-@@ -137,6 +141,7 @@
+@@ -137,6 +143,7 @@
  
  /* copy invocation command line to a text buffer */
  
@@ -211,7 +213,7 @@ https://bugs.gentoo.org/729254
  save_args(argc, argv, q)
      int argc;
      char *argv[];
-@@ -171,6 +176,7 @@
+@@ -171,6 +178,7 @@
  
  char startup_name[] = "/.tecorc";       /* name of startup file */
  
@@ -219,7 +221,7 @@ https://bugs.gentoo.org/729254
  read_startup()
      {
      char *hp, *getenv();
-@@ -192,6 +198,7 @@
+@@ -192,6 +200,7 @@
  
  /* routine to get terminal height and width from termcap */
  
@@ -233,7 +235,7 @@ https://bugs.gentoo.org/729254
  /* version for multiple buffers  04/13/89 10.22                             */
  #include "te_defs.h"
  
-+void retype_cmdstr();
++void retype_cmdstr(char c);
  int ccount;             /* count of chars read in */
  
  int read_cmdstr()

diff --git a/app-editors/teco/teco-36_p19940820-r1.ebuild 
b/app-editors/teco/teco-36_p19940820-r1.ebuild
new file mode 100644
index 000000000000..8372bb8b385a
--- /dev/null
+++ b/app-editors/teco/teco-36_p19940820-r1.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs flag-o-matic readme.gentoo-r1
+
+DESCRIPTION="Classic TECO editor, Predecessor to EMACS"
+HOMEPAGE="https://www.ibiblio.org/pub/linux/apps/editors/tty/ 
https://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/teco/";
+SRC_URI="https://www.ibiblio.org/pub/linux/apps/editors/tty/teco.tar.gz -> 
${P}.tar.gz
+       doc? ( https://dev.gentoo.org/~ulm/distfiles/tecodoc.tar.gz )"
+S="${WORKDIR}"
+
+LICENSE="freedist"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos 
~sparc-solaris ~x86-solaris"
+IUSE="doc"
+
+RDEPEND="sys-libs/ncurses:0="
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-double-free.patch
+       "${FILESDIR}"/${PN}-gcc4.patch
+       "${FILESDIR}"/${PN}-warnings.patch
+       "${FILESDIR}"/${PN}-no-common.patch
+       "${FILESDIR}"/${PN}-void-functions.patch
+       "${FILESDIR}"/${PN}-more-warnings.patch
+)
+
+src_prepare() {
+       default
+       local pkg_config=$("$(tc-getPKG_CONFIG)" --libs ncurses)
+       sed -i -e "s:\$(CC):& \$(LDFLAGS):;s:-ltermcap:${pkg_config}:" \
+               Makefile || die
+}
+
+src_compile() {
+       append-flags -ansi
+       append-cppflags -D_POSIX_SOURCE
+       emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}"
+}
+
+src_install() {
+       dobin te
+       doman te.1
+       dodoc sample.tecorc sample.tecorc2 READ.ME
+       use doc && dodoc doc/*
+
+       local DOC_CONTENTS="The TECO binary is called te.
+               \nSample configurations and documentation are available
+               in /usr/share/doc/${PF}/."
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       readme.gentoo_print_elog
+}

Reply via email to