Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

err.c File Reference

#include "stdlib.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "f2c.h"
#include "fio.h"
#include "fmt.h"
#include "rawio.h"

Go to the source code of this file.


Defines

#define MAXERR   (sizeof(F_err)/sizeof(char *)+100)

Functions

int(*)(*) f__donewrec (void)
 f__canseek (FILE *f)
void f__fatal (int n, char *s)
VOID f_init (Void)
 f__nowreading (unit *x)
 f__nowwriting (unit *x)
int err__fl (int f, int m, char *s)

Variables

unit f__units [MXUNIT]
flag f__init
cilistf__elist
icilistf__svic
flag f__reading
flag f__cplus
flag f__cblank
char * f__fmtbuf
flag f__external
int(* f__getn )(void)
int(*)(*) f__putn (int)
int(* f__doed )(struct syl *, char *, ftnlen)
int(*)(*) f__doned (struct syl *)
int(* f__dorevert )(void)
int(*)(*)(*) f__doend (void)
flag f__sequential
flag f__formatted
FILE * f__cf
unitf__curunit
int f__recpos
int f__cursor
int f__hiwater
int f__scale
char * f__icptr
char * F_err []

Define Documentation

#define MAXERR   (sizeof(F_err)/sizeof(char *)+100)
 

Definition at line 81 of file err.c.

Referenced by f__fatal().


Function Documentation

int err__fl int    f,
int    m,
char *    s
 

Definition at line 270 of file err.c.

References f__fatal().

00272 {
00273         if (!f)
00274                 f__fatal(m, s);
00275         if (f__doend)
00276                 (*f__doend)();
00277         return errno = m;
00278         }

f__canseek FILE *    f
 

Definition at line 86 of file err.c.

References isatty(), and S_ISDIR.

Referenced by f_init(), and f_open().

00088 {
00089 #ifdef NON_UNIX_STDIO
00090         return !isatty(fileno(f));
00091 #else
00092         struct stat x;
00093 
00094         if (fstat(fileno(f),&x) < 0)
00095                 return(0);
00096 #ifdef S_IFMT
00097         switch(x.st_mode & S_IFMT) {
00098         case S_IFDIR:
00099         case S_IFREG:
00100                 if(x.st_nlink > 0)      /* !pipe */
00101                         return(1);
00102                 else
00103                         return(0);
00104         case S_IFCHR:
00105                 if(isatty(fileno(f)))
00106                         return(0);
00107                 return(1);
00108 #ifdef S_IFBLK
00109         case S_IFBLK:
00110                 return(1);
00111 #endif
00112         }
00113 #else
00114 #ifdef S_ISDIR
00115         /* POSIX version */
00116         if (S_ISREG(x.st_mode) || S_ISDIR(x.st_mode)) {
00117                 if(x.st_nlink > 0)      /* !pipe */
00118                         return(1);
00119                 else
00120                         return(0);
00121                 }
00122         if (S_ISCHR(x.st_mode)) {
00123                 if(isatty(fileno(f)))
00124                         return(0);
00125                 return(1);
00126                 }
00127         if (S_ISBLK(x.st_mode))
00128                 return(1);
00129 #else
00130         Help! How does fstat work on this system?
00131 #endif
00132 #endif
00133         return(0);      /* who knows what it is? */
00134 #endif
00135 }

int(*)(*) f__donewrec void   
 

void f__fatal int    n,
char *    s
 

Definition at line 141 of file err.c.

References f__external, f__fmtbuf, f__formatted, f__reading, f__sequential, F_err, MAXERR, sig_die(), and unit::ufnm.

Referenced by ap_end(), err__fl(), l_write(), and unit_chk().

00143 {
00144         if(n<100 && n>=0) perror(s); /*SYSDEP*/
00145         else if(n >= (int)MAXERR || n < -1)
00146         {       fprintf(stderr,"%s: illegal error number %d\n",s,n);
00147         }
00148         else if(n == -1) fprintf(stderr,"%s: end of file\n",s);
00149         else
00150                 fprintf(stderr,"%s: %s\n",s,F_err[n-100]);
00151         if (f__curunit) {
00152                 fprintf(stderr,"apparent state: unit %d ",f__curunit-f__units);
00153                 fprintf(stderr, f__curunit->ufnm ? "named %s\n" : "(unnamed)\n",
00154                         f__curunit->ufnm);
00155                 }
00156         else
00157                 fprintf(stderr,"apparent state: internal I/O\n");
00158         if (f__fmtbuf)
00159                 fprintf(stderr,"last format: %s\n",f__fmtbuf);
00160         fprintf(stderr,"lately %s %s %s %s",f__reading?"reading":"writing",
00161                 f__sequential?"sequential":"direct",f__formatted?"formatted":"unformatted",
00162                 f__external?"external":"internal");
00163         sig_die(" IO", 1);
00164 }

f__nowreading unit   x
 

Definition at line 195 of file err.c.

References unit::ufd, unit::ufmt, unit::ufnm, and unit::uwrt.

00197 {
00198         long loc;
00199         int ufmt;
00200         extern char *f__r_mode[];
00201 
00202         if (!x->ufnm)
00203                 goto cantread;
00204         ufmt = x->ufmt;
00205         loc=ftell(x->ufd);
00206         if(freopen(x->ufnm,f__r_mode[ufmt],x->ufd) == NULL) {
00207  cantread:
00208                 errno = 126;
00209                 return(1);
00210                 }
00211         x->uwrt=0;
00212         (void) fseek(x->ufd,loc,SEEK_SET);
00213         return(0);
00214 }

f__nowwriting unit   x
 

Definition at line 218 of file err.c.

References close(), f__cf, fdopen(), O_WRONLY, unit::ufd, unit::ufmt, unit::ufnm, and unit::uwrt.

Referenced by s_wdfe(), s_wdue(), s_wsfe(), s_wsle(), s_wsne(), and s_wsue().

00220 {
00221         long loc;
00222         int ufmt;
00223         extern char *f__w_mode[];
00224 #ifndef NON_UNIX_STDIO
00225         int k;
00226 #endif
00227 
00228         if (!x->ufnm)
00229                 goto cantwrite;
00230         ufmt = x->ufmt;
00231 #ifdef NON_UNIX_STDIO
00232         ufmt |= 2;
00233 #endif
00234         if (x->uwrt == 3) { /* just did write, rewind */
00235 #ifdef NON_UNIX_STDIO
00236                 if (!(f__cf = x->ufd =
00237                                 freopen(x->ufnm,f__w_mode[ufmt],x->ufd)))
00238 #else
00239                 if (close(creat(x->ufnm,0666)))
00240 #endif
00241                         goto cantwrite;
00242                 }
00243         else {
00244                 loc=ftell(x->ufd);
00245 #ifdef NON_UNIX_STDIO
00246                 if (!(f__cf = x->ufd =
00247                         freopen(x->ufnm, f__w_mode[ufmt], x->ufd)))
00248 #else
00249                 if (fclose(x->ufd) < 0
00250                 || (k = x->uwrt == 2 ? creat(x->ufnm,0666)
00251                                      : open(x->ufnm,O_WRONLY)) < 0
00252                 || (f__cf = x->ufd = fdopen(k,f__w_mode[ufmt])) == NULL)
00253 #endif
00254                         {
00255                         x->ufd = NULL;
00256  cantwrite:
00257                         errno = 127;
00258                         return(1);
00259                         }
00260                 (void) fseek(x->ufd,loc,SEEK_SET);
00261                 }
00262         x->uwrt = 1;
00263         return(0);
00264 }

VOID f_init Void   
 

Definition at line 167 of file err.c.

References f__canseek(), f__init, malloc, p, unit::ufd, unit::ufmt, unit::useek, and unit::uwrt.

00168 {       unit *p;
00169 
00170         f__init=1;
00171         p= &f__units[0];
00172         p->ufd=stderr;
00173         p->useek=f__canseek(stderr);
00174 #ifdef NON_UNIX_STDIO
00175         setbuf(stderr, (char *)malloc(BUFSIZ));
00176 #else
00177         stderr->_flag &= ~_IONBF;
00178 #endif
00179         p->ufmt=1;
00180         p->uwrt=1;
00181         p = &f__units[5];
00182         p->ufd=stdin;
00183         p->useek=f__canseek(stdin);
00184         p->ufmt=1;
00185         p->uwrt=0;
00186         p= &f__units[6];
00187         p->ufd=stdout;
00188         p->useek=f__canseek(stdout);
00189         p->ufmt=1;
00190         p->uwrt=1;
00191 }

Variable Documentation

flag f__cblank
 

Definition at line 27 of file err.c.

FILE* f__cf
 

Definition at line 41 of file err.c.

Referenced by f__nowwriting().

flag f__cplus
 

Definition at line 27 of file err.c.

int f__cursor
 

Definition at line 44 of file err.c.

Referenced by rd_ed(), and rd_ned().

unit* f__curunit
 

Definition at line 42 of file err.c.

int(* f__doed)(struct syl*, char*, ftnlen)
 

int(*)(*)(*) f__doend(void)
 

Definition at line 37 of file err.c.

int(*)(*) f__doned(struct syl*)
 

Definition at line 36 of file err.c.

int(* f__dorevert)(void)
 

Definition at line 67 of file fmt.h.

cilist* f__elist
 

Definition at line 24 of file err.c.

flag f__external
 

Definition at line 29 of file err.c.

Referenced by f__fatal().

char* f__fmtbuf
 

Definition at line 28 of file err.c.

Referenced by e_rsfe(), e_wsfe(), and f__fatal().

flag f__formatted
 

Definition at line 40 of file err.c.

Referenced by f__fatal().

int(* f__getn)(void)
 

int f__hiwater
 

Definition at line 44 of file err.c.

Referenced by s_wsfe(), x_putc(), x_wSL(), xw_end(), and xw_rev().

char* f__icptr
 

Definition at line 45 of file err.c.

Referenced by mv_cur().

flag f__init
 

Definition at line 23 of file err.c.

Referenced by f_init().

int(*)(*) f__putn(int)
 

Definition at line 35 of file err.c.

flag f__reading
 

Definition at line 26 of file err.c.

Referenced by f__fatal().

int f__recpos
 

Definition at line 43 of file err.c.

Referenced by c_lir(), i_getc(), and i_ungetc().

int f__scale
 

Definition at line 44 of file err.c.

flag f__sequential
 

Definition at line 39 of file err.c.

Referenced by f__fatal().

icilist* f__svic
 

Definition at line 25 of file err.c.

unit f__units[MXUNIT]
 

Definition at line 22 of file err.c.

char* F_err[]
 

Definition at line 48 of file err.c.

Referenced by f__fatal().

 

Powered by Plone

This site conforms to the following standards: