Find a style for a string.
282{
284 struct QuoteStyle *qc = NULL, *tmp = NULL, *ptr = NULL, *save = NULL;
285 const char *tail_qptr = NULL;
286 size_t offset, tail_lng;
287 int index = -1;
288
289
290 while (q_list)
291 {
293 {
294
295
297 {
299 return q_list;
300
301
302 if (!tmp)
303 {
304
307 tmp->prefix_len = length;
308
309
311 {
312 tmp->next = q_list->
next;
314 }
316 {
319 }
320
321
324
325
328
329
330 if (q_list == *quote_list)
331 *quote_list = tmp;
332
334
335
336 qc = tmp;
337
338
339
340
342 }
343 else
344 {
345
346
347
349
350
355
356
358
359 while (ptr->next)
365
367
368
369 q_list = save;
370 }
371
372
373 *force_redraw = true;
374 continue;
375 }
376 else
377 {
378
379 q_list = q_list->
next;
380 continue;
381 }
382 }
383 else
384 {
385
386
387
389 {
390
391
392 ptr = q_list;
394
395 q_list = q_list->
down;
396 tail_lng = length - offset;
397 tail_qptr = qptr + offset;
398
399 while (q_list)
400 {
402 {
404 {
405
407 return q_list;
408
409
410 if (!tmp)
411 {
412
415 tmp->prefix_len = length;
416
417
419 {
420 tmp->next = q_list->
next;
422 }
424 {
427 }
428
429
431 tmp->
up = q_list->
up;
433 if (tmp->up->down == q_list)
435
436
439
441
442
443 qc = tmp;
444
445
447 }
448 else
449 {
450
451
452
454
455
460
461
463 while (ptr->next)
469
471
472
473 q_list = save;
474 }
475
476
477 *force_redraw = true;
478 continue;
479 }
480 else
481 {
482 q_list = q_list->
next;
483 continue;
484 }
485 }
486 else
487 {
488
491 {
492
493 ptr = q_list;
495
496 q_list = q_list->
down;
497 tail_lng = length - offset;
498 tail_qptr = qptr + offset;
499
500 continue;
501 }
502 else
503 {
504
505 q_list = q_list->
next;
506 continue;
507 }
508 }
509 }
510
511
512 if (!qc)
513 {
516 tmp->prefix_len = length;
517
518 if (ptr->down)
519 {
520 tmp->next = ptr->down;
521 ptr->down->prev = tmp;
522 }
523 ptr->down = tmp;
524 tmp->up = ptr;
525
526 tmp->quote_n = (*q_level)++;
528
529 return tmp;
530 }
531 else
532 {
533 if (index != -1)
535
536 return qc;
537 }
538 }
539 else
540 {
541
542 q_list = q_list->
next;
543 continue;
544 }
545 }
546 }
547
548 if (!qc)
549 {
550
556
557 if (*quote_list)
558 {
559 if ((*quote_list)->next)
560 {
563 }
564 (*quote_list)->
next = qc;
565 qc->
prev = *quote_list;
566 }
567 else
568 {
569 *quote_list = qc;
570 }
571 }
572
573 if (index != -1)
575
576 return qc;
577}
char * mutt_strn_dup(const char *begin, size_t len)
Duplicate a sub-string.
bool mutt_strn_equal(const char *a, const char *b, size_t num)
Check for equality of two strings (to a maximum), safely.
static void qstyle_insert(struct QuoteStyle *quote_list, struct QuoteStyle *new_class, int index, int *q_level)
Insert a new quote colour class into a list.
static struct QuoteStyle * qstyle_new(void)
Create a new QuoteStyle.
size_t prefix_len
Length of the prefix string.