<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>A5.1.8 &#39;s al_get_standard_path has some problem</title>
		<link>http://www.allegro.cc/forums/view/614077</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 27 Mar 2014 13:51:43 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In windows al_get_standard_path() return ANICODE string,not utf-8. This may cause confusion in actual use. <br />this is my patch:<br />in file &lt;wsystem.c&gt; replace _al_win_get_path()
</p><div class="source-code"><div class="toolbar"><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>ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>   <span class="k1">char</span> path<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number">  4</span>   <span class="k1">uint32_t</span> csidl <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  5</span>   HRESULT ret <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  6</span>   ALLEGRO_PATH <span class="k3">*</span>cisdl_path <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>   <span class="k1">switch</span> <span class="k2">(</span>id<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  9</span>      <span class="k1">case</span> ALLEGRO_TEMP_PATH: <span class="k2">{</span>
<span class="number"> 10</span>         <span class="c">/* Check: TMP, TMPDIR, TEMP or TEMPDIR */</span>
<span class="number"> 11</span>     <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 12</span>     DWORD ret <span class="k3">=</span> GetTempPathW<span class="k2">(</span>MAX_PATH, pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>     WideCharToMultiByte<span class="k2">(</span>CP_UTF8, <span class="n">0</span>, pathw, <span class="k3">-</span><span class="n">1</span>, path, wcslen<span class="k2">(</span>pathw<span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>         <span class="k1">if</span> <span class="k2">(</span>ret <span class="k3">&gt;</span> MAX_PATH<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 15</span>            <span class="c">/* should this ever happen, windows is more broken than I ever thought */</span>
<span class="number"> 16</span>            <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 17</span>         <span class="k2">}</span>
<span class="number"> 18</span>
<span class="number"> 19</span>         <span class="k1">return</span> <a href="http://www.allegro.cc/manual/al_create_path_for_directory"><span class="a">al_create_path_for_directory</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span>      <span class="k2">}</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>      <span class="k1">case</span> ALLEGRO_RESOURCES_PATH: <span class="k2">{</span> <span class="c">/* where the program is in */</span>
<span class="number"> 24</span>         HANDLE process <span class="k3">=</span> GetCurrentProcess<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>         <span class="k1">char</span> <span class="k3">*</span>ptr<span class="k2">;</span>
<span class="number"> 26</span>     <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 27</span>     GetModuleFileNameExW<span class="k2">(</span>process, NULL, pathw, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>     WideCharToMultiByte<span class="k2">(</span>CP_UTF8, <span class="n">0</span>, pathw, <span class="k3">-</span><span class="n">1</span>, path, wcslen<span class="k2">(</span>pathw<span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>         ptr <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_772.html" target="_blank">strrchr</a><span class="k2">(</span>path, <span class="s">'\\'</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>         <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>ptr<span class="k2">)</span> <span class="k2">{</span> <span class="c">/* shouldn't happen */</span>
<span class="number"> 31</span>            <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 32</span>         <span class="k2">}</span>
<span class="number"> 33</span>
<span class="number"> 34</span>         <span class="c">/* chop off everything including and after the last slash */</span>
<span class="number"> 35</span>         <span class="c">/* should this not chop the slash? */</span>
<span class="number"> 36</span>         <span class="k3">*</span>ptr <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span>
<span class="number"> 37</span>
<span class="number"> 38</span>         <span class="k1">return</span> <a href="http://www.allegro.cc/manual/al_create_path_for_directory"><span class="a">al_create_path_for_directory</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>      <span class="k2">}</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 40</span>
<span class="number"> 41</span>      <span class="k1">case</span> ALLEGRO_USER_DATA_PATH: <span class="c">/* CSIDL_APPDATA */</span>
<span class="number"> 42</span>      <span class="k1">case</span> ALLEGRO_USER_SETTINGS_PATH:
<span class="number"> 43</span>         csidl <span class="k3">=</span> CSIDL_APPDATA<span class="k2">;</span>
<span class="number"> 44</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 45</span>
<span class="number"> 46</span>      <span class="k1">case</span> ALLEGRO_USER_HOME_PATH: <span class="c">/* CSIDL_PROFILE */</span>
<span class="number"> 47</span>         csidl <span class="k3">=</span> CSIDL_PROFILE<span class="k2">;</span>
<span class="number"> 48</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 49</span>
<span class="number"> 50</span>      <span class="k1">case</span> ALLEGRO_USER_DOCUMENTS_PATH: <span class="c">/* CSIDL_PERSONAL */</span>
<span class="number"> 51</span>         csidl <span class="k3">=</span> CSIDL_PERSONAL<span class="k2">;</span>
<span class="number"> 52</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 53</span>
<span class="number"> 54</span>      <span class="k1">case</span> ALLEGRO_EXENAME_PATH: <span class="k2">{</span> <span class="c">/* full path to the exe including its name */</span>
<span class="number"> 55</span>         HANDLE process <span class="k3">=</span> GetCurrentProcess<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>     <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 57</span>     GetModuleFileNameExW<span class="k2">(</span>process, NULL, pathw, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>     WideCharToMultiByte<span class="k2">(</span>CP_UTF8, <span class="n">0</span>, pathw, <span class="k3">-</span><span class="n">1</span>, path, wcslen<span class="k2">(</span>pathw<span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>
<span class="number"> 60</span>         <span class="k1">return</span> <a href="http://www.allegro.cc/manual/al_create_path"><span class="a">al_create_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span>      <span class="k2">}</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 62</span>
<span class="number"> 63</span>      default:
<span class="number"> 64</span>         <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 65</span>   <span class="k2">}</span>
<span class="number"> 66</span>   <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 67</span>   ret <span class="k3">=</span> SHGetFolderPathW<span class="k2">(</span>NULL, csidl, NULL, SHGFP_TYPE_CURRENT, pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 68</span>   <span class="k1">if</span> <span class="k2">(</span>ret <span class="k3">!</span><span class="k3">=</span> S_OK<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 69</span>      <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 70</span>   <span class="k2">}</span>
<span class="number"> 71</span>   WideCharToMultiByte<span class="k2">(</span>CP_UTF8, <span class="n">0</span>, pathw, <span class="k3">-</span><span class="n">1</span>, path, wcslen<span class="k2">(</span>pathw<span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 72</span>
<span class="number"> 73</span>   cisdl_path <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_path_for_directory"><span class="a">al_create_path_for_directory</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 74</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>cisdl_path<span class="k2">)</span>
<span class="number"> 75</span>      <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 76</span>
<span class="number"> 77</span>   <span class="k1">if</span> <span class="k2">(</span>csidl <span class="k3">=</span><span class="k3">=</span> CSIDL_APPDATA<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 78</span>      <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>org_name <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_org_name"><span class="a">al_get_org_name</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 79</span>      <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>app_name <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_app_name"><span class="a">al_get_app_name</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 80</span>
<span class="number"> 81</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>app_name <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>app_name<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 82</span>         <span class="c">/* this shouldn't ever happen. */</span>
<span class="number"> 83</span>         <a href="http://www.allegro.cc/manual/al_destroy_path"><span class="a">al_destroy_path</span></a><span class="k2">(</span>cisdl_path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 84</span>         <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 85</span>      <span class="k2">}</span>
<span class="number"> 86</span>
<span class="number"> 87</span>      <span class="k1">if</span> <span class="k2">(</span>org_name <span class="k3">&amp;</span><span class="k3">&amp;</span> org_name<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 88</span>         <a href="http://www.allegro.cc/manual/al_append_path_component"><span class="a">al_append_path_component</span></a><span class="k2">(</span>cisdl_path, org_name<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 89</span>      <span class="k2">}</span>
<span class="number"> 90</span>
<span class="number"> 91</span>      <a href="http://www.allegro.cc/manual/al_append_path_component"><span class="a">al_append_path_component</span></a><span class="k2">(</span>cisdl_path, app_name<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 92</span>   <span class="k2">}</span>
<span class="number"> 93</span>
<span class="number"> 94</span>   <span class="k1">return</span> cisdl_path<span class="k2">;</span>
<span class="number"> 95</span><span class="k2">}</span>
</div></div><p>
<img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>this is the patch</p><div class="source-code"><div class="toolbar"><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>diff <span class="k3">-</span><span class="k3">-</span>git <span class="s">"a/C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\TortoiseGit\\wsy2995.tmp\\wsystem-830bcab-left.c"</span> <span class="s">"b/E:\\myroom\\libraries\\allegro\\src\\win\\wsystem.c"</span>
<span class="number">  2</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="n">68fb78e</span>..<span class="n">6c72b08</span> <span class="n">100644</span>
<span class="number">  3</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span> <span class="s">"a/C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\TortoiseGit\\wsy2995.tmp\\wsystem-830bcab-left.c"</span>
<span class="number">  4</span><span class="k3">+</span><span class="k3">+</span><span class="k3">+</span> <span class="s">"b/E:\\myroom\\libraries\\allegro\\src\\win\\wsystem.c"</span>
<span class="number">  5</span>@@ <span class="k3">-</span><span class="n">450</span>,<span class="n">7</span> <span class="k3">+</span><span class="n">450</span>,<span class="n">9</span> @@ ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number">  6</span>    <span class="k1">switch</span> <span class="k2">(</span>id<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  7</span>       <span class="k1">case</span> ALLEGRO_TEMP_PATH: <span class="k2">{</span>
<span class="number">  8</span>          <span class="c">/* Check: TMP, TMPDIR, TEMP or TEMPDIR */</span>
<span class="number">  9</span><span class="k3">-</span>         DWORD ret <span class="k3">=</span> GetTempPath<span class="k2">(</span>MAX_PATH, path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span><span class="k3">+</span>     <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 11</span><span class="k3">+</span>     DWORD ret <span class="k3">=</span> GetTempPathW<span class="k2">(</span>MAX_PATH, pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span><span class="k3">+</span>     WideCharToMultiByte<span class="k2">(</span>CP_UTF8, <span class="n">0</span>, pathw, <span class="k3">-</span><span class="n">1</span>, path, wcslen<span class="k2">(</span>pathw<span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>          <span class="k1">if</span> <span class="k2">(</span>ret <span class="k3">&gt;</span> MAX_PATH<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 14</span>             <span class="c">/* should this ever happen, windows is more broken than I ever thought */</span>
<span class="number"> 15</span>             <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 16</span>@@ <span class="k3">-</span><span class="n">463</span>,<span class="n">7</span> <span class="k3">+</span><span class="n">465</span>,<span class="n">9</span> @@ ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number"> 17</span>       <span class="k1">case</span> ALLEGRO_RESOURCES_PATH: <span class="k2">{</span> <span class="c">/* where the program is in */</span>
<span class="number"> 18</span>          HANDLE process <span class="k3">=</span> GetCurrentProcess<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>          <span class="k1">char</span> <span class="k3">*</span>ptr<span class="k2">;</span>
<span class="number"> 20</span><span class="k3">-</span>         GetModuleFileNameEx<span class="k2">(</span>process, NULL, path, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span><span class="k3">+</span>     <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 22</span><span class="k3">+</span>     GetModuleFileNameExW<span class="k2">(</span>process, NULL, pathw, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span><span class="k3">+</span>     WideCharToMultiByte<span class="k2">(</span>CP_UTF8, <span class="n">0</span>, pathw, <span class="k3">-</span><span class="n">1</span>, path, wcslen<span class="k2">(</span>pathw<span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>          ptr <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_772.html" target="_blank">strrchr</a><span class="k2">(</span>path, <span class="s">'\\'</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>          <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>ptr<span class="k2">)</span> <span class="k2">{</span> <span class="c">/* shouldn't happen */</span>
<span class="number"> 26</span>             <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 27</span>@@ <span class="k3">-</span><span class="n">491</span>,<span class="n">7</span> <span class="k3">+</span><span class="n">495</span>,<span class="n">9</span> @@ ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number"> 28</span> 
<span class="number"> 29</span>       <span class="k1">case</span> ALLEGRO_EXENAME_PATH: <span class="k2">{</span> <span class="c">/* full path to the exe including its name */</span>
<span class="number"> 30</span>          HANDLE process <span class="k3">=</span> GetCurrentProcess<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><span class="k3">-</span>         GetModuleFileNameEx<span class="k2">(</span>process, NULL, path, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span><span class="k3">+</span>     <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 33</span><span class="k3">+</span>     GetModuleFileNameExW<span class="k2">(</span>process, NULL, pathw, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span><span class="k3">+</span>     WideCharToMultiByte<span class="k2">(</span>CP_UTF8, <span class="n">0</span>, pathw, <span class="k3">-</span><span class="n">1</span>, path, wcslen<span class="k2">(</span>pathw<span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span> 
<span class="number"> 36</span>          <span class="k1">return</span> <a href="http://www.allegro.cc/manual/al_create_path"><span class="a">al_create_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>       <span class="k2">}</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 38</span>@@ <span class="k3">-</span><span class="n">500</span>,<span class="n">7</span> <span class="k3">+</span><span class="n">506</span>,<span class="n">9</span> @@ ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number"> 39</span>          <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 40</span>    <span class="k2">}</span>
<span class="number"> 41</span> 
<span class="number"> 42</span><span class="k3">-</span>   ret <span class="k3">=</span> SHGetFolderPath<span class="k2">(</span>NULL, csidl, NULL, SHGFP_TYPE_CURRENT, path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span><span class="k3">+</span>   <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 44</span><span class="k3">+</span>   ret <span class="k3">=</span> SHGetFolderPathW<span class="k2">(</span>NULL, csidl, NULL, SHGFP_TYPE_CURRENT, pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span><span class="k3">+</span>   WideCharToMultiByte<span class="k2">(</span>CP_UTF8, <span class="n">0</span>, pathw, <span class="k3">-</span><span class="n">1</span>, path, wcslen<span class="k2">(</span>pathw<span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>    <span class="k1">if</span> <span class="k2">(</span>ret <span class="k3">!</span><span class="k3">=</span> S_OK<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 47</span>       <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 48</span>    <span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (vkensou)</author>
		<pubDate>Sat, 22 Mar 2014 20:44:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can format your post with &lt;code&gt;code goes here....&lt;/code&gt; tags. It makes it much easier to read, and you can edit your post to change it as well.</p><p>Also, you can create a diff and attach it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 23 Mar 2014 01:05:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>to Edgar Reynaldo:</p><p>thanks your suggestion:D
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (vkensou)</author>
		<pubDate>Sun, 23 Mar 2014 07:04:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks! I slightly modified the patch to the below one. (Mainly use our own utf16 conversion instead of the Windows one.) With which name and email do you want to appear in the commit message?</p><div class="source-code"><div class="toolbar"><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>diff <span class="k3">-</span><span class="k3">-</span>git a<span class="k3">/</span>src<span class="k3">/</span>win<span class="k3">/</span>wsystem.c b<span class="k3">/</span>src<span class="k3">/</span>win<span class="k3">/</span>wsystem.c
<span class="number">  2</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="n">68fb78e</span>..<span class="n">5348bcf</span> <span class="n">100644</span>
<span class="number">  3</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span> a<span class="k3">/</span>src<span class="k3">/</span>win<span class="k3">/</span>wsystem.c
<span class="number">  4</span><span class="k3">+</span><span class="k3">+</span><span class="k3">+</span> b<span class="k3">/</span>src<span class="k3">/</span>win<span class="k3">/</span>wsystem.c
<span class="number">  5</span>@@ <span class="k3">-</span><span class="n">443</span>,<span class="n">6</span> <span class="k3">+</span><span class="n">443</span>,<span class="n">8</span> @@ <span class="k1">static</span> ALLEGRO_TOUCH_INPUT_DRIVER <span class="k3">*</span>win_get_touch_input_driver<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  6</span> ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number">  7</span> <span class="k2">{</span>
<span class="number">  8</span>    <span class="k1">char</span> path<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number">  9</span><span class="k3">+</span>   <span class="k1">wchar_t</span> pathw<span class="k2">[</span>MAX_PATH<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 10</span><span class="k3">+</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span>pathu<span class="k2">;</span>
<span class="number"> 11</span>    <span class="k1">uint32_t</span> csidl <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 12</span>    HRESULT ret <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 13</span>    ALLEGRO_PATH <span class="k3">*</span>cisdl_path <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 14</span>@@ <span class="k3">-</span><span class="n">450</span>,<span class="n">12</span> <span class="k3">+</span><span class="n">452</span>,<span class="n">15</span> @@ ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number"> 15</span>    <span class="k1">switch</span> <span class="k2">(</span>id<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 16</span>       <span class="k1">case</span> ALLEGRO_TEMP_PATH: <span class="k2">{</span>
<span class="number"> 17</span>          <span class="c">/* Check: TMP, TMPDIR, TEMP or TEMPDIR */</span>
<span class="number"> 18</span><span class="k3">-</span>         DWORD ret <span class="k3">=</span> GetTempPath<span class="k2">(</span>MAX_PATH, path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span><span class="k3">+</span>
<span class="number"> 20</span><span class="k3">+</span>         DWORD ret <span class="k3">=</span> GetTempPathW<span class="k2">(</span>MAX_PATH, pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>          <span class="k1">if</span> <span class="k2">(</span>ret <span class="k3">&gt;</span> MAX_PATH<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 22</span>             <span class="c">/* should this ever happen, windows is more broken than I ever thought */</span>
<span class="number"> 23</span>             <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 24</span>          <span class="k2">}</span>
<span class="number"> 25</span><span class="k3">-</span>
<span class="number"> 26</span><span class="k3">+</span>         pathu <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new_from_utf16"><span class="a">al_ustr_new_from_utf16</span></a><span class="k2">(</span>pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span><span class="k3">+</span>         <a href="http://www.allegro.cc/manual/al_ustr_to_buffer"><span class="a">al_ustr_to_buffer</span></a><span class="k2">(</span>pathu, path, <span class="k1">sizeof</span> path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span><span class="k3">+</span>         <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>pathu<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>          <span class="k1">return</span> <a href="http://www.allegro.cc/manual/al_create_path_for_directory"><span class="a">al_create_path_for_directory</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span> 
<span class="number"> 31</span>       <span class="k2">}</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 32</span>@@ <span class="k3">-</span><span class="n">463</span>,<span class="n">7</span> <span class="k3">+</span><span class="n">468</span>,<span class="n">11</span> @@ ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number"> 33</span>       <span class="k1">case</span> ALLEGRO_RESOURCES_PATH: <span class="k2">{</span> <span class="c">/* where the program is in */</span>
<span class="number"> 34</span>          HANDLE process <span class="k3">=</span> GetCurrentProcess<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>          <span class="k1">char</span> <span class="k3">*</span>ptr<span class="k2">;</span>
<span class="number"> 36</span><span class="k3">-</span>         GetModuleFileNameEx<span class="k2">(</span>process, NULL, path, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span><span class="k3">+</span>
<span class="number"> 38</span><span class="k3">+</span>         GetModuleFileNameExW<span class="k2">(</span>process, NULL, pathw, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span><span class="k3">+</span>         pathu <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new_from_utf16"><span class="a">al_ustr_new_from_utf16</span></a><span class="k2">(</span>pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span><span class="k3">+</span>         <a href="http://www.allegro.cc/manual/al_ustr_to_buffer"><span class="a">al_ustr_to_buffer</span></a><span class="k2">(</span>pathu, path, <span class="k1">sizeof</span> path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span><span class="k3">+</span>         <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>pathu<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>          ptr <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_772.html" target="_blank">strrchr</a><span class="k2">(</span>path, <span class="s">'\\'</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span>          <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>ptr<span class="k2">)</span> <span class="k2">{</span> <span class="c">/* shouldn't happen */</span>
<span class="number"> 44</span>             <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 45</span>@@ <span class="k3">-</span><span class="n">491</span>,<span class="n">7</span> <span class="k3">+</span><span class="n">500</span>,<span class="n">11</span> @@ ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number"> 46</span> 
<span class="number"> 47</span>       <span class="k1">case</span> ALLEGRO_EXENAME_PATH: <span class="k2">{</span> <span class="c">/* full path to the exe including its name */</span>
<span class="number"> 48</span>          HANDLE process <span class="k3">=</span> GetCurrentProcess<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span><span class="k3">-</span>         GetModuleFileNameEx<span class="k2">(</span>process, NULL, path, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span><span class="k3">+</span>
<span class="number"> 51</span><span class="k3">+</span>         GetModuleFileNameExW<span class="k2">(</span>process, NULL, pathw, MAX_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span><span class="k3">+</span>         pathu <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new_from_utf16"><span class="a">al_ustr_new_from_utf16</span></a><span class="k2">(</span>pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span><span class="k3">+</span>         <a href="http://www.allegro.cc/manual/al_ustr_to_buffer"><span class="a">al_ustr_to_buffer</span></a><span class="k2">(</span>pathu, path, <span class="k1">sizeof</span> path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 54</span><span class="k3">+</span>         <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>pathu<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 55</span> 
<span class="number"> 56</span>          <span class="k1">return</span> <a href="http://www.allegro.cc/manual/al_create_path"><span class="a">al_create_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>       <span class="k2">}</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 58</span>@@ <span class="k3">-</span><span class="n">500</span>,<span class="n">11</span> <span class="k3">+</span><span class="n">513</span>,<span class="n">15</span> @@ ALLEGRO_PATH <span class="k3">*</span>_al_win_get_path<span class="k2">(</span><span class="k1">int</span> id<span class="k2">)</span>
<span class="number"> 59</span>          <span class="k1">return</span> NULL<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="k3">-</span>   ret <span class="k3">=</span> SHGetFolderPath<span class="k2">(</span>NULL, csidl, NULL, SHGFP_TYPE_CURRENT, path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span><span class="k3">+</span>   ret <span class="k3">=</span> SHGetFolderPathW<span class="k2">(</span>NULL, csidl, NULL, SHGFP_TYPE_CURRENT, pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span>    <span class="k1">if</span> <span class="k2">(</span>ret <span class="k3">!</span><span class="k3">=</span> S_OK<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 65</span>       <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 66</span>    <span class="k2">}</span>
<span class="number"> 67</span> 
<span class="number"> 68</span><span class="k3">+</span>   pathu <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new_from_utf16"><span class="a">al_ustr_new_from_utf16</span></a><span class="k2">(</span>pathw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 69</span><span class="k3">+</span>   <a href="http://www.allegro.cc/manual/al_ustr_to_buffer"><span class="a">al_ustr_to_buffer</span></a><span class="k2">(</span>pathu, path, <span class="k1">sizeof</span> path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 70</span><span class="k3">+</span>   <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>pathu<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 71</span><span class="k3">+</span>
<span class="number"> 72</span>    cisdl_path <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_path_for_directory"><span class="a">al_create_path_for_directory</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 73</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>cisdl_path<span class="k2">)</span>
<span class="number"> 74</span>       <span class="k1">return</span> NULL<span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Sun, 23 Mar 2014 23:34:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>to Elias:<br />I just looked at the forum today. Patch has been applied to the latest version.<br />use name: vkensou and email:boywanyx@hotmail.com<br />is it too late to tell you?:D
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (vkensou)</author>
		<pubDate>Thu, 27 Mar 2014 13:51:43 +0000</pubDate>
	</item>
</rss>
