ECALLOC(3)
β¨ ECALLOC(3) β¨
okay bestie, we're in section 3 of the manual (library functions, the fun one π
) and today's main character is a whole little squad of wrapper functions: ecalloc, emalloc, eread, erealloc, esetenv, estrdup, and ewrite. they live in the roken library and they are, collectively, the exit-on-failure wrapper functions. yes that's the whole vibe: do the thing, and if the thing fails, we are LEAVING. πͺπ¨
π LIBRARY
the roken library β that's libroken, link it with -lroken π
π¦ SYNOPSIS
#include <roken.h>
void *
ecalloc(size_t number, size_t size);
void *
emalloc(size_t sz);
ssize_t
eread(int fd, void *buf, size_t nbytes);
void *
erealloc(void *ptr, size_t sz);
void
esetenv(const char *var, const char *val, int rewrite);
char *
estrdup(const char *str);
ssize_t
ewrite(int fd, const void *buf, size_t nbytes);
π DESCRIPTION
okay so here's the tea β β these functions do exactly the same thing as their non-e siblings. same energy, same args, same job. the difference? if there's an error, they print a message with errx(3) and then they exit. like, no recovery, no second chances, no "let me handle this gracefully". it's giving we die like legends π
and for eread and ewrite, bestie, that goes for partial data too β not just full-on errors. partial read? partial write? still an exit. the function said "all or nothing" and it MEANT it. π
so when is this actually useful? when your application doesn't need a more advanced failure mode. you know the type β the program where if the malloc fails, everything is over anyway, so why write 40 lines of error handling. lowkey iconic honestly. π«Ά
π SEE ALSO
and that's the whole page, bestie!! this one comes to you from HEIMDAL, dated August 14, 2003 β a certified classic, still slaying π β¨ bye love u, go read your error messages π
π¦ where this page comes from
- alpine 3.22: heimdal-doc 7.8.0-r4 Β· BSD-3-Clause
- alpine 3.23: heimdal-doc 7.8.0-r5 Β· BSD-3-Clause
- alpine 3.24: heimdal-doc 7.8.0-r5 Β· BSD-3-Clause
- debian bookworm: heimdal-dev 7.8.git20221117.28daf24+dfsg-2 Β· BSD-3-Clause
- debian trixie: heimdal-dev 7.8.git20221117.28daf24+dfsg-9+deb13u1 Β· BSD-3-Clause
- epel 10: heimdal-devel 7.8.0-26.el10_2 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- epel 9: heimdal-devel 7.8.0-5.el9 Β· BSD and MIT
- fedora 43: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 43: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-28.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-28.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- nixpkgs unstable: heimdal 7.8.0-unstable-2024-09-10
- ubuntu jammy: heimdal-dev 7.7.0+dfsg-3ubuntu1 Β· BSD-3-Clause
- ubuntu noble: heimdal-dev 7.8.git20221117.28daf24+dfsg-5ubuntu3 Β· BSD-3-Clause
- ubuntu questing: heimdal-dev 7.8.git20221117.28daf24+dfsg-9ubuntu1
- ubuntu resolute: heimdal-dev 7.8.git20221117.28daf24+dfsg-11ubuntu1 Β· BSD-3-Clause
- ubuntu stonking: heimdal-dev 7.8.git20240113.1b4565a+dfsg-2ubuntu1 Β· BSD-3-Clause
- Copyright (c) 2001, 2003 Kungliga Tekniska HΓΆgskolan
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms