]> granicus.if.org Git - postgresql/commitdiff
Remove entab and associated detritus.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 21 Jun 2017 19:46:20 +0000 (15:46 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 21 Jun 2017 19:46:39 +0000 (15:46 -0400)
We don't need this anymore, because pg_bsd_indent has been taught to
follow the same tab-vs-space rules that entab used to enforce.

Discussion: https://postgr.es/m/E1dAmxK-0006EE-1r@gemulon.postgresql.org
Discussion: https://postgr.es/m/30527.1495162840@sss.pgh.pa.us

src/tools/entab/.gitignore [deleted file]
src/tools/entab/Makefile [deleted file]
src/tools/entab/entab.1 [deleted file]
src/tools/entab/entab.c [deleted file]
src/tools/pgindent/README
src/tools/pgindent/pgindent
src/tools/pgindent/pgindent.man

diff --git a/src/tools/entab/.gitignore b/src/tools/entab/.gitignore
deleted file mode 100644 (file)
index 94db843..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/entab
diff --git a/src/tools/entab/Makefile b/src/tools/entab/Makefile
deleted file mode 100644 (file)
index f02730d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Makefile
-#
-#
-TARGET = entab
-BINDIR = /usr/local/bin
-XFLAGS =
-CFLAGS = -O $(XFLAGS)
-LIBS =
-
-$(TARGET): entab.o
-       $(CC) -o $@ $(CFLAGS) $^ $(LIBS)
-
-clean:
-       rm -f *.o $(TARGET) log core
-
-install: $(TARGET)
-       install -s $(TARGET) $(BINDIR)
-       rm -f $(BINDIR)/detab
-       ln $(BINDIR)/$(TARGET) $(BINDIR)/detab
diff --git a/src/tools/entab/entab.1 b/src/tools/entab/entab.1
deleted file mode 100644 (file)
index bb3dcf4..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-.TH ENTAB 1 local
-.SH NAME
-entab - tab processor
-.SH SYNOPSIS
-.nf
-entab [-cdq] [-s min_spaces] [-t tab_width] [file ... ]
-detab [-cq]  [-s min_spaces] [-t tab_width] [file ... ]
-.fi
-.SH DESCRIPTION
-Entab is a program designed to selectively add or remove tabs
-from a file based on user-supplied criteria.
-In default mode, entab prints the specified files to standard output
-with the optimal mix of tabs and spaces.
-Tabs default to every 8 characters, and tabs are used only when they
-can replace more than one space, unlike 'col' which uses tabs wherever
-possible.
-.LP
-The options are:
-.in +0.5i
-.nf
--c     Clip trailing tabs and spaces from each line.
--d     Delete all tabs from output
--q     Protect single and double-quoted strings from tab replacement.
-       (This option is useful when operating on source code.
-        Line continuation with back-slashes is also understood.)
--s     Minimum spaces needed to replace with a tab (default = 2).
--t     Number of spaces in a tab stop (default = 8).
-.fi
-.in -0.5i
-Detab is equivalent to entab -d.
-.SH NOTES
-Entab has improved tab handling for certain situations.
-It only replaces tabs if there is a user-defined number of spaces
-to be saved.
-Other tab replacement programs put tabs wherever
-possible, so if two words are separated by one space, and that
-space is on a tab stop, a tab is inserted.
-Then, when words are added to the left, the words are shifted over,
-leaving a large gap.
-The quote-protection option allows tab replacement without
-quoted strings being changed.
-Useful when strings in source code will not have the same tab stops
-when executed in the program.
-.LP
-To change a text file created on a system with one size of tab
-stop to display properly on a device with different tab setting,
-use detab (or entab -d) to remove tabs from the file with the
-tab size set to the original tab size, then use entab to re-tab
-the file with the new tab size.
-.SH AUTHOR
-Bruce Momjian, bruce@momjian.us
diff --git a/src/tools/entab/entab.c b/src/tools/entab/entab.c
deleted file mode 100644 (file)
index 2e74cf4..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * entab.c - adds/removes tabs from text files
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <unistd.h>
-
-#if defined(WIN32) || defined(__CYGWIN__)
-#define PG_BINARY_R "rb"
-#else
-#define PG_BINARY_R "r"
-#endif
-
-#define NUL            '\0'
-
-#ifndef TRUE
-#define TRUE   1
-#endif
-#ifndef FALSE
-#define FALSE  0
-#endif
-
-extern char *optarg;
-extern int     optind;
-
-
-static void
-output_accumulated_spaces(int *prv_spaces, char **dst)
-{
-       for (; *prv_spaces > 0; (*prv_spaces)--)
-               *((*dst)++) = ' ';
-}
-
-
-static void
-trim_trailing_whitespace(int *prv_spaces, char **dst, char *out_line)
-{
-       while (*dst > out_line &&
-                  (*((*dst) - 1) == ' ' || *((*dst) - 1) == '\t'))
-               (*dst)--;
-       *prv_spaces = 0;
-}
-
-
-int
-main(int argc, char **argv)
-{
-       int                     tab_size = 8,
-                               min_spaces = 2,
-                               only_comment_periods = FALSE,
-                               protect_quotes = FALSE,
-                               protect_leading_whitespace = FALSE,
-                               del_tabs = FALSE,
-                               clip_lines = FALSE,
-                               in_comment = FALSE,
-                               was_period = FALSE,
-                               prv_spaces,
-                               col_in_tab,
-                               escaped,
-                               nxt_spaces,
-                               in_leading_whitespace;
-       char            in_line[BUFSIZ],
-                               out_line[BUFSIZ],
-                          *src,
-                          *dst,
-                               quote_char,
-                          *cp;
-       int                     ch;
-       FILE       *in_file;
-
-       if ((cp = strrchr(argv[0], '/')) != NULL)
-               ++cp;
-       else
-               cp = argv[0];
-       if (strcmp(cp, "detab") == 0)
-               del_tabs = 1;
-
-       while ((ch = getopt(argc, argv, "cdhlmqs:t:")) != -1)
-               switch (ch)
-               {
-                       case 'c':
-                               clip_lines = TRUE;
-                               break;
-                       case 'd':
-                               del_tabs = TRUE;
-                               break;
-                       case 'l':
-                               protect_leading_whitespace = TRUE;
-                               break;
-                       case 'm':
-                               /* only process text followed by periods in C comments */
-                               only_comment_periods = TRUE;
-                               break;
-                       case 'q':
-                               protect_quotes = TRUE;
-                               break;
-                       case 's':
-                               min_spaces = atoi(optarg);
-                               break;
-                       case 't':
-                               tab_size = atoi(optarg);
-                               break;
-                       case 'h':
-                       case '?':
-                               fprintf(stderr, "USAGE: %s [ -cdqst ] [file ...]\n\
-       -c (clip trailing whitespace)\n\
-       -d (delete tabs)\n\
-       -l (protect leading whitespace)\n\
-       -m (only C comment periods)\n\
-       -q (protect quotes)\n\
-       -s minimum_spaces\n\
-       -t tab_width\n",
-                                               cp);
-                               exit(0);
-               }
-
-       argv += optind;
-       argc -= optind;
-
-       /* process arguments */
-       do
-       {
-               if (argc < 1)
-                       in_file = stdin;
-               else
-               {
-                       if ((in_file = fopen(*argv, PG_BINARY_R)) == NULL)
-                       {
-                               fprintf(stderr, "Cannot open file %s: %s\n", argv[0], strerror(errno));
-                               exit(1);
-                       }
-                       argv++;
-               }
-
-               escaped = FALSE;
-
-               /* process lines */
-               while (fgets(in_line, sizeof(in_line), in_file) != NULL)
-               {
-                       col_in_tab = 0;
-                       prv_spaces = 0;
-                       src = in_line;          /* points to current processed char */
-                       dst = out_line;         /* points to next unallocated char */
-                       if (escaped == FALSE)
-                               quote_char = ' ';
-                       escaped = FALSE;
-                       in_leading_whitespace = TRUE;
-
-                       /* process line */
-                       while (*src != NUL)
-                       {
-                               col_in_tab++;
-
-                               /* look backward so we handle slash-star-slash properly */
-                               if (!in_comment && src > in_line &&
-                                       *(src - 1) == '/' && *src == '*')
-                                       in_comment = TRUE;
-                               else if (in_comment && *src == '*' && *(src + 1) == '/')
-                                       in_comment = FALSE;
-
-                               /* Is this a potential space/tab replacement? */
-                               if ((!only_comment_periods || (in_comment && was_period)) &&
-                                       (!protect_leading_whitespace || !in_leading_whitespace) &&
-                                       quote_char == ' ' && (*src == ' ' || *src == '\t'))
-                               {
-                                       if (*src == '\t')
-                                       {
-                                               prv_spaces += tab_size - col_in_tab + 1;
-                                               col_in_tab = tab_size;
-                                       }
-                                       else
-                                               prv_spaces++;
-
-                                       /* Are we at a tab stop? */
-                                       if (col_in_tab == tab_size)
-                                       {
-                                               /*
-                                                * Is the next character going to be a tab?  We do tab
-                                                * replacement in the current spot if the next char is
-                                                * going to be a tab and ignore min_spaces.
-                                                */
-                                               nxt_spaces = 0;
-                                               while (1)
-                                               {
-                                                       /* Have we reached non-whitespace? */
-                                                       if (*(src + nxt_spaces + 1) == NUL ||
-                                                               (*(src + nxt_spaces + 1) != ' ' &&
-                                                                *(src + nxt_spaces + 1) != '\t'))
-                                                               break;
-                                                       /* count spaces */
-                                                       if (*(src + nxt_spaces + 1) == ' ')
-                                                               ++nxt_spaces;
-                                                       /* Have we found a forward tab? */
-                                                       if (*(src + nxt_spaces + 1) == '\t' ||
-                                                               nxt_spaces == tab_size)
-                                                       {
-                                                               nxt_spaces = tab_size;
-                                                               break;
-                                                       }
-                                               }
-                                               /* Do tab replacment for spaces? */
-                                               if ((prv_spaces >= min_spaces ||
-                                                        nxt_spaces == tab_size) &&
-                                                       del_tabs == FALSE)
-                                               {
-                                                       *(dst++) = '\t';
-                                                       prv_spaces = 0;
-                                               }
-                                               else
-                                                       output_accumulated_spaces(&prv_spaces, &dst);
-                                       }
-                               }
-                               /* Not a potential space/tab replacement */
-                               else
-                               {
-                                       /* allow leading stars in comments */
-                                       if (in_leading_whitespace && *src != ' ' && *src != '\t' &&
-                                               (!in_comment || *src != '*'))
-                                               in_leading_whitespace = FALSE;
-                                       was_period = (*src == '.');
-                                       /* output accumulated spaces */
-                                       output_accumulated_spaces(&prv_spaces, &dst);
-                                       /* This can only happen in a quote. */
-                                       if (*src == '\t')
-                                               col_in_tab = 0;
-                                       /* visual backspace? */
-                                       if (*src == '\b')
-                                               col_in_tab -= 2;
-                                       /* Do we process quotes? */
-                                       if (escaped == FALSE && protect_quotes == TRUE)
-                                       {
-                                               if (*src == '\\')
-                                                       escaped = TRUE;
-                                               /* Is this a quote character? */
-                                               if (*src == '"' || *src == '\'')
-                                               {
-                                                       /* toggle quote mode */
-                                                       if (quote_char == ' ')
-                                                               quote_char = *src;
-                                                       else if (*src == quote_char)
-                                                               quote_char = ' ';
-                                               }
-                                       }
-                                       /* newlines/CRs do not terminate escapes */
-                                       else if (*src != '\r' && *src != '\n')
-                                               escaped = FALSE;
-
-                                       /* reached newline/CR;  clip line? */
-                                       if ((*src == '\r' || *src == '\n') &&
-                                               clip_lines == TRUE &&
-                                               quote_char == ' ' &&
-                                               escaped == FALSE)
-                                               trim_trailing_whitespace(&prv_spaces, &dst, out_line);
-                                       *(dst++) = *src;
-                               }
-                               col_in_tab %= tab_size;
-                               ++src;
-                       }
-                       /* for cases where the last line of file has no newline */
-                       if (clip_lines == TRUE && escaped == FALSE)
-                               trim_trailing_whitespace(&prv_spaces, &dst, out_line);
-                       output_accumulated_spaces(&prv_spaces, &dst);
-                       *dst = NUL;
-
-                       if (fputs(out_line, stdout) == EOF)
-                       {
-                               fprintf(stderr, "Cannot write to output file %s: %s\n", argv[0], strerror(errno));
-                               exit(1);
-                       }
-               }
-       } while (--argc > 0);
-       return 0;
-}
index ec8d35b579aca01b8ce982bca5dccf617ca89687..ae425da285e92bac0dc535a8cca81f7bda10861c 100644 (file)
@@ -14,9 +14,7 @@ PREREQUISITES:
    git clone https://git.postgresql.org/git/pg_bsd_indent.git
    then follow the directions in README.pg_bsd_indent therein.
 
-2) Install entab (src/tools/entab/).
-
-3) Install perltidy.  Please be sure it is v20090616 (older and newer
+2) Install perltidy.  Please be sure it is v20090616 (older and newer
    versions make different formatting choices, and we want consistency).  See
    https://sourceforge.net/projects/perltidy/files/perltidy/perltidy-20090616/
 
index afba971f81838d412717118db8501017b948b5b9..104f4c253beedbe52c4268d1a924cd8878540666 100755 (executable)
@@ -38,9 +38,8 @@ run_build($code_base) if ($build);
 $typedefs_file ||= shift if @ARGV && $ARGV[0] !~ /\.[ch]$/;
 $typedefs_file ||= $ENV{PGTYPEDEFS};
 
-# build mode sets PGINDENT and PGENTAB
+# build mode sets PGINDENT
 $indent ||= $ENV{PGINDENT} || $ENV{INDENT} || "pg_bsd_indent";
-my $entab = $ENV{PGENTAB} || "entab";
 
 # no non-option arguments given. so do everything in the current directory
 $code_base ||= '.' unless @ARGV;
@@ -57,16 +56,6 @@ my $filtered_typedefs_fh;
 
 sub check_indent
 {
-       system("$entab < $devnull");
-       if ($?)
-       {
-               print STDERR
-"Go to the src/tools/entab directory and do 'make' and 'make install'.\n",
-                 "This will put the 'entab' command in your path.\n",
-                 "Then run $0 again.\n";
-               exit 1;
-       }
-
        system("$indent -? < $devnull > $devnull 2>&1");
        if ($? >> 8 != 1)
        {
@@ -288,46 +277,6 @@ sub run_indent
 
 }
 
-# XXX Ideally we'd implement entab/detab in pure perl.
-
-sub detab
-{
-       my $source = shift;
-
-       my $tmp_fh = new File::Temp(TEMPLATE => "pgdetXXXXX");
-       print $tmp_fh $source;
-       $tmp_fh->close();
-
-       open(my $entab, '-|', "$entab -d -t4 -qc " . $tmp_fh->filename);
-       local ($/) = undef;
-       $source = <$entab>;
-       close($entab);
-
-       return $source;
-}
-
-
-sub entab
-{
-       my $source = shift;
-
-       my $tmp_fh = new File::Temp(TEMPLATE => "pgentXXXXX");
-       print $tmp_fh $source;
-       $tmp_fh->close();
-
-       open(
-               my $entab,
-               '-|',
-               "$entab -d -t8 -qc "
-                 . $tmp_fh->filename
-                 . " | $entab -t4 -qc | $entab -d -t4 -m");
-       local ($/) = undef;
-       $source = <$entab>;
-       close($entab);
-
-       return $source;
-}
-
 
 # for development diagnostics
 sub diff
@@ -395,11 +344,6 @@ sub run_build
 
        $ENV{PGINDENT} = abs_path('pg_bsd_indent');
 
-       chdir "../../entab";
-       system("make > $devnull 2>&1");
-
-       $ENV{PGENTAB} = abs_path('entab');
-
        chdir $save_dir;
 }
 
@@ -422,8 +366,6 @@ sub build_clean
 
        system("rm -rf src/tools/pgindent/pg_bsd_indent");
        system("rm -f src/tools/pgindent/tmp_typedefs.list");
-
-       system("git clean -q -f src/tools/entab");
 }
 
 
index bff24dc4c51be5c86b8e1639a21f39df2362529e..1c5aedda356aff91e2f115acec00482e94702119 100644 (file)
@@ -19,9 +19,6 @@ command line option --indent:
 
        pgindent --indent=/opt/extras/bsdindent
 
-Similarly, the entab program can be specified using the PGENTAB environment
-variable, or using the --entab command line option.
-
 pgindent also needs a file containing a list of typedefs. This can be
 specified using the PGTYPEDEFS environment variable, or via the command line
 --typedefs option. If neither is used, it will look for it within the