<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>updates to &lt;code&gt; tag</title>
		<link>http://www.allegro.cc/forums/view/599658</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 26 Mar 2009 03:43:51 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The code tag now looks like:</p><p>&lt;code name=&quot;filename&quot; start=&quot;1&quot;&gt;<br />&lt;/code&gt;</p><p>where both parameters are optional. The <tt>name</tt> attribute is meant to be the name or title of the source code. The <tt>start</tt> attribute is the first line number. If omitted, it is assumed to be 1.</p><p>Short code snippets with no name and starting line number will be inline without any chrome.</p><p>Lines can be highlighted by appending *** to them.</p><p>To turn off line numbers (copy / paste) click the # button. Click the &#39;E&#39; to get rid of the scrollbars.</p><div class="source-code"><div class="toolbar"><span class="name">allegro.c</span><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;stdlib.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;string.h&gt;</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="p">#include "allegro5/allegro5.h"</span>
<span class="number">   6</span><span class="p">#include "allegro5/internal/aintern.h"</span>
<span class="number">   7</span><span class="p">#include "allegro5/internal/aintern_dtor.h"</span>
<span class="number">   8</span><span class="p">#include "allegro5/internal/aintern_memory.h"</span>
<span class="number">   9</span>
<span class="number">  10</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="p">#define PREFIX_I                "al-main INFO: "</span>
<span class="number">  13</span><span class="p">#define PREFIX_W                "al-main WARNING: "</span>
<span class="number">  14</span><span class="p">#define PREFIX_E                "al-main ERROR: "</span>
<span class="number">  15</span>
<span class="number">  16</span>
<span class="number">  17</span><span class="c">/* debugging stuff */</span>
<div class="highlight"><span class="number">  18</span><span class="k1">static</span> <span class="k1">int</span> debug_assert_virgin <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span> </div><span class="number">  19</span><span class="k1">static</span> <span class="k1">int</span> debug_trace_virgin <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  20</span>
<span class="number">  21</span><span class="k1">static</span> FILE <span class="k3">*</span>assert_file <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  22</span><span class="k1">static</span> FILE <span class="k3">*</span>trace_file <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span><span class="k1">static</span> <span class="k1">int</span> <span class="k2">(</span><span class="k3">*</span>assert_handler<span class="k2">)</span><span class="k2">(</span>AL_CONST <span class="k1">char</span> <span class="k3">*</span>msg<span class="k2">)</span> <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  25</span><span class="k1">int</span> <span class="k2">(</span><span class="k3">*</span>_al_trace_handler<span class="k2">)</span><span class="k2">(</span>AL_CONST <span class="k1">char</span> <span class="k3">*</span>msg<span class="k2">)</span> <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  26</span>
<span class="number">  27</span>
<span class="number">  28</span><span class="c">/* dynamic registration system for cleanup code */</span>
<span class="number">  29</span><span class="k1">struct</span> al_exit_func <span class="k2">{</span>
<span class="number">  30</span>   <span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span>funcptr<span class="k2">)</span><span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>   AL_CONST <span class="k1">char</span> <span class="k3">*</span>desc<span class="k2">;</span>
<span class="number">  32</span>   <span class="k1">struct</span> al_exit_func <span class="k3">*</span>next<span class="k2">;</span>
<span class="number">  33</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  34</span>
<span class="number">  35</span><span class="k1">static</span> <span class="k1">struct</span> al_exit_func <span class="k3">*</span>exit_func_list <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  36</span>
<span class="number">  37</span>
<span class="number">  38</span>
<span class="number">  39</span><span class="c">/* _al_add_exit_func: </span>
<span class="number">  40</span><span class="c"> *  Adds a function to the list that need to be called on Allegro shutdown.</span>
<span class="number">  41</span><span class="c"> *  `desc' should point to a statically allocated string to help with</span>
<span class="number">  42</span><span class="c"> *  debugging.</span>
<span class="number">  43</span><span class="c"> */</span>
<span class="number">  44</span><span class="k1">void</span> _al_add_exit_func<span class="k2">(</span><span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span>func<span class="k2">)</span><span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>, AL_CONST <span class="k1">char</span> <span class="k3">*</span>desc<span class="k2">)</span>
<span class="number">  45</span><span class="k2">{</span>
<span class="number">  46</span>   <span class="k1">struct</span> al_exit_func <span class="k3">*</span>n<span class="k2">;</span>
<span class="number">  47</span>
<span class="number">  48</span>   <span class="k1">for</span> <span class="k2">(</span>n <span class="k3">=</span> exit_func_list<span class="k2">;</span> n<span class="k2">;</span> n <span class="k3">=</span> n-&gt;next<span class="k2">)</span>
<span class="number">  49</span>      <span class="k1">if</span> <span class="k2">(</span>n-&gt;funcptr <span class="k3">=</span><span class="k3">=</span> func<span class="k2">)</span>
<span class="number">  50</span>   <span class="k1">return</span><span class="k2">;</span>
<span class="number">  51</span>
<span class="number">  52</span>   n <span class="k3">=</span> _AL_MALLOC<span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> al_exit_func<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>n<span class="k2">)</span>
<span class="number">  54</span>      <span class="k1">return</span><span class="k2">;</span>
<span class="number">  55</span>
<span class="number">  56</span>   n-&gt;next <span class="k3">=</span> exit_func_list<span class="k2">;</span>
<span class="number">  57</span>   n-&gt;funcptr <span class="k3">=</span> func<span class="k2">;</span>
<span class="number">  58</span>   n-&gt;desc <span class="k3">=</span> desc<span class="k2">;</span>
<span class="number">  59</span>   exit_func_list <span class="k3">=</span> n<span class="k2">;</span>
<span class="number">  60</span><span class="k2">}</span>
<span class="number">  61</span>
<span class="number">  62</span>
<span class="number">  63</span>
<span class="number">  64</span><span class="c">/* _al_remove_exit_func:</span>
<span class="number">  65</span><span class="c"> *  Removes a function from the list that need to be called on Allegro</span>
<span class="number">  66</span><span class="c"> *  shutdown.</span>
<span class="number">  67</span><span class="c"> */</span>
<span class="number">  68</span><span class="k1">void</span> _al_remove_exit_func<span class="k2">(</span><span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span>func<span class="k2">)</span><span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  69</span><span class="k2">{</span>
<span class="number">  70</span>   <span class="k1">struct</span> al_exit_func <span class="k3">*</span>iter <span class="k3">=</span> exit_func_list, <span class="k3">*</span>prev <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  71</span>
<span class="number">  72</span>   <span class="k1">while</span> <span class="k2">(</span>iter<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  73</span>      <span class="k1">if</span> <span class="k2">(</span>iter-&gt;funcptr <span class="k3">=</span><span class="k3">=</span> func<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  74</span>   <span class="k1">if</span> <span class="k2">(</span>prev<span class="k2">)</span>
<span class="number">  75</span>      prev-&gt;next <span class="k3">=</span> iter-&gt;next<span class="k2">;</span>
<span class="number">  76</span>   <span class="k1">else</span>
<span class="number">  77</span>      exit_func_list <span class="k3">=</span> iter-&gt;next<span class="k2">;</span>
<span class="number">  78</span>   _AL_FREE<span class="k2">(</span>iter<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>   <span class="k1">return</span><span class="k2">;</span>
<span class="number">  80</span>      <span class="k2">}</span>
<span class="number">  81</span>      prev <span class="k3">=</span> iter<span class="k2">;</span>
<span class="number">  82</span>      iter <span class="k3">=</span> iter-&gt;next<span class="k2">;</span>
<span class="number">  83</span>   <span class="k2">}</span>
<span class="number">  84</span><span class="k2">}</span>
<span class="number">  85</span>
<span class="number">  86</span>
<span class="number">  87</span>
<span class="number">  88</span><span class="c">/* _al_run_exit_funcs:</span>
<span class="number">  89</span><span class="c"> *  Run all the functions registered with _al_add_exit_func, in reverse order of</span>
<span class="number">  90</span><span class="c"> *  registration.</span>
<span class="number">  91</span><span class="c"> */</span>
<span class="number">  92</span><span class="k1">void</span> _al_run_exit_funcs<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  93</span><span class="k2">{</span>
<span class="number">  94</span>   <span class="k1">while</span> <span class="k2">(</span>exit_func_list<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  95</span>      <span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span>func<span class="k2">)</span><span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k3">=</span> exit_func_list-&gt;funcptr<span class="k2">;</span>
<span class="number">  96</span>      _al_remove_exit_func<span class="k2">(</span>func<span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>      <span class="k2">(</span><span class="k3">*</span>func<span class="k2">)</span><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>   <span class="k2">}</span>
<span class="number">  99</span><span class="k2">}</span>
<span class="number"> 100</span>
<span class="number"> 101</span>
<span class="number"> 102</span>
<span class="number"> 103</span><span class="c">/* debug_exit:</span>
<span class="number"> 104</span><span class="c"> *  Closes the debugging output files.</span>
<span class="number"> 105</span><span class="c"> */</span>
<span class="number"> 106</span><span class="k1">static</span> <span class="k1">void</span> debug_exit<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 107</span><span class="k2">{</span>
<span class="number"> 108</span>   <span class="k1">if</span> <span class="k2">(</span>assert_file<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 109</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_308.html" target="_blank">fclose</a><span class="k2">(</span>assert_file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>      assert_file <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 111</span>   <span class="k2">}</span>
<span class="number"> 112</span>
<span class="number"> 113</span>   <span class="k1">if</span> <span class="k2">(</span>trace_file<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 114</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_308.html" target="_blank">fclose</a><span class="k2">(</span>trace_file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>      trace_file <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 116</span>   <span class="k2">}</span>
<span class="number"> 117</span>
<span class="number"> 118</span>   debug_assert_virgin <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 119</span>   debug_trace_virgin <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 120</span><span class="k2">}</span>
<span class="number"> 121</span>
<span class="number"> 122</span>
<span class="number"> 123</span>
<span class="number"> 124</span><span class="c">/* al_assert:</span>
<span class="number"> 125</span><span class="c"> *  Raises an assert (uses ASCII strings).</span>
<span class="number"> 126</span><span class="c"> */</span>
<span class="number"> 127</span><span class="k1">void</span> <a href="http://www.allegro.cc/manual/al_assert" target="_blank"><span class="a">al_assert</span></a><span class="k2">(</span>AL_CONST <span class="k1">char</span> <span class="k3">*</span>file, <span class="k1">int</span> <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">)</span>
<span class="number"> 128</span><span class="k2">{</span>
<span class="number"> 129</span>   <span class="k1">static</span> <span class="k1">int</span> asserted <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 130</span>   <span class="k1">int</span> olderr <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_293.html" target="_blank">errno</a><span class="k2">;</span>
<span class="number"> 131</span>   <span class="k1">char</span> buf<span class="k2">[</span><span class="n">128</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 132</span>   <span class="k1">char</span> <span class="k3">*</span>s<span class="k2">;</span>
<span class="number"> 133</span>
<span class="number"> 134</span>   <span class="k1">if</span> <span class="k2">(</span>asserted<span class="k2">)</span>
<span class="number"> 135</span>      <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 136</span>
<span class="number"> 137</span>   <span class="c">/* todo, some day: use snprintf (C99) */</span>
<span class="number"> 138</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>buf, <span class="s">"Assert failed at line %d of %s"</span>, <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a>, file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</span>
<span class="number"> 140</span>   <span class="k1">if</span> <span class="k2">(</span>assert_handler<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 141</span>      <span class="k1">if</span> <span class="k2">(</span>assert_handler<span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 142</span>   <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 143</span>   <span class="k2">}</span>
<span class="number"> 144</span>
<span class="number"> 145</span>   <span class="k1">if</span> <span class="k2">(</span>debug_assert_virgin<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 146</span>      s <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_392.html" target="_blank">getenv</a><span class="k2">(</span><span class="s">"ALLEGRO_ASSERT"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 147</span>
<span class="number"> 148</span>      <span class="k1">if</span> <span class="k2">(</span>s<span class="k2">)</span>
<span class="number"> 149</span>   assert_file <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span>s, <span class="s">"w"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 150</span>      <span class="k1">else</span>
<span class="number"> 151</span>   assert_file <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 152</span>
<span class="number"> 153</span>      <span class="k1">if</span> <span class="k2">(</span>debug_trace_virgin<span class="k2">)</span>
<span class="number"> 154</span>   _al_add_exit_func<span class="k2">(</span>debug_exit, <span class="s">"debug_exit"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 155</span>
<span class="number"> 156</span>      debug_assert_virgin <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 157</span>   <span class="k2">}</span>
<span class="number"> 158</span>
<span class="number"> 159</span>   <span class="k1">if</span> <span class="k2">(</span>assert_file<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 160</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>assert_file, <span class="s">"%s\n"</span>, buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_315.html" target="_blank">fflush</a><span class="k2">(</span>assert_file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>   <span class="k2">}</span>
<span class="number"> 163</span>   <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 164</span>      asserted <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 165</span>
<span class="number"> 166</span><span class="c">/*</span>
<span class="number"> 167</span><span class="c">      if ((system_driver) &amp;&amp; (system_driver-&gt;assert)) {</span>
<span class="number"> 168</span><span class="c">   system_driver-&gt;assert(buf);</span>
<span class="number"> 169</span><span class="c">      }</span>
<span class="number"> 170</span><span class="c">      else {</span>
<span class="number"> 171</span><span class="c">      */</span>
<span class="number"> 172</span><span class="c">//   al_uninstall_system();</span>
<span class="number"> 173</span><span class="p">#ifndef ALLEGRO_MSVC</span>
<span class="number"> 174</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"%s\n"</span>, buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 175</span><span class="p">#endif</span>
<span class="number"> 176</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_37.html" target="_blank">abort</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 177</span>     <span class="c">// }</span>
<span class="number"> 178</span>   <span class="k2">}</span>
<span class="number"> 179</span>
<span class="number"> 180</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_293.html" target="_blank">errno</a> <span class="k3">=</span> olderr<span class="k2">;</span>
<span class="number"> 181</span><span class="k2">}</span>
<span class="number"> 182</span>
<span class="number"> 183</span>
<span class="number"> 184</span>
<span class="number"> 185</span><span class="c">/* al_trace:</span>
<span class="number"> 186</span><span class="c"> *  Outputs a trace message (uses ASCII strings).</span>
<span class="number"> 187</span><span class="c"> */</span>
<span class="number"> 188</span><span class="k1">void</span> <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</span></a><span class="k2">(</span>AL_CONST <span class="k1">char</span> <span class="k3">*</span>msg, ...<span class="k2">)</span>
<span class="number"> 189</span><span class="k2">{</span>
<span class="number"> 190</span>   <span class="k1">int</span> olderr <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_293.html" target="_blank">errno</a><span class="k2">;</span>
<span class="number"> 191</span>   <span class="k1">char</span> buf<span class="k2">[</span><span class="n">512</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 192</span>   <span class="k1">char</span> <span class="k3">*</span>s<span class="k2">;</span>
<span class="number"> 193</span>
<span class="number"> 194</span>   <span class="c">/* todo, some day: use vsnprintf (C99) */</span>
<span class="number"> 195</span>   va_list ap<span class="k2">;</span>
<span class="number"> 196</span>   va_start<span class="k2">(</span>ap, msg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 197</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_856.html" target="_blank">vsprintf</a><span class="k2">(</span>buf, msg, ap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 198</span>   va_end<span class="k2">(</span>ap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 199</span>
<span class="number"> 200</span>   <span class="k1">if</span> <span class="k2">(</span>_al_trace_handler<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 201</span>      <span class="k1">if</span> <span class="k2">(</span>_al_trace_handler<span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 202</span>   <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 203</span>   <span class="k2">}</span>
<span class="number"> 204</span>
<span class="number"> 205</span>   <span class="k1">if</span> <span class="k2">(</span>debug_trace_virgin<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 206</span>      s <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_392.html" target="_blank">getenv</a><span class="k2">(</span><span class="s">"ALLEGRO_TRACE"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 207</span>
<span class="number"> 208</span>      <span class="k1">if</span> <span class="k2">(</span>s<span class="k2">)</span>
<span class="number"> 209</span>   trace_file <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span>s, <span class="s">"w"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 210</span>      <span class="k1">else</span>
<span class="number"> 211</span>   trace_file <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span><span class="s">"allegro.log"</span>, <span class="s">"w"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>
<span class="number"> 213</span>      <span class="k1">if</span> <span class="k2">(</span>debug_assert_virgin<span class="k2">)</span>
<span class="number"> 214</span>   _al_add_exit_func<span class="k2">(</span>debug_exit, <span class="s">"debug_exit"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 215</span>
<span class="number"> 216</span>      debug_trace_virgin <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 217</span>   <span class="k2">}</span>
<span class="number"> 218</span>
<span class="number"> 219</span>   <span class="k1">if</span> <span class="k2">(</span>trace_file<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 220</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_371.html" target="_blank">fwrite</a><span class="k2">(</span>buf, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_764.html" target="_blank">strlen</a><span class="k2">(</span>buf<span class="k2">)</span>, trace_file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 221</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_315.html" target="_blank">fflush</a><span class="k2">(</span>trace_file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 222</span>   <span class="k2">}</span>
<span class="number"> 223</span>
<span class="number"> 224</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_293.html" target="_blank">errno</a> <span class="k3">=</span> olderr<span class="k2">;</span>
<span class="number"> 225</span><span class="k2">}</span>
<span class="number"> 226</span>
<span class="number"> 227</span>
<span class="number"> 228</span>
<span class="number"> 229</span><span class="c">/* register_assert_handler:</span>
<span class="number"> 230</span><span class="c"> *  Installs a user handler for assert failures.</span>
<span class="number"> 231</span><span class="c"> */</span>
<span class="number"> 232</span><span class="k1">void</span> <a href="http://www.allegro.cc/manual/register_assert_handler" target="_blank"><span class="a">register_assert_handler</span></a><span class="k2">(</span><span class="k1">int</span> <span class="k2">(</span><span class="k3">*</span>handler<span class="k2">)</span><span class="k2">(</span>AL_CONST <span class="k1">char</span> <span class="k3">*</span>msg<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 233</span><span class="k2">{</span>
<span class="number"> 234</span>   assert_handler <span class="k3">=</span> handler<span class="k2">;</span>
<span class="number"> 235</span><span class="k2">}</span>
<span class="number"> 236</span>
<span class="number"> 237</span>
<span class="number"> 238</span>
<span class="number"> 239</span><span class="c">/* register_trace_handler:</span>
<span class="number"> 240</span><span class="c"> *  Installs a user handler for trace output.</span>
<span class="number"> 241</span><span class="c"> */</span>
<span class="number"> 242</span><span class="k1">void</span> <a href="http://www.allegro.cc/manual/register_trace_handler" target="_blank"><span class="a">register_trace_handler</span></a><span class="k2">(</span><span class="k1">int</span> <span class="k2">(</span><span class="k3">*</span>handler<span class="k2">)</span><span class="k2">(</span>AL_CONST <span class="k1">char</span> <span class="k3">*</span>msg<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 243</span><span class="k2">{</span>
<span class="number"> 244</span>   _al_trace_handler <span class="k3">=</span> handler<span class="k2">;</span>
<span class="number"> 245</span><span class="k2">}</span>
</div></div><p>

When making this post, I realized that there is a slight problem with multiline coloring (e.g., comments) that disables highlight ability and the original colors. That will be fixed later.</p><p>Refresh JS/CSS files.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sat, 21 Mar 2009 02:57:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Cool!  I was gonna say it was ugly but then I refreshed the js/css.  Very pretty.</p><div class="source-code"><div class="toolbar"><span class="name">cool.c</span><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 125</span>    <span class="k1">int</span> c <span class="k3">=</span> <span class="n">46</span><span class="k2">;</span>
<span class="number"> 126</span>
<div class="highlight"><span class="number"> 127</span>    c <span class="k3">=</span> <span class="n">43</span> </div><span class="number"> 128</span>
<span class="number"> 129</span>    <span class="k1">if</span><span class="k2">(</span>c <span class="k3">=</span><span class="k3">=</span> <span class="n">43</span><span class="k2">)</span>
</div></div><p>
The error is on line 127.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Sat, 21 Mar 2009 03:00:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It takes a long time (two seconds roughly) to turn the line numbers off in IE7. Turning them back on is significantly faster.</p><p>A nice set of additions.</p><p>EDIT: Dustin&#39;s post removes the line #s fast.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (someone972)</author>
		<pubDate>Sat, 21 Mar 2009 03:02:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hiding and showing line numbers fast enough on Matthew&#39;s example breaks the scroll bar (Firefox 3.0.7).<br />Other than that, this is pretty sweet!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Schyfis)</author>
		<pubDate>Sat, 21 Mar 2009 03:50:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Cool stuff. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" /></p><p>When I disable line numbers, the font size changes from 10 to 8.  Using Firefox 3.1b3 on Windows.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (torhu)</author>
		<pubDate>Sat, 21 Mar 2009 04:05:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Very nice! I really like all the new work you&#39;ve put into the site lately Matthew!<br />This is <i>by far</i> the best forum system I&#39;ve used!</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599658/801247#target">Schyfis</a> said:</div><div class="quote"><p>
Hiding and showing line numbers fast enough on Matthew&#39;s example breaks the scroll bar
</p></div></div><p>
Same here
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Sat, 21 Mar 2009 04:22:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Now add support for multiple languages. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 21 Mar 2009 04:48:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Very nice! Now it looks like a programming forum! Could you add some way of selecting all code instead of having to scroll around? That is the only thing I would want.</p><p>The only problem I find is that when scrolling with the well the page upwards or downwards, the top of the code box somehow jumps above the navigation bar of the site, so you get some strange effect.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sat, 21 Mar 2009 04:50:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s what it looks like in konqueror (4.3 svn), I&#39;m sure you can see a couple flaws.</p><p><span class="remote-thumbnail"><span class="json">{"name":"accnewcodeboxkonqi.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/d\/2d9e97fe0d1c247dffc4b31cadee19bd.png","w":814,"h":425,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/d\/2d9e97fe0d1c247dffc4b31cadee19bd"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/2/d/2d9e97fe0d1c247dffc4b31cadee19bd-240.jpg" alt="accnewcodeboxkonqi.png" width="240" height="125" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 21 Mar 2009 05:06:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Use a better browser. <img src="http://www.allegro.cc/forums/smileys/wink.gif" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 21 Mar 2009 05:43:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>edit:nm</p><p>edit2:<br />it was happening briefly with WebKit too, but now its not happening in either WebKit or KHTML.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 21 Mar 2009 05:44:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I find it really odd that everything there&#39;s an update, my cache seems to have been cleared out enough that I don&#39;t need to hit Ctrl+F5...</p><div class="source-code"><div class="toolbar"><span class="name">test.c</span><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span><span class="k1">int</span> c<span class="k2">;</span>
<span class="number"> 2</span><span class="k1">int</span> y<span class="k2">;</span>
<span class="number"> 3</span>
<span class="number"> 4</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> n, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>args<span class="k2">)</span> <span class="k2">{</span>
<div class="highlight"><span class="number"> 5</span>  <span class="k1">int</span> c<span class="k2">;</span></div><span class="number"> 6</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 7</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MiquelFire)</author>
		<pubDate>Sat, 21 Mar 2009 07:01:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"><span class="name">main.cpp</span><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<div class="highlight"><span class="number">  5</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Allegro.cc FTW!\n"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span> </div><span class="number">  6</span>
<span class="number">  7</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  8</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Sat, 21 Mar 2009 07:08:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The collapse/expand feature could stand to be a little more obvious. I don&#39;t think newbies would catch on without prompting.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Sat, 21 Mar 2009 07:31:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599658/801242#target">someone972</a> said:</div><div class="quote"><p>It takes a long time (two seconds roughly) to turn the line numbers off in IE7. Turning them back on is significantly faster.</p></div></div><p>
IE is a horrible web browser. If you have any choice, you shouldn&#39;t use it. Let&#39;s take a look at the benchmark of the said operation:</p><ol><li><p>Safari 4:     14 ms
</p></li><li><p>Opera 9.64:   50 ms
</p></li><li><p>FireFox 3:    61 ms
</p></li><li><p>IE 8:        817 ms</p></li></ol><p>This is just a typical string build during a DOM traversal.</p><p>Safari is so fast you don&#39;t even realize anything has happened. Opera and Firefox are both nearly as fast—neither of them feel lagged. Then IE 8, Microsoft&#39;s latest and greatest browser, steps up to the plate and takes nearly a second. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" /></p><p>But keep using IE.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sat, 21 Mar 2009 08:37:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm... I would like the top (filename, numbering on/off) to be at the bottom too if you expand the code and scrolled to the bottom. Also, although I am not sure if it is possible at all, can I generate a URL to point to the line 104 of the code you posted at the top?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sat, 21 Mar 2009 09:07:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Fixed some bugs.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sat, 21 Mar 2009 10:57:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No way to do inline code snippets yet?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sat, 21 Mar 2009 13:29:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for fixing the font size, but any chance of courier new 10 instead of 8?  Maybe I&#39;m just old, but reading text that small is not a joy.  <img src="http://www.allegro.cc/forums/smileys/undecided.gif" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (torhu)</author>
		<pubDate>Sat, 21 Mar 2009 20:06:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can use custom CSS to change things like that.
</p><div class="source-code snippet"><div class="inner"><pre>div.source-code div.inner td,
div.source-code div.inner pre <span class="k2">{</span>
  font-size: <span class="n">10</span>pt <span class="k3">!</span>important<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sat, 21 Mar 2009 20:19:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Cool, thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (torhu)</author>
		<pubDate>Sat, 21 Mar 2009 20:33:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Neat, now it looks precious.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sat, 21 Mar 2009 21:48:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599658/801338#target">ReyBrujo</a> said:</div><div class="quote"><p>precious</p></div></div><p>
<i>Looks at your avatar</i><br />My precioussss....
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Darizel)</author>
		<pubDate>Sat, 21 Mar 2009 22:20:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599658/801311#target">X-G</a> said:</div><div class="quote"><p>No way to do inline code snippets yet?</p></div></div><p>
Just &lt;code&gt; with no new lines. e.g., <span class="source-code"><span class="k1">while</span> <span class="k2">(</span><span class="k1">false</span><span class="k2">)</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sun, 22 Mar 2009 10:50:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>test: <span class="source-code"><span class="k1">int</span> test<span class="k2">(</span><span class="k1">char</span> bar<span class="k2">)</span><span class="k2">;</span><span class="k3">*</span><span class="k3">*</span><span class="k3">*</span></span></p><p>seems not to work <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /></p><div class="source-code snippet"><div class="inner"><pre><div class="highlight"><span class="k1">int</span> test<span class="k2">(</span><span class="k1">char</span> bar<span class="k2">)</span><span class="k2">;</span></div>
</pre></div></div><p>

works...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sun, 22 Mar 2009 13:03:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599658/801411#target">Matthew Leverton</a> said:</div><div class="quote"><p>Just &lt;code&gt; with no new lines. e.g., while (false) create_bitmap(640, 480)</p></div></div><p>

Hmm. I could&#39;ve sworn it didn&#39;t work when I tried it the first time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sun, 22 Mar 2009 13:51:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm... I don&#39;t see the point in having inline code highlighted...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 22 Mar 2009 20:12:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599658/801431#target">ReyBrujo</a> said:</div><div class="quote"><p>Hmm... I don&#39;t see the point in having inline code highlighted... </p></div></div><p>To autolink to a function: <span class="source-code"><a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span><span class="k2">)</span></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sun, 22 Mar 2009 20:32:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I mean, Thomas wanted to highlight a single inline line.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 22 Mar 2009 20:35:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah, that would be a great way to annoy the crap out of people <img src="http://www.allegro.cc/forums/smileys/smiley.gif" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sun, 22 Mar 2009 20:36:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well the ***s are just highlighted as operators.. Maybe they should be removed if they are there?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 23 Mar 2009 02:18:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599658/801431#target">ReyBrujo</a> said:</div><div class="quote"><p>Hmm... I don&#39;t see the point in having inline code highlighted...</p></div></div><p>
For the same reason we highlight other code... To make it easier to read and/or catch mistakes. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Mon, 23 Mar 2009 02:30:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Highlighting inline code is obnoxious and not supported. Removing the highlight characters would give the false impression that it is.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Mon, 23 Mar 2009 03:43:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I just noticed that in the thread review when replying to a post the code boxes have large spaces in between lines.</p><p>Other than that I&#39;m quite pleased with the update <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (someone972)</author>
		<pubDate>Thu, 26 Mar 2009 03:43:51 +0000</pubDate>
	</item>
</rss>
