⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 help.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1986 Wayne A. Christopher, U. C. Berkeley CAD Group **********//* * The main entry point for the help system. */#include "spice.h"#include "cpstd.h"#include "hlpdefs.h"#include "suffix.h"char *hlp_directory;extern char *hlp_filelist[];int hlp_ftablesize = 0;voidhlp_main(path, wl)    char *path;    wordlist *wl;{    topic *top;    fplace *place;    hlp_directory = path;    if (wl) {        while (wl) {            if (!(place = findglobalsubject(wl->wl_word))) {                fprintf(stderr, "Error: No such topic: %s\n",                    wl->wl_word);                wl = wl->wl_next;                continue;            }            if (!(top = hlp_read(place))) {                fprintf(stderr, "Error: can't read topic\n");                wl = wl->wl_next;                continue;            }            hlp_provide(top);            wl = wl->wl_next;        }    } else {        if (!(place = findglobalsubject("main"))) {          fprintf(stderr, "Error: no main topic\n");          return;        }        if (!(top = hlp_read(place))) {            fprintf(stderr, "Error: can't read topic\n");            return;        }        hlp_provide(top);    }#ifndef HAS_X11    hlp_free();#endif    return;}fplace *findglobalsubject(subject)char *subject;{    fplace *place;    char **dict;    long fpos;    place = 0;    for (dict = hlp_filelist; *dict && **dict; dict++) {	fpos = findsubject(*dict, subject);	if (fpos != -1) {	    place = (fplace *) tmalloc(sizeof(fplace));	    place->fpos = fpos;	    place->filename = copy(*dict);	    place->fp = hlp_fopen(*dict);	    break;	}    }    return(place);}/* see if file is on filelist */boolhlp_approvedfile(filename)char *filename;{    char **s;    for (s = hlp_filelist; *s && **s; s++) {      if (cieq(*s, filename)) return(true);    }    return(false);}/* keep file pointers on top level files so we don't always have to do    fopen's */FILE *hlp_fopen(filename)char *filename;{    static struct {        char filename[BSIZE_SP];        FILE *fp;    } hlp_ftable[32];    int i;    char buf[BSIZE_SP];    for (i=0; i < hlp_ftablesize; i++) {      if (cieq(filename, hlp_ftable[i].filename)) {        return(hlp_ftable[i].fp);      }    }    /* not already in table */    strcpy(buf, hlp_directory); /* set up pathname */    strcat(buf, DIR_PATHSEP);    strcat(buf, filename);    strcat(buf, ".txt");    hlp_pathfix(buf);    if (!(hlp_ftable[hlp_ftablesize].fp = fopen(buf, "r"))) {      perror(buf);      return (NULL);    }    strcpy(hlp_ftable[hlp_ftablesize].filename, filename);    hlp_ftablesize++;    return(hlp_ftable[hlp_ftablesize - 1].fp);}/* ARGSUSED */voidhlp_pathfix(buf)    char *buf;{    char *s, *t, *u, bufx[1025];    char *dir_pathsep;    extern char *cp_tildexpand( );    dir_pathsep = DIR_PATHSEP;    if (!buf)	return;    s = cp_tildexpand(buf);    if (sizeof(DIR_PATHSEP) == 2) {	if (*dir_pathsep != '/') {	    for (t = s; *t; t++) {		if (*t == '/')		    *t = *dir_pathsep;	    }	} else	    strcpy(buf, s);    } else {	/* For vms; this probably doesn't work, but neither did the old code */	for (s = bufx, t = buf; *t; t++) {	    if (*t == '/')		for (u = DIR_PATHSEP; *u; u++) {		    *s++ = *u;		}	    else		*s++ = *t;	}	*s = 0;	strcpy(buf, s);    }    if (s)	tfree(s);    return;}

⌨️ 快捷键说明

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