@@ -16,6 +16,9 @@ INCLUDE_SEEN_PSST="${INCLUDE_SEEN_PSST-}:list:"
16
16
# shellcheck source=const.inc.sh
17
17
. " $INCLUDE_PSST /basic/const.inc.sh"
18
18
19
+ # shellcheck source=esc.inc.sh
20
+ . " $INCLUDE_PSST /basic/esc.inc.sh"
21
+
19
22
# shellcheck source=test.inc.sh
20
23
. " $INCLUDE_PSST /basic/test.inc.sh"
21
24
@@ -179,9 +182,12 @@ list_count_psst()
179
182
|| assert_func_fail_psst " $func " \
180
183
' List delimiter must be single character'
181
184
182
- ! [ " $del " = " $NL_CHAR_PSST " ] \
183
- || assert_func_fail_psst " $func " \
185
+ case $del in
186
+ \\ ) del=\\\\ ;;
187
+ \" ) del=' \"' ;;
188
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
184
189
' List delimiter must not be newline'
190
+ esac
185
191
fi
186
192
187
193
case $list in
@@ -236,9 +242,12 @@ list_first_psst()
236
242
|| assert_func_fail_psst " $func " \
237
243
' List delimiter must be single character'
238
244
239
- ! [ " $del " = " $NL_CHAR_PSST " ] \
240
- || assert_func_fail_psst " $func " \
245
+ case $del in
246
+ \\ ) del=\\\\ ;;
247
+ \" ) del=' \"' ;;
248
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
241
249
' List delimiter must not be newline'
250
+ esac
242
251
fi
243
252
244
253
case $list in
@@ -294,9 +303,12 @@ list_last_psst()
294
303
|| assert_func_fail_psst " $func " \
295
304
' List delimiter must be single character'
296
305
297
- ! [ " $del " = " $NL_CHAR_PSST " ] \
298
- || assert_func_fail_psst " $func " \
306
+ case $del in
307
+ \\ ) del=\\\\ ;;
308
+ \" ) del=' \"' ;;
309
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
299
310
' List delimiter must not be newline'
311
+ esac
300
312
fi
301
313
302
314
[ ${# list} -eq 0 ] && return 2
@@ -358,9 +370,12 @@ list_get_psst()
358
370
|| assert_func_fail_psst " $func " \
359
371
' List delimiter must be single character'
360
372
361
- ! [ " $del " = " $NL_CHAR_PSST " ] \
362
- || assert_func_fail_psst " $func " \
373
+ case $del in
374
+ \\ ) del=\\\\ ;;
375
+ \" ) del=' \"' ;;
376
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
363
377
' List delimiter must not be newline'
378
+ esac
364
379
fi
365
380
366
381
case $list in
@@ -422,9 +437,12 @@ list_remove_first_psst()
422
437
|| assert_func_fail_psst " $func " \
423
438
' List delimiter must be single character'
424
439
425
- ! [ " $del " = " $NL_CHAR_PSST " ] \
426
- || assert_func_fail_psst " $func " \
440
+ case $del in
441
+ \\ ) del=\\\\ ;;
442
+ \" ) del=' \"' ;;
443
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
427
444
' List delimiter must not be newline'
445
+ esac
428
446
fi
429
447
430
448
case $list in
@@ -482,9 +500,12 @@ list_remove_last_psst()
482
500
|| assert_func_fail_psst " $func " \
483
501
' List delimiter must be single character'
484
502
485
- ! [ " $del " = " $NL_CHAR_PSST " ] \
486
- || assert_func_fail_psst " $func " \
503
+ case $del in
504
+ \\ ) del=\\\\ ;;
505
+ \" ) del=' \"' ;;
506
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
487
507
' List delimiter must not be newline'
508
+ esac
488
509
fi
489
510
490
511
case $list in
@@ -547,9 +568,12 @@ list_remove_psst()
547
568
|| assert_func_fail_psst " $func " \
548
569
' List delimiter must be single character'
549
570
550
- ! [ " $del " = " $NL_CHAR_PSST " ] \
551
- || assert_func_fail_psst " $func " \
571
+ case $del in
572
+ \\ ) del=\\\\ ;;
573
+ \" ) del=' \"' ;;
574
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
552
575
' List delimiter must not be newline'
576
+ esac
553
577
fi
554
578
555
579
case $list in
@@ -617,9 +641,12 @@ list_remove_value_psst()
617
641
|| assert_func_fail_psst " $func " \
618
642
' List delimiter must be single character'
619
643
620
- ! [ " $del " = " $NL_CHAR_PSST " ] \
621
- || assert_func_fail_psst " $func " \
644
+ case $del in
645
+ \\ ) del=\\\\ ;;
646
+ \" ) del=' \"' ;;
647
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
622
648
' List delimiter must not be newline'
649
+ esac
623
650
fi
624
651
625
652
case $list in
@@ -628,6 +655,8 @@ list_remove_value_psst()
628
655
' Argument "list" is not a valid list'
629
656
esac
630
657
658
+ value=$( esc_cstring_psst " $value " )
659
+
631
660
# shellcheck disable=SC2016
632
661
awkProg='
633
662
BEGIN { RS = "' $del ' "; FS = "" }
@@ -683,9 +712,12 @@ list_remove_all_values_psst()
683
712
|| assert_func_fail_psst " $func " \
684
713
' List delimiter must be single character'
685
714
686
- ! [ " $del " = " $NL_CHAR_PSST " ] \
687
- || assert_func_fail_psst " $func " \
715
+ case $del in
716
+ \\ ) del=\\\\ ;;
717
+ \" ) del=' \"' ;;
718
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
688
719
' List delimiter must not be newline'
720
+ esac
689
721
fi
690
722
691
723
case $list in
@@ -694,6 +726,8 @@ list_remove_all_values_psst()
694
726
' Argument "list" is not a valid list'
695
727
esac
696
728
729
+ value=$( esc_cstring_psst " $value " )
730
+
697
731
# shellcheck disable=SC2016
698
732
awkProg='
699
733
BEGIN { RS = "' $del ' "; FS = "" }
@@ -746,9 +780,12 @@ list_select_psst()
746
780
|| assert_func_fail_psst " $func " \
747
781
' List delimiter must be single character'
748
782
749
- ! [ " $del " = " $NL_CHAR_PSST " ] \
750
- || assert_func_fail_psst " $func " \
783
+ case $del in
784
+ \\ ) del=\\\\ ;;
785
+ \" ) del=' \"' ;;
786
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
751
787
' List delimiter must not be newline'
788
+ esac
752
789
fi
753
790
754
791
case $list in
@@ -763,6 +800,8 @@ list_select_psst()
763
800
' Argument "filter" is not a valid regex'
764
801
esac
765
802
803
+ filter=$( esc_cstring_psst " $filter " )
804
+
766
805
# shellcheck disable=SC2016
767
806
awkProg='
768
807
BEGIN { RS = "' $del ' "; FS = "" }
@@ -812,9 +851,12 @@ list_filter_psst()
812
851
|| assert_func_fail_psst " $func " \
813
852
' List delimiter must be single character'
814
853
815
- ! [ " $del " = " $NL_CHAR_PSST " ] \
816
- || assert_func_fail_psst " $func " \
854
+ case $del in
855
+ \\ ) del=\\\\ ;;
856
+ \" ) del=' \"' ;;
857
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
817
858
' List delimiter must not be newline'
859
+ esac
818
860
fi
819
861
820
862
case $list in
@@ -829,6 +871,8 @@ list_filter_psst()
829
871
' Argument "filter" is not a valid regex'
830
872
esac
831
873
874
+ filter=$( esc_cstring_psst " $filter " )
875
+
832
876
# shellcheck disable=SC2016
833
877
awkProg='
834
878
BEGIN { RS = "' $del ' "; FS = "" }
@@ -877,9 +921,12 @@ list_find_psst()
877
921
|| assert_func_fail_psst " $func " \
878
922
' List delimiter must be single character'
879
923
880
- ! [ " $del " = " $NL_CHAR_PSST " ] \
881
- || assert_func_fail_psst " $func " \
924
+ case $del in
925
+ \\ ) del=\\\\ ;;
926
+ \" ) del=' \"' ;;
927
+ " $NL_CHAR_PSST " ) assert_func_fail_psst " $func " \
882
928
' List delimiter must not be newline'
929
+ esac
883
930
fi
884
931
885
932
case $list in
@@ -894,6 +941,8 @@ list_find_psst()
894
941
' Argument "filter" is not a valid regex'
895
942
esac
896
943
944
+ filter=$( esc_cstring_psst " $filter " )
945
+
897
946
# shellcheck disable=SC2016
898
947
awkProg='
899
948
BEGIN { RS = "' $del ' "; FS = "" }
0 commit comments