On platforms where we can use weak aliases, use
__weak_alias(__errno, __errno_func);
and on platforms where we cannot, just compile the function as
__errno, since on those platforms we cannot make libc thread-safe,
at least using this trick.
Are there any platforms where we cannot do __weak_alias() anymore?
* sl_add(); if realloc() fails return -1 instead of calling err(1,...).
otherwise, return 0.
NOTE: this change resulted in sl_add() changing from returning void to int.
this shouldn't be a problem because a) it returns 0 if ok (aka `void', b)
all invokers of sl_add() in the tree have been changed (mainly code i've
written).
char *
svis(char *dst, int c, int flag, int nextc, const char *extra);
int
strsvis(char *dst, const char *src, int flag, const char *extra);
int
strsvisx(char *dst, const char *src, size_t len, int flag,
const char *extra);
These functions correspond to vis(), strvis(), and strvisx() but have an
additional argument extra, pointing to a NUL terminated list of characters.
These characters will be copied encoded or backslash-escaped into dst. These
functions are useful e. g. to remove the special meaning of certain
characters to shells.
To implement the new functions, vis underwent a major rewrite. Most functions
now use a central macro, SVIS. Performance increase ~ factor 2.
Reviewed by Christos.
descriptors against -1 (as appropriate).
* add actual checks which to detect stuff that would trigger_DIAGASSERT(),
and attempt to return a sane error condition.
* knf some code
* remove some `register' decls.
the first two items result in the addition of code similar to the
following in various functions:
_DIAGASSERT(path != NULL)
#ifdef _DIAGNOSTIC
if (path == NULL) {
errno = EFAULT;
return (-1);
}
#endif
stderr and syslog()s to user.debug. (it does not abort).
XXX: implement a scheme similar to $MALLOC_OPTIONS which gives the
user control over whether to stderr, syslog, abort, do nothing, etc...
* There was an off-by-one error that caused the addition of a NUL or slash in fts_build() to
overwrite other memory.
* After fts_palloc(), we need to reset `cp' so that it points to the new path name buffer;
otherwise the addition of the file name before calling fts_stat() could lose.
Also, fix stupidity in the fts_palloc() interface. We don't want N bytes more than the
current buffer size; we want N bytes more than the current length. Just pass in the new
size, since we can't figure it out easily here.
* When not using FTS_NOCHDIR, fts_accpath == fts_name. fts_padjust should not
try to move fts_accpath in this case.
* Previous entries at the same level also need to be adjusted.
* A bug was introduced in rev 1.8 (HI CHRISTOS!!) that caused the maxlen
comparison to always fail (due to type promotions) when sp->fts_pathlen ==
cur->fts_pathlen -- thus causing memory stompage.
* Implement fpgetsticky() for alpha.
* Direct fpsetsticky() and fp{get,set}mask() into alpha kernel via sysarch(2).
* Define new sysarch(2) stub for above and install and distribute sysarch.h
for alpha. (The fpcr IS user mode r/w, but for reasons beyond the scope
of a commit message kernel calls are needed.) And much kernel Magick is
required before these do anything, but this way programs compiled under
1.4 will DTRT on future snapshots and releases.
than returning NS_UNAVAIL. this means that a -ve uid entry in hesiod
doesn't stop getpwent() in its tracks. it also brings it in line with
how nis_getpw() works as well in this situation.
problem tracked down (with much pain & suffereing) by simonb.
XXX: we currently have no support for -ve uids, and this is painful in
XXX: hetrogenous environment... (this -ve check is enforced in __pwscan())
nsswitch.conf and they contain similar information).
XXX: in the case where the given array is too small and -1 is returned,
the returned ngroups will be too large by a factor of the difference
between the given size and the number of matches. this is not considered
to be a major problem, since it's still going to be a smaller figure than
what the previous (non suppressive) behaviour returned.
source has been exhausted. this allows getgrent() across multiple
sources (e.g, ``group: files nis'') to work correctly. the flags are
reset in setgrent()/endgrent().
(as per similar change in getpwent.c rev 1.42)
XXX: this change means that code that uses getgrent() to obtain a list
of groups will have to do duplicate suppression... getgrouplist()
springs to mind; i'm about to modify that
source has been exhausted. this allows getpwent() across multiple
sources (e.g, ``passwd: files nis'') to work correctly. the flags are
reset in setpassent()/endpwent().
this fixes a bug noted in [lib/7449] by thorpej, and tracked down to
getpwent() as being the culprit by simonb.
.Sh "SEE ALSO"
to:
.Sh SEE ALSO
The doc macros check for the latter (actually just for 'SEE' as the first
argument to .Sh) to set the section header SEE ALSO flag, which modifies
some behaviour (e.g. references done with .Rs/.Re).