Index: head/lang/p2c/Makefile =================================================================== --- head/lang/p2c/Makefile (revision 410086) +++ head/lang/p2c/Makefile (revision 410087) @@ -1,44 +1,48 @@ # Created by: jmz # $FreeBSD$ PORTNAME= p2c -PORTVERSION= 1.21a -PORTREVISION= 3 +PORTVERSION= 2.01 CATEGORIES= lang -MASTER_SITES= http://darkstar.ist.utl.pt/slackware/slackware_source/d/p2c/ \ - http://www.slackware.at/data/slackware-10.0/source/d/p2c/ -DISTFILES= p2c-1.21alpha2.tar.gz +MASTER_SITES= https://schneider.ncifcrf.gov/p2c/ MAINTAINER= ports@FreeBSD.org COMMENT= Pascal to C translator -BROKEN= unfetchable - LICENSE= GPLv2 -WRKSRC= ${WRKDIR}/p2c-1.21alpha-07.Dec.93/src +WRKSRC_SUBDIR= src USES= perl5 shebangfix SHEBANG_FILES= p2cc.perl perl_OLD_CMD= /bin/perl +USE_PERL5= run ALL_TARGET= all p2cc +pre-build: + @${RM} -f ${WRKSRC}/p2c.man.inst + +post-build: + @${LN} -sf p2c.man.inst ${WRKSRC}/p2c.1 + do-install: (cd ${WRKSRC} && ${INSTALL_PROGRAM} p2c \ ${STAGEDIR}${PREFIX}/bin) (cd ${WRKSRC} && ${INSTALL_SCRIPT} p2cc \ ${STAGEDIR}${PREFIX}/bin) (cd ${WRKSRC} && ${INSTALL_DATA} libp2c.a \ ${STAGEDIR}${PREFIX}/lib) @${MKDIR} ${STAGEDIR}${PREFIX}/include/p2c (cd ${WRKSRC} && ${INSTALL_DATA} p2c.h \ ${STAGEDIR}${PREFIX}/include/p2c) @${MKDIR} ${STAGEDIR}${PREFIX}/lib/p2c (cd ${WRKSRC} && ${INSTALL_DATA} sys.p2crc \ ${STAGEDIR}${PREFIX}/lib/p2c/p2crc) .for i in loc.p2crc system.imp system.m2 turbo.imp string.pas (cd ${WRKSRC} && ${INSTALL_DATA} ${i} \ ${STAGEDIR}${PREFIX}/lib/p2c) .endfor + (cd ${WRKSRC} && ${INSTALL_MAN} p2c.1 \ + ${STAGEDIR}${MANPREFIX}/man/man1) .include Index: head/lang/p2c/distinfo =================================================================== --- head/lang/p2c/distinfo (revision 410086) +++ head/lang/p2c/distinfo (revision 410087) @@ -1,2 +1,2 @@ -SHA256 (p2c-1.21alpha2.tar.gz) = 5e7874a46d6ac58b1d3ecc0409b5458733cbca8abb12e33d68b23a72910d5c29 -SIZE (p2c-1.21alpha2.tar.gz) = 423399 +SHA256 (p2c-2.01.tar.gz) = a05635e6b0b40bee9617771ba628deefae13369cd7d49bb880cc8590495fcf60 +SIZE (p2c-2.01.tar.gz) = 586605 Index: head/lang/p2c/files/patch-lex.c =================================================================== --- head/lang/p2c/files/patch-lex.c (revision 410086) +++ head/lang/p2c/files/patch-lex.c (nonexistent) @@ -1,74 +0,0 @@ ---- lex.c.orig -+++ lex.c -@@ -520,7 +520,7 @@ - if (outf != stdout) - printf("Translation aborted: Too many errors.\n"); - if (verbose) -- fprintf(logf, "Translation aborted: Too many errors.\n"); -+ fprintf(p2c_logf, "Translation aborted: Too many errors.\n"); - closelogfile(); - exit_failure(); - } -@@ -541,9 +541,9 @@ - printf("Translation aborted.\n"); - } - if (verbose) { -- fprintf(logf, "%s:%d:%d: %s\n", -+ fprintf(p2c_logf, "%s:%d:%d: %s\n", - infname, inf_lnum, outf_lnum, msg); -- fprintf(logf, "Translation aborted.\n"); -+ fprintf(p2c_logf, "Translation aborted.\n"); - } - closelogfile(); - exit_failure(); -@@ -562,7 +562,7 @@ - { - if (checkeatnote(msg)) { - if (verbose) -- fprintf(logf, "%s:%d:%d: Omitted warning: %s\n", -+ fprintf(p2c_logf, "%s:%d:%d: Omitted warning: %s\n", - infname, inf_lnum, outf_lnum, msg); - return; - } -@@ -577,7 +577,7 @@ - { - if (checkeatnote(msg)) { - if (verbose) -- fprintf(logf, "%s:%d:%d: Omitted internal error in %s: %s\n", -+ fprintf(p2c_logf, "%s:%d:%d: Omitted internal error in %s: %s\n", - infname, inf_lnum, outf_lnum, proc, msg); - return; - } -@@ -596,7 +596,7 @@ - { - if (blockkind == TOK_IMPORT || checkeatnote(msg)) { - if (verbose) -- fprintf(logf, "%s:%d:%d: Omitted note: %s\n", -+ fprintf(p2c_logf, "%s:%d:%d: Omitted note: %s\n", - infname, inf_lnum, outf_lnum, msg); - return; - } -@@ -612,12 +612,12 @@ - { - if (blockkind == TOK_IMPORT || checkeatnote(msg)) { - if (verbose) -- fprintf(logf, "%s:%d:%d: Omitted end-note: %s\n", -+ fprintf(p2c_logf, "%s:%d:%d: Omitted end-note: %s\n", - infname, inf_lnum, outf_lnum, msg); - return; - } - if (verbose) -- fprintf(logf, "%s:%d:%d: Recorded end-note: %s\n", -+ fprintf(p2c_logf, "%s:%d:%d: Recorded end-note: %s\n", - infname, inf_lnum, outf_lnum, msg); - (void) strlist_add(&endnotelist, msg); - } -@@ -1327,7 +1327,7 @@ - else - printf("Reading include file \"%s\"\n", fn); - if (verbose) -- fprintf(logf, "Reading include file \"%s\"\n", fn); -+ fprintf(p2c_logf, "Reading include file \"%s\"\n", fn); - if (expandincludes == 0) { - push_input_file(fp, fn, 2); - curtok = TOK_INCLUDE; Property changes on: head/lang/p2c/files/patch-lex.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/lang/p2c/files/patch-parse.c =================================================================== --- head/lang/p2c/files/patch-parse.c (revision 410086) +++ head/lang/p2c/files/patch-parse.c (nonexistent) @@ -1,31 +0,0 @@ ---- parse.c.orig -+++ parse.c -@@ -4392,7 +4392,7 @@ - long saveserial; - - if (verbose) -- fprintf(logf, "%s, %d/%d: Translating %s (in %s)\n", -+ fprintf(p2c_logf, "%s, %d/%d: Translating %s (in %s)\n", - infname, inf_lnum, outf_lnum, - curctx->name, curctx->ctx->name); - notephase = 1; -@@ -5477,8 +5477,8 @@ - if (!fp) { - if (need) - perror(infnbuf); -- if (logf) -- fprintf(logf, "(Unable to open search file \"%s\")\n", infnbuf); -+ if (p2c_logf) -+ fprintf(p2c_logf, "(Unable to open search file \"%s\")\n", infnbuf); - return 0; - } - flushcomments(NULL, -1, -1); -@@ -5515,7 +5515,7 @@ - else - printf("Reading import text for \"%s\"\n", mod->name); - if (verbose) -- fprintf(logf, "%s, %d/%d: Reading import text for \"%s\"\n", -+ fprintf(p2c_logf, "%s, %d/%d: Reading import text for \"%s\"\n", - infname, inf_lnum, outf_lnum, mod->name); - pushctx(mod); - gettok(); Property changes on: head/lang/p2c/files/patch-parse.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/lang/p2c/files/patch-comment.c =================================================================== --- head/lang/p2c/files/patch-comment.c (revision 410086) +++ head/lang/p2c/files/patch-comment.c (nonexistent) @@ -1,11 +0,0 @@ ---- comment.c.orig -+++ comment.c -@@ -299,7 +299,7 @@ - printf("\"%s\", line %d,%d: %s\n", infname, inf_lnum, outf_lnum, msg); - } - if (verbose) -- fprintf(logf, "%s:%d:%d: %s\n", infname, inf_lnum, outf_lnum, msg); -+ fprintf(p2c_logf, "%s:%d:%d: %s\n", infname, inf_lnum, outf_lnum, msg); - if (notephase == 2 || regression) - prefix = format_s("\004 p2c: %s:", infname); - else Property changes on: head/lang/p2c/files/patch-comment.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/lang/p2c/files/patch-out.c =================================================================== --- head/lang/p2c/files/patch-out.c (revision 410086) +++ head/lang/p2c/files/patch-out.c (nonexistent) @@ -1,11 +0,0 @@ ---- out.c.orig -+++ out.c -@@ -1194,7 +1194,7 @@ - " seconds, %ld tries on line %d [251]", alts, outf_lnum); - note(outbuf); - } else if (verbose) { -- fprintf(logf, "%s, %d/%d: Line breaker spent %ld tries\n", -+ fprintf(p2c_logf, "%s, %d/%d: Line breaker spent %ld tries\n", - infname, inf_lnum, outf_lnum, alts); - } - if (testinglinebreaker) Property changes on: head/lang/p2c/files/patch-out.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/lang/p2c/files/patch-Makefile =================================================================== --- head/lang/p2c/files/patch-Makefile (revision 410086) +++ head/lang/p2c/files/patch-Makefile (revision 410087) @@ -1,68 +1,68 @@ ---- Makefile.orig +--- Makefile.orig 2015-11-18 20:12:06 UTC +++ Makefile @@ -19,29 +19,30 @@ SHELL = /bin/sh # Directories (private version) -HOMEDIR = ../home -INCDIR = ../home/p2c -BINDIR = .. -LIBDIR = ../home -MANDIR = ../home -MANFILE = p2c.cat # human-readable manual (for cat.1) +#HOMEDIR = ../home +#INCDIR = ../home/p2c +#BINDIR = .. +#LIBDIR = ../home +#MANDIR = ../home +#MANFILE = p2c.cat # human-readable manual (for cat.1) #MANFILE = p2c.man.inst # uncompressed nroff source (for man.1) #MANFILE = p2c.man.Z # compressed nroff source (for man.1.Z) # Directories (public version) -#HOMEDIR = /usr/lib/p2c -#INCDIR = /usr/include/p2c -#BINDIR = /usr/bin -#LIBDIR = /usr/lib -#MANDIR = /usr/man/man1 -#MANFILE = p2c.man.inst +PREFIX ?= /usr/local +HOMEDIR = $(PREFIX)/lib/p2c +INCDIR = $(PREFIX)/include/p2c +BINDIR = $(PREFIX)/bin +LIBDIR = $(PREFIX)/lib +MANDIR = $(PREFIX)/man/man1 +MANFILE = p2c.man.inst # Compiler options -CC = cc # you may wish to use gcc here instead +CC ?= cc # you may wish to use gcc here instead OPT = # -O # uncomment this for optimization DEB = # -g # uncomment this for debugging - DEFS = # place other -D types of things here + DEFS = -DTEST_MALLOC # place other -D types of things here # TDS 2015nov18 -CFLAGS = $(OPT) $(DEB) $(DEFS) +CFLAGS += $(OPT) $(DEB) $(DEFS) LFLAGS = -@@ -64,9 +65,9 @@ +@@ -64,9 +65,9 @@ LIBSRCS = p2clib.c loc.p2clib.c LIBOBJS = p2clib.o loc.p2clib.o OTHERLIBOBJS = -ABSHOMEDIR = `cd $(HOMEDIR); pwd` -ABSINCDIR = `cd $(INCDIR); pwd` -ABSLIBDIR = `cd $(LIBDIR); pwd` +ABSHOMEDIR = $(HOMEDIR) +ABSINCDIR = $(INCDIR) +ABSLIBDIR = $(LIBDIR) MISCSRCS = makeproto.c PROTOS = p2c.proto p2c.hdrs -@@ -128,7 +129,6 @@ +@@ -128,7 +129,6 @@ p2cc: p2cc.perl sed -e "s;--HOMEDIR--;$(ABSHOMEDIR);" \ -e "s;--INCDIR--;$(ABSINCDIR);" \ -e "s;--LIBDIR--;$(ABSLIBDIR);" \ - -e "s;/bin/perl;`which perl`;" \ p2cc.perl >p2cc chmod a+x p2cc Index: head/lang/p2c/files/patch-loc.p2clib.c =================================================================== --- head/lang/p2c/files/patch-loc.p2clib.c (revision 410086) +++ head/lang/p2c/files/patch-loc.p2clib.c (revision 410087) @@ -1,45 +1,45 @@ ---- loc.p2clib.c.orig +--- loc.p2clib.c.orig 1993-12-08 05:36:53 UTC +++ loc.p2clib.c @@ -4,3 +4,42 @@ * the symbol LOCAL_INIT when you compile p2clib.c. */ +/* Some Turbo "unit crt" functions. */ + +#include +#include + +static int terminfo_initialized; +static char *cl, *ce; + +static void initcurs() +{ + if (terminfo_initialized) + return; + setupterm(0, fileno(stdout), 0); + ce = tgetstr("ce", 0); + cl = tgetstr("cl", 0); + terminfo_initialized = 1; +} + +void clreol() +{ + initcurs(); + if (ce) + tputs(ce, 1, putchar); +} + +void clrscr() +{ + initcurs(); + if (cl) + tputs(cl, 1, putchar); +} + +void delay(ms) +int ms; +{ + usleep(1000 * ms); +} + + Index: head/lang/p2c/files/patch-makeproto.c =================================================================== --- head/lang/p2c/files/patch-makeproto.c (revision 410086) +++ head/lang/p2c/files/patch-makeproto.c (revision 410087) @@ -1,19 +1,19 @@ ---- makeproto.c.orig +--- makeproto.c.orig 1993-12-08 05:36:53 UTC +++ makeproto.c @@ -7,6 +7,7 @@ #include +#include #include #include -@@ -157,7 +158,7 @@ +@@ -157,7 +158,7 @@ char **argv; char argdecls[MAXARGS][256], argnames[MAXARGS][80]; char *cp, *cp2, *cp3; int i, j, pos, len, thistab, numstars, whichf, nargs, incomment, errors = 0; - long li; + time_t li; int typetab = 15, argtab = 30, width = 80, usenames = 0, usemacros = 0; int useextern = 0, staticness = -1, hasheader = 0, useifdefs = 0; int stupid = 1, firstdecl; Index: head/lang/p2c/files/patch-p2clib.c =================================================================== --- head/lang/p2c/files/patch-p2clib.c (revision 410086) +++ head/lang/p2c/files/patch-p2clib.c (revision 410087) @@ -1,29 +1,29 @@ ---- p2clib.c.orig +--- p2clib.c.orig 1993-12-08 05:36:53 UTC +++ p2clib.c -@@ -890,7 +890,7 @@ +@@ -890,7 +890,7 @@ int *Day, *Month, *Year, *Hour, *Min, *S { #ifndef NO_TIME struct tm *tm; - long clock; + time_t clock; time(&clock); tm = localtime(&clock); -@@ -908,7 +908,7 @@ +@@ -908,7 +908,7 @@ int *Day, *Month, *Year, *Hour, *Min, *S Void VAXdate(s) char *s; { - long clock; + time_t clock; char *c; int i; static int where[] = {8, 9, 0, 4, 5, 6, 0, 20, 21, 22, 23}; -@@ -924,7 +924,7 @@ +@@ -924,7 +924,7 @@ char *s; Void VAXtime(s) char *s; { - long clock; + time_t clock; char *c; int i; Index: head/lang/p2c/files/patch-trans.c =================================================================== --- head/lang/p2c/files/patch-trans.c (revision 410086) +++ head/lang/p2c/files/patch-trans.c (revision 410087) @@ -1,82 +1,29 @@ ---- trans.c.orig +--- trans.c.orig 2015-10-02 17:52:53 UTC +++ trans.c -@@ -23,6 +23,8 @@ +@@ -23,6 +23,8 @@ the Free Software Foundation, Inc., 675 #include "trans.h" #include +#include +#include -@@ -575,7 +577,7 @@ +@@ -575,7 +577,7 @@ extern char *getenv PP((char *)); # endif #endif -Static long starting_time; +Static time_t starting_time; Static void openlogfile() { -@@ -588,17 +590,17 @@ - if (!name) - name = format_s("%s.log", codefname); - saveoldfile(name); -- logf = fopen(name, "w"); -- if (logf) { -- fprintf(logf, "\nTranslation of %s to %s by p2c %s\n", -+ p2c_logf = fopen(name, "w"); -+ if (p2c_logf) { -+ fprintf(p2c_logf, "\nTranslation of %s to %s by p2c %s\n", - infname, codefname, P2C_VERSION); -- fprintf(logf, "Translated"); -+ fprintf(p2c_logf, "Translated"); - uname = getenv("USER"); - if (uname) -- fprintf(logf, " by %s", uname); -+ fprintf(p2c_logf, " by %s", uname); - time(&starting_time); -- fprintf(logf, " on %s", ctime(&starting_time)); -- fprintf(logf, "\n\n"); -+ fprintf(p2c_logf, " on %s", ctime(&starting_time)); -+ fprintf(p2c_logf, "\n\n"); - } else { - perror(name); - verbose = 0; -@@ -608,20 +610,20 @@ +@@ -608,7 +610,7 @@ Static void openlogfile() void closelogfile() { - long ending_time; + time_t ending_time; -- if (logf) { -- fprintf(logf, "\n\n"); -+ if (p2c_logf) { -+ fprintf(p2c_logf, "\n\n"); - #if defined(unix) || defined(__unix) -- fprintf(logf, "Total memory used: %ld bytes.\n", (long)sbrk(0)); -+ fprintf(p2c_logf, "Total memory used: %ld bytes.\n", (long)sbrk(0)); - #endif - time(&ending_time); -- fprintf(logf, "Processed %d source lines in %ld:%ld seconds.\n", -+ fprintf(p2c_logf, "Processed %d source lines in %ld:%ld seconds.\n", - inf_ltotal, - (ending_time - starting_time) / 60, - (ending_time - starting_time) % 60); -- fprintf(logf, "\n\nTranslation completed on %s", ctime(&ending_time)); -- fclose(logf); -+ fprintf(p2c_logf, "\n\nTranslation completed on %s", ctime(&ending_time)); -+ fclose(p2c_logf); - } - } - -@@ -949,7 +951,7 @@ - setbuf(codef, NULL); /* for debugging */ - outf = codef; - outf_lnum = 1; -- logf = NULL; -+ p2c_logf = NULL; - if (verbose) - openlogfile(); - setup_complete = 0; + if (logfile) { + fprintf(logfile, "\n\n"); Index: head/lang/p2c/files/patch-trans.h =================================================================== --- head/lang/p2c/files/patch-trans.h (revision 410086) +++ head/lang/p2c/files/patch-trans.h (revision 410087) @@ -1,22 +1,13 @@ ---- trans.h.orig +--- trans.h.orig 2015-10-05 23:04:46 UTC +++ trans.h -@@ -1773,7 +1773,7 @@ - - extern char *infname, *outfname, *codefname, *hdrfname; - extern char *requested_module; --extern FILE *inf, *outf, *codef, *hdrf, *logf; -+extern FILE *inf, *outf, *codef, *hdrf, *p2c_logf; - extern short setup_complete, found_module; - extern short regression, verbose, conserve_mem; - extern int inf_lnum, inf_ltotal; -@@ -1861,8 +1861,10 @@ +@@ -1863,8 +1863,10 @@ extern Expr *new_array_size; /* Our library omits declarations for these functions! */ +#if !defined(__FreeBSD__) && !defined(__DragonFly__) int link PP( (char *, char *) ); int unlink PP( (char *) ); +#endif Index: head/lang/p2c/pkg-descr =================================================================== --- head/lang/p2c/pkg-descr (revision 410086) +++ head/lang/p2c/pkg-descr (revision 410087) @@ -1,21 +1,21 @@ -P2c is a tool for translating Pascal programs into C. The input -consists of a set of source files in any of the following Pascal -dialects: HP Pascal, Turbo/UCSD Pascal, DEC VAX Pascal, Oregon -Software Pascal/2, Macintosh Programmer's Workshop Pascal, -Sun/Berkeley Pascal, Texas Instruments Pascal, Apollo Domain Pascal. -Modula-2 syntax is also supported. Output is a set of .c and .h files -that comprise an equivalent program in any of several dialects of -C. Output code may be kept machine- and dialect independent, or it may -be targeted to a specific machine and compiler. Most reasonable Pascal -programs are converted into fully functional C which will compile and -run with no further modifications, although p2c sometimes chooses to -generate readable code at the expense of absolute generality. P2c -endeavors to insert notes and warning messages into the output code to -point out areas which may require human intervention. Output code is -arranged to be readable and efficient, and to make use of C idioms -wherever possible. The main goal of the translation is to produce C -files which are pleasant and "natural" enough to be acceptable as the -new source files for a program. In a pinch, p2c will also serve as an -ad hoc Pascal compiler. The p2cc script makes it easy to use p2c as a -compiler. +P2c is a tool for translating Pascal programs into C. The input consists +of a set of source files in any of the following Pascal dialects: HP +Pascal, Turbo/UCSD Pascal, DEC VAX Pascal, Oregon Software Pascal/2, +Macintosh Programmer's Workshop Pascal, Sun/Berkeley Pascal, Texas +Instruments Pascal, Apollo Domain Pascal. Modula-2 syntax is also +supported. Output is a set of .c and .h files that comprise an +equivalent program in any of several dialects of C. Output code may be +kept machine- and dialect independent, or it may be targeted to a +specific machine and compiler. Most reasonable Pascal programs are +converted into fully functional C which will compile and run with no +further modifications, although p2c sometimes chooses to generate +readable code at the expense of absolute generality. P2c endeavors to +insert notes and warning messages into the output code to point out +areas which may require human intervention. Output code is arranged to +be readable and efficient, and to make use of C idioms wherever +possible. The main goal of the translation is to produce C files which +are pleasant and "natural" enough to be acceptable as the new source +files for a program. In a pinch, p2c will also serve as an ad hoc Pascal +compiler. The p2cc script makes it easy to use p2c as a compiler. +WWW: https://schneider.ncifcrf.gov/p2c/ Index: head/lang/p2c/pkg-plist =================================================================== --- head/lang/p2c/pkg-plist (revision 410086) +++ head/lang/p2c/pkg-plist (revision 410087) @@ -1,10 +1,11 @@ bin/p2c bin/p2cc -lib/libp2c.a include/p2c/p2c.h -lib/p2c/p2crc +lib/libp2c.a lib/p2c/loc.p2crc +lib/p2c/p2crc +lib/p2c/string.pas lib/p2c/system.imp lib/p2c/system.m2 lib/p2c/turbo.imp -lib/p2c/string.pas +man/man1/p2c.1.gz