<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Embedded Components and Tools Blog Center &#187; Uncategorized</title>
	<atom:link href="http://www.embeddedcomponents.com/blogs/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.embeddedcomponents.com/blogs</link>
	<description>The Home For Smart Reusable Code &#38; Circuits</description>
	<lastBuildDate>Tue, 23 Mar 2010 21:40:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>How to Use LectureMaker Video Studio for Hardware/Software Demos</title>
		<link>http://www.embeddedcomponents.com/blogs/2010/03/lecturemaker-video-studio-for-hardwaresoftware-demos/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2010/03/lecturemaker-video-studio-for-hardwaresoftware-demos/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 21:40:32 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/?p=397</guid>
		<description><![CDATA[Ron Fredericks writes: Have you tried to post software demo&#8217;s on youtube? If so, then this online video produced from LectureMaker&#8216;s high-tech video studio can help you get up to speed very quickly on how to solve the video publishing problems associated with software screencasting. The video demonstrates how to build a simple external hard [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: Have you tried to post software demo&#8217;s on youtube?  If so, then this online video produced from LectureMaker&#8216;s high-tech video studio can help you get up to speed very quickly on how to solve the video publishing problems associated with software screencasting. The video demonstrates how to build a simple external hard disk starting from an enclosure for USB and eSTATA connectivity with a PC, MAC, or Linux box. The video concludes with a walk-through on how to format the disk into two partitions.</p>
<p>Enjoy&#8230;</p>
<div><strong><a href="http://www.lecturemaker.com/2010/03/hardware-software-demo-from-lecturemakers-studio/#video_link" title="Click link to go to the video page">Hardware Software Demonstration</a></strong><br />Presented by Ron Fredericks, Business Videographer and Open Studio Director</div>
<p><a href="http://www.lecturemaker.com/2010/03/hardware-software-demo-from-lecturemakers-studio/#video_link"><img src="http://www.lecturemaker.com/lectures/hardware_software_demo/LMPreloadImage_450w_386h.jpg" alt="Video Link" width="450" height="386" border="0" title="Click image to go to the video page" /></a></p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Ron+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tag/youtube" rel="tag">youtube</a>, <a href="http://technorati.com/tag/LectureMaker" rel="tag">LectureMaker</a>, <a href="http://technorati.com/tag/screencasting" rel="tag">screencasting</a>, <a href="http://technorati.com/tag/USB" rel="tag">USB</a>, <a href="http://technorati.com/tag/eSTATA" rel="tag">eSTATA</a>, <a href="http://technorati.com/tag/partition" rel="tag">partition</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2010/03/lecturemaker-video-studio-for-hardwaresoftware-demos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedded Hypervisor &#8211; the RTOS in the clouds</title>
		<link>http://www.embeddedcomponents.com/blogs/2010/02/embedded-hypervisor-the-rtos-in-the-clouds/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2010/02/embedded-hypervisor-the-rtos-in-the-clouds/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 09:17:33 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/?p=383</guid>
		<description><![CDATA[Ron Fredericks writes: I just read the press release on Wind River&#8216;s Hypervisor and Mark Hermeling&#8216;s blog on the subject of multi-core virtualization. Wind River gets a second chance on connecting smart devices into the enterprise world. One of their previous attempts was Wind&#8217;s office political initiative into Embedded BSD/OS. I thought the BSD OS [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: I just read the press release on Wind River&#8216;s Hypervisor and <a href="http://blogs.windriver.com/hermeling/2010/02/wind-river-hypervisor-11.html#more">Mark Hermeling&#8216;s blog </a>on the subject of multi-core virtualization. </p>
<blockquote><p>Wind River gets a second chance on connecting smart devices into the enterprise world.</p></blockquote>
<p>One of their previous attempts was Wind&#8217;s office political initiative into Embedded BSD/OS. I thought the BSD OS play was great for Wind River if only they connected their robust multi-core OS from the smart device into the enterpise. Now I see and hope that Wind River has learned from this prior effort and is off to a second chance.</p>
<p><img src="http://www.linuxfordevices.com/files/misc/windriver_hypervisor_amp_diagram-sm.jpg" alt="The classic Hypervisor diagram" /><br />
The Wind River Hypervisor</p>
<p>So there are a few different kinds of hypervisor: <a href="http://www.infosysblogs.com/engineering-software/2009/07/server_virtualization_just_how.html">here is a link to a short discription of the server OS, versus their type 1 and 2 hypervisors.</a> Follow Wind River to learn more about their vision for an embedded system hypervisor.</p>
<p>Now of course the cloud is more tied to the embedded system world than ever. Just look at UC Berkeley&#8216;s upcoming annual <a href="http://www.eecs.berkeley.edu/BEARS/">technology day called BEARS</a>, where CAL&#8217;s EE and CS researchers share with the technology industry. </p>
<blockquote><p>I sure hope Wind River will be attending! </p></blockquote>
<p>This year&#8217;s 2010 Berkeley EECS Annual Research Symposium event is called: <strong>From Clouds to Sensors &#8211; A Berkeley View</strong></p>
<p><img src="http://www.eecs.berkeley.edu/BEARS/2010/images/cloud-mast.jpg" alt="BEARS symposium image: from clouds to sensors" /><br />
The CAL BEARS 2010 Symposium <em>view from the clouds</em></p>
<p>Ron has been in the enterprise, embedded systems, and smartphone technical marketing and partner development for the past 15+ years. Contact him to learn more about how relationship marketing can be used to connect the embedded systems hypervisor to the enterprise clouds with effecient use of industry and university partnerships.</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Ron+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tag/Wind+River" rel="tag">Wind River</a>, <a href="http://technorati.com/tag/Hypervisor" rel="tag">Hypervisor</a>, <a href="http://technorati.com/tag/Mark+Hermeling" rel="tag">Mark Hermeling</a>, <a href="http://technorati.com/tag/multi-core" rel="tag">multi-core</a>, <a href="http://technorati.com/tag/virtualization" rel="tag">virtualization</a>, <a href="http://technorati.com/tag/Embedded+BSD%2FOS" rel="tag">Embedded BSD/OS</a>, <a href="http://technorati.com/tag/UC+Berkeley" rel="tag">UC Berkeley</a>, <a href="http://technorati.com/tag/From+Clouds+to+Sensors" rel="tag">From Clouds to Sensors</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2010/02/embedded-hypervisor-the-rtos-in-the-clouds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bay Area R User Group 2009 Kickoff Video</title>
		<link>http://www.embeddedcomponents.com/blogs/2009/04/r-user-group-video/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2009/04/r-user-group-video/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 18:19:39 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/?p=284</guid>
		<description><![CDATA[Ron Fredericks writes: In February I attended the Bay Area R User Group meeting held at Predictive Analytics World 2009. Michael E. Driscoll, one of the meeting co-chairs, was gracious enough to let me capture the video as a &#8220;light house&#8221; project for LectureMaker.com. Panel: Bo Cowgill, Google Itamar Rosenn, Facebook David Smith, REvolution Computing [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: In February I attended the <a href="http://www.meetup.com/R-Users/">Bay Area R User Group </a>meeting  held at <a href="http://www.predictiveanalyticsworld.com/">Predictive Analytics World 2009</a>. Michael E. Driscoll, one of the meeting co-chairs, was gracious enough to let me capture the video as a &#8220;light house&#8221; project for <a href="http://www.lecturemaker.com"> LectureMaker.com</a>.  </p>
<p>Panel:</p>
<ul>
<li>Bo Cowgill, Google</li>
<li>Itamar Rosenn, Facebook</li>
<li>David Smith, REvolution Computing</li>
<li>Jim Porzak, The Generations Network</li>
</ul>
<p>Moderator:</p>
<ul>
<li>Michael E. Driscoll, Dataspora LLC</li>
</ul>
<table width="450"  cellspacing="2" cellpadding="2">
<tr>
<td colspan="2">
<div style="text-align: center;">
<strong>The R and Science of Predictive Analytics:<br />Four Case Studies in R</strong>
</div>
</td>
</tr>
<tr>
<td colspan="2"><img src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2009/04/screenshot-intro.jpg" alt="screenshot-intro" title="screenshot-intro" width="450" height="339" class="alignnone size-full wp-image-325" /></td>
</tr>
<tr>
<td colspan="2"><a href="http://www.lecturemaker.com/2009/02/r-kickoff-video/">Learn more and watch lecture</a></td>
</tr>
</table>
<p>Watch this video to learn about:</p>
<ol>
<li>The open-source analytics programming language called R</li>
<li>How Google and Facebook approach analytics to predict their web user community&#8217;s behavior</li>
<li>Where to download R and get enterprise level support</li>
<li>How the meeting co-chairs use R</li>
</ol>
<p>Technorati Tags: <a href="http://technorati.com/tag/Ron+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tag/Predictive+Analytics+World" rel="tag">Predictive Analytics World</a>, <a href="http://technorati.com/tag/LectureMaker" rel="tag">LectureMaker</a>, <a href="http://technorati.com/tag/Bo+Cowgill" rel="tag">Bo Cowgill</a>, <a href="http://technorati.com/tag/Google" rel="tag">Google</a>, <a href="http://technorati.com/tag/Itamar+Rosenn" rel="tag">Itamar Rosenn</a>, <a href="http://technorati.com/tag/Facebook" rel="tag">Facebook</a>, <a href="http://technorati.com/tag/David+Smith" rel="tag">David Smith</a>, <a href="http://technorati.com/tag/REvolution+Computing" rel="tag">REvolution Computing</a>, <a href="http://technorati.com/tag/Jim+Porzak" rel="tag">Jim Porzak</a>, <a href="http://technorati.com/tag/The+Generations+Network" rel="tag">The Generations Network</a>, <a href="http://technorati.com/tag/Michael+E.+Driscoll" rel="tag">Michael E. Driscoll</a>, <a href="http://technorati.com/tag/Dataspora+LLC" rel="tag">Dataspora LLC</a>, <a href="http://technorati.com/tag/R" rel="tag">R</a>, <a href="http://technorati.com/tag/Predictive+Analytics" rel="tag">Predictive Analytics</a>, <a href="http://technorati.com/tag/behavior" rel="tag">behavior</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2009/04/r-user-group-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Marketing Bubble</title>
		<link>http://www.embeddedcomponents.com/blogs/2008/10/the-marketing-bubble/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2008/10/the-marketing-bubble/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 17:56:27 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Marketing]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Marketing Bubble]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Word-of-Mouth]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/?p=191</guid>
		<description><![CDATA[The marketing bubble&#8216;s effect on embedded device software developers Introduction Ron Fredericks writes: In yesterday&#8217;s marketing webinar: Beyond Monitoring: Managing Social Media Engagement by SocialRep&#8216;s CEO, Chris Kenton, viewers were riveted by his inside knowledge on social media&#8217;s word-of-mouth marketing. Chris is well known for his combination of social media marketing knowledge as well as [...]]]></description>
			<content:encoded><![CDATA[<p>The marketing bubble&#8216;s effect on embedded device software developers </p>
<h2>Introduction</h2>
<p>Ron Fredericks writes: In yesterday&#8217;s  marketing webinar: <a href="http://www.brighttalk.com/dcemail_redirect/webcast/778" title="Chris Kenton on Brighttalk.com" target="_blank">Beyond Monitoring: Managing Social Media Engagement</a> by<a href="http://www.socialrep.com/about.html" target="_blank"> SocialRep</a>&#8216;s CEO, <a href="http://www.chriskenton.com/" title="Chris's blog" target="_blank">Chris Kenton</a>, viewers were riveted by his inside knowledge on social media&#8217;s  word-of-mouth marketing. Chris is well known for his combination of social media marketing knowledge as well as his ability to strip away the <a href="http://www.tradepub.com/free/w_moti01/?p=w_moti01" title="Chris was the author of these useful tips" target="_blank">facts</a> from the <a href="http://www.sinotechblog.com.cn/en/2008/08/going-beyond-the-hype-of-social-media-marketing/" title="Chris is a good reference is this reference too" target="_blank">hype</a>. </p>
<p>To set the stage, my own readers have found my marketing FAQ to be a very popular read for the embedded device software industry: <a href="http://www.embeddedcomponents.com/FAQ/FAQ_sales_performance_through_marketing.php" title="Improving Sales Performance Through Marketing  " target="_blank">Assessing marketing&rsquo;s critical role in organizational performance</a>. Read on to see if it will blend! </p>
<p><a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/10/bubbles.jpg"><img src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/10/bubbles.jpg" alt="" title="My vision on social media microsites' affect on the marketing bubble" width="450" height="450" class="aligncenter size-full wp-image-224" /></a>
</p>
<p><span id="more-191"></span></p>
<h2><span class=black9>The Marking Bubble Defined</span></h2>
<p>Chris introduced us to the &ldquo;marketing bubble&rdquo;, a marketing event in progress now. Chris may be the first to realize and share the underlying problem so clearly. Marketing has always been a word-of-mouth vehicle since the beginning of human conversations &#8211; we&#8217;re just not old enough to know it! </p>
<p>Check out the Word Of Mouth Marketing Association&#8217;s definition of <a href="http://womma.org/wom101/02" title="I've come to realize there is a professional association for nearly everthing in life" target="_blank">word of mouth marketing</a>. Chris made the case that professional marketers&#8217; tools over the past 130 years have managed to bypass the value of word of mouth by blasting their messages into public and commercial communities to literally overpower the word-of-mouth model using Print, Radio, TV, Mass Markets, and the Internet. Yet the marketing bubble is now bursting as the Internet continues to host an exploding number of social media tools: &#8211; tools that extend word of mouth conversation through online social media platforms, popular content management sites, and even  a new form of  in-person meet up tool that can quickly assemble like-minded individuals into localized events.  </p>
<p>Here is a short list of some of the more common word-of-mouth social media platforms that can be leveraged as microsites: </p>
<ul>
<li>LinkedIn: <a href="http://www.linkedintelligence.com/smart-ways-to-use-linkedin/" title="Here is a power user link to using linkedin - what, you thought this would be a dumb link to LinkedIn itself?" target="_blank">A how-to example</a></li>
<li>Squidoo: <a href="http://www.allbusiness.com/specialty-businesses/home-based-businesses/4353822-1.html" title="A short but effective blog post on how to use Squidoo" target="_blank">A how-to example</a></li>
<li>Facebook: <a href="http://www.clickz.com/showPage.html?page=3626825" title="Just a start, but I'm sure not going to stuff the facebook link itself here" target="_blank">A how-to example</a></li>
<li>YouTube: <a href="http://www.searchenginejournal.com/guide-to-video-marketing-on-youtube/6381/" target="a blog post on how to...">A how-to example</a> [<a href="http://www.blendtec.com/" title="Some say this works..." target="_blank">will it blend</a>]</li>
<li>Ning: <a href="http://www.ning.com/" target="_blank">A how-to example</a></li>
<li>Twitter: <a href="http://www.beingpeterkim.com/2008/10/thinking-throug.html" title="It's a big topic, here's one idea to get you started..." target="_blank">A how-to example</a></li>
<li>Meetup: <a href="http://writeideasmarketing.wordpress.com/2007/06/05/ideas-on-using-meetupcom-for-marketing/" title="I did not know this but social networks are as much about meeting people as it is about online conversaitons - maybe even more so" target="_blank">A how-to example</a></li>
</ul>
<p>These platforms are also some of the leading causes for the marketing bubble. Check out <a href="http://www.alexa.com/">http://www.alexa.com</a> for further research into tools that specialize by industry and/or region.</p>
<p>These microsites often include application programmable interfaces (API&#8217;s), news feeds, user profiles, links to friends, groups, photos/videos, chat, and their own markup languages to build relationships and quickly share short conversations. These features are a little different than the more traditional social media platforms such as blogs, forums, wikis, chat, and idea managers.</p>
<h2>Word-of-Mouth Customer Relationship Lifecycle</h2>
<p>Chris presents an integrated marketing plan that starts with  several forms of monitoring to measure influential conversations followed by use of a wide selection of social media tools. </p>
<h3>Monitoring Social Networks: Metrics </h3>
<p>Monitoring social media activity is one of the basic requirements to managing social media engagements. A company starting up with a social media marketing program nearly always intends to find and engage with their most influential online customers. But Chris goes on to point out that companies  often fail in their use of social media marketing tools. The problem boils down to the fine art of adapting to the trends their team discovers after their initial engagements with social media. I call this the <a href="http://www.webanalyticsassociation.org/education/certification/knowledge/analyticalculture/" title="Try this link to avoid watching the train wreck..." target="_blank">company&#8217;s analytics culture</a>. There are thee areas that a company can monitor:</p>
<ul>
<li>Media: The web pages and web sites that customers use or visit [<span style="color:#cc00cc">commonly monitored</span>] </li>
<li>Technology: The technology behind a company&rsquo;s products [<span style="color:#cc00cc">often ignored</span>], and </li>
<li>Finance: The financial goals surrounding a company&rsquo;s sales activity [<span style="color:#cc00cc">often ignored</span>].</li>
</ul>
<p>The problem stems from a company&#8217;s tendency to focus too much on web page tools that <a href="http://www.emergence-media.com/2008/04/social-media-monitoring-broken-conversations-broken-tools/" title="This link touches on a neat subject - cross platform monitoring tools" target="_blank">monitor media</a>, and in so doing, fails to develop an adaptable action plan that includes the other two key domains of marketing operations: technology and finance. After Chris pointed this out in his webinar, it seems very clear to me that a company needs more than trends in page clicks or page visitors to build the business case for change within a company&#8217;s executive team decision-makers. Two solutions that have become popular by social marketers in bridging the gap between initial engagement, and adapting their business activities towards the needs of the community, are in the reuse of these two popular tools already in use by most companies:</p>
<ul>
<li> Integration of the company&#8217;s Goggle <a href="https://adwords.google.com/support/bin/answer.py?answer=64886&#038;hl=en_US" title="A little how-to on using adwords..." target="_blank">AdWords</a> data, and the </li>
<li>Integration of the company&rsquo;s CRM &ndash; SalesForce.com in particular. </li>
</ul>
<h3>Using Monitored Results: Analytics </h3>
<p>Chris and <a href="http://www.kaushik.net/avinash/2007/12/web-metrics-demystified.html" target="I thought this would  serve for a little background...">others</a> point out that although the use of CRM tools are well intentioned &ndash; a large percentage of marketers do not get the needed monitoring data to successfully adapt to changes or to meet the changing  needs within the company&rsquo;s community. Chris describes how a company can use their CRM as part of an integrated analytics strategy:</p>
<ul>
<li>Use reports and analytics stored within the CRM</li>
<li>Integration of a word-of-mouth program integrated with the CRM</li>
<li>Creation of an advisory board from the most influential customers identified from CRM </li>
</ul>
<h3>Building a Program  </h3>
<p>Chris then presented a Word-of-Mouth program built around a Customer Relationship Lifecycle. He goes over some details, shows some steps to be taken, and highlights a case study. I summarize his program from a B2C perspective here: </p>
<ol>
<li><strong>Awareness:</strong>
<ul>
<li><span style="color:#808080">Value: Branding</span></li>
<li><span style="color:#808000">Tools: Web ads, Search engine optimization or marketing, Viral video, Targeted community sponsorship</span></li>
<li><span style="color:#804000">Marketing framework: Conversation + Content</span></li>
</ul>
</li>
<li><strong>Knowledge:</strong>
<ul>
<li><span style="color:#808080">Value: Branding and Marketing</span> </li>
<li><span style="color:#808000">Tools: Landing pages, Microsites, and Webinars</span></li>
<li><span style="color:#804000">Marketing framework: Conversation + Content + Community</span></li>
</ul>
</li>
<li><strong>Consideration:</strong>
<ul>
<li><span style="color:#808080">Value: Branding, Marketing, and Sales</span></li>
<li><span style="color:#808000">Tools: Reviews &amp; comparisons, Hosted chat, and Webinars</span></li>
<li><span style="color:#804000">Marketing framework: Conversation + Content + Community</span></li>
</ul>
</li>
<li><strong>Selection</strong> (or when a customer takes the desired action like buys the product):
<ul>
<li><span style="color:#808080">Value: Branding, Marketing, and Sales</span></li>
<li><span style="color:#808000">Tools: Online discount offers, and Hosted chat</span></li>
<li><span style="color:#804000">Marketing framework: Conversation + Content + Community + Customer advisory council</span></li>
</ul>
</li>
<li><strong>Satisfaction:</strong>
<ul>
<li><span style="color:#808080">Value: Branding, Marketing, and Sales</span></li>
<li><span style="color:#808000">Tools: Surveys, Support forum, Support chat, and Customer communities</span></li>
<li><span style="color:#804000">Marketing framework: Conversation + Content + Community + Customer advisory council</span></li>
</ul>
</li>
<li><strong>Advocacy:</strong>
<ul>
<li><span style="color:#808080">Value: Branding and Marketing</span></li>
<li><span style="color:#808000">Tools: Referral offers, Peer forums, Product networks, and Consumer communities</span></li>
<li><span style="color:#804000">Marketing framework: Conversation + Content + Community + Customer advisory council</span></li>
</ul>
</li>
<li><strong>Loyalty:</strong>
<ul>
<li><span style="color:#808080">Value: Branding</span></li>
<li><span style="color:#808000">Tools: Discounts, Insider forums, Product networks, and Customer communities</span></li>
<li><span style="color:#804000">Marketing framework: Conversation + Content + Community + Customer advisory council</span></li>
</ul>
</li>
</ol>
<p>Some steps along the way in the execution of a word-of-mouth  customer relationship lifecycle program:</p>
<ul>
<li>Engage in useful conversations:
<ul>
<li>Targeted monitoring and metrics, </li>
<li>Managed engagement, </li>
<li>Trend tracking, </li>
<li>Media, pundit, and influencer profiling.</li>
</ul>
</li>
<li>Create a cross-functional Social Media A-Team:
    </li>
</ul>
<ul>
<li>Marketing,</li>
<li>PR,</li>
<li>Product marketing,</li>
<li>Sales, </li>
<li>Customer service,</li>
<li>Engineering, and </li>
<li>Legal.</li>
</ul>
<ul>
<li>Assign a domain to each member:
<ul>
<li> Where are people talking about your domain,</li>
<li>What are people saying, topics, trends,</li>
<li>What opportunities are there to get involved,</li>
<li>What do we want to spend energy talking about.</li>
</ul>
</li>
<li>Create a place were you can profile these domains, aggregate, and share information:
<ul>
<li>Meet weekly</li>
</ul>
</li>
<li>Assign at least one &ldquo;SocialRep&rdquo; to manage the engagement process</li>
<li>Buy a solution only when the process is well defined and in place</li>
<li>Test and continually question monitoring metrics</li>
<li>Hire a Marketing Engineer, to address data integration</li>
</ul>
<h2>Some Final Thoughts For Embedded Device  Software Developers</h2>
<p>Most of what I summarize above is focused on B2C relationships and comes out of my review of Chris Kenton&#8217;s great webinar:  <a href="http://www.brighttalk.com/dcemail_redirect/webcast/778" title="Chris Kenton on Brighttalk.com" target="_blank">Beyond Monitoring: Managing Social Media Engagement</a>. Of course I added my own knowledge and some additional references to help my readers get a fast overview of the landscape. </p>
<p>Building a social media marketing program would have some  differences when it comes to software developers focused on embedded devices including:</p>
<ul>
<li> A smaller volume of activity</li>
<li>A scarcity of good marketers and public communicators with a working knowledge of the deeply technical subject matter and its assocated value chain</li>
<li>A larger barrier between the engineers who make and use software:
<ul>
<li>Those that  build the software tools targeting a wide variety of programmers, engineers, and architects, </li>
<li>Those that create the run-time device optimized software platforms targeting embedded software engineers, and </li>
<li>Those that build the differentiating applications targeting the end user.</li>
</ul>
</li>
<li> A different marketing framework focused on the collective business and not the individual:
<ul>
<li>See <a href="http://www.embeddedcomponents.com/FAQ/How_to_approach_a_gorilla_partnership.pdf" title="My FAQ on building businesses with word of mouth from business to business" target="_blank">Four Steps to Creating a Gorilla Partnership</a> for some insight on building business-to-business frameworks</li>
<li>Perhaps the framework will have unique features for open-source vs. OEM software license models </li>
</ul>
</li>
<li>Look for social media marketing tools that integrate with software developer frameworks, perhaps as plugins
<ul>
<li>Basic collaboration for developers looks like code check-in and check-out for global teams, not like a tweet.</li>
<li>Maybe the next tweet will be a twitter plugin that adds another Eclipse perspective, for example. </li>
</ul>
</li>
</ul>
<p>Yet there can be no doubt that the short word-of-mouth conversations on microsites will burst the marketing bubble. This would be true for any marketer planning there next engagement, for businesses focused on building software for embedded devices, or for the device manufacturer trying to leverage software developers. Chris Kenton&#8217;s marketing webinar: <a href="http://www.brighttalk.com/dcemail_redirect/webcast/778" title="Chris Kenton on Brighttalk.com" target="_blank">Beyond Monitoring: Managing Social Media Engagement</a> is a good place to start building a word-of-mouth marketing plan. His offering demonstrates the most integrated set of tools I&#8217;ve seen &#8211; to build a substantial word-of-mouth marketing program. </p>
<p>Thanks to Chis for making it very clear that social media word-of-mouth marketing is not a program to be considered independently of other marketing activities. Instead it&#8217;s just a mater of time before the bubble bursts in your market sector. The real question is more of when, than if, a company should add word-of-mouth social media tools to their integrated marketing strategy. </p>
<p>&nbsp; </p>
<p>Technorati Tags: <a href="http://technorati.com/tag/marketing+bubble" rel="tag">marketing bubble</a>, <a href="http://technorati.com/tag/software+developer" rel="tag">software developer</a>, <a href="http://technorati.com/tag/Ron+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tag/SocialRep" rel="tag">SocialRep</a>, <a href="http://technorati.com/tag/Chris+Kenton" rel="tag">Chris Kenton</a>, <a href="http://technorati.com/tag/social+media" rel="tag">social media</a>, <a href="http://technorati.com/tag/marketing" rel="tag">marketing</a>, <a href="http://technorati.com/tag/embedded+device" rel="tag">embedded device</a>, <a href="http://technorati.com/tag/software" rel="tag">software</a>, <a href="http://technorati.com/tag/word-of-mouth" rel="tag">word-of-mouth</a>, <a href="http://technorati.com/tag/Print" rel="tag">Print</a>, <a href="http://technorati.com/tag/Radio" rel="tag">Radio</a>, <a href="http://technorati.com/tag/TV" rel="tag">TV</a>, <a href="http://technorati.com/tag/Mass+Markets" rel="tag">Mass Markets</a>, <a href="http://technorati.com/tag/Internet" rel="tag">Internet</a>, <a href="http://technorati.com/tag/social+media" rel="tag">social media</a>, <a href="http://technorati.com/tag/LinkedIn" rel="tag">LinkedIn</a>, <a href="http://technorati.com/tag/Squidoo" rel="tag">Squidoo</a>, <a href="http://technorati.com/tag/Facebook" rel="tag">Facebook</a>, <a href="http://technorati.com/tag/YouTube" rel="tag">YouTube</a>, <a href="http://technorati.com/tag/Ning" rel="tag">Ning</a>, <a href="http://technorati.com/tag/Twitter" rel="tag">Twitter</a>, <a href="http://technorati.com/tag/Meetup" rel="tag">Meetup</a>, <a href="http://technorati.com/tag/microsites" rel="tag">microsites</a>, <a href="http://technorati.com/tag/blogs" rel="tag">blogs</a>, <a href="http://technorati.com/tag/forums" rel="tag">forums</a>, <a href="http://technorati.com/tag/wikis" rel="tag">wikis</a>, <a href="http://technorati.com/tag/chat" rel="tag">chat</a>, <a href="http://technorati.com/tag/idea+managers" rel="tag">idea managers</a>, <a href="http://technorati.com/tag/Customer+Relationship+Lifecycle" rel="tag">Customer Relationship Lifecycle</a>, <a href="http://technorati.com/tag/conversations" rel="tag">conversations</a>, <a href="http://technorati.com/tag/analytics" rel="tag">analytics</a>, <a href="http://technorati.com/tag/Media" rel="tag">Media</a>, <a href="http://technorati.com/tag/Technology" rel="tag">Technology</a>, <a href="http://technorati.com/tag/Finance" rel="tag">Finance</a>, <a href="http://technorati.com/tag/Goggle" rel="tag">Goggle</a>, <a href="http://technorati.com/tag/AdWords" rel="tag">AdWords</a>, <a href="http://technorati.com/tag/CRM" rel="tag">CRM</a>, <a href="http://technorati.com/tag/SalesForce.com" rel="tag">SalesForce.com</a>, <a href="http://technorati.com/tag/Awareness" rel="tag">Awareness</a>, <a href="http://technorati.com/tag/Knowledge" rel="tag">Knowledge</a>, <a href="http://technorati.com/tag/Consideration" rel="tag">Consideration</a>, <a href="http://technorati.com/tag/Selection" rel="tag">Selection</a>, <a href="http://technorati.com/tag/Satisfaction" rel="tag">Satisfaction</a>, <a href="http://technorati.com/tag/Advocacy" rel="tag">Advocacy</a>, <a href="http://technorati.com/tag/Loyalty" rel="tag">Loyalty</a>, <a href="http://technorati.com/tag/Social+Media+A-Team" rel="tag">Social Media A-Team</a>, <a href="http://technorati.com/tag/Marketing+Engineer" rel="tag">Marketing Engineer</a>, <a href="http://technorati.com/tag/collaboration" rel="tag">collaboration</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2008/10/the-marketing-bubble/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>How to Leverage the Value of a Board Support Package</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/11/how-to-leverage-the-valule-of-a-board-support-package/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/11/how-to-leverage-the-valule-of-a-board-support-package/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 10:41:09 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Technology]]></category>
		<category><![CDATA[Embedded C/C++]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/11/how-to-leverage-the-valule-of-a-board-support-package/</guid>
		<description><![CDATA[Ron Fredericks writes: There are three separate views to what defines an effective Board Support Package (BSP). I believe each of these views is correct as independent descriptions of a BSP. But together these views provide insight into the embedded target from equally important perspectives or engineering disciplines. Read this post to learn more about [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: There are three separate views to what defines an effective Board Support Package (BSP).  I believe each of these views is correct as independent descriptions of a BSP. But together these views provide insight into the embedded target from equally important perspectives or engineering disciplines.  Read this post to learn more about the essence of embedded systems and how Wind River&#8217;s VxWorks BSP architecture has been a critical success factor in comparison to many other real-time embedded operating system executives and kernels available today. </p>
<p>I chose to discuss Wind River&#8217;s VxWorks BSP because of my familiarity with their product line, my understanding of their BSP as a competitive product compared to other real-time kernels, and because of my industry accomplishments working with Wind River&#8217;s BSPs: </p>
<ul>
<li><span style="color:#cc6600">Ron Fredericks wins Wind River&#8217;s prestigious <em><strong>Navigation Award</strong></em> for designing, launching, and marketing the first online interactive social network for BSP&#8217;s. <a href="http://www.embeddedcomponents.com/awards/publishing_awards_01.php#BSPWeb">more&gt;</a></span>
</li>
<li><span style="color:#cc6600">Ron Fredericks wins Aiysis&#8217; <em><strong>Million Dollar Club Award</strong></em> for nurturing a Wind River partnership between VxWorks and Aiysis DriveWay BSP tool kit that generated over one million in annual sales. <a href="http://www.embeddedcomponents.com/awards/sales_awards_01.php#BSP_Award">more&gt;</a></span>
</li>
<li><span style="color:#cc6600">Ron Fredericks co-author&#8217;s an article with Xilinx on <em><strong>How to Design Field Upgradable Systems</strong></em> based on FPGA Internet connectivity with VxWorks BSP&#8217;s. <a href="http://www.embeddedcomponents.com/awards/published_articles_01.php#Upgradable_Systems">more&gt;</a></span>
</li>
<li><span style="color:#cc6600">Ron Fredericks produces an online video: <em><strong>How to Prototype a Device Driver [or BSP] in Less Than &#8211; Wow! &#8211; 5 Minutes</strong></em> for a Freescale application processor / communications co-processor System on Chip (SoC). <a href="http://www.embeddedcomponents.com/technical/device_driver_immr/video_demo.php">more&gt;</a></span>
</li>
</ul>
<p>A similar high level discussion can not be made for most embedded Windows or embedded Linux BSP&#8217;s today. This is because the BSP for these monolithic kernels are not as modular as a real-time executive kernel such as VxWorks.  Indeed other real-time kernel vendors can and do take advantage of the BSP too. But, the VxWorks BSP just took more advantage of this natural separation between board support and kernel tasks earlier in the marketplace and has been an advantage for its customers as a result ever since.</p>
<p><img id="image97" height="163" alt="Target Board with BSP connected to a host workstation" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/11/bsp_overview.gif" /><br />
Figure 1 &#8211; Embedded device with BSP connected to a host workstation</p>
<p>As shown in Figure 1, most BSP&#8217;s today, even those for embedded Windows and embedded Linux, do have a robust set of boot options. In many cases a BSP can be used on its own to network attach to a shared file system where the full operating system and application can be loaded. In this way, a device under development need not be the device where development takes place. The BSP in this case forms the basis for a cross-platform development environment &#8211; a big plus for developers of embedded systems. Developers often expect cross-platform development to include a BSP with a limited network stack to load new code onto the target hardware during a cold reset. The BSP might use JTAG on-chip run-time control, RS232 serial port, FTP, Bootp, TFTP and RARP, or even a command shell with a full network stack, as the boot loading protocol. But what ever host to target connectivity is used, cross-development allows a high end workstation to be used for time-saving development along with an easy way to download the resulting compiled relocatable object code or a linked and located image onto an embedded target. </p>
<p>For hardware vendors, the BSP is a very useful partner tool. If a hardware vendor makes a set of boards along with a bus pre-assembled as a subsystem or just a single board computer, the BSP allows its clients to leverage this hardware for software development right away. So a hardware vendor can select major operating systems that meet the needs of its target client base and offer a BSP suitable for these operating systems.  Usually the BSP is not a licensed product from the operating system vendor and can be bundled royalty free or under very libral license fee conditions. In this way, the operating system vendor or the open-source community, can partner with this hardware platform as a known reference for direct end products or for development of custom products. The horrible alternative is a slow hardware bring-up using new hardware for the first time to build a unique BSP &#8211; a very slow and expensive procedure where few software debug tools are available. JTAG or other N-wire run-control devices can be used with an operating system vendor&#8217;s debugger in some cases when a robust BSP is not already available. Silicon vendors and I/O device vendors can leverage this technical marketing strategy too.</p>
<p>I encourage Microsoft and embedded Linux communities to consider improving their BSP strategy to deliver more value from a separate BSP structure too.  I also encourage my readers to go ahead and submit comments to this blog post if you know of other vendors with good BSP designs as the marketplace is always changing.</p>
<p><span id="more-94"></span></p>
<h3>View #1: A BSP is the kernelâ€™s interface to device drivers</h3>
<p>A VxWorks Board Support Package provides a standardized interface between hardware and the operating system. A BSP does not directly access hardware.  Although a BSP does provide an interface to device drivers which in turn allows the kernel to communicate with the hardware&#8217;s assets such as device controllers, the microprocessor (CPU), memory, internal and external busses. </p>
<p><img id="image93" height=359 alt="Figure 1 - BSP is an interface between kernel and hardware " src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/10/bsp-line-drawing.gif" /><br />
Figure 2 &#8211; BSP is an interface between kernel and hardware </p>
<p>Figure 2 demonstrates how VxWorks and the developer&#8217;s application software remain hardware independent while the BSP provides an interface to the embedded system&#8217;s architecture and hardware assets. Wind River BSPs conform to a standard, introduced with VxWorks BSP Version 1.1. The standard is fully described in the Tornado BSP Developer&#8217;s Kit for VxWorks. The BSP provides a common application programming interface (API) and a stable environment for the real-time operating system. The standard interface defines both BSP conventions and BSP validation procedures.  </p>
<p>Wind River provides a standardized BSP validation procedure for engineers who are developing their own BSP&#8217;s. Validation is very efficient with a BSP designed for VxWorks because the BSP testing can be performed without having to test the operating system at the same time.  Unlike Wind River&#8217;s real-time operating systems, most operating systems can not separate the testing of the BSP from the testing of the operating system itself making code coverage during testing a much larger and more inaccurate process. The BSP validation test suite provided by Wind River is repeatable and as such can be performed by the company developing a BSP as well as by others because of this standard.  When I supported Wind River&#8217;s partners back in 2002, a partner could request that the WindLink partner program grant &#8220;Tornado Certified&#8221; status to a new BSP after passing the validation procedure as part of an overall certification process.</p>
<p>The validation procedure include tests for:<br />
â€¢	Package validation<br />
â€¢	Installation tests<br />
â€¢	Functional tests<br />
â€¢	Code review process including certification from the WindLink partner program</p>
<p>The Tornado BSP standard included conventions to be used by developers that fall into four main categories:<br />
â€¢	Coding Conventions<br />
â€¢	Documentation guidelines<br />
â€¢	BSP Packaging<br />
â€¢	Driver guidelines</p>
<p>Another strength of VxWorks is that it provides a high degree of architectural and hardware independence for application code because of this API. Application code and VxWorks can both more easily migrate from one architecture to an other because the BSP and related device drivers offer a consistent interface and modular design.  </p>
<blockquote><p>To further illustrate the BSP&#8217;s ability to interface hardware to software: Consider the process of laying carpet on your homeâ€™s floor.  The carpet layer uses two-sided sticky tape to quickly attach just about any style carpet to any architectural floor plan beneath it.  The BSP acts like this two-sided sticky tape attaching the embedded hardware to the operating system that uses it.</p></blockquote>
<h3>View #2: A BSP is a set of libraries offering a hardware abstraction layer to the kernel</h3>
<p>The BSP enforces a modular design by isolating hardware-specific functionally into a set of libraries that provide an identical software interface to the hardware functions available on an embedded system. See detailed description of some of the common libraries and related files later in this blog post. </p>
<p><img id="image95" height=367 alt="Figure 2 - Location of BSP files" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/10/bsp-file-drawing.gif" /><br />
Figure 3 &#8211; Location of BSP files</p>
<p>Figure 3 shows an example of the typical files supporting a PowerPC target&#8217;s BSP and their location in a Tornado installation on a host computer such as Windows XP.</p>
<p>The BSP includes facilities for hardware initialization when power is first applied or when a hardware reset has been initiated.  The BSP also includes support for interrupt handling and generation, hardware clock and timer management, and mapping of available local and bus memory. These basic services provide the real-time kernel with multi-tasking services and memory space for the designerâ€™s application code. </p>
<p>Other device drivers and related support services can be included in this set of libraries extending the hardware abstraction to support the embedded system&#8217;s custom hardware services. These services would include networking, security, storage, graphics, and input/output to the outside world &#8211;  for example. The devices referenced by the BSP can be located on a single board computer, a system on a chip (SoC), or on peripheral devices located across a wireless boundary or on a backplane using a hardware bus. </p>
<h3>View #3: A BSP supports a host/target cross development environment</h3>
<p>The BSP provides support for developers using Tornado tools on a host computer for engineering development such as an editor, compiler, linker, and debugger through a client/server communications protocol between the developer&#8217;s host computer and the embedded targetâ€™s CPU, hardware devices and on-board memory. For VxWorks developers, the BSP offers an interface to the WDB agent that provides an open standard for cross-hosted programming on a specific targetâ€™s architecture. The host computer supports these services using the Tornado tool suite through a target server acting as the communications agent.  The target BSP can support a networked development environment using one or more of the following devices: Ethernet, JTAG, serial UART, ROM socket, or custom driver, to communicate with the hostâ€™s target server.  When an application is complete and the embedded device is ready for production, the WDB agent can be removed from the target&#8217;s BSP.</p>
<p><img id="image135" height=240 alt="BSP Cross-Host View" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/bsp-crosshost-drawing.gif" /><br />
Figure 4 &#8211; BSP supports host/target cross development</p>
<p>Figure 4 demonstrates a typical cross development embedded programming model. The WDB client on the target BSP communicates with the host&#8217;s target server. This host/target pair supports connecting other software and hardware tools that lower the cost of a typical engineering cycle: design, edit, compile, link, download, debug, test, and deploy.</p>
<h3>There are advantages to having a BSP that is separated from the kernelâ€¦.</h3>
<p>A BSP allows target applications to be ported to many architectures.</p>
<p>The three views of a BSP described above are all consistent with todayâ€™s engineering needs for a common interface to development tools residing on a robust host computer in support of an embedded application requiring operating system support and services that is modular and portable across many different architectures. </p>
<p>Wind River and its board and silicon partners offer a wide variety of BSPâ€™s for custom off the shelf (COTS) single board computers, and time saving reference designs on more than 12 different architectures.  See the BSP web site I designed for Wind River back in 2002:</p>
<p><a href="http://www.windriver.com/products/bsp_web/bsp_architecture.html ">www.windriver.com/products/bsp_web/bsp_architecture.html </a></p>
<h3>Description of BSP technical features</h3>
<p>There usually is a file named target.nr defined in the BSP documentation standards for each BSP. The file contains a list of technical features supported and unsupported for a particular COTS or reference board.  The list of features describes what a BSP is expected to do during hardware initialization when the CPU executes its first instructions as well as what hardware assets should be presented to the operating system.  This information is summarized here.</p>
<p><strong>Boot Monitor</strong><br />
â€¢	Describe the methods and devices available for booting RTOS on this board. (sm, SCSI, Ethernet, vendor-bug  ROMs, open firmware, visionWARE, etc).<br />
â€¢	Describe the network support available for booting; bootp, proxy-arp, etcâ€¦</p>
<p><strong>Default Ram size</strong><br />
Additional supported memory options<br />
Cache support<br />
Flash and ROM memory<br />
â€¢	How are ROMs made and installed? (How do they split?)  Can FLASH ROMs be burned on board? If so, how?</p>
<p><strong>Timer support in addition to system clock</strong><br />
â€¢	Describe routines that are associated with speed of CPU and Timers</p>
<p><strong>Devices supported:</strong><br />
â€¢	The chip drivers included are:<br />
    templateSio.c &#8211; template serial driver<br />
    templateTimer.c &#8211; template timer driver<br />
    templateVme.c &#8211; template VMEbus driver<br />
    templateNvram.c &#8211; template non-volatile RAM driver<br />
â€¢	Describe the device drivers for this board.  Are there special driver ptions that must be used with this board such as CompactPCI hot swap support?  Read the specific driver documentation and describe any special options used with this board.<br />
Memory Map<br />
â€¢	Provide a detailed memory map of the local bus, and all additional busses from a bus master point of view.  Identify only slave devices actually on each bus, not their apparent address on some other bus.  (i.e. if a serial device is a PCI device, do not list it on the local bus memory map, just the PCI memory map).  Identify all addresses that the user can adjust by changing config.h, as being software controllable.  Identify all bus master devices (DMA) on each bus.<br />
â€¢	If VME is present, describe the default parameters for the master windows and how to change them, if possible. (master access means accessing some other board from this board). Describe the default parameters for the slave access windows, and how to change them, if possible. (Slave access means an access from another bus master). The normal VxWorks default is to enable the slave access window(s) only on CPU 0, as part of the routine sysProcNumSet().  Otherwise, slave accesses are not normally permitted.<br />
â€¢	If PCI is present, describe the configuration access methods used to access PCI configuration space.  Describe any address mapping from local addresses to PCI addresses and vice versa.  Describe how the user can alter this, if appropriate.<br />
Shared Memory<br />
â€¢	If appropriate, identify the main bus and the type of shared memory support provided, if any.   Identify the type of mailbox support and Test-And-Set support used.  Identify any special support, or consideration, necessary from other boards in a multi-board system.<br />
Interrupts<br />
â€¢	Provide a list of interrupts/exceptions by priority and/or vector number.  Describe any special interrupt connection routines or considerations used with this BSP.<br />
Serial Ports<br />
â€¢	Identify the default configuration for all serial ports.  Document any special considerations: i.e. hardware flow control cannot be disabled thus requiring a  jumper to be installed when no terminal device is connected.<br />
SCSI Support<br />
â€¢	Are there any known SCSI configuration limitations?  Does the BSP support SCSI-1 or SCSI-2?  Describe any special connectors or adapters.  Does the board include terminators on-board?  Is there a jumper to activate the termination network?<br />
Ethernet Support<br />
â€¢	Describe the Ethernet ports on the board. Identify how the MAC address is obtained or specified for each port.<br />
Delivered Objects<br />
â€¢	Which pre-compiled objects are delivered with the BSP?</p>
<p><strong>Make Targets</strong><br />
â€¢	If there is any special information about a specific make target, then it should be explained. Identify any standard targets that do not build or run correctly. (bootrom, bootrom_uncmp, bootrom.res_rom, examples on VxWorks also  include: vxWorks, vxWorks.st, vxWorks.res_rom, vxWorks.res_rom_nosym, vxWorks_rom).<br />
Special routines<br />
â€¢	Are there any unique BSP routines available to the user?<br />
Divide by zero exception<br />
â€¢	Describe exception handling of divide by zero event.<br />
Host-Target Communications Support<br />
â€¢	Name of client server agent such as WDB for VxWorks<br />
â€¢	Describe additional WDB agents supported for debug support with host if any.</p>
<h3>Some details on the collection of BSP libraries</h3>
<p>BSP Source and Include Files reside in the following two subdirectories of a Tornado installation:<br />
â€¢	TornadoBaseDirectory/target/config/all<br />
â€¢	TornadoBaseDirectory/target/config/BSPname</p>
<p>See figure 2 for a view of these subdirectories and files.  The subdirectory TornadoBaseDirectory /target/config/bspname contains the hardware dependent Board Support Package (BSP), which consists of files for the particular hardware used to run VxWorks, such as a CompactPCI board with specific semiconductor silicon assets for serial lines, timers, and other devices. The files include: </p>
<p>â€¢	Makefile<br />
â€¢	sysLib.c<br />
â€¢	sysSerial.c<br />
â€¢	sysALib.s<br />
â€¢	romInit.s<br />
â€¢	bspname.h<br />
â€¢	config.h</p>
<p>Two target-specific libraries, sysLib and sysALib, are included with each port of VxWorks. These libraries are the heart of VxWorks portability; they provide an identical software interface to the hardware functions of all boards. They include facilities for hardware initialization, interrupt handling and generation, hardware clock and timer management, mapping of local and bus memory spaces, memory sizing, and so on.</p>
<p><strong>The System Library</strong><br />
The file sysLib.c provides the board-level interface on which VxWorks and application code can be built in a hardware-independent manner. The functions that should be addressed include:</p>
<p><strong>â€¢	Initialization functions</strong><br />
1.	Initialize the hardware to a known state<br />
2.	Identify the system</p>
<p><strong>â€¢	Initialize drivers, such as SCSI or custom drivers</strong></p>
<p><strong>â€¢	Memory/address space functions</strong><br />
1.	Get the on-board memory size<br />
2.	Make on-board memory accessible to external bus (optional)<br />
3.	Map local and bus address spaces<br />
4.	Enable/disable cache memory<br />
5.	Set/get nonvolatile RAM (NVRAM)<br />
6.	Define the board&#8217;s memory map (optional)<br />
7.	virtual-to-physical memory map declarations for processors with MMUs</p>
<p><strong>â€¢	Bus interrupt functions</strong><br />
1.	Enable/disable bus interrupt levels<br />
2.	Generate bus interrupts</p>
<p><strong>â€¢	Clock/timer functions</strong><br />
1.	enable/disable timer interrupts<br />
2.	set the periodic rate of the timer</p>
<p><strong>â€¢	Mailbox/location monitor functions (optional) </strong><br />
1.	Enable mailbox/location monitor interrupts</p>
<p>The sysLib library does not support every feature of every board: some boards may have additional features, others may have fewer, others still may have the same features with a different interface. For example, some boards provide some sysLib functions by means of hardware switches, jumpers, or PALs, instead of by software-controllable registers.</p>
<p>The configuration modules usrConfig.c and bootConfig.c in TornadoBaseDirectory/target/config/all subdirectory are responsible for invoking this library&#8217;s routines at the appropriate time. Device drivers can use some of the memory mapping routines and bus functions.</p>
<p>Each BSP also includes a boot ROM or other boot mechanism. Many of these import the run-time image from the development host. For information on boot ROMs and other booting mechanisms see Tornado Getting Started manual and VxWorks User &#8216;s Guide section 8.9 Creating Bootable Applications. For information on target-specific libraries, see 8.2 The Board Support Package (BSP) in the VxWorks User&#8217;s Guide and the target-specific reference entries for your board type starting with the file target.nr on the BSP distribution.</p>
<p><strong>Virtual Memory Mapping</strong><br />
For boards with MMU support, the data structure sysPhysMemDesc defines the virtual-to-physical memory map. This table is typically defined in sysLib.c, although some BSPs place it in a separate file, memDesc.c. It is declared as an array of the data structure PHYS_MEM_DESC. No two entries in  this descriptor can overlap; each entry must be a unique memory space. </p>
<p>The sysPhysMemDesc array should reflect your system configuration, and you may encounter a  number of reasons for changing the MMU memory map, for example: the need to change the size of local memory or the size of the VME master access space, or because the address of the VME master access space has been moved. For information on virtual memory mapping, as well as an example of how to modify sysPhysMemDesc, see VxWorks User&#8217;s Guide section 7.3 Virtual Memory Configuration.</p>
<p><strong>The Serial Driver </strong><br />
The file sysSerial.c provides board-specific initialization for the on-board serial ports. The actual serial I/O driver is located in the TornadoBaseDirectory /target/src/drv/sio directory. The library ttyDrv uses the serial I/O driver to provide terminal operations for VxWorks.</p>
<p><strong>BSP Initialization Modules</strong><br />
The following files initialize the BSP:</p>
<p>          The file romInit.s contains assembly-level initialization routines. </p>
<p>          The file sysALib.s contains initialization and system-specific assembly-level routines. </p>
<p><strong>BSP Documentation</strong><br />
The target.nr file located in the TornadoBaseDirectory /target/config/bspname directory is the source of the online reference entries for target-specific information in our new BSP web site. For a description on how to view the target.nr reference files supplied with our product distributions,  see the Tornado Getting Started manual. The target.nr file describes the supported board variations, the relevant jumpering, and supported devices. It also includes an ASCII representation of the board layout with an indication of board jumpers (if applicable) and the location of the ROM sockets.</p>
<p><strong>References</strong></p>
<p>â€¢	<a href="http://www.windriver.com/products/OCD/legacy/tornado/index.html">Tornado Getting Started Manual </a><br />
â€¢	VxWorks User &#8216;s Guide<br />
â€¢	Tornado BSP Developer&#8217;s Kit for VxWorks: User&#8217;s Guide (some times referred to as a porting guide)<br />
â€¢	Tornado BSP Training Workshop &#8211; book 1 (see Wind River training web site for BSP class times)<br />
â€¢	<a href="http://www.windriver.com/products/bsp_web/index.html">Wind River&#8217;s BSP web site </a></p>
<p>The Wind River logo is a trademark of Wind River Systems, Inc., and Wind River is a registered trademark of Wind River Systems. Other marks used herein are the property of the respective owners. </p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Ron+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tag/Wind+River" rel="tag"> Wind River</a>, <a href="http://technorati.com/tag/VxWorks" rel="tag"> VxWorks</a>, <a href="http://technorati.com/tag/Board+Support+Package" rel="tag"> Board Support Package</a>, <a href="http://technorati.com/tag/BSP" rel="tag"> BSP</a>, <a href="http://technorati.com/tag/Tornado" rel="tag"> Tornado</a>, <a href="http://technorati.com/tag/FTP" rel="tag"> FTP</a>, <a href="http://technorati.com/tag/Bootp" rel="tag"> Bootp</a>, <a href="http://technorati.com/tag/TFTP" rel="tag"> TFTP</a>, <a href="http://technorati.com/tag/command+shell" rel="tag"> command shell</a>, <a href="http://technorati.com/tag/RARP" rel="tag"> RARP</a>, <a href="http://technorati.com/tag/Network+Stack" rel="tag"> Network Stack</a>, <a href="http://technorati.com/tag/JTAG" rel="tag"> JTAG</a>, <a href="http://technorati.com/tag/N-wire" rel="tag"> N-wire</a>, <a href="http://technorati.com/tag/Ethernet" rel="tag"> Ethernet</a>, <a href="http://technorati.com/tag/JTAG" rel="tag"> JTAG</a>, <a href="http://technorati.com/tag/UART" rel="tag"> UART</a>, <a href="http://technorati.com/tag/ROM" rel="tag"> ROM</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/11/how-to-leverage-the-valule-of-a-board-support-package/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>How to build Dean Lee&#8217;s Syntax Highlighter from latest components</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/05/how-to-build-dean-lees-syntax-highlighter-from-latest-components/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/05/how-to-build-dean-lees-syntax-highlighter-from-latest-components/#comments</comments>
		<pubDate>Tue, 29 May 2007 09:06:49 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Projects]]></category>
		<category><![CDATA[Component Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Components]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/05/how-to-build-dean-lees-syntax-highlighter-from-latest-components/</guid>
		<description><![CDATA[Ron Fredericks writes: In my last two posts: I discovered Dean Lee&#8216;s Code Highlighter plugin for WordPress as the blogging solution for my source code display needs. I fixed a word wrap problem in Dean&#8217;s plugin. During my research to solve the word wrap problem, I discovered a few more issues leading me to update [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: In my last two posts:</p>
<ul>
<li>I discovered <a href="http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/">Dean Lee&#8216;s Code Highlighter</a> plugin for WordPress as the blogging solution for my source code display needs.</li>
<li>I fixed a <a href="http://www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/">word wrap problem in Dean&#8217;s plugin</a>.</li>
</ul>
<p>During my research to solve the word wrap problem, I discovered a few more issues leading me to update Dean&#8217;s plugin with the latest version of GeSHI (<em>an open-source project: Generic Syntax Highlighter for php. Highlight many languages, including PHP, CSS, HTML, SQL, Java, Assembler, and C for XHTML compliant output</em>) and removal of unused files. I thought other WordPress bloggers might like to take advantage of the latest code too, so I document the steps needed to build a clean plugin with the latest components.</p>
<p><strong>Flow Chart / Swim Lanes Widget</strong><br />
Below is a Flash widget I built to document the steps needed so you can roll your own up-to-date plugin. Follow these steps and you won&#8217;t have to be a programmer to get the benefits from the latest versions of these program components. The widget actively links to the latest PHP files and CSS classes:</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="450" HEIGHT="583" id="how2installplugin" ALIGN=""><param NAME=movie VALUE="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/05/how2installplugin.swf"></param><param NAME=quality VALUE=high></param><param NAME=bgcolor VALUE=#333399><embed src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/05/how2installplugin.swf" quality=high bgcolor=#333399 WIDTH="450" HEIGHT="583" NAME="how2installplugin" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></embed></param></object> </p>
<p><span id="more-54"></span><br />
<strong>Why Roll Your Own Plugin?</strong><br />
I have been working with components and tools on various projects long enough to  realize a common problem. Whenever components are used from different projects, such as Dean&#8217;s plugin integrated with the GeSHi language components, each file and/or component continues to receive bug fixes and enhancements in real-time without regard to the other components and files. This is natural because each componentâ€™s project is managed by a different group.</p>
<p>So now I have an idea on how to fix this evolving problem of diverging code bases: create a flow-chart showing how to assemble the individual components into a final product. Use swim-lanes to highlight the different component resources being used. Document the whole work-flow into a Flash document so links to other web pages and/or live video&#8217;s can be included as hot-links to demonstrate the process.</p>
<p><strong>Detailed Notes on the Problems Solved Here</strong><br />
Here are the issues I solve in this blog post:</p>
<ul>
<li>The version of GeSHi included with Dean&#8217;s code-base is now obsolete. The latest version of GeSHi includes a few bug fixes and a few new supported languages for syntax highlighting. By the time you read this blog post, perhaps GeSHi will have yet an even more improved and stable code base.</li>
<li>One of the optional modules supplied by GeSHi, PHP samples found in the &#8220;contrib&#8221; directory; include a recently-identified security risk if included on a web server &#8211; such as your WordPress blog installation.  Dean&#8217;s plugin includes this GeSHi directory by default.</li>
<li>Dean&#8217;s plugin also includes a Mac temporary file called .DS_Store that is not used by WordPress either.</li>
</ul>
<p><strong>The Components and Their Versions</strong><br />
Deanâ€™s original code has the following versions:</p>
<ul>
<li>WordPress should be version 1.5 or later</li>
<li>Deanâ€™s Code Highlighter v1.1</li>
<li>Download link:<br />
<a href="http://www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/">www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/</a></li>
<li>Deanâ€™s code includes the following GeSHi components:<br />
geshi.php, contrib and geshi directories<br />
GESHI_VERSION, 1.0.7.14</li>
<li>CSS classes for WordPress template style.css file<br />
<a href="http://www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/#ch_css_class">www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/#ch_css_class</a></li>
</ul>
<p>My rebuilt version of Deanâ€™s plugin has the following components and version detail:</p>
<ul>
<li>I&#8217;m using Worpress version 2.0.4</li>
<li>Deans_code_highlighter.php<br />
Version 1.1<br />
Download link:<br />
<a href="http://www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/">www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/</a></li>
<li>geshi.php, and geshi directory<br />
GESHI_VERSION, 1.0.7.19<br />
Download link:<br />
<a href="http://sourceforge.net/projects/geshi">sourceforge.net/projects/geshi/</a></li>
<li>New CSS classes for WordPress template style.css file<br />
Version 1.0 from Embedded Components<br />
<a href="http://www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/#ch_css_class">www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/#ch_css_class</a></li>
</ul>
<p><strong>A Final Note</strong><br />
The GeSHi code base continues to go through updates. At some point the logic behind my approach &#8211; mix and match the latest code from all resources required for Deanâ€™s WordPress plugin â€“ might break down. Perhaps GeSHi will adopt a new interface thatâ€™s not suitable to Deanâ€™s WordPress plugin code, for example. In any case, if you are having trouble getting Deanâ€™s plugin to work, I suggest the following:</p>
<p>Revert back to Deanâ€™s complete code base. Install it as he suggests and try it. If Deanâ€™s original code base does not work, then maybe you are not following the install instructions correctly or perhaps WordPress itself is at an incompatible version. If the plugin works, then try replacing code one step at a time. With each new file change, try your updated WordPress plugin to see if it still can be deactivated, reactivated, and highlights code correctly in a blog post. When the offending component has been identified, let me know so we can work out a new swim-lane diagram for others to follow. </p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Ron+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tag/Dean+Lee" rel="tag">Dean Lee</a>, <a href="http://technorati.com/tag/Code+Highlighter" rel="tag">Code Highlighter</a>, <a href="http://technorati.com/tag/WordPress" rel="tag">WordPress</a>, <a href="http://technorati.com/tag/plugin" rel="tag">plugin</a>, <a href="http://technorati.com/tag/component" rel="tag">component</a>, <a href="http://technorati.com/tag/Flow+Chart" rel="tag">Flow Chart</a>, <a href="http://technorati.com/tag/Swim+Lanes" rel="tag">Swim Lanes</a>, <a href="http://technorati.com/tag/Flash" rel="tag">Flash</a>, <a href="http://technorati.com/tag/widget" rel="tag">widget</a>, <a href="http://technorati.com/tag/PHP" rel="tag">PHP</a>, <a href="http://technorati.com/tag/CSS" rel="tag">CSS</a>, <a href="http://technorati.com/tag/GeSHi" rel="tag">GeSHi</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/05/how-to-build-dean-lees-syntax-highlighter-from-latest-components/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>How to Fix Dean Lee&#8217;s Source Code Highlight Plugin</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/#comments</comments>
		<pubDate>Sun, 27 May 2007 08:52:29 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/</guid>
		<description><![CDATA[Ron Fredericks writes: In my previous post, I discuss Dean Lee&#8216;s source code syntax highlighting plugin for WordPress. It delivers all the great features of the GeSHi open-source highlight project for Wordress bloggers. Yet some source code displayed badly &#8211; turning a developer&#8217;s nice clean style into a chaotic and messy format. I demonstrated the [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: In my <a href="http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/">previous post</a>, I discuss Dean Lee&#8216;s source code syntax highlighting <a href="http://www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/">plugin for WordPress</a>. It delivers all the great features of the <a href="http://sourceforge.net/projects/geshi/">GeSHi</a> open-source highlight project for Wordress bloggers.</p>
<p>Yet some source code displayed badly &#8211; turning a developer&#8217;s nice clean style into a chaotic and messy format.  I <a href="http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/#image">demonstrated the display problem</a> using a perl sendmail script I plan to discuss in a future blog post. The problem had to do with some kind of whitespace word wrap issue.</p>
<p>I tested various features of CSS and DIV tag attributes created by Dean&#8217;s plugin and the GeSHi php code. I am happy to say, I found a simple one-line solution. My solution is in updating Dean&#8217;s CSS container class to force white space not to wrap. </p>
<p><strong>Here is my solution:</strong><br />
Add this property to Dean&#8217;s &#8220;<strong><span style="color : blue;">ch_code_container</span></strong>&#8221; CSS class:<br />
<code><br />
<span style="color : black;">white-space</span><span style="color : pink;">:</span> <span style="color : brown;">nowrap</span><span style="color : pink;">;</span><br />
</code><br />
<span id="more-52"></span><br />
<a name="source"><a name="#ch_css_class"></a>Here is the complete update I made to my WordPress template:<br />
<strong>wp-content/themes/eciWidget/style.css</strong></p>
<div class="ch_code_container" style="font-family: monospace;height:300px;">
<div style="">Code (css)</div>
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">/* Add the following CSS styles modified from Dean&#8217;s code Highlighter */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">/* Embedded Components, Inc. CSS classes update: version 1.0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #6666ff;">.ch_code_container</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">background-color</span>: <span style="color: #cc00cc;">#f0f0f0</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">border</span>: <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#C3CED9</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">padding</span>: <span style="color: #933;">0px</span> <span style="color: #933;">0px</span> <span style="color: #933;">0</span> <span style="color: #933;">0</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">width</span>: <span style="color: #933;"><span style="color: #933;">100</span>%</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">text-align</span>: <span style="color: #000000; font-weight: bold;">left</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">font-size<span style="color: #3333ff;">:<span style="color: #933;">1</span></span><span style="color: #6666ff;"><span style="color: #933;">.00em</span></span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">overflow<span style="color: #3333ff;">:auto</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">white-space</span>: <span style="color: #993333;">nowrap</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #6666ff;">.ch_code_container</span> <span style="color: #6666ff;">.head</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">color</span>: <span style="color: #cc00cc;">#<span style="color: #933;">808080</span></span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">font-weight</span>: <span style="color: #993333;">bold</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">background-color</span>: <span style="color: #cc00cc;">#f0f0ff</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">border-bottom</span>: <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#d0d0d0</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">padding</span>: <span style="color: #933;">2px</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
<p>So now let&#8217;s see how this change affects the source code highlight format using my sendmail perl script example. Compared to the <a href="http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/#image">image shown in my previous post</a>, the updated highlight plugin CSS style change solved the problem. Now all lines of source code display as one line each, with the horizontal scroll bar used to see the full text:</p>
<div class="ch_code_container" style="font-family: monospace;height:300px;">
<div style="">Code (perl)</div>
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#!/usr/bin/perl</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">##############################################################################</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># FormMail&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Version 1.92&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Copyright 1995-2002 Matt Wright mattw@scriptarchive.com&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Created 06/09/95&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Last Modified 04/21/02&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Matt&#8217;s&nbsp; Script Archive, Inc.:&nbsp; &nbsp; http://www.scriptarchive.com/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">##############################################################################</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># SPAM FIX&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Embedded Components, Inc.:&nbsp; &nbsp; &nbsp; http://www.embeddedcomponents.com&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Ron Fredericks&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ronf@embeddedcomponents.com&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Created 05/18/07&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Last Modified 05/23/07&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Logic: if number of Internet links exceed $spamChunksMax,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># then print a default error message instead of sending email.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># define number of links that can appear in an email&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$spamChunksMax</span> = <span style="color: #cc66cc;">4</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># define web address to include in &quot;too many links error message&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$spamChunkErrorLink</span> = <span style="color: #ff0000;">&quot;http://www.embeddedcomponents.com&quot;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #808080; font-style: italic;">#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># define the spam error message&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$spamMessage</span> = <span style="color: #ff0000;">&quot;Sorry, no spam today please&#8230;&quot;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #808080; font-style: italic;">#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># server-side spam test (search this phrase to find all script edits)&nbsp; &nbsp; &nbsp; &nbsp; #&nbsp; </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">##############################################################################</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># COPYRIGHT NOTICE&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Copyright 1995-2002 Matthew M. Wright&nbsp; All Rights Reserved.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># FormMail may be used and modified free of charge by anyone so long as this #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># copyright notice and the comments above remain intact.&nbsp; By using this&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># code you agree to indemnify Matthew M. Wright from any liability that&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># might arise from its use.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Selling the code for this program without prior written consent is&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># expressly forbidden.&nbsp; In other words, please ask first before you try and&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># make money off of my program.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Obtain permission before redistributing this software over the Internet or #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># in any other medium. In all cases copyright and header must remain intact. #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">##############################################################################</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># ACCESS CONTROL FIX: Peter D. Thompson Yezek&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;http://www.securityfocus.com/archive/1/62033&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">##############################################################################</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Define Variables&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; &nbsp; Detailed Information Found In README File.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># $mailprog defines the location of your sendmail program on your unix&nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># system. The flags -i and -t should be passed to sendmail in order to&nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># have it ignore single dots on a line and to read message for recipients&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$mailprog</span> = <span style="color: #ff0000;">&#8216;/usr/lib/sendmail -i -t&#8217;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># @referers allows forms to be located only on servers which are defined&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># in this field.&nbsp; This security fix from the last version which allowed&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># anyone on any server to use your FormMail script on their web site.&nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">@referers</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;scriptarchive.com&#8217;</span>,<span style="color: #ff0000;">&#8216;embeddedcomponents.com&#8217;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># @recipients defines the e-mail addresses or domain names that e-mail can&nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># be sent to.&nbsp; This must be filled in correctly to prevent SPAM and allow&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># valid addresses to receive e-mail.&nbsp; Read the documentation to find out how #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># this variable works!!!&nbsp; It is EXTREMELY IMPORTANT.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># @recipients = &amp;fill_recipients(@referers);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">@recipients</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;^ronf\@embeddedcomponents\.com&#8217;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># ACCESS CONTROL FIX: Peter D. Thompson Yezek&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># @valid_ENV allows the sysadmin to define what environment variables can&nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># be reported via the env_report directive.&nbsp; This was implemented to fix&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># the problem reported at http://www.securityfocus.com/bid/1187&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">@valid_ENV</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;REMOTE_HOST&#8217;</span>,<span style="color: #ff0000;">&#8216;REMOTE_ADDR&#8217;</span>,<span style="color: #ff0000;">&#8216;REMOTE_USER&#8217;</span>,<span style="color: #ff0000;">&#8216;HTTP_USER_AGENT&#8217;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#@valid_ENV = (&#8216;REMOTE_HOST&#8217;,'REMOTE_ADDR&#8217;,'REMOTE_USER&#8217;,'HTTP_USER_AGENT&#8217;,'HTTP_REFERER&#8217;);</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Done&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">##############################################################################</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Check Referring URL</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&amp;check_url;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Retrieve Date</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&amp;get_date;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Parse Form Contents</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&amp;parse_form;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Check Required Fields</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&amp;check_required;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Send E-Mail</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&amp;send_mail;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># Return HTML Page or Redirect User</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&amp;return_html;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># NOTE rev1.91: This function is no longer intended to stop abuse, that&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; functionality is now embedded in the checks made on @recipients and the #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">#&nbsp; &nbsp; recipient form field.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">sub</span> check_url <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Localize the check_referer flag which determines if user is valid.&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/local.html"><span style="color: #000066;">local</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$check_referer</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">0</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If a referring URL was specified, for each valid referer, make sure&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># that a valid referring URL was passed to FormMail.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ENV</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;HTTP_REFERER&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$referer</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@referers</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ENV</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;HTTP_REFERER&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ m|https?://<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>^/<span style="color: #66cc66;">&#93;</span>*<span style="color: #66cc66;">&#41;</span><span style="color: #0000ff;">$referer</span>|i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$check_referer</span> = <span style="color: #cc66cc;">1</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">last</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$check_referer</span> = <span style="color: #cc66cc;">1</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If the HTTP_REFERER was invalid, send back an error.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$check_referer</span> != <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> &amp;error<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;bad_referer&#8217;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">sub</span> get_date <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Define arrays for the day of the week and month of the year.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">@days</span>&nbsp; &nbsp;= <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;Sunday&#8217;</span>,<span style="color: #ff0000;">&#8216;Monday&#8217;</span>,<span style="color: #ff0000;">&#8216;Tuesday&#8217;</span>,<span style="color: #ff0000;">&#8216;Wednesday&#8217;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;Thursday&#8217;</span>,<span style="color: #ff0000;">&#8216;Friday&#8217;</span>,<span style="color: #ff0000;">&#8216;Saturday&#8217;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">@months</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;January&#8217;</span>,<span style="color: #ff0000;">&#8216;February&#8217;</span>,<span style="color: #ff0000;">&#8216;March&#8217;</span>,<span style="color: #ff0000;">&#8216;April&#8217;</span>,<span style="color: #ff0000;">&#8216;May&#8217;</span>,<span style="color: #ff0000;">&#8216;June&#8217;</span>,<span style="color: #ff0000;">&#8216;July&#8217;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;August&#8217;</span>,<span style="color: #ff0000;">&#8216;September&#8217;</span>,<span style="color: #ff0000;">&#8216;October&#8217;</span>,<span style="color: #ff0000;">&#8216;November&#8217;</span>,<span style="color: #ff0000;">&#8216;December&#8217;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Get the current time and format the hour, minutes and seconds.&nbsp; Add&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># 1900 to the year to get the full 4 digit year.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$sec</span>,<span style="color: #0000ff;">$min</span>,<span style="color: #0000ff;">$hour</span>,<span style="color: #0000ff;">$mday</span>,<span style="color: #0000ff;">$mon</span>,<span style="color: #0000ff;">$year</span>,<span style="color: #0000ff;">$wday</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#40;</span><a href="http://www.perldoc.com/perl5.6/pod/func/localtime.html"><span style="color: #000066;">localtime</span></a><span style="color: #66cc66;">&#40;</span><a href="http://www.perldoc.com/perl5.6/pod/func/time.html"><span style="color: #000066;">time</span></a><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$time</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/sprintf.html"><span style="color: #000066;">sprintf</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;%02d:%02d:%02d&quot;</span>,<span style="color: #0000ff;">$hour</span>,<span style="color: #0000ff;">$min</span>,<span style="color: #0000ff;">$sec</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$year</span> += <span style="color: #cc66cc;">1900</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Format the date.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$date</span> = <span style="color: #ff0000;">&quot;$days[$wday], $months[$mon] $mday, $year at $time&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">sub</span> parse_form <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># part of server-side spam test</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># initialize our antispam counter</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$spamChunkCount</span> = <span style="color: #cc66cc;">0</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Define the configuration associative array.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">%Config</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;recipient&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff0000;">&#8216;subject&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;email&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff0000;">&#8216;realname&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;redirect&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;bgcolor&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;background&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;link_color&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;vlink_color&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff0000;">&#8216;text_color&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;alink_color&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff0000;">&#8216;title&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;sort&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;print_config&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;required&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;env_report&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;return_link_title&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,&nbsp; <span style="color: #ff0000;">&#8216;return_link_url&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>,</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff0000;">&#8216;print_blank_fields&#8217;</span>,<span style="color: #ff0000;">&#8221;</span>, <span style="color: #ff0000;">&#8216;missing_fields_redirect&#8217;</span>,<span style="color: #ff0000;">&#8221;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Determine the form&#8217;s REQUEST_METHOD (GET or POST) and split the form&nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># fields up into their name-value pairs.&nbsp; If the REQUEST_METHOD was&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># not GET or POST, send an error.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ENV</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;REQUEST_METHOD&#8217;</span><span style="color: #66cc66;">&#125;</span> eq <span style="color: #ff0000;">&#8216;GET&#8217;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Split the name-value pairs</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">@pairs</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/split.html"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">&#40;</span>/&amp;/, <span style="color: #0000ff;">$ENV</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;QUERY_STRING&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">elsif</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ENV</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;REQUEST_METHOD&#8217;</span><span style="color: #66cc66;">&#125;</span> eq <span style="color: #ff0000;">&#8216;POST&#8217;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Get the input</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/read.html"><span style="color: #000066;">read</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">STDIN</span>, <span style="color: #0000ff;">$buffer</span>, <span style="color: #0000ff;">$ENV</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;CONTENT_LENGTH&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Split the name-value pairs</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">@pairs</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/split.html"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">&#40;</span>/&amp;/, <span style="color: #0000ff;">$buffer</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &amp;error<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;request_method&#8217;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># For each name-value pair:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$pair</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@pairs</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Split the pair up into individual variables.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/local.html"><span style="color: #000066;">local</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$name</span>, <span style="color: #0000ff;">$value</span><span style="color: #66cc66;">&#41;</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/split.html"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">&#40;</span>/=/, <span style="color: #0000ff;">$pair</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Decode the form encoding on the name and value variables.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># v1.92: remove null bytes&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$name</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/tr.html"><span style="color: #000066;">tr</span></a>/+/ /;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$name</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/%<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>a-fA-F0<span style="color: #cc66cc;">-9</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>a-fA-F0<span style="color: #cc66cc;">-9</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>/<a href="http://www.perldoc.com/perl5.6/pod/func/pack.html"><span style="color: #000066;">pack</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;C&quot;</span>, <a href="http://www.perldoc.com/perl5.6/pod/func/hex.html"><span style="color: #000066;">hex</span></a><span style="color: #66cc66;">&#40;</span>$<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>/eg;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$name</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/tr.html"><span style="color: #000066;">tr</span></a>/\<span style="color: #cc66cc;">0</span>//d;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$value</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/tr.html"><span style="color: #000066;">tr</span></a>/+/ /;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$value</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/%<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>a-fA-F0<span style="color: #cc66cc;">-9</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>a-fA-F0<span style="color: #cc66cc;">-9</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>/<a href="http://www.perldoc.com/perl5.6/pod/func/pack.html"><span style="color: #000066;">pack</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;C&quot;</span>, <a href="http://www.perldoc.com/perl5.6/pod/func/hex.html"><span style="color: #000066;">hex</span></a><span style="color: #66cc66;">&#40;</span>$<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>/eg;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$value</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/tr.html"><span style="color: #000066;">tr</span></a>/\<span style="color: #cc66cc;">0</span>//d;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># part of server-side spam test</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># count number of accesses to internet this email message might have&#8230;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$spamChunkCount</span> = <span style="color: #0000ff;">$spamChunkCount</span> + &amp;count_chunks<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$value</span>, <span style="color: #ff0000;">&quot;href=&quot;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$spamChunkCount</span> = <span style="color: #0000ff;">$spamChunkCount</span> + &amp;count_chunks<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$value</span>, <span style="color: #ff0000;">&quot;http:&quot;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$spamChunkCount</span> = <span style="color: #0000ff;">$spamChunkCount</span> + &amp;count_chunks<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$value</span>, <span style="color: #ff0000;">&quot;https:&quot;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$spamChunkCount</span> = <span style="color: #0000ff;">$spamChunkCount</span> + &amp;count_chunks<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$value</span>, <span style="color: #ff0000;">&quot;ftp:&quot;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$spamChunkCount</span> = <span style="color: #0000ff;">$spamChunkCount</span> + &amp;count_chunks<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$value</span>, <span style="color: #ff0000;">&quot;mailto:&quot;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If the field name has been specified in the %Config array, it will #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># return a 1 for defined($Config{$name}}) and we should associate&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># this value with the appropriate configuration variable.&nbsp; If this&nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># is not a configuration form field, put it into the associative&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># array %Form, appending the value with a &#8216;, &#8216; if there is already a #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># value present.&nbsp; We also save the order of the form fields in the&nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># @Field_Order array so we can use this order for the generic sort.&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.perldoc.com/perl5.6/pod/func/defined.html"><span style="color: #000066;">defined</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$name</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$name</span><span style="color: #66cc66;">&#125;</span> = <span style="color: #0000ff;">$value</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$name</span><span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">ne</span> <span style="color: #ff0000;">&#8221;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$name</span><span style="color: #66cc66;">&#125;</span> = <span style="color: #ff0000;">&quot;$Form{$name}, $value&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/push.html"><span style="color: #000066;">push</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@Field_Order</span>,<span style="color: #0000ff;">$name</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$name</span><span style="color: #66cc66;">&#125;</span> = <span style="color: #0000ff;">$value</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># The next six lines remove any extra spaces or new lines from the&nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># configuration variables, which may have been caused if your editor&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># wraps lines after a certain length or if you used spaces between field #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># names or environment variables.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;required&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+|\n<span style="color: #66cc66;">&#41;</span>?,<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+|\n<span style="color: #66cc66;">&#41;</span>?/,/g;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;required&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+<span style="color: #66cc66;">&#41;</span>?\n+<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+<span style="color: #66cc66;">&#41;</span>?//g;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;env_report&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+|\n<span style="color: #66cc66;">&#41;</span>?,<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+|\n<span style="color: #66cc66;">&#41;</span>?/,/g;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;env_report&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+<span style="color: #66cc66;">&#41;</span>?\n+<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+<span style="color: #66cc66;">&#41;</span>?//g;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;print_config&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+|\n<span style="color: #66cc66;">&#41;</span>?,<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+|\n<span style="color: #66cc66;">&#41;</span>?/,/g;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;print_config&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ s/<span style="color: #66cc66;">&#40;</span>\s+<span style="color: #66cc66;">&#41;</span>?\n+<span style="color: #66cc66;">&#40;</span>\s+<span style="color: #66cc66;">&#41;</span>?//g;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Split the configuration variables into individual field names.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">@Required</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/split.html"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">&#40;</span>/,/,<span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;required&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">@Env_Report</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/split.html"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">&#40;</span>/,/,<span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;env_report&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">@Print_Config</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/split.html"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">&#40;</span>/,/,<span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;print_config&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># ACCESS CONTROL FIX: Only allow ENV variables in @valid_ENV in&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># @Env_Report for security reasons.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$env_item</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@Env_Report</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$valid_item</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@valid_ENV</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$env_item</span> eq <span style="color: #0000ff;">$valid_item</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <a href="http://www.perldoc.com/perl5.6/pod/func/push.html"><span style="color: #000066;">push</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@temp_array</span>, <span style="color: #0000ff;">$env_item</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0000ff;">@Env_Report</span> = <span style="color: #0000ff;">@temp_array</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">sub</span> check_required <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Localize the variables used in this subroutine.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/local.html"><span style="color: #000066;">local</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$require</span>, <span style="color: #0000ff;">@error</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># The following insures that there were no newlines in any fields which&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># will be used in the header.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;subject&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ /<span style="color: #66cc66;">&#40;</span>\n|\r<span style="color: #66cc66;">&#41;</span>/<a href="http://www.perldoc.com/perl5.6/pod/func/m.html"><span style="color: #000066;">m</span></a> || <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;email&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ /<span style="color: #66cc66;">&#40;</span>\n|\r<span style="color: #66cc66;">&#41;</span>/<a href="http://www.perldoc.com/perl5.6/pod/func/m.html"><span style="color: #000066;">m</span></a> ||</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;realname&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ /<span style="color: #66cc66;">&#40;</span>\n|\r<span style="color: #66cc66;">&#41;</span>/<a href="http://www.perldoc.com/perl5.6/pod/func/m.html"><span style="color: #000066;">m</span></a> || <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;recipient&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ /<span style="color: #66cc66;">&#40;</span>\n|\r<span style="color: #66cc66;">&#41;</span>/<a href="http://www.perldoc.com/perl5.6/pod/func/m.html"><span style="color: #000066;">m</span></a><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &amp;error<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;invalid_headers&#8217;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;recipient&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<a href="http://www.perldoc.com/perl5.6/pod/func/defined.html"><span style="color: #000066;">defined</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">%Form</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> &amp;error<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;bad_referer&#8217;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">&#123;</span> &amp;error<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;no_recipient&#8217;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># This block of code requires that the recipient address end with&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># a valid domain or e-mail address as defined in @recipients.&nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$valid_recipient</span> = <span style="color: #cc66cc;">0</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$send_to</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.perldoc.com/perl5.6/pod/func/split.html"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">&#40;</span>/,/,<span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;recipient&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$recipient</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@recipients</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$send_to</span> =~ /<span style="color: #0000ff;">$recipient</span>$/i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/push.html"><span style="color: #000066;">push</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@send_to</span>,<span style="color: #0000ff;">$send_to</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #b1b100;">last</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>$<span style="color: #808080; font-style: italic;">#send_to &lt; 0) { &amp;error(&#8216;no_recipient&#8217;) }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;recipient&#8217;</span><span style="color: #66cc66;">&#125;</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/join.html"><span style="color: #000066;">join</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;,&#8217;</span>,<span style="color: #0000ff;">@send_to</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># For each require field defined in the form:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$require</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@Required</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If the required field is the email field, the syntax of the email&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># address if checked to make sure it passes a valid syntax.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$require</span> eq <span style="color: #ff0000;">&#8216;email&#8217;</span> &amp;&amp; !&amp;check_email<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$require</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/push.html"><span style="color: #000066;">push</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@error</span>,<span style="color: #0000ff;">$require</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Otherwise, if the required field is a configuration field and it&nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># has no value or has been filled in with a space, send an error.&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">elsif</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.perldoc.com/perl5.6/pod/func/defined.html"><span style="color: #000066;">defined</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$require</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$require</span><span style="color: #66cc66;">&#125;</span> eq <span style="color: #ff0000;">&#8221;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <a href="http://www.perldoc.com/perl5.6/pod/func/push.html"><span style="color: #000066;">push</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@error</span>,<span style="color: #0000ff;">$require</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If it is a regular form field which has not been filled in or&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># filled in with a space, flag it as an error field.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">elsif</span> <span style="color: #66cc66;">&#40;</span>!<a href="http://www.perldoc.com/perl5.6/pod/func/defined.html"><span style="color: #000066;">defined</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$require</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$require</span><span style="color: #66cc66;">&#125;</span> eq <span style="color: #ff0000;">&#8221;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/push.html"><span style="color: #000066;">push</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@error</span>,<span style="color: #0000ff;">$require</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If any error fields have been found, send error message to the user.&nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@error</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> &amp;error<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;missing_fields&#8217;</span>, <span style="color: #0000ff;">@error</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">sub</span> return_html <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Local variables used in this subroutine initialized.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/local.html"><span style="color: #000066;">local</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$key</span>,<span style="color: #0000ff;">$sort_order</span>,<span style="color: #0000ff;">$sorted_field</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Now that we have finished using form values for any e-mail related&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># reasons, we will convert all of the form fields and config values&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># to remove any cross-site scripting security holes.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/local.html"><span style="color: #000066;">local</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$field</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$field</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.perldoc.com/perl5.6/pod/func/keys.html"><span style="color: #000066;">keys</span></a> <span style="color: #0000ff;">%Config</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$safeConfig</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$field</span><span style="color: #66cc66;">&#125;</span> = &amp;clean_html<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$field</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$field</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.perldoc.com/perl5.6/pod/func/keys.html"><span style="color: #000066;">keys</span></a> <span style="color: #0000ff;">%Form</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$field</span><span style="color: #66cc66;">&#125;</span> = &amp;clean_html<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$field</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If redirect option is used, print the redirectional location header.&nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;redirect&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;Location: $safeConfig{&#8216;redirect&#8217;}<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Otherwise, begin printing the response page.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Print HTTP header and opening HTML tags.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;Content-type: text/html<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;html&gt;<span style="color: #000099; font-weight: bold;">\n</span> &lt;head&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Print out title of page&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;title&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;title&gt;$safeConfig{&#8216;title&#8217;}&lt;/title&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span> <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;title&gt;Thank You&lt;/title&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot; &lt;/head&gt;<span style="color: #000099; font-weight: bold;">\n</span> &lt;body&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Get Body Tag Attributes&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &amp;body_attributes;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Close Body Tag&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&gt;<span style="color: #000099; font-weight: bold;">\n</span>&nbsp; &lt;center&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Print custom or generic title.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;title&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;h1&gt;$safeConfig{&#8216;title&#8217;}&lt;/h1&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span> <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;h1&gt;Thank You For Filling Out This Form&lt;/h1&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;/center&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;Below is what you submitted to $safeConfig{&#8216;recipient&#8217;} on &quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;$date&lt;p&gt;&lt;hr size=1 width=75<span style="color: #000099; font-weight: bold;">\%</span>&gt;&lt;p&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If a sort order is specified, sort the form fields based on that.&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;sort&#8217;</span><span style="color: #66cc66;">&#125;</span> =~ /^order:.*,.*/<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Set the temporary $sort_order variable to the sorting order,&nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># remove extraneous line breaks and spaces, remove the order:&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># directive and split the sort fields into an array.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$sort_order</span> = <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;sort&#8217;</span><span style="color: #66cc66;">&#125;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$sort_order</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+|\n<span style="color: #66cc66;">&#41;</span>?,<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+|\n<span style="color: #66cc66;">&#41;</span>?/,/g;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$sort_order</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+<span style="color: #66cc66;">&#41;</span>?\n+<span style="color: #66cc66;">&#40;</span>\<a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>+<span style="color: #66cc66;">&#41;</span>?//g;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$sort_order</span> =~ <a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>/order://;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">@sorted_fields</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/split.html"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">&#40;</span>/,/, <span style="color: #0000ff;">$sort_order</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># For each sorted field, if it has a value or the print blank&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># fields option is turned on print the form field and value.&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$sorted_field</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@sorted_fields</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/local.html"><span style="color: #000066;">local</span></a> <span style="color: #0000ff;">$sfname</span> = &amp;clean_html<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$sorted_field</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;print_blank_fields&#8217;</span><span style="color: #66cc66;">&#125;</span> || <span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$sorted_field</span><span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">ne</span> <span style="color: #ff0000;">&#8221;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;b&gt;$sfname:&lt;/b&gt; $Form{$sorted_field}&lt;p&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Otherwise, use the order the fields were sent, or alphabetic.&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Sort alphabetically if requested.</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;sort&#8217;</span><span style="color: #66cc66;">&#125;</span> eq <span style="color: #ff0000;">&#8216;alphabetic&#8217;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">@Field_Order</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/sort.html"><span style="color: #000066;">sort</span></a> <span style="color: #0000ff;">@Field_Order</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># For each form field, if it has a value or the print blank&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># fields option is turned on print the form field and value.&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$field</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@Field_Order</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/local.html"><span style="color: #000066;">local</span></a> <span style="color: #0000ff;">$fname</span> = &amp;clean_html<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$field</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;print_blank_fields&#8217;</span><span style="color: #66cc66;">&#125;</span> || <span style="color: #0000ff;">$Form</span><span style="color: #66cc66;">&#123;</span><span style="color: #0000ff;">$field</span><span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">ne</span> <span style="color: #ff0000;">&#8221;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;b&gt;$fname:&lt;/b&gt; $Form{$field}&lt;p&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;p&gt;&lt;hr size=1 width=75%&gt;&lt;p&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Check for a Return Link and print one if found.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;return_link_url&#8217;</span><span style="color: #66cc66;">&#125;</span> &amp;&amp; <span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;return_link_title&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;ul&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;li&gt;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>$safeConfig{&#8216;return_link_url&#8217;}<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;$safeConfig{&#8216;return_link_title&#8217;}&lt;/a&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;&lt;/ul&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Print the page footer.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> &lt;&lt;<span style="color: #ff0000;">&quot;(END HTML FOOTER)&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;hr size=<span style="color: #cc66cc;">1</span> width=<span style="color: #cc66cc;">75</span>%&gt;<span style="color: #009999;">&lt;p&gt;</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009999;">&lt;center&gt;</span>&lt;font size=<span style="color: #cc66cc;">-1</span>&gt;&lt;a href=<span style="color: #ff0000;">&quot;http://www.scriptarchive.com/formmail.html&quot;</span>&gt;FormMail&lt;/a&gt; V1<span style="color: #cc66cc;">.92</span> &amp;copy; <span style="color: #cc66cc;">1995</span> &#8211; <span style="color: #cc66cc;">2002</span>&nbsp; Matt Wright</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">A Free Product of &lt;a href=<span style="color: #ff0000;">&quot;http://www.scriptarchive.com/&quot;</span>&gt;Matt<span style="color: #ff0000;">&#8216;s&nbsp; Script Archive, Inc.&lt;/a&gt;&lt;/font&gt;&lt;/center&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/body&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp;&lt;/html&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">(END HTML FOOTER)</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">}</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">sub send_mail {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Localize variables used in this subroutine.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; local($print_config,$key,$sort_order,$sorted_field,$env_report);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # part of server-side spam test</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Decide if we should skip sending this email because it could be spam</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ( $spamChunkCount &gt; $spamChunksMax ) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; print &quot;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;!DOCTYPE HTML PUBLIC &#8216;</span>-//W3C//DTD HTML <span style="color: #cc66cc;">4.0</span> Transitional//EN<span style="color: #ff0000;">&#8216;&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;html&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;title&gt;Error: Request Method&lt;/title&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;/head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;body bgcolor=#FFFFFF text=#000000&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;p&gt;$spamMessage&lt;/p&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;p&gt;&lt;form&gt; </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;input type=\&quot;Button\&quot; value=\&quot;Go back and try again\&quot; onclick=\&quot;history.back()\&quot;&gt; </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;/form&gt;&lt;/p&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;p&gt;&lt;a href=\&quot;$spamChunkErrorLink\&quot;&gt;$spamChunkErrorLink&lt;/a&gt;&lt;/p&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;/body&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;/html&gt;&quot;;&nbsp; &nbsp; &nbsp;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; exit;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Open The Mail Program</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; open(MAIL,&quot;|$mailprog&quot;);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; print MAIL &quot;To: $Config{&#8216;</span>recipient<span style="color: #ff0000;">&#8216;}\n&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; print MAIL &quot;From: $Config{&#8216;</span>email<span style="color: #ff0000;">&#8216;} ($Config{&#8216;</span>realname<span style="color: #ff0000;">&#8216;})\n&quot;;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Check for Message Subject</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($Config{&#8216;</span>subject<span style="color: #ff0000;">&#8216;}) { print MAIL &quot;Subject: $Config{&#8216;</span>subject<span style="color: #ff0000;">&#8216;}\n\n&quot; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { print MAIL &quot;Subject: WWW Form Submission\n\n&quot; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; print MAIL &quot;Below is the result of your feedback form.&nbsp; It was submitted by\n&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; print MAIL &quot;$Config{&#8216;</span>realname<span style="color: #ff0000;">&#8216;} ($Config{&#8216;</span>email<span style="color: #ff0000;">&#8216;}) on $date\n&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; print MAIL &quot;-&quot; x 75 . &quot;\n\n&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # part of server-side spam test</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # uncomment this next line to view details of antispam logic in action</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # print MAIL &quot;ANTISPAM_URLCOUNT = &quot; .&nbsp; $spamChunkCount. &quot; diff= &quot;. ($spamChunkCount-$spamChunksMax). &quot;\n\n&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if (@Print_Config) {</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; foreach $print_config (@Print_Config) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($Config{$print_config}) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print MAIL &quot;$print_config: $Config{$print_config}\n\n&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # If a sort order is specified, sort the form fields based on that.&nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($Config{&#8216;</span><a href="http://www.perldoc.com/perl5.6/pod/func/sort.html"><span style="color: #000066;">sort</span></a><span style="color: #ff0000;">&#8216;} =~ /^order:.*,.*/) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # Remove extraneous line breaks and spaces, remove the order:&nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # directive and split the sort fields into an array.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; local $sort_order = $Config{&#8216;</span><a href="http://www.perldoc.com/perl5.6/pod/func/sort.html"><span style="color: #000066;">sort</span></a><span style="color: #ff0000;">&#8216;};</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; $sort_order =~ s/(\s+|\n)?,(\s+|\n)?/,/g;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; $sort_order =~ s/(\s+)?\n+(\s+)?//g;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; $sort_order =~ s/order://;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; @sorted_fields = split(/,/, $sort_order);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # For each sorted field, if it has a value or the print blank&nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # fields option is turned on print the form field and value.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; foreach $sorted_field (@sorted_fields) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($Config{&#8216;</span>print_blank_fields<span style="color: #ff0000;">&#8216;} || $Form{$sorted_field} ne &#8216;</span><span style="color: #ff0000;">&#8216;) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print MAIL &quot;$sorted_field: $Form{$sorted_field}\n\n&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Otherwise, print fields in order they were sent or alphabetically.&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; else {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # Sort alphabetically if specified:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; if ($Config{&#8216;</span><a href="http://www.perldoc.com/perl5.6/pod/func/sort.html"><span style="color: #000066;">sort</span></a><span style="color: #ff0000;">&#8216;} eq &#8216;</span>alphabetic<span style="color: #ff0000;">&#8216;) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Field_Order = sort @Field_Order;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # For each form field, if it has a value or the print blank&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # fields option is turned on print the form field and value.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; foreach $field (@Field_Order) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($Config{&#8216;</span>print_blank_fields<span style="color: #ff0000;">&#8216;} || $Form{$field} ne &#8216;</span><span style="color: #ff0000;">&#8216;) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print MAIL &quot;$field: $Form{$field}\n\n&quot;;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; print MAIL &quot;-&quot; x 75 . &quot;\n\n&quot;;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Send any specified Environment Variables to recipient.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; foreach $env_report (@Env_Report) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; if ($ENV{$env_report}) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print MAIL &quot;$env_report: $ENV{$env_report}\n&quot;;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; close (MAIL);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">}</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">sub check_email {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Initialize local email variable with input to subroutine.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $email = $_[0];</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # If the e-mail address contains:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ ||</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # the e-mail address contains an invalid syntax.&nbsp; Or, if the&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # syntax does not match the following regular expression pattern&nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # it fails basic syntax verification.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; $email !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z0-9]+)(\]?)$/) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # Basic syntax requires:&nbsp; one or more characters before the @ sign,&nbsp; #</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # followed by an optional &#8216;</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&#8216;, then any number of letters, numbers,&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # dashes or periods (valid domain/IP characters) ending in a period&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # and then 2 or 3 letters (for domain suffixes) or 1 to 3 numbers&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # (for IP addresses).&nbsp; An ending bracket is also allowed as it is&nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # valid syntax to have an email address like: user@[255.255.255.0]&nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # Return a false value, since the e-mail address did not pass valid&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # syntax.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; return 0;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; else {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # Return a true value, e-mail verification passed.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; return 1;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">}</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"># This was added into v1.91 to further secure the recipients array.&nbsp; Now, by #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"># default it will assume that valid recipients include only users with&nbsp; &nbsp; &nbsp; &nbsp;#</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"># usernames A-Z, a-z, 0-9, _ and &#8211; that match your domain exactly.&nbsp; If this&nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"># is not what you want, you should read more detailed instructions regarding #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"># the configuration of the @recipients variable in the documentation.&nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">sub fill_recipients {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; local(@domains) = @_;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; local($domain,@return_recips);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; foreach $domain (@domains) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; if ($domain =~ /^\d+\.\d+\.\d+\.\d+$/) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $domain =~ s/\./<span style="color: #000099; font-weight: bold;">\\</span>\./g;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push(@return_recips,&#8217;</span>^<span style="color: #66cc66;">&#91;</span>\w\-\.<span style="color: #66cc66;">&#93;</span>+\@\<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&#8216; . $domain . &#8216;</span>\<span style="color: #66cc66;">&#93;</span><span style="color: #ff0000;">&#8216;);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; else {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $domain =~ s/\./<span style="color: #000099; font-weight: bold;">\\</span>\./g;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $domain =~ s/\-/<span style="color: #000099; font-weight: bold;">\\</span>\-/g;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push(@return_recips,&#8217;</span>^<span style="color: #66cc66;">&#91;</span>\w\-\.<span style="color: #66cc66;">&#93;</span>+\@<span style="color: #ff0000;">&#8216; . $domain);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; return @return_recips;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">}</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"># This function will convert &lt;, &gt;, &amp; and &quot; to their HTML equivalents.&nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">sub clean_html {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; local $value = $_[0];</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $value =~ s/\&amp;/\&amp;/g;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $value =~ s/&lt;/\&lt;/g;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $value =~ s/&gt;/\&gt;/g;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $value =~ s/&quot;/\&quot;/g;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; return $value;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">}</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"># This function returns the number of text chucks in a string</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">sub count_chunks {</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Usage: &amp;count_chunks(&quot;string&quot;,&quot;substring&quot;)</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Returns: the number of substring chunks found in a string</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # part of server-side spam test</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # reference: http://www.blazonry.com/perl/linkcount_pl.txt</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; my $myString;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; my $myChunk;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; my $myInd;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; my $myInd2;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; my $myCount;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $myString = $_[0];</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $myChunk = $_[1];</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; #convert text to lowercase</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $myString =~ tr/[A-Z]/[a-z]/;&nbsp; &nbsp; &nbsp;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; $myInd = 0;&nbsp; &nbsp;$myInd2 = 0; $myCount = 0;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; while ($myInd &gt;= 0) {&nbsp; &nbsp; &nbsp; &nbsp;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; # get index place of href=</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; $myInd = index($myString, $myChunk, $myInd2);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; if ($myInd&nbsp; &gt;= 0) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $myInd2 = $myInd + 1;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $myCount = $myCount + 1;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; return $myCount;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">}</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">sub body_attributes {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Check for Background Color</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($Config{&#8216;</span>bgcolor<span style="color: #ff0000;">&#8216;}) { print &quot; bgcolor=\&quot;$safeConfig{&#8216;</span>bgcolor<span style="color: #ff0000;">&#8216;}\&quot;&quot; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Check for Background Image</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($Config{&#8216;</span>background<span style="color: #ff0000;">&#8216;}) { print &quot; background=\&quot;$safeConfig{&#8216;</span>background<span style="color: #ff0000;">&#8216;}\&quot;&quot; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Check for Link Color</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($Config{&#8216;</span>link_color<span style="color: #ff0000;">&#8216;}) { print &quot; link=\&quot;$safeConfig{&#8216;</span>link_color<span style="color: #ff0000;">&#8216;}\&quot;&quot; }</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Check for Visited Link Color</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($Config{&#8216;</span>vlink_color<span style="color: #ff0000;">&#8216;}) { print &quot; vlink=\&quot;$safeConfig{&#8216;</span>vlink_color<span style="color: #ff0000;">&#8216;}\&quot;&quot; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Check for Active Link Color</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($Config{&#8216;</span>alink_color<span style="color: #ff0000;">&#8216;}) { print &quot; alink=\&quot;$safeConfig{&#8216;</span>alink_color<span style="color: #ff0000;">&#8216;}\&quot;&quot; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Check for Body Text Color</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($Config{&#8216;</span>text_color<span style="color: #ff0000;">&#8216;}) { print &quot; text=\&quot;$safeConfig{&#8216;</span>text_color<span style="color: #ff0000;">&#8216;}\&quot;&quot; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">}</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">sub error { </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; # Localize variables and assign subroutine input.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; local($error,@error_fields) = @_;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; local($host,$missing_field,$missing_field_list);</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; if ($error eq &#8216;</span>bad_referer<span style="color: #ff0000;">&#8216;) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; if ($ENV{&#8216;</span>HTTP_REFERER<span style="color: #ff0000;">&#8216;} =~ m|^https?://([\w\.]+)|i) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $host = $1;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my $referer = &amp;clean_html($ENV{&#8216;</span>HTTP_REFERER<span style="color: #ff0000;">&#8216;});</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print &lt;&lt;&quot;(END ERROR HTML)&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">Content-type: text/html</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;html&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;head&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &lt;title&gt;Bad Referrer &#8211; Access Denied&lt;/title&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;/head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;body bgcolor=#FFFFFF text=#000000&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &lt;center&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;table border=0 width=600 bgcolor=#9C9C9C&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &lt;tr&gt;&lt;th&gt;&lt;font size=+2&gt;Bad Referrer &#8211; Access Denied&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;/table&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;table border=0 width=600 bgcolor=#CFCFCF&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &lt;tr&gt;&lt;td&gt;The form attempting to use</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;&lt;a href=&quot;http://www.scriptarchive.com/formmail.html&quot;&gt;FormMail&lt;/a&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;resides at &lt;tt&gt;$referer&lt;/tt&gt;, which is not allowed to access</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;this cgi script.&lt;p&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;If you are attempting to configure FormMail to run with this form, you need</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;to add the following to \@referers, explained in detail in the </span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;&lt;a href=&quot;http://www.scriptarchive.com/readme/formmail.html&quot;&gt;README&lt;/a&gt; file.&lt;p&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;Add &lt;tt&gt;&#8217;</span><span style="color: #0000ff;">$host</span><span style="color: #ff0000;">&#8216;&lt;/tt&gt; to your &lt;tt&gt;&lt;b&gt;\@referers&lt;/b&gt;&lt;/tt&gt; array.&lt;hr size=1&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;&lt;center&gt;&lt;font size=-1&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &lt;a href=&quot;http://www.scriptarchive.com/formmail.html&quot;&gt;FormMail&lt;/a&gt; V1.92 &amp;copy; 1995 &#8211; 2002&nbsp; Matt Wright</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; A Free Product of &lt;a href=&quot;http://www.scriptarchive.com/&quot;&gt;Matt&#8217;</span><a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>&nbsp; Script Archive, Inc.&lt;/a&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;&lt;/font&gt;&lt;/center&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/td&gt;&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/table&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/center&gt;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;/body&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/html&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#40;</span>END ERROR HTML<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> &lt;&lt;<span style="color: #ff0000;">&quot;(END ERROR HTML)&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-type: text/html</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009999;">&lt;html&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color: #009999;">&lt;head&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009999;">&lt;title&gt;</span>FormMail v1<span style="color: #cc66cc;">.92</span>&lt;/title&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;/head&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;body bgcolor=<span style="color: #808080; font-style: italic;">#FFFFFF text=#000000&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009999;">&lt;center&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;table border=<span style="color: #cc66cc;">0</span> width=<span style="color: #cc66cc;">600</span> bgcolor=<span style="color: #808080; font-style: italic;">#9C9C9C&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009999;">&lt;tr&gt;</span><span style="color: #009999;">&lt;th&gt;</span>&lt;font size=<span style="color: #cc66cc;">+2</span>&gt;FormMail&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/table&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;table border=<span style="color: #cc66cc;">0</span> width=<span style="color: #cc66cc;">600</span> bgcolor=<span style="color: #808080; font-style: italic;">#CFCFCF&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009999;">&lt;tr&gt;</span><span style="color: #009999;">&lt;th&gt;</span><span style="color: #009999;">&lt;tt&gt;</span>&lt;font size=<span style="color: #cc66cc;">+1</span>&gt;Copyright <span style="color: #cc66cc;">1995</span> &#8211; <span style="color: #cc66cc;">2002</span> Matt Wright</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; Version <span style="color: #cc66cc;">1.92</span> &#8211; Released April <span style="color: #cc66cc;">21</span>, <span style="color: #cc66cc;">2002</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; A Free Product of &lt;a href=<span style="color: #ff0000;">&quot;http://www.scriptarchive.com/&quot;</span>&gt;Matt<span style="color: #ff0000;">&#8216;s&nbsp; Script Archive,</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; Inc.&lt;/a&gt;&lt;/font&gt;&lt;/tt&gt;&lt;/th&gt;&lt;/tr&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;/table&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &lt;/center&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;/body&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;/html&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">(END ERROR HTML)</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; elsif ($error eq &#8216;</span>request_method<span style="color: #ff0000;">&#8216;) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print &lt;&lt;&quot;(END ERROR HTML)&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">Content-type: text/html</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;html&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &lt;title&gt;Error: Request Method&lt;/title&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;/head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;body bgcolor=#FFFFFF text=#000000&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &lt;center&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;table border=0 width=600 bgcolor=#9C9C9C&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &lt;tr&gt;&lt;th&gt;&lt;font size=+2&gt;Error: Request Method&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;/table&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;table border=0 width=600 bgcolor=#CFCFCF&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &lt;tr&gt;&lt;td&gt;The Request Method of the Form you submitted did not match</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;either &lt;tt&gt;GET&lt;/tt&gt; or &lt;tt&gt;POST&lt;/tt&gt;.&nbsp; Please check the form and make sure the</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;&lt;tt&gt;method=&lt;/tt&gt; statement is in upper case and matches &lt;tt&gt;GET&lt;/tt&gt; or &lt;tt&gt;POST&lt;/tt&gt;.&lt;p&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;&lt;center&gt;&lt;font size=-1&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &lt;a href=&quot;http://www.scriptarchive.com/formmail.html&quot;&gt;FormMail&lt;/a&gt; V1.92 &amp;copy; 1995 &#8211; 2002&nbsp; Matt Wright</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; A Free Product of &lt;a href=&quot;http://www.scriptarchive.com/&quot;&gt;Matt&#8217;</span><a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>&nbsp; Script Archive, Inc.&lt;/a&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;&lt;/font&gt;&lt;/center&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/td&gt;&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/table&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/center&gt;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;/body&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/html&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#40;</span>END ERROR HTML<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">elsif</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$error</span> eq <span style="color: #ff0000;">&#8216;no_recipient&#8217;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> &lt;&lt;<span style="color: #ff0000;">&quot;(END ERROR HTML)&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-type: text/html</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009999;">&lt;html&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color: #009999;">&lt;head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009999;">&lt;title&gt;</span>Error: Bad/No Recipient&lt;/title&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;/head&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;body bgcolor=<span style="color: #808080; font-style: italic;">#FFFFFF text=#000000&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009999;">&lt;center&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;table border=<span style="color: #cc66cc;">0</span> width=<span style="color: #cc66cc;">600</span> bgcolor=<span style="color: #808080; font-style: italic;">#9C9C9C&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009999;">&lt;tr&gt;</span><span style="color: #009999;">&lt;th&gt;</span>&lt;font size=<span style="color: #cc66cc;">+2</span>&gt;Error: Bad/No Recipient&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/table&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;table border=<span style="color: #cc66cc;">0</span> width=<span style="color: #cc66cc;">600</span> bgcolor=<span style="color: #808080; font-style: italic;">#CFCFCF&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009999;">&lt;tr&gt;</span><span style="color: #009999;">&lt;td&gt;</span>There was <a href="http://www.perldoc.com/perl5.6/pod/func/no.html"><span style="color: #000066;">no</span></a> recipient <span style="color: #b1b100;">or</span> an invalid recipient specified in the data sent to FormMail.&nbsp; Please</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;make sure you have filled in the <span style="color: #009999;">&lt;tt&gt;</span>recipient&lt;/tt&gt; form field with an e-mail</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;address that has been configured in <span style="color: #009999;">&lt;tt&gt;</span>\<span style="color: #0000ff;">@recipients</span>&lt;/tt&gt;.&nbsp; More information on filling in <span style="color: #009999;">&lt;tt&gt;</span>recipient&lt;/tt&gt; form fields <span style="color: #b1b100;">and</span> variables can be</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;found in the &lt;a href=<span style="color: #ff0000;">&quot;http://www.scriptarchive.com/readme/formmail.html&quot;</span>&gt;README&lt;/a&gt; file.&lt;hr size=<span style="color: #cc66cc;">1</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #009999;">&lt;center&gt;</span>&lt;font size=<span style="color: #cc66cc;">-1</span>&gt;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &lt;a href=<span style="color: #ff0000;">&quot;http://www.scriptarchive.com/formmail.html&quot;</span>&gt;FormMail&lt;/a&gt; V1<span style="color: #cc66cc;">.92</span> &amp;copy; <span style="color: #cc66cc;">1995</span> &#8211; <span style="color: #cc66cc;">2002</span>&nbsp; Matt Wright</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; A Free Product of &lt;a href=<span style="color: #ff0000;">&quot;http://www.scriptarchive.com/&quot;</span>&gt;Matt<span style="color: #ff0000;">&#8216;s&nbsp; Script Archive, Inc.&lt;/a&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;&lt;/font&gt;&lt;/center&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &lt;/td&gt;&lt;/tr&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;/table&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &lt;/center&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;/body&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;/html&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">(END ERROR HTML)</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; }</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; elsif ($error eq &#8216;</span>invalid_headers<span style="color: #ff0000;">&#8216;) {</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print &lt;&lt;&quot;(END ERROR HTML)&quot;;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">Content-type: text/html</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&lt;html&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &lt;title&gt;Error: Bad Header Fields&lt;/title&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;/head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;"> &lt;body bgcolor=#FFFFFF text=#000000&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &lt;center&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;table border=0 width=600 bgcolor=#9C9C9C&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &lt;tr&gt;&lt;th&gt;&lt;font size=+2&gt;Error: Bad Header Fields&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;/table&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp;&lt;table border=0 width=600 bgcolor=#CFCFCF&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &lt;tr&gt;&lt;td&gt;The header fields, which include &lt;tt&gt;recipient&lt;/tt&gt;, &lt;tt&gt;email&lt;/tt&gt;, &lt;tt&gt;realname&lt;/tt&gt; and &lt;tt&gt;subject&lt;/tt&gt; were</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;filled in with invalid values. You may not include any newline characters in these parameters.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;More information on filling in these form fields and variables can be</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;found in the &lt;a href=&quot;http://www.scriptarchive.com/readme/formmail.html&quot;&gt;README&lt;/a&gt; file.&lt;hr size=1&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;&lt;center&gt;&lt;font size=-1&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &lt;a href=&quot;http://www.scriptarchive.com/formmail.html&quot;&gt;FormMail&lt;/a&gt; V1.92 &amp;copy; 1995 &#8211; 2002&nbsp; Matt Wright</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; A Free Product of &lt;a href=&quot;http://www.scriptarchive.com/&quot;&gt;Matt&#8217;</span><a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>&nbsp; Script Archive, Inc.&lt;/a&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;&lt;/font&gt;&lt;/center&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/td&gt;&lt;/tr&gt;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/table&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/center&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;/body&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/html&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#40;</span>END ERROR HTML<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">elsif</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$error</span> eq <span style="color: #ff0000;">&#8216;missing_fields&#8217;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;missing_fields_redirect&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">&quot;Location: &quot;</span> . &amp;clean_html<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Config</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&#8216;missing_fields_redirect&#8217;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> . <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #0000ff;">$missing_field</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">@error_fields</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">$missing_field_list</span> .= <span style="color: #ff0000;">&quot;&lt;li&gt;&quot;</span> . &amp;clean_html<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$missing_field</span><span style="color: #66cc66;">&#41;</span> . <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span style="color: #000066;">print</span></a> &lt;&lt;<span style="color: #ff0000;">&quot;(END ERROR HTML)&quot;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-type: text/html</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009999;">&lt;html&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color: #009999;">&lt;head&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009999;">&lt;title&gt;</span>Error: Blank Fields&lt;/title&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;/head&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009999;">&lt;center&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;table border=<span style="color: #cc66cc;">0</span> width=<span style="color: #cc66cc;">600</span> bgcolor=<span style="color: #808080; font-style: italic;">#9C9C9C&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009999;">&lt;tr&gt;</span><span style="color: #009999;">&lt;th&gt;</span>&lt;font size=<span style="color: #cc66cc;">+2</span>&gt;Error: Blank Fields&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/table&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;table border=<span style="color: #cc66cc;">0</span> width=<span style="color: #cc66cc;">600</span> bgcolor=<span style="color: #808080; font-style: italic;">#CFCFCF&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009999;">&lt;tr&gt;</span><span style="color: #009999;">&lt;td&gt;</span>The following fields were left blank in your submission form:<span style="color: #009999;">&lt;p&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #009999;">&lt;ul&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$missing_field_list</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;&lt;/ul&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;These fields must be filled in before you can successfully submit the form.<span style="color: #009999;">&lt;p&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;Please <span style="color: #000000; font-weight: bold;">use</span> your browser<span style="color: #ff0000;">&#8216;s back button to return to the form and try again.&lt;hr size=1&gt;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp;&lt;center&gt;&lt;font size=-1&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &lt;a href=&quot;http://www.scriptarchive.com/formmail.html&quot;&gt;FormMail&lt;/a&gt; V1.92 &amp;copy; 1995 &#8211; 2002&nbsp; Matt Wright</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; A Free Product of &lt;a href=&quot;http://www.scriptarchive.com/&quot;&gt;Matt&#8217;</span><a href="http://www.perldoc.com/perl5.6/pod/func/s.html"><span style="color: #000066;">s</span></a>&nbsp; Script Archive, Inc.&lt;/a&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;&lt;/font&gt;&lt;/center&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/td&gt;&lt;/tr&gt;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/table&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/center&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;&lt;/body&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/html&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#40;</span>END ERROR HTML<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.perldoc.com/perl5.6/pod/func/exit.html"><span style="color: #000066;">exit</span></a>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
<p>Technorati Tags: <a href="http://technorati.com/tag/Ron+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tag/Dean+Lee" rel="tag">Dean Lee</a>, <a href="http://technorati.com/tag/source+code" rel="tag">source code</a>, <a href="http://technorati.com/tag/syntax+highlighting" rel="tag">syntax highlighting</a>, <a href="http://technorati.com/tag/plugin" rel="tag">plugin</a>, <a href="http://technorati.com/tag/WordPress" rel="tag">WordPress</a>, <a href="http://technorati.com/tag/GeSHi" rel="tag">GeSHi</a>, <a href="http://technorati.com/tag/open-source" rel="tag">open-source</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>How to Display Source Code Within WordPress</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/#comments</comments>
		<pubDate>Fri, 25 May 2007 18:11:19 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/</guid>
		<description><![CDATA[Ron Fredericks writes: I have a problem in common with many software engineers and technical managers &#8211; &#8220;How can I display source code within my blog?&#8221; See, the problem starts when the source code to be displayed interacts with the blogging software itself and then corrupts the blog&#8217;s own loop-and-display engine. Thus, the blog page [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: I have a problem in common with many software engineers and technical managers &#8211; <strong>&#8220;How can I display source code within my blog?&#8221;</strong></p>
<p>See, the problem starts when the source code to be displayed interacts with the blogging software itself and then corrupts the blog&#8217;s own loop-and-display engine. Thus, the blog page becomes corrupt or at the very least, becomes mis-formatted and hard to read.  Of course it would also be nice to color code a software snippet similar to a source code editor to make the posted source code easier to read.</p>
<p>I tried several techniques during my Internet search for &#8220;WordPress source code formatting&#8221;.  I discovered a common theme &#8211; there are source code display and highlighting methods available &#8211; in fact too many are available.  So the search became a &#8220;needle in the haystack&#8221; time sink. And the sad fact, most choices have some severe limitations.</p>
<p>But at last, I found Dean Lee&#8217;s blog post: <a href="http://www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/" target="_blank">Source Code syntax highlighting plugin for WordPress (V1.1)</a></p>
<p>Dan&#8217;s pluglin for WordPress has all the features I was looking for:</p>
<ul>
<li>installs as a simple plugin for WordPress</li>
<li>usage within a blog post is easy through the use of the <code>pre</code> tag</li>
<li>source code displays in its own container with line numbers for reference</li>
<li>a reader should be able to easily select a range of displayed source code and copy it for their own use (without also selecting the displayed line numbers)</li>
<li>source code display should not break my WordPress blogging software</li>
</ul>
<p><span id="more-50"></span><br />
Dean&#8217;s plugin uses an open-source project hosted by sourceforge.net to handle the language-specific highlighting called: <a href="http://sourceforge.net/projects/geshi/">GeSHi &#8211; Generic Syntax Highlighter for PHP</a>.</p>
<p>GeSHi delivers the other requiements I was looking for in display of source code within WordPress:</p>
<ul>
<li>source code should display with language-aware color coding</li>
<li>code should be open-source with an active developer community</li>
<li>display controls should include support for lots of popular languages </li>
</ul>
<p>We do have to modify our WordPress CSS style sheet before using Dean&#8217;s plugin. Here is a display of the update he suggests we make to our template&#8230;</p>
<p><strong>Update to wp-content/themes/eciWidget/style.css</strong></p>
<div class="ch_code_container" style="font-family: monospace;height:300px;">
<div style="">Code (css)</div>
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">/* Add the following CSS styles for Dean&#8217;s code Highlighter */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #6666ff;">.ch_code_container</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">background-color</span>: <span style="color: #cc00cc;">#f0f0f0</span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">border</span>: <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#C3CED9</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">padding</span>: <span style="color: #933;">0px</span> <span style="color: #933;">0px</span> <span style="color: #933;">0</span> <span style="color: #933;">0</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">width</span>: <span style="color: #933;"><span style="color: #933;">100</span>%</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">text-align</span>: <span style="color: #000000; font-weight: bold;">left</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">font-size<span style="color: #3333ff;">:<span style="color: #933;">1</span></span><span style="color: #6666ff;"><span style="color: #933;">.00em</span></span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">overflow<span style="color: #3333ff;">:auto</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #6666ff;">.ch_code_container</span> <span style="color: #6666ff;">.head</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">color</span>: <span style="color: #cc00cc;">#<span style="color: #933;">808080</span></span>;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">font-weight</span>: <span style="color: #993333;">bold</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">background-color</span>: <span style="color: #cc00cc;">#f0f0ff</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">border-bottom</span>: <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#d0d0d0</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">padding</span>: <span style="color: #933;">2px</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
<p><a name="image"></a><br />
Here is an image of a popular perl sendmail package with my new antispam patch included&#8230;using Dean&#8217;s Highlighter Plugin and his default CSS styles loaded into my WordPress template&#8230;</p>
<p><img id="image51" height=300 alt="Dean's Highlighter Sample Output Using Default CSS Template " src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/05/myfirstgeshi_8.png" /></p>
<p>As you can see, the display window above highlights the perl language syntax and is safely contained.  But, yhuk!  What&#8217;s going on with the display? The main problems were easily solved with Dean&#8217;s plug-in &#8211; but let&#8217;s fix that word wrap mixed with horizontal scroll bar problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Working with drupal 5.1 is easy</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/04/working-with-drupal-51-is-easy/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/04/working-with-drupal-51-is-easy/#comments</comments>
		<pubDate>Sat, 21 Apr 2007 21:38:00 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/04/working-with-drupal-51-is-easy/</guid>
		<description><![CDATA[Ron Fredericks writes: This is just a note to point out to my readers that drupal is an easy content management system to use. Over time, ECI will be adding more of the drupal features to improve its community experience. Drupal includes multi-user blogging as well as forums and many other core and extended modules. [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image46" width=450 alt="RonFredericks.net Drupal 5.1 with Trackback support and Spam filter added" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/04/drupal_modules-trackback-sp.jpg" /></p>
<p>Ron Fredericks writes: This is just a note to point out to my readers that drupal is an easy content management system to use. Over time, ECI will be adding more of the drupal features to improve its community experience. Drupal includes multi-user blogging as well as forums and many other <a href="http://drupal.org/project/Modules">core and extended modules</a>.  You can see my new drupal personal site in action from <a href="http://www.ronfredericks.net/">here [updated for Drupal 6.4 on 9/10/08]</a>.<br />
<span id="more-45"></span></p>
<p><strong>Drupal 5.x is easy to install</strong>: I was able to easily update from drupal&#8217;s beta 5.0 version to the latest production 5.1 version. I was also able to add two new drupal 5.x modules called <a href="http://drupal.org/project/trackback">Trackback</a> and <a href="http://drupal.org/project/spam">Spam</a> to match some of the nicer features I am accustom to here with ECI&#8217;s WordPress Embedded Components and Tools Blog Center. I suspect that I will have to switch from drupal&#8217;s 5.x Spam module to the akismet anti-spam module as akismet really works great here on my WordPress blog. Let&#8217;s see how the Spam module works out!</p>
<p><strong>Drupal site upgrade</strong>: I used the <a href="http://drupal.org/download">5.1 production release </a>dated 2007-Jan-30. I followed the <a href="http://drupal.org/upgrade/tutorial-introduction">instructions</a> with no problem what so ever. It just worked!</p>
<p><strong>Drupal Spam module</strong>: I used the 5.x-1.x-dev development snapshot, dated 2007-Feb-20. The install.txt file accurately explained the few short instructions needed to add and configure this module to my web site.</p>
<p><strong>Drupal akismet spam module</strong>: Currently there is a 5.x-1.2 official <a href="http://drupal.org/project/akismet">release</a>, dated 2006-Dec-31. Having had great experience so far with the akismet WordPress module here on my Embedded Components and Tools Blog,  I have opted to try the drupal spam module first.</p>
<p><strong>Drupal Trackback module</strong>: I used the 5.x.1.1 official release, dated 2007-Mar-09. The install.txt file had one documentation error that I was able to work around. The work around was to simply ignore this step (there is to trackback.mysql file included in the tar ball):<br />
<font COLOR="#999999"><br />
(3) There is a file called trackback.mysql.  You need to<br />
    feed this to your mysql:</p>
<p>      ON THE COMMAND-LINE<br />
      mysql -u user -p password < trackback.mysql<br />
</FONT></p>
<p>Let me know if there are specific drupal modules you would like to see on ECI&#8217;s web site&#8230;<br />
</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/04/working-with-drupal-51-is-easy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Synergy with bloggers</title>
		<link>http://www.embeddedcomponents.com/blogs/2006/12/synergy-with-bloggers/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2006/12/synergy-with-bloggers/#comments</comments>
		<pubDate>Mon, 18 Dec 2006 21:06:19 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Marketing]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2006/12/synergy-with-bloggers/</guid>
		<description><![CDATA[Ron Fredericks writes: In a previous post I talked about using a blog site as an influential place to communicate. Why is it influential? Primarily because an individual can self-publish their thoughts while linking to other posts and sites that are relevant. To take this concept one step further, the question comes up &#8220;How shall [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image38" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2006/12/news_curve.gif" alt="Long Tail of the News Curve" /></p>
<p>Ron Fredericks writes: In a previous post I talked about using a blog site as an <a href="http://www.embeddedcomponents.com/blogs/2006/10/hello/">influential place to communicate</a>.  Why is it influential? Primarily because an individual can self-publish their thoughts while linking to other posts and sites that are relevant.  To take this concept one step further, the question comes up &#8220;How shall I motivate other bloggers to promote my story/initiative/whatever?&#8221; Clearly, if you can just get a whole bunch of influential bloggers to write about your story in a positive way, well then your message would be read and perhaps even accepted by many more people. </p>
<p>The problem is that individual bloggers don&#8217;t like to be told what to do with their blogging activity and time.  I read an interesting post this morning on Stephen Walli&#8216;s &#8220;Once More unto the Breach&#8221; blog titled <a href="http://stephesblog.blogs.com/my_weblog/2006/12/blogging_and_tr.html">Blogging and Traditional Marketing</a> that describes the situation exactly.</p>
<p>There may not be a single way to <em>use</em> bloggers to generate influence and create improved marketing exposure. However, Steve Rubel&#8216;s Micro Persuasion blog post titled <a href="http://www.micropersuasion.com/2004/11/how_to_pitch_in.html">How to Pitch Into the Long Tail News Curve</a> describes how to <em>work</em> with bloggers more effectively:</p>
<ul>
<li>Identify Leading Blog Influencers</li>
<li>Plant the Seed with the Bloggers</li>
<li>Hit the Mainstream Press</li>
<li>Regenerate the Story with Other Bloggers</li>
</ul>
<p>But the answer was clearly explained by Stephen, take the time to build a relationship with a blogger before you ask them to help you create influence or build marketshare.</p>
<p>Reference:<br />
<a href="http://www.morganstanley.com/institutional/techresearch/pdfs/dw_syndication1004.pdf">Morgan Stanley: An Update from the Digital World: from Morse Code to blogs, 2004</a></p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Ron+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tag/motivate" rel="tag">motivate</a>, <a href="http://technorati.com/tag/promote" rel="tag">promote</a>, <a href="http://technorati.com/tag/Stephen+Walli" rel="tag">Stephen Walli</a>, <a href="http://technorati.com/tag/Once+More+unto+the+Breach" rel="tag">Once More unto the Breach</a>, <a href="http://technorati.com/tag/Marketing" rel="tag">Marketing</a>, <a href="http://technorati.com/tag/Steve+Rubel" rel="tag">Steve Rubel</a>, <a href="http://technorati.com/tag/Micro+Persuasion" rel="tag">Micro Persuasion</a>, <a href="http://technorati.com/tag/Long+Tail" rel="tag">Long Tail</a>, <a href="http://technorati.com/tag/Influence" rel="tag">Influence</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2006/12/synergy-with-bloggers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
