• addon functions

    From Hul Tytus@21:1/5 to All on Tue Aug 1 21:21:44 2023
    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Hans-Bernhard_Br=c3=b6ker@21:1/5 to All on Tue Aug 1 23:44:35 2023
    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?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Grant Edwards@21:1/5 to Hul Tytus on Tue Aug 1 22:26:58 2023
    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);


    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Hul Tytus on Wed Aug 2 18:38:08 2023
    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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hul Tytus@21:1/5 to Grant Edwards on Thu Aug 3 16:52:09 2023
    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);


    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)