<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.E-postmall18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=SV link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US'>Theres always garbage in the end of the files.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US'>I do this when I want to read a file:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    same => n,Set(featurefile=/home/test/feature-1.txt)<br>    same => n,Set(unfilteredfeat2=${FILE(${featurefile},0,1,l,u)})<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    same => n,Set(feature2=${SHIFT(unfilteredfeat2)})<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>After that, add a , inside end of the file, so<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Cat feature-1.txt<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Reads:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>radio,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Thus if there is garbage in the file, it will happen after the ,. Same if garbage happens to find its way into the end of the variable for some reason.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><br><br></span><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US'><o:p></o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'>Från:</span></b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'> asterisk-users-bounces@lists.digium.com [mailto:asterisk-users-bounces@lists.digium.com] <b>För </b>Jonathan H<br><b>Skickat:</b> den 17 oktober 2016 15:32<br><b>Till:</b> Asterisk Users Mailing List - Non-Commercial Discussion <asterisk-users@lists.digium.com><br><b>Ämne:</b> [asterisk-users] Multiple readfile oddities, newlines etc<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><div><p class=MsoNormal>I have a plain text file, ASCII, unix line breaks. 1 single line, and all that is in it is the word "radio".<br><br>Here's some test dialplan:<br><br>exten => 5,1,Verbose(Context: ${CONTEXT} Exten:${EXTEN})<br><br>    same => n,Set(feature=${FILE(/home/test/feature-1.txt,0,1,l,u)})<br>    same => n,Verbose(${feature})<br>   <br>    same => n,Set(featurefile=/home/test/feature-1.txt)<br>    same => n,Set(feature2=${FILE(${featurefile},0,1,l,u)})<br>    same => n,Verbose(${feature2})<br><br>Both should output "radio", right? Here's the output:<br><span style='font-family:"Courier New"'><br>    -- Executing [5@fromvoipfone201:2] Set("PJSIP/6001-00000052", "feature=radio") in new stack<br>    -- Executing [5@fromvoipfone201:3] Verbose("PJSIP/6001-00000052", "radio") in new stack<br>radio<br><br>    -- Executing [5@fromvoipfone201:4] Set("PJSIP/6001-00000052", "featurefile=/home/test/feature-1.txt") in new stack<br>    -- Executing [5@fromvoipfone201:5] Set("PJSIP/6001-00000052", "feature2=<b>radi</b>") in new stack </span><o:p></o:p></p><div><p class=MsoNormal><span style='font-family:"Courier New"'>                                                        <b>GAAAAARRRGGGHHHH!  ^^^^^</b></span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><span style='font-family:"Courier New"'>    -- Executing [5@fromvoipfone201:6] Verbose("PJSIP/6001-00000052", "radi") in new stack</span><br><br>And this is what's just at the top of the script. If I put it way down in another context:<br><span style='font-family:"Courier New"'><br>    -- Executing [s@track-handler:3] Verbose("Local/s@root-00000026;2", "/home/test/feature-1") in new stack<br>/home/test/feature-1<br>    -- Executing [s@track-handler:4] Set("Local/s@root-00000026;2", "feature=<b>radio▒▒</b>") in new stack </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>                                                    <b>EVEN MORE GAAAAARRRGGGHHHH!  ^^^^^</b></span><o:p></o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-family:"Courier New"'><br>[Oct 17 13:29:33] ERROR[5093][C-0000003c]: json.c:704 ast_json_vpack: Error building JSON from '{s: s, s: s}': Invalid UTF-8 string.<br>[Oct 17 13:29:33] ERROR[5093][C-0000003c]: stasis_channels.c:773 ast_channel_publish_varset: Error creating message<br>    -- Executing [s@track-handler:5] Verbose("Local/s@root-00000026;2", "radio▒▒") in new stack<br>radio▒▒<br>    -- Executing [s@track-handler:6] GotoIf("Local/s@root-00000026;2", "1?radio▒▒,s,1") in new stack</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So, at the top of the file, when it's just a straight file as the filename, it gives the full word. If the filename is a variable, it strips and character. And further down, same thing, but it adds two weird blocks, which appear side by side in the console, but weirdly, stacked up in this email.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>(Oh, by the way, if there is more than one line in the file, even if I used "u" for line breaks, it adds a newline to the variable, Is that correct?)<br><br>What am I missing? I've opened it in both nano and notepad++, I've used iconv and all the tools I can think of to check that file, and all the asterisk conf files, too.<br>It all looks as it should here:<o:p></o:p></p></div><div><p class=MsoNormal><br>$ cat feature-1.txt<br>radio$ file feature-1.txt<br>feature-1.txt: ASCII text<br>$ wc -l feature-1.txt<br>0 feature-1.txt<br>wc -c feature-1.txt<br>5 feature-1.txt<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>After 6 hours struggling with this, I think I'm starting to lose the plot. Can anyone tell me where I'm going wrong? Thanks.<o:p></o:p></p></div></div></div></body></html>