/[LeafOK_CVS]/lbbs/src/lml.c
ViewVC logotype

Diff of /lbbs/src/lml.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.34 by sysadm, Wed Oct 29 14:45:43 2025 UTC Revision 1.35 by sysadm, Thu Oct 30 03:18:56 2025 UTC
# Line 178  inline static void lml_init(void) Line 178  inline static void lml_init(void)
178          }          }
179  }  }
180    
181  #define CHECK_AND_APPEND_OUTPUT(out_buf, out_buf_len, out_buf_offset, tag_out, tag_out_len) \  #define CHECK_AND_APPEND_OUTPUT(out_buf, out_buf_len, out_buf_offset, tag_out, tag_out_len)                                         \
182  { \          {                                                                                                                               \
183          if ((out_buf_offset) + (tag_out_len) >= (out_buf_len)) \                  if ((out_buf_offset) + (tag_out_len) >= (out_buf_len))                                                                      \
184          { \                  {                                                                                                                           \
185                  log_error("Buffer is not longer enough for output string %d >= %d\n", (out_buf_offset) + (tag_out_len), (out_buf_len)); \                          log_error("Buffer is not longer enough for output string %d >= %d\n", (out_buf_offset) + (tag_out_len), (out_buf_len)); \
186                  out_buf[out_buf_offset] = '\0'; \                          out_buf[out_buf_offset] = '\0';                                                                                         \
187                  return (out_buf_offset); \                          return (out_buf_offset);                                                                                                \
188          } \                  }                                                                                                                           \
189          memcpy((out_buf) + (out_buf_offset), (tag_out), (size_t)(tag_out_len)); \                  memcpy((out_buf) + (out_buf_offset), (tag_out), (size_t)(tag_out_len));                                                     \
190          (out_buf_offset) += (tag_out_len); \                  (out_buf_offset) += (tag_out_len);                                                                                          \
191  }          }
192    
193  int lml_render(const char *str_in, char *str_out, int buf_len, int quote_mode)  int lml_render(const char *str_in, char *str_out, int buf_len, int quote_mode)
194  {  {
# Line 237  int lml_render(const char *str_in, char Line 237  int lml_render(const char *str_in, char
237    
238                  if (str_in[i] == '\033' && str_in[i + 1] == '[') // Escape sequence -- copy directly                  if (str_in[i] == '\033' && str_in[i + 1] == '[') // Escape sequence -- copy directly
239                  {                  {
240                          for (k = i + 2; str_in[k] != '\0' && str_in[k] != 'm'; k++)                          for (k = i + 2; str_in[k] != '\0' && str_in[k] != 'm' && str_in[k] != '\033'; k++)
241                                  ;                                  ;
242    
243                          if (str_in[k] == 'm') // Valid                          if (str_in[k] != 'm') // invalid
244                          {                          {
245                                  CHECK_AND_APPEND_OUTPUT(str_out, buf_len, j, str_in + i, k - i + 1);                                  k--;
                                 i = k;  
                                 continue;  
                         }  
                         else // reach end of string  
                         {  
                                 break;  
246                          }                          }
247    
248                            CHECK_AND_APPEND_OUTPUT(str_out, buf_len, j, str_in + i, k - i + 1);
249                            i = k;
250                            continue;
251                  }                  }
252    
253                  if (str_in[i] == '\n') // jump out of tag at end of line                  if (str_in[i] == '\n') // jump out of tag at end of line


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1