12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061(*---------------------------------------------------------------------------
Copyright (c) 2015 The fmt programmers. All rights reserved.
SPDX-License-Identifier: ISC
---------------------------------------------------------------------------*)letis_infix~affixs=(* Damned, already missing astring, from which this is c&p *)letlen_a=String.lengthaffixinletlen_s=String.lengthsiniflen_a>len_sthenfalseelseletmax_idx_a=len_a-1inletmax_idx_s=len_s-len_ainletrecloopik=ifi>max_idx_sthenfalseelseifk>max_idx_athentrueelseifk>0thenifString.getaffixk=String.gets(i+k)thenloopi(k+1)elseloop(i+1)0elseifString.getaffix0=String.getsithenloopi1elseloop(i+1)0inloop00letsetup?style_renderer?utf_8oc=letppf=ifoc==Stdlib.stdoutthenFmt.stdoutelseifoc==Stdlib.stderrthenFmt.stderrelseFormat.formatter_of_out_channelocinletstyle_renderer=matchstyle_rendererwith|Somer->r|None->letdumb=trymatchSys.getenv"TERM"with|"dumb"|""->true|_->falsewithNot_found->trueinletisatty=tryUnix.(isatty(descr_of_out_channeloc))with|Unix.Unix_error_->falseinifnotdumb&&isattythen`Ansi_ttyelse`Noneinletutf_8=matchutf_8with|Someb->b|None->lethas_utf_8var=tryis_infix~affix:"UTF-8"(String.uppercase_ascii(Sys.getenvvar))withNot_found->falseinhas_utf_8"LANG"||has_utf_8"LC_ALL"||has_utf_8"LC_CTYPE"inFmt.set_style_rendererppfstyle_renderer;Fmt.set_utf_8ppfutf_8;ppfletsetup_std_outputs?style_renderer?utf_8()=ignore(setup?style_renderer?utf_8stdout);ignore(setup?style_renderer?utf_8stderr);()