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  

afni_logger.c File Reference

#include "mrilib.h"
#include <sys/file.h>

Go to the source code of this file.


Defines

#define LOCK_file(fp)   flock(fileno(fp),LOCK_EX|LOCK_NB)
#define UNLOCK_file(fp)   flock(fileno(fp),LOCK_UN)
#define LOGFILE   ".afni.log"

Functions

void AFNI_sleep (int msec)
int AFNI_logger (char *pname, int argc, char **argv)

Define Documentation

#define LOCK_file fp       flock(fileno(fp),LOCK_EX|LOCK_NB)
 

Definition at line 11 of file afni_logger.c.

Referenced by AFNI_logger().

#define LOGFILE   ".afni.log"
 

Definition at line 22 of file afni_logger.c.

Referenced by AFNI_logger().

#define UNLOCK_file fp       flock(fileno(fp),LOCK_UN)
 

Definition at line 12 of file afni_logger.c.

Referenced by AFNI_logger().


Function Documentation

int AFNI_logger char *    pname,
int    argc,
char **    argv
 

Definition at line 40 of file afni_logger.c.

References AFMALL, AFNI_sleep(), AFNI_yesenv(), argc, fll, free, getenv(), LOCK_file, LOGFILE, THD_filesize(), tross_commandline(), tross_datetime(), and UNLOCK_file.

Referenced by F3D_initialize_user_data(), get_inputs(), get_line_opt(), get_options(), initialize_program(), and main().

00041 {
00042    char *cline, *cdate , *eh , *fn , *logfile=LOGFILE ;
00043    FILE *fp ;
00044    int ll ; unsigned long fll ;
00045 
00046    if( pname == NULL || pname[0] == '\0' ) return -1 ;
00047    eh = getenv("HOME") ; if( eh == NULL )  return -1 ;
00048    if( AFNI_yesenv("AFNI_DONT_LOGFILE") )  return -1 ;
00049    if( argc > 1 ) cline = tross_commandline( pname , argc , argv ) ;
00050    else           cline = strdup(pname) ;
00051    if( cline == NULL ) return -1 ;
00052    cdate = tross_datetime() ;
00053    fn = AFMALL(char,  strlen(eh)+strlen(logfile)+8) ;
00054    strcpy(fn,eh) ; strcat(fn,"/") ; strcat(fn,logfile) ;
00055    if( (fll=THD_filesize(fn)) > 100000000 )   /* 01 Jun 2005: for Kevin */
00056      fprintf(stderr,"++ WARNING: file %s is now %lu bytes long!\n",fn,fll) ;
00057    fp = fopen(fn,"a") ;
00058    if( fp == NULL ){ free(fn); free(cdate); free(cline); return -1; }
00059    ll = LOCK_file(fp) ;
00060    if( ll ){
00061 #if 0
00062      fprintf(stderr,"%s: LOCKED\n",cline);
00063 #endif
00064      ll = strlen(pname) ; if( ll > 11 ) ll = 11 ;
00065      AFNI_sleep(ll) ; ll = LOCK_file(fp) ;
00066      if( ll ){ fclose(fp); free(fn); free(cdate); free(cline); return -1; }
00067    }
00068    fseek(fp,0,SEEK_END) ;
00069    fprintf(fp,"[%s] %s\n",cdate,cline) ;
00070    UNLOCK_file(fp) ; fclose(fp) ;
00071    free(fn); free(cdate); free(cline) ; return 0;
00072 }

void AFNI_sleep int    msec
 

Definition at line 26 of file afni_logger.c.

Referenced by AFNI_logger(), and drive_MCW_grapher().

00027 {
00028    struct timeval tv ;
00029    if( msec <= 0 ) return ;
00030    tv.tv_sec  = msec/1000 ;
00031    tv.tv_usec = (msec%1000)*1000 ;
00032    select( 1 , NULL,NULL,NULL , &tv ) ;
00033    return ;
00034 }
 

Powered by Plone

This site conforms to the following standards: