Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: sector = ldiv(offset, SECTOR_SIZE).quot and offset = ldiv(offset, SECTOR_SIZE).rem Anybody know how this is declared or, maybe, defined? Hul

addon functions
Started by ●August 1, 2023
Reply by ●August 1, 20232023-08-01
Am 01.08.2023 um 23:21 schrieb Hul Tytus:> Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: > sector = ldiv(offset, SECTOR_SIZE).quot and > offset = ldiv(offset, SECTOR_SIZE).rem > Anybody know how this is declared or, maybe, defined?Seriously? Does every C compiler you use come without a manual? How else could you possibly find it hard to discover the declaration and semantics of a 33+ years old C standard library function like that?
Reply by ●August 1, 20232023-08-01
On 2023-08-01, Hul Tytus <ht@panix.com> wrote:> Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: > sector = ldiv(offset, SECTOR_SIZE).quot and > offset = ldiv(offset, SECTOR_SIZE).rem > Anybody know how this is declared or, maybe, defined?$ man ldiv ------------------------------------------------------------------------------ div(3) Library Functions Manual div(3) NAME div, ldiv, lldiv, imaxdiv - compute quotient and remainder of an inte‐ ger division LIBRARY Standard C library (libc, -lc) SYNOPSIS #include <stdlib.h> div_t div(int numerator, int denominator); ldiv_t ldiv(long numerator, long denominator); lldiv_t lldiv(long long numerator, long long denominator); #include <inttypes.h> imaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator); [...]
Reply by ●August 2, 20232023-08-02
On 01/08/2023 23:21, Hul Tytus wrote:> Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: > sector = ldiv(offset, SECTOR_SIZE).quot and > offset = ldiv(offset, SECTOR_SIZE).rem > Anybody know how this is declared or, maybe, defined? > > Hul >It's a standard C library function. You can see its definition in the C standards (draft versions of all modern C standards are freely available online). A good reference for C is the "cppreference" site, with the exact page here being: <https://en.cppreference.com/w/c/numeric/math/div> The "div" functions are almost never used these days - any decent compiler will do as good or better when the code is expressed simply as: sector = offset / SECTOR_SIZE; offset = offset % SECTOR_SIZE; But the "div" functions made sense with older and poorer compilers.
Reply by ●August 3, 20232023-08-03
Thanks Grant. I'd never seen those before and assumed they were Lewin's creation. Hul Grant Edwards <invalid@invalid.invalid> wrote:> On 2023-08-01, Hul Tytus <ht@panix.com> wrote: > > Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: > > sector = ldiv(offset, SECTOR_SIZE).quot and > > offset = ldiv(offset, SECTOR_SIZE).rem > > Anybody know how this is declared or, maybe, defined?> $ man ldiv> ------------------------------------------------------------------------------ > div(3) Library Functions Manual div(3)> NAME > div, ldiv, lldiv, imaxdiv - compute quotient and remainder of an inte??? > ger division> LIBRARY > Standard C library (libc, -lc)> SYNOPSIS > #include <stdlib.h>> div_t div(int numerator, int denominator); > ldiv_t ldiv(long numerator, long denominator); > lldiv_t lldiv(long long numerator, long long denominator);> #include <inttypes.h>> imaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator);> [...]
