aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mansearch.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2018-11-19 19:27:37 +0000
committerIngo Schwarze <schwarze@openbsd.org>2018-11-19 19:27:37 +0000
commit059327df544eda5a4e78c14f33c6e503ff784296 (patch)
treed42211c87333ebda4b0f38bd6abea7b75995dce9 /mansearch.c
parent6236555172624d1a801353c70f49a37fe242afd4 (diff)
downloadmandoc-059327df544eda5a4e78c14f33c6e503ff784296.tar.gz
mandoc-059327df544eda5a4e78c14f33c6e503ff784296.tar.zst
mandoc-059327df544eda5a4e78c14f33c6e503ff784296.zip
Improve POSIX compliance by making case-insensitive extended
regular expressions the default in man(1) -k searches, also matching what the man-db package used by many Linux distributions does. Originally requested by Wolfram Schneider <wosch at FreeBSD> via Yuri Pankov <yuripv at FreeBSD>. Feedback and OK cheloha@, and no objections when shown on tech@. Thanks to cheloha@ for pointing out that POSIX requires this behaviour and for the suggestion to explicitly say that *extended* regular expressions are used here. While here, unify spelling of case-[in]sensitive, fix a typo, update the EXAMPLES, and add a STANDARDS section.
Diffstat (limited to 'mansearch.c')
-rw-r--r--mansearch.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/mansearch.c b/mansearch.c
index 784c17be..9cfd64a2 100644
--- a/mansearch.c
+++ b/mansearch.c
@@ -1,7 +1,7 @@
-/* $Id: mansearch.c,v 1.77 2017/08/22 17:50:11 schwarze Exp $ */
+/* $Id: mansearch.c,v 1.78 2018/11/19 19:27:37 schwarze Exp $ */
/*
* Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2013-2017 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2013-2018 Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -774,8 +774,9 @@ exprterm(const struct mansearch *search, int argc, char *argv[], int *argi)
cs = 0;
} else if ((val = strpbrk(argv[*argi], "=~")) == NULL) {
e->bits = TYPE_Nm | TYPE_Nd;
- e->match.type = DBM_SUB;
- e->match.str = argv[*argi];
+ e->match.type = DBM_REGEX;
+ val = argv[*argi];
+ cs = 0;
} else {
if (val == argv[*argi])
e->bits = TYPE_Nm | TYPE_Nd;