1 #include <../../nrnconf.h> 35 df =
fopen(
"debugfile",
"w");
37 va_start(args, format);
38 vfprintf(df, format, args);
44 #if defined(WIN32) && !defined(CYGWIN) 47 if (hoc_redir_stdout) {
51 }
else if (hoc_redir_stdout) {
52 fclose(hoc_redir_stdout);
53 hoc_redir_stdout = (FILE*)0;
56 pushx ( (hoc_redir_stdout) ? (
double)fileno(hoc_redir_stdout) : 1.);
58 #if defined(MAC) && !defined(DARWIN) 76 if (dup2(fileno(f1), 1) < 0) {
80 }
else if (prev > -1) {
81 if (dup2(prev, 1) < 0) {
88 pushx((
double)fileno(stdout));
154 for (cp1=s, cp2 = hs->
buf + begin; *cp1; ++cp1) {
155 if (*cp1 ==
'$' && cp1[1] ==
'(') {
159 for (cp3 = buf; *cp1 && *cp1 !=
')'; ++cp1) {
165 if (strcmp(buf,
"NEURONHOME") == 0) {
186 #if MAC && !defined(DARWIN) 188 for (cp1 = hs->
buf+begin; *cp1; ++cp1) {
196 if (!strchr(s,
':') && !strchr(s,
'$')) {
197 if (hs->
buf[begin] ==
':') {
204 for (cp1 = hs->
buf+begin , cp2 = cp1; *cp1 ;) {
205 if (cp1[0] ==
':' && cp1[1] ==
'.') {
209 }
else if (cp1[2] ==
'.' && cp1[3] ==
':') {
233 int savpipflag, save_lineno;
235 char*
fname = strdup(name);
239 if (rcs[0] !=
'\0') {
240 int sz = 2*(strlen(rcs) + strlen(name)) + 20;
242 fname =
static_cast<char*
>(
emalloc(sz));
243 Sprintf(fname,
"co -p%s %s > %s-%s", rcs, name,
247 hoc_execerror(name,
"\nreturned error in hoc_co system call");
249 Sprintf(fname,
"%s-%s", name, rcs);
262 while (
errno == EINTR) {
343 d = (
int)strlen(buf);
369 if (fscanf(fi,
"%255s", fs) == EOF) {
372 if (fs[0] ==
'i' || fs[0] ==
'n' || fs[0] ==
'I' || fs[0] ==
'N') {
375 if (sscanf(fs,
"%lf", &d) == 1) {
377 if(fscanf(fi,
"\n")) {;}
392 if (fs[0] ==
'i' || fs[0] ==
'n' || fs[0] ==
'I' || fs[0] ==
'N') {
395 if (sscanf(fs,
"%lf", &d) == 1) {
446 pushx((
double)strlen(buf));
452 char *pbuf, *pfmt, *pfrag, frag[120];
453 int n, convflag, lflag, didit;
458 convflag = lflag = didit = 0;
464 for (pfmt = fmt; *pfmt; pfmt++)
468 if (convflag) {
switch (*pfmt)
481 pfrag[0] = pfrag[-1];
526 }
else if (*pfmt ==
'%') {
528 }
else if (pfrag - frag > 100) {
535 while (*pbuf) { pbuf++; }
547 while (*pbuf) { pbuf++; }
558 #if defined(__TURBOC__) || defined(__GO32__) || defined(WIN32) || defined(MAC) 562 assert(strlen(cmd) + 20 < 1024);
563 sprintf(buf,
"sh %s > hocload.tmp", cmd);
566 }
else if ( (fp =
fopen(
"hocload.tmp",
"r")) == (FILE*)0) {
574 unlink(
"hocload.tmp");
577 #define oc_popen popen 578 #define oc_pclose pclose 596 if (!sym || sym->
type == UNDEF) {
597 assert(strlen(stype) + strlen(s) + 50 < 1024);
598 sprintf(cmd,
"$NEURONHOME/lib/hocload.sh %s %s %d", stype, s,
hoc_pid());
601 f = fgets(file, 1024, p);
603 f[strlen(f)-1] =
'\0';
607 fprintf(stderr,
"Getting %s from %s\n", s, f);
610 fprintf(stderr,
"Couldn't find a file that declares %s\n", s);
622 if (p_hoc_load_java) {
623 r = (*p_hoc_load_java)();
670 #define hoc_load_file_size_ 1024 693 if (strcmp(
STR(q), name) == 0) {
707 if ((base = strrchr(name,
'/')) !=
NULL) {
708 strncpy(path, name, base-name);
709 path[base-
name] =
'\0';
712 f = nrn_fw_readaccess(name);
714 f =
fopen(name,
"r");
721 f = nrn_fw_readaccess(base);
723 f =
fopen(base,
"r");
728 hlp =
getenv(
"HOC_LIBRARY_PATH");
730 char* cp = strchr(hlp,
':');
732 cp = strchr(hlp,
' ');
735 cp = hlp + strlen(hlp);
738 strncpy(path, hlp, cp-hlp);
762 sprintf(path,
"$(NEURONHOME)/lib/hoc");
777 #if USE_NRNFILEWRAP == 0 788 goback = (getcwd(old, 1000) != 0);
791 hoc_warning(
"Couldn't change directory to:", path);
801 snprintf(cmd,
hoc_load_file_size_+50,
"hoc_ac_ = execute1(\"{xopen(\\\"%s\\\")}\")\n", base);
806 if (path[0] && goback) {
808 hoc_warning(
"Couldn't change directory back to:", old);
824 hoc_execerror(
"getcwd failed. Perhaps the path length is > hoc_load_file_size_", (
char*)0);
833 if (buf[len-1] !=
':') {
838 if (buf[len-1] !=
'/') {
849 #if !defined(__GO32__) && !defined(WIN32) && !defined(MAC) 854 gethostname(buf, 20);
876 if (nrn_is_python_extension) {
893 size = vfprintf(stream, fmt, ap);
900 #if defined(__GNUC__) || defined(__clang__) 901 #define va_copy(dest, src) __builtin_va_copy(dest, src) 903 #define va_copy(dest, src) (dest = src) 907 size = vsnprintf(p, size, fmt, apc);
914 p =
static_cast<char*
>(malloc(size));
918 size = vsnprintf(p, size, fmt, ap);
925 if (stream == stderr) {
926 for (
int i = 0; p[
i] !=
'\0'; ++
i) {
927 if (!isascii((
unsigned char)p[
i])) {
933 (*nrnpy_pr_stdoe_callback)((stream == stderr) ? 2 : 1, p);
948 int Fprintf(FILE* stream,
const char *fmt, ...) {
964 size = vsnprintf(
NULL, 0, fmt, ap);
968 constexpr
size_t maxsize = 512;
971 size = vsnprintf(s, maxsize, fmt, ap);
hoc_List * hoc_l_newlist()
int nrn_is_python_extension
void * erealloc(void *ptr, size_t n)
double hoc_scan(FILE *fi)
static int(* nrnpy_pr_stdoe_callback)(int, char *)
#define nrn_fw_set_stdin()
char * hoc_current_xopen(void)
#define ITERATE(itm, lst)
int hoc_is_double_arg(int narg)
size_t hoc_xopen_file_size_
Symbol * hoc_lookup(const char *)
char * hoc_object_name(Object *ob)
const char * expand_env_var(const char *s)
#define nrn_fw_eq(fw, ff)
int nrnpy_pr(const char *fmt,...)
char ** hoc_pgargstr(int narg)
sprintf(buf," if (secondorder) {\ " int _i;\" " for(_i=0;_i< %d;++_i) {\" " _p[_slist%d[_i]]+=dt *_p[_dlist%d[_i]];\" " }}\", numeqn, listnum, listnum)
int system(const char *s)
int Fprintf(FILE *stream, const char *fmt,...)
void hoc_load_template(void)
int hoc_xopen_run(Symbol *sp, const char *str)
hoc_Item * hoc_l_lappendstr(hoc_List *, const char *)
void hoc_assign_str(char **cpp, const char *buf)
void hoc_execerr_ext(const char *fmt,...)
printf style specification of hoc_execerror message.
void hoc_audit_from_xopen1(const char *fname, const char *rcs)
int hoc_chdir(const char *path)
void hoc_sprint1(char **ppbuf, int argn)
int const size_t const size_t n
static int(* nrnpy_pass_callback)()
#define hoc_load_file_size_
void hocstr_resize(HocStr *hs, size_t n)
HocStr * hocstr_create(size_t size)
void hoc_warning(const char *, const char *)
int hoc_oc(const char *buf)
static const char * fname(const char *name)
void hoc_execerror(const char *, const char *)
char * getenv(const char *s)
fprintf(stderr, "Don't know the location of params at %p\, pp)
double hoc_fw_scan(NrnFILEWrap *fi)
char * fgets_unlimited(HocStr *s, NrnFILEWrap *f)
char * emalloc(unsigned n)
#define va_copy(dest, src)
char * hoc_back2forward(char *)
#define NOT_PARALLEL_SUB(c1)
void nrnpy_set_pr_etal(int(*cbpr_stdoe)(int, char *), int(*cbpass)())
static int hoc_Load_file(int, const char *)
int hoc_is_object_arg(int narg)
void hoc_pushstr(char **d)
int hoc_xopen1(const char *name, const char *rcs)
void debugfile(const char *,...)
int hoc_retrieving_audit(void)
Object ** hoc_objgetarg(int)
void hoc_machine_name(void)
void hoc_xopen_from_audit(const char *fname)
double chkarg(int, double low, double high)
static void hoc_load(const char *stype)
static int vnrnpy_pr_stdoe(FILE *stream, const char *fmt, va_list ap)