home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet 1996 World Exposition
/
park.org.s3.amazonaws.com.7z
/
park.org.s3.amazonaws.com
/
cgi-bin
/
Japan
/
Theme
/
moon.cgi.c
< prev
next >
Wrap
C/C++ Source or Header
|
2017-09-21
|
2KB
|
93 lines
/*
* moon.cgi.c
* 96/12/29 by haruki@st.rim.or.jp
* original program is created by Christopher Osburn(chris@lunaroutreach.org)
*
*/
#include <stdio.h>
#include <time.h>
#include <fcntl.h>
#define LPERIOD (2551442.9) /* synodic period of the moon, seconds,
from astronomical almanac 1992 */
#define EPOCH (811961700L) /* commencement of lunation 900
1995 Sep 24 16:55 UT (assuming
16:55:00 for lack of better info) */
main()
{
time_t now;
double qpom();
int age;
int per;
char *moonfile, file[80];
int fd;
char c, buf[80];
now = time(NULL);
age = (int)(qpom(now) + 0.5);
per = (int)(100.0 * (double)age / (LPERIOD / 86400.0));
if (98 <= per || per < 4) {
moonfile = "moon0.gif"; /* new moon */
} else if (4 <= per && per < 10) {
moonfile = "moon1.gif";
} else if (10 <= per && per < 17) {
moonfile = "moon2.gif";
} else if (17 <= per && per < 23) {
moonfile = "moon3.gif";
} else if (23 <= per && per < 31) {
moonfile = "moon4.gif"; /* half moon */
} else if (31 <= per && per < 36) {
moonfile = "moon5.gif";
} else if (36 <= per && per < 41) {
moonfile = "moon6.gif";
} else if (41 <= per && per < 47) {
moonfile = "moon7.gif";
} else if (47 <= per && per < 55) {
moonfile = "moon8.gif"; /* full moon */
} else if (55 <= per && per < 59) {
moonfile = "moon9.gif";
} else if (59 <= per && per < 65) {
moonfile = "moon10.gif";
} else if (65 <= per && per < 71) {
moonfile = "moon11.gif";
} else if (71 <= per && per < 78) {
moonfile = "moon12.gif"; /* old half moon */
} else if (78 <= per && per < 85) {
moonfile = "moon13.gif";
} else if (85 <= per && per < 92) {
moonfile = "moon14.gif";
} else if (92 <= per && per < 98) {
moonfile = "moon15.gif";
}
sprintf(file, "%s%s", "moon_gifs/", moonfile);
/* print html */
printf("Content-type: image/gif\n\n");
fd = open(file, O_RDONLY);
while (read(fd, &c, 1) != 0) {
printf("%c", c);
}
close(fd);
exit(0);
}
#include <math.h>
double qpom(now)
time_t now;
{
double diff, howfar;
diff = (double) now - EPOCH;
howfar = diff / LPERIOD;
return LPERIOD * (howfar - (int) howfar) / 86400.0;
}