ngspice/src/misc/ivars.c

92 lines
2.0 KiB
C
Raw Normal View History

2000-04-27 22:03:57 +02:00
/**********
Copyright 1991 Regents of the University of California. All rights reserved.
**********/
#include "ngspice.h"
#include "ivars.h"
#ifdef HAVE_STRING_H
#include <string.h>
#endif /* HAVE_STRING_H */
2001-02-09 14:27:21 +01:00
#include <stdlib.h>
2000-04-27 22:03:57 +02:00
#include <stdio.h>
char *Spice_Path;
char *News_File;
char *Default_MFB_Cap;
char *Help_Path;
char *Lib_Path;
static void
env_overr(char **v, char *e)
{
char *p;
if (v && e && (p = getenv(e)))
*v = p;
}
static void
mkvar(char **p, char *path_prefix, char *var_dir, char *env_var)
{
char *buffer;
/* Override by environment variables */
buffer = getenv(env_var);
#ifdef HAVE_ASPRINTF
2000-04-27 22:03:57 +02:00
if (buffer)
asprintf(p, "%s", buffer);
else
asprintf(p, "%s%s%s", path_prefix, DIR_PATHSEP, var_dir);
#else /* ~ HAVE_ASPRINTF */ /* va: we use tmalloc */
if (buffer){
*p = (char *) tmalloc(strlen(buffer)+1);
sprintf(*p,"%s",buffer);
/* asprintf(p, "%s", buffer); */
}
else{
*p = (char *) tmalloc(strlen(path_prefix) +
strlen(DIR_PATHSEP) + strlen(var_dir) + 1);
sprintf(*p, "%s%s%s", path_prefix, DIR_PATHSEP, var_dir);
/* asprintf(p, "%s%s%s", path_prefix, DIR_PATHSEP, var_dir); */
}
#endif /* HAVE_ASPRINTF */
2000-04-27 22:03:57 +02:00
}
void
ivars(void)
{
2001-02-09 14:27:21 +01:00
2001-11-22 21:43:36 +01:00
char *temp=NULL;
2001-02-09 14:27:21 +01:00
2000-04-27 22:03:57 +02:00
env_overr(&Spice_Exec_Dir, "SPICE_EXEC_DIR");
env_overr(&Spice_Lib_Dir, "SPICE_LIB_DIR");
mkvar(&News_File, Spice_Lib_Dir, "news", "SPICE_NEWS");
mkvar(&Default_MFB_Cap, Spice_Lib_Dir, "mfbcap", "SPICE_MFBCAP");
mkvar(&Help_Path, Spice_Lib_Dir, "helpdir", "SPICE_HELP_DIR");
mkvar(&Lib_Path, Spice_Lib_Dir, "scripts", "SPICE_SCRIPTS");
mkvar(&Spice_Path, Spice_Exec_Dir, "ngspice", "SPICE_PATH");
env_overr(&Spice_Host, "SPICE_HOST");
env_overr(&Bug_Addr, "SPICE_BUGADDR");
env_overr(&Def_Editor, "SPICE_EDITOR");
2001-02-09 14:27:21 +01:00
env_overr(&temp, "SPICE_ASCIIRAWFILE");
2001-11-22 21:43:36 +01:00
if(temp)
AsciiRawFile = atoi(temp);
2001-02-09 14:27:21 +01:00
2000-04-27 22:03:57 +02:00
}
void
cleanvars(void)
{
tfree(News_File);
tfree(Default_MFB_Cap);
tfree(Help_Path);
tfree(Lib_Path);
tfree(Spice_Path);
2000-04-27 22:03:57 +02:00
}