summaryrefslogtreecommitdiff
path: root/Build/source/texk/makeindexk/scanst.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/makeindexk/scanst.c')
-rw-r--r--Build/source/texk/makeindexk/scanst.c593
1 files changed, 0 insertions, 593 deletions
diff --git a/Build/source/texk/makeindexk/scanst.c b/Build/source/texk/makeindexk/scanst.c
deleted file mode 100644
index a91fbce042d..00000000000
--- a/Build/source/texk/makeindexk/scanst.c
+++ /dev/null
@@ -1,593 +0,0 @@
-/*
- *
- * This file is part of
- * MakeIndex - A formatter and format independent index processor
- *
- * Copyright (C) 1998-2011 by the TeX Live project.
- * Copyright (C) 1989 by Chen & Harrison International Systems, Inc.
- * Copyright (C) 1988 by Olivetti Research Center
- * Copyright (C) 1987 by Regents of the University of California
- *
- * Author:
- * Pehong Chen
- * Chen & Harrison International Systems, Inc.
- * Palo Alto, California
- * USA
- *
- * Contributors:
- * Please refer to the CONTRIB file that comes with this release
- * for a list of people who have contributed to this and/or previous
- * release(s) of MakeIndex.
- *
- * All rights reserved by the copyright holders. See the copyright
- * notice distributed with this software for a complete description of
- * the conditions under which it is made available.
- *
- */
-
-#include "mkind.h"
-#include "scanst.h"
-
-static int sty_lc = 0; /* line count */
-static int sty_tc = 0; /* total count */
-static int sty_ec = 0; /* error count */
-
-char idx_keyword[ARRAY_MAX] = IDX_KEYWORD;
-char idx_aopen = IDX_AOPEN;
-char idx_aclose = IDX_ACLOSE;
-char idx_level = IDX_LEVEL;
-char idx_ropen = IDX_ROPEN;
-char idx_rclose = IDX_RCLOSE;
-char idx_quote = IDX_QUOTE;
-char idx_actual = IDX_ACTUAL;
-char idx_encap = IDX_ENCAP;
-char idx_escape = IDX_ESCAPE;
-
-char preamble[ARRAY_MAX] = PREAMBLE_DEF;
-char postamble[ARRAY_MAX] = POSTAMBLE_DEF;
-int prelen = PREAMBLE_LEN;
-int postlen = POSTAMBLE_LEN;
-
-char setpage_open[ARRAY_MAX] = SETPAGEOPEN_DEF;
-char setpage_close[ARRAY_MAX] = SETPAGECLOSE_DEF;
-int setpagelen = SETPAGE_LEN;
-
-char group_skip[ARRAY_MAX] = GROUPSKIP_DEF;
-int skiplen = GROUPSKIP_LEN;
-
-int headings_flag = HEADINGSFLAG_DEF;
-char heading_pre[ARRAY_MAX] = HEADINGPRE_DEF;
-char heading_suf[ARRAY_MAX] = HEADINGSUF_DEF;
-int headprelen = HEADINGPRE_LEN;
-int headsuflen = HEADINGSUF_LEN;
-
-char symhead_pos[ARRAY_MAX] = SYMHEADPOS_DEF;
-char symhead_neg[ARRAY_MAX] = SYMHEADNEG_DEF;
-
-char numhead_pos[ARRAY_MAX] = NUMHEADPOS_DEF;
-char numhead_neg[ARRAY_MAX] = NUMHEADNEG_DEF;
-
-char item_r[FIELD_MAX][ARRAY_MAX] = {ITEM0_DEF, ITEM1_DEF, ITEM2_DEF};
-char item_u[FIELD_MAX][ARRAY_MAX] = {"", ITEM1_DEF, ITEM2_DEF};
-char item_x[FIELD_MAX][ARRAY_MAX] = {"", ITEM1_DEF, ITEM2_DEF};
-
-int ilen_r[FIELD_MAX] = {ITEM_LEN, ITEM_LEN, ITEM_LEN};
-int ilen_u[FIELD_MAX] = {0, ITEM_LEN, ITEM_LEN};
-int ilen_x[FIELD_MAX] = {0, ITEM_LEN, ITEM_LEN};
-
-char delim_p[FIELD_MAX][ARRAY_MAX] = {DELIM_DEF, DELIM_DEF, DELIM_DEF};
-char delim_n[ARRAY_MAX] = DELIM_DEF; /* page number separator */
-char delim_r[ARRAY_MAX] = DELIMR_DEF;/* page range designator */
-char delim_t[ARRAY_MAX] = DELIMT_DEF;/* page list terminating delimiter */
-
-char suffix_2p[ARRAY_MAX] = ""; /* suffix for two page ranges */
-char suffix_3p[ARRAY_MAX] = ""; /* suffix for three page ranges */
-char suffix_mp[ARRAY_MAX] = ""; /* suffix for multiple page ranges */
-
-char encap_p[ARRAY_MAX] = ENCAP0_DEF;/* encapsulator prefix */
-char encap_i[ARRAY_MAX] = ENCAP1_DEF;/* encapsulator infix */
-char encap_s[ARRAY_MAX] = ENCAP2_DEF;/* encapsulator postfix */
-
-int linemax = LINE_MAX;
-
-int indent_length = INDENTLEN_DEF;
-char indent_space[ARRAY_MAX] = INDENTSPC_DEF;
-
-char page_comp[ARRAY_MAX] = COMPOSITOR_DEF;
-int page_offset[PAGETYPE_MAX] = {
-0,
-ROMAN_LOWER_OFFSET,
-ROMAN_LOWER_OFFSET + ARABIC_OFFSET,
-ROMAN_LOWER_OFFSET + ARABIC_OFFSET + ALPHA_LOWER_OFFSET,
-ROMAN_LOWER_OFFSET + ARABIC_OFFSET + ALPHA_LOWER_OFFSET + ROMAN_UPPER_OFFSET
-};
-static char page_prec[ARRAY_MAX] = PRECEDENCE_DEF;
-
-static int put_dot;
-
-static int count_lfd (char *str);
-static int next_nonblank (void);
-static int process_precedence (void);
-static int scan_char (char *c);
-static int scan_spec (char *spec);
-static int scan_string (char *str);
-
-void
-scan_sty(void)
-{
- char spec[STRING_MAX];
- int tmp;
-
- MESSAGE1("Scanning style file %s", sty_fn);
- while (scan_spec(spec)) {
- sty_tc++;
- put_dot = TRUE;
-
- /* output pre- and post-ambles */
- if (STREQ(spec, PREAMBLE)) {
- (void) scan_string(preamble);
- prelen = count_lfd(preamble);
- } else if (STREQ(spec, POSTAMBLE)) {
- (void) scan_string(postamble);
- postlen = count_lfd(postamble);
- } else if (STREQ(spec, GROUP_SKIP)) {
- (void) scan_string(group_skip);
- skiplen = count_lfd(group_skip);
- } else if (STREQ(spec, HEADINGS_FLAG)) {
- SCAN_NO(&headings_flag);
- } else if (STREQ(spec, HEADING_PRE)) {
- (void) scan_string(heading_pre);
- headprelen = count_lfd(heading_pre);
- } else if (STREQ(spec, HEADING_SUF)) {
- (void) scan_string(heading_suf);
- headsuflen = count_lfd(heading_suf);
- } else if (STREQ(spec, SYMHEAD_POS)) {
- (void) scan_string(symhead_pos);
- } else if (STREQ(spec, SYMHEAD_NEG)) {
- (void) scan_string(symhead_neg);
- } else if (STREQ(spec, NUMHEAD_POS)) {
- (void) scan_string(numhead_pos);
- } else if (STREQ(spec, NUMHEAD_NEG)) {
- (void) scan_string(numhead_neg);
- } else if (STREQ(spec, SETPAGEOPEN)) {
- (void) scan_string(setpage_open);
- setpagelen = count_lfd(setpage_open);
- } else if (STREQ(spec, SETPAGECLOSE)) {
- (void) scan_string(setpage_close);
- setpagelen = count_lfd(setpage_close);
- /* output index item commands */
- } else if (STREQ(spec, ITEM_0)) {
- (void) scan_string(item_r[0]);
- ilen_r[0] = count_lfd(item_r[0]);
- } else if (STREQ(spec, ITEM_1)) {
- (void) scan_string(item_r[1]);
- ilen_r[1] = count_lfd(item_r[1]);
- } else if (STREQ(spec, ITEM_2)) {
- (void) scan_string(item_r[2]);
- ilen_r[2] = count_lfd(item_r[2]);
- } else if (STREQ(spec, ITEM_01)) {
- (void) scan_string(item_u[1]);
- ilen_u[1] = count_lfd(item_u[1]);
- } else if (STREQ(spec, ITEM_12)) {
- (void) scan_string(item_u[2]);
- ilen_u[2] = count_lfd(item_u[2]);
- } else if (STREQ(spec, ITEM_x1)) {
- (void) scan_string(item_x[1]);
- ilen_x[1] = count_lfd(item_x[1]);
- } else if (STREQ(spec, ITEM_x2)) {
- (void) scan_string(item_x[2]);
- ilen_x[2] = count_lfd(item_x[2]);
- /* output encapsulators */
- } else if (STREQ(spec, ENCAP_0))
- (void) scan_string(encap_p);
- else if (STREQ(spec, ENCAP_1))
- (void) scan_string(encap_i);
- else if (STREQ(spec, ENCAP_2))
- (void) scan_string(encap_s);
- /* output delimiters */
- else if (STREQ(spec, DELIM_0))
- (void) scan_string(delim_p[0]);
- else if (STREQ(spec, DELIM_1))
- (void) scan_string(delim_p[1]);
- else if (STREQ(spec, DELIM_2))
- (void) scan_string(delim_p[2]);
- else if (STREQ(spec, DELIM_N))
- (void) scan_string(delim_n);
- else if (STREQ(spec, DELIM_R))
- (void) scan_string(delim_r);
- else if (STREQ(spec, DELIM_T))
- (void) scan_string(delim_t);
- else if (STREQ(spec, SUFFIX_2P))
- (void) scan_string(suffix_2p);
- else if (STREQ(spec, SUFFIX_3P))
- (void) scan_string(suffix_3p);
- else if (STREQ(spec, SUFFIX_MP))
- (void) scan_string(suffix_mp);
- /* output line width */
- else if (STREQ(spec, LINEMAX)) {
- SCAN_NO(&tmp);
- if (tmp > 0)
- linemax = tmp;
- else
- STY_ERROR2("%s must be positive (got %d)",
- LINEMAX, tmp);
- /* output line indentation length */
- } else if (STREQ(spec, INDENT_LENGTH)) {
- SCAN_NO(&tmp);
- if (tmp >= 0)
- indent_length = tmp;
- else
- STY_ERROR2("%s must be nonnegative (got %d)",
- INDENT_LENGTH, tmp);
- /* output line indentation */
- } else if (STREQ(spec, INDENT_SPACE)) {
- (void) scan_string(indent_space);
- /* composite page delimiter */
- } else if (STREQ(spec, COMPOSITOR)) {
- (void) scan_string(page_comp);
- /* page precedence */
- } else if (STREQ(spec, PRECEDENCE)) {
- (void) scan_string(page_prec);
- (void) process_precedence();
- /* index input format */
- } else if (STREQ(spec, KEYWORD))
- (void) scan_string(idx_keyword);
- else if (STREQ(spec, AOPEN))
- (void) scan_char(&idx_aopen);
- else if (STREQ(spec, ACLOSE))
- (void) scan_char(&idx_aclose);
- else if (STREQ(spec, LEVEL))
- (void) scan_char(&idx_level);
- else if (STREQ(spec, ROPEN))
- (void) scan_char(&idx_ropen);
- else if (STREQ(spec, RCLOSE))
- (void) scan_char(&idx_rclose);
- else if (STREQ(spec, QUOTE))
- (void) scan_char(&idx_quote);
- else if (STREQ(spec, ACTUAL))
- (void) scan_char(&idx_actual);
- else if (STREQ(spec, ENCAP))
- (void) scan_char(&idx_encap);
- else if (STREQ(spec, ESCAPE))
- (void) scan_char(&idx_escape);
- else {
- (void) next_nonblank();
- STY_SKIPLINE;
- STY_ERROR1("Unknown specifier %s.\n", spec);
- put_dot = FALSE;
- }
- if (put_dot) {
- STY_DOT;
- }
- }
-
- /* check if quote and escape are distinct */
- if (idx_quote == idx_escape) {
- STY_ERROR1(
- "Quote and escape symbols must be distinct (both `%c' now).\n",
- idx_quote);
- idx_quote = IDX_QUOTE;
- idx_escape = IDX_ESCAPE;
- }
- DONE(sty_tc - sty_ec, "attributes redefined", sty_ec, "ignored");
- CLOSE(sty_fp);
-}
-
-static int
-scan_spec(char spec[])
-{
- int i = 0;
- int c;
-
- while (TRUE)
- if ((c = next_nonblank()) == -1)
- return (FALSE);
- else if (c == COMMENT) {
- STY_SKIPLINE;
- } else
- break;
-
- spec[0] = TOLOWER(c);
- while ((i++ < STRING_MAX) && ((c = GET_CHAR(sty_fp)) != SPC) &&
- (c != TAB) && (c != LFD) && (c != EOF))
- spec[i] = TOLOWER(c);
- if (i < STRING_MAX) {
- spec[i] = NUL;
- if (c == EOF) {
- STY_ERROR1(
- "No attribute for specifier %s (premature EOF)\n",
- spec);
- return (-1);
- }
- if (c == LFD)
- sty_lc++;
- return (TRUE);
- } else {
- STY_ERROR2("Specifier %s too long (max %d).\n",
- spec, STRING_MAX);
- return (FALSE);
- }
-}
-
-
-static int
-next_nonblank(void)
-{
- int c;
-
- while (TRUE) {
- switch (c = GET_CHAR(sty_fp)) {
- case EOF:
- return (-1);
-
- case LFD:
- sty_lc++;
- case SPC:
- case TAB:
- break;
- default:
- return (c);
- }
- }
-}
-
-
-static int
-scan_string(char str[])
-{
- char clone[ARRAY_MAX];
- int i = 0;
- int c;
-
- switch (c = next_nonblank()) {
- case STR_DELIM:
- while (TRUE)
- switch (c = GET_CHAR(sty_fp)) {
- case EOF:
- STY_ERROR1("No closing delimiter in %s.\n",
- clone);
- return (FALSE);
- case STR_DELIM:
- clone[i] = NUL;
- strcpy(str, clone);
- return (TRUE);
- case BSH:
- switch (c = GET_CHAR(sty_fp)) {
- case 't':
- clone[i++] = TAB;
- break;
- case 'n':
- clone[i++] = LFD;
- break;
-
- default:
- clone[i++] = (char) c;
- break;
- }
- break;
- default:
- if (c == LFD)
- sty_lc++;
- if (i < ARRAY_MAX)
- clone[i++] = (char) c;
- else {
- STY_SKIPLINE;
- STY_ERROR2(
- "Attribute string %s too long (max %d).\n",
- clone, ARRAY_MAX);
- return (FALSE);
- }
- break;
- }
- break;
- case COMMENT:
- STY_SKIPLINE;
- break;
- default:
- STY_SKIPLINE;
- STY_ERROR("No opening delimiter.\n");
- return (FALSE);
- }
- return (TRUE); /* function value no longer used */
-}
-
-
-static int
-scan_char(char *c)
-{
- int clone;
-
- switch (clone = next_nonblank()) {
- case CHR_DELIM:
- switch (clone = GET_CHAR(sty_fp)) {
- case CHR_DELIM:
- STY_SKIPLINE;
- STY_ERROR("Premature closing delimiter.\n");
- return (FALSE);
- case LFD:
- sty_lc++;
- case EOF:
- STY_ERROR("No character (premature EOF).\n");
- return (FALSE);
- case BSH:
- clone = GET_CHAR(sty_fp);
- default:
- if (GET_CHAR(sty_fp) == CHR_DELIM) {
- *c = (char) clone;
- return (TRUE);
- } else {
- STY_ERROR("No closing delimiter or too many letters.\n");
- return (FALSE);
- }
- }
- /* break; */ /* NOT REACHED */
- case COMMENT:
- STY_SKIPLINE;
- break;
- default:
- STY_SKIPLINE;
- STY_ERROR("No opening delimiter.\n");
- return (FALSE);
- }
- return (TRUE); /* function value no longer used */
-}
-
-
-static int
-count_lfd(char *str)
-{
- int i = 0;
- int n = 0;
-
- while (str[i] != NUL) {
- if (str[i] == LFD)
- n++;
- i++;
- }
- return (n);
-}
-
-
-static int
-process_precedence(void)
-{
- int order[PAGETYPE_MAX];
- int type[PAGETYPE_MAX];
- int i = 0;
- int last;
- int roml = FALSE;
- int romu = FALSE;
- int arab = FALSE;
- int alpl = FALSE;
- int alpu = FALSE;
-
- /* check for llegal specifiers first */
- while ((i < PAGETYPE_MAX) && (page_prec[i] != NUL)) {
- switch (page_prec[i]) {
- case ROMAN_LOWER:
- if (roml) {
- MULTIPLE(ROMAN_LOWER);
- } else
- roml = TRUE;
- break;
- case ROMAN_UPPER:
- if (romu) {
- MULTIPLE(ROMAN_UPPER);
- } else
- romu = TRUE;
- break;
- case ARABIC:
- if (arab) {
- MULTIPLE(ARABIC);
- } else
- arab = TRUE;
- break;
- case ALPHA_LOWER:
- if (alpl) {
- MULTIPLE(ALPHA_UPPER);
- } else
- alpl = TRUE;
- break;
- case ALPHA_UPPER:
- if (alpu) {
- MULTIPLE(ALPHA_UPPER);
- } else
- alpu = TRUE;
- break;
- default:
- STY_SKIPLINE;
- STY_ERROR1("Unknow type `%c' in page precedence specification.\n",
- page_prec[i]);
- return (FALSE);
- }
- i++;
- }
- if (page_prec[i] != NUL) {
- STY_SKIPLINE;
- STY_ERROR("Page precedence specification string too long.\n");
- return (FALSE);
- }
- last = i;
- switch (page_prec[0]) {
- case ROMAN_LOWER:
- order[0] = ROMAN_LOWER_OFFSET;
- type[0] = ROML;
- break;
- case ROMAN_UPPER:
- order[0] = ROMAN_UPPER_OFFSET;
- type[0] = ROMU;
- break;
- case ARABIC:
- order[0] = ARABIC_OFFSET;
- type[0] = ARAB;
- break;
- case ALPHA_LOWER:
- order[0] = ALPHA_LOWER_OFFSET;
- type[0] = ALPL;
- break;
- case ALPHA_UPPER:
- order[0] = ALPHA_LOWER_OFFSET;
- type[0] = ALPU;
- break;
- }
-
- i = 1;
- while (i < last) {
- switch (page_prec[i]) {
- case ROMAN_LOWER:
- order[i] = order[i - 1] + ROMAN_LOWER_OFFSET;
- type[i] = ROML;
- break;
- case ROMAN_UPPER:
- order[i] = order[i - 1] + ROMAN_UPPER_OFFSET;
- type[i] = ROMU;
- break;
- case ARABIC:
- order[i] = order[i - 1] + ARABIC_OFFSET;
- type[i] = ARAB;
- break;
- case ALPHA_LOWER:
- order[i] = order[i - 1] + ALPHA_LOWER_OFFSET;
- type[i] = ALPL;
- break;
- case ALPHA_UPPER:
- order[i] = order[i - 1] + ALPHA_LOWER_OFFSET;
- type[i] = ALPU;
- break;
- }
- i++;
- }
-
- for (i = 0; i < PAGETYPE_MAX; i++) {
- page_offset[i] = -1;
- }
- page_offset[type[0]] = 0;
- for (i = 1; i < last; i++) {
- page_offset[type[i]] = order[i - 1];
- }
- for (i = 0; i < PAGETYPE_MAX; i++) {
- if (page_offset[i] == -1) {
- switch (type[last - 1]) {
- case ROML:
- order[last] = order[last - 1] + ROMAN_LOWER_OFFSET;
- break;
- case ROMU:
- order[last] = order[last - 1] + ROMAN_UPPER_OFFSET;
- break;
- case ARAB:
- order[last] = order[last - 1] + ARABIC_OFFSET;
- break;
- case ALPL:
- order[last] = order[last - 1] + ALPHA_LOWER_OFFSET;
- break;
- case ALPU:
- order[last] = order[last - 1] + ALPHA_UPPER_OFFSET;
- break;
- }
- type[last] = i;
- page_offset[i] = order[last];
- last++;
- }
- }
- return (TRUE); /* function value no longer used */
-}