I removed the checks which called endmntent() multiple times resp. with a
NULL pointer. Behavior in first case is undefined and latter causes a
segfault (I could not find documentation that this is allowed). Hence,
it does not make sense to test this.
test 'malloc(0)' only, when WANT_MALLOC_ZERO is set
the '%Zu' printf format specifier is bogus (from libc5 ages). I replaced it
with the '%zu' one.
Please note, that this test still fails because it uses glibc specific
features.
removed tests which set a non-C locale. Broken usage of 'strptime()' result
was fixed too. This test should succeed now.
this test was added while working on the '%F/%G' patch and verifies the
isinf() + isnan() functions.
Please see
http://cvs.fedora.redhat.com/viewcvs/rpms/dietlibc/devel/runtests-X.sh?root
=extras&view=markup
for tests which are known to be broken.
It fixes handling of -INF values in __dtostr() too; previously, there
was
| unsigned int i; | if ((i=isinf(d))) return
copystring(buf,maxlen,i>0?"inf":"-inf"); ~~~ which evaluated to true
everytime. The copystring() function worked for 3-letter words only but
not for '-inf'.
The last argument of __dtostr() was changed from a boolean flag to a
bitmask. Bit 0 encodes 'g' or 'f', and bit 1 lower-/uppercase. There
should be probably added some macros for them; for now, these values
are used directly.
Please note that this might affect other applications (liblowfat?) too
which are using __dtostr().
little bit invasive in several aspects:
it modifies the startup code. We need to know the position of the elf-info
auxilary table which is located after 'environ'. We can not use
'environ' directly because it might be modified by the application.
Hence, an additional __elfinfo variable is placed into .bss and filled in
the startup code. Depending on platform, this adds 1-3 instructions and
an additional pointer to .bss.
I tested only the i386 and x86_64 modifications; it would be nice when
people with corresponding hardware would test the other ones. I am
especially uncertain regarding the parisc changes.
The elf-info stuff (which might be interesting e.g. for dynamic linking or
sysconf(_SC_CLK_TCK)) can be enabled without the dynamic pagesize too.
it removes the 'PAGE_SIZE' macro from <sys/shm.h>; this will break
compilation of existing userspace application which are using this
deprecated macro
I added a new internal 'dietpagesize.h' header which defines
| __DIET_PAGE_SIZE | __DIET_PAGE_SHIFT
macros. These return either builtin constants (when WANT_DYN_PAGESIZE is
not selected), or values derived from __libc_getpagesize().
Every usage of PAGE_SIZE in dietlibc code was replaced by these macros.
due to the previous point, the internal 'struct __dirstream' was modified.
I replaced
| getdents64(d->fd,(struct dirent64*)d->buf, sizeof (d->buf)-1);
with
| getdents64(d->fd,(struct dirent64*)d->buf, __DIRSTREAM_BUF_SIZE-1);
literally but I am not sure where the '-1' is coming from. There is one
hunk, where this '-1' is missing so I think the '-1' should be removed
from all calls to getdents64().
changes affect the *alloc() functions too; on x86_64 around 64 bytes where
added to .text of alloc.o
the new testprogramm requires a 'getconf' binary which returns the correct
values for PAGE_SIZE and CLK_TCK
they are now in upstream
- moved files into platform neutral /usr/lib dir (not using %%_lib or
%%_libdir macro)
- added -devel subpackage due to multiarch issues; main package contains
only the 'diet' binary plus some tools while -devel holds all the
header and object files.
- fixed printf regression for '%+04i' style formats
- added %%check and run a testsuite; it does not succeed now so it is for
informational purposes only...