/* ** getenv.c ** ** for POSIX , WIN32 ** ** version 1.0.1 - 2002/03/31 ** ** Copyright (c) Absurd Technology Lab 2002 ** */ #include #include #ifdef _WIN32 #include #pragma comment(lib, "wsock32.lib") #else #include #endif void printTo( FILE *f, char *envp[], const char * const expires ); void make_DateFormat( char *buffer, int size, time_t time ); main( int argc , char *argv[] , char *envp[] ) { char date[32]; time_t settime; #ifdef _WIN32 WSADATA wsaData; if( WSAStartup( MAKEWORD(1, 1), &wsaData ) ) return 0; #endif // header printf( "Content-type: text/html\n" ); time( &settime ); settime -= 60; strftime( date, 32, "%a, %d %b %Y %H:%M:%S GMT", gmtime( &settime ) ); printf( "Last-Modified: %s\n", date ); settime += 120; strftime( date, 32, "%a, %d %b %Y %H:%M:%S GMT", gmtime( &settime ) ); printf( "Expires: %s\n\n", date ); // data printTo( stdout, envp, date ); // example // file output // if( f = fopen( "filename", "w" ) ) // { // printTo( f, envp, date ); // fclose( f ); // } #ifdef _WIN32 WSACleanup(); #endif return 0; } void printTo( FILE *f, char *envp[], const char * const expires ) { char const * ptr; int i; fprintf( f, "\n" ); fprintf( f, "\n" ); fprintf( f, "" ); fprintf( f, "\n" ); fprintf( f, "\n" ); fprintf( f, "\n" ); fprintf( f, "\n", expires ); fprintf( f, "Environment Variable List\n" ); fprintf( f, "\n" ); fprintf( f, "\n" ); fprintf( f, "

Environment Variable List

\n" ); fprintf( f, "\n" ); fprintf( f, "\n\t\n\t\n\n" ); fprintf( f, "\n\t\n" ); fprintf( f, "\t\t\n" ); fprintf( f, "\t\t\n" ); fprintf( f, "\t\n\n" ); fprintf( f, "\n" ); for( i = 0; ptr = envp[i], ( ptr && *ptr ); i++ ) { int flag = 0; fprintf( f, "\t\n\t\t\n\t\t\n\t\n" ); } ptr = (char const*)getenv( "REMOTE_ADDR" ); if( ptr && *ptr ) { struct hostent *remote_host; struct in_addr iaddr; iaddr.s_addr = inet_addr( ptr ); remote_host = gethostbyaddr( (const char*)&iaddr.s_addr, sizeof(iaddr.s_addr), AF_INET ); if( remote_host ) { fprintf( f, "\t\n\t\t\n\t\t\n\t\n", remote_host->h_name ); } } fprintf( f, "\n
environment variable nameenvironment variable value
" ); putchar( *ptr ); while( *++ptr ) { switch( *ptr ) { case '=': if( !flag ) { fprintf( f, "" ); flag++; } else putchar( *ptr ); break; case '<': fprintf( f, "<" ); break; case '>': fprintf( f, ">" ); break; case '&': fprintf( f, "&" ); break; default: putchar( *ptr ); break; } } fprintf( f, "
\n\t\t\tHostName from IPaddr\n\t\t\n\t\t\t%s\n\t\t
\n\n" ); }