diff --git a/ChangeLog b/ChangeLog index e11f1f2f3..d2b898ad4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-09-20 Holger Vogt + * inpmkmod.c: fix bug no. 2859013 + * INSTALL corrected + * xspice/mif/mifgetmod.c: comments + 2009-09-19 Holger Vogt * fteext.h, inpcom.c, inp.c, options.c, winmain.c: variable ngdebug added, sets ft_ngdebug, diff --git a/INSTALL b/INSTALL index ce1547942..da59738f0 100644 --- a/INSTALL +++ b/INSTALL @@ -268,8 +268,8 @@ This file describes the procedures to install ngspice from sources. So if you intend to create a separate object file tree like ng-spice-rework/ngbuild/release, you may do the following, starting from the default directory ng-spice-rework: - - mkdir -p ngbuild/release + + mkdir -p ngbuild/release cd ngbuild/release ../../configure make install @@ -470,112 +470,104 @@ This file describes the procedures to install ngspice from sources. the code models *.cm for XSpice requires installation of BISON and FLEX to MSYS. A typical installation was tested with: - bison-2.0-MSYS.tar.gz - flex-2.5.4a-1-bin.zip - libiconv-1.9.2-1-bin.zip - libintl-0.14.4-bin.zip - + bison-2.0-MSYS.tar.gz + flex-2.5.4a-1-bin.zip + libiconv-1.9.2-1-bin.zip + libintl-0.14.4-bin.zip + Bison 2.0 is now superseeded by newer releases (Bison 2.3, see - http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879) - + http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879) + The last three are from - http://sourceforge.net/project/showfiles.php?group_id=23617. - + http://sourceforge.net/project/showfiles.php?group_id=23617. + You may also look at http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite http://www.mingw.org/wiki/MSYS - http://www.mingw.org/wiki/HOWTO_Create_an_MSYS_Build_Environment. + http://www.mingw.org/wiki/HOWTO_Create_an_MSYS_Build_Environment. 9.2 make ngspice with MS Visual Studio 2008 - ngspice may now be compiled with MS Visual Studio 2008. - - CIDER and XSPICE are included, but the code models for XSPICE - (*.cm) are not (yet) made. You may however use the code models - created with MINGW (which in fact are dlls), as e.g. found in - the ngspice binary distribution. - - There is currently no installation procedure provided, you may - however install the executable manually as described below: + ngspice may now be compiled with MS Visual Studio 2008. + + CIDER and XSPICE are included, but the code models for XSPICE + (*.cm) are not (yet) made. You may however use the code models + created with MINGW (which in fact are dlls), as e.g. found in + the ngspice binary distribution. + + There is currently no installation procedure provided, you may + however install the executable manually as described in the + installation tree below. + + The directory (visualc) with its files + vngspice.sln (project starter) and + vngspice.vcproj (project contents) + allows to compile and link ngspice with MS Visual Studio 2008. + The project is probably not compatible with Visual Studio 2005. + + /visualc/include contains a dedicated config.h file. It contains the + preprocessor definitions required to properly compile the code. + strings.h has been necessary during setting up the project. - The directory (visualc) with its files - vngspice.sln (project starter) and - vngspice.vcproj (project contents) - allows to compile and link ngspice with MS Visual Studio 2008. - The project is probably not compatible with Visual Studio 2005. - - CIDER and XSPICE are included, but the code models for XSPICE - (*.cm) are not (yet) made. You may however use the code models - created with MINGW (which in fact are dlls), as e.g. found in - the ngspice binary distribution. - - There is currently no installation procedure provided, you may - however install the executable manually as described in the - installation tree below. - - /visualc/include contains a dedicated config.h file. It contains the - preprocessor definitions required to properly compile the code. - strings.h has been necessary during setting up the project. - Install Microsoft Visual Studio 2008 C++ . The - MS VS 2008 C++ Express Edition (which is available at no cost from - http://www.microsoft.com/express/product/default.aspx) is adequate. - - Goto /ng-spice-rework/visualc. - - Start MS Visual Studio 2008 by double click onto vngspice.sln. - - After MS Visual Studio has opened up, select debug or release version - by checking 'Erstellen' , 'Konfigurations-Manager' 'Debug' or 'Release'. - - Start making ngspice (called vngspice.exe) by selecting 'Erstellen' and - 'vngspice neu erstellen'. - - Object files will be created and stored in visualc/debug or visualc/release. - The executable will be stored to visualc/debug/bin or visualc/release/bin. - - An installation tree (as provided with MINGW make install) and also used by - vngspice is (maybe created manually): - - C:\Spice\ - bin\ - ngspice.exe - nghelp.exe - ngmakeidx.exe - ngnutmeg.exe - cmpp.exe - lib\ - spice\ - analog.cm - digital.cm - spice2poly.cm - extradev.cm - extravt.cm - share\ - info\ - dir - ngspice.info - ngspice.info-1 - .. - ngspice.info-10 - man\ - man1\ - ngmultidec.1 - ngnutmeg.1 - ngsconvert.1 - ngspice.1 - ng-spice-rework\ - helpdir\ - ngspice.idx - ngspice.txt - scripts\ - ciderinit - devaxis - devload - setplot - spectrum - spinit + MS VS 2008 C++ Express Edition (which is available at no cost from + http://www.microsoft.com/express/product/default.aspx) is adequate. + + Goto /ng-spice-rework/visualc. + + Start MS Visual Studio 2008 by double click onto vngspice.sln. + + After MS Visual Studio has opened up, select debug or release version + by checking 'Erstellen' , 'Konfigurations-Manager' 'Debug' or 'Release'. + + Start making ngspice (called vngspice.exe) by selecting 'Erstellen' and + 'vngspice neu erstellen'. + + Object files will be created and stored in visualc/debug or visualc/release. + The executable will be stored to visualc/debug/bin or visualc/release/bin. + + An installation tree (as provided with MINGW make install) and also used by + vngspice is (maybe created manually): + + C:\Spice\ + bin\ + ngspice.exe + nghelp.exe + ngmakeidx.exe + ngnutmeg.exe + cmpp.exe + lib\ + spice\ + analog.cm + digital.cm + spice2poly.cm + extradev.cm + extravt.cm + share\ + info\ + dir + ngspice.info + ngspice.info-1 + .. + ngspice.info-10 + man\ + man1\ + ngmultidec.1 + ngnutmeg.1 + ngsconvert.1 + ngspice.1 + ng-spice-rework\ + helpdir\ + ngspice.idx + ngspice.txt + scripts\ + ciderinit + devaxis + devload + setplot + spectrum + spinit If you intend to install vngspice into another directory, e.g. D:\MySpice, you have to edit /visualc/include/config.h and alter the entries: diff --git a/src/spicelib/parser/inpmkmod.c b/src/spicelib/parser/inpmkmod.c index c0cd3b302..2cb4f3f9e 100644 --- a/src/spicelib/parser/inpmkmod.c +++ b/src/spicelib/parser/inpmkmod.c @@ -10,7 +10,7 @@ Author: 1985 Thomas L. Quarles #include "inp.h" /* global input model table. */ -INPmodel *modtab; +INPmodel *modtab = NULL; /*-------------------------------------------------------------- * This fcn takes the model name and looks to see if it is already @@ -21,35 +21,35 @@ INPmodel *modtab; int INPmakeMod(char *token, int type, card * line) { - register INPmodel **i; + register INPmodel **i; - /* First cycle through model table and see if model name - already exists in there. If it does, just return. */ - for (i = &modtab; *i != (INPmodel *) NULL; i = &((*i)->INPnextModel)) { - if (strcmp((*i)->INPmodName, token) == 0) { - return (OK); - } - } + /* First cycle through model table and see if model name + already exists in there. If it does, just return. */ + for (i = &modtab; *i != (INPmodel *) NULL; i = &((*i)->INPnextModel)) { + if (strcmp((*i)->INPmodName, token) == 0) { + return (OK); + } + } - /* Model name was not already in model table. Therefore stick - it in the model table. Then reutrn. */ + /* Model name was not already in model table. Therefore stick + it in the model table. Then return. */ #ifdef TRACE - /* debug statement */ - printf("In INPmakeMod, about to insert new model name = %s . . .\n", token); + /* debug statement */ + printf("In INPmakeMod, about to insert new model name = %s . . .\n", token); #endif - *i = (INPmodel *) MALLOC(sizeof(INPmodel)); - if (*i == NULL) - return (E_NOMEM); + *i = (INPmodel *) MALLOC(sizeof(INPmodel)); + if (*i == NULL) + return (E_NOMEM); - (*i)->INPmodName = token; /* model name */ - (*i)->INPmodType = type; /* model type */ - (*i)->INPnextModel = (INPmodel *) NULL; /* pointer to next model (end of list) */ - (*i)->INPmodUsed = 0; /* model is unused */ - (*i)->INPmodLine = line; /* model line */ - (*i)->INPmodfast = NULL; - return (OK); + (*i)->INPmodName = token; /* model name */ + (*i)->INPmodType = type; /* model type */ + (*i)->INPnextModel = (INPmodel *) NULL; /* pointer to next model (end of list) */ + (*i)->INPmodUsed = 0; /* model is unused */ + (*i)->INPmodLine = line; /* model line */ + (*i)->INPmodfast = NULL; + return (OK); } diff --git a/src/xspice/mif/mifgetmod.c b/src/xspice/mif/mifgetmod.c index 3b257651b..f873dc797 100755 --- a/src/xspice/mif/mifgetmod.c +++ b/src/xspice/mif/mifgetmod.c @@ -45,18 +45,14 @@ NON-STANDARD FEATURES ============================================================================*/ -/* #include "prefix.h" */ - #include "ngspice.h" - #include -#include "inpdefs.h" /* maschmann : kleinbuchstaben */ -#include "devdefs.h" /* maschmann : kleinbuchstaben */ -//#include "util.h" -#include "ifsim.h" /* maschmann : kleinbuchstaben */ -#include "cpstd.h" /* maschmann : kleinbuchstaben */ -#include "fteext.h" /* maschmann : kleinbuchstaben */ +#include "inpdefs.h" +#include "devdefs.h" +#include "ifsim.h" +#include "cpstd.h" +#include "fteext.h" #include "mifproto.h" #include "mifdefs.h" @@ -64,8 +60,8 @@ NON-STANDARD FEATURES #include "suffix.h" -/* This is the table of all models known to the program. */ -/* It is now defined in inpdefs.h 6.19.2003 -- SDB. */ +/* This is the table of all models known to the program. + It is now defined in inpmkmod.c. */ extern INPmodel *modtab; extern SPICEdev **DEVices; /* info about all device types */ @@ -86,13 +82,11 @@ defaulted later by MIFsetup(). The function returns NULL when successful, and an error string on failure. */ -/* char *MIFgetMod(ckt,name,model,tab) */ /* former buggy calling method */ - char *MIFgetMod( - void *ckt, /* The circuit structure */ - char *name, /* The name of the model to look for */ - INPmodel **model, /* The model found/created */ - INPtables *tab /* Table of model info from first pass */ + void *ckt, /* The circuit structure */ + char *name, /* The name of the model to look for */ + INPmodel **model, /* The model found/created */ + INPtables *tab /* Table of model info from first pass */ ) { INPmodel *modtmp;