| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
so make the function void; no functional change.
|
|
|
|
|
|
|
|
|
| |
during the switch from db to sqlite; restore these:
* Warn and skip when directory and file name mismatch.
* Warn and skip when finding special files.
* Warning about "mandocdb.db" is useless, it is always present.
* While here, do not hardcode "mandocdb.db", use MANDOC_DB.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
db to sqlite; they are needed to prevent corruption of the database
when paths containing dot, dotdot, or symlinks are given on the
command line. Also make sure the exit-code is really non-zero on
system errors and use mandoc(1) exit codes.
To make all this simpler,
* Drop the "basedir" argument from almost every function and make it
global because it is really state info used all over the place.
* Move "startdir" and "fd" as local vars into set_basedir() because they
are only used for this one purpose, i.e. to move out of basedir again.
While here,
* Clarify the name of path_arg in the main program; in the -C case,
it is not a dir, and anyway there are lots of different dirs around.
* Include missing <stdio.h> needed for perror().
|
|
|
|
|
|
| |
Consistently use the PATH_MAX since it is specified by POSIX,
while MAXPATHLEN is not.
In preparation for using this at a few more places.
|
|
|
|
|
| |
1) SQL statements were only prepared when creating a new database.
2) We rely heavily on foreign_keys, but never enabled them.
|
|
|
|
|
|
|
|
|
|
| |
As variadic macros are not supported on all architectures,
replace them by a real function. While here,
* choose a more logical order for "dir" and "file" arguments
* choose a more logical order when printing; as a bonus,
a simple sed 's/:.*//' will get you valid file names
* in ofmerge(), skip diagnostic string comparisons
when we don't want warnings anyway
|
|
|
|
| |
(via mansearch), and merge mandocdb.h into mansearch.h (and remove).
|
|
|
|
| |
I can test properly for this feature.
|
|
|
|
|
|
|
|
|
|
| |
This include's espie@'s wholesale src/lib/libc/ohash directory from OpenBSD
into compat_ohash.c (with a single copyright/license notice at the top)
and src/include/ohash.h as compat_ohash.h.
The ohash_int.h part of compat_ohash.c has been changed only in that ohash.h
points to compat_ohash.h.
Added HAVE_OHASH test (test-ohash.c) to Makefile.
In mandocdb.c and mansearch.c, check HAVE_OHASH test for inclusion.
|
|
|
|
|
|
| |
This makes it run about 5x faster.
While here, wrap some sqlite3 statements in #defines to extract errors.
(Really, the warning/error/etc. macros should be functionified.)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
See the tech@ mailing list entries in June 2012 for details, as well as the
discuss@ mailing list entries from March 2012.
Among other changes, this utility now:
1. uses a single sqlite3 database instead of several berkeley dbs
2. stores utf-8 encoded strings
3. using ohash to aggressively hash its contents
4. using fts() instead of manually walking directories
|
|
|
|
|
|
|
|
|
|
| |
default value for the mdoc(7) .Os macro.
Needed for man.cgi on the OpenBSD website.
Problem with man.cgi first noticed by deraadt@;
beck@ and deraadt@ agree with the way to solve the issue.
"Please check them in and I'll look into them later!" kristaps@
|
| |
|
|
|
|
| |
it out here than merge it to OpenBSD. No binary change.
|
|
|
|
|
| |
shebang into a buffer and parsing it that way. This improves on many
cruddy -man manuals in the wild.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
warnings about grokking manpages in their respective directories.
DO NOT, however, import his temporary-file routines (I don't plan on
staying with a recno/btree split) nor the realpath() routines, which
destroy relative path-ness.
Also pull in the lorder bits.
There are some changes I started to make then stopped relating to
reporting errors in the correct directories. I'll clean this up in
subsequent commits.
This puts us more or less on parity with OpenBSD.
|
|
|
|
|
| |
the next section. Also, remove the limit of 72 characters and enforce
this, instead in the apropos frontend.
|
| |
|
|
|
|
| |
const-ify several strings.
|
|
|
|
| |
Requested by deraadt@, ok kristaps@.
|
|
|
|
|
|
|
| |
use pointers to arrays, not pointers to structs. It is now possible
to create databases on sparc64 and use them on i386 and vice versa.
Kristaps@ can't think of anything else that might be required, either.
Put this in now such that we can move on.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Always do all consistency checks; when any one fails, decide whether
to print a message, or skip the file, or both, or none.
While here, do some cleanup as well:
* Bail out on conflicting options.
* Do not crash with -a if there are plain files in the root dir.
* Collect some related variables into structs.
Feedback and OK kristaps@.
|
|
|
|
|
|
|
|
|
| |
This makes mandocdb(8)/apropos(1) work on strict alignment architectures.
Basic way to fix this confirmed by deraadt@ and kettenis@, thanks.
ok kristaps@
This now works on both sparc64 and i386, but note that the binary
database format is still machine-dependent.
|
|
|
|
|
| |
bytes. This cuts down a little in index size and allows for cleaner
extraction of information.
|
|
|
|
|
|
|
| |
prefix. This means that an index in, say, /usr/share/man will point to
man1/foo.1 instead of /usr/share/man/man1/foo.1. Not only does this
save a lot of space, it also allows manual trees to be moved around
without any side effects to the mandocdb(8) databases.
|
|
|
|
|
| |
including various tweaks to the whatis(8) manual;
ok kristaps@
|
|
|
|
|
| |
Before allocating a record for a file,
first make sure we actually want to use the file.
|
|
|
|
|
|
| |
(1) Correctly compare cat vs. man paths.
(2) Compare arch (and section) names case-insensitively.
Problem noticed by kristaps@.
|
|
|
|
|
|
|
| |
* If the first section is empty, use the file name as .Nd.
* No need to check (len > 0) after successful fgetln(3).
* Improve some comments and strip trailing whitespace.
ok kristaps@
|
|
|
|
| |
hyphen-space combo, not the last hyphen as done previously.
|
|
|
|
| |
of catpage entries in the mandoc databases.
|
|
|
|
|
|
| |
(1) put fclose() at the end, as line isn't valid afterward (see fgetln())
(2) clean up loops to be more readable to my old eyes
(3) mandate trailing newline, nul-terminate, and use strrchr
|
|
|
|
| |
but didn't tell anybody about them, so they weren't reused
|
|
|
|
|
| |
realpath() to convert them into absolute paths before putting the
traversed subdirectory filenames into the index.
|
|
|
|
|
|
| |
from Fn, and lift section restrictions from An Cd Er Ev Fn Fo In Pa St Va Vt
by removing 4 handler functions and 50 lines of code.
ok kristaps@
|
|
|
|
| |
when adding support for formatted manual pages.
|
|
|
|
| |
fields are endian-neutral, although the recno(3) key is unknown.
|
|
|
|
| |
and prior commits handle the contained binary fields.
|
|
|
|
|
|
|
|
| |
with byte-swapping. Tested on Mac. Any Linux machines somebody can
test on? Anybody?
While here, note the correct byte-size in mandocdb(8) and also note
field widths and endianness. The btree is now endian-neutral.
|
| |
|
|
|
|
|
|
|
|
| |
btree_read() function. Also, add a forgotten free() for the type of
grokked record.
Then in both mandocdb.c and apropos_db.c, make the "rec" field of the
btree by in network-order.
|
|
|
|
|
|
| |
fixed `-d' perpetually adding the same files. While here, clean up the
code and document it. Remove -vv (complain if you want it back in).
Document the error messages in a DIAGNOSTICS section of mandocdb(8).
|
|
|
|
| |
ok kristaps@
|
|
|
|
|
|
| |
as static global variables, reducing the maze of arguments
passed around among various static functions.
Suggested by kristaps@.
|
|
|
|
|
|
|
|
| |
of the mandoc databases, as suggested by kristaps@.
Given the well-structured code, this is surprisingly simple.
This changes the mandoc.index database format.
Run "sudo mandocdb" to regenerate your databases.
|
|
|
|
|
| |
Coded on the train back from p2k11 in Budapest.
Kristaps has seen the patch and agreed with the direction.
|
|
|
|
|
|
|
|
|
| |
but a few serious things as well:
* -M overrides MANPATH
* -m prepends to the path
* put back database close calls that got lost in mandocdb
* missing sys/types.h in manpath.c, needed for size_t
ok kristaps@
|
|
|
|
|
|
| |
put stuff into the database that man(1) will be able to retrieve.
However, support an option to use all directories and files.
feedback and ok kristaps@
|