1 #include <../../nrnconf.h> 18 #include <sys/types.h> 28 static NrnFILEWrap* nrn_fw_read(
const char* path,
const char* mode);
69 f =
fopen(path, mode);
74 fw = nrn_fw_read(path, mode);
79 int nrn_fw_readaccess(
const char* path) {
82 r = access(path, R_OK);
85 r = access(path, R_OK);
87 printf(
"access %s %d\n", path, r);
92 r = ((r == 0) ? 1 : 0);
100 r = fseek(fw->f, offset, whence);
107 i = offset + fw->ip;
break;
109 i = offset + fw->cnt;
break;
111 if (i >= 0 && i <= fw->
cnt) {
129 if (fw->ip < fw->cnt) {
130 c = (
int)fw->buf[fw->ip++];
139 e = ungetc(c, fw->f);
142 fw->buf[--fw->ip] = (
unsigned char)c;
149 static int nrn_vsscanf(
const char *str,
const char** rs,
const char *
format, va_list args);
156 i = vfscanf(fw->f, fmt, ap);
159 i = nrn_vsscanf(fw->buf + fw->ip, &rs, fmt, ap);
160 fw->ip = (
unsigned char*)rs - fw->buf;
166 NrnFILEWrap* nrn_fw_read(
const char* path,
const char* mode){
170 unsigned char*
buf = (
char*)0;
172 FILE* f =
fopen(path, mode);
179 buf = (
unsigned char*)
emalloc(sz+2);
184 printf(
"load %s %d\n", path, isz);
193 buf = (
unsigned char*)
emalloc(sz+2);
204 fw->buf = (
unsigned char*)buf;
#define nrn_fw_set_stdin()
#define nrn_fw_delete(fw)
static void nrnmpi_char_broadcast(char *, int, int)
static void nrnmpi_int_broadcast(int *, int, int)
char * emalloc(unsigned n)
#define nrn_fw_ungetc(c, fw)