Note: This listing is best if printed in landscape mode
/*If a page is a static page, then the type HTTP_PAGE_STATIC 	
/*should be specified, and a struct staticpage used to
/*describe the page data. If a page is dynamic, then the type
/*HTTP_PAGE_DYNAMIC should be used, and the address of the CGI
/*routine should be provided. // HTML pages extern struct staticpage indexf_htm; extern struct staticpage main_htm; extern struct staticpage ez80f91_htm; extern struct staticpage ez80f91f_htm; extern struct staticpage ez80f92_htm; extern struct staticpage ez80f92f_htm; extern struct staticpage header_htm; extern struct staticpage footer_htm; extern struct staticpage left_htm; extern struct staticpage siteinfo_htm; extern struct staticpage siteinfof_htm; extern struct staticpage overview_htm; extern struct staticpage overviewf_htm; extern struct staticpage tcpip_htm; extern struct staticpage tcpipf_htm; extern struct staticpage appletf_htm; extern struct staticpage cgi_htm; extern struct staticpage cgif_htm; extern struct staticpage javaapplets_htm; extern struct staticpage javascripts_htm; extern struct staticpage javascriptf_htm; // Pictures: JPG, GIF extern struct staticpage Acclmheading_jpg; extern struct staticpage bar_gif; extern struct staticpage devkit_jpg; extern struct staticpage ez80acclaimchip_jpg; // CGIs int increment_cgi(struct http_request *request); int index_cgi(struct http_request *request); // Java Applets extern const struct staticpage Lake_class; Webpage website[] = { {HTTP_PAGE_STATIC, "/", "text/html", &indexf_htm }, // {HTTP_PAGE_DYNAMIC, "/", "text/html", (struct staticpage *)index_cgi }, {HTTP_PAGE_STATIC, "/index.htm", "text/html", &indexf_htm }, {HTTP_PAGE_DYNAMIC, "/index_cgi.htm", "text/html", (struct staticpage*)index_cgi }, {HTTP_PAGE_STATIC, "/main.htm", "text/html", &main_htm }, {HTTP_PAGE_STATIC, "/ez80f91.htm", "text/html", &ez80f91_htm}, {HTTP_PAGE_STATIC, "/ez80f91f.htm", "text/html",&ez80f91f_htm}, {HTTP_PAGE_STATIC, "/ez80f92.htm", "text/html", &ez80f92_htm}, {HTTP_PAGE_STATIC, "/ez80f92f.htm", "text/html",&ez80f92f_htm}, {HTTP_PAGE_STATIC, "/header.htm", "text/html",&header_htm }, {HTTP_PAGE_STATIC, "/footer.htm", "text/html",&footer_htm }, {HTTP_PAGE_STATIC, "/left.htm", "text/html", &left_htm }, {HTTP_PAGE_STATIC, "/siteinfo.htm","text/html",&siteinfo_htm }, {HTTP_PAGE_STATIC, "/siteinfof.htm,"text/html",&siteinfof_htm}, {HTTP_PAGE_STATIC, "/overview.htm","text/html",&overview_htm }, {HTTP_PAGE_STATIC, "/overviewf.htm,"text/html",&overviewf_htm}, {HTTP_PAGE_STATIC, "/tcpip.htm", "text/html", &tcpip_htm }, {HTTP_PAGE_STATIC, "/tcpipf.htm","text/html",&tcpipf_htm }, {HTTP_PAGE_STATIC, "/appletf.htm","text/html", &appletf_htm }, {HTTP_PAGE_STATIC, "/javaapplets.htm","text/html",&javaap plets_htm }, {HTTP_PAGE_STATIC,"/javascripts.htm","text/html",&javascripts _htm }, {HTTP_PAGE_STATIC,"/javascriptf.htm","text/html",&javascriptf _htm }, {HTTP_PAGE_STATIC,"/Lake.class","application/octect-stream", &Lake_class }, {HTTP_PAGE_STATIC, "/Acclmheading.jpg", "image/jpg", &Acclmheading_jpg }, {HTTP_PAGE_STATIC, "/bar.gif", "image/gif", &bar_gif }, {HTTP_PAGE_STATIC, "/devkit.jpg", "image/jpg", &devkit_jpg }, {HTTP_PAGE_STATIC, "/ez80acclaimchip.jpg", "image/gif", &ez80acclaimchip_jpg }, {HTTP_PAGE_STATIC, "/cgi.htm", "text/html", &cgi_htm }, {HTTP_PAGE_STATIC, "/cgif.htm", "text/html", &cgif_htm }, {HTTP_PAGE_DYNAMIC, "/cgi-bin/increment", "text/html", (struct staticpage *)increment_cgi }, {0, NULL, NULL, NULL } };

Listing 3—Take a look at the web site I have been talking about. It’s easy to see the relationships between the web site contents and the declarations inside the web page code.