summaryrefslogtreecommitdiff
path: root/src/tools/entab/entab.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/entab/entab.c')
-rw-r--r--src/tools/entab/entab.c220
1 files changed, 0 insertions, 220 deletions
diff --git a/src/tools/entab/entab.c b/src/tools/entab/entab.c
deleted file mode 100644
index 4e7240ea42c..00000000000
--- a/src/tools/entab/entab.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-** entab.c - add tabs to a text file
-** by Bruce Momjian (root@candle.pha.pa.us)
-**
-** version 1.3
-**
-** tabsize = 4
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define NUL '\0'
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-void halt();
-
-extern char *optarg;
-extern int optind;
-
-int
-main(argc, argv)
-int argc;
-char **argv;
-{
- int tab_size = 8,
- min_spaces = 2,
- protect_quotes = FALSE,
- del_tabs = FALSE,
- clip_lines = FALSE,
- prv_spaces,
- col_in_tab,
- escaped,
- nxt_spaces;
- 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, "cdhqs:t:")) != -1)
- switch (ch)
- {
- case 'c':
- clip_lines = TRUE;
- break;
- case 'd':
- del_tabs = 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 '?':
- halt("USAGE: %s [ -cdqst ] [file ...]\n\
- -c (clip trailing whitespace)\n\
- -d (delete tabs)\n\
- -q (protect quotes)\n\
- -s minimum_spaces\n\
- -t tab_width\n",
- cp);
- }
-
- argv += optind;
- argc -= optind;
-
- do
- {
- if (argc < 1)
- in_file = stdin;
- else
- {
-#ifndef __CYGWIN__
- if ((in_file = fopen(*argv, "r")) == NULL)
-#else
- if ((in_file = fopen(*argv, "rb")) == NULL)
-#endif
- halt("PERROR: Can not open file %s\n", argv[0]);
- argv++;
- }
-
- escaped = FALSE;
-
- while (fgets(in_line, BUFSIZ, 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;
-
- while (*src != NUL)
- {
- col_in_tab++;
- if (quote_char == ' ' && (*src == ' ' || *src == '\t'))
- {
- if (*src == '\t')
- {
- prv_spaces += tab_size - col_in_tab + 1;
- col_in_tab = tab_size;
- }
- else
- prv_spaces++;
-
- if (col_in_tab == tab_size)
- {
- /*
- * Is the next character going to be a tab? Needed
- * to do tab replacement in current spot if next
- * char is going to be a tab, ignoring min_spaces
- */
- nxt_spaces = 0;
- while (1)
- {
- if (*(src + nxt_spaces + 1) == NUL ||
- (*(src + nxt_spaces + 1) != ' ' &&
- *(src + nxt_spaces + 1) != '\t'))
- break;
- if (*(src + nxt_spaces + 1) == ' ')
- ++nxt_spaces;
- if (*(src + nxt_spaces + 1) == '\t' ||
- nxt_spaces == tab_size)
- {
- nxt_spaces = tab_size;
- break;
- }
- }
- if ((prv_spaces >= min_spaces ||
- nxt_spaces == tab_size) &&
- del_tabs == FALSE)
- {
- *(dst++) = '\t';
- prv_spaces = 0;
- }
- else
- {
- for (; prv_spaces > 0; prv_spaces--)
- *(dst++) = ' ';
- }
- }
- }
- else
- {
- for (; prv_spaces > 0; prv_spaces--)
- *(dst++) = ' ';
- if (*src == '\t') /* only when in quote */
- col_in_tab = 0;
- if (*src == '\b')
- col_in_tab -= 2;
- if (escaped == FALSE && protect_quotes == TRUE)
- {
- if (*src == '\\')
- escaped = TRUE;
- if (*src == '"' || *src == '\'')
- if (quote_char == ' ')
- quote_char = *src;
- else if (*src == quote_char)
- quote_char = ' ';
- }
- else if (*src != '\r' && *src != '\n')
- escaped = FALSE;
-
- if ((*src == '\r' || *src == '\n') &&
- quote_char == ' ' &&
- clip_lines == TRUE &&
- escaped == FALSE)
- {
- while (dst > out_line &&
- (*(dst - 1) == ' ' || *(dst - 1) == '\t'))
- dst--;
- prv_spaces = 0;
- }
- *(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)
- {
- while (dst > out_line &&
- (*(dst - 1) == ' ' || *(dst - 1) == '\t'))
- dst--;
- prv_spaces = 0;
- }
- for (; prv_spaces > 0; prv_spaces--)
- *(dst++) = ' ';
- *dst = NUL;
- if (fputs(out_line, stdout) == EOF)
- halt("PERROR: Error writing output.\n");
- }
- } while (--argc > 0);
- return 0;
-}