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?
> 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);
> 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 Grant Edwards●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 Hans-Bernhard Bröker●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 Hul Tytus●August 1, 20232023-08-01
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