/* * $Header: /home/gene/library/website/docsrc/spd/RCS/spd.cgi.c,v 395.1 2008/04/20 17:25:48 gene Exp $ * * Copyright (c) 2003 by Gene Michael Stover. * All rights reserved. * Permission to copy, store, & view this document unmodified & * in its entirety is granted. */ /* Standard C */ #include #include #include #include #include #include #include /* Unix */ #include extern void alarm (); extern int getpid (); /* * Some constants */ static char S_title[] = "Estimate of the throughput of your Internet connection"; static char S_author[] = "Gene Michael Stover"; static time_t S_tt_start, S_tt_end; static unsigned long S_char_count = 0; static char S_chars[1024]; static int S_chars_len = 0; static int S_Init () { int rc = 0; int i; for (i = 'A'; i <= 'Z'; ++i) { S_chars[S_chars_len++] = i; } for (i = 'a'; i <= 'z'; ++i) { S_chars[S_chars_len++] = i; } for (i = '0'; i <= '9'; ++i) { S_chars[S_chars_len++] = i; } S_chars[S_chars_len++] = '\n'; srand (time (NULL) + getpid ()); return rc; } static void S_Print (char fmt[], ...) { va_list ap; char tmp[16 * 1024]; va_start (ap, fmt); vsprintf (tmp, fmt, ap); fputs (tmp, stdout); S_char_count += strlen (tmp); va_end (ap); } static void S_PrintHeader () { S_Print ("Content-Type: text/html\r\n"); S_Print ("\r\n"); S_Print ("\r\n"); S_Print (""); S_Print ("\r\n"); S_Print ("\r\n"); S_Print ("\r\n"); S_Print ("%s\r\n", S_title); S_Print ("\r\n"); S_Print ("\r\n"); S_Print ("\r\n"); S_Print ("\"next_inactive\"\r\n"); \r\n"); S_Print ("\"up\"\r\n"); \r\n"); S_Print ("\"previous\"\r\n"); \r\n"); S_Print (" \r\n"); S_Print (" \r\n"); } static void S_PrintFooter () { struct tm stm; char str[1024]; S_Print ("\r\n

End.

"); S_Print ("\r\n

This page autogenerated on"); memcpy (&stm, gmtime (&S_tt_start), sizeof stm); strftime (str, sizeof str, "%Y-%m-%dT%H:%M:%S", &stm); S_Print ("\r\n%s.

", str); S_Print ("\r\n

Copyright © 2003 Gene Michael Stover. "); S_Print ("All rights reserved. "); S_Print ("Permission to copy, store, saved, & transmit "); S_Print ("electronically is granted.

"); S_Print ("\r\n"); S_Print ("\r\n"); S_Print ("\r\n"); } static int S_isAlarm = 0; /* a boolean */ static void S_SetAlarm (ignored) int ignored; { S_isAlarm = 1; } static void S_PrepareAlarm () { S_isAlarm = 0; signal (SIGALRM, &S_SetAlarm); alarm (2); } static void S_FillStr (str, length) char str[]; int length; { static int block_count = 0; int i = 0; sprintf (str, "\r\n