pr29_8z(3)
π pr29_8z π
okay bestie, so this one is pr29_8z, and it lives in the libidn manual, section 3 (that's the "C library functions" section, iykyk). it's a lil detective function that sniffs your UTF-8 string and tells you if it's about to get misunderstood by the NFKC girlies. buckle up π
β¨ SYNOPSIS β¨
#include <pr29.h>
int pr29_8z(const char * in);
literally that's it. one include, one function call, no drama. πΈ
π¦ ARGUMENTS π¦
const char * inβ your zero terminated input UTF-8 string, bestie. zero terminated meaning it ends with that lil\0vibe so the function knows when to stop reading. don't forget the terminator, it's giving main character energy and it matters. π
π DESCRIPTION π
so the whole point of this function is a vibe check on your string. it checks the input to see if it may be normalized into different strings by different NFKC implementations, because of an anomaly in the NFKC specifications. like, the spec itself has a lil glitch, and this function exists purely to catch it. not me being obsessed with a spec bug π
Return value: it hands you back a Pr29_rc value, and here's the tea on what each one means:
PR29_SUCCESSβ slay! everything's fine, the input is chill, we move on. β¨PR29_PROBLEMβ uh oh. the input sequence is a "problem sequence", meaning it may be normalized into different strings by different implementations. that's the whole reason this function exists, so if you get this, take it seriously fr fr. π¨PR29_STRINGPREP_ERRORβ something went wrong converting the string from UTF-8 to UCS-4. so like, the string never even made it to the actual check. it's not a normalization problem, it's a "we couldn't even read this" problem. π
lowkey important:PR29_PROBLEMis not the same as an error. it's a legitimate result saying "hey, different NFKC implementations might disagree about this one."PR29_STRINGPREP_ERRORis the actual failure. don't mix them up bestie π
π REPORTING BUGS π
found a bug? spill the tea, don't suffer in silence:
- Report bugs to <help-libidn@gnu.org>.
- General guidelines for reporting bugs: https://www.gnu.org/gethelp/
- GNU Libidn home page: https://www.gnu.org/software/libidn/
π COPYRIGHT π
Copyright Β© 2002-2026 Simon Josefsson.
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.
(yes that means you can share it around, just keep the notice. we love a permissive license moment π«Ά)
π SEE ALSO π
the full documentation for libidn is maintained as a Texinfo manual, and if the info and libidn programs are properly installed at your site, this command:
info libidn
should give you access to the complete manual. if that's not giving, you can also just grab the manual from:
https://www.gnu.org/software/libidn/manual/
okay that's the whole page, bestie. go normalize something responsibly. πβ¨πΈπ¦π
libidn, version 1.44 β mwah, sending you a kiss from the pr29_8z(3) page π
π¦ where this page comes from
- arch rolling: libidn 1.44-1 Β· GPL3 AND LGPL
- epel 10: libidn-devel 1.44-1.el10_3 Β· (LGPL-3.0-or-later OR GPL-2.0-or-later) AND GPL-3.0-or-later AND GFDL-1.3-or-later
- fedora 43: libidn-devel 1.44-1.fc43 Β· (LGPL-3.0-or-later OR GPL-2.0-or-later) AND GPL-3.0-or-later AND GFDL-1.3-or-later
- fedora 43: libidn-devel 1.44-1.fc43 Β· (LGPL-3.0-or-later OR GPL-2.0-or-later) AND GPL-3.0-or-later AND GFDL-1.3-or-later
- fedora 44: libidn-devel 1.44-1.fc44 Β· (LGPL-3.0-or-later OR GPL-2.0-or-later) AND GPL-3.0-or-later AND GFDL-1.3-or-later
- fedora 44: libidn-devel 1.44-1.fc44 Β· (LGPL-3.0-or-later OR GPL-2.0-or-later) AND GPL-3.0-or-later AND GFDL-1.3-or-later
- ubuntu stonking: libidn-dev 1.44-1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms