about summary refs log tree commit diff
path: root/src/legacy
Commit message (Collapse)AuthorAgeFilesLines
* fix error return value for cuseridRich Felker2021-02-131-2/+3
| | | | | | | the historical function was specified to return an empty string in the caller-provided buffer, not a null pointer, to indicate error when the argument is non-null. only when the argument is null should it return a null pointer on error.
* fix misuse of getpwuid_r in cuseridRich Felker2021-02-131-1/+2
| | | | | | getpwuid_r can return 0 but without a result in the case where there was no error but no record exists. in that case cuserid was treating it as success and copying junk out of pw.pw_name to the output buffer.
* cuserid: don't return truncated resultsRich Felker2021-02-131-1/+5
| | | | checking the length also drops the need to pull in snprintf.
* cuserid: support invocation with a null pointer argumentSören Tempel2021-02-131-0/+2
| | | | | | this function was removed from the standard in 2001 but appeared in SUSv2 with an obligation to support calls with a null pointer argument, using a static buffer.
* fix segfault in lutimes when tv argument is NULLÉrico Rolim2020-11-291-5/+7
| | | | | | | calling lutimes with tv=0 is valid if the application wants to set the timestamps to the current time. this commit makes it so the timespec struct is populated with values from tv only if tv != 0 and calls utimensat with times=0 if tv == 0.
* remove spurious inclusion of libc.h for LFS64 ABI aliasesRich Felker2018-09-121-2/+1
| | | | | | the LFS64 macro was not self-documenting and barely saved any characters. simply use weak_alias directly so that it's clear what's being done, and doesn't depend on a header to provide a strange macro.
* reduce spurious inclusion of libc.hRich Felker2018-09-122-2/+0
| | | | | | | | | | | | | | | | | | | | | libc.h was intended to be a header for access to global libc state and related interfaces, but ended up included all over the place because it was the way to get the weak_alias macro. most of the inclusions removed here are places where weak_alias was needed. a few were recently introduced for hidden. some go all the way back to when libc.h defined CANCELPT_BEGIN and _END, and all (wrongly implemented) cancellation points had to include it. remaining spurious users are mostly callers of the LOCK/UNLOCK macros and files that use the LFS64 macro to define the awful *64 aliases. in a few places, new inclusion of libc.h is added because several internal headers no longer implicitly include libc.h. declarations for __lockfile and __unlockfile are moved from libc.h to stdio_impl.h so that the latter does not need libc.h. putting them in libc.h made no sense at all, since the macros in stdio_impl.h are needed to use them correctly anyway.
* remove or make static various unused __-prefixed symbolsRich Felker2018-09-121-1/+1
|
* fix issues from public functions defined without declaration visibleRich Felker2018-09-121-0/+1
| | | | | | | | | | | | | | | | | policy is that all public functions which have a public declaration should be defined in a context where that public declaration is visible, to avoid preventable type mismatches. an audit performed using GCC's -Wmissing-declarations turned up the violations corrected here. in some cases the public header had not been included; in others, a feature test macro needed to make the declaration visible had been omitted. in the case of gethostent and getnetent, the omission seems to have been intentional, as a hack to admit a single stub definition for both functions. this kind of hack is no longer acceptable; it's UB and would not fly with LTO or advanced toolchains. the hack is undone to make exposure of the declarations possible.
* fix one-byte overflow in legacy getpass functionRich Felker2017-03-141-1/+1
| | | | | if the length of the input was equal to the buffer size (128), a fixed value of zero was written one byte past the end of the static buffer.
* getdtablesize: fix returning hard instead of soft rlimitOlivier Brunel2016-08-301-1/+1
| | | | This makes the result consistent with sysconf(_SC_OPEN_MAX).
* add errno setting to stub utmpxname functionRich Felker2016-01-281-0/+2
|
* legacy/utmpx: Add utmp{,x}name stubsKylie McClain2016-01-281-0/+7
|
* fix futimes legacy function with null tv pointerRich Felker2015-05-061-0/+1
| | | | | a null pointer is valid here and indicates that the current time should be used. based on patch by Felix Janda, simplified.
* getloadavg: use sysinfo() instead of /proc/loadavgAlexander Monakov2015-02-251-11/+7
| | | | Based on a patch by Szabolcs Nagy.
* fix multiple issues in legacy function getpassRich Felker2014-07-061-5/+6
| | | | | | | | | | 1. failure to output a newline after the password is read 2. fd leaks via missing FD_CLOEXEC 3. fd leaks via failure-to-close when any of the standard streams are closed at the time of the call 4. wrongful fallback to use of stdin when opening /dev/tty fails 5. wrongful use of stderr rather than /dev/tty for prompt 6. failure to report error reading password
* include cleanups: remove unused headers and add feature test macrosSzabolcs Nagy2013-12-127-4/+8
|
* add legacy getloadavg apiSzabolcs Nagy2013-11-211-0/+18
|
* support configurable page size on mips, powerpc and microblazeSzabolcs Nagy2013-09-152-2/+2
| | | | | | | | | | | | | | | | PAGE_SIZE was hardcoded to 4096, which is historically what most systems use, but on several archs it is a kernel config parameter, user space can only know it at execution time from the aux vector. PAGE_SIZE and PAGESIZE are not defined on archs where page size is a runtime parameter, applications should use sysconf(_SC_PAGE_SIZE) to query it. Internally libc code defines PAGE_SIZE to libc.page_size, which is set to aux[AT_PAGESZ] in __init_libc and early in __dynlink as well. (Note that libc.page_size can be accessed without GOT, ie. before relocations are done) Some fpathconf settings are hardcoded to 4096, these should be actually queried from the filesystem using statfs.
* unbreak vwarn: print ": " before errno messageRich Felker2013-08-211-2/+5
| | | | | patch by Strake. this seems to be a regression caused by fixing the behavior of perror("") to match perror(0) at some point in the past.
* collapse euidaccess to a call to faccessatRich Felker2013-08-031-9/+1
| | | | | | it turns out Linux is buggy for faccessat, just like fchmodat: the kernel does not actually take a flags argument. so we're going to have to emulate it there.
* add legacy euidaccess function and eaccess alias for itRich Felker2013-08-031-0/+18
| | | | this is mainly for ABI compat purposes.
* add legacy function vallocRich Felker2013-08-021-0/+8
| | | | it was already declared in stdlib.h, but not defined anywhere.
* make err.h functions print __prognameRich Felker2013-05-181-0/+4
| | | | | | | patch by Strake. previously is was not feasible to duplicate this functionality of the functions these were modeled on, since argv[0] was not saved at program startup, but now that it's available it's easy to use.
* more close-on-exec fixes, mostly using new "e" flag to fopenRich Felker2012-09-291-1/+1
|
* cleanup src/linux and src/misc trees, etc.Rich Felker2012-09-0713-0/+302
previously, it was pretty much random which one of these trees a given function appeared in. they have now been organized into: src/linux: non-POSIX linux syscalls (possibly shard with other nixen) src/legacy: various obsolete/legacy functions, mostly wrappers src/misc: still mostly uncategorized; some misc POSIX, some nonstd src/crypt: crypt hash functions further cleanup will be done later.