Doxygen Source Code Documentation
thd_logafni.c File Reference
#include "niml.h"
Go to the source code of this file.
Defines | |
#define | AFNI_SERVER "tcp:afni.nimh.nih.gov:80" |
#define | AFNI_REQUEST |
Functions | |
void | AFNI_serverlog (char *str) |
Define Documentation
|
Value: "HEAD /AFNIlogpath HTTP/1.0\r\n" \ "User-Agent: %s\r\n\r\n" Definition at line 12 of file thd_logafni.c. Referenced by AFNI_serverlog(). |
|
Stream name to connect to AFNI server. Definition at line 8 of file thd_logafni.c. Referenced by AFNI_serverlog(). |
Function Documentation
|
Log the input string to the AFNI server. Sends an HTTP request with the input string as the 'user agent', which will be saved in the Web server logs. -------------------------------------------------------------------------- Definition at line 21 of file thd_logafni.c. References AFNI_noenv(), AFNI_REQUEST, AFNI_SERVER, malloc, NI_sleep(), NI_stream_closenow(), NI_stream_open(), NI_stream_write(), and NI_stream_writecheck().
00022 { 00023 pid_t child_pid ; 00024 NI_stream ns ; 00025 int nbuf=0 , jj ; 00026 char *sbuf , *rbuf , *ss ; 00027 00028 if( str == NULL || *str == '\0' ) return ; 00029 if( AFNI_noenv("AFNI_VERSION_CHECK") ) return ; 00030 00031 /*-- start the child process --*/ 00032 00033 child_pid = fork() ; 00034 if( child_pid != (pid_t)0 ) return ; /* parent is done */ 00035 00036 /*-- child will never return alive! --*/ 00037 00038 /* open stream to server */ 00039 00040 ns = NI_stream_open( AFNI_SERVER , "w" ) ; 00041 if( ns == (NI_stream)NULL ) _exit(0) ; 00042 00043 /* copy input string, replace bad chars with spaces */ 00044 00045 sbuf = strdup(str) ; 00046 for( ss=sbuf ; *ss != '\0' ; ss++ ) if( !isgraph(*ss) ) *ss = ' ' ; 00047 00048 /* truncate trailing spaces */ 00049 00050 nbuf = strlen(sbuf) ; 00051 for( ss=sbuf+(nbuf-1) ; isspace(*ss) ; ss-- ) *ss = '\0' ; 00052 00053 /* build request to AFNI server */ 00054 00055 nbuf = strlen(sbuf)+strlen(AFNI_REQUEST)+32 ; 00056 rbuf = (char *)malloc(nbuf) ; 00057 sprintf(rbuf,AFNI_REQUEST,sbuf) ; 00058 00059 /* wait for stream to get good for writing */ 00060 00061 jj = NI_stream_writecheck( ns , 1234 ) ; 00062 if( jj < 1 ) _exit(0) ; 00063 00064 /* send the request */ 00065 00066 NI_stream_write( ns , rbuf , strlen(rbuf) ) ; 00067 00068 /* don't read response: wait a decent interval, close connection, quit */ 00069 00070 NI_sleep(1) ; NI_stream_closenow(ns) ; _exit(0) ; 00071 } |