cshpar.c

来自「ngspice又一个电子CAD仿真软件代码.功能更全」· C语言 代码 · 共 109 行

C
109
字号
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1985 Wayne A. Christopher, U. C. Berkeley CAD Group$Id: cshpar.c,v 1.3 2005/05/30 20:28:44 sjborley Exp $**********//* * The main entry point for cshpar. */#include "ngspice.h"#include "cpdefs.h"#include <signal.h>#include "cshpar.h"#ifdef HAVE_SGTTY_H#include <sgtty.h>#else#ifdef HAVE_TERMIO_H#include <termio.h>#else#ifdef HAVE_TERMIOS_H#include <termios.h>#endif#endif#endif#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_PWD_H#include <pwd.h>#endif#ifdef HAVE_SYS_WAIT_H#include <sys/wait.h>#endif/* Things go as follows: * (1) Read the line and do some initial quoting (by setting the 8th bit), *  and command ignoring. Also deal with command completion. * (2) Do history substitutions. (!, ^) * (3) Do alias substitution. *  * In front.c these things get done: * (4) Do variable substitution. ($varname) * (5) Do backquote substitution. (``) * (6) Do globbing. (*, ?, [], {}, ~) * (7) Do io redirection. *//* static functions */static void pwlist(wordlist *wlist, char *name);wordlist *cp_parse(char *string){    wordlist *wlist;    wlist = cp_lexer(string);    if (!string)        cp_event++;    if (!wlist || !wlist->wl_word)        return (wlist);    pwlist(wlist, "Initial parse");    wlist = cp_histsubst(wlist);    if (!wlist || !wlist->wl_word)        return (wlist);    pwlist(wlist, "After history substitution");    if (cp_didhsubst) {        wl_print(wlist, stdout);        putc('\n', stdout);    }    /* Add the word list to the history. */    /* MW. If string==NULL we do not have to do this, and then play     * with cp_lastone is not needed, but watch out cp_doalias */    if ((*wlist->wl_word) && !(string))        cp_addhistent(cp_event - 1, wlist);    wlist = cp_doalias(wlist);    pwlist(wlist, "After alias substitution");    pwlist(wlist, "Returning ");    return (wlist);}static voidpwlist(wordlist *wlist, char *name){    wordlist *wl;    if (!cp_debug)        return;    fprintf(cp_err, "%s : [ ", name);    for (wl = wlist; wl; wl = wl->wl_next)        fprintf(cp_err, "%s ", wl->wl_word);    fprintf(cp_err, "]\n");    return;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?