diff options
Diffstat (limited to 'contrib/ncurses')
-rw-r--r-- | contrib/ncurses/ncurses/tinfo/comp_scan.c | 236 | ||||
-rw-r--r-- | contrib/ncurses/ncurses/tinfo/lib_raw.c | 18 | ||||
-rw-r--r-- | contrib/ncurses/ncurses/tinfo/lib_termcap.c | 42 |
3 files changed, 145 insertions, 151 deletions
diff --git a/contrib/ncurses/ncurses/tinfo/comp_scan.c b/contrib/ncurses/ncurses/tinfo/comp_scan.c index a6ad55f..5c22da9 100644 --- a/contrib/ncurses/ncurses/tinfo/comp_scan.c +++ b/contrib/ncurses/ncurses/tinfo/comp_scan.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. * + * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -31,6 +31,8 @@ * and: Eric S. Raymond <esr@snark.thyrsus.com> * ****************************************************************************/ +/* $FreeBSD$ */ + /* * comp_scan.c --- Lexical scanner for terminfo compiler. * @@ -50,7 +52,7 @@ #include <term_entry.h> #include <tic.h> -MODULE_ID("$Id: comp_scan.c,v 1.56 2001/04/21 18:53:34 tom Exp $") +MODULE_ID("$Id: comp_scan.c,v 1.47 2000/09/24 01:15:17 tom Exp $") /* * Maximum length of string capability we'll accept before raising an error. @@ -60,22 +62,14 @@ MODULE_ID("$Id: comp_scan.c,v 1.56 2001/04/21 18:53:34 tom Exp $") #define iswhite(ch) (ch == ' ' || ch == '\t') -NCURSES_EXPORT_VAR(int) -_nc_syntax = 0; /* termcap or terminfo? */ -NCURSES_EXPORT_VAR(long) -_nc_curr_file_pos = 0; /* file offset of current line */ -NCURSES_EXPORT_VAR(long) -_nc_comment_start = 0; /* start of comment range before name */ -NCURSES_EXPORT_VAR(long) -_nc_comment_end = 0; /* end of comment range before name */ -NCURSES_EXPORT_VAR(long) -_nc_start_line = 0; /* start line of current entry */ - -NCURSES_EXPORT_VAR(struct token) -_nc_curr_token = -{ - 0, 0, 0 -}; +int _nc_syntax = 0; /* termcap or terminfo? */ +long _nc_curr_file_pos = 0; /* file offset of current line */ +long _nc_comment_start = 0; /* start of comment range before name */ +long _nc_comment_end = 0; /* end of comment range before name */ +long _nc_start_line = 0; /* start line of current entry */ + +struct token _nc_curr_token = +{0, 0, 0}; /***************************************************************************** * @@ -89,8 +83,7 @@ static int pushtype; /* type of pushback token */ static char pushname[MAX_NAME_SIZE + 1]; #if NCURSES_EXT_FUNCS -NCURSES_EXPORT_VAR(bool) -_nc_disable_period = FALSE; /* used by tic -a option */ +bool _nc_disable_period = FALSE; /* used by tic -a option */ #endif static int last_char(void); @@ -142,8 +135,8 @@ eat_escaped_newline(int ch) * */ -NCURSES_EXPORT(int) -_nc_get_token(bool silent) +int +_nc_get_token(void) { static const char terminfo_punct[] = "@%&*!#"; long number; @@ -211,9 +204,8 @@ _nc_get_token(bool silent) && !(ch == '.' && _nc_disable_period) #endif && !strchr(terminfo_punct, (char) ch)) { - if (!silent) - _nc_warning("Illegal character (expected alphanumeric or %s) - %s", - terminfo_punct, unctrl((chtype) ch)); + _nc_warning("Illegal character (expected alphanumeric or %s) - %s", + terminfo_punct, unctrl(ch)); _nc_panic_mode(separator); goto start_token; } @@ -240,11 +232,13 @@ _nc_get_token(bool silent) _nc_syntax = SYN_TERMINFO; separator = ','; /* - * Fall-through here is not an accident. The idea is that - * if we see a comma, we figure this is terminfo unless we - * subsequently run into a colon -- but we don't stop - * looking for that colon until hitting a newline. This - * allows commas to be embedded in description fields of + * Fall-through here is not an accident. + * The idea is that if we see a comma, we + * figure this is terminfo unless we + * subsequently run into a colon -- but + * we don't stop looking for that colon until + * hitting a newline. This allows commas to + * be embedded in description fields of * either syntax. */ /* FALLTHRU */ @@ -256,10 +250,11 @@ _nc_get_token(bool silent) ptr[0] = '\0'; if (_nc_syntax == ERR) { /* - * Grrr...what we ought to do here is barf, complaining that - * the entry is malformed. But because a couple of name fields - * in the 8.2 termcap file end with |\, we just have to assume - * it's termcap syntax. + * Grrr...what we ought to do here is barf, + * complaining that the entry is malformed. + * But because a couple of name fields in the + * 8.2 termcap file end with |\, we just have + * to assume it's termcap syntax. */ _nc_syntax = SYN_TERMCAP; separator = ':'; @@ -271,8 +266,8 @@ _nc_get_token(bool silent) } /* - * This is the soonest we have the terminal name fetched. Set up - * for following warning messages. + * This is the soonest we have the terminal name + * fetched. Set up for following warning messages. */ ptr = strchr(buffer, '|'); if (ptr == (char *) NULL) @@ -283,36 +278,36 @@ _nc_get_token(bool silent) *ptr = ch; /* - * Compute the boundary between the aliases and the description - * field for syntax-checking purposes. + * Compute the boundary between the aliases and the + * description field for syntax-checking purposes. */ desc = strrchr(buffer, '|'); - if (!silent && desc) { + if (desc) { if (*desc == '\0') _nc_warning("empty longname field"); +#ifndef FREEBSD_NATIVE else if (strchr(desc, ' ') == (char *) NULL) _nc_warning("older tic versions may treat the description field as an alias"); +#endif } if (!desc) desc = buffer + strlen(buffer); /* - * Whitespace in a name field other than the long name can confuse - * rdist and some termcap tools. Slashes are a no-no. Other - * special characters can be dangerous due to shell expansion. + * Whitespace in a name field other than the long name + * can confuse rdist and some termcap tools. Slashes + * are a no-no. Other special characters can be + * dangerous due to shell expansion. */ for (ptr = buffer; ptr < desc; ptr++) { - if (isspace(CharOf(*ptr))) { - if (!silent) - _nc_warning("whitespace in name or alias field"); + if (isspace(*ptr)) { + _nc_warning("whitespace in name or alias field"); break; } else if (*ptr == '/') { - if (!silent) - _nc_warning("slashes aren't allowed in names or aliases"); + _nc_warning("slashes aren't allowed in names or aliases"); break; } else if (strchr("$[]!*?", *ptr)) { - if (!silent) - _nc_warning("dubious character `%c' in name or alias field", *ptr); + _nc_warning("dubious character `%c' in name or alias field", *ptr); break; } } @@ -345,9 +340,9 @@ _nc_get_token(bool silent) type = BOOLEAN; break; case '@': - if ((ch = next_char()) != separator && !silent) + if ((ch = next_char()) != separator) _nc_warning("Missing separator after `%s', have %s", - buffer, unctrl((chtype) ch)); + buffer, unctrl(ch)); _nc_curr_token.tk_name = buffer; type = CANCEL; break; @@ -361,12 +356,10 @@ _nc_get_token(bool silent) } numbuf[found] = '\0'; number = strtol(numbuf, &numchk, 0); - if (!silent) { - if (numchk == numbuf) - _nc_warning("no value given for `%s'", buffer); - if ((*numchk != '\0') || (ch != separator)) - _nc_warning("Missing separator"); - } + if (numchk == numbuf) + _nc_warning("no value given for `%s'", buffer); + if ((*numchk != '\0') || (ch != separator)) + _nc_warning("Missing separator"); _nc_curr_token.tk_name = buffer; _nc_curr_token.tk_valnumber = number; type = NUMBER; @@ -374,7 +367,7 @@ _nc_get_token(bool silent) case '=': ch = _nc_trans_string(ptr, buffer + sizeof(buffer)); - if (!silent && ch != separator) + if (ch != separator) _nc_warning("Missing separator"); _nc_curr_token.tk_name = buffer; _nc_curr_token.tk_valstring = ptr; @@ -387,8 +380,7 @@ _nc_get_token(bool silent) default: /* just to get rid of the compiler warning */ type = UNDEF; - if (!silent) - _nc_warning("Illegal character - %s", unctrl((chtype) ch)); + _nc_warning("Illegal character - %s", unctrl(ch)); } } /* end else (first_column == FALSE) */ } /* end else (ch != EOF) */ @@ -440,12 +432,9 @@ _nc_get_token(bool silent) #endif if (dot_flag == TRUE) /* if commented out, use the next one */ - type = _nc_get_token(silent); + type = _nc_get_token(); - DEBUG(3, ("token: `%s', class %d", - _nc_curr_token.tk_name != 0 ? _nc_curr_token.tk_name : - "<null>", - type)); + DEBUG(3, ("token: `%s', class %d", _nc_curr_token.tk_name, type)); return (type); } @@ -469,11 +458,11 @@ _nc_get_token(bool silent) * */ -NCURSES_EXPORT(char) +char _nc_trans_string(char *ptr, char *last) { int count = 0; - int number = 0; + int number; int i, c; chtype ch, last_ch = '\0'; bool ignored = FALSE; @@ -623,14 +612,14 @@ _nc_trans_string(char *ptr, char *last) * get_token() call. */ -NCURSES_EXPORT(void) +void _nc_push_token(int tokclass) { /* - * This implementation is kind of bogus, it will fail if we ever do more - * than one pushback at a time between get_token() calls. It relies on the - * fact that curr_tok is static storage that nothing but get_token() - * touches. + * This implementation is kind of bogus, it will fail if we ever do + * more than one pushback at a time between get_token() calls. It + * relies on the fact that curr_tok is static storage that nothing + * but get_token() touches. */ pushtype = tokclass; _nc_get_type(pushname); @@ -642,7 +631,7 @@ _nc_push_token(int tokclass) /* * Panic mode error recovery - skip everything until a "ch" is found. */ -NCURSES_EXPORT(void) +void _nc_panic_mode(char ch) { int c; @@ -676,7 +665,7 @@ static FILE *yyin; /* scanner's input file descriptor */ * non-null. */ -NCURSES_EXPORT(void) +void _nc_reset_input(FILE * fp, char *buf) { pushtype = NO_PUSHBACK; @@ -699,7 +688,7 @@ last_char(void) { size_t len = strlen(bufptr); while (len--) { - if (!isspace(CharOf(bufptr[len]))) + if (!isspace(bufptr[len])) return bufptr[len]; } return 0; @@ -723,10 +712,6 @@ static int next_char(void) { if (!yyin) { - /* - * An string with an embedded null will truncate the input. This is - * intentional (we don't read binary files here). - */ if (*bufptr == '\0') return (EOF); if (*bufptr == '\n') { @@ -735,61 +720,52 @@ next_char(void) } } else if (!bufptr || !*bufptr) { /* - * In theory this could be recoded to do its I/O one character at a - * time, saving the buffer space. In practice, this turns out to be - * quite hard to get completely right. Try it and see. If you - * succeed, don't forget to hack push_back() correspondingly. + * In theory this could be recoded to do its I/O one + * character at a time, saving the buffer space. In + * practice, this turns out to be quite hard to get + * completely right. Try it and see. If you succeed, + * don't forget to hack push_back() correspondingly. */ - static char *result; - static size_t allocated; - size_t used; + static char line[LEXBUFSIZ]; size_t len; do { - bufstart = 0; - used = 0; - do { - if (used + (LEXBUFSIZ / 4) >= allocated) { - allocated += (allocated + LEXBUFSIZ); - result = _nc_doalloc(result, allocated); - if (result == 0) - return (EOF); - } - if (used == 0) - _nc_curr_file_pos = ftell(yyin); - - if (fgets(result + used, allocated - used, yyin) != NULL) { - bufstart = result; - if (used == 0) { - _nc_curr_line++; - _nc_curr_col = 0; - } - } else { - if (used != 0) - strcat(result, "\n"); - } - if ((bufptr = bufstart) != 0) { - used = strlen(bufptr); - while (iswhite(*bufptr)) - bufptr++; + _nc_curr_file_pos = ftell(yyin); - /* - * Treat a trailing <cr><lf> the same as a <newline> so we - * can read files on OS/2, etc. - */ - if ((len = strlen(bufptr)) > 1) { - if (bufptr[len - 1] == '\n' - && bufptr[len - 2] == '\r') { - len--; - bufptr[len - 1] = '\n'; - bufptr[len] = '\0'; - } - } - } else { - return (EOF); - } - } while (bufptr[len - 1] != '\n'); /* complete a line */ - } while (result[0] == '#'); /* ignore comments */ + if ((bufstart = fgets(line, LEXBUFSIZ, yyin)) != NULL) { + _nc_curr_line++; + _nc_curr_col = 0; + } + bufptr = bufstart; + } while + (bufstart != NULL && line[0] == '#'); + + if (bufstart == NULL || *bufstart == 0) + return (EOF); + + while (iswhite(*bufptr)) + bufptr++; + + /* + * Treat a trailing <cr><lf> the same as a <newline> so we can read + * files on OS/2, etc. + */ + if ((len = strlen(bufptr)) > 1) { + if (bufptr[len - 1] == '\n' + && bufptr[len - 2] == '\r') { + len--; + bufptr[len - 1] = '\n'; + bufptr[len] = '\0'; + } + } + + /* + * If we don't have a trailing newline, it's because the line is simply + * too long. Give up. (FIXME: We could instead reallocate the line + * buffer and allow arbitrary-length lines). + */ + if (len == 0 || (bufptr[len - 1] != '\n')) + return (EOF); } first_column = (bufptr == bufstart); @@ -821,3 +797,5 @@ end_of_stream(void) return ((yyin ? feof(yyin) : (bufptr && *bufptr == '\0')) ? TRUE : FALSE); } + +/* comp_scan.c ends here */ diff --git a/contrib/ncurses/ncurses/tinfo/lib_raw.c b/contrib/ncurses/ncurses/tinfo/lib_raw.c index 0a65b8f..26ee26a 100644 --- a/contrib/ncurses/ncurses/tinfo/lib_raw.c +++ b/contrib/ncurses/ncurses/tinfo/lib_raw.c @@ -31,6 +31,8 @@ * and: Eric S. Raymond <esr@snark.thyrsus.com> * ****************************************************************************/ +/* $FreeBSD$ */ + /* * raw.c * @@ -48,7 +50,7 @@ #include <curses.priv.h> #include <term.h> /* cur_term */ -MODULE_ID("$Id: lib_raw.c,v 1.10 2000/12/10 02:55:07 tom Exp $") +MODULE_ID("$Id: lib_raw.c,v 1.8 2000/09/02 18:08:48 tom Exp $") #if SVR4_TERMIO && !defined(_POSIX_SOURCE) #define _POSIX_SOURCE @@ -72,7 +74,7 @@ MODULE_ID("$Id: lib_raw.c,v 1.10 2000/12/10 02:55:07 tom Exp $") #define AFTER(s) #endif /* TRACE */ -NCURSES_EXPORT(int) +int raw(void) { T((T_CALLED("raw()"))); @@ -100,7 +102,7 @@ raw(void) returnCode(ERR); } -NCURSES_EXPORT(int) +int cbreak(void) { T((T_CALLED("cbreak()"))); @@ -125,7 +127,7 @@ cbreak(void) returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); } -NCURSES_EXPORT(void) +void qiflush(void) { T((T_CALLED("qiflush()"))); @@ -144,7 +146,7 @@ qiflush(void) #endif } -NCURSES_EXPORT(int) +int noraw(void) { T((T_CALLED("noraw()"))); @@ -168,7 +170,7 @@ noraw(void) returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); } -NCURSES_EXPORT(int) +int nocbreak(void) { T((T_CALLED("nocbreak()"))); @@ -190,7 +192,7 @@ nocbreak(void) returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); } -NCURSES_EXPORT(void) +void noqiflush(void) { T((T_CALLED("noqiflush()"))); @@ -209,7 +211,7 @@ noqiflush(void) #endif } -NCURSES_EXPORT(int) +int intrflush(WINDOW *win GCC_UNUSED, bool flag) { T((T_CALLED("intrflush(%d)"), flag)); diff --git a/contrib/ncurses/ncurses/tinfo/lib_termcap.c b/contrib/ncurses/ncurses/tinfo/lib_termcap.c index c88887b..30d6b38 100644 --- a/contrib/ncurses/ncurses/tinfo/lib_termcap.c +++ b/contrib/ncurses/ncurses/tinfo/lib_termcap.c @@ -31,6 +31,8 @@ * and: Eric S. Raymond <esr@snark.thyrsus.com> * ****************************************************************************/ +/* $FreeBSD$ */ + #include <curses.priv.h> #include <termcap.h> @@ -39,17 +41,21 @@ #define __INTERNAL_CAPS_VISIBLE #include <term_entry.h> -MODULE_ID("$Id: lib_termcap.c,v 1.39 2000/12/10 02:56:30 tom Exp $") +MODULE_ID("$Id: lib_termcap.c,v 1.37 2000/09/16 20:30:16 tom Exp $") /* some of the code in here was contributed by: Magnus Bengtsson, d6mbeng@dtek.chalmers.se */ -NCURSES_EXPORT_VAR(char *) -UP = 0; -NCURSES_EXPORT_VAR(char *) -BC = 0; +char *UP = 0; +char *BC = 0; + +#ifdef FREEBSD_NATIVE +#undef GCC_UNUSED +#define GCC_UNUSED +extern char _nc_termcap[]; /* buffer to copy out */ +#endif /*************************************************************************** * @@ -66,9 +72,8 @@ BC = 0; * ***************************************************************************/ -NCURSES_EXPORT(int) -tgetent -(char *bufp GCC_UNUSED, const char *name) +int +tgetent(char *bufp GCC_UNUSED, const char *name) { int errcode; @@ -99,6 +104,16 @@ tgetent #endif*/ } + +#ifdef FREEBSD_NATIVE + /* + * This is a REALLY UGLY hack. Basically, if we originate with + * a termcap source, try and copy it out. + */ + if (bufp && _nc_termcap[0]) + strncpy(bufp, _nc_termcap, 1024); +#endif + returnCode(errcode); } @@ -111,7 +126,7 @@ tgetent * ***************************************************************************/ -NCURSES_EXPORT(int) +int tgetflag(NCURSES_CONST char *id) { int i; @@ -139,7 +154,7 @@ tgetflag(NCURSES_CONST char *id) * ***************************************************************************/ -NCURSES_EXPORT(int) +int tgetnum(NCURSES_CONST char *id) { int i; @@ -168,9 +183,8 @@ tgetnum(NCURSES_CONST char *id) * ***************************************************************************/ -NCURSES_EXPORT(char *) -tgetstr -(NCURSES_CONST char *id, char **area) +char * +tgetstr(NCURSES_CONST char *id, char **area) { int i; @@ -180,7 +194,7 @@ tgetstr for_each_string(i, tp) { const char *capname = ExtStrname(tp, i, strcodes); if (!strncmp(id, capname, 2)) { - TR(TRACE_DATABASE, ("found match : %s", _nc_visbuf(tp->Strings[i]))); + TR(TRACE_DATABASE,("found match : %s", _nc_visbuf(tp->Strings[i]))); /* setupterm forces canceled strings to null */ if (area != 0 && *area != 0 |