enable compilation for Windows console app

This commit is contained in:
h_vogt 2009-11-16 19:52:51 +00:00
parent addc31f7d4
commit 7b1f733190
3 changed files with 89 additions and 69 deletions

View File

@ -1,3 +1,7 @@
2009-11-15 Holger Vogt
* com_sysinfo.c: line 355 changed, allow mingw console compilation
runcoms2.c: cosmetics
2009-11-15 Holger Vogt
* main.c, src/include/compatmode.h: compatibility mode flag for HSPICE and SPICE3
xpressn.c: compatmode removed

View File

@ -352,7 +352,7 @@ TesError tesCreateSystemInfo(TesSystemInfo *info) {
return error;
}
#elif HAS_WINDOWS
#elif defined(HAVE_WIN32)
/* get memory information */
static size_t get_sysmem(struct sys_memory *memall) {

View File

@ -42,107 +42,123 @@ bool resumption = FALSE;
void
com_resume(wordlist *wl)
{
struct dbcomm *db;
int err;
struct dbcomm *db;
int err;
/*rawfile output saj*/
bool dofile = FALSE;
char buf[BSIZE_SP];
bool ascii = AsciiRawFile;
/*end saj*/
/*rawfile output saj*/
bool dofile = FALSE;
char buf[BSIZE_SP];
bool ascii = AsciiRawFile;
/*end saj*/
/*saj fix segment*/
if (!ft_curckt) {
/*saj fix segment*/
if (!ft_curckt) {
fprintf(cp_err, "Error: there aren't any circuits loaded.\n");
return;
} else if (ft_curckt->ci_ckt == NULL) { /* Set noparse? */
return;
} else if (ft_curckt->ci_ckt == NULL) { /* Set noparse? */
fprintf(cp_err, "Error: circuit not parsed.\n");
return;
}
/*saj*/
}
/*saj*/
if (ft_curckt->ci_inprogress == FALSE) {
fprintf(cp_err, "Note: run starting\n");
com_run((wordlist *) NULL);
return;
}
ft_curckt->ci_inprogress = TRUE;
ft_setflag = TRUE;
if (ft_curckt->ci_inprogress == FALSE) {
fprintf(cp_err, "Note: run starting\n");
com_run((wordlist *) NULL);
return;
}
ft_curckt->ci_inprogress = TRUE;
ft_setflag = TRUE;
reset_trace( );
for ( db = dbs, resumption = FALSE; db; db = db->db_next )
if( db->db_type == DB_IPLOT || db->db_type == DB_IPLOTALL ) {
resumption = TRUE;
}
reset_trace( );
for ( db = dbs, resumption = FALSE; db; db = db->db_next )
if( db->db_type == DB_IPLOT || db->db_type == DB_IPLOTALL ) {
resumption = TRUE;
}
/*rawfile output saj*/
if (last_used_rawfile)
/*rawfile output saj*/
if (last_used_rawfile)
dofile = TRUE;
if (cp_getvar("filetype", VT_STRING, buf)) {
if (cp_getvar("filetype", VT_STRING, buf)) {
if (eq(buf, "binary"))
ascii = FALSE;
ascii = FALSE;
else if (eq(buf, "ascii"))
ascii = TRUE;
ascii = TRUE;
else
fprintf(cp_err,
"Warning: strange file type \"%s\" (using \"ascii\")\n",
buf);
}
fprintf(cp_err,
"Warning: strange file type \"%s\" (using \"ascii\")\n",
buf);
}
if (dofile) {
if (dofile) {
#ifdef PARALLEL_ARCH
if (ARCHme == 0) {
if (ARCHme == 0) {
#endif /* PARALLEL_ARCH */
if (!last_used_rawfile)
rawfileFp = stdout;
else if (!(rawfileFp = fopen(last_used_rawfile, "a"))) {
setvbuf(rawfileFp, rawfileBuf, _IOFBF, RAWBUF_SIZE);
perror(last_used_rawfile);
ft_setflag = FALSE;
return;
if (!last_used_rawfile)
rawfileFp = stdout;
#if defined(__MINGW32__) || defined(_MSC_VER)
/* ask if binary or ASCII, open file with w or wb hvogt 15.3.2000 */
else if (ascii) {
if(!(rawfileFp = fopen(last_used_rawfile, "a"))) {
setvbuf(rawfileFp, rawfileBuf, _IOFBF, RAWBUF_SIZE);
perror(last_used_rawfile);
ft_setflag = FALSE;
return;
}
}
else if (!ascii) {
if(!(rawfileFp = fopen(last_used_rawfile, "ab"))) {
setvbuf(rawfileFp, rawfileBuf, _IOFBF, RAWBUF_SIZE);
perror(last_used_rawfile);
ft_setflag = FALSE;
return;
}
}
rawfileBinary = !ascii;
/*---------------------------------------------------------------------------*/
#else
else if (!(rawfileFp = fopen(last_used_rawfile, "a"))) {
setvbuf(rawfileFp, rawfileBuf, _IOFBF, RAWBUF_SIZE);
perror(last_used_rawfile);
ft_setflag = FALSE;
return;
}
#endif
#ifdef PARALLEL_ARCH
} else {
rawfileFp = NULL;
}
#endif /* PARALLEL_ARCH */
} else {
rawfileBinary = !ascii;
} else {
rawfileFp = NULL;
}
} /* if dofile */
/*end saj*/
err = if_run(ft_curckt->ci_ckt, "resume", (wordlist *) NULL,
err = if_run(ft_curckt->ci_ckt, "resume", (wordlist *) NULL,
ft_curckt->ci_symtab);
/*close rawfile saj*/
if (rawfileFp){
/*close rawfile saj*/
if (rawfileFp){
if (ftell(rawfileFp)==0) {
(void) fclose(rawfileFp);
(void) remove(last_used_rawfile);
(void) fclose(rawfileFp);
(void) remove(last_used_rawfile);
} else {
(void) fclose(rawfileFp);
(void) fclose(rawfileFp);
}
}
/*end saj*/
}
/*end saj*/
if (err == 1) {
/* The circuit was interrupted somewhere. */
if (err == 1) {
/* The circuit was interrupted somewhere. */
fprintf(cp_err, "simulation interrupted\n");
} else if (err == 2) {
fprintf(cp_err, "simulation aborted\n");
ft_curckt->ci_inprogress = FALSE;
} else
ft_curckt->ci_inprogress = FALSE;
return;
fprintf(cp_err, "simulation interrupted\n");
} else if (err == 2) {
fprintf(cp_err, "simulation aborted\n");
ft_curckt->ci_inprogress = FALSE;
} else
ft_curckt->ci_inprogress = FALSE;
return;
}
/* Throw out the circuit struct and recreate it from the deck. This command