diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2018-11-19 19:27:37 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2018-11-19 19:27:37 +0000 |
commit | 059327df544eda5a4e78c14f33c6e503ff784296 (patch) | |
tree | d42211c87333ebda4b0f38bd6abea7b75995dce9 /mansearch.c | |
parent | 6236555172624d1a801353c70f49a37fe242afd4 (diff) | |
download | mandoc-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.c | 9 |
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; |