<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 9 Jun 2022 at 15:43, Brian G <<a href="mailto:brian@westwoodsvcs.com">brian@westwoodsvcs.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)"><div><br></div><div><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><div style="font-family:"arial","helvetica",sans-serif;font-size:12pt;color:rgb(0,0,0)"><br><br><div>"Failure is the key to success; <br> each mistake teaches us something"  .. Morihei Ueshiba<br>Brian G</div><br><span id="gmail-m_-3727551732673523069zwchr">----- On Jun 8, 2022, at 1:53 PM, Bruce Steers <<a href="mailto:bsteers4@gmail.com" target="_blank">bsteers4@gmail.com</a>> wrote:<br></span><div><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:"helvetica","arial",sans-serif;font-size:12pt"><div dir="ltr"><div dir="ltr"><div style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 8 Jun 2022 at 13:19, Bruce Steers <<a href="mailto:bsteers4@gmail.com" rel="nofollow noopener noreferrer nofollow noopener noreferrer" target="_blank">bsteers4@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 8 Jun 2022 at 05:06, Brian G <<a href="mailto:brian@westwoodsvcs.com" rel="nofollow noopener noreferrer nofollow noopener noreferrer" target="_blank">brian@westwoodsvcs.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div><p style="margin-top:0px" dir="ltr">I think there is, I will check it in the morning</p> 
<div id="gmail-m_-3727551732673523069gmail-m_-7065232267209114621gmail-m_-5708279622140489164mail-app-auto-default-signature">
 <p dir="ltr">--<br> Thanks<br> Brian G</p>
</div>Tuesday, 07 June 2022, 01:20PM -07:00 from Bruce Steers <a href="mailto:bsteers4@gmail.com" rel="nofollow noopener noreferrer nofollow noopener noreferrer" target="_blank">bsteers4@gmail.com</a>:<br><br><blockquote id="gmail-m_-3727551732673523069gmail-m_-7065232267209114621gmail-m_-5708279622140489164mail-app-auto-quote" cite="http://16546332140000054555" style="border-left:1px solid rgb(8,120,189);margin:0px 0px 0px 10px;padding:0px 0px 0px 10px">
        



    









        
        


        
        
        
        
        

        
        

        
        



<div>
        
        <div>
                
                
                        <div id="gmail-m_-3727551732673523069gmail-m_-7065232267209114621gmail-m_-5708279622140489164style_16546332140000054555_BODY"><div><div dir="ltr"><div style="font-size:small">Has anyone made a routine to strip xterm escape codes from a terminal text?</div><div style="font-size:small"><br></div><div style="font-size:small">I'm looking at having to have a close study of the TerminalFilter_VT100.class and try to account for all possible code combinations to strip them.</div><div style="font-size:small"><br></div><div style="font-size:small">I thought before i spent hours doing it i'd ask if anyone already has and could share the code.</div><div style="font-size:small"><br></div><div style="font-size:small">Or if there is already a way either an existing function somewhere or possibly in gb.form.terminal or some other class a function that could do it.</div><div style="font-size:small"><br></div><div style="font-size:small">I'm looking at TerminalFilter_VT100.class and the function OutputTo() looks like it could do it , it seems to do all the right processing but for other reasons. maybe by printing to a stream i could get plain text but i do not know how to do that :(</div><div style="font-size:small"><br></div><div style="font-size:small">Any thoughts/suggestions?</div><div style="font-size:small">Many thanks</div><div style="font-size:small">All the best<br></div><div style="font-size:small">BruceS</div></div></div></div></div></div></blockquote></div></blockquote><br><div style="font-size:small">Cheers Brian.</div><div style="font-size:small"><br></div><div style="font-size:small">I have managed this so far but it seems bulky. <br></div><div style="font-size:small">I added it to TerminalView.class , <br></div><div style="font-size:small">Bulky because it makes a whole new hidden form/terminalview and uses it's OutputTo() to print text to it then uses TerminalView.Text, <br></div><div style="font-size:small">trouble is OutputTo() needs a terminalview object in it's arguments.<br></div><div style="font-size:small"><br></div><div style="font-size:small">Could be easier to just use the normal TerminalView.Text and process all the text not one line at a time as it's output. :-/<br></div><div style="font-size:small"><br></div><div style="font-size:small">Or maybe I should copy the OutputTo() and Escape() methods and edit them to not print text to a TerminalView stream but return it instead.</div></div></div></blockquote><br><div style="font-size:small">I did the above mentioned, copied OutputTo() and Escape() from TerminalFilter_VT100.class and removed all functionality and made all Print statements assign to a return string instead.</div><div style="font-size:small"><br></div><div style="font-size:small">I'll attach the project in case anyone is interested. (feel free to optimize/improve the code ;) )<br></div><div style="font-size:small"><br></div><div style="font-size:small">the aim of the project is to enable/disable a private root shell inside an application for issuing multiple commands with only one authorization request.</div><div style="font-size:small">Easy enough to to with a TerminalView and bash but not so easy to get some kind of "Wait" ability and getting return values and text from inside the bash shell.</div><div style="font-size:small"><br></div><div style="font-size:small">It relies on monitoring the process text output, is starts bash and echos a "shell-ready" then after the command completes it echos "com-done:$?" giving the return value.<br></div><div style="font-size:small"><br></div><div style="font-size:small">Wishing well</div><div style="font-size:small">BruceS</div><div style="font-size:small"><br></div></div></div>
</blockquote><div>I seem to remember there was a callback style thing to allow filtering, checking could be a dream!</div><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:"helvetica","arial",sans-serif;font-size:12pt"><br>----[ <a href="http://gambaswiki.org/wiki/doc/netiquette" target="_blank">http://gambaswiki.org/wiki/doc/netiquette</a> ]----<br></blockquote></div></div><br><br>----[ <a href="http://gambaswiki.org/wiki/doc/netiquette" target="_blank">http://gambaswiki.org/wiki/doc/netiquette</a> ]----</blockquote><div>Bruce,</div><div><br></div><div>   Did you look at the ConnectTo to method in the terminal view, It allows to filter IO</div><div>   </div><div><div>' allow a connection to a filter or other task</div><div>' Output is the Pipe on which the connect Task or process will receive input</div><div>' the input stream I the one this process will use to receive input</div><div>' if a callBack is passed then the preprocess method is executed before recieved data is handled by the terminal</div><div>' Preprocess may return true to have the terminal process the data, or false to have the terminal ignore the data</div><div>' This allows the implementation of a state machine or filter to hande extended terminal functions on the stream</div><div><br></div><div>Maybe this can help</div></div></div></div></div></blockquote><div><br></div><div style="font-size:small" class="gmail_default">Cheers Brian but Benoit just came up with an OUTRAGEOUSLY simple solution lol :)</div><div style="font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default">Thanks for looking though :)</div><div style="font-size:small" class="gmail_default">BruceS</div><div style="font-size:small" class="gmail_default"></div><br></div></div>