gettextize and autopoint users<aio.h>
<arpa/inet.h>
<assert.h>
<complex.h>
CMPLXCMPLXFCMPLXLcabscabsfcabslcacoscacosfcacoshcacoshfcacoshlcacoslcargcargfcarglcasincasinfcasinhcasinhfcasinhlcasinlcatancatanfcatanhcatanhfcatanhlcatanlccosccosfccoshccoshfccoshlccoslcexpcexpfcexplcimagcimagfcimaglclogclogfcloglconjconjfconjlcpowcpowfcpowlcprojcprojfcprojlcrealcrealfcreallcsincsinfcsinhcsinhfcsinhlcsinlcsqrtcsqrtfcsqrtlctanctanfctanhctanhfctanhlctanl<ctype.h>
isalnumisalnum_lisalphaisalpha_lisblankisblank_liscntrliscntrl_lisdigitisdigit_lisgraphisgraph_lislowerislower_lisprintisprint_lispunctispunct_lisspaceisspace_lisupperisupper_lisxdigitisxdigit_ltolowertolower_ltouppertoupper_l<devctl.h>
<dirent.h>
<dlfcn.h>
<endian.h>
<errno.h>
<fcntl.h>
<fenv.h>
feclearexceptfegetenvfegetexceptflagfegetmodefegetroundfeholdexceptferaiseexceptfesetenvfesetexceptfesetexceptflagfesetmodefesetroundfetestexceptfetestexceptflagfeupdateenv<fmtmsg.h>
<fnmatch.h>
<ftw.h>
<glob.h>
<grp.h>
<iconv.h>
<inttypes.h>
<langinfo.h>
<libgen.h>
<libintl.h>
bind_textdomain_codesetbindtextdomaindcgettextdcgettext_ldcngettextdcngettext_ldgettextdgettext_ldngettextdngettext_lgettextgettext_lngettextngettext_ltextdomain<locale.h>
<math.h>
acosacosfacoshacoshfacoshlacoslacospiacospifacospilasinasinfasinhasinhfasinhlasinlasinpiasinpifasinpilatanatan2atan2fatan2latan2piatan2pifatan2pilatanfatanhatanhfatanhlatanlatanpiatanpifatanpilcanonicalizecanonicalizefcanonicalizelcbrtcbrtfcbrtlceilceilfceillcompoundncompoundnfcompoundnlcopysigncopysignfcopysignlcoscosfcoshcoshfcoshlcoslcospicospifcospildaddlddivldfmaldmulldsqrtldsublerferfcerfcferfclerfferflexpexp10exp10fexp10lexp10m1exp10m1fexp10m1lexp2exp2fexp2lexp2m1exp2m1fexp2m1lexpfexplexpm1expm1fexpm1lfabsfabsffabslfaddfaddlfdimfdimffdimlfdivfdivlffmaffmalfloorfloorffloorlfmafmaffmalfmaxfmaxffmaximumfmaximum_magfmaximum_magffmaximum_maglfmaximum_mag_numfmaximum_mag_numffmaximum_mag_numlfmaximum_numfmaximum_numffmaximum_numlfmaximumffmaximumlfmaxlfmaxmagfmaxmagffmaxmaglfminfminffminimumfminimum_magfminimum_magffminimum_maglfminimum_mag_numfminimum_mag_numffminimum_mag_numlfminimum_numfminimum_numffminimum_numlfminimumffminimumlfminlfminmagfminmagffminmaglfmodfmodffmodlfmulfmullfpclassifyfrexpfrexpffrexplfromfpfromfpffromfplfromfpxfromfpxffromfpxlfsqrtfsqrtlfsubfsublgetpayloadgetpayloadfgetpayloadlhypothypotfhypotlilogbilogbfilogblisfiniteisgreaterisgreaterequalisinfislessislessequalislessgreaterisnanisnormalisunorderedj0j1jnldexpldexpfldexpllgammalgammaflgammalllogbllogbfllogblllrintllrintfllrintlllroundllroundfllroundlloglog10log10flog10llog10p1log10p1flog10p1llog1plog1pflog1pllog2log2flog2llog2p1log2p1flog2p1llogblogbflogbllogflogllogp1logp1flogp1llrintlrintflrintllroundlroundflroundlmath_errhandlingmodfmodffmodflnannanfnanlnearbyintnearbyintfnearbyintlnextafternextafterfnextafterlnextdownnextdownfnextdownlnexttowardnexttowardfnexttowardlnextupnextupfnextuplpowpowfpowlpownpownfpownlpowrpowrfpowrlremainderremainderfremainderlremquoremquofremquolrintrintfrintlrootnrootnfrootnlroundroundevenroundevenfroundevenlroundfroundlrsqrtrsqrtfrsqrtlscalblnscalblnfscalblnlscalbnscalbnfscalbnlsetpayloadsetpayloadfsetpayloadlsetpayloadsigsetpayloadsigfsetpayloadsiglsignbitsigngamsinsinfsinhsinhfsinhlsinlsinpisinpifsinpilsqrtsqrtfsqrtltantanftanhtanhftanhltanltanpitanpiftanpiltgammatgammaftgammaltotalordertotalorderftotalorderltotalordermagtotalordermagftotalordermagltrunctruncftrunclufromfpufromfpfufromfplufromfpxufromfpxfufromfpxly0y1yn<monetary.h>
<mqueue.h>
<ndbm.h>
<net/if.h>
<netdb.h>
endhostentendnetentendprotoentendserventfreeaddrinfogai_strerrorgetaddrinfogethostentgetnameinfogetnetbyaddrgetnetbynamegetnetentgetprotobynamegetprotobynumbergetprotoentgetservbynamegetservbyportgetserventsethostentsetnetentsetprotoentsetservent<netinet/in.h>
<nl_types.h>
<poll.h>
<pthread.h>
pthread_atforkpthread_attr_destroypthread_attr_getdetachstatepthread_attr_getguardsizepthread_attr_getinheritschedpthread_attr_getschedparampthread_attr_getschedpolicypthread_attr_getscopepthread_attr_getstackpthread_attr_getstacksizepthread_attr_initpthread_attr_setdetachstatepthread_attr_setguardsizepthread_attr_setinheritschedpthread_attr_setschedparampthread_attr_setschedpolicypthread_attr_setscopepthread_attr_setstackpthread_attr_setstacksizepthread_barrier_destroypthread_barrier_initpthread_barrier_waitpthread_barrierattr_destroypthread_barrierattr_getpsharedpthread_barrierattr_initpthread_barrierattr_setpsharedpthread_cancelpthread_cleanup_poppthread_cleanup_pushpthread_cond_broadcastpthread_cond_clockwaitpthread_cond_destroypthread_cond_initpthread_cond_signalpthread_cond_timedwaitpthread_cond_waitpthread_condattr_destroypthread_condattr_getclockpthread_condattr_getpsharedpthread_condattr_initpthread_condattr_setclockpthread_condattr_setpsharedpthread_createpthread_detachpthread_equalpthread_exitpthread_getcpuclockidpthread_getschedparampthread_getspecificpthread_joinpthread_key_createpthread_key_deletepthread_mutex_clocklockpthread_mutex_consistentpthread_mutex_destroypthread_mutex_getprioceilingpthread_mutex_initpthread_mutex_lockpthread_mutex_setprioceilingpthread_mutex_timedlockpthread_mutex_trylockpthread_mutex_unlockpthread_mutexattr_destroypthread_mutexattr_getprioceilingpthread_mutexattr_getprotocolpthread_mutexattr_getpsharedpthread_mutexattr_getrobustpthread_mutexattr_gettypepthread_mutexattr_initpthread_mutexattr_setprioceilingpthread_mutexattr_setprotocolpthread_mutexattr_setpsharedpthread_mutexattr_setrobustpthread_mutexattr_settypepthread_oncepthread_rwlock_clockrdlockpthread_rwlock_clockwrlockpthread_rwlock_destroypthread_rwlock_initpthread_rwlock_rdlockpthread_rwlock_timedrdlockpthread_rwlock_timedwrlockpthread_rwlock_tryrdlockpthread_rwlock_trywrlockpthread_rwlock_unlockpthread_rwlock_wrlockpthread_rwlockattr_destroypthread_rwlockattr_getpsharedpthread_rwlockattr_initpthread_rwlockattr_setpsharedpthread_selfpthread_setcancelstatepthread_setcanceltypepthread_setschedparampthread_setschedpriopthread_setspecificpthread_spin_destroypthread_spin_initpthread_spin_lockpthread_spin_trylockpthread_spin_unlockpthread_testcancel<pwd.h>
<regex.h>
<sched.h>
<search.h>
<semaphore.h>
<setjmp.h>
<signal.h>
killkillpgpsiginfopsignalpthread_killpthread_sigmaskraisesig2strsigactionsigaddsetsigaltstacksigdelsetsigemptysetsigfillsetsigismembersignalsigpendingsigprocmasksigqueuesigsuspendsigtimedwaitsigwaitsigwaitinfostr2sig<spawn.h>
posix_spawnposix_spawn_file_actions_addchdirposix_spawn_file_actions_addcloseposix_spawn_file_actions_adddup2posix_spawn_file_actions_addfchdirposix_spawn_file_actions_addopenposix_spawn_file_actions_destroyposix_spawn_file_actions_initposix_spawnattr_destroyposix_spawnattr_getflagsposix_spawnattr_getpgroupposix_spawnattr_getschedparamposix_spawnattr_getschedpolicyposix_spawnattr_getsigdefaultposix_spawnattr_getsigmaskposix_spawnattr_initposix_spawnattr_setflagsposix_spawnattr_setpgroupposix_spawnattr_setschedparamposix_spawnattr_setschedpolicyposix_spawnattr_setsigdefaultposix_spawnattr_setsigmaskposix_spawnp<stdarg.h>
<stdatomic.h>
atomic_compare_exchange_strongatomic_compare_exchange_strong_explicitatomic_compare_exchange_weakatomic_compare_exchange_weak_explicitatomic_exchangeatomic_exchange_explicitatomic_fetch_addatomic_fetch_add_explicitatomic_fetch_andatomic_fetch_and_explicitatomic_fetch_oratomic_fetch_or_explicitatomic_fetch_subatomic_fetch_sub_explicitatomic_fetch_xoratomic_fetch_xor_explicitatomic_flag_clearatomic_flag_clear_explicitatomic_flag_test_and_setatomic_flag_test_and_set_explicitatomic_initatomic_is_lock_freeatomic_loadatomic_load_explicitatomic_signal_fenceatomic_storeatomic_store_explicitatomic_thread_fencekill_dependency<stdbit.h>
stdc_bit_ceilstdc_bit_floorstdc_bit_widthstdc_count_onesstdc_count_zerosstdc_first_leading_onestdc_first_leading_zerostdc_first_trailing_onestdc_first_trailing_zerostdc_has_single_bitstdc_leading_onesstdc_leading_zerosstdc_trailing_onesstdc_trailing_zeros<stdio.h>
asprintfclearerrctermiddprintffclosefdopenfeofferrorfflushfgetcfgetposfgetsfilenoflockfilefmemopenfopenfprintffputcfputsfreadfreopenfscanffseekfseekofsetposftellftelloftrylockfilefunlockfilefwritegetcgetc_unlockedgetchargetchar_unlockedgetdelimgetlineopen_memstreampcloseperrorpopenprintfputcputc_unlockedputcharputchar_unlockedputsremoverenamerenameatrewindscanfsetbufsetvbufsnprintfsprintfsscanfstderrstdinstdouttmpfiletmpnamungetcvasprintfvdprintfvfprintfvfscanfvprintfvscanfvsnprintfvsprintfvsscanf<stdlib.h>
_Exita64labortabsaligned_allocat_quick_exitatexitatofatoiatolatollbsearchcallocdivdrand48erand48exitfreefree_aligned_sizedfree_sizedgetenvgetsuboptgrantptinitstatejrand48l64alabslcong48ldivllabslldivlrand48mallocmblenmbstowcsmbtowcmemalignmentmkdtempmkostempmkstempmrand48nrand48posix_memalignposix_openptptsnameptsname_rputenvqsortqsort_rquick_exitrandrand_rrandomreallocreallocarrayrealpathsecure_getenvseed48setenvsetkeysetstatesrandsrand48srandomstrfromdstrfromfstrfromlstrtodstrtofstrtolstrtoldstrtollstrtoulstrtoullsystemunlockptunsetenvwcstombswctomb<string.h>
memccpymemchrmemcmpmemcpymemmemmemmovememsetmemset_explicitstpcpystpncpystrcatstrchrstrcmpstrcollstrcoll_lstrcpystrcspnstrdupstrerrorstrerror_lstrerror_rstrlcatstrlcpystrlenstrncatstrncmpstrncpystrndupstrnlenstrpbrkstrrchrstrsignalstrspnstrstrstrtokstrtok_rstrxfrmstrxfrm_l<strings.h>
<sys/ipc.h>
<sys/mman.h>
<sys/msg.h>
<sys/resource.h>
<sys/select.h>
<sys/sem.h>
<sys/shm.h>
<sys/socket.h>
acceptaccept4bindconnectgetpeernamegetsocknamegetsockoptlistenrecvrecvfromrecvmsgsendsendmsgsendtosetsockoptshutdownsockatmarksocketsocketpair<sys/stat.h>
<sys/statvfs.h>
<sys/time.h>
<sys/times.h>
<sys/uio.h>
<sys/utsname.h>
<sys/wait.h>
<syslog.h>
<termios.h>
<threads.h>
call_oncecnd_broadcastcnd_destroycnd_initcnd_signalcnd_timedwaitcnd_waitmtx_destroymtx_initmtx_lockmtx_timedlockmtx_trylockmtx_unlockthrd_createthrd_currentthrd_detachthrd_equalthrd_exitthrd_jointhrd_sleepthrd_yieldtss_createtss_deletetss_gettss_set<time.h>
asctimeasctime_rclockclock_getcpuclockidclock_getresclock_gettimeclock_nanosleepclock_settimectimectime_rdaylightdifftimegetdategetdate_errgmtimegmtime_rlocaltimelocaltime_rmktimenanosleepstrftimestrftime_lstrptimetimetimegmtimer_createtimer_deletetimer_getoverruntimer_gettimetimer_settimetimespec_gettimespec_getrestimezonetznametzset<uchar.h>
<unistd.h>
_exit_Forkaccessalarmchdirchowncloseconfstrcryptdupdup2dup3encryptenvironexeclexecleexeclpexecvexecveexecvpfaccessatfchdirfchownfchownatfdatasyncfexecveforkfpathconffsyncftruncategetcwdgetegidgetentropygeteuidgetgidgetgroupsgethostidgethostnamegetlogingetlogin_rgetoptgetpgidgetpgrpgetpidgetppidgetresgidgetresuidgetsidgetuidisattylchownlinklinkatlockflseekniceoptargopterroptindoptoptpathconfpausepipepipe2posix_closepreadpwritereadreadlinkreadlinkatrmdirsetegidseteuidsetgidsetpgidsetregidsetresgidsetresuidsetreuidsetsidsetuidsleepswabsymlinksymlinkatsyncsysconftcgetpgrptcsetpgrptruncatettynamettyname_runlinkunlinkatwrite<utmpx.h>
<wchar.h>
btowcfgetwcfgetwsfputwcfputwsfwidefwprintffwscanfgetwcgetwcharmbrlenmbrtowcmbsinitmbsnrtowcsmbsrtowcsopen_wmemstreamputwcputwcharswprintfswscanfungetwcvfwprintfvfwscanfvswprintfvswscanfvwprintfvwscanfwcpcpywcpncpywcrtombwcscasecmpwcscasecmp_lwcscatwcschrwcscmpwcscollwcscoll_lwcscpywcscspnwcsdupwcsftimewcslcatwcslcpywcslenwcsncasecmpwcsncasecmp_lwcsncatwcsncmpwcsncpywcsnlenwcsnrtombswcspbrkwcsrchrwcsrtombswcsspnwcsstrwcstodwcstofwcstokwcstolwcstoldwcstollwcstoulwcstoullwcswidthwcsxfrmwcsxfrm_lwctobwcwidthwmemchrwmemcmpwmemcpywmemmovewmemsetwprintfwscanf<wctype.h>
iswalnumiswalnum_liswalphaiswalpha_liswblankiswblank_liswcntrliswcntrl_liswctypeiswctype_liswdigitiswdigit_liswgraphiswgraph_liswloweriswlower_liswprintiswprint_liswpunctiswpunct_liswspaceiswspace_liswupperiswupper_liswxdigitiswxdigit_ltowctranstowctrans_ltowlowertowlower_ltowuppertowupper_lwctranswctrans_lwctypewctype_l<wordexp.h>
_longjmp_setjmp_tolower_toupperbcmpbcopybsd_signalbzeroecvtfattachfcvtfdetachftimeftwgcvtgetcontextgethostbyaddrgethostbynamegetitimergetmsggetpmsggetsgettimeofdaygetwdh_errnoindexioctlisasciiisastreammakecontextmktempposix_trace_attr_destroyposix_trace_attr_getclockresposix_trace_attr_getcreatetimeposix_trace_attr_getgenversionposix_trace_attr_getinheritedposix_trace_attr_getlogfullpolicyposix_trace_attr_getlogsizeposix_trace_attr_getmaxdatasizeposix_trace_attr_getmaxsystemeventsizeposix_trace_attr_getmaxusereventsizeposix_trace_attr_getnameposix_trace_attr_getstreamfullpolicyposix_trace_attr_getstreamsizeposix_trace_attr_initposix_trace_attr_setinheritedposix_trace_attr_setlogfullpolicyposix_trace_attr_setlogsizeposix_trace_attr_setmaxdatasizeposix_trace_attr_setnameposix_trace_attr_setstreamfullpolicyposix_trace_attr_setstreamsizeposix_trace_clearposix_trace_closeposix_trace_createposix_trace_create_withlogposix_trace_eventposix_trace_eventid_equalposix_trace_eventid_get_nameposix_trace_eventid_openposix_trace_eventset_addposix_trace_eventset_delposix_trace_eventset_emptyposix_trace_eventset_fillposix_trace_eventset_ismemberposix_trace_eventtypelist_getnext_idposix_trace_eventtypelist_rewindposix_trace_flushposix_trace_get_attrposix_trace_get_filterposix_trace_get_statusposix_trace_getnext_eventposix_trace_openposix_trace_rewindposix_trace_set_filterposix_trace_shutdownposix_trace_startposix_trace_stopposix_trace_timedgetnext_eventposix_trace_trid_eventid_openposix_trace_trygetnext_eventpthread_attr_getstackaddrpthread_attr_setstackaddrpthread_getconcurrencypthread_setconcurrencyputmsgputpmsgrindexscalbsetcontextsetitimersetpgrpsigholdsigignoresiginterruptsigpausesigrelsesigsetswapcontexttempnamtoasciiualarmulimitusleeputimevforkwcswcs<aio.h>
<aliases.h>
<argp.h>
<argz.h>
<arpa/inet.h>
<arpa/nameser.h>
<byteswap.h>
<complex.h>
<ctype.h>
<dirent.h>
<dlfcn.h>
<envz.h>
<err.h>
<errno.h>
<error.h>
<execinfo.h>
<fcntl.h>
<fenv.h>
<fmtmsg.h>
<fstab.h>
<fts.h>
<getopt.h>
<glob.h>
<gnu/libc-version.h>
<grp.h>
<gshadow.h>
<ifaddrs.h>
<inttypes.h>
<link.h>
<malloc.h>
<math.h>
dremdremfdremlfinitefiniteffinitelgammagammafgammalisinffisinflisnanfisnanlj0fj0lj1fj1ljnfjnllgamma_rlgammaf_rlgammal_rmatherrpow10pow10fpow10lscalbfscalblsignificandsignificandfsignificandlsincossincosfsincosly0fy0ly1fy1lynfynl<mcheck.h>
<mntent.h>
<netdb.h>
endnetgrentgethostbyaddr_rgethostbyname2gethostbyname2_rgethostbyname_rgethostent_rgetnetbyaddr_rgetnetbyname_rgetnetent_rgetnetgrentgetnetgrent_rgetprotobyname_rgetprotobynumber_rgetprotoent_rgetservbyname_rgetservbyport_rgetservent_rherrorhstrerrorinnetgrrcmdrcmd_afrexecrexec_afrresvportrresvport_afruserokruserok_afsetnetgrent<netinet/ether.h>
<netinet/in.h>
bindresvportgetipv4sourcefiltergetsourcefilterinet6_option_allocinet6_option_appendinet6_option_findinet6_option_initinet6_option_nextinet6_option_spaceinet6_opt_appendinet6_opt_findinet6_opt_finishinet6_opt_get_valinet6_opt_initinet6_opt_nextinet6_opt_set_valinet6_rth_addinet6_rth_getaddrinet6_rth_initinet6_rth_reverseinet6_rth_segmentsinet6_rth_spacesetipv4sourcefiltersetsourcefilter<obstack.h>
<printf.h>
<pthread.h>
pthread_attr_getaffinity_nppthread_attr_setaffinity_nppthread_attr_getsigmask_nppthread_attr_setsigmask_nppthread_clockjoin_nppthread_getaffinity_nppthread_getattr_default_nppthread_getattr_nppthread_getname_nppthread_gettid_nppthread_kill_other_threads_nppthread_rwlockattr_getkind_nppthread_rwlockattr_setkind_nppthread_setaffinity_nppthread_setattr_default_nppthread_setname_nppthread_sigqueuepthread_timedjoin_nppthread_tryjoin_np<pty.h>
<pwd.h>
<regex.h>
<regexp.h>
<resolv.h>
dn_compdn_expanddn_skipnameres_dnokres_hnokres_initres_mailokres_mkqueryres_nmkqueryres_nqueryres_nquerydomainres_nsearchres_nsendres_ownokres_queryres_querydomainres_searchres_send<rpc/auth.h>
authdes_createauthdes_pk_createauthnone_createauthunix_createauthunix_create_defaultgetnetnamehost2netnamekey_decryptsessionkey_decryptsession_pkkey_encryptsessionkey_encryptsession_pkkey_gendeskey_get_convkey_secretkey_is_setkey_setsecretnetname2hostnetname2useruser2netnamexdr_des_blockxdr_opaque_auth<rpc/auth_des.h>
<rpc/auth_unix.h>
<rpc/clnt.h>
callrpcclnt_createclnt_pcreateerrorclnt_perrnoclnt_perrorclnt_spcreateerrorclnt_sperrnoclnt_sperrorclntraw_createclnttcp_createclntudp_bufcreateclntudp_createclntunix_createget_myaddressgetrpcportrpc_createerr<rpc/key_prot.h>
<rpc/netdb.h>
<rpc/pmap_clnt.h>
<rpc/pmap_prot.h>
<rpc/pmap_rmt.h>
<rpc/rpc_msg.h>
<rpc/svc.h>
svc_exitsvc_fdsetsvc_getreqsvc_getreq_commonsvc_getreq_pollsvc_getreqsetsvc_max_pollfdsvc_pollfdsvc_registersvc_runsvc_sendreplysvc_unregistersvcerr_authsvcerr_decodesvcerr_noprocsvcerr_noprogsvcerr_progverssvcerr_systemerrsvcerr_weakauthsvcraw_createsvctcp_createsvcudp_bufcreatesvcudp_createsvcunix_createxprt_registerxprt_unregister<rpc/xdr.h>
xdr_arrayxdr_boolxdr_bytesxdr_charxdr_doublexdr_enumxdr_floatxdr_freexdr_hyperxdr_intxdr_int16_txdr_int32_txdr_int64_txdr_int8_txdr_longxdr_longlong_txdr_netobjxdr_opaquexdr_pointerxdr_quad_txdr_referencexdr_shortxdr_sizeofxdr_stringxdr_u_charxdr_u_hyperxdr_u_intxdr_u_longxdr_u_longlong_txdr_u_quad_txdr_u_shortxdr_uint16_txdr_uint32_txdr_uint64_txdr_uint8_txdr_unionxdr_vectorxdr_voidxdr_wrapstringxdrmem_createxdrrec_createxdrrec_endofrecordxdrrec_eofxdrrec_skiprecordxdrstdio_create<rpcsvc/nislib.h>
nis_addnis_add_entrynis_addmembernis_checkpointnis_clone_objectnis_creategroupnis_destroy_objectnis_destroygroupnis_dir_cmpnis_domain_ofnis_domain_of_rnis_first_entrynis_freenamesnis_freeresultnis_freeservlistnis_freetagsnis_getnamesnis_getservlistnis_ismembernis_leaf_ofnis_leaf_of_rnis_lerrornis_listnis_local_directorynis_local_groupnis_local_hostnis_local_principalnis_lookupnis_mkdirnis_modifynis_modify_entrynis_name_ofnis_name_of_rnis_next_entrynis_perrornis_pingnis_print_directorynis_print_entrynis_print_groupnis_print_group_entrynis_print_linknis_print_objectnis_print_resultnis_print_rightsnis_print_tablenis_removenis_remove_entrynis_removemembernis_rmdirnis_servstatenis_sperrnonis_sperrornis_sperror_rnis_statsnis_verifygroup<rpcsvc/nis_callback.h>
<rpcsvc/yp.h>
xdr_domainnamexdr_keydatxdr_valdatxdr_ypbind_resptypexdr_ypmap_parmsxdr_ypmaplistxdr_yppushresp_xfrxdr_ypreq_keyxdr_ypreq_nokeyxdr_ypreq_xfrxdr_ypresp_allxdr_ypresp_key_valxdr_ypresp_maplistxdr_ypresp_masterxdr_ypresp_orderxdr_ypresp_valxdr_ypresp_xfrxdr_ypstatxdr_ypxfrstat<rpcsvc/ypclnt.h>
<sched.h>
<search.h>
<selinux/selinux.h>
<shadow.h>
<signal.h>
<spawn.h>
pidfd_spawnpidfd_spawnpposix_spawn_file_actions_addchdir_npposix_spawn_file_actions_addclosefrom_npposix_spawn_file_actions_addfchdir_npposix_spawn_file_actions_addtcsetpgrp_npposix_spawnattr_getcgroup_npposix_spawnattr_setcgroup_np<stdio.h>
cuseridclearerr_unlockedfcloseallfeof_unlockedferror_unlockedfflush_unlockedfgetc_unlockedfgets_unlockedfileno_unlockedfopencookiefputc_unlockedfputs_unlockedfread_unlockedfwrite_unlockedgetwputwrenameat2setbuffersetlinebufsys_errlistsys_nerrtmpnam_r<stdlib.h>
arc4randomarc4random_bufarc4random_uniformcanonicalize_file_namecfreeclearenvdrand48_recvt_rerand48_rfcvt_rgetloadavggetptinitstate_rjrand48_rlcong48_rlrand48_rmkostempsmkstempsmrand48_rnrand48_ron_exitqecvtqecvt_rqfcvtqfcvt_rqgcvtrandom_rrpmatchseed48_rsetstate_rsrand48_rsrandom_rstrtod_lstrtof_lstrtol_lstrtold_lstrtoll_lstrtoqstrtoul_lstrtoull_lstrtouquabsulabsullabsvalloc<string.h>
<sys/auxv.h>
<sys/capability.h>
<sys/epoll.h>
<sys/eventfd.h>
<sys/fanotify.h>
<sys/file.h>
<sys/fsuid.h>
<sys/gmon.h>
<sys/inotify.h>
<sys/io.h>, <sys/perm.h>
<sys/kdaemon.h>
<sys/klog.h>
<sys/mman.h>
<sys/mount.h>
<sys/personality.h>
<sys/pidfd.h>
<sys/prctl.h>
<sys/profil.h>
<sys/ptrace.h>
<sys/quota.h>
<sys/random.h>
<sys/reboot.h>
<sys/resource.h>
<sys/sem.h>
<sys/sendfile.h>
<sys/signalfd.h>
<sys/single_threaded.h>
<sys/socket.h>
<sys/stat.h>
<sys/statfs.h>
<sys/swap.h>
<sys/sysctl.h>
<sys/sysinfo.h>
<sys/syslog.h>
<sys/sysmacros.h>
<sys/time.h>
<sys/timerfd.h>
<sys/timex.h>
<sys/uio.h>
<sys/ustat.h>
<sys/vlimit.h>
<sys/wait.h>
<sys/xattr.h>
<termios.h>
<time.h>
<ttyent.h>
<unistd.h>
acctbrkchrootclosefromclose_rangecopy_file_rangedaemoneaccessendusershelleuidaccessexecveatexecvpeget_current_dir_namegetdomainnamegetdtablesizegetpagesizegetpassgettidgetusershellgroup_memberprofilrevokesbrksetloginsetdomainnamesethostidsethostnamesetusershellsyncfssyscallttyslotvhangup<utmp.h>
<utmpx.h>
<wchar.h>
fgetwc_unlockedfgetws_unlockedfputwc_unlockedfputws_unlockedgetwc_unlockedgetwchar_unlockedputwc_unlockedputwchar_unlockedwcschrnulwcsftime_lwcstod_lwcstof_lwcstol_lwcstold_lwcstoll_lwcstoqwcstoul_lwcstoull_lwcstouqwmempcpy.)| or \|)[ … ] and [^ … ])
( … ) or \( … \))Next: Brief Overview [Contents][Index]
This manual is for GNU Gnulib (updated 2026-03-23 11:01:41), which is a library of common routines intended to be shared at the source level.
Copyright © 2004–2026 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.
| • Brief Overview | ||
| • Philosophy | ||
| • Invoking gnulib-tool | ||
| • Writing modules | ||
| • Extending Gnulib | ||
| • Miscellaneous Notes | ||
| • POSIX Substitutes Library | Building as a separate substitutes library. | |
| • Keyword Substitutes | Replacing language keywords. | |
| • Header File Substitutes | Overriding system headers. | |
| • Function Substitutes | Replacing system functions. | |
| • Legacy Function Substitutes | Replacing system functions. | |
| • Glibc Header File Substitutes | Overriding system headers. | |
| • Glibc Function Substitutes | Replacing system functions. | |
| • Native Windows Support | Support for the native Windows platforms. | |
| • Multithreading | Multiple threads of execution. | |
| • Strings and Characters | Functions for strings and characters. | |
| • Particular Modules | Documentation of individual modules. | |
| • Regular expressions | The regex module. | |
| • Build Infrastructure Modules | Modules that extend the GNU Build System. | |
| • Build Infrastructure Files | Non-modules files for the build system. | |
| • Release Management Files | Non-modules files for preparing releases. | |
| • GNU Free Documentation License | Copying and sharing this manual. | |
| • Gnulib history | ||
| • Module Index | ||
| • Undocumented Module Index | ||
| • Index |
Next: Philosophy, Previous: Top, Up: Top [Contents][Index]
Gnulib is a source code library that provides basic functionality to programs and libraries. Many software packages make use of Gnulib to avoid reinventing the portability wheel.
Resources:
| • Gnulib Basics | ||
| • Git Checkout | ||
| • Keeping Up-to-date | ||
| • Contributing to Gnulib | ||
| • Portability guidelines | ||
| • High Quality | ||
| • Joining GNU |
Next: Git Checkout, Up: Brief Overview [Contents][Index]
While portability across operating systems is not one of GNU’s primary goals, it has helped introduce many people to the GNU system, and is worthwhile when it can be achieved at a low cost. This collection helps lower that cost.
Gnulib is intended to be the canonical source for most of the important “portability” and/or common files for GNU projects. These are files intended to be shared at the source level; Gnulib is not a typical library meant to be installed and linked against. Thus, unlike most projects, Gnulib does not normally generate a source tarball distribution; instead, developers grab modules directly from the source repository.
The easiest, and recommended, way to do this is to use the
gnulib-tool script. Since there is no installation
procedure for Gnulib, gnulib-tool needs to be run directly
in the directory that contains the Gnulib source code. You can do
this either by specifying the absolute filename of
gnulib-tool, or by using a symbolic link from a place inside
your PATH to the gnulib-tool file of your preferred
Gnulib checkout. For example:
$ ln -s $HOME/gnu/src/gnulib.git/gnulib-tool $HOME/bin/gnulib-tool
Next: Keeping Up-to-date, Previous: Gnulib Basics, Up: Brief Overview [Contents][Index]
Gnulib is available for anonymous checkout. In any Bourne-shell the following should work:
$ git clone https://git.savannah.gnu.org/git/gnulib.git
For a read-write checkout you need to have a login on ‘savannah.gnu.org’ and be a member of the Gnulib project at https://savannah.gnu.org/projects/gnulib. Then, instead of the URL https://git.savannah.gnu.org/git/gnulib.git, use the URL ‘ssh://user@git.savannah.gnu.org/srv/git/gnulib’ where user is your login name on savannah.gnu.org.
git resources:
When you use git annotate or git blame with Gnulib, it’s
recommended that you use the -w option, in order to ignore
massive whitespace changes that happened in 2009.
Next: Contributing to Gnulib, Previous: Git Checkout, Up: Brief Overview [Contents][Index]
The best way to work with Gnulib is to check it out of git.
To synchronize, you can use git pull.
Subscribing to the bug-gnulib@gnu.org mailing list will help you to plan when to update your local copy of Gnulib (which you use to maintain your software) from git. You can review the archives, subscribe, etc., via https://lists.gnu.org/mailman/listinfo/bug-gnulib.
Sometimes, using an updated version of Gnulib will require you to use newer versions of GNU Automake or Autoconf. You may find it helpful to join the autotools-announce mailing list to be advised of such changes.
Next: Portability guidelines, Previous: Keeping Up-to-date, Up: Brief Overview [Contents][Index]
All software here is copyrighted by the Free Software Foundation—you need to have filled out an assignment form for a project that uses the module for that contribution to be accepted here.
If you have a piece of code that you would like to contribute, please email bug-gnulib@gnu.org.
Generally we are looking for files that fulfill at least one of the following requirements:
If your functions define completely new but rarely used functionality, you should probably consider packaging it as a separate library.
| • Gnulib licensing | ||
| • Indent with spaces not TABs | ||
| • How to add a new module |
Next: Indent with spaces not TABs, Up: Contributing to Gnulib [Contents][Index]
Gnulib contains code both under GPL and LGPL. Because several packages that use Gnulib are GPL, the files state they are licensed under GPL. However, to support LGPL projects as well, you may use some of the files under LGPL. The “License:” information in the files under modules/ clarifies the real license that applies to the module source.
Keep in mind that if you submit patches to files in Gnulib, you should license them under a compatible license, which means that sometimes the contribution will have to be LGPL, if the original file is available under LGPL via a “License: LGPL” information in the projects’ modules/ file.
Next: How to add a new module, Previous: Gnulib licensing, Up: Contributing to Gnulib [Contents][Index]
We use space-only indentation in nearly all files. This includes all
*.h, *.c, *.y files, except for the regex
module. Makefile and ChangeLog files are excluded, since TAB
characters are part of their format.
In order to tell your editor to produce space-only indentation, you can use these instructions.
;; In Gnulib, indent with spaces everywhere (not TABs).
;; Exceptions: Makefile and ChangeLog modes.
(add-hook 'find-file-hook '(lambda ()
(if (and buffer-file-name
(string-match "/gnulib\\>" (buffer-file-name))
(not (string-equal mode-name "Change Log"))
(not (string-equal mode-name "Makefile")))
(setq indent-tabs-mode nil))))
" Don't use tabs for indentation. Spaces are nicer to work with. set expandtab
For Makefile and ChangeLog files, compensate for this by adding this to your $HOME/.vim/after/indent/make.vim file, and similarly for your $HOME/.vim/after/indent/changelog.vim file:
" Use tabs for indentation, regardless of the global setting. set noexpandtab
If you use the GNU indent program, pass it the option --no-tabs.
Previous: Indent with spaces not TABs, Up: Contributing to Gnulib [Contents][Index]
You can test that a module builds correctly with:
$ ./gnulib-tool --create-testdir --dir=/tmp/testdir module1 ... moduleN $ cd /tmp/testdir $ ./configure && make
Other things:
alloca and fnmatch modules for how to achieve this. If
for some reason you cannot do this, and you have a .c file that
leads to an empty .o file on some platforms (through some big
#if around all the code), then ensure that the compilation unit
is not empty after preprocessing. One way to do this is to
#include <stddef.h> or <stdio.h> before the big
#if.
Next: High Quality, Previous: Contributing to Gnulib, Up: Brief Overview [Contents][Index]
Gnulib code is intended to be portable to a wide variety of platforms, not just GNU platforms. Gnulib typically attempts to support a platform as long as it is still supported by its provider, even if the platform is not the latest version. See Target Platforms.
Many Gnulib modules exist so that applications need not worry about
undesirable variability in implementations. For example, an
application that uses the malloc module need not worry about
malloc (0) returning a null pointer on some Standard C
platforms; and glob users need not worry about glob
silently omitting symbolic links to nonexistent files on some
platforms that do not conform to POSIX.
Gnulib code is intended to port without problem to new hosts, e.g.,
hosts conforming to recent C and POSIX standards. Hence Gnulib code
should avoid using constructs that these newer standards no longer
require, without first testing for the presence of these constructs.
For example, because C11 made variable length arrays optional, Gnulib
code should avoid them unless it first uses the vararrays
module to check whether they are supported.
The following subsections discuss some exceptions and caveats to the general Gnulib portability guidelines.
| • C language versions | ||
| • C99 features assumed | ||
| • C99 features avoided | ||
| • Other portability assumptions |
Next: C99 features assumed, Up: Portability guidelines [Contents][Index]
Currently Gnulib assumes at least a freestanding C99 compiler, possibly operating with a C library that predates C99; with time this assumption will likely be strengthened to later versions of the C standard. Old platforms currently supported include AIX 7.3 and Solaris 10, though these platforms are rarely tested. Gnulib itself is so old that it contains many fixes for obsolete platforms, fixes that may be removed in the future.
Because of the freestanding C99 assumption, Gnulib code can include
<float.h>, <limits.h>, <stdarg.h>,
<stddef.h>, and <stdint.h>
unconditionally; <stdbool.h> is also in the C99 freestanding
list but is obsolescent as of C23. Gnulib code can also assume the existence
of <ctype.h>, <errno.h>, <fcntl.h>,
<locale.h>, <signal.h>, <stdio.h>,
<stdlib.h>, <string.h>, and <time.h>. Similarly,
many modules include <sys/types.h> even though it’s not
in the C standard; that’s OK since <sys/types.h> has been around
since Seventh Edition Unix (1979).
Even if the include files exist, they may not conform to the C standard.
However, GCC has a fixincludes script that attempts to fix most
conformance problems. Gnulib currently assumes include files
largely conform to C99 or better. People still using ancient hosts
should use fixincludes or fix their include files manually.
Even if the include files conform, the library itself may not.
For example, strtod and mktime have some bugs on some platforms.
You can work around some of these problems by requiring the relevant
modules, e.g., the Gnulib mktime module supplies a working and
conforming mktime.
Next: C99 features avoided, Previous: C language versions, Up: Portability guidelines [Contents][Index]
Although the C99 standard specifies many features, Gnulib code is conservative about using them, partly because Gnulib predates the widespread adoption of C99, and partly because many C99 features are not well-supported in practice. C99 features that are reasonably portable nowadays include:
for statement.
long long int.
<stdbool.h>,
although Gnulib code no longer uses
it directly, preferring plain bool via the
bool module instead.
See stdbool.h.
<stdint.h>,
assuming the stdint-h module is used.
See stdint.h.
__VA_ARGS__ in MSVC differs from the one
in ISO C 99, see https://stackoverflow.com/questions/5134523/.
But usually this matters only for macros that decompose __VA_ARGS__.
static inline functions.
__func__, assuming the func module is used. See func.
restrict qualifier, assuming
AC_REQUIRE([AC_C_RESTRICT]) is used.
This qualifier is sometimes implemented via a macro, so C++ code that
uses Gnulib should avoid using restrict as an identifier.
flexmember module).
Next: Other portability assumptions, Previous: C99 features assumed, Up: Portability guidelines [Contents][Index]
Gnulib avoids some features even though they are standardized by C99, as they have portability problems in practice. Here is a partial list of avoided C99 features. Many other C99 features are portable only if their corresponding modules are used; Gnulib code that uses such a feature should require the corresponding module.
__STDC_NO_VLA__ is defined.
See the vararrays and vla modules.
GNULIB_NO_VLA or __STDC_NO_VLA__ is defined.
This lets you define GNULIB_NO_VLA to pacify GCC when
using its -Wvla-larger-than warnings option,
and to avoid large stack usage that may have security implications.
GNULIB_NO_VLA does not affect Gnulib’s other uses of VLAs and
variably modified types, such as array declarations in function
prototype scope.
intptr_t or
uintptr_t. Although the C standard says that values of these
integer types, if they exist, should be convertible to and from
intmax_t and uintmax_t without loss of information, on
CHERI platforms such conversions result in integers that, if converted
back to a pointer, cannot be dereferenced.
extern inline functions, without checking whether they are
supported. See extern inline.
<iso646.h>, since GNU programs need not worry about deficient
source-code encodings.
Previous: C99 features avoided, Up: Portability guidelines [Contents][Index]
Gnulib code makes the following assumptions that go beyond what C and POSIX require:
ptrdiff_t and size_t are no
wider than long. The GNU coding standards allow code to make
this assumption, POSIX requires implementations to support at
least one programming environment where this is true, and such
environments are recommended for Gnulib-using applications. When it
is easy to port to non-POSIX platforms like MinGW where these types
are wider than long, new Gnulib code should do so, e.g., by
using ptrdiff_t instead of long. However, it is not
always that easy, and no effort has been made to check that all Gnulib
modules work on MinGW-like environments.
int and unsigned int are at least 32 bits wide. POSIX
and the GNU coding standards both require this.
Previously, Gnulib code sometimes also assumed that signed integer arithmetic wraps around, but modern compiler optimizations sometimes do not guarantee this, and Gnulib code with this assumption is now considered to be questionable. See Integer Properties.
Although some Gnulib modules contain explicit support for ones’ complement and signed magnitude integer representations, which are allowed by C17 and earlier, these modules are the exception rather than the rule. All practical Gnulib targets use two’s complement, which is required by C23.
memset (A, 0, sizeof A) initializes an array
A of pointers to null pointers.
intptr_t and uintptr_t exist, and pointers
can be converted to and from these types without loss of information.
ptrdiff_t or size_t values, then S + T
cannot overflow.
(char *) &O <= (char *) P && (char *) P <
(char *) (&O + 1).
uintptr_t, except that offsets are
multiplied by the size of the pointed-to objects.
For example, if P + I is a valid expression
involving a pointer P and an integer I, then
(uintptr_t) (P + I) == (uintptr_t) ((uintptr_t)
P + I * sizeof *P).
Similar arithmetic can be done with intptr_t, although more
care must be taken in case of integer overflow or negative integers.
(uintptr_t) P % A is zero, and similarly for intptr_t.
Although C23 says that portable code should instead test whether
memalignment (P) % A is zero, memalignment is
missing in many non-C23 systems, is not specified to work portably on
pointers to atomic or volatile memory, and is likely a bit slower than
the cast.
S + T cannot overflow.
Overflow in this case would mean that the rest of your program fits
into T bytes, which can’t happen in realistic flat-address-space
hosts.
0 + (char *) NULL == (char *) NULL.
Similarly, subtracting zero does not change a null pointer,
and subtracting two null pointers results in zero.
C23 was the first C standard to require this behavior; see
“Allow zero length operations on null pointers”, WG14 N3322 (2024-08-28);
which was adopted retroactively for C23.
Some system platforms violate these assumptions and are therefore not Gnulib porting targets. See Unsupported Platforms.
Next: Joining GNU, Previous: Portability guidelines, Up: Brief Overview [Contents][Index]
We develop and maintain a testsuite for Gnulib. The goal is to have a 100% firm interface so that maintainers can feel free to update to the code in git at any time and know that their application will not break. This means that before any change can be committed to the repository, a test suite program must be produced that exposes the bug for regression testing.
| • Stable Branches | ||
| • Writing reliable code |
Next: Writing reliable code, Up: High Quality [Contents][Index]
In Gnulib, we don’t use topic branches for experimental work. Therefore, occasionally a broken commit may be pushed in Gnulib. It does not happen often, but it does happen.
To compensate for this, Gnulib offers “stable branches”. These are branches of the Gnulib code that are maintained over some longer period (a year, for example) and include
config.guess and config.sub.
Not included in the stable branches are:
texinfo.tex,
So far, we have eight stable branches:
stable-202507A stable branch that starts at the beginning of July 2025.
stable-202501A stable branch that starts at the beginning of January 2025.
stable-202407A stable branch that starts at the beginning of July 2024. It is no longer updated.
stable-202401A stable branch that starts at the beginning of January 2024. It is no longer updated.
stable-202307A stable branch that starts at the beginning of July 2023. It is no longer updated.
stable-202301A stable branch that starts at the beginning of January 2023. It is no longer updated.
stable-202207A stable branch that starts at the beginning of July 2022. It is no longer updated.
stable-202201A stable branch that starts at the beginning of January 2022. It is no longer updated.
The two use-cases of stable branches are thus:
Previous: Stable Branches, Up: High Quality [Contents][Index]
When compiling and testing Gnulib and Gnulib-using programs, certain
compiler options can help improve reliability. First of all, make it
a habit to use ‘-Wall’ in all compilation commands. Beyond that,
the manywarnings module enables several forms of static checking in
GCC and related compilers (see manywarnings).
For dynamic checking, you can run configure with CFLAGS
options appropriate for your compiler. For example:
./configure \ CPPFLAGS='-Wall'\ CFLAGS='-g3 -O2'\ ' -D_FORTIFY_SOURCE=3'\ ' -D_GLIBCXX_ASSERTIONS'\ ' -fsanitize=undefined'\ ' -fsanitize-trap=all'
Here:
-D_FORTIFY_SOURCE=3 and -D_GLIBCXX_ASSERTIONS
enable extra security hardening checks in
the GNU C library and GNU C++ library, respectively.
-fsanitize=undefined enables GCC’s undefined behavior sanitizer
(ubsan), and
-fsanitize-trap=all causes ubsan to
abort the program (through an “illegal instruction” signal). This
measure stops exploit attempts and also allows you to debug the issue.
Without the -fsanitize-trap=all option,
-fsanitize=undefined causes messages to be printed, and
execution continues after an undefined behavior situation.
The message printing causes GCC-like compilers to arrange for the
program to dynamically link to libraries it might not otherwise need.
With GCC, instead of -fsanitize-trap=all you can
use the -static-libubsan option to arrange for two of the extra
libraries (libstdc++ and libubsan) to be linked
statically rather than dynamically, though this typically bloats the
executable and the remaining extra libraries are still linked
dynamically.
It is also good to occasionally run the programs under valgrind
(see Running self-tests under valgrind).
GCC’s -fhardened option can also be used, but with caution
because it is designed for production more than testing, and therefore
enables -ftrivial-auto-var-init=zero which can mask program
errors.
Previous: High Quality, Up: Brief Overview [Contents][Index]
GNU Gnulib is part of the GNU Operating System, developed by the GNU Project.
If you are the author of an awesome program and want to join us in writing Free (libre) Software, please consider making it an official GNU program and become a GNU Maintainer. Instructions on how to do this are here. We are looking forward to hacking with you!
Don’t have a program to contribute? Look at all the other ways to help.
And to learn more about Free (libre) Software in general, please read and share this page.
Next: Invoking gnulib-tool, Previous: Brief Overview, Up: Top [Contents][Index]
Gnulib’s design and development philosophy is organized around steady, collaborative, and open development of reusable modules that are suitable for a reasonably wide variety of platforms.
Next: Library vs Reusable Code, Up: Philosophy [Contents][Index]
Gnulib is useful to enhance various aspects of a package:
asprintf, canonicalize_file_name are not affected
by buffer sizing problems that affect sprintf, realpath.
openat does not have the race conditions that open has. Etc.
xalloc,
xprintf, xstrtod, xgetcwd.
Next: Portability and Application Code, Previous: Benefits, Up: Philosophy [Contents][Index]
Classical libraries are installed as binary object code. Gnulib is
different: It is used as a source code library. Each package that uses
Gnulib thus ships with part of the Gnulib source code. The used portion
of Gnulib is tailored to the package: A build tool, called
gnulib-tool, is provided that copies a tailored subset of Gnulib
into the package.
| • Other source code libraries |
Many programming languages nowadays have
Here is a table of such source code libraries.
| Language | Central site | Download tool |
|---|---|---|
| Python | pypi.org | ‘pip’ |
| Java | mvnrepository.com | ‘maven’, ‘gradle’ |
| C# | nuget.org | ‘nuget’ |
| JavaScript, TypeScript | npmjs.com | ‘npm’, ‘yarn’ |
| Common Lisp | quicklisp.org | ‘ql:quickload’ |
| Emacs Lisp | elpa.gnu.org | ‘M-x package-install’ |
| Rust | crates.io | ‘cargo’ |
| Go | pkg.go.dev | ‘go mod’ |
| Ruby | rubygems.org | ‘gem’ |
| Lua | luarocks.org | ‘luarocks’ |
| OCaml | ocaml.org/packages | ‘opam’ |
| D | code.dlang.org | ‘dub’ |
| Perl | cpan.org | ‘cpan’ |
| PHP | packagist.org | ‘composer’ |
| R | cran.r-project.org | ‘R CMD INSTALL’ |
Most of them are vulnerable to supply chain attacks. These are cyber-attacks to the central site (library) or to one of the packages in the library, with the goal of attacking the packages that use that specific package as a (direct or indirect) dependency.
Examples of such supply chain attacks:
While some mitigations exist, they are often cumbersome to put in place. For example, a developer could set up a partial mirror of the library, where adding a package to the mirror is a manual operation, together with a configuration or modification of the tool that redirects download or installation requests to the mirror.
Gnulib is not vulnerable to such attacks, because all of its code is managed in a single repository, with a limited set of committers and with established code review practices.
Next: Target Platforms, Previous: Library vs Reusable Code, Up: Philosophy [Contents][Index]
One of the goals of Gnulib is to make portable programming easy, on the basis of the standards relevant for GNU (and Unix). The objective behind that is to avoid a fragmentation of the user community into disjoint user communities according to the operating system, and instead allow synergies between users on different operating systems.
Another goal of Gnulib is to provide application code that can be shared between several applications. Some people wonder: "What? glibc doesn’t have a function to copy a file?" Indeed, the scope of a system’s libc is to implement the relevant standards (ISO C, POSIX) and to provide access functions to the kernel’s system calls, and little more.
There is no clear borderline between both areas.
For example, Gnulib has a facility for generating the name of backup files. While this task is entirely at the application level—no standard specifies an API for it—the naïve code has some portability problems because on some platforms the length of file name components is limited to 30 characters or so. Gnulib handles that.
Similarly, Gnulib has a facility for executing a command in a
subprocess. It is at the same time a portability enhancement (it
works on GNU, Unix, and Windows, compared to the classical
fork/exec idiom which is not portable to Windows), as well
as an application aid: it takes care of redirecting stdin and/or
stdout if desired, and emits an error message if the subprocess
failed.
Next: Modules, Previous: Portability and Application Code, Up: Philosophy [Contents][Index]
Gnulib supports a number of platforms that we call the “reasonable portability targets”. This class consists of widespread operating systems, for three years after their last availability, or—for proprietary operating systems—as long as the vendor provides commercial support for it. Already existing Gnulib code for older operating systems is usually left in place for longer than these three years. So it comes that programs that use Gnulib run pretty well also on these older operating systems.
Some operating systems are not very widespread, but are Free Software and are actively developed. Such platforms are also supported by Gnulib, if that OS’s developers community keeps in touch with the Gnulib developers, by providing bug reports, analyses, or patches. For such platforms, Gnulib supports only the versions of the last year or the last few months, depending on the maturity of said OS project, the number of its users, and how often these users upgrade.
Niche operating systems are generally unsupported by Gnulib, unless some of their developers or users contribute support to Gnulib.
The degree of support Gnulib guarantees for a platform depends on the amount of testing it gets from volunteers. Platforms on which Gnulib is frequently tested are the best supported. Then come platforms with occasional testing, then platforms which are rarely tested. Usually, we fix bugs when they are reported. Except that some rarely tested platforms are also low priority; bug fixes for these platforms can take longer.
| • Supported Platforms | ||
| • Formerly Supported Platforms | ||
| • Unsupported Platforms |
Next: Formerly Supported Platforms, Up: Target Platforms [Contents][Index]
As of 2024, the list of supported platforms is the following:
Note that some modules are currently unsupported on native Windows:
mgetgroups, getugroups, idcache,
userspec, openpty, login_tty, forkpty,
pt_chown, grantpt, pty-h, savewd,
mkancesdirs, mkdir-p, euidaccess, faccessat.
The versions of Windows that are supported are Windows 10 and newer.
Next: Unsupported Platforms, Previous: Supported Platforms, Up: Target Platforms [Contents][Index]
The following platforms were supported in the past, but are no longer supported:
Gnulib supports these operating systems only in an unvirtualized environment.
When you run an OS inside a virtual machine, you have to be aware that the
virtual machine can bring in bugs of its own. For example, floating-point
operations on Solaris can behave slightly differently in QEMU than on real
hardware. And Haiku’s bash program misbehaves in VirtualBox 3,
whereas it behaves fine in VirtualBox 4.
Similarly, running native Windows binaries on GNU/Linux under WINE is rarely tested and low priority: WINE has a set of behaviours and bugs that is slightly different from native Windows.
Previous: Formerly Supported Platforms, Up: Target Platforms [Contents][Index]
Some platforms with C compilers are not supported by Gnulib because the platforms violate Gnulib’s C portability assumptions. See Other portability assumptions.
These assumptions are not required by the C or POSIX standards but hold on almost all practical porting targets. If you need to port Gnulib code to a platform where these assumptions are not true, we would appreciate hearing of any fixes. We need fixes that do not increase runtime overhead on standard hosts and that are relatively easy to maintain.
These platforms are listed below to illustrate problems that Gnulib and Gnulib-using code would have if it were intended to be portable to all practical POSIX or C platforms.
If you use Clang 19 or earlier with -fsanitize=undefined, you can work around the problem by also using ‘-fno-sanitize=pointer-overflow’, although this may also disable some unrelated and useful pointer checks. Perhaps someday the Clang developers will fix the infelicity.
intptr_t and uintptr_t, which are optional in the C and
POSIX standards. However, these two types are required for the XSI
extension to POSIX, and many Gnulib modules use them. To work around
this compatibility problem, Gnulib-using applications can be run on
the IBM i’s PASE emulation environment. The IBM i’s architecture
descends from the System/38 (1978).
CHAR_BIT == 9 and INT_MIN == -INT_MAX. By default
UINT_MAX is 2^{36} - 2, which does not conform to the C
requirement that it be one less than a power of two. Although
compiler options can raise UINT_MAX to be 2^{36} - 1,
this can break system code that uses -0 as a flag value.
This platform’s architecture descends from the UNIVAC 1103 (1953).
unsigned int uses the low-order 40 bits of the word, and
int uses the low-order 41 bits of the word with a
signed-magnitude representation. On these machines, INT_MAX ==
UINT_MAX, INT_MIN == -INT_MAX, and sizeof (int) == 6.
This platform’s architecture descends from the Burroughs B5000 (1961).
The following platforms are not supported by Gnulib. The cost of supporting them would exceed the benefit because they are rarely used, or poorly documented, or have been supplanted by other platforms, or diverge too much from POSIX, or some combination of these and other factors. Please don’t bother sending us patches for them.
Next: Various Kinds of Modules, Previous: Target Platforms, Up: Philosophy [Contents][Index]
Gnulib is divided into modules. Every module implements a single facility. Modules can depend on other modules.
A module consists of a number of files and a module description. The
files are copied by gnulib-tool into the package that will use it,
usually verbatim, without changes. Source code files (.h, .c files)
reside in the lib/ subdirectory. Autoconf macro files reside in
the m4/ subdirectory. Build scripts reside in the
build-aux/ subdirectory.
The module description contains the list of files; gnulib-tool
copies these files. It contains the module’s
dependencies; gnulib-tool installs them as well. It also
contains the autoconf macro invocation (usually a single line or
nothing at all); gnulib-tool ensures this is invoked from the
package’s configure.ac file. And also a Makefile.am
snippet; gnulib-tool collects these into a Makefile.am
for the tailored Gnulib part. The module description and include file
specification are for documentation purposes; they are combined into
MODULES.html.
The module system serves two purposes:
getopt_long function—this is a common way to implement parsing
of command line options in a way that complies with the GNU standards—needs
the source code (lib/getopt.c and others), the autoconf macro
which detects whether the system’s libc already has this function (in
m4/getopt.m4), and a few Makefile.am lines that create the
substitute getopt.h if not. These three pieces belong together.
They cannot be used without each other. The module description and
gnulib-tool ensure that they are copied altogether into the
destination package.
In other words, the module is the elementary unit of code in Gnulib, comparable to a class in object-oriented languages like Java or C#.
The module system is the basis of gnulib-tool. When
gnulib-tool copies a part of Gnulib into a package, it first
compiles a module list, starting with the requested modules and adding all
the dependencies, and then collects the files, configure.ac
snippets and Makefile.am snippets.
Next: Collaborative Development, Previous: Modules, Up: Philosophy [Contents][Index]
There are modules of various kinds in Gnulib. For a complete list of the modules, see in MODULES.html.
When a function is not implemented by a system, the Gnulib module provides an implementation under the same name. Examples are the ‘snprintf’ and ‘readlink’ modules.
Similarly, when a function is not correctly implemented by a system, Gnulib provides a replacement. For functions, we use the pattern
#if !HAVE_WORKING_FOO # define foo rpl_foo #endif
and implement the foo function under the name rpl_foo. This
renaming is needed to avoid conflicts at compile time (in case the system
header files declare foo) and at link/run time (because the code
making use of foo could end up residing in a shared library, and
the executable program using this library could be defining foo
itself).
For header files, such as stdint.h, we provide
the substitute only if the system doesn’t provide a correct one. The
template of this replacement is distributed in a slightly different name,
with ‘.in’ inserted before the ‘.h’ extension, so that on
systems which do provide a correct
header file the system’s one is used.
The modules in this category are supported in C++ mode as well. This means, while the autoconfiguration uses the C compiler, the resulting header files and function substitutes can be used with a matching C++ compiler as well.
These are sometimes POSIX functions with GNU extensions also found in glibc—examples: ‘getopt’, ‘fnmatch’—and often new APIs—for example, for all functions that allocate memory in one way or the other, we have variants which also include the error checking against the out-of-memory condition.
Examples are a module for copying a file—the portability problems
relate to the copying of the file’s modification time, access rights,
and extended attributes—or a module for extracting the tail
component of a file name—here the portability to native Windows
requires a different API than the classical POSIX basename function.
Examples are an error reporting function, a module that allows output of numbers with K/M/G suffixes, or cryptographic facilities.
Examples are data structures like ‘list’, or abstract output stream
classes that work around the fact that an application cannot implement an
stdio FILE with its logic. Here, while staying in C, we use
implementation techniques like tables of function pointers, known from the
C++ language or from the Linux kernel.
Examples are the ‘iconv’ module, which interfaces to the
iconv facility, regardless whether it is contained in libc or in
an external libiconv.
Or the ‘readline’ module, which interfaces to the GNU readline library.
An example is the ‘maintainer-makefile’ module, which provides extra Makefile tags for maintaining a package.
Next: Copyright, Previous: Various Kinds of Modules, Up: Philosophy [Contents][Index]
Gnulib is maintained collaboratively. The mailing list is
<bug-gnulib at gnu dot org>. Be warned that some people on the
list may be very active at some times and unresponsive at other times.
Every module has one or more maintainers. While issues are discussed collaboratively on the list, the maintainer of a module nevertheless has a veto right regarding changes in his module.
All patches should be posted to the list, regardless whether they are proposed patches or whether they are committed immediately by the maintainer of the particular module. The purpose is not only to inform the other users of the module, but mainly to allow peer review. It is not uncommon that several people contribute comments or spot bugs after a patch was proposed.
Conversely, if you are using Gnulib, and a patch is posted that affects one of the modules that your package uses, you have an interest in proofreading the patch.
Next: Steady Development, Previous: Collaborative Development, Up: Philosophy [Contents][Index]
Most modules are under the GPL. Some, mostly modules which can reasonably be used in libraries, are under LGPL. Few modules are under other licenses, such as LGPLv2+, unlimited, or public domain.
If the module description file says "GPL", it means "GPLv3+" (GPLv3 or newer, at the licensee’s choice); if it says "LGPL", it means "LGPLv3+" (LGPLv3 or newer, at the licensee’s choice).
The source files, more precisely the files in lib/ and build-aux/, are under a license compatible with the module’s license. Most often, they are under the same license. But files can be shared among several modules, and in these cases it can happen that a source file is under a weaker license than noted in the module description – namely under the weakest license among the licenses of the modules that contain the file.
Different licenses apply to files in special directories:
Module description files are under this copyright:
Copyright © 20XX–20YY Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification, in any medium, are permitted without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.
Autoconf macro files are under this copyright:
Copyright © 20XX–20YY Free Software Foundation, Inc.
This file is free software; the Free Software Foundation gives unlimited permission to copy and/or distribute it, with or without modifications, as long as this notice is preserved. This file is offered as-is, without any warranty.
or under this copyright:
Copyright © 20XX–20YY Free Software Foundation, Inc.
This file is free software, distributed under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. As a special exception to the GNU General Public License, this file may be distributed as part of a program that contains a configuration script generated by Autoconf, under the same distribution terms as the rest of that program.
We denote either of these license statements as “unlimited”.
If a license statement is not present in a test module, the test files are under GPL. Even if the corresponding source module is under LGPL, this is not a problem, since compiled tests are not installed by “make install”.
Documentation files are under this copyright:
Copyright © 2004–20YY Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is at https://www.gnu.org/licenses/fdl-1.3.en.html.
If you want to use some Gnulib modules under LGPL, you can do so by
passing the option ‘--lgpl’ to gnulib-tool. This will
ensure that all imported modules can be used under the LGPL license.
Similarly, if you want some Gnulib modules
under LGPLv2+ (Lesser GPL version 2.1 or newer), you can do so by
passing the option ‘--lgpl=2’ to gnulib-tool.
Keep in mind that when you submit patches to files in Gnulib, you should license them under a compatible license. This means that sometimes the contribution will have to be LGPL, if the original file is available under LGPL. You can find out about it by looking at the license header of the file.
Next: Openness, Previous: Copyright, Up: Philosophy [Contents][Index]
Gnulib modules are continually adapted, to match new practices, to be consistent with newly added modules, or simply as a response to build failure reports.
If you are willing to report an occasional regression, we recommend to use the newest version from git always, except in periods of major changes. Most Gnulib users do this.
Previous: Steady Development, Up: Philosophy [Contents][Index]
Gnulib is open in the sense that we gladly accept contributions if they are generally useful, well engineered, and if the contributors have signed the obligatory papers with the FSF.
The module system is open in the sense that a package using Gnulib can
gnulib-tool.
This is achieved by the ‘--local-dir’ option of gnulib-tool
(see Extending Gnulib).
Next: Writing modules, Previous: Philosophy, Up: Top [Contents][Index]
The gnulib-tool command is the recommended way to import
Gnulib modules. It is possible to borrow Gnulib modules in a package
without using gnulib-tool, relying only on the
meta-information stored in the modules/* files, but with a
growing number of modules this becomes tedious. gnulib-tool
simplifies the management of source files, Makefile.ams and
configure.ac in packages incorporating Gnulib modules.
gnulib-tool is not installed in a standard directory that is
contained in the PATH variable. It needs to be run directly in
the directory that contains the Gnulib source code. You can do this
either by specifying the absolute filename of gnulib-tool, or
you can also use a symbolic link from a place inside your PATH
to the gnulib-tool file of your preferred and most up-to-date
Gnulib checkout, like this:
$ ln -s $HOME/gnu/src/gnulib.git/gnulib-tool $HOME/bin/gnulib-tool
Run ‘gnulib-tool --help’ for information. To get familiar with
gnulib-tool without affecting your sources, you can also try
some commands with the option ‘--dry-run’; then
gnulib-tool will only report which actions it would perform in
a real run without changing anything.
| • Which modules? | Determining the needed set of Gnulib modules | |
| • Initial import | First import of Gnulib modules. | |
| • Modified imports | Changing the import specification. | |
| • Simple update | Tracking Gnulib development. | |
| • Source changes | Impact of Gnulib on your source files. | |
| • Link-time requirements | Which libraries to link against | |
| • Finding POSIX substitutes | Determining additional suitable Gnulib modules | |
| • Modified build rules | Modifying the build rules of a Gnulib import | |
| • Non-recursive make | Building directly from the top-level directory | |
| • Multiple instances | Using Gnulib for both a library and a program | |
| • gettextize and autopoint | Caveat: gettextize and autopoint users!
| |
| • Localization | Handling Gnulib’s own message translations. | |
| • VCS Issues | Integration with Version Control Systems. | |
| • Unit tests | Bundling the unit tests of the Gnulib modules. | |
| • Conditional dependencies | Avoiding unnecessary checks and compilations. |
Next: Initial import, Up: Invoking gnulib-tool [Contents][Index]
There are four ways of finding the names of Gnulib modules that you can use in your package:
Next: Modified imports, Previous: Which modules?, Up: Invoking gnulib-tool [Contents][Index]
Gnulib assumes that your project uses Autoconf. When using Gnulib, you will need to have Autoconf among your build tools.
Gnulib also assumes that your project’s configure.ac contains the line
AC_CONFIG_HEADERS([config.h])
The config.h file gets generated with platform dependent C macro definitions, and the source files include it (see Source changes).
Unless you use gnulib-tool’s --gnu-make option,
Gnulib also assumes that your project uses Automake at least in a
subdirectory of your project. While the use of Automake in your
project’s top level directory is an easy way to fulfil the Makefile
conventions of the GNU coding standards, Gnulib does not require it.
Invoking ‘gnulib-tool --import’ will copy source files, create a Makefile.am to build them, generate a file gnulib-comp.m4 with Autoconf M4 macro declarations used by configure.ac, and generate a file gnulib-cache.m4 containing the cached specification of how Gnulib is used.
Our example will be a library that uses Autoconf, Automake and
Libtool. It calls strdup, and you wish to use gnulib to make
the package portable to C99 and C11 (which don’t have strdup).
~/src/libfoo$ gnulib-tool --import strdup
Module list with included dependencies:
absolute-header
extensions
strdup
string
File list:
lib/dummy.c
lib/strdup.c
lib/string.in.h
m4/absolute-header.m4
m4/extensions.m4
m4/gnulib-common.m4
m4/strdup.m4
m4/string_h.m4
Creating directory ./lib
Creating directory ./m4
Copying file lib/dummy.c
Copying file lib/strdup.c
Copying file lib/string.in.h
Copying file m4/absolute-header.m4
Copying file m4/extensions.m4
Copying file m4/gnulib-common.m4
Copying file m4/gnulib-tool.m4
Copying file m4/strdup.m4
Copying file m4/string_h.m4
Creating lib/Makefile.am
Creating m4/gnulib-cache.m4
Creating m4/gnulib-comp.m4
Finished.
You may need to add #include directives for the following .h files.
#include <string.h>
Don't forget to
- add "lib/Makefile" to AC_CONFIG_FILES in ./configure.ac,
- mention "lib" in SUBDIRS in Makefile.am,
- mention "-I m4" in ACLOCAL_AMFLAGS in Makefile.am,
or add an AC_CONFIG_MACRO_DIRS([m4]) invocation in ./configure.ac,
- invoke gl_EARLY in ./configure.ac, right after AC_PROG_CC,
- invoke gl_INIT in ./configure.ac.
~/src/libfoo$
By default, the source code is copied into lib/ and the M4
macros in m4/. You can override these paths by using
--source-base=DIRECTORY and --m4-base=DIRECTORY. Some
modules also provide other files necessary for building. These files
are copied into the directory specified by ‘AC_CONFIG_AUX_DIR’ in
configure.ac or by the --aux-dir=DIRECTORY option. If
neither is specified, the current directory is assumed.
gnulib-tool can make symbolic links instead of copying the
source files. The option to specify for this is ‘--symlink’, or
‘-s’ for short. This can be useful to save a few kilobytes of disk
space. But it is likely to introduce bugs when gnulib is updated;
it is more reliable to use ‘gnulib-tool --update’ (see below)
to update to newer versions of gnulib. Furthermore it requires
extra effort to create self-contained tarballs, and it may disturb some
mechanism the maintainer applies to the sources. For these reasons,
this option is generally discouraged.
gnulib-tool will overwrite any preexisting files, in
particular Makefile.am. It is also possible to separate the
generated Makefile.am content (for building the gnulib library)
into a separate file, say gnulib.mk, that can be included by your
handwritten Makefile.am, but this is a more advanced use of
gnulib-tool.
Consequently, it is a good idea to choose directories that are not
already used by your projects, to separate gnulib imported files from
your own files. This approach is also useful if you want to avoid
conflicts between other tools (e.g., gettextize that also copy
M4 files into your package. Simon Josefsson successfully uses a source
base of gl/, and a M4 base of gl/m4/, in several
packages.
After the ‘--import’ option on the command line comes the list of Gnulib modules that you want to incorporate in your package. The names of the modules coincide with the filenames in Gnulib’s modules/ directory.
Some Gnulib modules depend on other Gnulib modules. gnulib-tool
will automatically add the needed modules as well; you need not list
them explicitly. gnulib-tool will also memorize which dependent
modules it has added, so that when someday a dependency is dropped, the
implicitly added module is dropped as well (unless you have explicitly
requested that module).
If you want to cut a dependency, i.e., not add a module although one of your requested modules depends on it, you may use the option ‘--avoid=module’ to do so. Multiple uses of this option are possible. Of course, you will then need to implement the same interface as the removed module.
A few manual steps are required to finish the initial import.
gnulib-tool printed a summary of these steps.
First, you must ensure Autoconf can find the macro definitions in
gnulib-comp.m4. Use the ACLOCAL_AMFLAGS specifier in
your top-level Makefile.am file, as in:
ACLOCAL_AMFLAGS = -I m4
Alternatively, add an AC_CONFIG_MACRO_DIRS invocation in your
configure.ac file, as in:
AC_CONFIG_MACRO_DIRS([m4])
You are now ready to call the M4 macros in gnulib-comp.m4 from
configure.ac. The macro gl_EARLY must be called as soon
as possible after verifying that the C compiler is working.
Typically, this is immediately after AC_PROG_CC, as in:
... AC_PROG_CC gl_EARLY ...
The core part of the gnulib checks are done by the macro
gl_INIT. Place it further down in the file, typically where
you normally check for header files or functions. It must come after
other checks which may affect the compiler invocation, such as
AC_MINIX. For example:
... # For gnulib. gl_INIT ...
gl_INIT will in turn call the macros related with the
gnulib functions, be it specific gnulib macros, like gl_FUNC_ALLOCA
or Autoconf or Automake macros like AC_FUNC_ALLOCA or
AM_FUNC_GETLINE. So there is no need to call those macros yourself
when you use the corresponding gnulib modules.
You must also make sure that the gnulib library is built. Add the
Makefile in the gnulib source base directory to
AC_CONFIG_FILES, as in:
AC_CONFIG_FILES(... lib/Makefile ...)
You must also make sure that make will recurse into the gnulib
directory. To achieve this, add the gnulib source base directory to a
SUBDIRS Makefile.am statement, as in:
SUBDIRS = lib
or if you, more likely, already have a few entries in SUBDIRS,
you can add something like:
SUBDIRS += lib
Finally, you have to add compiler and linker flags in the appropriate source directories, so that you can make use of the gnulib library. Since some modules (‘getopt’, for example) may copy files into the build directory, top_builddir/lib is needed as well as top_srcdir/lib. For example:
... AM_CPPFLAGS = -I$(top_builddir)/lib -I$(top_srcdir)/lib ... LDADD = lib/libgnu.a ...
Don’t forget to #include the various header files. In this
example, you would need to make sure that ‘#include <string.h>’
is evaluated when compiling all source code files, that want to make
use of strdup.
In the usual case where Autoconf is creating a config.h file, you should include config.h first, before any other include file. That way, for example, if config.h defines ‘restrict’ to be the empty string on a non-C99 host, or a macro like ‘_FILE_OFFSET_BITS’ that affects the layout of data structures, the definition is consistent for all include files. Also, on some platforms macros like ‘_FILE_OFFSET_BITS’ and ‘_GNU_SOURCE’ may be ineffective, or may have only a limited effect, if defined after the first system header file is included.
Finally, note that you cannot use AC_LIBOBJ or
AC_REPLACE_FUNCS in your configure.ac and expect the
resulting object files to be automatically added to lib/libgnu.a.
This is because your AC_LIBOBJ and AC_REPLACE_FUNCS invocations
from configure.ac augment a variable @LIBOBJS@ (and/or
@LTLIBOBJS@ if using Libtool), whereas lib/libgnu.a
is built from the contents of a different variable, usually
@gl_LIBOBJS@ (or @gl_LTLIBOBJS@ if using Libtool).
Next: Simple update, Previous: Initial import, Up: Invoking gnulib-tool [Contents][Index]
You can at any moment decide to use Gnulib differently than the last time.
There are two ways to change how Gnulib is used. Which one you’ll use,
depends on where you keep track of options and module names that you pass
to gnulib-tool.
gnulib-tool
again, with modified options and more or fewer module names.
gnulib-tool remembers which modules were used last time. If you
want to rely on gnulib-tool’s own memory of the last used
options and module names, you can use the commands
gnulib-tool --add-import and
gnulib-tool --remove-import.
So, if you only want to use more Gnulib modules, simply invoke
gnulib-tool --add-import new-modules. The list of
modules that you pass after ‘--add-import’ is added to the
previous list of modules.
Similarly, if you want to use fewer Gnulib modules, simply invoke
gnulib-tool --remove-import unneeded-modules. The list
of modules that you pass after ‘--remove-import’ is removed
from the previous list of modules. Note that if a module is then still
needed as dependency of other modules, it will be used nevertheless.
If you want to really not use a module any more, regardless of
whether other modules may need it, you need to use the ‘--avoid’
option.
For other changes, such as different choices of ‘--lib’, ‘--source-base’ or ‘--aux-dir’, the normal way is to modify manually the file gnulib-cache.m4 in the M4 macros directory, then launch ‘gnulib-tool --add-import’.
The only change for which this doesn’t work is a change of the
‘--m4-base’ directory. Because, when you pass a different value of
‘--m4-base’, gnulib-tool will not find the previous
gnulib-cache.m4 file any more. A possible solution is to
manually copy the gnulib-cache.m4 into the new M4 macro directory.
In the gnulib-cache.m4 file, the macros have the following meaning:
gl_LOCAL_DIRThe argument is a colon separated list of local directories where
gnulib-tool will search before looking at gnulib’s directory.
Corresponds to the ‘--local-dir’ command line argument.
gl_MODULESThe argument is a space separated list of the requested modules, not including dependencies.
gl_WITH_OBSOLETEThe presence of this macro corresponds to the ‘--with-obsolete’ command line argument. It takes no arguments.
gl_WITH_CXX_TESTSThe presence of this macro corresponds to the ‘--with-c++-tests’ command line argument and to the absence of the ‘--without-c++-tests’ command line argument. It takes no arguments.
gl_WITH_LONGRUNNING_TESTSThe presence of this macro corresponds to the ‘--with-longrunning-tests’ command line argument and to the absence of the ‘--without-longrunning-tests’ command line argument. It takes no arguments.
gl_WITH_PRIVILEGED_TESTSThe presence of this macro corresponds to the ‘--with-longrunning-tests’ command line argument and to the absence of the ‘--without-longrunning-tests’ command line argument. It takes no arguments.
gl_WITH_UNPORTABLE_TESTSThe presence of this macro corresponds to the ‘--with-unportable-tests’ command line argument and to the absence of the ‘--without-unportable-tests’ command line argument. It takes no arguments.
gl_WITH_ALL_TESTSThe presence of this macro corresponds to the ‘--with-all-tests’ command line argument. It takes no arguments.
gl_AVOIDThe argument is a space separated list of modules that should not be used, even if they occur as dependencies. Corresponds to the ‘--avoid’ command line argument.
gl_SOURCE_BASEThe argument is the relative file name of the directory containing the gnulib source files (mostly *.c and *.h files). Corresponds to the ‘--source-base’ command line argument.
gl_M4_BASEThe argument is the relative file name of the directory containing the gnulib M4 macros (*.m4 files). Corresponds to the ‘--m4-base’ command line argument.
gl_PO_BASEThe argument is the relative file name of the directory containing *.po files. Corresponds to the ‘--po-base’ command line argument.
gl_DOC_BASEThe argument is the relative file name of the directory containing documentation files. Corresponds to the ‘--doc-base’ command line argument.
gl_TESTS_BASEThe argument is the relative file name of the directory containing the gnulib unit test files. Corresponds to the ‘--tests-base’ command line argument.
gl_WITH_TESTSThe presence of this macro corresponds to the ‘--with-tests’ command line argument. It takes no arguments.
gl_LIBThe argument is the name of the library to be created. Corresponds to the ‘--lib’ command line argument.
gl_LGPLThe presence of this macro without arguments corresponds to the ‘--lgpl’ command line argument. The presence of this macro with an argument (whose value must be 2 or 3) corresponds to the ‘--lgpl=arg’ command line argument.
gl_GPLThe presence of this macro with an argument (whose value must be 2 or 3) corresponds to the ‘--gpl=arg’ command line argument.
gl_MAKEFILE_NAMEThe argument is the name of the makefile in the source-base and tests-base directories. Corresponds to the ‘--makefile-name’ command line argument.
gl_TESTS_MAKEFILE_NAMEThe argument is the name of the makefile in the tests-base directory. Corresponds to the ‘--tests-makefile-name’ command line argument.
gl_AUTOMAKE_SUBDIRThe presence of this macro corresponds to the ‘--automake-subdir’ command line argument. It takes no arguments.
gl_CONDITIONAL_DEPENDENCIESThe presence of this macro corresponds to the ‘--conditional-dependencies’ command line argument and to the absence of the ‘--no-conditional-dependencies’ command line argument. It takes no arguments.
gl_LIBTOOLThe presence of this macro corresponds to the ‘--libtool’ command line argument and to the absence of the ‘--no-libtool’ command line argument. It takes no arguments.
gl_MACRO_PREFIXThe argument is the prefix to use for macros in the gnulib-comp.m4 file. Corresponds to the ‘--macro-prefix’ command line argument.
gl_PO_DOMAINThe argument is the prefix of the i18n domain, typically matching the package name. Corresponds to the ‘--po-domain’ command line argument.
gl_WITNESS_C_MACROThe argument is the C macro that is defined when the sources in this directory are compiled or used. Corresponds to the ‘--witness-c-macro’ command line argument.
gl_VC_FILESThe argument to this macro is true or false. The former
corresponds to the ‘--vc-files’ command line argument and the latter
corresponds to the ‘--no-vc-files’ command line argument.
Next: Source changes, Previous: Modified imports, Up: Invoking gnulib-tool [Contents][Index]
When you want to update to a more recent version of Gnulib, without changing the list of modules or other parameters, a simple call does it:
$ gnulib-tool --add-import
This will create, update or remove files, as needed.
Note: From time to time, changes are made in Gnulib that are not backward compatible. When updating to a more recent Gnulib, you should consult Gnulib’s NEWS file to check whether the incompatible changes affect your project.
Next: Link-time requirements, Previous: Simple update, Up: Invoking gnulib-tool [Contents][Index]
When you use Gnulib, you need to make some small changes to your source code base.
| • -I options | ||
| • Include <config.h> | ||
| • Style of #include statements |
Next: Include <config.h>, Up: Source changes [Contents][Index]
Gnulib contains some header file overrides. This means that when building on systems with deficient header files in /usr/include/, it may create files named string.h, stdlib.h, stdint.h or similar in the build directory. In the other source directories of your package you will usually pass ‘-I’ options to the compiler, so that these Gnulib substitutes are visible and take precedence over the files in /usr/include/.
Next: Style of #include statements, Previous: -I options, Up: Source changes [Contents][Index]
These Gnulib substitute header files rely on <config.h> being already included. Furthermore <config.h> must be the first include in every compilation unit. This means that to all your source files and likely also to all your tests source files you need to add an ‘#include <config.h>’ at the top. Which source files are affected? Exactly those whose compilation includes a ‘-I’ option that refers to the Gnulib library directory.
This is annoying, but inevitable: On many systems, <config.h> is
used to set system dependent flags (such as _GNU_SOURCE on GNU systems),
and these flags have no effect after any system header file has been included.
Previous: Include <config.h>, Up: Source changes [Contents][Index]
When including including specific header files, you need to use the ‘#include <...>’ syntax, not the ‘#include "..."’ syntax. This is true for the following POSIX or ISO C standardized header files:
arpa/inet.h
assert.h
ctype.h
dirent.h
endian.h
errno.h
fcntl.h
fenv.h
float.h
fnmatch.h
glob.h
iconv.h
inttypes.h
langinfo.h
limits.h
locale.h
math.h
monetary.h
net/if.h
netdb.h
netinet/in.h
poll.h
pthread.h
sched.h
search.h
signal.h
spawn.h
stdalign.h
stdarg.h
stdcountof.h
stddef.h
stdint.h
stdio.h
stdlib.h
string.h
strings.h
sys/msg.h
sys/resource.h
sys/select.h
sys/sem.h
sys/shm.h
sys/socket.h
sys/stat.h
sys/time.h
sys/times.h
sys/types.h
sys/uio.h
sys/un.h
sys/utsname.h
sys/wait.h
termios.h
threads.h
time.h
uchar.h
unistd.h
utime.h
wchar.h
wctype.h
as well as for the following header files that exist in the GNU C library but are not standardized:
alloca.h
byteswap.h
error.h
getopt.h
malloc.h
mntent.h
omp.h
pty.h
selinux/selinux.h
sys/file.h
sys/ioctl.h
sys/random.h
sysexits.h
utmp.h
The reason for this requirement is that for these header files, the Gnulib
override uses #include_next to include the system-provided header
of the same name, and #include_next may not work right with the
‘#include "..."’ syntax.
Next: Finding POSIX substitutes, Previous: Source changes, Up: Invoking gnulib-tool [Contents][Index]
When you use Gnulib, you need to augment the set of libraries against which
your programs and libraries are linked. This is done by augmenting the
Automake variable LDADD (for all programs) or
prog_LDADD (for a single program prog) or
library_la_LIBADD (for a single library library.la).
What do you need to add to this Automake variable?
lib/libgnu.a for source in the
top-level directory, or ../lib/libgnu.a for source in a sibling
directory of lib/.
gnulib-tool. Alternatively,
you can retrieve the set of additional libraries required by a specific
Gnulib module by running
./gnulib-tool --extract-recursive-link-directive module
Beware: By looking into the module description file modules/module
or by running
./gnulib-tool --extract-link-directive module
you would miss the link dependencies of indirectly used modules.
Next: Modified build rules, Previous: Link-time requirements, Up: Invoking gnulib-tool [Contents][Index]
Gnulib contains a wealth of portability workarounds for ISO C and POSIX functions. They are listed in detail in the chapter Function Substitutes. If you want to know which function substitutes are recommended for your package, you can search your source code for ISO C and POSIX functions that it uses and read the corresponding sections of said documentation chapter. But this is a tedious task. Here is an alternative approach that makes this task easier.
make distclean if you previously built in the top-level directory.
Then regenerate the Autotools-generated parts of the package.
make distclean.
Next: Non-recursive make, Previous: Finding POSIX substitutes, Up: Invoking gnulib-tool [Contents][Index]
In some cases, you may want to set additional compiler options for
use within the Gnulib import directory. For example, the
‘relocatable’ module operates better if you define the C macros
ENABLE_COSTLY_RELOCATABLE and INSTALLDIR during its
compilation.
There are two ways to do so: Use of the gnulib-tool option
--makefile-name, and a kitchen-sink module.
With the gnulib-tool option --makefile-name, you are
telling gnulib-tool to generate an includable Makefile.am
portion, rather than a self-contained Makefile.am. For example,
when you use --makefile-name=Makefile.gnulib, gnulib-tool
will generate Makefile.gnulib, and you will provide a
hand-written Makefile.am that includes Makefile.gnulib
through a line such as
include Makefile.gnulib
Before this include, you need to initialize a set of Makefile.am
variables.
For the directory into which gnulib-tool copies the gnulib source files,
the set of variables to initialize is:
AUTOMAKE_OPTIONS
SUBDIRS
noinst_HEADERS
noinst_LIBRARIES
noinst_LTLIBRARIES
pkgdata_DATA (only with Automake ≥ 1.11.4)
EXTRA_DIST
BUILT_SOURCES
SUFFIXES
MOSTLYCLEANFILES
MOSTLYCLEANDIRS
CLEANFILES
DISTCLEANFILES
MAINTAINERCLEANFILES
AM_CPPFLAGS
AM_CFLAGS
AUTOMAKE_OPTIONS should be initialized as described in
Changing Automake’s Behavior in GNU Automake.
The other variables can be initialized to empty. However, you will most
likely want to initialize some of them with non-empty values, in order
to achieve the desired customization.
For the directory into which gnulib-tool copies
the gnulib unit test files
(when option ‘--with-tests’ is used),
the set of variables to initialize is:
AM_CFLAGS
AM_CXXFLAGS (when this directory contains some C++ code)
The other approach, the kitchen-sink module, is more advanced. See chapter Extending Gnulib.
Next: Multiple instances, Previous: Modified build rules, Up: Invoking gnulib-tool [Contents][Index]
By default, the Gnulib import directory will contain a generated
Makefile.am file. After configuring, this produces a generated
Makefile in this directory. As a consequence, the build from the
top-level directory will use a recursive make invocation for this
directory.
Some people prefer a build system where the Makefile in the
top-level directory directly builds the artifacts in the subdirectories,
without an intermediate make invocation. This is called
“non-recursive make” and is supported by Automake. For more details,
see https://autotools.io/automake/nonrecursive.html.
Gnulib supports this flavour of build system too. To use it, pass two
options to gnulib-tool: ‘--makefile-name’ and
‘--automake-subdir’.
With the gnulib-tool option ‘--makefile-name’, you are
telling gnulib-tool to generate an includable Makefile.am
portion in the Gnulib import directory, rather than a self-contained
Makefile.am. For example, when you use
‘--makefile-name=Makefile.gnulib’, gnulib-tool will generate
Makefile.gnulib.
With the option ‘--automake-subdir’, you are telling
gnulib-tool that you will include the generated file from the
Makefile.am in the top-level directory, rather than from a
Makefile.am in the same directory. For example, the top-level
Makefile.am might contain this directive:
include lib/Makefile.gnulib
The option ‘--automake-subdir’ is also supported in combination
with ‘--with-tests’ (see Unit tests). Note that in this case,
however, the generated unit tests directory will contains a
Makefile.am and thus use a recursive make invocation.
This is not a problem, since the built artifacts of your package have
no dependencies towards the Gnulib unit tests, nor vice versa.
Next: gettextize and autopoint, Previous: Non-recursive make, Up: Invoking gnulib-tool [Contents][Index]
Your project might build both a library and some accompanying programs
in the same source tree. In that case you might want to use different
modules for the library than for the programs. Typically the programs
might want to make use of getopt-posix or version-etc,
while the library wants to stay clear of these modules for technical
or licensing reasons.
Let’s assume that your project contains a lib directory where the source of the library resides and a src directory for the sources of the programs as follows.
.
|-- configure.ac
|-- lib
| |-- foo.c
| `-- Makefile.am
|-- Makefile.am
`-- src
|-- bar.c
`-- Makefile.am
You can now add two instances of Gnulib to your project in separate source trees:
~/src/libfoo$ gnulib-tool --import --lib=libgnu --source-base=gnulib \
--m4-base=gnulib/m4 --macro-prefix=gl strndup
~/src/libfoo$ gnulib-tool --import --lib=libgnutools \
--source-base=src/gnulib --m4-base=src/gnulib/m4 \
--macro-prefix=gl_tools getopt-gnu
The first one will import the module strndup in gnulib
and the second one will import getopt-gnu in src/gnulib
and you will end up with the following source tree (many files omitted
in the interest of brevity):
.
|-- configure.ac
|-- gnulib
| |-- m4
| |-- strndup.c
|-- lib
| |-- foo.c
| `-- Makefile.am
|-- Makefile.am
`-- src
|-- bar.c
|-- gnulib
| |-- getopt.c
| |-- getopt.in.h
| |-- m4
`-- Makefile.am
As discussed in Unit tests, you may not use ‘--with-tests’
for this project since the configure.ac is shared.
Integration with your code is basically the same as outlined in
Initial import with the one exception that you have to add both
the macro gl_EARLY and the macro gl_tools_EARLY to your
configure.ac (and of course also both macros gl_INIT and
gl_tools_INIT). Obviously the name of the second macro is
dependent on the value of the --macro-prefix option in your
gnulib-tool invocation.
... AC_PROG_CC gl_EARLY gl_tools_EARLY ... # For gnulib. gl_INIT gl_tools_INIT ...
Also as outlined in Initial import you will have to add compiler and linker flags. For the library you might have to add something along the line of the following to your Makefile.am:
... AM_CPPFLAGS = -I$(top_srcdir)/gnulib -I$(top_builddir)/gnulib ... libfoo_la_LIBADD = $(top_builddir)/gnulib/libgnu.la ...
Correspondingly for the programs you will have to add something like this:
... AM_CPPFLAGS = -I$(top_srcdir)/src/gnulib -I$(top_builddir)/src/gnulib ... LDADD = $(top_builddir)/src/gnulib/libgnutools.la ...
The name of the library that you have pass in the linker option
depends on the --lib option in gnulib-tool
invocation.
Next: Localization, Previous: Multiple instances, Up: Invoking gnulib-tool [Contents][Index]
gettextize and autopoint usersThe programs gettextize and autopoint, part of
GNU gettext, import or update the internationalization infrastructure.
Some of this infrastructure, namely ca. 20 Autoconf macro files and the
config.rpath file, is also contained in Gnulib and may be imported
by gnulib-tool. The use of gettextize or autopoint
will therefore overwrite some of the files that gnulib-tool has
imported, and vice versa.
Avoiding to use gettextize (manually, as package maintainer) or
autopoint (as part of a script like autoreconf or
autogen.sh) is not the solution: These programs also import the
infrastructure in the po/ and optionally in the intl/ directory.
The copies of the conflicting files in Gnulib are more up-to-date than
the copies brought in by gettextize and autopoint. When a
new gettext release is made, the copies of the files in Gnulib will
be updated immediately.
The choice of which version of gettext to require depends on the needs of your package. For a package that wants to comply to GNU Coding Standards, the steps are:
gettextize, always use the gettextize from the
matching GNU gettext release. For the most recent Gnulib checkout, this is
the newest release found on https://ftp.gnu.org/gnu/gettext/. For an
older Gnulib snapshot, it is the release that was the most recent release
at the time the Gnulib snapshot was taken.
gettextize, invoke gnulib-tool and import
the gettext module. Also, copy the latest version of gnulib’s
build-aux/po/Makefile.in.in to your po/ directory (this
is done for you if you use gnulib’s autogen.sh script).
*** error: gettext infrastructure mismatch:
using a Makefile.in.in from gettext version ...
but the Autoconf macros are from gettext version ...,
it means that a new GNU gettext release was made, and its Autoconf macros
were integrated into Gnulib and now mismatch the po/ infrastructure.
In this case, fetch and install the new GNU gettext release and run
gettextize followed by gnulib-tool.
On the other hand, if your package is not as concerned with compliance to the latest standards, but instead favors development on stable environments, the steps are:
gettext that you intend to
support during development (at this time, gnulib recommends going no
older than version 0.17). Run autopoint (not
gettextize) to copy infrastructure into place (newer versions
of gettext will install the older infrastructure that you requested).
gnulib-tool, and import the gettext-h module.
Regardless of which approach you used to get the infrastructure in place, the following steps must then be used to preserve that infrastructure (gnulib’s autogen.sh script follows these rules):
autopoint, invoke gnulib-tool
afterwards.
autoreconf after gnulib-tool, make sure to
not invoke autopoint a second time, by setting the AUTOPOINT
environment variable, like this:
$ env AUTOPOINT=true autoreconf --install
Next: VCS Issues, Previous: gettextize and autopoint, Up: Invoking gnulib-tool [Contents][Index]
Gnulib provides some functions that emit translatable messages using GNU
gettext. The ‘gnulib’ domain at the
Translation Project collects
translations of these messages, which you should incorporate into your
own programs.
The recommended way to achieve this is that
your package depends on the package ‘gnulib-l10n’.
This package contains the Gnulib localizations as .mo files.
In order to use this method, you must – in each program that might use Gnulib code – add an extra line to the part of the program that initializes locale-dependent behavior. Where you would normally write something like:
setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE);
you should add an additional bindtextdomain call to inform gettext of
where the MO files for the extra message domain may be found:
bindtextdomain ("gnulib", GNULIB_LOCALEDIR);
Since you do not change the textdomain call,
the default message domain for your program remains the same
and your own use of gettext functions will not be affected.
If your package has a DEPENDENCIES file,
for the ease of installers and distributors,
you should add the ‘gnulib-l10n’ dependency in this file.
If your package does not support localization,
you can simplify its build process by using
gnulib-tool’s --avoid=gnulib-i18n option.
The package need not call bindtextdomain or textdomain,
and all Gnulib-generated messages will be in American English.
Two older methods to use Gnulib localizations are deprecated:
GNULIB_TEXT_DOMAIN to its own textdomain name early,
before including gettext.h;
you can do this by putting AC_DEFINE([GNULIB_TEXT_DOMAIN], [PACKAGE])
in your configure.ac.
However, this process is error-prone: you might forget to list some source files, or the translator might not be using a translation memory and provide a different translation than another translator, or the translation might not be kept in sync between Gnulib and your package. It is also slow and causes substantial extra work, because a human translator must be in the loop for each language and you will need to incorporate their work on request.
--po-base=directory and --po-domain=domain
options to gnulib-tool, then gnulib-tool creates a
separate directory with its own POTFILES.in, and fetches current
translations directly from the Translation Project (using wget).
The POT file in this directory will be called
domain-gnulib.pot, depending on the domain you gave to the
--po-domain option (typically the same as the package name).
This causes these translations to reside in a separate message domain,
so that they do not clash either with the translations for the main part
of your package nor with those of other packages on the system that use
possibly different versions of Gnulib.
When you use these options, the functions in Gnulib are built
in such a way that they will always use this domain regardless of the
default domain set by textdomain.
This method is deprecated because it adds complexity to your package and, additionally, mixes the “autopull” and “autogen” phases of package source preparation.
Next: Unit tests, Previous: Localization, Up: Invoking gnulib-tool [Contents][Index]
If a project stores its source files in a version control system (VCS), such as CVS, Subversion, or Git, one needs to decide which files to commit.
In principle, all files created by gnulib-tool, except
gnulib-cache.m4, can be treated like generated source files,
like for example a parser.c file generated from
parser.y. Alternatively, they can be considered source files
and updated manually.
Here are the three different approaches in common use. Each has its place, and you should use whichever best suits your particular project and development methods.
gnulib-tool generated files should all be
committed. In this case, you should pass the option
‘--no-vc-files’ to gnulib-tool, which avoids alteration of
VCS-related files such as .gitignore.
Gnulib also contains files generated by make (and removed by
make clean), using information determined by
configure. For a Gnulib source file of the form
lib/foo.in.h, the corresponding lib/foo.h is such a
make-generated file. These should not be checked
into the VCS, but instead added to .gitignore or equivalent.
gnulib-tool. The command for restoring the omitted files
depends on it:
gnulib-cache.m4, such as
autogen.sh, bootstrap, bootstrap.conf, or similar,
the restoration command is the entire gnulib-tool ... --import ...
invocation with all options and module names.
gnulib-tool’s memory of the last used
options and module names, then the file gnulib-cache.m4 in the M4
macros directory must be added to the VCS, and the restoration command
is:
$ gnulib-tool --update
The ‘--update’ option operates much like the ‘--add-import’ option, but it does not offer the possibility to change the way Gnulib is used. Also it does not report in the ChangeLogs the files that it had to add because they were missing.
Most packages nowadays use the first among these two approaches. Over time, three ways of handling version control have evolved.
In the cases (A) and (B), a “git submodule” is used to reference the precise commit of the gnulib repository, so that each developer running ‘./bootstrap --pull’ or autopull.sh will get the same version of all gnulib-provided files.
The alternative is to always follow the newest Gnulib automatically. Note that this can cause breakages at unexpected moments, namely when a broken commit is pushed in Gnulib. It does not happen often, but it does happen.
The location of the submodule can be chosen to fit the package’s needs; here’s how to initially create the submodule in the directory gnulib:
$ git submodule add -- https://git.savannah.gnu.org/git/gnulib.git gnulib
Thereafter, the developer will run this command to update the submodule to the recorded checkout level:
$ git submodule update --init gnulib
Use this sequence to update to a newer version of gnulib:
$ git submodule update --remote gnulib $ git add gnulib $ ./bootstrap --bootstrap-sync
If multiple submodules are used, the following may be useful:
$ git config alias.syncsub "submodule foreach git pull origin master" $ git syncsub
build-aux/bootstrap or autopull.sh
program (see Developer tools) is used to aid a developer in
using this setup. You copy this program (and if it’s
autopull.sh, its companion files) into your package and place
the copy or copies under version control. The program can be
customized using bootstrap.conf which you also put under
version control.
autopull.sh and autogen.sh
files by hand.
autopull.sh is most easily written as a script that
invokes
./gitsub.sh pull || exit 1
where gitsub.sh is described in Developer tools.
autogen.sh typically contains an explicit gnulib-tool
invocation, followed by
aclocal -I m4 \ && autoconf \ && autoheader && touch config.h.in \ && automake --add-missing --copy \ && rm -rf autom4te.cache \ || exit $?
Makefile.in generated by Automake. This
increases the size and complexity of the repository, but can help
occasional contributors by not requiring them to have a full Gnulib
checkout to do a build, and all developers by ensuring that all
developers are working with the same version of Gnulib in the
repository. It also supports multiple Gnulib instances within a
project. It remains important not to commit the
make-generated files, as described above.
Next: Conditional dependencies, Previous: VCS Issues, Up: Invoking gnulib-tool [Contents][Index]
You can bundle the unit tests of the Gnulib modules together with your
package, through the ‘--with-tests’ option. Together with
‘--with-tests’, you also specify the directory for these tests
through the ‘--tests-base’ option. Of course, you need to add this
directory to the SUBDIRS variable in the Makefile.am of
the parent directory.
The advantage of having the unit tests bundled is that when your program has a problem on a particular platform, running the unit tests may help determine quickly if the problem is on Gnulib’s side or on your package’s side. Also, it helps verifying Gnulib’s portability, of course.
The unit tests will be compiled and run when the user runs ‘make check’. When the user runs only ‘make’, the unit tests will not be compiled.
In the SUBDIRS variable, it is useful to put the Gnulib tests directory
after the directory containing the other tests, not before:
SUBDIRS = gnulib-lib src man tests gnulib-tests
This will ensure that on platforms where there are test failures in either directory, users will see and report the failures from the tests of your program.
Note: In packages which use more than one invocation of gnulib-tool
in the scope of the same configure.ac, you cannot use
‘--with-tests’. You will have to use a separate configure.ac
in this case.
Previous: Unit tests, Up: Invoking gnulib-tool [Contents][Index]
In some cases, a module is needed by another module only on specific
platforms. But when a module is present, its Autoconf checks are always
executed, and its Makefile.am additions are always enabled. So
it can happen that some Autoconf checks are executed and some source files
are compiled, although no other module needs them on this particular
platform, just in case some other module would need them.
The option ‘--conditional-dependencies’ enables an optimization of
configure checks and Makefile.am snippets that avoids this. With
this option, whether a module is considered “present” is no longer decided
when gnulib-tool is invoked, but later, when configure is run.
This applies to modules that were added as dependencies while
gnulib-tool was run; modules that were passed on the command line
explicitly are always “present”.
For example, the timegm module needs, on platforms
where the system’s timegm function is missing or buggy, a replacement
that is based on a function mktime_internal. The module
mktime-internal that provides this function provides it on all
platforms. So, by default, the file mktime-internal.c will be
compiled on all platforms, even on glibc and BSD systems which have a
working timegm function. When the option
‘--conditional-dependencies’ is given, on the other hand, and if
mktime-internal was not explicitly required on the command line,
the file mktime-internal.c will only be compiled on the platforms
where the timegm needs them.
Conditional dependencies are specified in the module description by putting
the condition on the same line as the dependent module, enclosed in brackets.
The condition is a boolean shell expression that can assume that the
configure.ac snippet from the module description has already been
executed. In the example above, the dependency from timegm to
mktime-internal is written like this:
Depends-on: ... mktime-internal [test $HAVE_TIMEGM = 0 || test $REPLACE_TIMEGM = 1] ...
Note: The option ‘--conditional-dependencies’ cannot be used together
with the option ‘--with-tests’. It also cannot be used when a package
uses gnulib-tool for several subdirectories, with different values
of ‘--source-base’, in the scope of a single configure.ac file.
Next: Extending Gnulib, Previous: Invoking gnulib-tool, Up: Top [Contents][Index]
This chapter explains how to write modules of your own, either to extend Gnulib for your own package (see Extending Gnulib), or for inclusion in gnulib proper.
The guidelines in this chapter do not necessarily need to be followed for
using gnulib-tool. They merely represent a set of good practices.
Following them will result in a good structure of your modules and in
consistency with gnulib.
| • Source code files | ||
| • Header files | ||
| • Implementation files | ||
| • Specification | ||
| • Module description | ||
| • Autoconf macros | ||
• Using AC_LIBOBJ | ||
| • Unit test modules | ||
| • Incompatible changes |
Next: Header files, Up: Writing modules [Contents][Index]
Every API (C functions or variables) provided should be declared in a header file (.h file) and implemented in one or more implementation files (.c files). The separation has the effect that users of your module need to read only the contents of the .h file and the module description in order to understand what the module is about and how to use it—not the entire implementation. Furthermore, users of your module don’t need to repeat the declarations of the functions in their code, and are likely to receive notification through compiler errors if you make incompatible changes to the API (like, adding a parameter or changing the return type of a function).
Next: Implementation files, Previous: Source code files, Up: Writing modules [Contents][Index]
The .h file should declare the C functions and variables that the module provides.
The .h file should be stand-alone. That is, it does not require other .h files to be included before. Rather, it includes all necessary .h files by itself.
It is a tradition to use CPP tricks to avoid parsing the same header file more than once, which might cause warnings. The trick is to wrap the content of the header file (say, foo.h) in a block, as in:
#ifndef FOO_H # define FOO_H ... body of header file goes here ... #endif /* FOO_H */
Whether to use FOO_H or _FOO_H is a matter of taste and
style. The C99 and C11 standards reserve all identifiers that begin with an
underscore and either an uppercase letter or another underscore, for
any use. Thus, in theory, an application might not safely assume that
_FOO_H has not already been defined by a library. On the other
hand, using FOO_H will likely lead the higher risk of
collisions with other symbols (e.g., KEY_H, XK_H, BPF_H,
which are CPP macro constants, or COFF_LONG_H, which is a CPP
macro function). Your preference may depend on whether you consider
the header file under discussion as part of the application (which has
its own namespace for CPP symbols) or a supporting library (that
shouldn’t interfere with the application’s CPP symbol namespace).
Adapting C header files for use in C++ applications can use another CPP trick, as in:
# ifdef __cplusplus
extern "C"
{
# endif
...
body of header file goes here
...
# ifdef __cplusplus
}
# endif
The idea here is that __cplusplus is defined only by C++
implementations, which will wrap the header file in an ‘extern "C"’
block. Again, whether to use this trick is a matter of taste and
style. While the above can be seen as harmless, it could be argued
that the header file is written in C, and any C++ application using it
should explicitly use the ‘extern "C"’ block itself. Your
preference might depend on whether you consider the API exported by
your header file as something available for C programs only, or for C
and C++ programs alike.
Note that putting a #include in an extern "C" { ... }
block yields a syntax error in C++ mode on some platforms (e.g., glibc
systems with g++ v3.3 to v4.2, AIX). For this reason, it
is recommended to place the #include before the extern
"C" block.
Next: Specification, Previous: Header files, Up: Writing modules [Contents][Index]
The .c file or files implement the functions and variables declared in the .h file.
Every implementation file must start with ‘#include <config.h>’.
This is necessary for activating the preprocessor macros that are defined
on behalf of the Autoconf macros. Some of these preprocessor macros,
such as _GNU_SOURCE, would have no effect if defined after a system
header file has already been included.
Then comes the ‘#include "..."’ specifying the header file that is being implemented. Putting this right after ‘#include <config.h>’ has the effect that it verifies that the header file is self-contained.
Then come the system and application headers. It is customary to put all the system headers before all application headers, so as to minimize the risk that a preprocessor macro defined in an application header confuses the system headers on some platforms.
In summary:
Next: Module description, Previous: Implementation files, Up: Writing modules [Contents][Index]
The specification of a function should answer at least the following questions:
Where to put the specification describing exported functions? Three practices are used in gnulib:
In any case, the specification should appear in just one place, unless you can ensure that the multiple copies will always remain identical.
The advantage of putting it in the header file is that the user only has to read the include file normally never needs to peek into the implementation file(s).
The advantage of putting it in the implementation file is that when reviewing or changing the implementation, you have both elements side by side.
The advantage of texinfo formatted documentation is that it is easily published in HTML or Info format.
Currently (as of 2020), 70% of gnulib uses the first practice, 25% of gnulib uses the second practice, and a small minority uses the texinfo practice.
Next: Autoconf macros, Previous: Specification, Up: Writing modules [Contents][Index]
For the module description, you can start from an existing module’s description, or from a blank one: module/TEMPLATE for a normal module, or module/TEMPLATE-TESTS for a unit test module. Some more fields are possible but rarely used. Use module/TEMPLATE-EXTENDED if you want to use one of them.
Module descriptions have the following fields. Absent fields are equivalent to fields with empty contents.
This field should contain a concise description of the module’s functionality. One sentence is enough. For example, if it defines a single function ‘frob’, the description can be ‘frob() function: frobnication.’ Gnulib’s documentation generator will automatically convert the first part to a hyperlink when it has this form.
This field is either empty/absent, or contains the word ‘obsolete’. In
the latter case, gnulib-tool will, unless the option
--with-obsolete is given, omit it when it used as a dependency. It is
good practice to also notify the user about an obsolete module. This is done
by putting into the ‘Notice’ section (see below) text like
‘This module is obsolete.’
This field contains text that gnulib-tool will show to the user
when the module is used. This can be a status indicator like
‘This module is obsolete.’ or additional advice. Do not abuse this
field.
This field is either empty/absent, or contains the word ‘all’. It
describes to which Makefile.am the module is applied. By default,
a normal module is applied to source_base/Makefile.am
(normally lib/Makefile.am), whereas a module ending in -tests
is applied to tests_base/Makefile.am (normally
tests/Makefile.am). If this field is ‘all’, it is applied to
both Makefile.ams. This is useful for modules which provide
Makefile.am macros rather than compiled source code.
This field should contain ‘no’ if the module cannot be used in a
test directory created with gnulib-tool --create-testdir.
This field contains a newline separated list of the files that are part of
the module. gnulib-tool copies these files into the package that
uses the module.
This list is typically ordered by importance: First comes the header file, then the implementation files, then other files.
It is possible to have the same file mentioned in multiple modules. That is, if the maintainers of that module agree on the purpose and future of said file.
This field contains a newline separated list of the modules that are required
for the proper working of this module. gnulib-tool includes each
required module automatically, unless it is specified with option
--avoid or it is marked as obsolete and the option
--with-obsolete is not given.
A test modules foo-tests implicitly depends on the corresponding non-test
module foo. foo implicitly depends on foo-tests if the
latter exists and if the option --with-tests has been given.
Tests modules can depend on non-tests modules. Non-tests modules should not depend on tests modules. (Recall that tests modules are built in a separate directory.)
Each listed required module may be declared a conditional dependency. This
is indicated by placing the condition for the dependency on the same line,
enclosed in brackets, after the name of the required module. The condition
is a shell expression that is run after the module’s configure.ac
statements. For example:
strtoull [test $ac_cv_func_strtoumax = no]
Lines starting with # are recognized as comments and are ignored.
This field contains configure.ac stuff (Autoconf macro invocations and
shell statements) that are logically placed early in the configure.ac
file: right after the AC_PROG_CC invocation. This section is adequate
for statements that modify CPPFLAGS, as these can affect the results of
other Autoconf macros.
This field contains configure.ac stuff (Autoconf macro invocations and shell statements).
It is forbidden to add items to the CPPFLAGS variable here, other than
temporarily, as these could affect the results of other Autoconf macros.
We avoid adding items to the LIBS variable, other than temporarily.
Instead, the module can export an Autoconf-substituted variable that contains
link options. The user of the module can then decide to which executables
to apply which link options. Recall that a package can build executables of
different kinds and purposes; having all executables link against all
libraries is inappropriate.
If the statements in this section grow larger than a couple of lines, we
recommend moving them to a .m4 file of their own.
This field contains Makefile.am statements. Variables like
lib_SOURCES are transformed to match the name of the library
being built in that directory. For example, lib_SOURCES may become
libgnu_a_SOURCES (for a plain library) or libgnu_la_SOURCES
(for a libtool library). Therefore, the normal way of having an
implementation file lib/foo.c compiled unconditionally is to write
lib_SOURCES += foo.c
This field contains the preprocessor statements that users of the module need to add to their source code files. Typically it’s a single include statement. A shorthand is allowed: You don’t need to write the word “#include”, just the name of the include file in the way it will appear in an include statement. Example:
"foo.h"
This field contains the set of libraries that are needed when linking
libraries or executables that use this module. Often this will be
written as a reference to a Makefile variable. Please write them
one per line, so that gnulib-tool can remove duplicates
when presenting a summary to the user.
Example:
$(POW_LIBM) $(LTLIBICONV) when linking with libtool, $(LIBICONV) otherwise
When this field is omitted, it defaults to the union of the Link
field of the dependencies.
This field specifies the license that governs the source code parts of this module. See Copyright for details. Be sure to place, in every source code file, a copyright notice and the appropriate license notice, taken from the etc/license-notices/ directory.
This field specifies the persons who have a definitive say about proposed
changes to this module. You don’t need to mention email addresses here:
they can be inferred from the ChangeLog file.
Please put at least one person here. We don’t like unmaintained modules.
Next: Using AC_LIBOBJ, Previous: Module description, Up: Writing modules [Contents][Index]
For a module foo, an Autoconf macro file m4/foo.m4 is typically
created when the Autoconf macro invocations for the module are longer than
one or two lines.
The name of the main entry point into this Autoconf macro file is typically
gl_FOO. For modules outside Gnulib that are not likely to be moved
into Gnulib, please use a prefix specific to your package: gt_ for
GNU gettext, cu_ for GNU coreutils, etc.
For modules that define a function foo, the entry point is called
gl_FUNC_FOO instead of gl_FOO. For modules that provide a
header file with multiple functions, say foo.h, the entry point is
called gl_FOO_H or gl_HEADER_FOO_H. This convention is useful
because sometimes a header and a function name coincide (for example,
fcntl and fcntl.h).
For modules that provide a replacement, it is useful to split the Autoconf
macro into two macro definitions: one that detects whether the replacement
is needed and requests the replacement by setting a HAVE_FOO
variable to 0 or a REPLACE_FOO variable to 1 (this is the
entry point, say gl_FUNC_FOO), and one that arranges for the macros
needed by the replacement code lib/foo.c (typically called
gl_PREREQ_FOO). The reason of this separation is
lib/foo.c, all you have to review
is the Depends-on section of the module description and the
gl_PREREQ_FOO macro in the Autoconf macro file.
Autoconf macro files in Gnulib all start with a header consisting of
aclocal.m4
file does not contain a reference to the .m4 file but its entire
contents.
The comment makes it clear which .m4 file is where in the
aclocal.m4 file.
aclocal will then refrain from copying a file with a smaller
serial number onto a file with a larger serial number.
The serial number should be a positive integer on the main branch,
or a positive fractional number on a stable branch.
Next: Unit test modules, Previous: Autoconf macros, Up: Writing modules [Contents][Index]
AC_LIBOBJSource files that provide a replacement should be only compiled on the
platforms that need this replacement. While it is actually possible
to compile a .c file whose contents is entirely #ifdef’ed
out on the platforms that don’t need the replacement, this practice is
discouraged because
.o file that suggests that a replacement was needed.
The typical idiom for invoking AC_LIBOBJ is thus the following,
in the module description:
if test $HAVE_FOO = 0 || test $REPLACE_FOO = 1; then AC_LIBOBJ([foo]) gl_PREREQ_FOO fi
Important: Do not place AC_LIBOBJ invocations in the Autoconf
macros in the m4/ directory. The purpose of the Autoconf macros
is to determine what features or bugs the platform has, and to make
decisions about which replacements are needed. The purpose of the
configure.ac and Makefile.am sections of the module
descriptions is to arrange for the replacements to be compiled.
Source file names do not belong in the m4/ directory.
When an AC_LIBOBJ invocation is unconditional, it is simpler
to just have the source file compiled through an Automake variable
augmentation: In the Makefile.am section write
lib_SOURCES += foo.c
When a module description contains an AC_LIBOBJ([foo])
invocation, you must list the source file lib/foo.c
in the Files section. This is needed even if the module
depends on another module that already lists lib/foo.c in its
Files section – because your module might be used among
the test modules (in the directory specified through ‘--tests-base’)
and the other module among the main modules (in the directory specified
through ‘--source-base’), and in this situation, the
AC_LIBOBJ([foo]) of your module can only be satisfied by having
foo.c be present in the tests source directory as well.
Next: Incompatible changes, Previous: Using AC_LIBOBJ, Up: Writing modules [Contents][Index]
A unit test that is a simple C program usually has a module description as simple as this:
Files: tests/test-foo.c tests/macros.h Depends-on: configure.ac: Makefile.am: TESTS += test-foo check_PROGRAMS += test-foo
The test program tests/test-foo.c often has the following structure:
ASSERT macro.
The body of the test, then, contains many ASSERT invocations. When
a test fails, the ASSERT macro prints the line number of the failing
statement, thus giving you, the developer, an idea of which part of the test
failed, even when you don’t have access to the machine where the test failed
and the reporting user cannot run a debugger.
Sometimes it is convenient to write part of the test as a shell script. (For example, in areas related to process control or interprocess communication, or when different locales should be tried.) In these cases, the typical module description is like this:
Files: tests/test-foo.sh tests/test-foo.c tests/macros.h Depends-on: configure.ac: Makefile.am: TESTS += test-foo.sh TESTS_ENVIRONMENT += FOO_BAR='@FOO_BAR@' check_PROGRAMS += test-foo
Here, the TESTS_ENVIRONMENT variable can be used to pass values
determined by configure or by the Makefile to the shell
script, as environment variables. The Autoconf values EXEEXT
and srcdir are already provided as environment variables,
through an initial value of TESTS_ENVIRONMENT that
gnulib-tool puts in place.
Regardless of the specific form of the unit test, the following guidelines should be respected:
ASSERT macro already does so.
fputs ("Skipping test: multithreading not enabled\n", stderr);
return 77;
Such a message helps detecting bugs in the autoconf macros: A simple message ‘SKIP: test-foo’ does not sufficiently catch the attention of the user.
Previous: Unit test modules, Up: Writing modules [Contents][Index]
Incompatible changes to Gnulib modules should be mentioned in Gnulib’s NEWS file. Incompatible changes here mean that existing source code may not compile or work any more.
We don’t mean changes in the binary interface (ABI), since
Next: Miscellaneous Notes, Previous: Writing modules, Up: Top [Contents][Index]
Gnulib modules are intended to be suitable for widespread use. Most problems with Gnulib can and should be fixed in a generic way, so that all of Gnulib’s users can benefit from the change. But occasionally a problem arises that is difficult or undesirable to fix generically, or a project that uses Gnulib may need to work around an issue before the Gnulib maintainers commit a final fix. Maintainers may also want to add their own pools of modules to projects as Gnulib “staging areas.”
The obvious way to make local changes to Gnulib modules is to use
gnulib-tool to check out pristine modules, then to modify
the results in-place. This works well enough for short-lived
experiments. It is harder to keep modified versions of Gnulib modules
for a long time, even though Git (or another distributed version
control systems) can help out a lot with this during the development
process.
Git, however, doesn’t address the distribution issue. When a package
“foobar” needs a modified version of, say, stdint.in.h, it
either has to put a comment into foobar/autogen.sh saying
“Attention! This doesn’t work with a pristine Gnulib, you need this
and that patch after checking out Gnulib,” or it has to use the
‘--avoid=stdint-h’ option and provide the modified stdint-h
module in a different directory.
The --local-dir option to gnulib-tool solves this
problem. It allows the package to override or augment Gnulib. This
means:
gnulib-tool option --makefile-name.)
In a release tarball, you can distribute the contents of this --local-dir directory that will be combinable with newer versions of Gnulib, barring incompatible changes to Gnulib.
If the --local-dir=directory option is specified, then
gnulib-tool looks in directory whenever it
reads a file from the Gnulib directory. Suppose gnulib-tool
is looking for file. Then:
gnulib-tool uses
it instead of the file included in Gnulib.
gnulib-tool uses the file from Gnulib after applying the diff
using the patch program.
gnulib-tool uses the file included in Gnulib.
You can specify the --local-dir multiple times. In this case, the first specified directory has the highest precedence. That is, a file found in one directory will shadow any file and file.diff in the later directories and in the Gnulib directory. And a file file.diff found in one directory will be applied on top of the combination of file and file.diff files found in the later directories and in the Gnulib directory.
Please make wise use of this option. It also allows you to easily hold back modifications you make to Gnulib macros in cases it may be better to share them.
Next: POSIX Substitutes Library, Previous: Extending Gnulib, Up: Top [Contents][Index]
| • Out of memory handling | ||
| • Obsolete modules | ||
| • Extra tests modules | ||
| • Modules that modify the way other modules work | ||
| • A C++ namespace for gnulib | A different way of using Gnulib in C++ | |
| • License Texinfo sources | ||
| • Building gnulib | ||
| • Gnulib Git Bundle |
Next: Obsolete modules, Up: Miscellaneous Notes [Contents][Index]
The gnulib API does not have a standard error code for the out of memory error condition. Instead of adding a non-standard error code, gnulib has chosen to adopt a different strategy. Out of memory handling happens in rare situations, but performing the out of memory error handling after almost all API function invocations pollute your source code and might make it harder to spot more serious problems. The strategy chosen improves code readability and robustness.
For most applications, aborting the application with an error message when the out of memory situation occurs is the best that can be wished for. This is how the library behaves by default (using the ‘xalloc-die’ module).
However, we realize that some applications may not want to abort
execution in any situation. Gnulib supports a hook to let the
application regain control and perform its own cleanups when an out of
memory situation has occurred. The application can define a function
(having a void prototype, i.e., no return value and no
parameters) and set the library variable
xalloc_die to that function. The variable should be
declared as follows.
extern void (*xalloc_die) (void);
Gnulib will invoke this function if an out of memory error occurs. Note that the function should not return. Of course, care must be taken to not allocate more memory, as that will likely also fail.
Next: Extra tests modules, Previous: Out of memory handling, Up: Miscellaneous Notes [Contents][Index]
Modules can be marked obsolete. This means that the problems they fix
don’t occur any more on the platforms that are reasonable porting targets
now. gnulib-tool warns when obsolete modules are mentioned on the
command line, and by default ignores dependencies from modules to obsolete
modules. When you pass the option --with-obsolete to
gnulib-tool, dependencies to obsolete modules will be included,
however, unless blocked through an --avoid option. This option
is useful if your package should be portable even to very old platforms.
In order to mark a module obsolete, you need to add this to the module description:
Status: obsolete Notice: This module is obsolete.
Next: Modules that modify the way other modules work, Previous: Obsolete modules, Up: Miscellaneous Notes [Contents][Index]
Test modules can be marked with some special status attributes. When a
test module has such an attribute, gnulib-tool --import will not
include it by default.
The supported status attributes are:
c++-testIndicates that the test is testing C++ interoperability. Such a test is useful in a C++ or mixed C/C++ package, but is useless in a C package.
longrunning-testIndicates that the test takes a long time to compile or execute (more than five minutes or so). Such a test is better avoided in a release that is made for the general public.
privileged-testIndicates that the test will request special privileges, for example, ask for the superuser password. Such a test may hang when run non-interactively and is therefore better avoided in a release that is made for the general public.
unportable-testIndicates that the test is known to fail on some systems, and that there is no workaround about it. Such a test is better avoided in a release that is made for the general public.
gnulib-tool --import --with-tests will not include tests marked with
these attributes by default. When gnulib-tool is invoked with one
of the options --with-c++-tests, --with-longrunning-tests,
--with-privileged-tests, --with-unportable-tests, it
will include tests despite the corresponding special status attribute.
When gnulib-tool receives the option --with-all-tests,
it will include all tests regardless of their status attributes.
gnulib-tool --create-testdir --with-tests and
gnulib-tool --create-megatestdir --with-tests by default include all
tests of modules specified on the command line, regardless of their status
attributes. Tests of modules occurring as dependencies are not included
by default if they have one of these status attributes. The options
--with-c++-tests, --with-longrunning-tests,
--with-privileged-tests, --with-unportable-tests are
recognized here as well. Additionally, gnulib-tool also
understands the options --without-c++-tests,
--without-longrunning-tests, --without-privileged-tests,
--without-unportable-tests.
In order to mark a module with a status attribute, you need to add it to the module description, like this:
Status: longrunning-test
If only a part of a test deserves a particular status attribute, you
can split the module into a primary and a secondary test module,
say foo-tests and foo-extra-tests. Then add a dependency
from foo-tests to foo-extra-tests, and mark the
foo-extra-tests with the particular status attribute.
Next: A C++ namespace for gnulib, Previous: Extra tests modules, Up: Miscellaneous Notes [Contents][Index]
The normal way to design modules is that each module has its own code, and the module dependencies provide the facilities on which this code can rely. But sometimes it is necessary to use more advanced techniques. For example:
n against zero when you call malloc (n).
Be aware that these advanced techniques likely cause breakage in the
situation of multiple gnulib-tool invocations in the scope of a
single configure file. This is because the question “is module
B present?” does not have a unique answer in such situations.
gnulib-tool has support for these techniques in the situation of
--create-testdir (without option --two-configures),
which basically has two
gnulib-tool invocations, one for a set of modules that end up in
gllib, and one for the set of modules that end up in
gltests. But you should be aware that this does not cover the
general situation.
Which technique to use, depends on the answer to the question: “If my
module occurs among the modules of gltests, should it have an
effect on the modules in gllib?”
If the answer is “no”, your module description should invoke the
Autoconf macro gl_MODULE_INDICATOR. This Autoconf macro takes
one argument: the name of your module. The effect of
gl_MODULE_INDICATOR([my-module]) is to define, in
config.h, a C macro GNULIB_MY_MODULE that indicates
whether your macro is considered to be present. This works even when
your macro is used in gltests: GNULIB_MY_MODULE
will then evaluate to 1 in gltests but to 0 in gllib.
If the answer is “yes”, you have two techniques available. The first
one is to invoke a similar Autoconf macro, named
gl_MODULE_INDICATOR_FOR_TESTS. It works similarly. However,
when your macro is used in gltests, GNULIB_MY_MODULE
will evaluate to 1 both in gltests and in gllib.
The second one is to define a shell variable in the configure
file that tells whether your module is present, through use of
m4_divert_text. The Autoconf macros of a dependency module will
initialize this shell variable, through
‘m4_divert_text([DEFAULTS], [my_shell_var=no])’. The
Autoconf macros of your module will override this value, through
‘m4_divert_text([INIT_PREPARE], [my_shell_var=yes])’. Then
you can use my_shell_var in the Autoconf macros of both
modules. You can find more details about this technique in the Gnulib
module getopt-gnu.
Reminder: These techniques are advanced. They have the potential to cause lots of headaches if you apply them incorrectly.
Next: License Texinfo sources, Previous: Modules that modify the way other modules work, Up: Miscellaneous Notes [Contents][Index]
The function definitions provided by Gnulib (.c code) are meant
to be compiled by a C compiler. The header files (.h files),
on the other hand, can be used in either C or C++.
By default, when used in a C++ compilation unit, the .h files
declare the same symbols and overrides as in C mode, except that functions
defined by Gnulib or by the system are declared as ‘extern "C"’.
It is also possible to indicate to Gnulib to provide many of its symbols
in a dedicated C++ namespace. If you define the macro
GNULIB_NAMESPACE to an identifier, many functions will be defined
in the namespace specified by the identifier instead of the global
namespace. For example, after you have defined
#define GNULIB_NAMESPACE gnulib
at the beginning of a compilation unit, Gnulib’s <fcntl.h> header
file will make available the open function as gnulib::open.
The symbol open will still refer to the system’s open function,
with its platform specific bugs and limitations.
The symbols provided in the Gnulib namespace are those for which the
corresponding header file contains a _GL_CXXALIAS_RPL or
_GL_CXXALIAS_SYS macro invocation.
The benefits of this namespace mode are:
open has to be overridden, Gnulib normally does
#define open rpl_open. If your package has a class with a member
open, for example a class foo with a method foo::open,
then if you define this member in a compilation unit that includes
<fcntl.h> and use it in a compilation unit that does not include
<fcntl.h>, or vice versa, you will get a link error. Worse: You
will not notice this problem on the platform where the system’s open
function works fine. This problem goes away in namespace mode.
gnulib::open in your code, and you forgot to request the module
‘open’ from Gnulib, you will get a compilation error (regardless of
the platform).
The drawback of this namespace mode is that the system provided symbols in
the global namespace are still present, even when they contain bugs that
Gnulib fixes. For example, if you call open (...) in your code,
it will invoke the possibly buggy system function, even if you have
requested the module ‘open’ from gnulib-tool.
You can turn on the namespace mode in some compilation units and keep it turned off in others. This can be useful if your package consists of an application layer that does not need to invoke POSIX functions and an operating system interface layer that contains all the OS function calls. In such a situation, you will want to turn on the namespace mode for the application layer—to avoid many preprocessor macro definitions—and turn it off for the OS interface layer—to avoid the drawback of the namespace mode, mentioned above.
Next: Building gnulib, Previous: A C++ namespace for gnulib, Up: Miscellaneous Notes [Contents][Index]
Gnulib provides copies of the GNU GPL, GNU LGPL, GNU Affero GPL, and
GNU FDL licenses in Texinfo form. (The master location is
https://www.gnu.org/licenses/). These Texinfo documents do not
have any node names and structures built into them; for your manual,
you should @include them in an appropriate @node.
The conventional name for the GPL node is ‘Copying’ and for the FDL ‘GNU Free Documentation License’. The LGPL doesn’t seem to have a conventional node name.
Of course the license texts themselves should not be changed at all.
The recommended way to make use of these license files, consistently with current practice, is as follows:
To make use of the code license in your documentation, you may request
one of the modules gpl-3.0, gpl-2.0, lgpl-3.0,
lgpl-2.1, agpl-3.0, through a gnulib-tool invocation.
Or you may copy the relevant Texinfo file directly into your VCS repository.
Both approaches are equally good. The Texinfo file changes very rarely.
To make use of this documentation license, copy the relevant Texinfo
file (doc/fdl-1.3.texi) into your VCS repository. This makes
sure that anyone who receives a copy of your VCS repository has also
received a copy of the documentation license. In the documentation,
also state what are the Invariant Sections, the Front-Cover Texts, and
the Back-Cover Texts.
We recommend to place the licenses as appendices at the end of the
manual, right before any indices. For the FDL, we suggest the following
@menu entry:
* GNU Free Documentation License:: License for copying this manual
For any @detailmenu entries, we suggest the following:
Copying This Manual * GNU Free Documentation License:: Copying and sharing this manual
And for actual inclusion of the FDL itself, we suggest the following:
@node GNU Free Documentation License @appendix GNU Free Documentation License @include fdl.texi
Next: Gnulib Git Bundle, Previous: License Texinfo sources, Up: Miscellaneous Notes [Contents][Index]
If you wish to help the gnulib development effort with build logs for your favorite platform, you may perform these steps:
Install the proper development tools. To build and test all of
Gnulib, you will need development tools for the programming languages
C, C++, Python, and Perl, along with standard POSIX utilities such
as awk, make, and sh. You will also need
development tools that include Autoconf, Automake, Bison, Gettext,
Git, GNU M4, Gperf, Libtool, and Texinfo. Some of these tools are
needed only by some modules. More details can be found in Gnulib’s
DEPENDENCIES file.
See https://www.gnu.org/software/gnulib/ for how to get the current Gnulib sources via Git.
On a machine with GNU development tools installed and with a gnulib git checkout, use
gnulib-tool --create-testdir --with-tests --dir=...
Alternatively, pick a small set of modules and run
gnulib-tool --create-megatestdir --with-tests --dir=... autobuild MODULES
(You can’t do this with all of Gnulib at once: gnulib-tool would run
for a week and produce a directory that takes more than 100 GB, maybe even 1 TB,
of disk space.)
Transfer this directory to a build machine (HP-UX, Cygwin, or whatever). Often it is easier to transfer one file, and this can be achieved by running, inside the directory the following commands:
./configure make dist
And then transferring the dummy-0.tar.gz file.
On the build machine, run ./do-autobuild (or "nohup ./do-autobuild"). It creates a directory logs/ with a log file for each module.
Previous: Building gnulib, Up: Miscellaneous Notes [Contents][Index]
To provide a serialized archival copy of the Gnulib Git repository we publish Git Bundles (https://git-scm.com/docs/git-bundle) of Gnulib at https://ftp.gnu.org/gnu/gnulib/. These may be useful if Savannah happens to be offline or if you want to have a GnuPG signed confirmation of the Gnulib content.
The files are named like gnulib-YYYYMMDD.bundle, for example
gnulib-20250729.bundle, where YYYYMMDD corresponds to
the Git commit date (in UTC0) of the last commit on the master
branch in the bundle.
After downloading the Git bundle you may use it to create a local gnulib clone using normal Git commands:
wget -nv https://ftp.gnu.org/gnu/gnulib/gnulib-20250729.bundle git clone gnulib-20250729.bundle gnulib cd gnulib
Below are SHA-256 checksums of known releases:
9dae009ef9dd7cff17b74c0cda5d7a423e2ed98b4f5b7aa29a970565b0591c06 gnulib-20250303.bundle f01e423a7ef6b48e947fabd24bb11744204f4549342416e15dc64f427caa32e2 gnulib-20250729.bundle
Next to the Git Bundle is a GnuPG signature on the file, named
gnulib-YYYYMMDD.bundle.sig, which can be verified using GnuPG
as usual:
gpg --verify gnulib-20250729.bundle.sig
Or using the simpler gpgv tool like this:
gpgv gnulib-20250729.bundle.sig gnulib-20250729.bundle
The following GnuPG keys have signed releases:
sec> ed25519 2019-03-20 [SC] https://josefsson.org/key-20190320.txt
B1D2BD1375BECB784CF4F8C4D73CF638C53C06BE
uid [ultimate] Simon Josefsson <simon@josefsson.org>
We desire that the Gnulib Git bundles will be forever bit-by-bit reproducible for others from the official git repository. Currently gnulib maintainers may invoke the following commands to prepare and upload a Gnulib git bundle. We appreciate ideas on how to improve these set of commands (or the upstream Git tool) to make further supply-chain security related improvements.
cd $(mktemp -d)
REV=225973a89f50c2b494ad947399425182dd42618c # master branch commit to package
S1REV=475dd38289d33270d0080085084bf687ad77c74d # stable-202501 branch commit
S2REV=e8cc0791e6bb0814cf4e88395c06d5e06655d8b5 # stable-202507 branch commit
git clone https://git.savannah.gnu.org/git/gnulib.git
cd gnulib
git fsck # attempt to validate input
# Manually inspect that the new tree matches a trusted previous copy
git checkout -B master $REV # put $REV at master
# Add all stable-* branches locally:
for b in $(git branch -r | grep origin/stable- | sort --version-sort); do git checkout ${b#origin/}; done
git checkout -B stable-202501 $S1REV
git checkout -B stable-202507 $S2REV
git remote remove origin # drop some unrelated branches
git gc --prune=now # drop any unrelated commits, not clear this helps
git -c pack.threads=1 repack -adF
git -c 'pack.threads=1' bundle create gnulib.bundle --all
V=$(env TZ=UTC0 git show -s --date=format:%Y%m%d --pretty=%cd master)
mv gnulib.bundle gnulib-$V.bundle
build-aux/gnupload --to ftp.gnu.org:gnulib gnulib-$V.bundle
Next: Keyword Substitutes, Previous: Miscellaneous Notes, Up: Top [Contents][Index]
This section shows a radically different way to use Gnulib.
You can extract the ISO C / POSIX substitutes part of gnulib by running the command
gnulib-tool --create-testdir --source-base=lib \
--dir=/tmp/posixlib `posix-modules`
The command ‘posix-modules’ is found in the same directory as
gnulib-tool.
The resulting directory can be built on a particular platform,
independently of the program being ported. Then you can configure and
build any program, by setting CPPFLAGS and LDFLAGS at
configure time accordingly: set CPPFLAGS="-I.../posixlib/lib", plus
any essential type definitions and flags that you find in
.../posixlib/config.h, and set
LDFLAGS=".../posixlib/lib/libgnu.a".
This way of using Gnulib is useful when you don’t want to modify the program’s
source code, or when the program uses a mix between C and C++ sources
(requiring separate builds of the posixlib for the C compiler and
for the C++ compiler).
Next: Header File Substitutes, Previous: POSIX Substitutes Library, Up: Top [Contents][Index]
This chapter describes which keywords specified by ISO C are substituted by Gnulib.
| • alignof | alignas and alignof
| |
| • bool | bool, false, and true
| |
| • nullptr | nullptr
| |
| • static_assert | static_assert
|
Next: bool, Up: Keyword Substitutes [Contents][Index]
alignof and alignasGnulib module: alignasof
The alignasof module arranges for alignas and alignof
to be more like standard C.
Portability problems fixed by Gnulib:
<stdalign.h> must be included before
using alignas or alignof.
See stdalign.h.
Portability problems not fixed by Gnulib:
alignas is implementation
dependent, and implementations need not support alignments greater
than alignof (max_align_t).
alignas.
To test this, use the alignasof module
along with the #if conditional
(defined alignas || defined __alignas_is_defined
|| 202311 <= __STDC_VERSION__ || 201103 <= __cplusplus).
Platforms where alignas does not work include:
IBM XL C for AIX V16.1.
alignas must be an integer
constant like ‘8’, instead of an integer constant expression
like ‘4 + 4’ that evaluates to 8:
GCC 4.9.
alignas and alignof are macros.
Next: nullptr, Previous: alignof, Up: Keyword Substitutes [Contents][Index]
boolGnulib module: bool
Portability problems fixed by Gnulib:
bool, true, and false are not available:
gcc 12 and other compilers predating C23.
Portability problems not fixed by Gnulib:
Next: static_assert, Previous: bool, Up: Keyword Substitutes [Contents][Index]
nullptrGnulib module: nullptr
The nullptr module arranges for nullptr to act
like standard C and C++.
The nullptr keyword yields a null pointer. It differs from
the NULL macro, in that NULL might be an integer whereas
nullptr is of a special nullptr_t type with only one
value, namely nullptr itself. Using nullptr can help
some compilers emit more sensible warnings, can avoid the need to cast
a null pointer passed to a function prototyped with an ellipsis, and
removes the need to include <stddef.h> merely to define
NULL.
Portability problems fixed by Gnulib:
nullptr:
For C: GCC 12, Clang 15, and other pre-2023 C compilers.
For C++: pre-2011 C++ compilers.
nullptr is a sentinel argument:
GCC 13.2 and 14.0.
Portability problems not fixed by Gnulib:
nullptr is a macro instead of a keyword.
nullptr does not have the type nullptr_t.
In C, it has type void *; in C++ it has an integer type.
nullptr_t, so
null pointer type checking is more error prone. In C, _Generic
expressions cannot reliably distinguish the type of nullptr
from integer or void * types. C++ overloading has similar
limitations.
nullptr_t even when <stddef.h> is not
included. This bug is fixed in GCC 15.
Previous: nullptr, Up: Keyword Substitutes [Contents][Index]
static_assertGnulib module: assert-h
The assert-h module arranges for both static_assert and
<assert.h> to be like standard C. See assert.h.
Portability problems fixed by Gnulib:
static_assert.
<assert.h> must be included before
using static_assert.
Portability problems not fixed by Gnulib:
static_assert is a macro.
Next: Function Substitutes, Previous: Keyword Substitutes, Up: Top [Contents][Index]
This chapter describes which header files specified by ISO C or POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.
The notation “Gnulib module: —” means that Gnulib does not provide a
module providing a substitute for the header file. When the list
“Portability problems not fixed by Gnulib” is empty, such a module is
not needed: No portability problems are known. Otherwise, it indicates
that such a module would be useful but is not available: No one so far
found this header file important enough to contribute a substitute for it.
If you need this particular header file, you may write to
<bug-gnulib at gnu dot org>.
Next: arpa/inet.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/aio.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
off64_t is not defined on some platforms:
macOS 14, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, Minix 3.3.
Next: assert.h, Previous: aio.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/arpa_inet.h.html
Gnulib module: arpa_inet-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: complex.h, Previous: arpa/inet.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/assert.h.html
Gnulib module: assert-h
See also the Gnulib modules assert and verify.
Portability problems fixed by Gnulib:
<assert.h> must be included before using
static_assert. For example, GCC versions before 13 do not
support the static_assert keyword that was standardized by C23.
static_assert does not allow the second
string-literal argument to be omitted. For example, GCC versions
before 9.1 do not support the single-argument static_assert
that was standardized by C23 and C++17.
static_assert at all.
For example, GCC versions before 4.6 and G++ versions before 4.3
do not support the two-argument form, which was standardized
by C11 and C++11.
_Static_assert keyword or macro.
This portability problem should not matter with code using this
module, as such code should use static_assert instead.
Portability problems not fixed by Gnulib:
static_assert can also
be used within a struct or union specifier, in place of
an ordinary declaration of a member of the struct or union. The
Gnulib substitute can be used only as an ordinary declaration
in code intended to be portable to C99 or earlier.
static_assert is a keyword.
In C11 and C17 it is a macro. Any Gnulib substitute is also a macro.
assert can be applied to any scalar expression.
In C89, the argument to assert is of type int.
Next: cpio.h, Previous: assert.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/complex.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctype.h, Previous: complex.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/cpio.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: devctl.h, Previous: cpio.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/ctype.h.html
Gnulib module: ctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dirent.h, Previous: ctype.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/devctl.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dlfcn.h, Previous: devctl.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/dirent.h.html
Gnulib module: dirent-h
Portability problems fixed by Gnulib:
DT_DIR,
some do not:
Minix 3.1.8, AIX 7.2, HP-UX 11, Solaris 11.4, mingw.
DT_WHT is missing on many systems:
All systems where DT_DIR is missing, plus OpenBSD 7.5.
DTTOIF and IFTODT are missing on
many systems (however, the Gnulib replacement macros
may evaluate their arguments multiple times):
All systems where DT_DIR is missing, plus OpenBSD 7.5.
ino_t is missing on some platforms:
glibc 2.23 and others.
Portability problems not fixed by Gnulib:
struct dirent member named
d_type, some do not:
Minix 3.1.8, AIX 7.2, HP-UX 11, Solaris 11.4, mingw.
d_type, not every filesystem supports
d_type, and those lacking support will set it to DT_UNKNOWN.
DT_MQ,
DT_SEM, DT_SHM and DT_TMO are missing on many
platforms.
struct dirent member named d_namlen
containing the string length of d_name, but others do not:
glibc 2.23 on Linux, Minix 3.1.8, Solaris 11.4, Cygwin.
All of these, except Cygwin, have a member d_reclen instead,
that has a different semantics.
struct dirent member named d_off
containing a magic cookie suitable as an argument to seekdir,
but others do not:
glibc 2.23 on Hurd, macOS 11.1, FreeBSD 11.0, NetBSD 10.0, OpenBSD 7.5, AIX 5.1, HP-UX 11, Cygwin, mingw.
struct dirent member named
d_reclen containing the number of bytes in the directory entry
record, but others do not. This member has limited utility, as it is
an implementation detail.
Next: endian.h, Previous: dirent.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/dlfcn.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: errno.h, Previous: dlfcn.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/endian.h.html
Describes the platform’s endianness (byte ordering of words stored in memory).
Defines the macros BYTE_ORDER, LITTLE_ENDIAN, BIG_ENDIAN,
PDP_ENDIAN.
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fcntl.h, Previous: endian.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html
Gnulib module: errno-h
Portability problems fixed by Gnulib:
EOVERFLOW is not defined
on some platforms:
OpenBSD 4.0, mingw, MSVC 9.
ENOLINK is not defined
on some platforms:
OpenBSD 7.5, mingw, MSVC 9.
EMULTIHOP is not defined
on some platforms:
OpenBSD 7.5, mingw, MSVC 14.
ECANCELED is not defined on some platforms:
OpenBSD 4.0, Cygwin, mingw, MSVC 9.
ENOMSG, EIDRM, EPROTO, EBADMSG,
ENOTSUP are not defined on some platforms:
OpenBSD 4.0, mingw, MSVC 9.
ESTALE is not defined on some platforms:
mingw, MSVC 14.
EDQUOT is not defined on some platforms:
NonStop Kernel, mingw, MSVC 14.
ENETRESET, ECONNABORTED are not defined on some
platforms:
Minix 3.1.8, mingw, MSVC 9.
EWOULDBLOCK, ETXTBSY, ELOOP, ENOTSOCK,
EDESTADDRREQ, EMSGSIZE, EPROTOTYPE, ENOPROTOOPT,
EPROTONOSUPPORT, EOPNOTSUPP, EAFNOSUPPORT,
EADDRINUSE, EADDRNOTAVAIL, ENETDOWN, ENETUNREACH,
ECONNRESET, ENOBUFS, EISCONN, ENOTCONN,
ETIMEDOUT, ECONNREFUSED, EHOSTUNREACH, EALREADY,
EINPROGRESS are not defined on some platforms:
mingw, MSVC 9.
EOWNERDEAD, ENOTRECOVERABLE are not defined on
some platforms:
glibc/Linux 2.3.6, glibc/Hurd 2.15, glibc/kFreeBSD 2.15,
Mac OS X 10.5, FreeBSD 6.0, NetBSD 9.3, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin, mingw without pthreads-win32, MSVC 9.
ESOCKTNOSUPPORT is not defined on some platforms:
Haiku.
EILSEQ is not defined on some platforms:
LynxOS 178 2.2.2.
EEXIST and ENOTEMPTY have the same value on
some platforms:
AIX 7.3.
Portability problems not fixed by Gnulib:
INT_MIN through INT_MIN + 0xffff,
instead of being positive as POSIX requires:
Haiku.
Next: fenv.h, Previous: errno.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fcntl.h.html
Gnulib module: fcntl-h
Portability problems fixed by Gnulib:
pid_t is not defined on some platforms:
MSVC 14.
mode_t is not defined on some platforms:
MSVC 14.
off64_t is not defined on some platforms:
macOS 14, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Cygwin, Haiku, Minix 3.3.
Note: ‘O_EXEC’ is not suitable for opening a file descriptor
that you want to use with fchmod later, because
musl libc defines ‘O_EXEC’ to O_PATH and
Linux fchmod fails with error EBADF when given such a file
descriptor.
O_PATH on some platforms:
musl libc.
int on some platforms:
AIX 7.1 with XL C 12.1.
int on some
platforms:
Solaris 11.3.
Portability problems not fixed by Gnulib:
fcntl-h module defines ‘HAVE_WORKING_O_NOATIME’ to 1
on platforms where ‘O_NOATIME’ is known to work, and to 0 otherwise;
and similarly for ‘HAVE_WORKING_O_NOFOLLOW’ and ‘O_NOFOLLOW’:
Mac OS X 10.3.
O_CLOFORK,
FD_CLOFORK and F_DUPFD_CLOFORK,
they are not defined on most platforms:
glibc 2.42, musl libc, macOS 15.5, FreeBSD 14.2, NetBSD 10.1, OpenBSD 7.7, Minix 3.3.0, AIX 7.3, Solaris 11.3, Cygwin 3.6.2, mingw, MSVC 14.
Next: float.h, Previous: fcntl.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html
Gnulib module: fenv-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
FE_UPWARD is 0x100 and FE_DOWNWARD is 0x200,
whereas in MSVC 14.30, it’s the opposite.
Next: fmtmsg.h, Previous: fenv.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html
Gnulib module: float-h
Portability problems fixed by Gnulib:
int to long double in incorrect on some
platforms:
glibc 2.7 on Linux/SPARC64.
LDBL_* macros are incorrect on some platforms:
On OpenBSD 4.0 and MirBSD 10, they are the same as the values of the
DBL_* macros, although ‘long double’ is a larger type than
‘double’.
On FreeBSD/x86 6.4, they represent the incorrect 53-bit precision assumptions
in the compiler, not the real 64-bit precision at runtime.
On PowerPC with gcc 8.3 and the default -mabi=ibmlongdouble,
they don’t reflect the “double double” representation of long double
correctly; the non-IEEE representation is tricky, as it is a pair of
IEEE double values such that adding the two elements and
rounding to even yields the high element of the pair, and arithmetic
overflow has undefined behavior instead of reliably yielding infinity.
FLT_HAS_SUBNORM, FLT_DECIMAL_DIG, FLT_TRUE_MIN,
DBL_HAS_SUBNORM, DBL_DECIMAL_DIG, DBL_TRUE_MIN,
LDBL_HAS_SUBNORM, LDBL_DECIMAL_DIG, LDBL_TRUE_MIN,
that were added in ISO C 11, are missing on some platforms:
gcc 4.5.4, clang 7, Solaris 11.3 with Sun C.
LDBL_DECIMAL_DIG is missing on some platforms:
MSVC 14.
FLT_TRUE_MIN is not a float on some platforms:
AIX 7.1 with xlc.
FLT_IS_IEC_60559, FLT_NORM_MAX, FLT_SNAN,
DBL_IS_IEC_60559, DBL_NORM_MAX, DBL_SNAN,
LDBL_IS_IEC_60559, LDBL_NORM_MAX, LDBL_SNAN,
that were added in ISO C 23, are missing on some platforms:
gcc 14 without -std=c23 or -std=gnu23, clang 18, musl libc 1.2.5, AIX 7.3 with xlclang, Solaris 11.3 with Sun C, MSVC 14.
Portability problems not fixed by Gnulib:
FLT_ROUNDS is a constant expression and does not represent
the current rounding mode on some platforms:
glibc 2.11, HP-UX 11, mingw.
FLT_TRUE_MIN is not a constant on some platforms:
FreeBSD/x86.
FLT_SNAN, DBL_SNAN, LDBL_SNAN are not
constants on some platforms:
AIX 7.3 with xlclang, and all platforms which use the gnulib replacements.
Next: fnmatch.h, Previous: float.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fmtmsg.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ftw.h, Previous: fmtmsg.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fnmatch.h.html
Gnulib module: fnmatch-h, fnmatch-gnu
Portability problems fixed by Gnulib module fnmatch-h:
Portability problems fixed by Gnulib module fnmatch-gnu, together with module fnmatch-h:
FNM_LEADING_DIR and FNM_CASEFOLD are not defined
on some platforms:
AIX 7.2, HP-UX 11.31, Solaris 10.
FNM_EXTMATCH is not defined on all non-glibc platforms:
musl libc, macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.2, Minix 3.3, AIX 7.2, HP-UX 11.31, Solaris 11.4, Cygwin 3.4.6, Android 13.
FNM_FILE_NAME is not defined on some platforms:
NetBSD 10.0, AIX 7.2, HP-UX 11.31, Solaris 10.
Portability problems not fixed by Gnulib:
Next: glob.h, Previous: fnmatch.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/ftw.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: grp.h, Previous: ftw.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/glob.h.html
Gnulib module: glob-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: iconv.h, Previous: glob.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/grp.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inttypes.h, Previous: grp.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/iconv.h.html
Gnulib module: iconv
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: iso646.h, Previous: iconv.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/inttypes.h.html
Gnulib module: inttypes-h
Portability problems fixed by Gnulib:
imaxabs and imaxdiv are missing on some
platforms:
NetBSD 3.0, OpenBSD 3.8, AIX 5.1, HP-UX 11.
strtoimax and strtoumax are missing on some
platforms:
OpenBSD 3.8, AIX 5.1 (missing only strtoumax).
__STDC_FORMAT_MACROS to make visible the declarations of format
macros such as PRIdMAX.
Portability problems not fixed by Gnulib:
SCN*8, SCN*LEAST8, SCN*FAST8
are missing on some platforms:
mingw without __USE_MINGW_ANSI_STDIO.
PRIb*, PRIB*, SCNb*,
that were added in ISO C 23,
are missing on many platforms:
glibc 2.37 and many others.
Next: langinfo.h, Previous: inttypes.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/iso646.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: libgen.h, Previous: iso646.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/langinfo.h.html
Gnulib module: langinfo-h
Portability problems fixed by Gnulib:
CODESET is not defined on some platforms:
OpenBSD 3.8.
ALTMON_1 to ALTMON_12 are not defined on some
platforms:
glibc 2.26, musl libc, macOS 11.1, NetBSD 8.0, OpenBSD 7.5, AIX 7.2, HP-UX 11.31, Solaris 11.4, Haiku, Cygwin 2.9.
ABALTMON_1 to ABALTMON_12 are not defined on many
platforms:
glibc 2.42, musl libc, macOS 14, NetBSD 10.0, OpenBSD 7.6, AIX 7.3, HP-UX 11.31, Solaris 11.4, Haiku, Cygwin 3.5.
ERA, ERA_D_FMT, ERA_D_T_FMT,
ERA_T_FMT, ALT_DIGITS are not defined on some platforms:
OpenBSD 7.5.
Portability problems not fixed by Gnulib:
Next: libintl.h, Previous: langinfo.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/libgen.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
The Gnulib module dirname provides similar API, with functions
base_name and dir_name that also work with Windows file names.
Next: limits.h, Previous: libgen.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/libintl.h.html
Defines the macros __USE_GNU_GETTEXT,
__GNU_GETTEXT_SUPPORTED_REVISION, and declares the functions
gettext, dgettext, dcgettext,
ngettext, dngettext, dcngettext,
textdomain, bindtextdomain, bind_textdomain_codeset.
Documentation:
Gnulib module: gettext
Portability problems fixed by Gnulib, if GNU gettext is installed:
Portability problems not fixed by Gnulib:
Next: locale.h, Previous: libintl.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/limits.h.html
Gnulib module: limits-h or gethostname
Portability problems fixed by Gnulib module limits-h:
LLONG_MIN, LLONG_MAX, ULLONG_MAX are not
defined on some platforms:
older glibc systems (e.g. Fedora 1), AIX 5.1, HP-UX 11, OpenVMS.
MB_LEN_MAX is not defined on some platforms:
pcc 1.2.0.DEVEL 20220331.
WORD_BIT, LONG_BIT are not defined on some platforms:
glibc 2.11 without -D_GNU_SOURCE, Cygwin, mingw, MSVC 14.
CHAR_WIDTH are not defined on some platforms:
glibc 2.24, NetBSD 10.0, many others.
BOOL_MAX and BOOL_WIDTH are not defined on
some platforms:
glibc 2.32, many others.
BOOL_MAX is not defined with some compilers:
clang 15.0.6.
SSIZE_MAX is not defined on some platforms:
MSVC 14.
Portability problems fixed by Gnulib module gethostname:
HOST_NAME_MAX macro is not defined on some platforms:
macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
SSIZE_MAX has the wrong type,
albeit with the correct value:
32-bit glibc 2.24 (on some architectures), Cygwin 2.5.2.
For PATH_MAX, Gnulib provides a module pathmax with a header
file "pathmax.h". It defines PATH_MAX to a constant on
platforms with a file name length limit.
Next: math.h, Previous: limits.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/locale.h.html
Gnulib module: locale-h
Portability problems fixed by Gnulib:
locale_t type is not defined on some platforms:
glibc 2.11, macOS 11.1, FreeBSD 9.0, NetBSD 6.1, OpenBSD 6.1, Solaris 11.3, mingw, MSVC 14, Android 4.4.
struct lconv type does not contain any members on some platforms:
Android up to 2014.
struct lconv type does not contain the members
int_p_cs_precedes, int_p_sign_posn, int_p_sep_by_space,
int_n_cs_precedes, int_n_sign_posn, int_n_sep_by_space
on some platforms:
glibc, OpenBSD 4.9, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.
NULL macro that cannot be used in arbitrary
expressions:
NetBSD 5.0
Portability problems not fixed by Gnulib:
Next: monetary.h, Previous: locale.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/math.h.html
Gnulib module: math-h
Portability problems fixed by Gnulib:
int to long double in incorrect on some
platforms:
glibc 2.7 on Linux/SPARC64.
NAN is not defined on some platforms:
OpenBSD 4.0, AIX 5.1.
NAN is not exposed outside of C99 compilation on some
platforms:
glibc.
NAN and HUGE_VAL expand to a function address
rather than a floating point constant on some platforms:
Solaris 10.
HUGE_VALF and HUGE_VALL are not defined on some
platforms:
glibc/HPPA, glibc/SPARC, AIX 5.1, Solaris 9, MSVC 9.
FP_ILOGB0 and FP_ILOGBNAN are not defined on some
platforms:
NetBSD 5.1, AIX 5.1, Solaris 9, MSVC 9.
HUGE_VAL, HUGE_VALF, HUGE_VALL are not compile time
constants on some platforms:
FreeBSD 5.2, AIX 7.1.
INFINITY and NAN are not compile time constants
on some platforms:
FreeBSD 5.2, AIX 7.1.
INFINITY and NAN are of type double instead of float
on some platforms:
FreeBSD 7.1, mingw 5.0.
NAN, HUGE_VALL, and INFINITY are not
defined on some platforms:
OpenVMS.
Portability problems not fixed by Gnulib:
NAN is not a compile time constant with some compilers:
OpenVMS.
math_errhandling is not defined on some platforms:
glibc 2.11, OpenBSD 4.9, NetBSD 5.1, UP-UX 11, Cygwin 1.7.9, mingw, MSVC 9.
FP_ILOGB0 and FP_ILOGBNAN have wrong values on some
platforms:
Haiku before 2023-04-08.
Next: mqueue.h, Previous: math.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/monetary.h.html
Gnulib module: monetary-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ndbm.h, Previous: monetary.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/mqueue.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: net/if.h, Previous: mqueue.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/ndbm.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: netdb.h, Previous: ndbm.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/net_if.h.html
Gnulib module: net_if-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: netinet/in.h, Previous: net/if.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/netdb.h.html
Gnulib module: netdb-h
Portability problems fixed by Gnulib:
AI_ALL, AI_V4MAPPED
on some platforms:
NetBSD 10.0.
AI_ADDRCONFIG on some platforms:
NetBSD 5.0.
AI_NUMERICHOST on some platforms:
HP-UX 11.11.
AI_NUMERICSERV on some platforms:
macOS 10.5, HP-UX 11.11, mingw.
NI_MAXHOST on some platforms:
musl libc 1.2.4, OpenBSD 7.5.
Portability problems not fixed by Gnulib:
Next: netinet/tcp.h, Previous: netdb.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/netinet_in.h.html
Gnulib module: netinet_in-h
Portability problems fixed by Gnulib:
<sys/types.h> to be included first):
OpenBSD 4.6.
Portability problems not fixed by Gnulib:
Next: nl_types.h, Previous: netinet/in.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/netinet_tcp.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: poll.h, Previous: netinet/tcp.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/nl_types.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread.h, Previous: nl_types.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/poll.h.html
Gnulib module: poll-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pwd.h, Previous: poll.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/pthread.h.html
Gnulib module: pthread-h
Portability problems fixed by Gnulib:
strtok_r and
gmtime_r:
mingw 3.0.
Portability problems not fixed by Gnulib:
Next: regex.h, Previous: pthread.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/pwd.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched.h, Previous: pwd.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/regex.h.html
Gnulib module: regex
Portability problems fixed by Gnulib:
re_set_syntax and RE_SYNTAX_EMACS
are not declared or supported:
FreeBSD 14.2, OpenBSD 7.6, NetBSD 10.1, macOS 15,
Minix 3.3.0, AIX 7.3, HP-UX 11, Solaris 11.4.
RE_SYNTAX_EMACS is 0
even though it should be (RE_CHAR_CLASSES | RE_INTERVALS)
to be compatible with Emacs 21 (2001) and later:
glibc 2.42, Cygwin 2.6.x.
Portability problems not fixed by Gnulib:
<sys/types.h> to be included first.
Next: search.h, Previous: regex.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sched.h.html
Gnulib module: sched-h
Portability problems fixed by Gnulib:
pid_t on some platforms:
glibc 2.11, macOS 11.1.
struct sched_param is not defined on some platforms:
Haiku.
SCHED_FIFO, SCHED_RR, SCHED_OTHER are not defined on
some platforms:
Haiku.
Portability problems not fixed by Gnulib:
Next: semaphore.h, Previous: sched.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/search.h.html
Gnulib module: search-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setjmp.h, Previous: search.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/semaphore.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: signal.h, Previous: semaphore.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/setjmp.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: spawn.h, Previous: setjmp.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
Gnulib module: signal-h
Portability problems fixed by Gnulib:
volatile sig_atomic_t is rejected by older compilers on some
platforms:
AIX.
sigset_t is missing on some platforms:
MSVC 14.
sigset_t is only declared in <sys/types.h> on some platforms:
mingw.
struct sigaction and siginfo_t are missing on some
platforms:
mingw, MSVC 14.
pid_t is not defined on some platforms:
MSVC 14.
SIGPIPE is not defined on some platforms:
mingw, MSVC 14.
SA_RESETHAND and SA_RESTART are not defined
on some platforms:
NonStop.
sighandler_t (a GNU extension) is not defined on most non-glibc
platforms:
macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
SIGBUS is set to the same value as SIGSEGV,
rather than being a distinct signal, on some platforms:
Haiku.
Next: stdalign.h, Previous: signal.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/spawn.h.html
Gnulib module: spawn-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdarg.h, Previous: spawn.h, Up: Header File Substitutes [Contents][Index]
ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf sections 6.5.3.4, 6.7.5, 7.15.
C++11 specification:
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf section 18.10.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdalign.h.html
Gnulib module: alignasof
Portability problems fixed by Gnulib:
<stdalign.h> must be included before using
alignas or alignof. For example, GCC versions before 13 do not
support these keywords, which were standardized by C23.
On C23 and later platforms, <stdalign.h> has no effect and need
not be included.
(Gnulib-using code should not include
<stdalign.h> without also employing Gnulib’s now-deprecated
stdalign-h module.)
<stdalign.h> does not define alignof.
alignof macro returns too large values for
the types double and long long in GCC 4.7.0.
_Alignas and _Alignof keywords or macros.
This portability problem should not matter with code using this module,
as such code should use alignas and alignof instead.
<stdalign.h> defines the macros
__alignas_is_defined and
__alignof_is_defined to 1.
In C23, these macros are not defined.
This portability problem should not matter with code using Gnulib’s
alignasof module, as such code should use alignas and
alignof without checking these two macros. (Gnulib’s
now-deprecated stdalign-h module defines these two macros.)
alignas attribute in the
specifier-qualifier position of a member declaration.
Portability problems not fixed by Gnulib:
alignof must be a
parenthesized type. Recent versions of GCC support an extension in
which the operand can also be a unary expression, as with
sizeof. The Gnulib substitute does not support this extension.
alignof cannot be a structure type containing a
flexible array member.
alignas keyword or macro is not always supported.
Supported compilers include any compiler supporting C11 or later,
which includes GCC, IBM C, Sun C 5.9 and later,
and MSVC 7.0 and later.
alignas of auto variables (i.e.,
variables on the stack). They diagnose and ignore the alignment: Sun
C 5.11.
alignas
that are greater than 8: mingw.
alignas
to be a single integer constant, not an expression: MSVC 7.0 through
at least 10.0.
alignas. The bug is fixed in Sun C 5.15, also known as Oracle
Developer Studio 12.6 (2017).
alignas and alignof are reserved words;
they might be macros.
Next: stdatomic.h, Previous: stdalign.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdarg.h.html
Gnulib module: stdarg-h
Portability problems fixed by Gnulib:
va_copy to work.
Portability problems not fixed by Gnulib:
Next: stdbit.h, Previous: stdarg.h, Up: Header File Substitutes [Contents][Index]
ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdatomic.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdbool.h, Previous: stdatomic.h, Up: Header File Substitutes [Contents][Index]
POSIX :
Not in POSIX yet, but we expect it will be.
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.
Gnulib module: stdbit
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
typeof or equivalent, a call
to stdc_bit_floor and stdc_bit_ceil may yield a type
that is wider than its argument. Although C23 seems to allow this,
it differs from GNU behavior.
Next: stdckdint.h, Previous: stdbit.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdbool.h.html
Gnulib module: stdbool-h-c99
The stdbool-h-c99 module is present only for programs that
formerly used the old stdbool module for C99 compatibility,
and that for some reason cannot use the current bool module
for C23 compatibility.
Portability problems fixed by Gnulib:
true incorrectly on some platforms:
OpenBSD 4.7 with gcc 2.95.
Portability problems not fixed by Gnulib:
<stdbool.h> is included, or if
the program is intended to be compiled by a C++ compiler.
(With the advent of C23, ‘_Bool’ is obsolescent anyway.)
_Bool is a keyword or a typedef;
it might be a macro.
For example, C23 allows _Bool to be a macro.
Next: stddef.h, Previous: stdbool.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
Not in POSIX yet, but we expect it will be.
ISO draft C23
(https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.20.
Gnulib module: stdckdint-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
stdckdint.h macros can have side effects.
Next: stdint.h, Previous: stdckdint.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stddef.h.html
Gnulib module: stddef-h
Portability problems fixed by Gnulib:
unreachable, which was added in C23:
GCC 13, clang 15, AIX with xlc 12.1, Solaris with Sun C 5.15, and others.
max_align_t, which was added in C11:
NetBSD 8.0, Solaris 11.0, and others.
max_align_t does not have the expected alignment on some platforms:
NetBSD 8.0/x86, AIX 7.2 with xlc in 64-bit mode.
NULL macro that cannot be used in arbitrary
expressions:
NetBSD 5.0
NULL macro whose value does not have the size
of a pointer:
AIX 7.2 with xlc in 64-bit mode.
Portability problems not fixed by Gnulib:
nullptr_t,
which Gnulib cannot usefully emulate:
GCC 12, Clang 15, and other pre-2023 C compilers.
nullptr_t even when <stddef.h> is
not included:
GCC 14
offsetof macro that cannot be used in
arbitrary expressions:
Solaris 11.4
This problem can be worked around by parenthesizing the
offsetof expression in the unlikely case you use it with
sizeof or ‘[]’.
Next: stdio.h, Previous: stddef.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdint.h.html
Gnulib module: stdint-h
Portability problems fixed by Gnulib:
SIG_ATOMIC_MIN and SIG_ATOMIC_MAX are incorrect
on some platforms:
FreeBSD 6.2/ia64, FreeBSD 13.0/arm64.
WINT_MAX is incorrect on some platforms:
mingw.
INT8_MAX, UINT8_MAX etc. are not usable in
preprocessor expressions on some platforms:
HP-UX 11.23.
INTPTR_MAX and UINTPTR_MAX, although correctly
defined in <stdint.h>, are replaced by empty values when
<limits.h> or <inttypes.h> gets included later on some platforms:
Solaris 9 with GCC 4.5 or newer.
WCHAR_MIN and WCHAR_MAX are not defined in
<stdint.h> (only in <wchar.h>) on some platforms:
Dragonfly.
__STDC_CONSTANT_MACROS to make visible the definitions of
constant macros such as INTMAX_C, and one must define
__STDC_LIMIT_MACROS to make visible the definitions of limit
macros such as INTMAX_MAX.
SIZE_MAX has the wrong type,
albeit with the correct value:
32-bit glibc 2.24 (on s390 architecture), Mac OS X 10.7.
INTMAX_WIDTH are not defined on some platforms:
glibc 2.24, NetBSD 10.0, many others.
Portability problems not fixed by Gnulib:
{uint,int}_fast{8,16,32,64}_t may not correspond to the fastest
types available on the system.
Other <stdint.h> substitutes may define these types differently,
so public header files should avoid these types.
long int.
For example, as of 2007, Sun C mishandled #if LLONG_MIN < 0 on
a platform with 32-bit long int and 64-bit long long int;
this bug was fixed on or before Oracle Developer Studio 12.6
(Sun C 5.15 SunOS_sparc 2017/05/30).
Some older preprocessors mishandle constants ending in LL.
To work around these problems, compute the value of expressions like
LONG_MAX < LLONG_MAX at configure-time rather than at
#if-time.
The stdint-h module uses #include_next. If you wish to install
the generated stdint.h file under another name, typically in order to
be able to use some of the types defined by stdint.h in your public
header file, you could use the following Makefile.am-snippet:
BUILT_SOURCES += idn-int.h DISTCLEANFILES += idn-int.h nodist_include_HEADERS += idn-int.h idn-int.h: if test -n "$(STDINT_H)"; then \ sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \ else \ echo '#include <stdint.h>' > idn-int.h; \ fi
Next: stdlib.h, Previous: stdint.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdio.h.html
Gnulib module: stdio-h
Portability problems fixed by Gnulib:
off_t is not defined on some platforms:
glibc 2.8, eglibc 2.11.2 and others.
ssize_t is not defined on some platforms:
glibc 2.8, Mac OS X 10.5, Solaris 10, MSVC 14, and others.
va_list is not defined on some platforms:
glibc 2.8, OpenBSD 4.0, Solaris 11.4, and others.
off64_t is not defined on some platforms:
macOS 14, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Cygwin, Haiku, Minix 3.3.
NULL macro that cannot be used in arbitrary
expressions:
NetBSD 5.0
Portability problems not fixed by Gnulib:
Next: stdnoreturn.h, Previous: stdio.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdlib.h.html
Gnulib module: stdlib-h, system-posix
Portability problems fixed by the Gnulib module stdlib-h:
EXIT_SUCCESS and EXIT_FAILURE are not defined on
some platforms.
NULL macro that cannot be used in arbitrary
expressions:
NetBSD 5.0
MB_CUR_MAX causes link errors on some platforms:
Android NDK r16.
MB_CUR_MAX is too small (3 instead of 4) in UTF-8 locales
on some platforms:
Solaris 10.
Portability problems fixed by the Gnulib module system-posix:
WIFSIGNALED, WIFEXITED, WIFSTOPPED,
WTERMSIG, WEXITSTATUS, WNOHANG, WUNTRACED,
WSTOPSIG are not defined in this header file (only in
<sys/wait.h>) on some platforms:
MirBSD 10.
WCOREDUMP is not defined in this header file (only in
<sys/wait.h>) on some platforms:
glibc 2.42.
Portability problems not fixed by Gnulib:
once_flag, of the macro
ONCE_FLAG_INIT, and the declaration of the function
call_once, that are required by ISO C 23, are not provided.
To get them, import Gnulib module call_once and include
<threads.h> rather than <stdlib.h>.
WEXITSTATUS require an lvalue
argument on some platforms.
macOS 11.1.
Next: string.h, Previous: stdlib.h, Up: Header File Substitutes [Contents][Index]
ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.25.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdnoreturn.h.html
Gnulib module: stdnoreturn-h
Portability problems fixed by Gnulib:
<stdlib.h> and
<process.h>, on some platforms:
MSVC/clang.
Portability problems not fixed by Gnulib:
<stdnoreturn.h> and the noreturn macro are obsolescent in C23.
<stdnoreturn.h> cannot be #included in C++ mode on some platforms:
FreeBSD 13.1.
<stdnoreturn.h> should be #included before ‘_Noreturn’ is used.
_Noreturn is a reserved word;
it might be a macro.
lint is defined, standard headers define
_Noreturn (and therefore noreturn) to be a macro that
expands to the empty token sequence on some platforms:
Cygwin 2.5.1, FreeBSD 10.3.
noreturn expands to the empty token
sequence, to avoid problems with standard headers that use noreturn
in combination with __attribute__ or __declspec. Although
the resulting code operates correctly, the compiler is not informed whether
noreturn functions do not return, so it may generate incorrect
warnings at compile-time, or code that is slightly less optimized. This
problem does not occur with _Noreturn.
-Werror=old-style-declaration
requires _Noreturn or noreturn before the returned type
in a declaration, and therefore rejects valid but unusually-worded
declarations such as void _Noreturn foo (void);.
Next: strings.h, Previous: stdnoreturn.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/string.h.html
Gnulib module: string-h
Portability problems fixed by Gnulib:
NULL macro that cannot be used in arbitrary
expressions:
NetBSD 5.0
Portability problems not fixed by Gnulib:
Next: stropts.h, Previous: string.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/strings.h.html
Gnulib module: strings-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/ipc.h, Previous: strings.h, Up: Header File Substitutes [Contents][Index]
Removed in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stropts.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/mman.h, Previous: stropts.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_ipc.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/msg.h, Previous: sys/ipc.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_mman.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/resource.h, Previous: sys/mman.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_msg.h.html
Gnulib module: sys_msg-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/select.h, Previous: sys/msg.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_resource.h.html
Gnulib module: sys_resource-h
Portability problems fixed by Gnulib:
RUSAGE_SELF and
RUSAGE_CHILDREN constants:
OpenVMS.
Portability problems not fixed by Gnulib:
RLIM_SAVED_CUR or RLIM_SAVED_MAX.
Next: sys/sem.h, Previous: sys/resource.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_select.h.html
Gnulib module: sys_select-h
Portability problems fixed by Gnulib:
<sys/types.h> to be included first.
<string.h>
before FD_ZERO can be used—on some platforms:
AIX 7.1, Solaris 11.4.
Portability problems not fixed by Gnulib:
Next: sys/shm.h, Previous: sys/select.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_sem.h.html
Gnulib module: sys_sem-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/socket.h, Previous: sys/sem.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_shm.h.html
Gnulib module: sys_shm-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/stat.h, Previous: sys/shm.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_socket.h.html
Gnulib module: sys_socket-h
Portability problems fixed by Gnulib:
<sys/types.h> to be included first.
struct iovec on some platforms:
OpenBSD 4.4.
SHUT_RD, SHUT_WR,
SHUT_RDWR macros on some platforms, despite having the shutdown
functions:
emx+gcc.
struct sockaddr_storage type does not have a member ss_family
on some platforms:
AIX 7.1.
CMSG_SPACE and CMSG_LEN macros are not provided on some
platforms:
OpenVMS.
SO_REUSEPORT macro on some
platforms:
Minix 3.1.8, Solaris 10, Cygwin, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
msg_control and
msg_controllen members of struct msghdr on some
platforms. This can be detected by the absence of the
CMSG_FIRSTHDR macro:
gnulib replacement header, old BSD
SOCK_NONBLOCK
on some platforms:
macOS 15, AIX 7.3, Solaris 10, mingw, MSVC 14.
SOCK_CLOEXEC and
MSG_CMSG_CLOEXEC on some platforms:
macOS 15, AIX 7.3, Solaris 10, mingw, MSVC 14.
MSG_CMSG_CLOEXEC
on some platforms:
Solaris 11 OmniOS.
SOCK_CLOFORK and
MSG_CMSG_CLOFORK, no known platform supports them.
SO_DOMAIN on some platforms:
macOS 15, NetBSD 10.0, AIX 7.3, Cygwin 3.5, mingw, MSVC 14.
SO_PROTOCOL on some platforms:
macOS 15, NetBSD 10.0, AIX 7.3, Solaris 11.4, Cygwin 3.5, mingw, MSVC 14.
MSG_NOSIGNAL
on some platforms:
Solaris 10, mingw, MSVC 14.
MSG_EOR on some platforms:
mingw, MSVC 14.
MSG_CTRUNC and
MSG_TRUNC on some platforms:
mingw.
MSG_WAITALL on some platforms:
MSVC 14.
struct cmsghdr and
the constant SCM_RIGHTS on some platforms:
mingw, MSVC 14.
SOCK_CLOFORK
on some platforms:
glibc 2.42, musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Solaris 11.3, Cygwin, mingw, MSVC, Android.
MSG_CMSG_CLOFORK
on some platforms:
glibc 2.42, musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Solaris 11.4, Cygwin, mingw, MSVC, Android.
Next: sys/statvfs.h, Previous: sys/socket.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_stat.h.html
Gnulib module: sys_stat-h
Portability problems fixed by Gnulib module sys_stat-h:
mode_t is not defined on some platforms:
MSVC 14.
blksize_t is not defined on some platforms:
FreeBSD 5.5, OpenBSD 5.6, HP-UX 11.23, mingw, MSVC 14.
blkcnt_t is not defined on some platforms:
FreeBSD 5.5, OpenBSD 5.6, mingw, MSVC 14.
S_IFMT or S_IFIFO, are missing on some
platforms.
S_ISBLK, S_ISCHR, S_ISDIR, S_ISFIFO,
S_ISLNK, S_ISREG, S_ISSOCK are broken on some platforms.
S_ISDOOR, that are not defined
on other platforms.
lstat and mkdir are not declared on some platforms:
mingw, MSVC 14.
UTIME_NOW and UTIME_OMIT are missing on some
platforms.
struct stat does not include st_atim,
st_mtim, or st_ctim members.
Use the gnulib module
‘stat-time’ for accessors to portably get at subsecond resolution.
Portability problems fixed by Gnulib module sys_stat-h, together with module windows-stat-inodes:
st_ino is always 0.
On platforms where off_t is a 32-bit type, struct stat
cannot represent the size of files or block devices 2 GiB or lager
and may not work correctly on directories 2 GiB or larger.
Also, on platforms where ino_t is a 32-bit type,
struct stat cannot represent larger inode numbers.
See Large File Support, for how to address these problems.
See Avoiding the year 2038 problem, for portability issues with the
time_t components of struct stat.
Portability problems not fixed by Gnulib:
blksize_t and blkcnt_t are unsigned:
QNX, Android, glibc/alpha.
S_IFBLK is missing on some platforms:
MSVC 14.
st_ino is an array of three ino_t values,
not a single value.
b are known to represent the same file.
st_dev
and st_ino values, even when st_ino is nonzero:
st_dev exceeds 255, or if a local
st_ino exceeds 16777215.
st_size contains bogus information for
symlinks;
use the Gnulib module areadlink-with-size for a
better way to get symlink contents.
To partially work around porting problems with Microsoft Windows and OpenVMS,
you can use the Gnulib same-inode module to test whether two
struct stat objects are known to represent the same file.
For example, psame_inode (&a, &b) is true if the struct stat
objects a and b are known to represent the same file.
Another partial workaround is to compare other file metadata such as
st_mode and st_mtime on platforms where st_dev
and st_ino not uniquely identify a file. However, this does
not work reliably on files whose metadata are being changed by other
programs, or where the metadata happen to be equal.
Next: sys/time.h, Previous: sys/stat.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_statvfs.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/timeb.h, Previous: sys/statvfs.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_time.h.html
Gnulib module: sys_time-h
Portability problems fixed by Gnulib:
tv_sec type that is
narrower than time_t
on some native Windows platforms:
mingw64 in 64-bit mode,
mingw64 in 32-bit mode when __MINGW_USE_VC2005_COMPAT is defined,
MSVC 14 in 64-bit mode,
MSVC 14 in 32-bit mode when _USE_32BIT_TIME_T is not defined.
See Avoiding the year 2038 problem, for portability issues with
time_t and the time_t component of struct timeval.
Portability problems not fixed by Gnulib:
tv_sec type that is
wider than time_t:
OpenBSD 5.1 in 64-bit mode.
Next: sys/times.h, Previous: sys/time.h, Up: Header File Substitutes [Contents][Index]
Removed in POSIX.1-2008.
POSIX.1-2004 specification:
https://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/timeb.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/types.h, Previous: sys/timeb.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_times.h.html
Gnulib module: sys_times-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/uio.h, Previous: sys/times.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_types.h.html
Gnulib module: sys_types-h
Portability problems fixed by Gnulib:
pid_t is not defined on some platforms:
MSVC 14.
size_t is not defined in this file on some platforms:
MSVC 14.
ssize_t is not defined on some platforms:
MSVC 14.
mode_t is not defined on some platforms:
MSVC 14.
off64_t is not defined on some platforms:
macOS 14, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Cygwin, Haiku, Minix 3.3.
blksize_t is not defined on some platforms:
FreeBSD 5.5, OpenBSD 5.6, HP-UX 11.23, mingw, MSVC 14.
blkcnt_t is not defined on some platforms:
FreeBSD 5.5, OpenBSD 5.6, mingw, MSVC 14.
major, minor, and
makedev through this header; however, when
sys/sysmacros.h exists, that file should also be included to
avoid deprecation warnings from the versions in this header:
glibc 2.25.
See Avoiding the year 2038 problem, for portability issues with
time_t.
Portability problems not fixed by Gnulib:
blksize_t and blkcnt_t are unsigned:
QNX, Android, glibc/alpha.
blksize_t and suseconds_t
are signed integer types that are wider than long:
glibc x32
This module, together with the module largefile, also defines the type
off_t to a 64-bit integer type on some platforms:
mingw, MSVC 14.
Next: sys/un.h, Previous: sys/types.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_uio.h.html
Gnulib module: sys_uio-h
Portability problems fixed by Gnulib:
<sys/types.h> to be
included first) on some platforms:
OpenBSD 4.4.
Portability problems not fixed by Gnulib:
Next: sys/utsname.h, Previous: sys/uio.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_un.h.html
Gnulib module: sys_un-h
Portability problems fixed by Gnulib:
sa_family_t type on some platforms:
Cygwin 3.5.5, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
sys/socket.h to be included first on
some platforms:
Cygwin 1.7.18.
Next: sys/wait.h, Previous: sys/un.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_utsname.h.html
Gnulib module: sys_utsname-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: syslog.h, Previous: sys/utsname.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_wait.h.html
Gnulib module: sys_wait-h
Portability problems fixed by Gnulib:
WCOREDUMP macro on some platforms:
AIX 7.3, Haiku.
Portability problems not fixed by Gnulib:
WEXITSTATUS require an lvalue
argument on some platforms:
macOS 11.1.
Next: tar.h, Previous: sys/wait.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/syslog.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: termios.h, Previous: syslog.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/tar.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tgmath.h, Previous: tar.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/termios.h.html
Gnulib module: termios-h
Portability problems fixed by Gnulib:
pid_t on all platforms:
glibc on some architectures, FreeBSD 6.4, OpenBSD 4.9, Cygwin 1.7.11.
Portability problems not fixed by Gnulib:
struct termios, struct winsize, cc_t,
speed_t, tcflag_t are not defined on some platforms:
mingw, MSVC 14.
struct winsize is defined in sys/ioctl.h on some platforms:
glibc, AIX.
Next: threads.h, Previous: termios.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/tgmath.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: time.h, Previous: tgmath.h, Up: Header File Substitutes [Contents][Index]
ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/threads.h.html
Defines the multithreading facility of ISO C11.
Gnulib module: threads-h
Portability problems fixed by Gnulib:
thrd_start_t incorrectly on some platforms:
AIX 7.2.
TSS_DTOR_ITERATIONS on some platforms:
AIX 7.2.
Portability problems not fixed by Gnulib:
thread_local macro on some platforms:
Next: trace.h, Previous: threads.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/time.h.html
Gnulib module: time-h
Portability problems fixed by Gnulib:
TIME_UTC is not defined on many platforms:
glibc 2.15, macOS 10.13, FreeBSD 11.0, NetBSD 7.1, OpenBSD 6.0, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
NULL macro that cannot be used in arbitrary
expressions:
NetBSD 5.0.
Portability problems fixed by the Gnulib module year2038:
time_t defaults to 32-bit but can be
changed to 64-bit, functions like stat can fail with
errno == EOVERFLOW when a 32-bit timestamp is out of range,
such as with a file timestamp in the far future or past:
glibc 2.34+ atop 32-bit x86 or ARM Linux.
See Avoiding the year 2038 problem.
Portability problems not fixed by Gnulib:
struct tm lacks the the tm_gmtoff and
tm_zone members:
AIX 7.3, HP-UX 11, Solaris 11.4, mingw, MSVC 14.
daylight,
timezone and tzname are not available. Even on
platforms where they are available, their contents are often unreliable,
even in single-threaded programs.
Portable code can instead use struct tm’s tm_gmtoff and
tm_zone members when available, and the strftime function
with %z or %Z conversion specifiers otherwise.
time_t is always 32-bit, functions like
stat can fail with errno == EOVERFLOW when a timestamp
is out of range, such as with a file timestamp in the far future or
past; on other such platforms,
the functions silently return the low-order 32 bits of the correct
timestamp. These platforms will be obsolete when 32-bit time_t
rolls around, which will occur in 2038 for the typical case when
time_t is signed.
See Avoiding the year 2038 problem.
tv_nsec member of struct timespec
is not of type long, but is of type long long instead:
glibc x32
Next: uchar.h, Previous: time.h, Up: Header File Substitutes [Contents][Index]
Removed in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/trace.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ucontext.h, Previous: trace.h, Up: Header File Substitutes [Contents][Index]
ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.30.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/uchar.h.html
Defines the types char16_t, char32_t and declares the
functions mbrtoc16, c16rtomb, mbrtoc32,
c32rtomb.
Gnulib module: uchar-h or uchar-h-c23
Portability problems fixed by either Gnulib module uchar-h or uchar-h-c23:
Portability problems fixed by Gnulib module uchar-h-c23:
char32_t values may not be Unicode code points.
This is the case in ISO C 11 compliant but not ISO C 23 compliant
implementations.
Portability problems not fixed by Gnulib:
Next: ulimit.h, Previous: uchar.h, Up: Header File Substitutes [Contents][Index]
Removed in POSIX.1-2008.
POSIX.1-2004 specification:
https://pubs.opengroup.org/onlinepubs/009695399/basedefs/ucontext.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: unistd.h, Previous: ucontext.h, Up: Header File Substitutes [Contents][Index]
Removed in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/ulimit.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: utime.h, Previous: ulimit.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/unistd.h.html
Gnulib module: unistd-h
Portability problems fixed by Gnulib:
off64_t is not defined on some platforms:
macOS 14, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Cygwin, Haiku, Minix 3.3.
_exit function is not declared in this file on some platforms:
mingw.
O_CLOEXEC on some platforms:
glibc 2.42, macOS 12, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5, mingw.
NULL macro that cannot be used in arbitrary
expressions:
NetBSD 5.0
Portability problems not fixed by Gnulib:
Next: utmpx.h, Previous: unistd.h, Up: Header File Substitutes [Contents][Index]
Removed in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/utime.h.html
Gnulib module: utime-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: wchar.h, Previous: utime.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/utmpx.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
struct utmpx field ut_user,
older platforms have the field ut_name.
struct utmpx field ut_exit does not exist on some platforms:
macOS, FreeBSD, AIX, Cygwin.
struct utmpx field ut_session does not exist
on some platforms:
macOS, FreeBSD, AIX, HP-UX, Cygwin.
struct utmpx field ut_addr or ut_addr_v6 or
ut_ss does not exist on some platforms:
macOS, FreeBSD, AIX, Solaris.
struct utmpx field ut_tv is not
of type struct timeval. Instead, it is a different
struct with tv_sec and tv_usec members that may
have different types than the members of struct timeval:
glibc 2.42 on platforms where time_t was historically 32 bits
and where log file formats were not changed when 64-bit time_t
was introduced.
time_t
was historically 32 bits; later glibc versions support
timestamps up to the year 2106, by changing ut_tv.tv_sec’s type
to be a 32-bit unsigned integer.
year2038 or
year2038-recommended modules are used and the program is
configured without the --disable-year2038 option.
The readutmp module works around this problem:
glibc 2.38 on 32-bit platforms like x86 and ARM where time_t
was historically 32 bits.
See Avoiding the year 2038 problem.
Next: wctype.h, Previous: utmpx.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/wchar.h.html
Gnulib module: wchar-h
Portability problems fixed by Gnulib:
wint_t is incorrect on some platforms:
mingw, MSVC 14.
NULL macro that cannot be used in arbitrary
expressions:
NetBSD 5.0
Portability problems not fixed by Gnulib:
Next: wordexp.h, Previous: wchar.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/wctype.h.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
wint_t is incorrect on some platforms:
mingw, MSVC 14.
isw* are missing on some platforms:
FreeBSD 4.11.
Portability problems not fixed by Gnulib:
Previous: wctype.h, Up: Header File Substitutes [Contents][Index]
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/wordexp.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Legacy Function Substitutes, Previous: Header File Substitutes, Up: Top [Contents][Index]
This chapter describes which functions and function-like macros specified by ISO C (including ISO TS 18661-1) or POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.
The notation “Gnulib module: —” means that Gnulib does not provide a
module providing a substitute for the function. When the list
“Portability problems not fixed by Gnulib” is empty, such a module is
not needed: No portability problems are known. Otherwise, it indicates
that such a module would be useful but is not available: No one so far
found this function important enough to contribute a substitute for it.
If you need this particular function, you may write to
<bug-gnulib at gnu dot org>.
This list of functions is sorted according to the header that declares them.
Next: Functions in <arpa/inet.h>, Up: Function Substitutes [Contents][Index]
<aio.h>| • aio_cancel | ||
| • aio_error | ||
| • aio_fsync | ||
| • aio_read | ||
| • aio_return | ||
| • aio_suspend | ||
| • aio_write | ||
| • lio_listio |
Next: aio_error, Up: Functions in <aio.h> [Contents][Index]
aio_cancelPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/aio_cancel.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: aio_fsync, Previous: aio_cancel, Up: Functions in <aio.h> [Contents][Index]
aio_errorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/aio_error.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: aio_read, Previous: aio_error, Up: Functions in <aio.h> [Contents][Index]
aio_fsyncPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/aio_fsync.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: aio_return, Previous: aio_fsync, Up: Functions in <aio.h> [Contents][Index]
aio_readPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/aio_read.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: aio_suspend, Previous: aio_read, Up: Functions in <aio.h> [Contents][Index]
aio_returnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/aio_return.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: aio_write, Previous: aio_return, Up: Functions in <aio.h> [Contents][Index]
aio_suspendPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/aio_suspend.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: lio_listio, Previous: aio_suspend, Up: Functions in <aio.h> [Contents][Index]
aio_writePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/aio_write.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Previous: aio_write, Up: Functions in <aio.h> [Contents][Index]
lio_listioPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lio_listio.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: Functions in <assert.h>, Previous: Functions in <aio.h>, Up: Function Substitutes [Contents][Index]
<arpa/inet.h>| • htonl | ||
| • htons | ||
| • inet_addr | ||
| • inet_ntoa | ||
| • inet_ntop | ||
| • inet_pton | ||
| • ntohl | ||
| • ntohs |
Next: htons, Up: Functions in <arpa/inet.h> [Contents][Index]
htonlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/htonl.html
Gnulib module: htonl
Portability problems fixed by Gnulib:
<winsock2.h> instead of <arpa/inet.h>
on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
Next: inet_addr, Previous: htonl, Up: Functions in <arpa/inet.h> [Contents][Index]
htonsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/htons.html
Gnulib module: htonl
Portability problems fixed by Gnulib:
<winsock2.h> instead of <arpa/inet.h>
on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
Next: inet_ntoa, Previous: htons, Up: Functions in <arpa/inet.h> [Contents][Index]
inet_addrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/inet_addr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<winsock2.h> instead of <arpa/inet.h>
on some platforms:
mingw, MSVC 14.
inet_pton instead.
Next: inet_ntop, Previous: inet_addr, Up: Functions in <arpa/inet.h> [Contents][Index]
inet_ntoaPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/inet_ntoa.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<winsock2.h> instead of <arpa/inet.h>
on some platforms:
mingw, MSVC 14.
inet_ntop instead.
inet_ntoa function need not be reentrant, and consequently
is not required to be thread safe. Implementations of
inet_ntoa typically write the timestamp into static buffer.
If two threads call inet_ntoa at roughly the same time, you
might end up with the wrong date in one of the threads, or some
undefined string.
Note: inet_ntoa is specific for IPv4 addresses.
A protocol independent function is inet_ntop.
Next: inet_pton, Previous: inet_ntoa, Up: Functions in <arpa/inet.h> [Contents][Index]
inet_ntopPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/inet_ntop.html
Gnulib module: inet_ntop
Portability problems fixed by Gnulib:
<netdb.h> instead of <arpa/inet.h>
on some platforms:
NonStop Kernel.
<ws2tcpip.h>, with a POSIX incompatible
declaration, on some platforms:
MSVC 14 on Windows >= Vista.
Portability problems not fixed by Gnulib:
size_t instead of
socklen_t on some platforms:
Solaris 10.
Next: ntohl, Previous: inet_ntop, Up: Functions in <arpa/inet.h> [Contents][Index]
inet_ptonPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/inet_pton.html
Gnulib module: inet_pton
Portability problems fixed by Gnulib:
<netdb.h> instead of <arpa/inet.h>
on some platforms:
NonStop Kernel.
<ws2tcpip.h>, with a POSIX incompatible
declaration, on some platforms:
MSVC 14 on Windows >= Vista.
Portability problems not fixed by Gnulib:
Next: ntohs, Previous: inet_pton, Up: Functions in <arpa/inet.h> [Contents][Index]
ntohlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ntohl.html
Gnulib module: htonl
Portability problems fixed by Gnulib:
<winsock2.h> instead of <arpa/inet.h>
on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
Previous: ntohl, Up: Functions in <arpa/inet.h> [Contents][Index]
ntohsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ntohs.html
Gnulib module: htonl
Portability problems fixed by Gnulib:
<winsock2.h> instead of <arpa/inet.h>
on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
Next: Functions in <complex.h>, Previous: Functions in <arpa/inet.h>, Up: Function Substitutes [Contents][Index]
<assert.h>| • assert |
Up: Functions in <assert.h> [Contents][Index]
assertPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/assert.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Extension: Gnulib offers a module ‘assert’ that allows the installer to disable assertions through a ‘configure’ option: ‘--disable-assert’.
Next: Functions in <ctype.h>, Previous: Functions in <assert.h>, Up: Function Substitutes [Contents][Index]
<complex.h>| • CMPLX | ||
| • CMPLXF | ||
| • CMPLXL | ||
| • cabs | ||
| • cabsf | ||
| • cabsl | ||
| • cacos | ||
| • cacosf | ||
| • cacosh | ||
| • cacoshf | ||
| • cacoshl | ||
| • cacosl | ||
| • carg | ||
| • cargf | ||
| • cargl | ||
| • casin | ||
| • casinf | ||
| • casinh | ||
| • casinhf | ||
| • casinhl | ||
| • casinl | ||
| • catan | ||
| • catanf | ||
| • catanh | ||
| • catanhf | ||
| • catanhl | ||
| • catanl | ||
| • ccos | ||
| • ccosf | ||
| • ccosh | ||
| • ccoshf | ||
| • ccoshl | ||
| • ccosl | ||
| • cexp | ||
| • cexpf | ||
| • cexpl | ||
| • cimag | ||
| • cimagf | ||
| • cimagl | ||
| • clog | ||
| • clogf | ||
| • clogl | ||
| • conj | ||
| • conjf | ||
| • conjl | ||
| • cpow | ||
| • cpowf | ||
| • cpowl | ||
| • cproj | ||
| • cprojf | ||
| • cprojl | ||
| • creal | ||
| • crealf | ||
| • creall | ||
| • csin | ||
| • csinf | ||
| • csinh | ||
| • csinhf | ||
| • csinhl | ||
| • csinl | ||
| • csqrt | ||
| • csqrtf | ||
| • csqrtl | ||
| • ctan | ||
| • ctanf | ||
| • ctanh | ||
| • ctanhf | ||
| • ctanhl | ||
| • ctanl |
Next: CMPLXF, Up: Functions in <complex.h> [Contents][Index]
CMPLXISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.3.9.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/CMPLX.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: CMPLXL, Previous: CMPLX, Up: Functions in <complex.h> [Contents][Index]
CMPLXFISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.3.9.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/CMPLXF.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cabs, Previous: CMPLXF, Up: Functions in <complex.h> [Contents][Index]
CMPLXLISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.3.9.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/CMPLXL.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cabsf, Previous: CMPLXL, Up: Functions in <complex.h> [Contents][Index]
cabsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cabs.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cabsl, Previous: cabs, Up: Functions in <complex.h> [Contents][Index]
cabsfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cabsf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cacos, Previous: cabsf, Up: Functions in <complex.h> [Contents][Index]
cabslPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cabsl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cacosf, Previous: cabsl, Up: Functions in <complex.h> [Contents][Index]
cacosPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cacos.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cacosh, Previous: cacos, Up: Functions in <complex.h> [Contents][Index]
cacosfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cacosf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cacoshf, Previous: cacosf, Up: Functions in <complex.h> [Contents][Index]
cacoshPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cacosh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cacoshl, Previous: cacosh, Up: Functions in <complex.h> [Contents][Index]
cacoshfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cacoshf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cacosl, Previous: cacoshf, Up: Functions in <complex.h> [Contents][Index]
cacoshlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cacoshl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: carg, Previous: cacoshl, Up: Functions in <complex.h> [Contents][Index]
cacoslPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cacosl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cargf, Previous: cacosl, Up: Functions in <complex.h> [Contents][Index]
cargPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/carg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cargl, Previous: carg, Up: Functions in <complex.h> [Contents][Index]
cargfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cargf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: casin, Previous: cargf, Up: Functions in <complex.h> [Contents][Index]
carglPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cargl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: casinf, Previous: cargl, Up: Functions in <complex.h> [Contents][Index]
casinPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/casin.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: casinh, Previous: casin, Up: Functions in <complex.h> [Contents][Index]
casinfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/casinf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: casinhf, Previous: casinf, Up: Functions in <complex.h> [Contents][Index]
casinhPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/casinh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: casinhl, Previous: casinh, Up: Functions in <complex.h> [Contents][Index]
casinhfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/casinhf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: casinl, Previous: casinhf, Up: Functions in <complex.h> [Contents][Index]
casinhlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/casinhl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: catan, Previous: casinhl, Up: Functions in <complex.h> [Contents][Index]
casinlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/casinl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: catanf, Previous: casinl, Up: Functions in <complex.h> [Contents][Index]
catanPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catan.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: catanh, Previous: catan, Up: Functions in <complex.h> [Contents][Index]
catanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: catanhf, Previous: catanf, Up: Functions in <complex.h> [Contents][Index]
catanhPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catanh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: catanhl, Previous: catanh, Up: Functions in <complex.h> [Contents][Index]
catanhfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catanhf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: catanl, Previous: catanhf, Up: Functions in <complex.h> [Contents][Index]
catanhlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catanhl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ccos, Previous: catanhl, Up: Functions in <complex.h> [Contents][Index]
catanlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catanl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ccosf, Previous: catanl, Up: Functions in <complex.h> [Contents][Index]
ccosPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ccos.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ccosh, Previous: ccos, Up: Functions in <complex.h> [Contents][Index]
ccosfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ccosf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ccoshf, Previous: ccosf, Up: Functions in <complex.h> [Contents][Index]
ccoshPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ccosh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ccoshl, Previous: ccosh, Up: Functions in <complex.h> [Contents][Index]
ccoshfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ccoshf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ccosl, Previous: ccoshf, Up: Functions in <complex.h> [Contents][Index]
ccoshlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ccoshl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cexp, Previous: ccoshl, Up: Functions in <complex.h> [Contents][Index]
ccoslPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ccosl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cexpf, Previous: ccosl, Up: Functions in <complex.h> [Contents][Index]
cexpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cexp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cexpl, Previous: cexp, Up: Functions in <complex.h> [Contents][Index]
cexpfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cexpf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cimag, Previous: cexpf, Up: Functions in <complex.h> [Contents][Index]
cexplPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cexpl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cimagf, Previous: cexpl, Up: Functions in <complex.h> [Contents][Index]
cimagPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cimag.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cimagl, Previous: cimag, Up: Functions in <complex.h> [Contents][Index]
cimagfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cimagf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clog, Previous: cimagf, Up: Functions in <complex.h> [Contents][Index]
cimaglPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cimagl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clogf, Previous: cimagl, Up: Functions in <complex.h> [Contents][Index]
clogPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clog.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clogl, Previous: clog, Up: Functions in <complex.h> [Contents][Index]
clogfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clogf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: conj, Previous: clogf, Up: Functions in <complex.h> [Contents][Index]
cloglPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clogl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: conjf, Previous: clogl, Up: Functions in <complex.h> [Contents][Index]
conjPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/conj.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: conjl, Previous: conj, Up: Functions in <complex.h> [Contents][Index]
conjfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/conjf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cpow, Previous: conjf, Up: Functions in <complex.h> [Contents][Index]
conjlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/conjl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cpowf, Previous: conjl, Up: Functions in <complex.h> [Contents][Index]
cpowPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cpow.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cpowl, Previous: cpow, Up: Functions in <complex.h> [Contents][Index]
cpowfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cpowf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cproj, Previous: cpowf, Up: Functions in <complex.h> [Contents][Index]
cpowlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cpowl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cprojf, Previous: cpowl, Up: Functions in <complex.h> [Contents][Index]
cprojPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cproj.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cprojl, Previous: cproj, Up: Functions in <complex.h> [Contents][Index]
cprojfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cprojf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: creal, Previous: cprojf, Up: Functions in <complex.h> [Contents][Index]
cprojlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cprojl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: crealf, Previous: cprojl, Up: Functions in <complex.h> [Contents][Index]
crealPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/creal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: creall, Previous: creal, Up: Functions in <complex.h> [Contents][Index]
crealfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/crealf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csin, Previous: crealf, Up: Functions in <complex.h> [Contents][Index]
creallPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/creall.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csinf, Previous: creall, Up: Functions in <complex.h> [Contents][Index]
csinPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csin.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csinh, Previous: csin, Up: Functions in <complex.h> [Contents][Index]
csinfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csinf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csinhf, Previous: csinf, Up: Functions in <complex.h> [Contents][Index]
csinhPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csinh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csinhl, Previous: csinh, Up: Functions in <complex.h> [Contents][Index]
csinhfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csinhf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csinl, Previous: csinhf, Up: Functions in <complex.h> [Contents][Index]
csinhlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csinhl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csqrt, Previous: csinhl, Up: Functions in <complex.h> [Contents][Index]
csinlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csinl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csqrtf, Previous: csinl, Up: Functions in <complex.h> [Contents][Index]
csqrtPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csqrt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: csqrtl, Previous: csqrt, Up: Functions in <complex.h> [Contents][Index]
csqrtfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csqrtf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctan, Previous: csqrtf, Up: Functions in <complex.h> [Contents][Index]
csqrtlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/csqrtl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctanf, Previous: csqrtl, Up: Functions in <complex.h> [Contents][Index]
ctanPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctan.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctanh, Previous: ctan, Up: Functions in <complex.h> [Contents][Index]
ctanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctanhf, Previous: ctanf, Up: Functions in <complex.h> [Contents][Index]
ctanhPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctanh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctanhl, Previous: ctanh, Up: Functions in <complex.h> [Contents][Index]
ctanhfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctanhf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctanl, Previous: ctanhf, Up: Functions in <complex.h> [Contents][Index]
ctanhlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctanhl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ctanhl, Up: Functions in <complex.h> [Contents][Index]
ctanlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctanl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <devctl.h>, Previous: Functions in <complex.h>, Up: Function Substitutes [Contents][Index]
<ctype.h>| • isalnum | ||
| • isalnum_l | ||
| • isalpha | ||
| • isalpha_l | ||
| • isblank | ||
| • isblank_l | ||
| • iscntrl | ||
| • iscntrl_l | ||
| • isdigit | ||
| • isdigit_l | ||
| • isgraph | ||
| • isgraph_l | ||
| • islower | ||
| • islower_l | ||
| • isprint | ||
| • isprint_l | ||
| • ispunct | ||
| • ispunct_l | ||
| • isspace | ||
| • isspace_l | ||
| • isupper | ||
| • isupper_l | ||
| • isxdigit | ||
| • isxdigit_l | ||
| • tolower | ||
| • tolower_l | ||
| • toupper | ||
| • toupper_l |
Next: isalnum_l, Up: Functions in <ctype.h> [Contents][Index]
isalnumPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isalnum.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isalnumThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswalnumThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isalnumThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isalnum’.
mb_isalnumThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_alnumThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-alnum’.
Next: isalpha, Previous: isalnum, Up: Functions in <ctype.h> [Contents][Index]
isalnum_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isalnum_l.html
Gnulib module: isalnum_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isalpha_l, Previous: isalnum_l, Up: Functions in <ctype.h> [Contents][Index]
isalphaPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isalpha.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isalphaThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswalphaThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isalphaThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isalpha’.
mb_isalphaThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_alphaThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-alpha’.
Next: isblank, Previous: isalpha, Up: Functions in <ctype.h> [Contents][Index]
isalpha_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isalpha_l.html
Gnulib module: isalpha_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isblank_l, Previous: isalpha_l, Up: Functions in <ctype.h> [Contents][Index]
isblankPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isblank.html
Gnulib module: isblank
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isblankThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswblankThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isblankThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isblank’.
mb_isblankThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_blankThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-blank’.
Next: iscntrl, Previous: isblank, Up: Functions in <ctype.h> [Contents][Index]
isblank_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isblank_l.html
Gnulib module: isblank_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: iscntrl_l, Previous: isblank_l, Up: Functions in <ctype.h> [Contents][Index]
iscntrlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iscntrl.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_iscntrlThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswcntrlThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32iscntrlThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32iscntrl’.
mb_iscntrlThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_cntrlThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-cntrl’.
Next: isdigit, Previous: iscntrl, Up: Functions in <ctype.h> [Contents][Index]
iscntrl_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iscntrl_l.html
Gnulib module: iscntrl_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isdigit_l, Previous: iscntrl_l, Up: Functions in <ctype.h> [Contents][Index]
isdigitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isdigit.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isdigitThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswdigitThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isdigitThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isdigit’.
mb_isdigitThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_digitThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-digit’.
Next: isgraph, Previous: isdigit, Up: Functions in <ctype.h> [Contents][Index]
isdigit_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isdigit_l.html
Gnulib module: isdigit_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isgraph_l, Previous: isdigit_l, Up: Functions in <ctype.h> [Contents][Index]
isgraphPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isgraph.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isgraphThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswgraphThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isgraphThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isgraph’.
mb_isgraphThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_graphThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-graph’.
Next: islower, Previous: isgraph, Up: Functions in <ctype.h> [Contents][Index]
isgraph_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isgraph_l.html
Gnulib module: isgraph_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: islower_l, Previous: isgraph_l, Up: Functions in <ctype.h> [Contents][Index]
islowerPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/islower.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_islowerThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswlowerThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32islowerThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32islower’.
mb_islowerThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_lowerThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-lower’.
Next: isprint, Previous: islower, Up: Functions in <ctype.h> [Contents][Index]
islower_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/islower_l.html
Gnulib module: islower_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isprint_l, Previous: islower_l, Up: Functions in <ctype.h> [Contents][Index]
isprintPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isprint.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isprintThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswprintThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isprintThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isprint’.
mb_isprintThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_printThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-print’.
Next: ispunct, Previous: isprint, Up: Functions in <ctype.h> [Contents][Index]
isprint_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isprint_l.html
Gnulib module: isprint_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ispunct_l, Previous: isprint_l, Up: Functions in <ctype.h> [Contents][Index]
ispunctPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ispunct.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_ispunctThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswpunctThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32ispunctThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32ispunct’.
mb_ispunctThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_punctThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-punct’.
Next: isspace, Previous: ispunct, Up: Functions in <ctype.h> [Contents][Index]
ispunct_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ispunct_l.html
Gnulib module: ispunct_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isspace_l, Previous: ispunct_l, Up: Functions in <ctype.h> [Contents][Index]
isspacePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isspace.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isspaceThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswspaceThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isspaceThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isspace’.
mb_isspaceThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_spaceThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-space’.
Next: isupper, Previous: isspace, Up: Functions in <ctype.h> [Contents][Index]
isspace_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isspace_l.html
Gnulib module: isspace_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isupper_l, Previous: isspace_l, Up: Functions in <ctype.h> [Contents][Index]
isupperPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isupper.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isupperThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswupperThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isupperThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isupper’.
mb_isupperThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_upperThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-upper’.
Next: isxdigit, Previous: isupper, Up: Functions in <ctype.h> [Contents][Index]
isupper_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isupper_l.html
Gnulib module: isupper_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isxdigit_l, Previous: isupper_l, Up: Functions in <ctype.h> [Contents][Index]
isxdigitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isxdigit.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are five alternative APIs:
c_isxdigitThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
iswxdigitThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32isxdigitThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32isxdigit’.
mb_isxdigitThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
uc_is_xdigitThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-xdigit’.
Next: tolower, Previous: isxdigit, Up: Functions in <ctype.h> [Contents][Index]
isxdigit_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isxdigit_l.html
Gnulib module: isxdigit_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tolower_l, Previous: isxdigit_l, Up: Functions in <ctype.h> [Contents][Index]
tolowerPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tolower.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are four alternative APIs:
c_tolowerThis function operates in a locale independent way and returns a different value than the argument only for uppercase ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
towlowerThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32tolowerThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32tolower’.
uc_tolowerThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unicase/tolower’.
Next: toupper, Previous: tolower, Up: Functions in <ctype.h> [Contents][Index]
tolower_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tolower_l.html
Gnulib module: tolower_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: toupper_l, Previous: tolower_l, Up: Functions in <ctype.h> [Contents][Index]
toupperPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/toupper.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but does not support
the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are four alternative APIs:
c_toupperThis function operates in a locale independent way and returns a different value than the argument only for lowercase ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
towupperThis function operates in a locale dependent way, on wide characters. In
order to use it, you first have to convert from multibyte to wide characters,
using the mbrtowc function. It is provided by the Gnulib module
‘wctype’.
c32toupperThis function operates in a locale dependent way, on 32-bit wide characters.
In order to use it, you first have to convert from multibyte to 32-bit wide
characters, using the mbrtoc32 function. It is provided by the
Gnulib module ‘c32toupper’.
uc_toupperThis function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unicase/toupper’.
Previous: toupper, Up: Functions in <ctype.h> [Contents][Index]
toupper_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/toupper_l.html
Gnulib module: toupper_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <dirent.h>, Previous: Functions in <ctype.h>, Up: Function Substitutes [Contents][Index]
<devctl.h>| • posix_devctl |
Up: Functions in <devctl.h> [Contents][Index]
posix_devctlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_devctl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <dlfcn.h>, Previous: Functions in <devctl.h>, Up: Function Substitutes [Contents][Index]
<dirent.h>| • alphasort | ||
| • closedir | ||
| • dirfd | ||
| • fdopendir | ||
| • opendir | ||
| • posix_getdents | ||
| • readdir | ||
| • readdir_r | ||
| • rewinddir | ||
| • scandir | ||
| • seekdir | ||
| • telldir |
Next: closedir, Up: Functions in <dirent.h> [Contents][Index]
alphasortPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/alphasort.html
Gnulib module: alphasort
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
const void * on some platforms:
glibc 2.3.6, macOS 10.7, FreeBSD 6.0, NetBSD 7.1, OpenBSD 7.5.
void * on some platforms:
AIX 5.1.
Next: dirfd, Previous: alphasort, Up: Functions in <dirent.h> [Contents][Index]
closedirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/closedir.html
Gnulib module: closedir
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fdopendir, Previous: closedir, Up: Functions in <dirent.h> [Contents][Index]
dirfdPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dirfd.html
Gnulib module: dirfd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
dirfd macro but no function, and the macro does not
work with an argument of type void *, as a function would:
NetBSD 9.2.
Next: opendir, Previous: dirfd, Up: Functions in <dirent.h> [Contents][Index]
fdopendirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fdopendir.html
Gnulib module: fdopendir
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_getdents, Previous: fdopendir, Up: Functions in <dirent.h> [Contents][Index]
opendirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/opendir.html
Gnulib module: opendir
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on huge directories 2 GiB and larger. Also, on platforms
where ino_t is a 32-bit type, this function may report inode numbers
incorrectly. See Large File Support.
Portability problems not fixed by Gnulib:
Next: readdir, Previous: opendir, Up: Functions in <dirent.h> [Contents][Index]
posix_getdentsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_getdents.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: readdir_r, Previous: posix_getdents, Up: Functions in <dirent.h> [Contents][Index]
readdirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/readdir.html
Gnulib module: readdir
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on huge directories 2 GiB and larger. Also, on platforms
where ino_t is a 32-bit type, this function may report inode numbers
incorrectly. This can occur with file systems such as XFS (typically on
large disks) and NFS. See Large File Support.
Portability problems not fixed by Gnulib:
d_ino values, some
older systems are rumored to return d_ino values equal to zero
for directory entries that do not really exist. Although Gnulib
formerly attempted to cater to these older systems, this caused
misbehavior on standard systems and so Gnulib does not attempt to
cater to them any more. If you know of any problems caused by this,
please send a bug report.
errno to ENOENT
instead of leaving errno alone to indicate EOF:
glibc 2.2.5.
Next: rewinddir, Previous: readdir, Up: Functions in <dirent.h> [Contents][Index]
readdir_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/readdir_r.html
Gnulib module: extensions
Portability problems fixed by Gnulib:
readdir.
_POSIX_PTHREAD_SEMANTICS is not defined).
off_t is a 32-bit type, this function may not
work correctly on huge directories 2 GiB and larger. Also, on platforms
where ino_t is a 32-bit type, this function may report inode numbers
incorrectly. This can occur with file systems such as XFS (typically on
large disks) and NFS. See Large File Support.
Portability problems not fixed by Gnulib:
errno to ENOENT
instead of leaving errno alone to indicate EOF:
glibc 2.2.5.
Next: scandir, Previous: readdir_r, Up: Functions in <dirent.h> [Contents][Index]
rewinddirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rewinddir.html
Gnulib module: rewinddir
Portability problems fixed by Gnulib:
long int is a 32-bit type, this function may
not work correctly on huge directories 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
Next: seekdir, Previous: rewinddir, Up: Functions in <dirent.h> [Contents][Index]
scandirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/scandir.html
Gnulib module: scandir
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on huge directories 2 GiB and larger. Also, on platforms
where ino_t is a 32-bit type, this function may report inode numbers
incorrectly. See Large File Support.
Portability problems not fixed by Gnulib:
int (*) (const void *, const void *) on some platforms:
glibc 2.3.6, macOS 10.7, FreeBSD 6.0, NetBSD 7.1, OpenBSD 7.5.
int (*) (void *, void *) on some platforms:
AIX 5.1.
Next: telldir, Previous: scandir, Up: Functions in <dirent.h> [Contents][Index]
seekdirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/seekdir.html
Gnulib module: —
Portability problems fixed by Gnulib:
long int is a 32-bit type, this function may not
work correctly on huge directories 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
Previous: seekdir, Up: Functions in <dirent.h> [Contents][Index]
telldirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/telldir.html
Gnulib module: —
Portability problems fixed by Gnulib:
long int is a 32-bit type, this function may not
work correctly on huge directories 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
Next: Functions in <endian.h>, Previous: Functions in <dirent.h>, Up: Function Substitutes [Contents][Index]
<dlfcn.h>| • dladdr | ||
| • dlclose | ||
| • dlerror | ||
| • dlopen | ||
| • dlsym |
Next: dlclose, Up: Functions in <dlfcn.h> [Contents][Index]
dladdrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dladdr.html
Documentation:
man dladdr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dlerror, Previous: dladdr, Up: Functions in <dlfcn.h> [Contents][Index]
dlclosePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dlclose.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dlopen, Previous: dlclose, Up: Functions in <dlfcn.h> [Contents][Index]
dlerrorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dlerror.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dlsym, Previous: dlerror, Up: Functions in <dlfcn.h> [Contents][Index]
dlopenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dlopen.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dlopen-1.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: dlopen, Up: Functions in <dlfcn.h> [Contents][Index]
dlsymPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dlsym.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dlsym-1.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <errno.h>, Previous: Functions in <dlfcn.h>, Up: Function Substitutes [Contents][Index]
<endian.h>| • be16toh | ||
| • be32toh | ||
| • be64toh | ||
| • htobe16 | ||
| • htobe32 | ||
| • htobe64 | ||
| • htole16 | ||
| • htole32 | ||
| • htole64 | ||
| • le16toh | ||
| • le32toh | ||
| • le64toh |
Next: be32toh, Up: Functions in <endian.h> [Contents][Index]
be16tohPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/be16toh.html
Documentation:
man be16toh
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: be64toh, Previous: be16toh, Up: Functions in <endian.h> [Contents][Index]
be32tohPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/be32toh.html
Documentation:
man be32toh
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: htobe16, Previous: be32toh, Up: Functions in <endian.h> [Contents][Index]
be64tohPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/be64toh.html
Documentation:
man be64toh
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: htobe32, Previous: be64toh, Up: Functions in <endian.h> [Contents][Index]
htobe16POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/htobe16.html
Documentation:
man htobe16
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: htobe64, Previous: htobe16, Up: Functions in <endian.h> [Contents][Index]
htobe32POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/htobe32.html
Documentation:
man htobe32
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: htole16, Previous: htobe32, Up: Functions in <endian.h> [Contents][Index]
htobe64POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/htobe64.html
Documentation:
man htobe64
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: htole32, Previous: htobe64, Up: Functions in <endian.h> [Contents][Index]
htole16POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/htole16.html
Documentation:
man htole16
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: htole64, Previous: htole16, Up: Functions in <endian.h> [Contents][Index]
htole32POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/htole32.html
Documentation:
man htole32
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: le16toh, Previous: htole32, Up: Functions in <endian.h> [Contents][Index]
htole64POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/htole64.html
Documentation:
man htole64
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: le32toh, Previous: htole64, Up: Functions in <endian.h> [Contents][Index]
le16tohPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/le16toh.html
Documentation:
man le16toh
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: le64toh, Previous: le16toh, Up: Functions in <endian.h> [Contents][Index]
le32tohPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/le32toh.html
Documentation:
man le32toh
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: le32toh, Up: Functions in <endian.h> [Contents][Index]
le64tohPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/le64toh.html
Documentation:
man le64toh
Gnulib module: endian
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <fcntl.h>, Previous: Functions in <endian.h>, Up: Function Substitutes [Contents][Index]
<errno.h>| • errno |
Up: Functions in <errno.h> [Contents][Index]
errnoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/errno.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno; their error code is
available through WSAGetLastError() instead.
Next: Functions in <fenv.h>, Previous: Functions in <errno.h>, Up: Function Substitutes [Contents][Index]
<fcntl.h>| • creat | ||
| • fcntl | ||
| • open | ||
| • openat | ||
| • posix_fadvise | ||
| • posix_fallocate |
Next: fcntl, Up: Functions in <fcntl.h> [Contents][Index]
creatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/creat.html
Gnulib module: creat
Portability problems fixed by Gnulib:
off_t is a 32-bit type, creat may not work
correctly with files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
O_TEXT mode. If you
need a file handle in O_BINARY mode, you need to use the function
open instead.
Next: open, Previous: creat, Up: Functions in <fcntl.h> [Contents][Index]
fcntlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fcntl.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fcntl-3.html
Gnulib module: fcntl
Portability problems fixed by Gnulib:
F_DUPFD_CLOEXEC on some
platforms:
glibc with Linux kernels before 2.6.24,
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 7.5, AIX 7.1, HP-UX 11,
Solaris 11 2010-11, Cygwin 1.7.1.
Note that the gnulib replacement code is functional but not atomic.
F_DUPFD_CLOEXEC action of this function does not set the
FD_CLOEXEC flag on some platforms:
NetBSD 10.0.
F_DUPFD_CLOEXEC action of this function sets the
FD_CLOEXEC flag on the wrong file descriptor on some platforms:
Haiku.
F_DUPFD action of this function does not reject
out-of-range targets properly on some platforms:
AIX 7.1, Cygwin 1.5.x, Haiku.
F_DUPFD action of this function mistakenly clears
FD_CLOEXEC on the source descriptor on some platforms:
Haiku.
Portability problems not fixed by Gnulib:
F_SETFD,
F_GETFL, F_SETFL, F_GETOWN, F_SETOWN,
F_GETLK, F_SETLK, and F_SETLKW on some platforms:
mingw, MSVC 14.
F_SETLK and
F_SETLKW fail with errno set to different values on
different systems: EINVAL on OpenIndiana (as suggested by the
POSIX 1003.1-2017 fcntl specification), ENOLCK on
GNU/Linux, and EOPNOTSUPP on FreeBSD.
Next: openat, Previous: fcntl, Up: Functions in <fcntl.h> [Contents][Index]
openPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/open.html
Gnulib module: open, fchdir
Portability problems fixed by the Gnulib module open:
O_CLOEXEC:
Mac OS X 10.6, FreeBSD 8.4, NetBSD 5.1, OpenBSD 4.9, Minix 3.1.8, AIX 7.1, HP-UX 11, Solaris 10, Cygwin 1.7.x, mingw, MSVC 14.
O_DIRECTORY:
glibc 2.0, Mac OS X 10.4, FreeBSD 7.4, NetBSD 4.0.1, OpenBSD 4.9, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14.
off_t is a 32-bit type, open may not work
correctly with files 2 GiB and larger. See Large File Support.
O_NONBLOCK flag when it is defined
by the gnulib module nonblocking on some platforms:
mingw, MSVC 14.
Portability problems fixed by the Gnulib module fchdir:
Portability problems not fixed by Gnulib:
O_CLOEXEC is not atomic, and so is
not safe in the presence of multiple threads or signal handlers.
O_SEARCH may require read access
instead of search/execute access.
O_SEARCH may reject directories
where you have search access even though O_SEARCH is not replaced:
macOS 12.6.
O_CREAT | O_DIRECTORY is unspecified.
Most platforms fail with EINVAL in this case.
However, in Linux kernels 6.3 and earlier, this function
creates a regular file and then either returns successfully
(Linux kernel 5.6 and earlier) or fails with ENOTDIR
(Linux kernels 5.7–6.3).
open ("symlink", O_CREAT ...) fails when the argument points to a
nonexistent file in an existing directory on some platforms:
Haiku.
open ("symlink", O_NOFOLLOW ...) fails with errno set to
EMLINK instead of the POSIX-required ELOOP on some
platforms:
FreeBSD 14.2.
open ("symlink", O_NOFOLLOW ...) fails with errno set to
EFTYPE instead of the POSIX-required ELOOP on some
platforms:
NetBSD 10.0.
O_TEXT mode by
default; this means that it translates '\n' to CR/LF by default. Use the
O_BINARY flag if you need reliable binary I/O.
Next: posix_fadvise, Previous: open, Up: Functions in <fcntl.h> [Contents][Index]
openatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/openat.html
Gnulib module: openat
Portability problems fixed by Gnulib:
O_CLOEXEC:
AIX 7.1, Solaris 10.
O_DIRECTORY:
glibc 2.0, Mac OS X 10.4, FreeBSD 7.4, NetBSD 4.0.1, OpenBSD 4.9, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14.
off_t is a 32-bit type, open may not work
correctly with files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
O_CLOEXEC is not atomic, and so is
not safe in the presence of multiple threads or signal handlers.
O_SEARCH may require read access
instead of search/execute access.
O_SEARCH may reject directories
where you have search access even though O_SEARCH is not replaced:
macOS 12.6.
O_CREAT | O_DIRECTORY is unspecified.
Most platforms fail with EINVAL in this case.
However, in Linux kernels 6.3 and earlier, this function
creates a regular file and then either returns successfully
(Linux kernel 5.6 and earlier) or fails with ENOTDIR
(Linux kernels 5.7–6.3).
openat (fd, "symlink", O_NOFOLLOW ...) fails with errno
set to EMLINK instead of the POSIX-required ELOOP on
some platforms:
FreeBSD 10.1.
openat (fd, "symlink", O_NOFOLLOW ...) fails with errno
set to EFTYPE instead of the POSIX-required ELOOP on
some platforms:
NetBSD 6.1.
Next: posix_fallocate, Previous: openat, Up: Functions in <fcntl.h> [Contents][Index]
posix_fadvisePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_fadvise.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly across the entire data range of files 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
Previous: posix_fadvise, Up: Functions in <fcntl.h> [Contents][Index]
posix_fallocatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_fallocate.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly across the entire data range of files 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
EINVAL should be returned when the file system doesn’t
support the allocation operation directly. glibc however emulates the file system
allocation with writes where unsupported, and apps have depended on
that long term implementation. This is both inefficient, and as of
glibc 2.21 at least, buggy on certain NFS setups.
Next: Functions in <fmtmsg.h>, Previous: Functions in <fcntl.h>, Up: Function Substitutes [Contents][Index]
<fenv.h>| • feclearexcept | ||
| • fegetenv | ||
| • fegetexceptflag | ||
| • fegetmode | ||
| • fegetround | ||
| • feholdexcept | ||
| • feraiseexcept | ||
| • fesetenv | ||
| • fesetexcept | ||
| • fesetexceptflag | ||
| • fesetmode | ||
| • fesetround | ||
| • fetestexcept | ||
| • fetestexceptflag | ||
| • feupdateenv |
Next: fegetenv, Up: Functions in <fenv.h> [Contents][Index]
feclearexceptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/feclearexcept.html
Gnulib module: fenv-exceptions-tracking-c99
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fegetexceptflag, Previous: feclearexcept, Up: Functions in <fenv.h> [Contents][Index]
fegetenvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fegetenv.html
Gnulib module: fenv-environment
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fegetmode, Previous: fegetenv, Up: Functions in <fenv.h> [Contents][Index]
fegetexceptflagPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fegetexceptflag.html
Gnulib module: fenv-exceptions-state-c99
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fegetround, Previous: fegetexceptflag, Up: Functions in <fenv.h> [Contents][Index]
fegetmodeDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Control-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: feholdexcept, Previous: fegetmode, Up: Functions in <fenv.h> [Contents][Index]
fegetroundPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fegetround.html
Gnulib module: fenv-rounding
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: feraiseexcept, Previous: fegetround, Up: Functions in <fenv.h> [Contents][Index]
feholdexceptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/feholdexcept.html
Gnulib module: fenv-environment
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fesetenv, Previous: feholdexcept, Up: Functions in <fenv.h> [Contents][Index]
feraiseexceptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/feraiseexcept.html
Gnulib module: fenv-exceptions-tracking-c99
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fesetexcept, Previous: feraiseexcept, Up: Functions in <fenv.h> [Contents][Index]
fesetenvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fesetenv.html
Gnulib module: fenv-environment
Portability problems fixed by Gnulib:
FE_DFL_ENV cannot be used because it leads to a link error
on some platforms:
NetBSD 10.0/hppa,
NetBSD 10.0/sparc,
Cygwin 2.9.0.
FE_DFL_ENV argument, has no effect
on the x86 mxcsr register and thus on floating-point operations
performed in the SSE unit on some platforms:
mingw 10.
Portability problems not fixed by Gnulib:
Next: fesetexceptflag, Previous: fesetenv, Up: Functions in <fenv.h> [Contents][Index]
fesetexceptDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Status-bit-operations.html.
Gnulib module: fenv-exceptions-tracking-c23
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fesetmode, Previous: fesetexcept, Up: Functions in <fenv.h> [Contents][Index]
fesetexceptflagPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fesetexceptflag.html
Gnulib module: fenv-exceptions-state-c99
Portability problems fixed by Gnulib:
FE_INVALID flag on
FreeBSD 14.0/powerpc64,
NetBSD 9.3/powerpc.
Portability problems not fixed by Gnulib:
Next: fesetround, Previous: fesetexceptflag, Up: Functions in <fenv.h> [Contents][Index]
fesetmodeDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Control-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fetestexcept, Previous: fesetmode, Up: Functions in <fenv.h> [Contents][Index]
fesetroundPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fesetround.html
Gnulib module: fenv-rounding
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
long double operations on some platforms:
Android/arm64, FreeBSD/arm64, NetBSD/sparc64, OpenBSD/arm64, OpenBSD/mips64.
Next: fetestexceptflag, Previous: fesetround, Up: Functions in <fenv.h> [Contents][Index]
fetestexceptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fetestexcept.html
Gnulib module: fenv-exceptions-tracking-c99
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: feupdateenv, Previous: fetestexcept, Up: Functions in <fenv.h> [Contents][Index]
fetestexceptflagDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Status-bit-operations.html.
Gnulib module: fenv-exceptions-state-c23
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: fetestexceptflag, Up: Functions in <fenv.h> [Contents][Index]
feupdateenvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/feupdateenv.html
Gnulib module: fenv-environment
Portability problems fixed by Gnulib:
FE_DFL_ENV
on some platforms:
glibc 2.37/riscv64.
Portability problems not fixed by Gnulib:
Next: Functions in <fnmatch.h>, Previous: Functions in <fenv.h>, Up: Function Substitutes [Contents][Index]
<fmtmsg.h>| • fmtmsg |
Up: Functions in <fmtmsg.h> [Contents][Index]
fmtmsgPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmtmsg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <ftw.h>, Previous: Functions in <fmtmsg.h>, Up: Function Substitutes [Contents][Index]
<fnmatch.h>| • fnmatch |
fnmatchPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fnmatch.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fnmatch-3.html
Documentation:
Gnulib module: fnmatch or fnmatch-gnu
Portability problems fixed by either Gnulib module fnmatch or fnmatch-gnu:
"?" pattern character fails to match characters outside the
single-byte range on some platforms:
NetBSD 10.0,
Android 13.
"?" pattern character fails to match characters outside the
Unicode BMP on some platforms:
Solaris 10, Cygwin 3.4.6,
MSVC,
32-bit AIX.
[!a-z]) are not
supported on some platforms:
Solaris 11.4.
[:alnum:]) inside
bracket expressions are not supported on some platforms:
FreeBSD 13.2,
NetBSD 10.0, Solaris 11 OpenIndiana, Cygwin 3.4.6.
[:alnum:]) inside
bracket expressions fail to match characters outside the single-byte
range on some platforms:
Android 13.
[:cntrl:] matches the empty string
on some platforms:
Solaris 11.4.
'[' on some platforms:
glibc 2.12,
macOS 12.5,
NetBSD 10.0.
Portability problems fixed by Gnulib module fnmatch-gnu:
FNM_LEADING_DIR and
FNM_CASEFOLD on some platforms:
AIX 7.2, HP-UX 11.31, Solaris 10.
FNM_CASEFOLD does not work in many situations on some platforms:
NetBSD 10.0.
FNM_CASEFOLD does not work for multibyte characters
consisting of more than one byte on some platforms:
Android 13.
FNM_EXTMATCH
on all non-glibc platforms:
musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, Minix 3.3, AIX 7.2, HP-UX 11.31, Solaris 11.4, Cygwin 3.4.6, Android 13.
FNM_FILE_NAME as an
alias of FNM_PATHNAME on some platforms:
NetBSD 10.0, AIX 7.2, HP-UX 11.31, Solaris 10.
Portability problems not fixed by Gnulib:
Note: Gnulib’s replacement function has some limitations:
"[[.ch.]]") or
equivalence classes (such as "[[=a=]]").
Next: Functions in <glob.h>, Previous: Functions in <fnmatch.h>, Up: Function Substitutes [Contents][Index]
<ftw.h>| • nftw |
Up: Functions in <ftw.h> [Contents][Index]
nftwPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nftw.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
correctly report the size of files or block devices 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
Next: Functions in <grp.h>, Previous: Functions in <ftw.h>, Up: Function Substitutes [Contents][Index]
<glob.h>| • glob | ||
| • globfree |
Next: globfree, Up: Functions in <glob.h> [Contents][Index]
globPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/glob.html
Gnulib module: glob
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on huge directories 2 GiB and larger.
See Large File Support.
/ and
every / following a wildcard character on some platforms, which
can cause the stack to overflow:
glibc 2.42,
Cygwin, Android.
Portability problems not fixed by Gnulib:
gl_flags field.
Previous: glob, Up: Functions in <glob.h> [Contents][Index]
globfreePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/globfree.html
Gnulib module: glob
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <iconv.h>, Previous: Functions in <glob.h>, Up: Function Substitutes [Contents][Index]
<grp.h>| • endgrent | ||
| • getgrent | ||
| • getgrgid | ||
| • getgrgid_r | ||
| • getgrnam | ||
| • getgrnam_r | ||
| • setgrent |
Next: getgrent, Up: Functions in <grp.h> [Contents][Index]
endgrentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/endgrent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getgrgid, Previous: endgrent, Up: Functions in <grp.h> [Contents][Index]
getgrentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getgrent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getgrgid_r, Previous: getgrent, Up: Functions in <grp.h> [Contents][Index]
getgrgidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getgrgid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getgrnam, Previous: getgrgid, Up: Functions in <grp.h> [Contents][Index]
getgrgid_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getgrgid_r.html
Gnulib module: extensions
Portability problems fixed by Gnulib:
_POSIX_PTHREAD_SEMANTICS is not defined).
Portability problems not fixed by Gnulib:
Next: getgrnam_r, Previous: getgrgid_r, Up: Functions in <grp.h> [Contents][Index]
getgrnamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getgrnam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setgrent, Previous: getgrnam, Up: Functions in <grp.h> [Contents][Index]
getgrnam_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getgrnam_r.html
Gnulib module: extensions
Portability problems fixed by Gnulib:
_POSIX_PTHREAD_SEMANTICS is not defined).
Portability problems not fixed by Gnulib:
Previous: getgrnam_r, Up: Functions in <grp.h> [Contents][Index]
setgrentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setgrent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <inttypes.h>, Previous: Functions in <grp.h>, Up: Function Substitutes [Contents][Index]
<iconv.h>| • iconv | ||
| • iconv_close | ||
| • iconv_open |
Next: iconv_close, Up: Functions in <iconv.h> [Contents][Index]
iconvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iconv.html
Gnulib module: iconv
Portability problems fixed by Gnulib:
Portability problems handled by Gnulib
(in the sense that HAVE_ICONV does not get defined if the system’s
iconv function has this problem):
Portability problems not fixed by Gnulib:
iconv encounters an input character that is valid but that
cannot be converted to the output character set, glibc’s and GNU libiconv’s
iconv stop the conversion. Some other implementations put an
implementation-defined character into the output buffer.
Gnulib provides higher-level facilities striconv and striconveh
(wrappers around iconv) that deal with conversion errors in a platform
independent way.
Next: iconv_open, Previous: iconv, Up: Functions in <iconv.h> [Contents][Index]
iconv_closePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iconv_close.html
Gnulib module: iconv
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: iconv_close, Up: Functions in <iconv.h> [Contents][Index]
iconv_openPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iconv_open.html
Gnulib module: iconv, iconv_open, iconv_open-utf
Portability problems fixed by either Gnulib module iconv or iconv_open:
Portability problems handled by either Gnulib module iconv or iconv_open
(in the sense that HAVE_ICONV does not get defined if the system’s
iconv_open function has this problem):
Portability problems fixed by Gnulib module iconv_open:
Portability problems fixed by Gnulib module iconv_open-utf:
Portability problems not fixed by Gnulib:
striconveh (a wrapper around iconv) that deals with
this problem.
Next: Functions in <langinfo.h>, Previous: Functions in <iconv.h>, Up: Function Substitutes [Contents][Index]
<inttypes.h>| • imaxabs | ||
| • imaxdiv | ||
| • strtoimax | ||
| • strtoumax | ||
| • wcstoimax | ||
| • wcstoumax |
Next: imaxdiv, Up: Functions in <inttypes.h> [Contents][Index]
imaxabsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/imaxabs.html
Gnulib module: imaxabs
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtoimax, Previous: imaxabs, Up: Functions in <inttypes.h> [Contents][Index]
imaxdivPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/imaxdiv.html
Gnulib module: imaxdiv
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtoumax, Previous: imaxdiv, Up: Functions in <inttypes.h> [Contents][Index]
strtoimaxPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoimax.html
Gnulib module: strtoimax
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: wcstoimax, Previous: strtoimax, Up: Functions in <inttypes.h> [Contents][Index]
strtoumaxPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoumax.html
Gnulib module: strtoumax
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: wcstoumax, Previous: strtoumax, Up: Functions in <inttypes.h> [Contents][Index]
wcstoimaxPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstoimax.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Previous: wcstoimax, Up: Functions in <inttypes.h> [Contents][Index]
wcstoumaxPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstoumax.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: Functions in <libgen.h>, Previous: Functions in <inttypes.h>, Up: Function Substitutes [Contents][Index]
<langinfo.h>| • nl_langinfo | ||
| • nl_langinfo_l |
Next: nl_langinfo_l, Up: Functions in <langinfo.h> [Contents][Index]
nl_langinfoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nl_langinfo.html
Gnulib module: nl_langinfo
Portability problems fixed by Gnulib:
CODESET is not supported on some platforms:
OpenBSD 3.8.
ALTMON_1 to ALTMON_12 are not supported on some
platforms:
glibc 2.26, musl libc, macOS 14, NetBSD 8.0, OpenBSD 7.5, AIX 7.2, HP-UX 11.31, Solaris 11.4, Haiku, Cygwin 2.9.
ABALTMON_1 to ABALTMON_12 are not supported on many
platforms:
glibc 2.42, musl libc, macOS 14, NetBSD 10.0, OpenBSD 7.6, AIX 7.3, HP-UX 11.31, Solaris 11.4, Haiku, Cygwin 3.5.
ERA, ERA_D_FMT, ERA_D_T_FMT,
ERA_T_FMT, ALT_DIGITS are not supported on some platforms:
OpenBSD 7.5.
Portability problems not fixed by Gnulib:
nl_langinfo(CODESET) always
returns "US-ASCII".
nl_langinfo(CRNCYSTR) returns the
empty string, although the local currency symbol, as returned by
localeconv()->currency_symbol, is non-empty.
nl_langinfo(ABMON_1) ... nl_langinfo(ABMON_12) are full month
names, not abbreviated month names.
Previous: nl_langinfo, Up: Functions in <langinfo.h> [Contents][Index]
nl_langinfo_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nl_langinfo_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <libintl.h>, Previous: Functions in <langinfo.h>, Up: Function Substitutes [Contents][Index]
<libgen.h>| • basename | ||
| • dirname |
Next: dirname, Up: Functions in <libgen.h> [Contents][Index]
basenamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/basename.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-basename-3.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
basename: the POSIX
version and the GNU version.
basename assumes file names in POSIX syntax; it does not work with file
names in Windows syntax.
The Gnulib module basename-lgpl provides similar API, with a function
last_component, that also works with Windows file names.
Previous: basename, Up: Functions in <libgen.h> [Contents][Index]
dirnamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dirname.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
dirname assumes file names in POSIX syntax; it does not work with file
names in Windows syntax.
The Gnulib module dirname provides similar API, with functions
dir_name and mdir_name, that also works with Windows
file names.
Next: Functions in <locale.h>, Previous: Functions in <libgen.h>, Up: Function Substitutes [Contents][Index]
<libintl.h>| • bind_textdomain_codeset | ||
| • bindtextdomain | ||
| • dcgettext | ||
| • dcgettext_l | ||
| • dcngettext | ||
| • dcngettext_l | ||
| • dgettext | ||
| • dgettext_l | ||
| • dngettext | ||
| • dngettext_l | ||
| • gettext | ||
| • gettext_l | ||
| • ngettext | ||
| • ngettext_l | ||
| • textdomain |
Next: bindtextdomain, Up: Functions in <libintl.h> [Contents][Index]
bind_textdomain_codesetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/bind_textdomain_codeset.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dcgettext, Previous: bind_textdomain_codeset, Up: Functions in <libintl.h> [Contents][Index]
bindtextdomainPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/bindtextdomain.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dcgettext_l, Previous: bindtextdomain, Up: Functions in <libintl.h> [Contents][Index]
dcgettextPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dcgettext.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
LANGUAGE environment variable
with an empty value like an unset LANGUAGE environment variable
on some platforms:
NetBSD 10.0.
Next: dcngettext, Previous: dcgettext, Up: Functions in <libintl.h> [Contents][Index]
dcgettext_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dcgettext_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dcngettext_l, Previous: dcgettext_l, Up: Functions in <libintl.h> [Contents][Index]
dcngettextPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dcngettext.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
LANGUAGE environment variable
with an empty value like an unset LANGUAGE environment variable
on some platforms:
NetBSD 10.0.
Next: dgettext, Previous: dcngettext, Up: Functions in <libintl.h> [Contents][Index]
dcngettext_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dcngettext_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dgettext_l, Previous: dcngettext_l, Up: Functions in <libintl.h> [Contents][Index]
dgettextPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dgettext.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
LANGUAGE environment variable
with an empty value like an unset LANGUAGE environment variable
on some platforms:
NetBSD 10.0.
Next: dngettext, Previous: dgettext, Up: Functions in <libintl.h> [Contents][Index]
dgettext_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dgettext_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dngettext_l, Previous: dgettext_l, Up: Functions in <libintl.h> [Contents][Index]
dngettextPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dngettext.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
LANGUAGE environment variable
with an empty value like an unset LANGUAGE environment variable
on some platforms:
NetBSD 10.0.
Next: gettext, Previous: dngettext, Up: Functions in <libintl.h> [Contents][Index]
dngettext_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dngettext_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gettext_l, Previous: dngettext_l, Up: Functions in <libintl.h> [Contents][Index]
gettextPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/gettext.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
LANGUAGE environment variable
with an empty value like an unset LANGUAGE environment variable
on some platforms:
NetBSD 10.0.
Next: ngettext, Previous: gettext, Up: Functions in <libintl.h> [Contents][Index]
gettext_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/gettext_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ngettext_l, Previous: gettext_l, Up: Functions in <libintl.h> [Contents][Index]
ngettextPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ngettext.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
LANGUAGE environment variable
with an empty value like an unset LANGUAGE environment variable
on some platforms:
NetBSD 10.0.
Next: textdomain, Previous: ngettext, Up: Functions in <libintl.h> [Contents][Index]
ngettext_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ngettext_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ngettext_l, Up: Functions in <libintl.h> [Contents][Index]
textdomainPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/textdomain.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <math.h>, Previous: Functions in <libintl.h>, Up: Function Substitutes [Contents][Index]
<locale.h>| • duplocale | ||
| • freelocale | ||
| • getlocalename_l | ||
| • localeconv | ||
| • newlocale | ||
| • setlocale | ||
| • uselocale |
Next: freelocale, Up: Functions in <locale.h> [Contents][Index]
duplocalePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/duplocale.html
Gnulib module: duplocale
Portability problems fixed by Gnulib:
locale_t type is not defined
on some platforms:
z/OS.
LC_GLOBAL_LOCALE is not supported on some platforms:
glibc 2.11, AIX 7.1.
LC_GLOBAL_LOCALE, this function returns a wrong result
on some platforms:
NetBSD 7.1.
Portability problems not fixed by Gnulib:
LC_GLOBAL_LOCALE, this function returns a wrong result
on some platforms:
Haiku.
Next: getlocalename_l, Previous: duplocale, Up: Functions in <locale.h> [Contents][Index]
freelocalePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/freelocale.html
Gnulib module: freelocale
Portability problems fixed by Gnulib:
locale_t type is not defined
on some platforms:
z/OS.
Portability problems not fixed by Gnulib:
int instead of void on macOS.
newlocale invocations
on some platforms:
Haiku.
Next: localeconv, Previous: freelocale, Up: Functions in <locale.h> [Contents][Index]
getlocalename_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getlocalename_l.html
Gnulib module: getlocalename_l-simple
Portability problems fixed by Gnulib:
LC_ALL is unsupported.
LC_GLOBAL_LOCALE,
on some platforms:
Cygwin 3.6.0.
"POSIX" instead of "C" on some platforms:
Haiku.
Portability problems not fixed by Gnulib:
LC_ALL is unsupported,
on some platforms:
Cygwin 3.6.0.
Next: newlocale, Previous: getlocalename_l, Up: Functions in <locale.h> [Contents][Index]
localeconvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/localeconv.html
Gnulib module: localeconv
Portability problems fixed by Gnulib:
struct lconv type does not contain any members on some platforms:
Android up to 2014.
struct lconv type does not contain the members
int_p_cs_precedes, int_p_sign_posn, int_p_sep_by_space,
int_n_cs_precedes, int_n_sign_posn, int_n_sep_by_space
on some platforms:
glibc, OpenBSD 4.9, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.
struct lconv of type char are -1 instead
of CHAR_MAX on some platforms:
mingw.
Portability problems not fixed by Gnulib:
Next: setlocale, Previous: localeconv, Up: Functions in <locale.h> [Contents][Index]
newlocalePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/newlocale.html
Gnulib module: newlocale
Portability problems fixed by Gnulib:
locale_t type is not defined
on some platforms:
z/OS.
Portability problems not fixed by Gnulib:
locale_t type contains basically
no information on some platforms:
OpenBSD 6.3.
Next: uselocale, Previous: newlocale, Up: Functions in <locale.h> [Contents][Index]
setlocalePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setlocale.html
Gnulib module: setlocale, setlocale-null
Portability problems fixed by Gnulib module setlocale:
setlocale(category,"")
and setlocale(category,NULL) both ignore the environment variables
LC_ALL, category, and LANG.
setlocale(LC_ALL,name) succeeds and sets the LC_CTYPE category to
‘C’ when it does not support the encoding, instead of failing.
setlocale understands different
locale names, that are not based on ISO 639 language names and ISO 3166 country
names.
LC_CTYPE of
the global locale affects the LC_CTYPE category as well.
setlocale function
always fails. The replacement, however, supports only the locale names
"C" and "POSIX".
Portability problems fixed by Gnulib module setlocale or setlocale-null:
setlocale (..., NULL) are not multithread-safe on some
platforms:
musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin.
To make these invocations multithread-safe, you need the Gnulib module
setlocale, or you need to change the code to invoke setlocale_null
or setlocale_null_r instead.
Portability problems not fixed by Gnulib:
setlocale(LC_ALL,NULL) always returns "C".
setlocale(LC_ALL,"") will only update categories that
are deemed appropriate for the LC_ALL environment value, even if
there are other categories set to different values in the environment.
In addition any value is accepted for LC_CTYPE, and so NULL
is never returned to indicate a failure to set locale.
To verify category values, each category must be set individually
with setlocale(LC_COLLATE,"") etc.
setlocale was not called) is the "C.UTF-8" locale, not the
"C" locale. Additionally, a setlocale call that is meant to set
the "C" or "POSIX" locale actually sets an equivalent of the
"C.UTF-8" locale.
Note: The names of locales with UTF-8 encoding are platform dependent:
-MD option in CFLAGS),
they follow the naming scheme ‘language_country.65001’
or, equivalently, ‘language_country.utf8’,
where ‘language’ is a language name in English
and ‘country’ is a country name in English.
For example ‘English_United States.65001’ (yes, with a space in it!)
or ‘French_France.65001’.
Previous: setlocale, Up: Functions in <locale.h> [Contents][Index]
uselocalePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/uselocale.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
setlocale invocations on some platforms:
AIX 7.2.
locale_t type is not defined
on some platforms:
z/OS.
locale_t type contains basically
no information on some platforms:
OpenBSD 7.4.
Next: Functions in <monetary.h>, Previous: Functions in <locale.h>, Up: Function Substitutes [Contents][Index]
<math.h>Next: acosf, Up: Functions in <math.h> [Contents][Index]
acosPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/acos.html
Gnulib module: acos
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: acosh, Previous: acos, Up: Functions in <math.h> [Contents][Index]
acosfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/acosf.html
Gnulib module: acosf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: acoshf, Previous: acosf, Up: Functions in <math.h> [Contents][Index]
acoshPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/acosh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: acoshl, Previous: acosh, Up: Functions in <math.h> [Contents][Index]
acoshfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/acoshf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: acosl, Previous: acoshf, Up: Functions in <math.h> [Contents][Index]
acoshlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/acoshl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: acospi, Previous: acoshl, Up: Functions in <math.h> [Contents][Index]
acoslPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/acosl.html
Gnulib module: acosl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: acospif, Previous: acosl, Up: Functions in <math.h> [Contents][Index]
acospiISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.8
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: acospil, Previous: acospi, Up: Functions in <math.h> [Contents][Index]
acospifISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.8
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asin, Previous: acospif, Up: Functions in <math.h> [Contents][Index]
acospilISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.8
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asinf, Previous: acospil, Up: Functions in <math.h> [Contents][Index]
asinPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asin.html
Gnulib module: asin
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asinh, Previous: asin, Up: Functions in <math.h> [Contents][Index]
asinfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asinf.html
Gnulib module: asinf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asinhf, Previous: asinf, Up: Functions in <math.h> [Contents][Index]
asinhPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asinh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asinhl, Previous: asinh, Up: Functions in <math.h> [Contents][Index]
asinhfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asinhf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asinl, Previous: asinhf, Up: Functions in <math.h> [Contents][Index]
asinhlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asinhl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asinpi, Previous: asinhl, Up: Functions in <math.h> [Contents][Index]
asinlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asinl.html
Gnulib module: asinl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asinpif, Previous: asinl, Up: Functions in <math.h> [Contents][Index]
asinpiISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.9
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: asinpil, Previous: asinpi, Up: Functions in <math.h> [Contents][Index]
asinpifISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.9
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atan, Previous: asinpif, Up: Functions in <math.h> [Contents][Index]
asinpilISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.9
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atan2, Previous: asinpil, Up: Functions in <math.h> [Contents][Index]
atanPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atan.html
Gnulib module: atan
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atan2f, Previous: atan, Up: Functions in <math.h> [Contents][Index]
atan2POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atan2.html
Gnulib module: atan2
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atan2l, Previous: atan2, Up: Functions in <math.h> [Contents][Index]
atan2fPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atan2f.html
Gnulib module: atan2f
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atan2pi, Previous: atan2f, Up: Functions in <math.h> [Contents][Index]
atan2lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atan2l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atan2pif, Previous: atan2l, Up: Functions in <math.h> [Contents][Index]
atan2piISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.11
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atan2pil, Previous: atan2pi, Up: Functions in <math.h> [Contents][Index]
atan2pifISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.11
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atanf, Previous: atan2pif, Up: Functions in <math.h> [Contents][Index]
atan2pilISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.11
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atanh, Previous: atan2pil, Up: Functions in <math.h> [Contents][Index]
atanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atanf.html
Gnulib module: atanf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atanhf, Previous: atanf, Up: Functions in <math.h> [Contents][Index]
atanhPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atanh.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atanhl, Previous: atanh, Up: Functions in <math.h> [Contents][Index]
atanhfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atanhf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atanl, Previous: atanhf, Up: Functions in <math.h> [Contents][Index]
atanhlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atanhl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atanpi, Previous: atanhl, Up: Functions in <math.h> [Contents][Index]
atanlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atanl.html
Gnulib module: atanl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atanpif, Previous: atanl, Up: Functions in <math.h> [Contents][Index]
atanpiISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.10
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atanpil, Previous: atanpi, Up: Functions in <math.h> [Contents][Index]
atanpifISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.10
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: canonicalize, Previous: atanpif, Up: Functions in <math.h> [Contents][Index]
atanpilISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.10
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: canonicalizef, Previous: atanpil, Up: Functions in <math.h> [Contents][Index]
canonicalizeDocumentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: canonicalizel, Previous: canonicalize, Up: Functions in <math.h> [Contents][Index]
canonicalizefDocumentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cbrt, Previous: canonicalizef, Up: Functions in <math.h> [Contents][Index]
canonicalizelDocumentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cbrtf, Previous: canonicalizel, Up: Functions in <math.h> [Contents][Index]
cbrtPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cbrt.html
Gnulib module: cbrt or cbrt-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cbrtl, Previous: cbrt, Up: Functions in <math.h> [Contents][Index]
cbrtfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cbrtf.html
Gnulib module: cbrtf or cbrtf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ceil, Previous: cbrtf, Up: Functions in <math.h> [Contents][Index]
cbrtlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cbrtl.html
Gnulib module: cbrtl or cbrtl-ieee
Portability problems fixed by either Gnulib module cbrtl or cbrtl-ieee
Portability problems fixed by Gnulib module cbrtl-ieee:
Portability problems not fixed by Gnulib:
Next: ceilf, Previous: cbrtl, Up: Functions in <math.h> [Contents][Index]
ceilPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ceil.html
Gnulib module: ceil or ceil-ieee
Portability problems fixed by either Gnulib module ceil or ceil-ieee:
Portability problems fixed by Gnulib module ceil-ieee:
Portability problems not fixed by Gnulib:
Next: ceill, Previous: ceil, Up: Functions in <math.h> [Contents][Index]
ceilfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ceilf.html
Gnulib module: ceilf or ceilf-ieee
Portability problems fixed by either Gnulib module ceilf or ceilf-ieee:
Portability problems fixed by Gnulib module ceilf-ieee:
Portability problems not fixed by Gnulib:
Next: compoundn, Previous: ceilf, Up: Functions in <math.h> [Contents][Index]
ceillPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ceill.html
Gnulib module: ceill or ceill-ieee
Portability problems fixed by either Gnulib module ceill or ceill-ieee:
Portability problems fixed by Gnulib module ceill-ieee:
Portability problems not fixed by Gnulib:
Next: compoundnf, Previous: ceill, Up: Functions in <math.h> [Contents][Index]
compoundnISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.2
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: compoundnl, Previous: compoundn, Up: Functions in <math.h> [Contents][Index]
compoundnfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.2
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: copysign, Previous: compoundnf, Up: Functions in <math.h> [Contents][Index]
compoundnlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.2
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: copysignf, Previous: compoundnl, Up: Functions in <math.h> [Contents][Index]
copysignPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/copysign.html
Gnulib module: copysign
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: copysignl, Previous: copysign, Up: Functions in <math.h> [Contents][Index]
copysignfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/copysignf.html
Gnulib module: copysignf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cos, Previous: copysignf, Up: Functions in <math.h> [Contents][Index]
copysignlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/copysignl.html
Gnulib module: copysignl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cosf, Previous: copysignl, Up: Functions in <math.h> [Contents][Index]
cosPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cos.html
Gnulib module: cos
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cosh, Previous: cos, Up: Functions in <math.h> [Contents][Index]
cosfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cosf.html
Gnulib module: cosf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: coshf, Previous: cosf, Up: Functions in <math.h> [Contents][Index]
coshPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cosh.html
Gnulib module: cosh
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: coshl, Previous: cosh, Up: Functions in <math.h> [Contents][Index]
coshfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/coshf.html
Gnulib module: coshf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cosl, Previous: coshf, Up: Functions in <math.h> [Contents][Index]
coshlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/coshl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cospi, Previous: coshl, Up: Functions in <math.h> [Contents][Index]
coslPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cosl.html
Gnulib module: cosl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cospif, Previous: cosl, Up: Functions in <math.h> [Contents][Index]
cospiISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.12
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cospil, Previous: cospi, Up: Functions in <math.h> [Contents][Index]
cospifISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.12
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: daddl, Previous: cospif, Up: Functions in <math.h> [Contents][Index]
cospilISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.12
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ddivl, Previous: cospil, Up: Functions in <math.h> [Contents][Index]
daddlDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dfmal, Previous: daddl, Up: Functions in <math.h> [Contents][Index]
ddivlDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dmull, Previous: ddivl, Up: Functions in <math.h> [Contents][Index]
dfmalISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.14.5
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dsqrtl, Previous: dfmal, Up: Functions in <math.h> [Contents][Index]
dmullDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dsubl, Previous: dmull, Up: Functions in <math.h> [Contents][Index]
dsqrtlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.14.6
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: erf, Previous: dsqrtl, Up: Functions in <math.h> [Contents][Index]
dsublDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: erfc, Previous: dsubl, Up: Functions in <math.h> [Contents][Index]
erfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/erf.html
Gnulib module: erf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: erfcf, Previous: erf, Up: Functions in <math.h> [Contents][Index]
erfcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/erfc.html
Gnulib module: erfc
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: erfcl, Previous: erfc, Up: Functions in <math.h> [Contents][Index]
erfcfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/erfcf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: erff, Previous: erfcf, Up: Functions in <math.h> [Contents][Index]
erfclPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/erfcl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: erfl, Previous: erfcl, Up: Functions in <math.h> [Contents][Index]
erffPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/erff.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp, Previous: erff, Up: Functions in <math.h> [Contents][Index]
erflPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/erfl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp10, Previous: erfl, Up: Functions in <math.h> [Contents][Index]
expPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/exp.html
Gnulib module: exp or exp-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp10f, Previous: exp, Up: Functions in <math.h> [Contents][Index]
exp10ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.2
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp10l, Previous: exp10, Up: Functions in <math.h> [Contents][Index]
exp10fISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.2
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp10m1, Previous: exp10f, Up: Functions in <math.h> [Contents][Index]
exp10lISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.2
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp10m1f, Previous: exp10l, Up: Functions in <math.h> [Contents][Index]
exp10m1ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.3
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp10m1l, Previous: exp10m1, Up: Functions in <math.h> [Contents][Index]
exp10m1fISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.3
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp2, Previous: exp10m1f, Up: Functions in <math.h> [Contents][Index]
exp10m1lISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.3
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp2f, Previous: exp10m1l, Up: Functions in <math.h> [Contents][Index]
exp2POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/exp2.html
Gnulib module: exp2 or exp2-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp2l, Previous: exp2, Up: Functions in <math.h> [Contents][Index]
exp2fPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/exp2f.html
Gnulib module: exp2f or exp2f-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp2m1, Previous: exp2f, Up: Functions in <math.h> [Contents][Index]
exp2lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/exp2l.html
Gnulib module: exp2l or exp2l-ieee
Portability problems fixed by either Gnulib module exp2l or exp2l-ieee:
Portability problems fixed by Gnulib module exp2l-ieee:
Portability problems not fixed by Gnulib:
Next: exp2m1f, Previous: exp2l, Up: Functions in <math.h> [Contents][Index]
exp2m1ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.5
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exp2m1l, Previous: exp2m1, Up: Functions in <math.h> [Contents][Index]
exp2m1fISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.5
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: expf, Previous: exp2m1f, Up: Functions in <math.h> [Contents][Index]
exp2m1lISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.5
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: expl, Previous: exp2m1l, Up: Functions in <math.h> [Contents][Index]
expfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/expf.html
Gnulib module: expf or expf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: expm1, Previous: expf, Up: Functions in <math.h> [Contents][Index]
explPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/expl.html
Gnulib module: expl or expl-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: expm1f, Previous: expl, Up: Functions in <math.h> [Contents][Index]
expm1POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/expm1.html
Gnulib module: expm1 or expm1-ieee
Portability problems fixed by either Gnulib module expm1 or expm1-ieee:
Portability problems fixed by Gnulib module expm1-ieee:
Portability problems not fixed by Gnulib:
Next: expm1l, Previous: expm1, Up: Functions in <math.h> [Contents][Index]
expm1fPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/expm1f.html
Gnulib module: expm1f or expm1f-ieee
Portability problems fixed by either Gnulib module expm1f or expm1f-ieee:
Portability problems fixed by Gnulib module expm1f-ieee:
Portability problems not fixed by Gnulib:
Next: fabs, Previous: expm1f, Up: Functions in <math.h> [Contents][Index]
expm1lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/expm1l.html
Gnulib module: expm1l or expm1l-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fabsf, Previous: expm1l, Up: Functions in <math.h> [Contents][Index]
fabsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fabs.html
Gnulib module: fabs or fabs-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fabsl, Previous: fabs, Up: Functions in <math.h> [Contents][Index]
fabsfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fabsf.html
Gnulib module: fabsf or fabsf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fadd, Previous: fabsf, Up: Functions in <math.h> [Contents][Index]
fabslPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fabsl.html
Gnulib module: fabsl or fabsl-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: faddl, Previous: fabsl, Up: Functions in <math.h> [Contents][Index]
faddDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fdim, Previous: fadd, Up: Functions in <math.h> [Contents][Index]
faddlDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fdimf, Previous: faddl, Up: Functions in <math.h> [Contents][Index]
fdimPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fdim.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fdiml, Previous: fdim, Up: Functions in <math.h> [Contents][Index]
fdimfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fdimf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fdiv, Previous: fdimf, Up: Functions in <math.h> [Contents][Index]
fdimlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fdiml.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fdivl, Previous: fdiml, Up: Functions in <math.h> [Contents][Index]
fdivDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ffma, Previous: fdiv, Up: Functions in <math.h> [Contents][Index]
fdivlDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ffmal, Previous: fdivl, Up: Functions in <math.h> [Contents][Index]
ffmaISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.14.5
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: floor, Previous: ffma, Up: Functions in <math.h> [Contents][Index]
ffmalISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.14.5
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: floorf, Previous: ffmal, Up: Functions in <math.h> [Contents][Index]
floorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/floor.html
Gnulib module: floor or floor-ieee
Portability problems fixed by either Gnulib module floor or floor-ieee:
Portability problems fixed by Gnulib module floor-ieee:
Portability problems not fixed by Gnulib:
Next: floorl, Previous: floor, Up: Functions in <math.h> [Contents][Index]
floorfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/floorf.html
Gnulib module: floorf or floorf-ieee
Portability problems fixed by either Gnulib module floorf or floorf-ieee:
Portability problems fixed by Gnulib module floorf-ieee:
Portability problems not fixed by Gnulib:
Next: fma, Previous: floorf, Up: Functions in <math.h> [Contents][Index]
floorlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/floorl.html
Gnulib module: floorl or floorl-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaf, Previous: floorl, Up: Functions in <math.h> [Contents][Index]
fmaPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fma.html
Gnulib module: fma or fma-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmal, Previous: fma, Up: Functions in <math.h> [Contents][Index]
fmafPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmaf.html
Gnulib module: fmaf or fmaf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmax, Previous: fmaf, Up: Functions in <math.h> [Contents][Index]
fmalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmal.html
Gnulib module: fmal or fmal-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaxf, Previous: fmal, Up: Functions in <math.h> [Contents][Index]
fmaxPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmax.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum, Previous: fmax, Up: Functions in <math.h> [Contents][Index]
fmaxfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmaxf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_mag, Previous: fmaxf, Up: Functions in <math.h> [Contents][Index]
fmaximumISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.4
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_magf, Previous: fmaximum, Up: Functions in <math.h> [Contents][Index]
fmaximum_magISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.6
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_magl, Previous: fmaximum_mag, Up: Functions in <math.h> [Contents][Index]
fmaximum_magfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.6
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_mag_num, Previous: fmaximum_magf, Up: Functions in <math.h> [Contents][Index]
fmaximum_maglISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.6
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_mag_numf, Previous: fmaximum_magl, Up: Functions in <math.h> [Contents][Index]
fmaximum_mag_numISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.10
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_mag_numl, Previous: fmaximum_mag_num, Up: Functions in <math.h> [Contents][Index]
fmaximum_mag_numfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.10
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_num, Previous: fmaximum_mag_numf, Up: Functions in <math.h> [Contents][Index]
fmaximum_mag_numlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.10
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_numf, Previous: fmaximum_mag_numl, Up: Functions in <math.h> [Contents][Index]
fmaximum_numISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.8
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximum_numl, Previous: fmaximum_num, Up: Functions in <math.h> [Contents][Index]
fmaximum_numfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.8
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximumf, Previous: fmaximum_numf, Up: Functions in <math.h> [Contents][Index]
fmaximum_numlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.8
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaximuml, Previous: fmaximum_numl, Up: Functions in <math.h> [Contents][Index]
fmaximumfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.4
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaxl, Previous: fmaximumf, Up: Functions in <math.h> [Contents][Index]
fmaximumlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.4
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaxmag, Previous: fmaximuml, Up: Functions in <math.h> [Contents][Index]
fmaxlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmaxl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaxmagf, Previous: fmaxl, Up: Functions in <math.h> [Contents][Index]
fmaxmagDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmaxmagl, Previous: fmaxmag, Up: Functions in <math.h> [Contents][Index]
fmaxmagfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmin, Previous: fmaxmagf, Up: Functions in <math.h> [Contents][Index]
fmaxmaglDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminf, Previous: fmaxmagl, Up: Functions in <math.h> [Contents][Index]
fminPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmin.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum, Previous: fmin, Up: Functions in <math.h> [Contents][Index]
fminfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fminf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_mag, Previous: fminf, Up: Functions in <math.h> [Contents][Index]
fminimumISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.5
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_magf, Previous: fminimum, Up: Functions in <math.h> [Contents][Index]
fminimum_magISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.7
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_magl, Previous: fminimum_mag, Up: Functions in <math.h> [Contents][Index]
fminimum_magfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.7
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_mag_num, Previous: fminimum_magf, Up: Functions in <math.h> [Contents][Index]
fminimum_maglISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.7
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_mag_numf, Previous: fminimum_magl, Up: Functions in <math.h> [Contents][Index]
fminimum_mag_numISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.11
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_mag_numl, Previous: fminimum_mag_num, Up: Functions in <math.h> [Contents][Index]
fminimum_mag_numfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.11
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_num, Previous: fminimum_mag_numf, Up: Functions in <math.h> [Contents][Index]
fminimum_mag_numlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.11
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_numf, Previous: fminimum_mag_numl, Up: Functions in <math.h> [Contents][Index]
fminimum_numISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.9
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimum_numl, Previous: fminimum_num, Up: Functions in <math.h> [Contents][Index]
fminimum_numfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.9
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimumf, Previous: fminimum_numf, Up: Functions in <math.h> [Contents][Index]
fminimum_numlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.9
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminimuml, Previous: fminimum_numl, Up: Functions in <math.h> [Contents][Index]
fminimumfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.5
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminl, Previous: fminimumf, Up: Functions in <math.h> [Contents][Index]
fminimumlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.12.5
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminmag, Previous: fminimuml, Up: Functions in <math.h> [Contents][Index]
fminlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fminl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminmagf, Previous: fminl, Up: Functions in <math.h> [Contents][Index]
fminmagDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fminmagl, Previous: fminmag, Up: Functions in <math.h> [Contents][Index]
fminmagfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmod, Previous: fminmagf, Up: Functions in <math.h> [Contents][Index]
fminmaglDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmodf, Previous: fminmagl, Up: Functions in <math.h> [Contents][Index]
fmodPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmod.html
Gnulib module: fmod or fmod-ieee
Portability problems fixed by either Gnulib module fmod or fmod-ieee:
Portability problems fixed by Gnulib module fmod-ieee:
Portability problems not fixed by Gnulib:
Next: fmodl, Previous: fmod, Up: Functions in <math.h> [Contents][Index]
fmodfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmodf.html
Gnulib module: fmodf or fmodf-ieee
Portability problems fixed by either Gnulib module fmodf or fmodf-ieee:
Portability problems fixed by Gnulib module fmodf-ieee:
Portability problems not fixed by Gnulib:
Next: fmul, Previous: fmodf, Up: Functions in <math.h> [Contents][Index]
fmodlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmodl.html
Gnulib module: fmodl or fmodl-ieee
Portability problems fixed by either Gnulib module fmodl or fmodl-ieee:
Portability problems fixed by Gnulib module fmodl-ieee:
Portability problems not fixed by Gnulib:
Next: fmull, Previous: fmodl, Up: Functions in <math.h> [Contents][Index]
fmulDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fpclassify, Previous: fmul, Up: Functions in <math.h> [Contents][Index]
fmullDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: frexp, Previous: fmull, Up: Functions in <math.h> [Contents][Index]
fpclassifyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fpclassify.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: frexpf, Previous: fpclassify, Up: Functions in <math.h> [Contents][Index]
frexpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/frexp.html
Gnulib module: frexp or frexp-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: frexpl, Previous: frexp, Up: Functions in <math.h> [Contents][Index]
frexpfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/frexpf.html
Gnulib module: frexpf or frexpf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fromfp, Previous: frexpf, Up: Functions in <math.h> [Contents][Index]
frexplPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/frexpl.html
Gnulib module: frexpl or frexpl-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fromfpf, Previous: frexpl, Up: Functions in <math.h> [Contents][Index]
fromfpDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fromfpl, Previous: fromfp, Up: Functions in <math.h> [Contents][Index]
fromfpfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fromfpx, Previous: fromfpf, Up: Functions in <math.h> [Contents][Index]
fromfplDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fromfpxf, Previous: fromfpl, Up: Functions in <math.h> [Contents][Index]
fromfpxDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fromfpxl, Previous: fromfpx, Up: Functions in <math.h> [Contents][Index]
fromfpxfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fsqrt, Previous: fromfpxf, Up: Functions in <math.h> [Contents][Index]
fromfpxlDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fsqrtl, Previous: fromfpxl, Up: Functions in <math.h> [Contents][Index]
fsqrtISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.14.6
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fsub, Previous: fsqrt, Up: Functions in <math.h> [Contents][Index]
fsqrtlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.14.6
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fsubl, Previous: fsqrtl, Up: Functions in <math.h> [Contents][Index]
fsubDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpayload, Previous: fsub, Up: Functions in <math.h> [Contents][Index]
fsublDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpayloadf, Previous: fsubl, Up: Functions in <math.h> [Contents][Index]
getpayloadISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.1
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: getpayload
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpayloadl, Previous: getpayload, Up: Functions in <math.h> [Contents][Index]
getpayloadfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.1
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: getpayloadf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: hypot, Previous: getpayloadf, Up: Functions in <math.h> [Contents][Index]
getpayloadlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.1
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: getpayloadl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: hypotf, Previous: getpayloadl, Up: Functions in <math.h> [Contents][Index]
hypotPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/hypot.html
Gnulib module: hypot or hypot-ieee
Portability problems fixed by either Gnulib module hypot or hypot-ieee:
Portability problems fixed by Gnulib module hypot-ieee:
Portability problems not fixed by Gnulib:
Next: hypotl, Previous: hypot, Up: Functions in <math.h> [Contents][Index]
hypotfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/hypotf.html
Gnulib module: hypotf or hypotf-ieee
Portability problems fixed by either Gnulib module hypotf or hypotf-ieee:
Portability problems fixed by Gnulib module hypot-ieee:
Portability problems not fixed by Gnulib:
Next: ilogb, Previous: hypotf, Up: Functions in <math.h> [Contents][Index]
hypotlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/hypotl.html
Gnulib module: hypotl or hypotl-ieee
Portability problems fixed by either Gnulib module hypotl or hypotl-ieee:
Portability problems fixed by Gnulib module hypotl-ieee:
Portability problems not fixed by Gnulib:
Next: ilogbf, Previous: hypotl, Up: Functions in <math.h> [Contents][Index]
ilogbPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ilogb.html
Gnulib module: ilogb
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ilogbl, Previous: ilogb, Up: Functions in <math.h> [Contents][Index]
ilogbfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ilogbf.html
Gnulib module: ilogbf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isfinite, Previous: ilogbf, Up: Functions in <math.h> [Contents][Index]
ilogblPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ilogbl.html
Gnulib module: ilogbl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isgreater, Previous: ilogbl, Up: Functions in <math.h> [Contents][Index]
isfinitePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isfinite.html
Gnulib module: isfinite
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
isfinite raises an
exception given a signaling NaN operand.
Next: isgreaterequal, Previous: isfinite, Up: Functions in <math.h> [Contents][Index]
isgreaterPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isgreater.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isinf, Previous: isgreater, Up: Functions in <math.h> [Contents][Index]
isgreaterequalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isgreaterequal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isless, Previous: isgreaterequal, Up: Functions in <math.h> [Contents][Index]
isinfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isinf.html
Gnulib module: isinf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: islessequal, Previous: isinf, Up: Functions in <math.h> [Contents][Index]
islessPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isless.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: islessgreater, Previous: isless, Up: Functions in <math.h> [Contents][Index]
islessequalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/islessequal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isnan, Previous: islessequal, Up: Functions in <math.h> [Contents][Index]
islessgreaterPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/islessgreater.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isnormal, Previous: islessgreater, Up: Functions in <math.h> [Contents][Index]
isnanPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isnan.html
Gnulib module: isnan
Portability problems fixed by Gnulib:
isnan was introduced with C99 and is thus commonly not present
on pre-C99 systems.
isnan is not a macro on some platforms:
Solaris 11.4.
Portability problems not fixed by Gnulib:
Next: isunordered, Previous: isnan, Up: Functions in <math.h> [Contents][Index]
isnormalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isnormal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: j0, Previous: isnormal, Up: Functions in <math.h> [Contents][Index]
isunorderedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isunordered.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: j1, Previous: isunordered, Up: Functions in <math.h> [Contents][Index]
j0POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/j0.html
Gnulib module: j0
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: jn, Previous: j0, Up: Functions in <math.h> [Contents][Index]
j1POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/j1.html
Gnulib module: j1
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ldexp, Previous: j1, Up: Functions in <math.h> [Contents][Index]
jnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/jn.html
Gnulib module: jn
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ldexpf, Previous: jn, Up: Functions in <math.h> [Contents][Index]
ldexpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ldexp.html
Gnulib module: ldexp or ldexp-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ldexpl, Previous: ldexp, Up: Functions in <math.h> [Contents][Index]
ldexpfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ldexpf.html
Gnulib module: ldexpf or ldexpf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lgamma, Previous: ldexpf, Up: Functions in <math.h> [Contents][Index]
ldexplPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ldexpl.html
Gnulib module: ldexpl or ldexpl-ieee
Portability problems fixed by Gnulib:
<math.h> on some platforms:
Mac OS X.
Portability problems not fixed by Gnulib:
Next: lgammaf, Previous: ldexpl, Up: Functions in <math.h> [Contents][Index]
lgammaPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lgamma.html
Gnulib module: lgamma
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lgammal, Previous: lgamma, Up: Functions in <math.h> [Contents][Index]
lgammafPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lgammaf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llogb, Previous: lgammaf, Up: Functions in <math.h> [Contents][Index]
lgammalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lgammal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llogbf, Previous: lgammal, Up: Functions in <math.h> [Contents][Index]
llogbDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llogbl, Previous: llogb, Up: Functions in <math.h> [Contents][Index]
llogbfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llrint, Previous: llogbf, Up: Functions in <math.h> [Contents][Index]
llogblDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llrintf, Previous: llogbl, Up: Functions in <math.h> [Contents][Index]
llrintPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/llrint.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llrintl, Previous: llrint, Up: Functions in <math.h> [Contents][Index]
llrintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/llrintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llround, Previous: llrintf, Up: Functions in <math.h> [Contents][Index]
llrintlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/llrintl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llroundf, Previous: llrintl, Up: Functions in <math.h> [Contents][Index]
llroundPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/llround.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llroundl, Previous: llround, Up: Functions in <math.h> [Contents][Index]
llroundfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/llroundf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: log, Previous: llroundf, Up: Functions in <math.h> [Contents][Index]
llroundlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/llroundl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: log10, Previous: llroundl, Up: Functions in <math.h> [Contents][Index]
logPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log.html
Gnulib module: log or log-ieee
Portability problems fixed by either Gnulib module log or log-ieee:
Portability problems fixed by Gnulib module log-ieee:
Portability problems not fixed by Gnulib:
Next: log10f, Previous: log, Up: Functions in <math.h> [Contents][Index]
log10POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log10.html
Gnulib module: log10 or log10-ieee
Portability problems fixed by either Gnulib module log10 or log10-ieee:
Portability problems fixed by Gnulib module log10-ieee:
Portability problems not fixed by Gnulib:
Next: log10l, Previous: log10, Up: Functions in <math.h> [Contents][Index]
log10fPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log10f.html
Gnulib module: log10f or log10f-ieee
Portability problems fixed by either Gnulib module log10f or log10f-ieee:
Portability problems fixed by Gnulib module log10f-ieee:
Portability problems not fixed by Gnulib:
Next: log10p1, Previous: log10f, Up: Functions in <math.h> [Contents][Index]
log10lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log10l.html
Gnulib module: log10l or log10l-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: log10p1f, Previous: log10l, Up: Functions in <math.h> [Contents][Index]
log10p1ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.13
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: log10p1l, Previous: log10p1, Up: Functions in <math.h> [Contents][Index]
log10p1fISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.13
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: log1p, Previous: log10p1f, Up: Functions in <math.h> [Contents][Index]
log10p1lISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.13
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: log1pf, Previous: log10p1l, Up: Functions in <math.h> [Contents][Index]
log1pPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log1p.html
Gnulib module: log1p or log1p-ieee
Portability problems fixed by either Gnulib module log1p or log1p-ieee:
Portability problems fixed by Gnulib module log1p-ieee:
Portability problems not fixed by Gnulib:
Next: log1pl, Previous: log1p, Up: Functions in <math.h> [Contents][Index]
log1pfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log1pf.html
Gnulib module: log1pf or log1pf-ieee
Portability problems fixed by either Gnulib module log1pf or log1pf-ieee:
Portability problems fixed by Gnulib module log1pf-ieee:
Portability problems not fixed by Gnulib:
Next: log2, Previous: log1pf, Up: Functions in <math.h> [Contents][Index]
log1plPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log1pl.html
Gnulib module: log1pl or log1pl-ieee
Portability problems fixed by either Gnulib module log1pl or log1pl-ieee:
Portability problems fixed by Gnulib module log1pl-ieee:
Portability problems not fixed by Gnulib:
Next: log2f, Previous: log1pl, Up: Functions in <math.h> [Contents][Index]
log2POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log2.html
Gnulib module: log2 or log2-ieee
Portability problems fixed by either Gnulib module log2 or log2-ieee:
Portability problems fixed by Gnulib module log2-ieee:
Portability problems not fixed by Gnulib:
Next: log2l, Previous: log2, Up: Functions in <math.h> [Contents][Index]
log2fPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log2f.html
Gnulib module: log2f or log2f-ieee
Portability problems fixed by either Gnulib module log2f or log2f-ieee:
Portability problems fixed by Gnulib module log2f-ieee:
Portability problems not fixed by Gnulib:
Next: log2p1, Previous: log2f, Up: Functions in <math.h> [Contents][Index]
log2lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/log2l.html
Gnulib module: log2l or log2l-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: log2p1f, Previous: log2l, Up: Functions in <math.h> [Contents][Index]
log2p1ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.16
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: log2p1l, Previous: log2p1, Up: Functions in <math.h> [Contents][Index]
log2p1fISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.16
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: logb, Previous: log2p1f, Up: Functions in <math.h> [Contents][Index]
log2p1lISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.16
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: logbf, Previous: log2p1l, Up: Functions in <math.h> [Contents][Index]
logbPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/logb.html
Gnulib module: logb or logb-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: logbl, Previous: logb, Up: Functions in <math.h> [Contents][Index]
logbfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/logbf.html
Gnulib module: logbf or logbf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: logf, Previous: logbf, Up: Functions in <math.h> [Contents][Index]
logblPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/logbl.html
Gnulib module: logbl or logbl-ieee
Portability problems fixed by Gnulib:
1.6810515715560467531313389086608763012990396724232e-4932L
on some platforms:
OpenBSD 7.3/mips64.
Portability problems not fixed by Gnulib:
Next: logl, Previous: logbl, Up: Functions in <math.h> [Contents][Index]
logfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/logf.html
Gnulib module: logf or logf-ieee
Portability problems fixed by either Gnulib module logf or logf-ieee:
Portability problems fixed by Gnulib module logf-ieee:
Portability problems not fixed by Gnulib:
Next: logp1, Previous: logf, Up: Functions in <math.h> [Contents][Index]
loglPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/logl.html
Gnulib module: logl or logl-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: logp1f, Previous: logl, Up: Functions in <math.h> [Contents][Index]
logp1ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.14
Gnulib module: logp1
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: logp1l, Previous: logp1, Up: Functions in <math.h> [Contents][Index]
logp1fISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.14
Gnulib module: logp1f
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lrint, Previous: logp1f, Up: Functions in <math.h> [Contents][Index]
logp1lISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.6.14
Gnulib module: logp1l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lrintf, Previous: logp1l, Up: Functions in <math.h> [Contents][Index]
lrintPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lrint.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lrintl, Previous: lrint, Up: Functions in <math.h> [Contents][Index]
lrintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lrintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lround, Previous: lrintf, Up: Functions in <math.h> [Contents][Index]
lrintlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lrintl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lroundf, Previous: lrintl, Up: Functions in <math.h> [Contents][Index]
lroundPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lround.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lroundl, Previous: lround, Up: Functions in <math.h> [Contents][Index]
lroundfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lroundf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: math_errhandling, Previous: lroundf, Up: Functions in <math.h> [Contents][Index]
lroundlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lroundl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: modf, Previous: lroundl, Up: Functions in <math.h> [Contents][Index]
math_errhandlingISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.1
Documentation:
man math_error
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sqrt on some CPUs).
strtod.
feclearexcept (FE_ALL_EXCEPT) before the operation
and fetestexcept after the operation),
regardless of math_errhandling.
Next: modff, Previous: math_errhandling, Up: Functions in <math.h> [Contents][Index]
modfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/modf.html
Gnulib module: modf or modf-ieee
Portability problems fixed by either Gnulib module modf or modf-ieee:
Portability problems fixed by Gnulib module modf-ieee:
Portability problems not fixed by Gnulib:
Next: modfl, Previous: modf, Up: Functions in <math.h> [Contents][Index]
modffPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/modff.html
Gnulib module: modff or modff-ieee
Portability problems fixed by either Gnulib module modff or modff-ieee:
Portability problems fixed by Gnulib module modff-ieee:
Portability problems not fixed by Gnulib:
Next: nan, Previous: modff, Up: Functions in <math.h> [Contents][Index]
modflPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/modfl.html
Gnulib module: modfl or modfl-ieee
Portability problems fixed by either Gnulib module modfl or modfl-ieee:
Portability problems fixed by Gnulib module modfl-ieee:
Portability problems not fixed by Gnulib:
Next: nanf, Previous: modfl, Up: Functions in <math.h> [Contents][Index]
nanPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nan.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nanl, Previous: nan, Up: Functions in <math.h> [Contents][Index]
nanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nearbyint, Previous: nanf, Up: Functions in <math.h> [Contents][Index]
nanlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nanl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nearbyintf, Previous: nanl, Up: Functions in <math.h> [Contents][Index]
nearbyintPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nearbyint.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nearbyintl, Previous: nearbyint, Up: Functions in <math.h> [Contents][Index]
nearbyintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nearbyintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextafter, Previous: nearbyintf, Up: Functions in <math.h> [Contents][Index]
nearbyintlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nearbyintl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextafterf, Previous: nearbyintl, Up: Functions in <math.h> [Contents][Index]
nextafterPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nextafter.html
Gnulib module: nextafter
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextafterl, Previous: nextafter, Up: Functions in <math.h> [Contents][Index]
nextafterfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nextafterf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextdown, Previous: nextafterf, Up: Functions in <math.h> [Contents][Index]
nextafterlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nextafterl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextdownf, Previous: nextafterl, Up: Functions in <math.h> [Contents][Index]
nextdownDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextdownl, Previous: nextdown, Up: Functions in <math.h> [Contents][Index]
nextdownfDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nexttoward, Previous: nextdownf, Up: Functions in <math.h> [Contents][Index]
nextdownlDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nexttowardf, Previous: nextdownl, Up: Functions in <math.h> [Contents][Index]
nexttowardPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nexttoward.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nexttowardl, Previous: nexttoward, Up: Functions in <math.h> [Contents][Index]
nexttowardfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nexttowardf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextup, Previous: nexttowardf, Up: Functions in <math.h> [Contents][Index]
nexttowardlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nexttowardl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextupf, Previous: nexttowardl, Up: Functions in <math.h> [Contents][Index]
nextupDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nextupl, Previous: nextup, Up: Functions in <math.h> [Contents][Index]
nextupfDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pow, Previous: nextupf, Up: Functions in <math.h> [Contents][Index]
nextuplDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: powf, Previous: nextupl, Up: Functions in <math.h> [Contents][Index]
powPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pow.html
Gnulib module: pow
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: powl, Previous: pow, Up: Functions in <math.h> [Contents][Index]
powfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/powf.html
Gnulib module: powf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pown, Previous: powf, Up: Functions in <math.h> [Contents][Index]
powlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/powl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pownf, Previous: powl, Up: Functions in <math.h> [Contents][Index]
pownISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.6
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pownl, Previous: pown, Up: Functions in <math.h> [Contents][Index]
pownfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.6
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: powr, Previous: pownf, Up: Functions in <math.h> [Contents][Index]
pownlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.6
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: powrf, Previous: pownl, Up: Functions in <math.h> [Contents][Index]
powrISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.7
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: powrl, Previous: powr, Up: Functions in <math.h> [Contents][Index]
powrfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.7
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: remainder, Previous: powrf, Up: Functions in <math.h> [Contents][Index]
powrlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.7
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: remainderf, Previous: powrl, Up: Functions in <math.h> [Contents][Index]
remainderPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/remainder.html
Gnulib module: remainder or remainder-ieee
Portability problems fixed by either Gnulib module remainder or remainder-ieee:
Portability problems fixed by Gnulib module remainder-ieee:
Portability problems not fixed by Gnulib:
Next: remainderl, Previous: remainder, Up: Functions in <math.h> [Contents][Index]
remainderfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/remainderf.html
Gnulib module: remainderf or remainderf-ieee
Portability problems fixed by either Gnulib module remainderf or remainderf-ieee:
Portability problems fixed by Gnulib module remainderf-ieee:
Portability problems not fixed by Gnulib:
Next: remquo, Previous: remainderf, Up: Functions in <math.h> [Contents][Index]
remainderlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/remainderl.html
Gnulib module: remainderl or remainderl-ieee
Portability problems fixed by either Gnulib module remainderl or remainderl-ieee:
Portability problems fixed by Gnulib module remainderl-ieee:
Portability problems not fixed by Gnulib:
Next: remquof, Previous: remainderl, Up: Functions in <math.h> [Contents][Index]
remquoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/remquo.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: remquol, Previous: remquo, Up: Functions in <math.h> [Contents][Index]
remquofPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/remquof.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rint, Previous: remquof, Up: Functions in <math.h> [Contents][Index]
remquolPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/remquol.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rintf, Previous: remquol, Up: Functions in <math.h> [Contents][Index]
rintPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rint.html
Gnulib module: rint or rint-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rintl, Previous: rint, Up: Functions in <math.h> [Contents][Index]
rintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rintf.html
Gnulib module: rintf or rintf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rootn, Previous: rintf, Up: Functions in <math.h> [Contents][Index]
rintlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rintl.html
Gnulib module: rintl or rintl-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rootnf, Previous: rintl, Up: Functions in <math.h> [Contents][Index]
rootnISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.8
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rootnl, Previous: rootn, Up: Functions in <math.h> [Contents][Index]
rootnfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.8
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: round, Previous: rootnf, Up: Functions in <math.h> [Contents][Index]
rootnlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.8
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: roundeven, Previous: rootnl, Up: Functions in <math.h> [Contents][Index]
roundPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/round.html
Gnulib module: round or round-ieee
Portability problems fixed by either Gnulib module round or round-ieee:
Portability problems fixed by Gnulib module round-ieee:
Portability problems not fixed by Gnulib:
Next: roundevenf, Previous: round, Up: Functions in <math.h> [Contents][Index]
roundevenDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: roundevenl, Previous: roundeven, Up: Functions in <math.h> [Contents][Index]
roundevenfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: roundf, Previous: roundevenf, Up: Functions in <math.h> [Contents][Index]
roundevenlDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: roundl, Previous: roundevenl, Up: Functions in <math.h> [Contents][Index]
roundfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/roundf.html
Gnulib module: roundf or roundf-ieee
Portability problems fixed by either Gnulib module roundf or roundf-ieee:
Portability problems fixed by Gnulib module roundf-ieee:
Portability problems not fixed by Gnulib:
Next: rsqrt, Previous: roundf, Up: Functions in <math.h> [Contents][Index]
roundlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/roundl.html
Gnulib module: roundl or roundl-ieee
Portability problems fixed by either Gnulib module roundl or roundl-ieee:
Portability problems fixed by Gnulib module roundl-ieee:
Portability problems not fixed by Gnulib:
Next: rsqrtf, Previous: roundl, Up: Functions in <math.h> [Contents][Index]
rsqrtISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.9
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rsqrtl, Previous: rsqrt, Up: Functions in <math.h> [Contents][Index]
rsqrtfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.9
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalbln, Previous: rsqrtf, Up: Functions in <math.h> [Contents][Index]
rsqrtlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.7.9
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalblnf, Previous: rsqrtl, Up: Functions in <math.h> [Contents][Index]
scalblnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/scalbln.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalblnl, Previous: scalbln, Up: Functions in <math.h> [Contents][Index]
scalblnfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/scalblnf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalbn, Previous: scalblnf, Up: Functions in <math.h> [Contents][Index]
scalblnlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/scalblnl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalbnf, Previous: scalblnl, Up: Functions in <math.h> [Contents][Index]
scalbnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/scalbn.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalbnl, Previous: scalbn, Up: Functions in <math.h> [Contents][Index]
scalbnfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/scalbnf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setpayload, Previous: scalbnf, Up: Functions in <math.h> [Contents][Index]
scalbnlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/scalbnl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setpayloadf, Previous: scalbnl, Up: Functions in <math.h> [Contents][Index]
setpayloadISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.2
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: setpayload
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setpayloadl, Previous: setpayload, Up: Functions in <math.h> [Contents][Index]
setpayloadfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.2
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: setpayloadf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setpayloadsig, Previous: setpayloadf, Up: Functions in <math.h> [Contents][Index]
setpayloadlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.2
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: setpayloadl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setpayloadsigf, Previous: setpayloadl, Up: Functions in <math.h> [Contents][Index]
setpayloadsigISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.3
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: setpayloadsig
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setpayloadsigl, Previous: setpayloadsig, Up: Functions in <math.h> [Contents][Index]
setpayloadsigfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.3
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: setpayloadsigf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: signbit, Previous: setpayloadsigf, Up: Functions in <math.h> [Contents][Index]
setpayloadsiglISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.13.3
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.
Gnulib module: setpayloadsigl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: signgam, Previous: setpayloadsigl, Up: Functions in <math.h> [Contents][Index]
signbitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/signbit.html
Gnulib module: signbit
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sin, Previous: signbit, Up: Functions in <math.h> [Contents][Index]
signgamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/signgam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sinf, Previous: signgam, Up: Functions in <math.h> [Contents][Index]
sinPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sin.html
Gnulib module: sin
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sinh, Previous: sin, Up: Functions in <math.h> [Contents][Index]
sinfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sinf.html
Gnulib module: sinf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sinhf, Previous: sinf, Up: Functions in <math.h> [Contents][Index]
sinhPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sinh.html
Gnulib module: sinh
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sinhl, Previous: sinh, Up: Functions in <math.h> [Contents][Index]
sinhfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sinhf.html
Gnulib module: sinhf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sinl, Previous: sinhf, Up: Functions in <math.h> [Contents][Index]
sinhlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sinhl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sinpi, Previous: sinhl, Up: Functions in <math.h> [Contents][Index]
sinlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sinl.html
Gnulib module: sinl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sinpif, Previous: sinl, Up: Functions in <math.h> [Contents][Index]
sinpiISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.13
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sinpil, Previous: sinpi, Up: Functions in <math.h> [Contents][Index]
sinpifISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.13
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sqrt, Previous: sinpif, Up: Functions in <math.h> [Contents][Index]
sinpilISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.13
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sqrtf, Previous: sinpil, Up: Functions in <math.h> [Contents][Index]
sqrtPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sqrt.html
Gnulib module: sqrt or sqrt-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sqrtl, Previous: sqrt, Up: Functions in <math.h> [Contents][Index]
sqrtfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sqrtf.html
Gnulib module: sqrtf or sqrtf-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tan, Previous: sqrtf, Up: Functions in <math.h> [Contents][Index]
sqrtlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sqrtl.html
Gnulib module: sqrtl or sqrtl-ieee
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tanf, Previous: sqrtl, Up: Functions in <math.h> [Contents][Index]
tanPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tan.html
Gnulib module: tan
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tanh, Previous: tan, Up: Functions in <math.h> [Contents][Index]
tanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tanf.html
Gnulib module: tanf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tanhf, Previous: tanf, Up: Functions in <math.h> [Contents][Index]
tanhPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tanh.html
Gnulib module: tanh
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tanhl, Previous: tanh, Up: Functions in <math.h> [Contents][Index]
tanhfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tanhf.html
Gnulib module: tanhf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tanl, Previous: tanhf, Up: Functions in <math.h> [Contents][Index]
tanhlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tanhl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tanpi, Previous: tanhl, Up: Functions in <math.h> [Contents][Index]
tanlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tanl.html
Gnulib module: tanl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tanpif, Previous: tanl, Up: Functions in <math.h> [Contents][Index]
tanpiISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.14
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tanpil, Previous: tanpi, Up: Functions in <math.h> [Contents][Index]
tanpifISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.14
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tgamma, Previous: tanpif, Up: Functions in <math.h> [Contents][Index]
tanpilISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.12.4.14
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tgammaf, Previous: tanpil, Up: Functions in <math.h> [Contents][Index]
tgammaPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tgamma.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tgammal, Previous: tgamma, Up: Functions in <math.h> [Contents][Index]
tgammafPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tgammaf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: totalorder, Previous: tgammaf, Up: Functions in <math.h> [Contents][Index]
tgammalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tgammal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: totalorderf, Previous: tgammal, Up: Functions in <math.h> [Contents][Index]
totalorderISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.12.1
Documentation:
Gnulib module: totalorder
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: totalorderl, Previous: totalorder, Up: Functions in <math.h> [Contents][Index]
totalorderfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.12.1
Documentation:
Gnulib module: totalorderf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: totalordermag, Previous: totalorderf, Up: Functions in <math.h> [Contents][Index]
totalorderlISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.12.1
Documentation:
Gnulib module: totalorderl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: totalordermagf, Previous: totalorderl, Up: Functions in <math.h> [Contents][Index]
totalordermagISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.12.2
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.html.
Gnulib module: totalordermag
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: totalordermagl, Previous: totalordermag, Up: Functions in <math.h> [Contents][Index]
totalordermagfISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.12.2
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.html.
Gnulib module: totalordermagf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: trunc, Previous: totalordermagf, Up: Functions in <math.h> [Contents][Index]
totalordermaglISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section F.10.12.2
Documentation:
https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.html.
Gnulib module: totalordermagl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: truncf, Previous: totalordermagl, Up: Functions in <math.h> [Contents][Index]
truncPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/trunc.html
Gnulib module: trunc or trunc-ieee
Portability problems fixed by either Gnulib module trunc or trunc-ieee:
-D_GNU_SOURCE) on some platforms:
glibc 2.8.
Portability problems fixed by Gnulib module trunc-ieee:
Portability problems not fixed by Gnulib:
Next: truncl, Previous: trunc, Up: Functions in <math.h> [Contents][Index]
truncfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/truncf.html
Gnulib module: truncf or truncf-ieee
Portability problems fixed by either Gnulib module truncf or truncf-ieee:
-D_GNU_SOURCE) on some platforms:
glibc 2.8.
Portability problems fixed by Gnulib module truncf-ieee:
Portability problems not fixed by Gnulib:
Next: ufromfp, Previous: truncf, Up: Functions in <math.h> [Contents][Index]
trunclPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/truncl.html
Gnulib module: truncl or truncl-ieee
Portability problems fixed by either Gnulib module truncl or truncl-ieee:
-D_GNU_SOURCE) on some platforms:
glibc 2.8.
Portability problems fixed by Gnulib module truncl-ieee:
Portability problems not fixed by Gnulib:
Next: ufromfpf, Previous: truncl, Up: Functions in <math.h> [Contents][Index]
ufromfpDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ufromfpl, Previous: ufromfp, Up: Functions in <math.h> [Contents][Index]
ufromfpfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ufromfpx, Previous: ufromfpf, Up: Functions in <math.h> [Contents][Index]
ufromfplDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ufromfpxf, Previous: ufromfpl, Up: Functions in <math.h> [Contents][Index]
ufromfpxDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ufromfpxl, Previous: ufromfpx, Up: Functions in <math.h> [Contents][Index]
ufromfpxfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: y0, Previous: ufromfpxf, Up: Functions in <math.h> [Contents][Index]
ufromfpxlDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: y1, Previous: ufromfpxl, Up: Functions in <math.h> [Contents][Index]
y0POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/y0.html
Gnulib module: y0
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yn, Previous: y0, Up: Functions in <math.h> [Contents][Index]
y1POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/y1.html
Gnulib module: y1
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: y1, Up: Functions in <math.h> [Contents][Index]
ynPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/yn.html
Gnulib module: yn
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <mqueue.h>, Previous: Functions in <math.h>, Up: Function Substitutes [Contents][Index]
<monetary.h>| • strfmon | ||
| • strfmon_l |
Next: strfmon_l, Up: Functions in <monetary.h> [Contents][Index]
strfmonPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strfmon.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: strfmon, Up: Functions in <monetary.h> [Contents][Index]
strfmon_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strfmon_l.html
Gnulib module: strfmon_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <ndbm.h>, Previous: Functions in <monetary.h>, Up: Function Substitutes [Contents][Index]
<mqueue.h>| • mq_close | ||
| • mq_getattr | ||
| • mq_notify | ||
| • mq_open | ||
| • mq_receive | ||
| • mq_send | ||
| • mq_setattr | ||
| • mq_timedreceive | ||
| • mq_timedsend | ||
| • mq_unlink |
Next: mq_getattr, Up: Functions in <mqueue.h> [Contents][Index]
mq_closePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_close.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mq_notify, Previous: mq_close, Up: Functions in <mqueue.h> [Contents][Index]
mq_getattrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_getattr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mq_open, Previous: mq_getattr, Up: Functions in <mqueue.h> [Contents][Index]
mq_notifyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_notify.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mq_receive, Previous: mq_notify, Up: Functions in <mqueue.h> [Contents][Index]
mq_openPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_open.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mq_send, Previous: mq_open, Up: Functions in <mqueue.h> [Contents][Index]
mq_receivePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_receive.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mq_setattr, Previous: mq_receive, Up: Functions in <mqueue.h> [Contents][Index]
mq_sendPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_send.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mq_timedreceive, Previous: mq_send, Up: Functions in <mqueue.h> [Contents][Index]
mq_setattrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_setattr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mq_timedsend, Previous: mq_setattr, Up: Functions in <mqueue.h> [Contents][Index]
mq_timedreceivePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_timedreceive.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mq_unlink, Previous: mq_timedreceive, Up: Functions in <mqueue.h> [Contents][Index]
mq_timedsendPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_timedsend.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: mq_timedsend, Up: Functions in <mqueue.h> [Contents][Index]
mq_unlinkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mq_unlink.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <net/if.h>, Previous: Functions in <mqueue.h>, Up: Function Substitutes [Contents][Index]
<ndbm.h>| • dbm_clearerr | ||
| • dbm_close | ||
| • dbm_delete | ||
| • dbm_error | ||
| • dbm_fetch | ||
| • dbm_firstkey | ||
| • dbm_nextkey | ||
| • dbm_open | ||
| • dbm_store |
Next: dbm_close, Up: Functions in <ndbm.h> [Contents][Index]
dbm_clearerrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_clearerr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dbm_delete, Previous: dbm_clearerr, Up: Functions in <ndbm.h> [Contents][Index]
dbm_closePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_close.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dbm_error, Previous: dbm_close, Up: Functions in <ndbm.h> [Contents][Index]
dbm_deletePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_delete.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dbm_fetch, Previous: dbm_delete, Up: Functions in <ndbm.h> [Contents][Index]
dbm_errorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_error.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dbm_firstkey, Previous: dbm_error, Up: Functions in <ndbm.h> [Contents][Index]
dbm_fetchPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_fetch.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dbm_nextkey, Previous: dbm_fetch, Up: Functions in <ndbm.h> [Contents][Index]
dbm_firstkeyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_firstkey.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dbm_open, Previous: dbm_firstkey, Up: Functions in <ndbm.h> [Contents][Index]
dbm_nextkeyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_nextkey.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dbm_store, Previous: dbm_nextkey, Up: Functions in <ndbm.h> [Contents][Index]
dbm_openPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_open.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: dbm_open, Up: Functions in <ndbm.h> [Contents][Index]
dbm_storePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dbm_store.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <netdb.h>, Previous: Functions in <ndbm.h>, Up: Function Substitutes [Contents][Index]
<net/if.h>| • if_freenameindex | ||
| • if_indextoname | ||
| • if_nameindex | ||
| • if_nametoindex |
Next: if_indextoname, Up: Functions in <net/if.h> [Contents][Index]
if_freenameindexPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/if_freenameindex.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: if_nameindex, Previous: if_freenameindex, Up: Functions in <net/if.h> [Contents][Index]
if_indextonamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/if_indextoname.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: if_nametoindex, Previous: if_indextoname, Up: Functions in <net/if.h> [Contents][Index]
if_nameindexPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/if_nameindex.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: if_nameindex, Up: Functions in <net/if.h> [Contents][Index]
if_nametoindexPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/if_nametoindex.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <netinet/in.h>, Previous: Functions in <net/if.h>, Up: Function Substitutes [Contents][Index]
<netdb.h>| • endhostent | ||
| • endnetent | ||
| • endprotoent | ||
| • endservent | ||
| • freeaddrinfo | ||
| • gai_strerror | ||
| • getaddrinfo | ||
| • gethostent | ||
| • getnameinfo | ||
| • getnetbyaddr | ||
| • getnetbyname | ||
| • getnetent | ||
| • getprotobyname | ||
| • getprotobynumber | ||
| • getprotoent | ||
| • getservbyname | ||
| • getservbyport | ||
| • getservent | ||
| • sethostent | ||
| • setnetent | ||
| • setprotoent | ||
| • setservent |
Next: endnetent, Up: Functions in <netdb.h> [Contents][Index]
endhostentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/endhostent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: endprotoent, Previous: endhostent, Up: Functions in <netdb.h> [Contents][Index]
endnetentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/endnetent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: endservent, Previous: endnetent, Up: Functions in <netdb.h> [Contents][Index]
endprotoentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/endprotoent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: freeaddrinfo, Previous: endprotoent, Up: Functions in <netdb.h> [Contents][Index]
endserventPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/endservent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gai_strerror, Previous: endservent, Up: Functions in <netdb.h> [Contents][Index]
freeaddrinfoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/freeaddrinfo.html
Gnulib module: getaddrinfo
Portability problems fixed by Gnulib:
<ws2tcpip.h> rather than in
<netdb.h>.
cdecl.
Portability problems not fixed by Gnulib:
Next: getaddrinfo, Previous: freeaddrinfo, Up: Functions in <netdb.h> [Contents][Index]
gai_strerrorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/gai_strerror.html
Gnulib module: getaddrinfo
Portability problems fixed by Gnulib:
<ws2tcpip.h> on some
platforms:
mingw, MSVC 14.
char * instead of const char *
on some platforms:
AIX 7.1, HP-UX 11, Solaris 9, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
Next: gethostent, Previous: gai_strerror, Up: Functions in <netdb.h> [Contents][Index]
getaddrinfoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getaddrinfo.html
Gnulib module: getaddrinfo
Portability problems fixed by Gnulib:
<ws2tcpip.h>
rather than in <netdb.h>.
AI_NUMERICSERV hints flag.
cdecl.
AI_NUMERICHOST hints flag.
Portability problems not fixed by Gnulib:
Next: getnameinfo, Previous: getaddrinfo, Up: Functions in <netdb.h> [Contents][Index]
gethostentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/gethostent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetbyaddr, Previous: gethostent, Up: Functions in <netdb.h> [Contents][Index]
getnameinfoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getnameinfo.html
Gnulib module: getaddrinfo
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetbyname, Previous: getnameinfo, Up: Functions in <netdb.h> [Contents][Index]
getnetbyaddrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getnetbyaddr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetent, Previous: getnetbyaddr, Up: Functions in <netdb.h> [Contents][Index]
getnetbynamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getnetbyname.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getprotobyname, Previous: getnetbyname, Up: Functions in <netdb.h> [Contents][Index]
getnetentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getnetent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getprotobynumber, Previous: getnetent, Up: Functions in <netdb.h> [Contents][Index]
getprotobynamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getprotobyname.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<winsock2.h> instead of <netdb.h>
on some platforms:
mingw, MSVC 14.
Next: getprotoent, Previous: getprotobyname, Up: Functions in <netdb.h> [Contents][Index]
getprotobynumberPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getprotobynumber.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<winsock2.h> instead of <netdb.h>
on some platforms:
mingw, MSVC 14.
Next: getservbyname, Previous: getprotobynumber, Up: Functions in <netdb.h> [Contents][Index]
getprotoentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getprotoent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getservbyport, Previous: getprotoent, Up: Functions in <netdb.h> [Contents][Index]
getservbynamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getservbyname.html
Gnulib module: servent
Portability problems fixed by Gnulib:
<winsock2.h> instead of <netdb.h>
on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
cdecl.
Next: getservent, Previous: getservbyname, Up: Functions in <netdb.h> [Contents][Index]
getservbyportPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getservbyport.html
Gnulib module: servent
Portability problems fixed by Gnulib:
<winsock2.h> instead of <netdb.h>
on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
cdecl.
Next: sethostent, Previous: getservbyport, Up: Functions in <netdb.h> [Contents][Index]
getserventPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getservent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setnetent, Previous: getservent, Up: Functions in <netdb.h> [Contents][Index]
sethostentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sethostent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setprotoent, Previous: sethostent, Up: Functions in <netdb.h> [Contents][Index]
setnetentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setnetent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setservent, Previous: setnetent, Up: Functions in <netdb.h> [Contents][Index]
setprotoentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setprotoent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: setprotoent, Up: Functions in <netdb.h> [Contents][Index]
setserventPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setservent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <nl_types.h>, Previous: Functions in <netdb.h>, Up: Function Substitutes [Contents][Index]
<netinet/in.h>| • in6addr_any | ||
| • in6addr_loopback |
Next: in6addr_loopback, Up: Functions in <netinet/in.h> [Contents][Index]
in6addr_anyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/in6addr_any.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: in6addr_any, Up: Functions in <netinet/in.h> [Contents][Index]
in6addr_loopbackPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/in6addr_loopback.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <poll.h>, Previous: Functions in <netinet/in.h>, Up: Function Substitutes [Contents][Index]
<nl_types.h>| • catclose | ||
| • catgets | ||
| • catopen |
Next: catgets, Up: Functions in <nl_types.h> [Contents][Index]
catclosePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catclose.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: catopen, Previous: catclose, Up: Functions in <nl_types.h> [Contents][Index]
catgetsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catgets.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: catgets, Up: Functions in <nl_types.h> [Contents][Index]
catopenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/catopen.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <pthread.h>, Previous: Functions in <nl_types.h>, Up: Function Substitutes [Contents][Index]
<poll.h>| • poll | ||
| • ppoll |
Next: ppoll, Up: Functions in <poll.h> [Contents][Index]
pollPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/poll.html
Gnulib module: poll
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
poll replacement might
return 0 even before the timeout has passed. Programs using it with pipes can
thus busy wait.
Previous: poll, Up: Functions in <poll.h> [Contents][Index]
ppollPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ppoll.html
Documentation:
man ppoll
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <pwd.h>, Previous: Functions in <poll.h>, Up: Function Substitutes [Contents][Index]
<pthread.h>Next: pthread_attr_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_atforkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_atfork.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getdetachstate, Previous: pthread_atfork, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_destroy.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getguardsize, Previous: pthread_attr_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_getdetachstatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_getdetachstate.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getinheritsched, Previous: pthread_attr_getdetachstate, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_getguardsizePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_getguardsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getschedparam, Previous: pthread_attr_getguardsize, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_getinheritschedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_getinheritsched.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getschedpolicy, Previous: pthread_attr_getinheritsched, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_getschedparamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_getschedparam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getscope, Previous: pthread_attr_getschedparam, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_getschedpolicyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_getschedpolicy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getstack, Previous: pthread_attr_getschedpolicy, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_getscopePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_getscope.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getstacksize, Previous: pthread_attr_getscope, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_getstackPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_getstack.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_init, Previous: pthread_attr_getstack, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_getstacksizePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_getstacksize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setdetachstate, Previous: pthread_attr_getstacksize, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_init.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setguardsize, Previous: pthread_attr_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_setdetachstatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_setdetachstate.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setinheritsched, Previous: pthread_attr_setdetachstate, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_setguardsizePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_setguardsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setschedparam, Previous: pthread_attr_setguardsize, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_setinheritschedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_setinheritsched.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setschedpolicy, Previous: pthread_attr_setinheritsched, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_setschedparamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_setschedparam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setscope, Previous: pthread_attr_setschedparam, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_setschedpolicyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_setschedpolicy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setstack, Previous: pthread_attr_setschedpolicy, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_setscopePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_setscope.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setstacksize, Previous: pthread_attr_setscope, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_setstackPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_setstack.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_barrier_destroy, Previous: pthread_attr_setstack, Up: Functions in <pthread.h> [Contents][Index]
pthread_attr_setstacksizePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_attr_setstacksize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_barrier_init, Previous: pthread_attr_setstacksize, Up: Functions in <pthread.h> [Contents][Index]
pthread_barrier_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_barrier_destroy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_barrier_wait, Previous: pthread_barrier_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_barrier_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_barrier_init.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_barrierattr_destroy, Previous: pthread_barrier_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_barrier_waitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_barrier_wait.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_barrierattr_getpshared, Previous: pthread_barrier_wait, Up: Functions in <pthread.h> [Contents][Index]
pthread_barrierattr_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_barrierattr_destroy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_barrierattr_init, Previous: pthread_barrierattr_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_barrierattr_getpsharedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_barrierattr_getpshared.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_barrierattr_setpshared, Previous: pthread_barrierattr_getpshared, Up: Functions in <pthread.h> [Contents][Index]
pthread_barrierattr_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_barrierattr_init.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cancel, Previous: pthread_barrierattr_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_barrierattr_setpsharedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_barrierattr_setpshared.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cleanup_pop, Previous: pthread_barrierattr_setpshared, Up: Functions in <pthread.h> [Contents][Index]
pthread_cancelPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cancel.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cleanup_push, Previous: pthread_cancel, Up: Functions in <pthread.h> [Contents][Index]
pthread_cleanup_popPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cleanup_pop.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cond_broadcast, Previous: pthread_cleanup_pop, Up: Functions in <pthread.h> [Contents][Index]
pthread_cleanup_pushPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cleanup_push.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cond_clockwait, Previous: pthread_cleanup_push, Up: Functions in <pthread.h> [Contents][Index]
pthread_cond_broadcastPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cond_broadcast.html
Gnulib module: pthread-cond
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cond_destroy, Previous: pthread_cond_broadcast, Up: Functions in <pthread.h> [Contents][Index]
pthread_cond_clockwaitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cond_clockwait.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cond_init, Previous: pthread_cond_clockwait, Up: Functions in <pthread.h> [Contents][Index]
pthread_cond_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cond_destroy.html
Gnulib module: pthread-cond
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cond_signal, Previous: pthread_cond_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_cond_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cond_init.html
Gnulib module: pthread-cond
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cond_timedwait, Previous: pthread_cond_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_cond_signalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cond_signal.html
Gnulib module: pthread-cond
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_cond_wait, Previous: pthread_cond_signal, Up: Functions in <pthread.h> [Contents][Index]
pthread_cond_timedwaitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cond_timedwait.html
Gnulib module: pthread-cond
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_condattr_destroy, Previous: pthread_cond_timedwait, Up: Functions in <pthread.h> [Contents][Index]
pthread_cond_waitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cond_wait.html
Gnulib module: pthread-cond
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_condattr_getclock, Previous: pthread_cond_wait, Up: Functions in <pthread.h> [Contents][Index]
pthread_condattr_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_condattr_destroy.html
Gnulib module: pthread-cond
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_condattr_getpshared, Previous: pthread_condattr_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_condattr_getclockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_condattr_getclock.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_condattr_init, Previous: pthread_condattr_getclock, Up: Functions in <pthread.h> [Contents][Index]
pthread_condattr_getpsharedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_condattr_getpshared.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_condattr_setclock, Previous: pthread_condattr_getpshared, Up: Functions in <pthread.h> [Contents][Index]
pthread_condattr_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_condattr_init.html
Gnulib module: pthread-cond
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_condattr_setpshared, Previous: pthread_condattr_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_condattr_setclockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_condattr_setclock.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_create, Previous: pthread_condattr_setclock, Up: Functions in <pthread.h> [Contents][Index]
pthread_condattr_setpsharedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_condattr_setpshared.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_detach, Previous: pthread_condattr_setpshared, Up: Functions in <pthread.h> [Contents][Index]
pthread_createPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_create.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_equal, Previous: pthread_create, Up: Functions in <pthread.h> [Contents][Index]
pthread_detachPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_detach.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_exit, Previous: pthread_detach, Up: Functions in <pthread.h> [Contents][Index]
pthread_equalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_equal.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_getcpuclockid, Previous: pthread_equal, Up: Functions in <pthread.h> [Contents][Index]
pthread_exitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_exit.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_getschedparam, Previous: pthread_exit, Up: Functions in <pthread.h> [Contents][Index]
pthread_getcpuclockidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_getcpuclockid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_getspecific, Previous: pthread_getcpuclockid, Up: Functions in <pthread.h> [Contents][Index]
pthread_getschedparamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_getschedparam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_join, Previous: pthread_getschedparam, Up: Functions in <pthread.h> [Contents][Index]
pthread_getspecificPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_getspecific.html
Gnulib module: pthread-tss
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_key_create, Previous: pthread_getspecific, Up: Functions in <pthread.h> [Contents][Index]
pthread_joinPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_join.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_key_delete, Previous: pthread_join, Up: Functions in <pthread.h> [Contents][Index]
pthread_key_createPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_key_create.html
Gnulib module: pthread-tss
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_clocklock, Previous: pthread_key_create, Up: Functions in <pthread.h> [Contents][Index]
pthread_key_deletePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_key_delete.html
Gnulib module: pthread-tss
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_consistent, Previous: pthread_key_delete, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_clocklockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_clocklock.html
Documentation: —
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_destroy, Previous: pthread_mutex_clocklock, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_consistentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_consistent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_getprioceiling, Previous: pthread_mutex_consistent, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_destroy.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_init, Previous: pthread_mutex_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_getprioceilingPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_getprioceiling.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_lock, Previous: pthread_mutex_getprioceiling, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_init.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_setprioceiling, Previous: pthread_mutex_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_lockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_lock.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
-lpthread on some platforms:
FreeBSD 14.0, NetBSD 10.0.
Next: pthread_mutex_timedlock, Previous: pthread_mutex_lock, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_setprioceilingPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_setprioceiling.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_trylock, Previous: pthread_mutex_setprioceiling, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_timedlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_timedlock.html
Gnulib module: pthread_mutex_timedlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutex_unlock, Previous: pthread_mutex_timedlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_trylockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_trylock.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
-lpthread on some platforms:
FreeBSD 14.0, NetBSD 10.0.
Next: pthread_mutexattr_destroy, Previous: pthread_mutex_trylock, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutex_unlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_unlock.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_getprioceiling, Previous: pthread_mutex_unlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_destroy.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_getprotocol, Previous: pthread_mutexattr_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_getprioceilingPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_getprioceiling.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_getpshared, Previous: pthread_mutexattr_getprioceiling, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_getprotocolPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_getprotocol.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_getrobust, Previous: pthread_mutexattr_getprotocol, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_getpsharedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_getpshared.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_gettype, Previous: pthread_mutexattr_getpshared, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_getrobustPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_getrobust.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_init, Previous: pthread_mutexattr_getrobust, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_gettypePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_gettype.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_setprioceiling, Previous: pthread_mutexattr_gettype, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_init.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_setprotocol, Previous: pthread_mutexattr_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_setprioceilingPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_setprioceiling.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_setpshared, Previous: pthread_mutexattr_setprioceiling, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_setprotocolPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_setprotocol.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_setrobust, Previous: pthread_mutexattr_setprotocol, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_setpsharedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_setpshared.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_mutexattr_settype, Previous: pthread_mutexattr_setpshared, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_setrobustPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_setrobust.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_once, Previous: pthread_mutexattr_setrobust, Up: Functions in <pthread.h> [Contents][Index]
pthread_mutexattr_settypePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutexattr_settype.html
Gnulib module: pthread-mutex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_clockrdlock, Previous: pthread_mutexattr_settype, Up: Functions in <pthread.h> [Contents][Index]
pthread_oncePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_once.html
Gnulib module: pthread-once
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_clockwrlock, Previous: pthread_once, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_clockrdlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_clockrdlock.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_destroy, Previous: pthread_rwlock_clockrdlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_clockwrlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_clockwrlock.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_init, Previous: pthread_rwlock_clockwrlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_destroy.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_rdlock, Previous: pthread_rwlock_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_init.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_timedrdlock, Previous: pthread_rwlock_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_rdlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_rdlock.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_timedwrlock, Previous: pthread_rwlock_rdlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_timedrdlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_timedrdlock.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_tryrdlock, Previous: pthread_rwlock_timedrdlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_timedwrlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_timedwrlock.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_trywrlock, Previous: pthread_rwlock_timedwrlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_tryrdlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_tryrdlock.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlock_unlock, Previous: pthread_rwlock_tryrdlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_trywrlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_trywrlock.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
EDEADLK instead of EBUSY
when the current thread already owns the lock for writing
on some platforms:
macOS 12.
Next: pthread_rwlock_wrlock, Previous: pthread_rwlock_trywrlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_unlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_unlock.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlockattr_destroy, Previous: pthread_rwlock_unlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlock_wrlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlock_wrlock.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlockattr_getpshared, Previous: pthread_rwlock_wrlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlockattr_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlockattr_destroy.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlockattr_init, Previous: pthread_rwlockattr_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlockattr_getpsharedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlockattr_getpshared.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlockattr_setpshared, Previous: pthread_rwlockattr_getpshared, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlockattr_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlockattr_init.html
Gnulib module: pthread-rwlock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_self, Previous: pthread_rwlockattr_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_rwlockattr_setpsharedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_rwlockattr_setpshared.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setcancelstate, Previous: pthread_rwlockattr_setpshared, Up: Functions in <pthread.h> [Contents][Index]
pthread_selfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_self.html
Gnulib module: pthread-thread
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setcanceltype, Previous: pthread_self, Up: Functions in <pthread.h> [Contents][Index]
pthread_setcancelstatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_setcancelstate.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setschedparam, Previous: pthread_setcancelstate, Up: Functions in <pthread.h> [Contents][Index]
pthread_setcanceltypePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_setcanceltype.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setschedprio, Previous: pthread_setcanceltype, Up: Functions in <pthread.h> [Contents][Index]
pthread_setschedparamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_setschedparam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setspecific, Previous: pthread_setschedparam, Up: Functions in <pthread.h> [Contents][Index]
pthread_setschedprioPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_setschedprio.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_spin_destroy, Previous: pthread_setschedprio, Up: Functions in <pthread.h> [Contents][Index]
pthread_setspecificPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_setspecific.html
Gnulib module: pthread-tss
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_spin_init, Previous: pthread_setspecific, Up: Functions in <pthread.h> [Contents][Index]
pthread_spin_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_spin_destroy.html
Gnulib module: pthread-spin
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_spin_lock, Previous: pthread_spin_destroy, Up: Functions in <pthread.h> [Contents][Index]
pthread_spin_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_spin_init.html
Gnulib module: pthread-spin
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_spin_trylock, Previous: pthread_spin_init, Up: Functions in <pthread.h> [Contents][Index]
pthread_spin_lockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_spin_lock.html
Gnulib module: pthread-spin
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_spin_unlock, Previous: pthread_spin_lock, Up: Functions in <pthread.h> [Contents][Index]
pthread_spin_trylockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_spin_trylock.html
Gnulib module: pthread-spin
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_testcancel, Previous: pthread_spin_trylock, Up: Functions in <pthread.h> [Contents][Index]
pthread_spin_unlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_spin_unlock.html
Gnulib module: pthread-spin
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: pthread_spin_unlock, Up: Functions in <pthread.h> [Contents][Index]
pthread_testcancelPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_testcancel.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <regex.h>, Previous: Functions in <pthread.h>, Up: Function Substitutes [Contents][Index]
<pwd.h>| • endpwent | ||
| • getpwent | ||
| • getpwnam | ||
| • getpwnam_r | ||
| • getpwuid | ||
| • getpwuid_r | ||
| • setpwent |
Next: getpwent, Up: Functions in <pwd.h> [Contents][Index]
endpwentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/endpwent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpwnam, Previous: endpwent, Up: Functions in <pwd.h> [Contents][Index]
getpwentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpwent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpwnam_r, Previous: getpwent, Up: Functions in <pwd.h> [Contents][Index]
getpwnamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpwnam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpwuid, Previous: getpwnam, Up: Functions in <pwd.h> [Contents][Index]
getpwnam_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpwnam_r.html
Gnulib module: extensions
Portability problems fixed by Gnulib:
_POSIX_PTHREAD_SEMANTICS is not defined).
Portability problems not fixed by Gnulib:
Next: getpwuid_r, Previous: getpwnam_r, Up: Functions in <pwd.h> [Contents][Index]
getpwuidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpwuid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
fork and exec if
the parent process is multi-threaded. Instead, use getpwuid_r
prior to forking.
Next: setpwent, Previous: getpwuid, Up: Functions in <pwd.h> [Contents][Index]
getpwuid_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpwuid_r.html
Gnulib module: extensions
Portability problems fixed by Gnulib:
_POSIX_PTHREAD_SEMANTICS is not defined).
Portability problems not fixed by Gnulib:
fork and exec if
the parent process is multi-threaded. Use it prior to forking.
Previous: getpwuid_r, Up: Functions in <pwd.h> [Contents][Index]
setpwentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setpwent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <sched.h>, Previous: Functions in <pwd.h>, Up: Function Substitutes [Contents][Index]
<regex.h>| • regcomp | ||
| • regerror | ||
| • regexec | ||
| • regfree |
Next: regerror, Up: Functions in <regex.h> [Contents][Index]
regcompPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/regcomp.html
Gnulib module: regex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: regexec, Previous: regcomp, Up: Functions in <regex.h> [Contents][Index]
regerrorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/regerror.html
Gnulib module: regex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: regfree, Previous: regerror, Up: Functions in <regex.h> [Contents][Index]
regexecPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/regexec.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-regexec-2.html
Gnulib module: regex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: regexec, Up: Functions in <regex.h> [Contents][Index]
regfreePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/regfree.html
Gnulib module: regex
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <search.h>, Previous: Functions in <regex.h>, Up: Function Substitutes [Contents][Index]
<sched.h>| • sched_get_priority_max | ||
| • sched_get_priority_min | ||
| • sched_getparam | ||
| • sched_getscheduler | ||
| • sched_rr_get_interval | ||
| • sched_setparam | ||
| • sched_setscheduler | ||
| • sched_yield |
Next: sched_get_priority_min, Up: Functions in <sched.h> [Contents][Index]
sched_get_priority_maxPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sched_get_priority_max.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched_getparam, Previous: sched_get_priority_max, Up: Functions in <sched.h> [Contents][Index]
sched_get_priority_minPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sched_get_priority_min.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched_getscheduler, Previous: sched_get_priority_min, Up: Functions in <sched.h> [Contents][Index]
sched_getparamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sched_getparam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
musl libc.
Next: sched_rr_get_interval, Previous: sched_getparam, Up: Functions in <sched.h> [Contents][Index]
sched_getschedulerPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sched_getscheduler.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
musl libc.
Next: sched_setparam, Previous: sched_getscheduler, Up: Functions in <sched.h> [Contents][Index]
sched_rr_get_intervalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sched_rr_get_interval.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched_setscheduler, Previous: sched_rr_get_interval, Up: Functions in <sched.h> [Contents][Index]
sched_setparamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sched_setparam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
musl libc.
Next: sched_yield, Previous: sched_setparam, Up: Functions in <sched.h> [Contents][Index]
sched_setschedulerPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sched_setscheduler.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sched-setscheduler.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
musl libc.
Previous: sched_setscheduler, Up: Functions in <sched.h> [Contents][Index]
sched_yieldPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sched_yield.html
Gnulib module: sched_yield
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <semaphore.h>, Previous: Functions in <sched.h>, Up: Function Substitutes [Contents][Index]
<search.h>| • hcreate | ||
| • hdestroy | ||
| • hsearch | ||
| • insque | ||
| • lfind | ||
| • lsearch | ||
| • remque | ||
| • tdelete | ||
| • tfind | ||
| • tsearch | ||
| • twalk |
Next: hdestroy, Up: Functions in <search.h> [Contents][Index]
hcreatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/hcreate.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: hsearch, Previous: hcreate, Up: Functions in <search.h> [Contents][Index]
hdestroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/hdestroy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: insque, Previous: hdestroy, Up: Functions in <search.h> [Contents][Index]
hsearchPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/hsearch.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lfind, Previous: hsearch, Up: Functions in <search.h> [Contents][Index]
insquePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/insque.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lsearch, Previous: insque, Up: Functions in <search.h> [Contents][Index]
lfindPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lfind.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: remque, Previous: lfind, Up: Functions in <search.h> [Contents][Index]
lsearchPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lsearch.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tdelete, Previous: lsearch, Up: Functions in <search.h> [Contents][Index]
remquePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/remque.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tfind, Previous: remque, Up: Functions in <search.h> [Contents][Index]
tdeletePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tdelete.html
Gnulib module: tsearch
Portability problems fixed by Gnulib:
tdelete returns NULL when removing the last element of a tree
on some platforms:
OpenBSD 4.0.
Portability problems not fixed by Gnulib:
Next: tsearch, Previous: tdelete, Up: Functions in <search.h> [Contents][Index]
tfindPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tfind.html
Gnulib module: tsearch
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
void ** instead of void *const * for
the second parameter on some platforms:
Cygwin.
Next: twalk, Previous: tfind, Up: Functions in <search.h> [Contents][Index]
tsearchPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tsearch.html
Gnulib module: tsearch
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: tsearch, Up: Functions in <search.h> [Contents][Index]
twalkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/twalk.html
Gnulib module: tsearch
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <setjmp.h>, Previous: Functions in <search.h>, Up: Function Substitutes [Contents][Index]
<semaphore.h>| • sem_clockwait | ||
| • sem_close | ||
| • sem_destroy | ||
| • sem_getvalue | ||
| • sem_init | ||
| • sem_open | ||
| • sem_post | ||
| • sem_timedwait | ||
| • sem_trywait | ||
| • sem_unlink | ||
| • sem_wait |
Next: sem_close, Up: Functions in <semaphore.h> [Contents][Index]
sem_clockwaitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_clockwait.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_destroy, Previous: sem_clockwait, Up: Functions in <semaphore.h> [Contents][Index]
sem_closePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_close.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_getvalue, Previous: sem_close, Up: Functions in <semaphore.h> [Contents][Index]
sem_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_destroy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_init, Previous: sem_destroy, Up: Functions in <semaphore.h> [Contents][Index]
sem_getvaluePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_getvalue.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_open, Previous: sem_getvalue, Up: Functions in <semaphore.h> [Contents][Index]
sem_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_init.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_post, Previous: sem_init, Up: Functions in <semaphore.h> [Contents][Index]
sem_openPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_open.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_timedwait, Previous: sem_open, Up: Functions in <semaphore.h> [Contents][Index]
sem_postPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_post.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_trywait, Previous: sem_post, Up: Functions in <semaphore.h> [Contents][Index]
sem_timedwaitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_timedwait.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_unlink, Previous: sem_timedwait, Up: Functions in <semaphore.h> [Contents][Index]
sem_trywaitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_trywait.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sem_wait, Previous: sem_trywait, Up: Functions in <semaphore.h> [Contents][Index]
sem_unlinkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_unlink.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: sem_unlink, Up: Functions in <semaphore.h> [Contents][Index]
sem_waitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_wait.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <signal.h>, Previous: Functions in <semaphore.h>, Up: Function Substitutes [Contents][Index]
<setjmp.h>| • longjmp | ||
| • setjmp | ||
| • siglongjmp | ||
| • sigsetjmp |
Next: setjmp, Up: Functions in <setjmp.h> [Contents][Index]
longjmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/longjmp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigaltstack),
on Hurd, FreeBSD, NetBSD, OpenBSD,
you need to clear the SS_ONSTACK flag in the stack_t
structure managed by the kernel.
_FORTIFY_SOURCE >= 2
on Hurd.
Next: siglongjmp, Previous: longjmp, Up: Functions in <setjmp.h> [Contents][Index]
setjmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setjmp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
setjmp saves the signal mask in the
jmp_buf. It does on BSD platforms, and on glibc platforms when
_BSD_SOURCE (and/or _DEFAULT_SOURCE on glibc >= 2.19) is defined;
in this case setjmp behaves like sigsetjmp(.,1), and functions
_setjmp and _longjmp are available that don’t save or restore
the signal mask. On System V platforms (excluding HP-UX), and on glibc
platforms by default, setjmp doesn’t save the signal mask.
Next: sigsetjmp, Previous: setjmp, Up: Functions in <setjmp.h> [Contents][Index]
siglongjmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/siglongjmp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: siglongjmp, Up: Functions in <setjmp.h> [Contents][Index]
sigsetjmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigsetjmp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <spawn.h>, Previous: Functions in <setjmp.h>, Up: Function Substitutes [Contents][Index]
<signal.h>| • kill | ||
| • killpg | ||
| • psiginfo | ||
| • psignal | ||
| • pthread_kill | ||
| • pthread_sigmask | ||
| • raise | ||
| • sig2str | ||
| • sigaction | ||
| • sigaddset | ||
| • sigaltstack | ||
| • sigdelset | ||
| • sigemptyset | ||
| • sigfillset | ||
| • sigismember | ||
| • signal | ||
| • sigpending | ||
| • sigprocmask | ||
| • sigqueue | ||
| • sigsuspend | ||
| • sigtimedwait | ||
| • sigwait | ||
| • sigwaitinfo | ||
| • str2sig |
Next: killpg, Up: Functions in <signal.h> [Contents][Index]
killPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/kill.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-kill-3.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: psiginfo, Previous: kill, Up: Functions in <signal.h> [Contents][Index]
killpgPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/killpg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: psignal, Previous: killpg, Up: Functions in <signal.h> [Contents][Index]
psiginfoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/psiginfo.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_kill, Previous: psiginfo, Up: Functions in <signal.h> [Contents][Index]
psignalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/psignal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<siginfo.h>, not <signal.h>,
on some platforms:
Solaris 11.3.
unsigned int, not int,
on some platforms:
macOS 13, FreeBSD 10.4, NetBSD 5.1, OpenBSD 7.5.
Next: pthread_sigmask, Previous: psignal, Up: Functions in <signal.h> [Contents][Index]
pthread_killPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_kill.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: raise, Previous: pthread_kill, Up: Functions in <signal.h> [Contents][Index]
pthread_sigmaskPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_sigmask.html
Gnulib module: pthread_sigmask
Portability problems fixed by Gnulib:
<pthread.h> instead of <signal.h>
on some platforms:
FreeBSD 6.4, OpenBSD 3.8.
-lpthread on some platforms:
FreeBSD 14.0, MidnightBSD 1.1, HP-UX 11.31, Solaris 9.
Portability problems not fixed by Gnulib:
Next: sig2str, Previous: pthread_sigmask, Up: Functions in <signal.h> [Contents][Index]
raisePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/raise.html
Gnulib module: raise
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigaction, Previous: raise, Up: Functions in <signal.h> [Contents][Index]
sig2strPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sig2str.html
Gnulib module: sig2str
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
"EXIT" on some platforms:
FreeBSD 15.0.
Next: sigaddset, Previous: sig2str, Up: Functions in <signal.h> [Contents][Index]
sigactionPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaction.html
Gnulib module: sigaction
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
SIG_IGN for the SIGCHLD signal is equivalent
to a signal handler
void handle_child (int sigchld)
{
while (waitpid (-1, NULL, WNOHANG) > 0)
;
}
except that SIG_IGN for SIGCHLD has the effect that the children
execution times are not accounted in the times function.
On some platforms (BSD? SystemV? Linux?), you need to use the sigaction
flag SA_NOCLDWAIT in order to obtain this behavior.
Next: sigaltstack, Previous: sigaction, Up: Functions in <signal.h> [Contents][Index]
sigaddsetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaddset.html
Gnulib module: sigprocmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigdelset, Previous: sigaddset, Up: Functions in <signal.h> [Contents][Index]
sigaltstackPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaltstack.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigaltstack doesn’t work on HP-UX 11/IA-64 and
OpenBSD 3.6/Sparc64.
Next: sigemptyset, Previous: sigaltstack, Up: Functions in <signal.h> [Contents][Index]
sigdelsetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigdelset.html
Gnulib module: sigprocmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigfillset, Previous: sigdelset, Up: Functions in <signal.h> [Contents][Index]
sigemptysetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigemptyset.html
Gnulib module: sigprocmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigismember, Previous: sigemptyset, Up: Functions in <signal.h> [Contents][Index]
sigfillsetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigfillset.html
Gnulib module: sigprocmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: signal, Previous: sigfillset, Up: Functions in <signal.h> [Contents][Index]
sigismemberPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigismember.html
Gnulib module: sigprocmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigpending, Previous: sigismember, Up: Functions in <signal.h> [Contents][Index]
signalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/signal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigaction instead of
signal.
Next: sigprocmask, Previous: signal, Up: Functions in <signal.h> [Contents][Index]
sigpendingPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigpending.html
Gnulib module: sigprocmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigqueue, Previous: sigpending, Up: Functions in <signal.h> [Contents][Index]
sigprocmaskPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigprocmask.html
Gnulib module: sigprocmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: Although sigprocmask officially has undefined behaviour in
multi-threaded programs, in practice it is essentially equivalent to
pthread_sigmask, with only a difference regarding the error
return convention. It’s simpler to use sigprocmask, since it does
not require linking with -lpthread on some platforms:
glibc, NetBSD, OpenBSD, AIX.
Note: While on POSIX platforms, sigprocmask is multithread-safe
and async-signal safe (cf. POSIX section “Signal Actions”
https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_04_03),
the gnulib replacement on native Windows is only multithread-safe,
not async-signal safe.
Next: sigsuspend, Previous: sigprocmask, Up: Functions in <signal.h> [Contents][Index]
sigqueuePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigqueue.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigtimedwait, Previous: sigqueue, Up: Functions in <signal.h> [Contents][Index]
sigsuspendPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigsuspend.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigwait, Previous: sigsuspend, Up: Functions in <signal.h> [Contents][Index]
sigtimedwaitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigtimedwait.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigwaitinfo
does; other platforms may not do the same.
Next: sigwaitinfo, Previous: sigtimedwait, Up: Functions in <signal.h> [Contents][Index]
sigwaitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigwait.html
Gnulib module: extensions
Portability problems fixed by Gnulib:
_POSIX_PTHREAD_SEMANTICS is not defined).
Portability problems not fixed by Gnulib:
Next: str2sig, Previous: sigwait, Up: Functions in <signal.h> [Contents][Index]
sigwaitinfoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigwaitinfo.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: sigwaitinfo, Up: Functions in <signal.h> [Contents][Index]
str2sigPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/str2sig.html
Gnulib module: sig2str
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <stdarg.h>, Previous: Functions in <signal.h>, Up: Function Substitutes [Contents][Index]
<spawn.h>Next: posix_spawn_file_actions_addchdir, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn.html
Gnulib module: posix_spawn
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
The Gnulib modules posix_spawn_file_actions_addchdir and
posix_spawn_file_actions_addfchdir provide additional actions,
that consist in changing the current directory of the child process
before starting the specified program.
Next: posix_spawn_file_actions_addclose, Previous: posix_spawn, Up: Functions in <spawn.h> [Contents][Index]
posix_spawn_file_actions_addchdirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn_file_actions_addchdir.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawn_file_actions_adddup2, Previous: posix_spawn_file_actions_addchdir, Up: Functions in <spawn.h> [Contents][Index]
posix_spawn_file_actions_addclosePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn_file_actions_addclose.html
Gnulib module: posix_spawn_file_actions_addclose
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawn_file_actions_addfchdir, Previous: posix_spawn_file_actions_addclose, Up: Functions in <spawn.h> [Contents][Index]
posix_spawn_file_actions_adddup2POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn_file_actions_adddup2.html
Gnulib module: posix_spawn_file_actions_adddup2
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawn_file_actions_addopen, Previous: posix_spawn_file_actions_adddup2, Up: Functions in <spawn.h> [Contents][Index]
posix_spawn_file_actions_addfchdirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn_file_actions_addfchdir.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawn_file_actions_destroy, Previous: posix_spawn_file_actions_addfchdir, Up: Functions in <spawn.h> [Contents][Index]
posix_spawn_file_actions_addopenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn_file_actions_addopen.html
Gnulib module: posix_spawn_file_actions_addopen
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawn_file_actions_init, Previous: posix_spawn_file_actions_addopen, Up: Functions in <spawn.h> [Contents][Index]
posix_spawn_file_actions_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn_file_actions_destroy.html
Gnulib module: posix_spawn_file_actions_destroy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_destroy, Previous: posix_spawn_file_actions_destroy, Up: Functions in <spawn.h> [Contents][Index]
posix_spawn_file_actions_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn_file_actions_init.html
Gnulib module: posix_spawn_file_actions_init
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_getflags, Previous: posix_spawn_file_actions_init, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_destroyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_destroy.html
Gnulib module: posix_spawnattr_destroy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_getpgroup, Previous: posix_spawnattr_destroy, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_getflagsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_getflags.html
Gnulib module: posix_spawnattr_getflags
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_getschedparam, Previous: posix_spawnattr_getflags, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_getpgroupPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_getpgroup.html
Gnulib module: posix_spawnattr_getpgroup
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_getschedpolicy, Previous: posix_spawnattr_getpgroup, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_getschedparamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_getschedparam.html
Gnulib module: posix_spawnattr_getschedparam
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
musl libc.
Next: posix_spawnattr_getsigdefault, Previous: posix_spawnattr_getschedparam, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_getschedpolicyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_getschedpolicy.html
Gnulib module: posix_spawnattr_getschedpolicy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
musl libc.
Next: posix_spawnattr_getsigmask, Previous: posix_spawnattr_getschedpolicy, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_getsigdefaultPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_getsigdefault.html
Gnulib module: posix_spawnattr_getsigdefault
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_init, Previous: posix_spawnattr_getsigdefault, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_getsigmaskPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_getsigmask.html
Gnulib module: posix_spawnattr_getsigmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_setflags, Previous: posix_spawnattr_getsigmask, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_initPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_init.html
Gnulib module: posix_spawnattr_init
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_setpgroup, Previous: posix_spawnattr_init, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_setflagsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_setflags.html
Gnulib module: posix_spawnattr_setflags
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_setschedparam, Previous: posix_spawnattr_setflags, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_setpgroupPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_setpgroup.html
Gnulib module: posix_spawnattr_setpgroup
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_setschedpolicy, Previous: posix_spawnattr_setpgroup, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_setschedparamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_setschedparam.html
Gnulib module: posix_spawnattr_setschedparam
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
musl libc.
Next: posix_spawnattr_setsigdefault, Previous: posix_spawnattr_setschedparam, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_setschedpolicyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_setschedpolicy.html
Gnulib module: posix_spawnattr_setschedpolicy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
musl libc.
Next: posix_spawnattr_setsigmask, Previous: posix_spawnattr_setschedpolicy, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_setsigdefaultPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_setsigdefault.html
Gnulib module: posix_spawnattr_setsigdefault
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnp, Previous: posix_spawnattr_setsigdefault, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnattr_setsigmaskPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnattr_setsigmask.html
Gnulib module: posix_spawnattr_setsigmask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: posix_spawnattr_setsigmask, Up: Functions in <spawn.h> [Contents][Index]
posix_spawnpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawnp.html
Gnulib module: posix_spawnp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
The Gnulib modules posix_spawn_file_actions_addchdir and
posix_spawn_file_actions_addfchdir provide additional actions,
that consist in changing the current directory of the child process
before starting the specified program.
Next: Functions in <stdatomic.h>, Previous: Functions in <spawn.h>, Up: Function Substitutes [Contents][Index]
<stdarg.h>| • va_arg | ||
| • va_copy | ||
| • va_end | ||
| • va_start |
Next: va_copy, Up: Functions in <stdarg.h> [Contents][Index]
va_argPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/va_arg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
va_arg must be a type that is invariant under
the “default argument promotions” (ISO C 99 6.5.2.2 paragraph 6). This
means that the following are not valid here:
Use ‘double’ instead.
Use ‘int’ instead.
Use ‘int’ or ‘unsigned int’ instead.
This is a portability problem because you don’t know the width of some
abstract types like uid_t, gid_t, mode_t. So, instead of
mode = va_arg (ap, mode_t);
you have to write
mode = (sizeof (mode_t) < sizeof (int)
? va_arg (ap, int)
: va_arg (ap, mode_t));
Next: va_end, Previous: va_arg, Up: Functions in <stdarg.h> [Contents][Index]
va_copyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/va_copy.html
Gnulib module: stdarg-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: va_start, Previous: va_copy, Up: Functions in <stdarg.h> [Contents][Index]
va_endPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/va_end.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: va_end, Up: Functions in <stdarg.h> [Contents][Index]
va_startPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/va_start.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <stdbit.h>, Previous: Functions in <stdarg.h>, Up: Function Substitutes [Contents][Index]
<stdatomic.h>atomic_compare_exchange_strongISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_compare_exchange_strong.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_compare_exchange_weak, Previous: atomic_compare_exchange_strong, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_compare_exchange_strong_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_compare_exchange_strong_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_compare_exchange_weak_explicit, Previous: atomic_compare_exchange_strong_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_compare_exchange_weakISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_compare_exchange_weak.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_exchange, Previous: atomic_compare_exchange_weak, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_compare_exchange_weak_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_compare_exchange_weak_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_exchange_explicit, Previous: atomic_compare_exchange_weak_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_exchangeISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_exchange.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_add, Previous: atomic_exchange, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_exchange_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_exchange_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_add_explicit, Previous: atomic_exchange_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_addISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_add.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_and, Previous: atomic_fetch_add, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_add_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_add_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_and_explicit, Previous: atomic_fetch_add_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_andISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_and.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_or, Previous: atomic_fetch_and, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_and_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_and_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_or_explicit, Previous: atomic_fetch_and_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_orISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_or.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_sub, Previous: atomic_fetch_or, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_or_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_or_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_sub_explicit, Previous: atomic_fetch_or_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_subISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_sub.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_xor, Previous: atomic_fetch_sub, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_sub_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_sub_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_fetch_xor_explicit, Previous: atomic_fetch_sub_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_xorISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_xor.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_flag_clear, Previous: atomic_fetch_xor, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_fetch_xor_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_fetch_xor_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_flag_clear_explicit, Previous: atomic_fetch_xor_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_flag_clearISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.8.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_flag_clear.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_flag_test_and_set, Previous: atomic_flag_clear, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_flag_clear_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.8.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_flag_clear_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_flag_test_and_set_explicit, Previous: atomic_flag_clear_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_flag_test_and_setISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.8.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_flag_test_and_set.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_init, Previous: atomic_flag_test_and_set, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_flag_test_and_set_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.8.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_flag_test_and_set_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_is_lock_free, Previous: atomic_flag_test_and_set_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_initISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.2.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_init.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_load, Previous: atomic_init, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_is_lock_freeISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.5.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_is_lock_free.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_load_explicit, Previous: atomic_is_lock_free, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_loadISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_load.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_signal_fence, Previous: atomic_load, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_load_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_load_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_store, Previous: atomic_load_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_signal_fenceISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.4.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_signal_fence.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_store_explicit, Previous: atomic_signal_fence, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_storeISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_store.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atomic_thread_fence, Previous: atomic_store, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_store_explicitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.7.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_store_explicit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: kill_dependency, Previous: atomic_store_explicit, Up: Functions in <stdatomic.h> [Contents][Index]
atomic_thread_fenceISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.4.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atomic_thread_fence.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: atomic_thread_fence, Up: Functions in <stdatomic.h> [Contents][Index]
kill_dependencyISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.17.3.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/kill_dependency.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <stdio.h>, Previous: Functions in <stdatomic.h>, Up: Function Substitutes [Contents][Index]
<stdbit.h>Next: stdc_bit_floor, Up: Functions in <stdbit.h> [Contents][Index]
stdc_bit_ceilDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.16.
Gnulib module: stdc_bit_ceil
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_bit_width, Previous: stdc_bit_ceil, Up: Functions in <stdbit.h> [Contents][Index]
stdc_bit_floorDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.15.
Gnulib module: stdc_bit_floor
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_count_ones, Previous: stdc_bit_floor, Up: Functions in <stdbit.h> [Contents][Index]
stdc_bit_widthDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.14.
Gnulib module: stdc_bit_width
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_count_zeros, Previous: stdc_bit_width, Up: Functions in <stdbit.h> [Contents][Index]
stdc_count_onesDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.12.
Gnulib module: stdc_count_ones
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_first_leading_one, Previous: stdc_count_ones, Up: Functions in <stdbit.h> [Contents][Index]
stdc_count_zerosDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.11.
Gnulib module: stdc_count_zeros
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_first_leading_zero, Previous: stdc_count_zeros, Up: Functions in <stdbit.h> [Contents][Index]
stdc_first_leading_oneDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.8.
Gnulib module: stdc_first_leading_one
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_first_trailing_one, Previous: stdc_first_leading_one, Up: Functions in <stdbit.h> [Contents][Index]
stdc_first_leading_zeroDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.7.
Gnulib module: stdc_first_leading_zero
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_first_trailing_zero, Previous: stdc_first_leading_zero, Up: Functions in <stdbit.h> [Contents][Index]
stdc_first_trailing_oneDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.10.
Gnulib module: stdc_first_trailing_one
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_has_single_bit, Previous: stdc_first_trailing_one, Up: Functions in <stdbit.h> [Contents][Index]
stdc_first_trailing_zeroDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.9.
Gnulib module: stdc_first_trailing_zero
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_leading_ones, Previous: stdc_first_trailing_zero, Up: Functions in <stdbit.h> [Contents][Index]
stdc_has_single_bitDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.13.
Gnulib module: stdc_has_single_bit
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_leading_zeros, Previous: stdc_has_single_bit, Up: Functions in <stdbit.h> [Contents][Index]
stdc_leading_onesDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.4.
Gnulib module: stdc_leading_ones
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_trailing_ones, Previous: stdc_leading_ones, Up: Functions in <stdbit.h> [Contents][Index]
stdc_leading_zerosDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.3.
Gnulib module: stdc_leading_zeros
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stdc_trailing_zeros, Previous: stdc_leading_zeros, Up: Functions in <stdbit.h> [Contents][Index]
stdc_trailing_onesDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.6.
Gnulib module: stdc_trailing_ones
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: stdc_trailing_ones, Up: Functions in <stdbit.h> [Contents][Index]
stdc_trailing_zerosDocumentation:
ISO C23 (latest free draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
section 7.18.5.
Gnulib module: stdc_trailing_zeros
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <stdlib.h>, Previous: Functions in <stdbit.h>, Up: Function Substitutes [Contents][Index]
<stdio.h>| • asprintf | ||
| • clearerr | ||
| • ctermid | ||
| • dprintf | ||
| • fclose | ||
| • fdopen | ||
| • feof | ||
| • ferror | ||
| • fflush | ||
| • fgetc | ||
| • fgetpos | ||
| • fgets | ||
| • fileno | ||
| • flockfile | ||
| • fmemopen | ||
| • fopen | ||
| • fprintf | ||
| • fputc | ||
| • fputs | ||
| • fread | ||
| • freopen | ||
| • fscanf | ||
| • fseek | ||
| • fseeko | ||
| • fsetpos | ||
| • ftell | ||
| • ftello | ||
| • ftrylockfile | ||
| • funlockfile | ||
| • fwrite | ||
| • getc | ||
| • getc_unlocked | ||
| • getchar | ||
| • getchar_unlocked | ||
| • getdelim | ||
| • getline | ||
| • open_memstream | ||
| • pclose | ||
| • perror | ||
| • popen | ||
| • printf | ||
| • putc | ||
| • putc_unlocked | ||
| • putchar | ||
| • putchar_unlocked | ||
| • puts | ||
| • remove | ||
| • rename | ||
| • renameat | ||
| • rewind | ||
| • scanf | ||
| • setbuf | ||
| • setvbuf | ||
| • snprintf | ||
| • sprintf | ||
| • sscanf | ||
| • stderr | ||
| • stdin | ||
| • stdout | ||
| • tmpfile | ||
| • tmpnam | ||
| • ungetc | ||
| • vasprintf | ||
| • vdprintf | ||
| • vfprintf | ||
| • vfscanf | ||
| • vprintf | ||
| • vscanf | ||
| • vsnprintf | ||
| • vsprintf | ||
| • vsscanf |
Next: clearerr, Up: Functions in <stdio.h> [Contents][Index]
asprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asprintf.html
Documentation:
Gnulib module: vasprintf or vasprintf-posix or vasprintf-gnu
Portability problems fixed by either Gnulib module vasprintf or vasprintf-posix or vasprintf-gnu:
Portability problems fixed by either Gnulib module vasprintf-posix or vasprintf-gnu:
hh, ll,
j, t, z) on some platforms:
Cygwin 1.5.24.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4.
"%2$s", on some platforms:
NetBSD 3.0.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module vasprintf-gnu:
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
Next: ctermid, Previous: asprintf, Up: Functions in <stdio.h> [Contents][Index]
clearerrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clearerr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dprintf, Previous: clearerr, Up: Functions in <stdio.h> [Contents][Index]
ctermidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctermid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fclose, Previous: ctermid, Up: Functions in <stdio.h> [Contents][Index]
dprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dprintf.html
Gnulib module: dprintf or dprintf-posix or dprintf-gnu
Portability problems fixed by either Gnulib module dprintf or dprintf-posix or dprintf-gnu:
Portability problems fixed by either Gnulib module dprintf-posix or dprintf-gnu:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
AIX 7.3, Solaris 11.4.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module dprintf-gnu:
Portability problems fixed by either Gnulib module dprintf-posix or dprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, Android.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: fdopen, Previous: dprintf, Up: Functions in <stdio.h> [Contents][Index]
fclosePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fclose.html
Gnulib module: fclose
Portability problems fixed by Gnulib:
socket and accept
followed by fdopen do not return streams that can be closed by
fclose.
Portability problems not fixed by Gnulib:
errno
upon failure.
Next: feof, Previous: fclose, Up: Functions in <stdio.h> [Contents][Index]
fdopenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fdopen.html
Gnulib module: fdopen
Portability problems fixed by Gnulib:
errno
upon failure.
Portability problems not fixed by Gnulib:
Next: ferror, Previous: fdopen, Up: Functions in <stdio.h> [Contents][Index]
feofPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/feof.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fflush, Previous: feof, Up: Functions in <stdio.h> [Contents][Index]
ferrorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ferror.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fgetc, Previous: ferror, Up: Functions in <stdio.h> [Contents][Index]
fflushPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fflush.html
Gnulib module: fflush
Portability problems fixed by Gnulib:
fflush followed by fseek or fseeko, applied to an input
stream, should have the effect of positioning the underlying file descriptor.
It doesn’t do this on some platforms:
glibc 2.34, FreeBSD 14.0, and others.
fflush on an input stream changes the position of the stream to the
end of the previous buffer, on some platforms: mingw, MSVC 14.
fflush on an input stream right after ungetc does not discard
the ungetc buffer, on some platforms:
macOS 14, FreeBSD 6.0, NetBSD 10.0, OpenBSD 7.5, Cygwin 1.5.25-10.
fflush fails with EBADF if the stream is not open for writing:
NetBSD 10.0, OpenBSD 7.5.
Portability problems not fixed by Gnulib:
fflush, ftell, ftello, fgetpos behave incorrectly
on input streams that are opened in O_TEXT mode and whose contents
contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.
errno
upon failure.
MSVC_INVALID_PARAMETER_HANDLING is
HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_HANDLING,
on some platforms:
MSVC 14.
fflush on an input stream right after ungetc does not discard
the ungetc buffer, on some platforms:
AIX 5.1, HP-UX 11, Solaris 11 2010-11, mingw, MSVC 14.
Next: fgetpos, Previous: fflush, Up: Functions in <stdio.h> [Contents][Index]
fgetcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fgetc.html
Gnulib module: stdio-h, nonblocking
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
feof would return nonzero. However, on some systems this
function attempts to read from the underlying file descriptor even if
the stream’s end-of-file indicator is set. These systems include
glibc and default Solaris.
errno
upon failure.
MSVC_INVALID_PARAMETER_HANDLING is
HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_HANDLING,
on some platforms:
MSVC 14.
Next: fgets, Previous: fgetc, Up: Functions in <stdio.h> [Contents][Index]
fgetposPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fgetpos.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
fflush, ftell, ftello, fgetpos behave incorrectly
on input streams that are opened in O_TEXT mode and whose contents
contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.
Next: fileno, Previous: fgetpos, Up: Functions in <stdio.h> [Contents][Index]
fgetsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fgets.html
Gnulib module: stdio-h, nonblocking
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
feof would return nonzero. However, on some systems this
function attempts to read from the underlying file descriptor even if
the stream’s end-of-file indicator is set. These systems include
glibc and default Solaris.
errno
upon failure.
Next: flockfile, Previous: fgets, Up: Functions in <stdio.h> [Contents][Index]
filenoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fileno.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fmemopen, Previous: fileno, Up: Functions in <stdio.h> [Contents][Index]
flockfilePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/flockfile.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fopen, Previous: flockfile, Up: Functions in <stdio.h> [Contents][Index]
fmemopenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fmemopen.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
An alternative to the fmemopen function is the Gnulib module
sf-istream.
Next: fprintf, Previous: fmemopen, Up: Functions in <stdio.h> [Contents][Index]
fopenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fopen.html
Gnulib module: fopen or fopen-gnu
Portability problems fixed by either Gnulib module fopen or fopen-gnu:
off_t is a 32-bit type, fopen may not work
correctly with files 2 GiB and larger. See Large File Support.
Portability problems fixed by Gnulib module fopen-gnu:
O_EXCL), introduced in ISO C11,
on some platforms:
FreeBSD 8.2, NetBSD 6.1, OpenBSD 5.6, Minix 3.2, AIX 6.1, HP-UX 11.31, Solaris 11.3, Cygwin 1.7.16 (2012), mingw with MSVCRT, MSVC 14.
O_CLOEXEC),
introduced into a future POSIX revision through
https://www.austingroupbugs.net/view.php?id=411, on some platforms:
glibc 2.6, macOS 14, FreeBSD 9.0, NetBSD 5.1, OpenBSD 5.6, Minix 3.2, AIX 7.2, HP-UX 11.31, Solaris 11.3, Cygwin 1.7.16 (2012), mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
upon failure.
'\n' to CR/LF by default. Use the
"b" flag if you need reliable binary I/O.
fstat after open and
fdopen, rather than fopen and fileno.
Next: fputc, Previous: fopen, Up: Functions in <stdio.h> [Contents][Index]
fprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fprintf.html
Gnulib module: fprintf-posix or fprintf-gnu or stdio-h, nonblocking, sigpipe
Portability problems fixed by either Gnulib module stdio-h or fprintf-posix or fprintf-gnu:
__USE_MINGW_ANSI_STDIO in combination with msvcrt,
when the output goes to a Windows console.
Portability problems fixed by either Gnulib module fprintf-posix or fprintf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module fprintf-gnu:
Portability problems fixed by either Gnulib module fprintf-posix or fprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
Portability problems fixed by Gnulib module stdio-h or fprintf-posix or fprintf-gnu, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h or fprintf-posix or fprintf-gnu, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
EOF but
does not set the error flag for ferror on some platforms:
glibc 2.13, cygwin 1.7.9.
Next: fputs, Previous: fprintf, Up: Functions in <stdio.h> [Contents][Index]
fputcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fputc.html
Gnulib module: stdio-h, nonblocking, sigpipe
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
upon failure.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
MSVC_INVALID_PARAMETER_HANDLING is
HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_HANDLING,
on some platforms:
MSVC 14.
Next: fread, Previous: fputc, Up: Functions in <stdio.h> [Contents][Index]
fputsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fputs.html
Gnulib module: stdio-h, nonblocking, sigpipe
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
upon failure.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: freopen, Previous: fputs, Up: Functions in <stdio.h> [Contents][Index]
freadPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fread.html
Gnulib module: stdio-h, nonblocking
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
feof would return nonzero. However, on some systems this
function attempts to read from the underlying file descriptor even if
the stream’s end-of-file indicator is set. These systems include
glibc and default Solaris.
errno
upon failure.
MSVC_INVALID_PARAMETER_HANDLING is
HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_HANDLING,
on some platforms:
MSVC 14.
Next: fscanf, Previous: fread, Up: Functions in <stdio.h> [Contents][Index]
freopenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/freopen.html
Gnulib module: freopen
Portability problems fixed by Gnulib:
stream does not already have an open
file descriptor, freopen returns the stream without opening
the file: glibc 2.24.
off_t is a 32-bit type, freopen may not work
correctly with files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
errno
upon failure.
NULL file name argument on some
platforms:
OpenBSD 4.9, AIX 7.1, HP-UX 11.23, Solaris 10, mingw, MSVC 14.
fileno(f) will be the same
before and after a call to freopen(name,mode,f).
However, the
module freopen-safer can at least protect stdin, stdout,
and stderr.
Next: fseek, Previous: freopen, Up: Functions in <stdio.h> [Contents][Index]
fscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fscanf.html
Gnulib module: stdio-h, nonblocking
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
feof would return nonzero. However, on some systems this
function attempts to read from the underlying file descriptor even if
the stream’s end-of-file indicator is set. These systems include
glibc and default Solaris.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
errno
upon failure.
hh, ll, j,
t, z size specifiers.
Next: fseeko, Previous: fscanf, Up: Functions in <stdio.h> [Contents][Index]
fseekPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fseek.html
Gnulib module: fseek
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno
upon failure.
long is a 32-bit type, fseek does not work
correctly with files 2 GiB and larger, even when the AC_SYS_LARGEFILE
macro is used. The fix is to use fseeko instead.
Next: fsetpos, Previous: fseek, Up: Functions in <stdio.h> [Contents][Index]
fseekoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fseeko.html
Gnulib module: fseeko
Portability problems fixed by Gnulib:
fseeko in <stdio.h> is not enabled by default
on some platforms:
glibc 2.3.6.
off_t is a 32-bit type, fseeko does not work
correctly with files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: ftell, Previous: fseeko, Up: Functions in <stdio.h> [Contents][Index]
fsetposPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fsetpos.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: ftello, Previous: fsetpos, Up: Functions in <stdio.h> [Contents][Index]
ftellPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ftell.html
Gnulib module: ftell
Portability problems fixed by Gnulib:
putc that followed a
getc call that reached EOF on some platforms:
Solaris 11 2010-11.
ungetc, throws away the ungetc
buffer, changes the stream’s file position, and returns the wrong position on
some platforms:
macOS 10.15, 11, 12.
Portability problems not fixed by Gnulib:
fseek on some
platforms:
HP-UX 11.
fflush, ftell, ftello, fgetpos behave incorrectly
on input streams that are opened in O_TEXT mode and whose contents
contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.
long is a 32-bit type, ftell does not work
correctly with files 2 GiB and larger, even when the AC_SYS_LARGEFILE
macro is used. The fix is to use ftello instead.
Next: ftrylockfile, Previous: ftell, Up: Functions in <stdio.h> [Contents][Index]
ftelloPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ftello.html
Gnulib module: ftello
Portability problems fixed by Gnulib:
ftello in <stdio.h> is not enabled by default
on some platforms:
glibc 2.3.6.
putc that followed a
getc call that reached EOF on some platforms:
Solaris 11 2010-11.
ungetc, throws away the ungetc
buffer, changes the stream’s file position, and returns the wrong position on
some platforms:
macOS 10.15, 11, 12.
off_t is a 32-bit type, ftello does not work
correctly with files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
fseek on some
platforms:
HP-UX 11.
fflush, ftell, ftello, fgetpos behave incorrectly
on input streams that are opened in O_TEXT mode and whose contents
contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.
Next: funlockfile, Previous: ftello, Up: Functions in <stdio.h> [Contents][Index]
ftrylockfilePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ftrylockfile.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fwrite, Previous: ftrylockfile, Up: Functions in <stdio.h> [Contents][Index]
funlockfilePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/funlockfile.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getc, Previous: funlockfile, Up: Functions in <stdio.h> [Contents][Index]
fwritePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fwrite.html
Gnulib module: stdio-h, nonblocking, sigpipe
Portability problems fixed by Gnulib module stdio-h:
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
upon failure.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
MSVC_INVALID_PARAMETER_HANDLING is
HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_HANDLING,
on some platforms:
MSVC 14.
Next: getc_unlocked, Previous: fwrite, Up: Functions in <stdio.h> [Contents][Index]
getcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getc.html
Gnulib module: stdio-h, nonblocking
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
feof would return nonzero. However, on some systems this
function attempts to read from the underlying file descriptor even if
the stream’s end-of-file indicator is set. These systems include
glibc and default Solaris.
errno
upon failure.
Next: getchar, Previous: getc, Up: Functions in <stdio.h> [Contents][Index]
getc_unlockedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getc_unlocked.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getchar_unlocked, Previous: getc_unlocked, Up: Functions in <stdio.h> [Contents][Index]
getcharPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getchar.html
Gnulib module: stdio-h, nonblocking
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
feof would return nonzero. However, on some systems this
function attempts to read from the underlying file descriptor even if
the stream’s end-of-file indicator is set. These systems include
glibc and default Solaris.
errno
upon failure.
Next: getdelim, Previous: getchar, Up: Functions in <stdio.h> [Contents][Index]
getchar_unlockedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getchar_unlocked.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getline, Previous: getchar_unlocked, Up: Functions in <stdio.h> [Contents][Index]
getdelimPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getdelim.html
Gnulib module: getdelim
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: open_memstream, Previous: getdelim, Up: Functions in <stdio.h> [Contents][Index]
getlinePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getline.html
Gnulib module: getline
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pclose, Previous: getline, Up: Functions in <stdio.h> [Contents][Index]
open_memstreamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/open_memstream.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
An alternative to the open_memstream function is the Gnulib module
string-buffer.
Next: perror, Previous: open_memstream, Up: Functions in <stdio.h> [Contents][Index]
pclosePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pclose.html
Gnulib module: pclose
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: popen, Previous: pclose, Up: Functions in <stdio.h> [Contents][Index]
perrorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/perror.html
Gnulib module: perror
Portability problems fixed by Gnulib:
errno of 0 like failure, although POSIX
requires that the message declare it as a success, on some platforms:
FreeBSD 8.2, OpenBSD 4.7, macOS 14.
strerror buffer on some platforms:
Cygwin 1.7.9, Android 11.
Portability problems not fixed by Gnulib:
ferror) on write failure, but not all platforms do this:
glibc 2.13, cygwin 1.7.9.
Next: printf, Previous: perror, Up: Functions in <stdio.h> [Contents][Index]
popenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/popen.html
Gnulib module: popen
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
COMSPEC is not set.
popen calls into subsequent popen children:
Cygwin 1.5.x.
Next: putc, Previous: popen, Up: Functions in <stdio.h> [Contents][Index]
printfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/printf.html
Gnulib module: printf-posix or printf-gnu or stdio-h, nonblocking, sigpipe
Portability problems fixed by either Gnulib module stdio-h or fprintf-posix or fprintf-gnu:
__USE_MINGW_ANSI_STDIO in combination with msvcrt,
when the output goes to a Windows console.
Portability problems fixed by either Gnulib module printf-posix or printf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module printf-gnu:
Portability problems fixed by either Gnulib module printf-posix or printf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
Portability problems fixed by Gnulib module stdio-h or printf-posix or printf-gnu, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h or printf-posix or printf-gnu, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
EOF but
does not set the error flag for ferror on some platforms:
glibc 2.13, cygwin 1.7.9.
Next: putc_unlocked, Previous: printf, Up: Functions in <stdio.h> [Contents][Index]
putcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/putc.html
Gnulib module: stdio-h, nonblocking, sigpipe
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
upon failure.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: putchar, Previous: putc, Up: Functions in <stdio.h> [Contents][Index]
putc_unlockedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/putc_unlocked.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: putchar_unlocked, Previous: putc_unlocked, Up: Functions in <stdio.h> [Contents][Index]
putcharPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/putchar.html
Gnulib module: stdio-h, nonblocking, sigpipe
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
upon failure.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: puts, Previous: putchar, Up: Functions in <stdio.h> [Contents][Index]
putchar_unlockedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/putchar_unlocked.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: remove, Previous: putchar_unlocked, Up: Functions in <stdio.h> [Contents][Index]
putsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/puts.html
Gnulib module: stdio-h, nonblocking, sigpipe
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
upon failure.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: rename, Previous: puts, Up: Functions in <stdio.h> [Contents][Index]
removePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/remove.html
Gnulib module: remove
Portability problems fixed by Gnulib:
remove("dir/./") on some platforms:
Cygwin 1.5.x.
Portability problems not fixed by Gnulib:
Next: renameat, Previous: remove, Up: Functions in <stdio.h> [Contents][Index]
renamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rename.html
Gnulib module: rename
Portability problems fixed by Gnulib:
rename("dir","new/"):
NetBSD 1.6.
rename("file","new/"):
AIX 7.1, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14.
rename("link-to-file/","f"):
FreeBSD 7.2.
rename("link/","new") corrupts link:
Solaris 9.
Portability problems not fixed by Gnulib:
rename("symlink-to-dir/","dir2") rename
dir and leave symlink-to-dir dangling; likewise, it
requires that rename("dir","dangling/") rename dir so
that dangling is no longer a dangling symlink. This behavior
is counter-intuitive, so on some systems, rename fails with
ENOTDIR if either argument is a symlink with a trailing slash:
glibc, OpenBSD, Cygwin 1.7.
rename do nothing and return 0 if the
source and destination are hard links to the same file. This behavior
is counterintuitive, and on some systems renameat is a no-op in
this way only if the source and destination identify the same
directory entry. On these systems, for example, although renaming
./f to f is a no-op, renaming f to g
deletes f when f and g are hard links to the same
file:
NetBSD 7.0.
stat function
for 30 seconds after the rename, on NFS file systems, on some platforms:
Linux 2.6.18.
Next: rewind, Previous: rename, Up: Functions in <stdio.h> [Contents][Index]
renameatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/renameat.html
Gnulib module: renameat
Portability problems fixed by Gnulib:
<unistd.h>, not in <stdio.h>,
on some platforms:
NetBSD 7.0, Solaris 11.4.
<sys/stat.h>, not in <stdio.h>,
on some platforms:
Android 4.3.
renameat(fd,"file",fd,"new/"):
Solaris 11.4.
renameat(fd,"link/",fd,"new") corrupts link:
Solaris 9.
renameat (AT_FDCWD, "file", AT_FDCWD, "new/") succeeds instead of
failing and setting errno to ENOTDIR, on some platforms:
GNU/Hurd with glibc 2.41.
renameat (ATFDCWD, "dir", AT_FDCWD, "new/") fails with
errno set to ENOENT, on some platforms:
GNU/Hurd with glibc 2.42.
renameat (ATFDCWD, "dir/", AT_FDCWD, "new") fails with
errno set to ENOTDIR, on some platforms:
GNU/Hurd with glibc 2.42.
Portability problems not fixed by Gnulib:
renameat(fd,"symlink-to-dir/",fd,"dir2") rename
dir and leave symlink-to-dir dangling; likewise, it
requires that renameat(fd,"dir",fd,"dangling/") rename dir so
that dangling is no longer a dangling symlink. This behavior
is counter-intuitive, so on some systems, renameat fails with
ENOTDIR if either argument is a symlink with a trailing slash:
glibc, OpenBSD, Cygwin 1.7.
renameat do nothing and return 0 if the
source and destination are hard links to the same file. This behavior
is counterintuitive, and on some systems renameat is a no-op in
this way only if the source and destination identify the same
directory entry. On these systems, for example, although renaming
./f to f is a no-op, renaming f to g
deletes f when f and g are hard links to the same
file:
NetBSD 7.0.
stat function
for 30 seconds after the rename, on NFS file systems, on some platforms:
Linux 2.6.18.
Next: scanf, Previous: renameat, Up: Functions in <stdio.h> [Contents][Index]
rewindPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rewind.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno
upon failure.
Next: setbuf, Previous: rewind, Up: Functions in <stdio.h> [Contents][Index]
scanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/scanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-scanf.html
Gnulib module: stdio-h, nonblocking
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
feof would return nonzero. However, on some systems this
function attempts to read from the underlying file descriptor even if
the stream’s end-of-file indicator is set. These systems include
glibc and default Solaris.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
errno
upon failure.
hh, ll, j,
t, z size specifiers.
Next: setvbuf, Previous: scanf, Up: Functions in <stdio.h> [Contents][Index]
setbufPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setbuf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: snprintf, Previous: setbuf, Up: Functions in <stdio.h> [Contents][Index]
setvbufPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setvbuf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno
upon failure.
_IOLBF (line-buffering)
is treated as if it were _IOFBF (full buffering),
possibly with a warning generated.
Next: sprintf, Previous: setvbuf, Up: Functions in <stdio.h> [Contents][Index]
snprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/snprintf.html
Gnulib module: snprintf or snprintf-posix or snprintf-gnu
Portability problems fixed by either Gnulib module snprintf or snprintf-posix or snprintf-gnu:
"%2$s", on some platforms:
NetBSD 3.0, mingw.
Portability problems fixed by either Gnulib module snprintf-posix or snprintf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module snprintf-gnu:
Portability problems fixed by either Gnulib module snprintf-posix or snprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
Next: sscanf, Previous: snprintf, Up: Functions in <stdio.h> [Contents][Index]
sprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sprintf.html
Gnulib module: sprintf-posix or sprintf-gnu
Portability problems fixed by either Gnulib module sprintf-posix or sprintf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module sprintf-gnu:
Portability problems fixed by either Gnulib module sprintf-posix or sprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
Next: stderr, Previous: sprintf, Up: Functions in <stdio.h> [Contents][Index]
sscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sscanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
errno
upon failure.
hh, ll, j,
t, z size specifiers.
Next: stdin, Previous: sscanf, Up: Functions in <stdio.h> [Contents][Index]
stderrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/stderr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
freopen(NULL, "r+", stderr) on Cygwin 1.5.21
or newer.
Another is to use the gnulib ftello module and do
ftello(stderr).
stderr
can affect an unrelated file that happened to be assigned to fd 2.
The gnulib xstdopen or the *-safer modules may be used to
guarantee that fd 2 stays
reserved for stderr.
Next: stdout, Previous: stderr, Up: Functions in <stdio.h> [Contents][Index]
stdinPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/stdin.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
stdin
can affect an unrelated file that happened to be assigned to fd 0.
The gnulib xstdopen or the *-safer modules may be used to
guarantee that fd 0 stays
reserved for stdin.
Next: tmpfile, Previous: stdin, Up: Functions in <stdio.h> [Contents][Index]
stdoutPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/stdout.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
freopen(NULL, "w", stdout) on Cygwin 1.5.21
or newer.
Another is to use the gnulib ftello module and do
ftello(stdout).
stdout
can affect an unrelated file that happened to be assigned to fd 1.
The gnulib xstdopen or the *-safer modules may be used to
guarantee that fd 1 stays
reserved for stdout.
Next: tmpnam, Previous: stdout, Up: Functions in <stdio.h> [Contents][Index]
tmpfilePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tmpfile.html
Gnulib module: tmpfile
Portability problems fixed by Gnulib:
off_t is a 32-bit type, tmpfile may not work
correctly to create files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: ungetc, Previous: tmpfile, Up: Functions in <stdio.h> [Contents][Index]
tmpnamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tmpnam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mkstemp instead.
Next: vasprintf, Previous: tmpnam, Up: Functions in <stdio.h> [Contents][Index]
ungetcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ungetc.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno
upon failure.
Next: vdprintf, Previous: ungetc, Up: Functions in <stdio.h> [Contents][Index]
vasprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vasprintf.html
Documentation:
Gnulib module: vasprintf or vasprintf-posix or vasprintf-gnu
Portability problems fixed by either Gnulib module vasprintf or vasprintf-posix or vasprintf-gnu:
Portability problems fixed by either Gnulib module vasprintf-posix or vasprintf-gnu:
hh, ll,
j, t, z) on some platforms:
Cygwin 1.5.24.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%2$s", on some platforms:
NetBSD 3.0.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module vasprintf-gnu:
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
Next: vfprintf, Previous: vasprintf, Up: Functions in <stdio.h> [Contents][Index]
vdprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vdprintf.html
Gnulib module: vdprintf or vdprintf-posix or vdprintf-gnu
Portability problems fixed by either Gnulib module vdprintf or vdprintf-posix or vdprintf-gnu:
Portability problems fixed by either Gnulib module vdprintf-posix or vdprintf-gnu:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
AIX 7.3, Solaris 11.4.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module vdprintf-gnu:
Portability problems fixed by either Gnulib module vdprintf-posix or vdprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, Android.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: vfscanf, Previous: vdprintf, Up: Functions in <stdio.h> [Contents][Index]
vfprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vfprintf.html
Gnulib module: vfprintf-posix or vfprintf-gnu or stdio-h, nonblocking, sigpipe
Portability problems fixed by either Gnulib module stdio-h or fprintf-posix or fprintf-gnu:
__USE_MINGW_ANSI_STDIO in combination with msvcrt,
when the output goes to a Windows console.
Portability problems fixed by either Gnulib module vfprintf-posix or vfprintf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module vfprintf-gnu:
Portability problems fixed by either Gnulib module vfprintf-posix or vfprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
Portability problems fixed by Gnulib module stdio-h or vfprintf-posix or vfprintf-gnu, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h or vfprintf-posix or vfprintf-gnu, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
EOF but
does not set the error flag for ferror on some platforms:
glibc 2.13, cygwin 1.7.9.
Next: vprintf, Previous: vfprintf, Up: Functions in <stdio.h> [Contents][Index]
vfscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vfscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-vfscanf.html
Gnulib module: vfscanf, nonblocking
Portability problems fixed by Gnulib module vfscanf, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
errno
upon failure.
hh, ll, j,
t, z size specifiers.
Next: vscanf, Previous: vfscanf, Up: Functions in <stdio.h> [Contents][Index]
vprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vprintf.html
Gnulib module: vprintf-posix or vprintf-gnu or stdio-h, nonblocking, sigpipe
Portability problems fixed by either Gnulib module stdio-h or fprintf-posix or fprintf-gnu:
__USE_MINGW_ANSI_STDIO in combination with msvcrt,
when the output goes to a Windows console.
Portability problems fixed by either Gnulib module vprintf-posix or vprintf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module vprintf-gnu:
Portability problems fixed by either Gnulib module vprintf-posix or vprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
Portability problems fixed by Gnulib module stdio-h or vprintf-posix or vprintf-gnu, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h or vprintf-posix or vprintf-gnu, together with module sigpipe:
SIGPIPE handler, on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
EOF but
does not set the error flag for ferror on some platforms:
glibc 2.13, cygwin 1.7.9.
Next: vsnprintf, Previous: vprintf, Up: Functions in <stdio.h> [Contents][Index]
vscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-vscanf.html
Gnulib module: vscanf, nonblocking
Portability problems fixed by Gnulib module vscanf, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
errno
upon failure.
hh, ll, j,
t, z size specifiers.
Next: vsprintf, Previous: vscanf, Up: Functions in <stdio.h> [Contents][Index]
vsnprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vsnprintf.html
Gnulib module: vsnprintf or vsnprintf-posix or vsnprintf-gnu
Portability problems fixed by either Gnulib module vsnprintf or vsnprintf-posix or vsnprintf-gnu:
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
Portability problems fixed by either Gnulib module vsnprintf-posix or vsnprintf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module vsnprintf-gnu:
Portability problems fixed by either Gnulib module vsnprintf-posix or vsnprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, HP-UX 11, mingw, MSVC 14, Android.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
Next: vsscanf, Previous: vsnprintf, Up: Functions in <stdio.h> [Contents][Index]
vsprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vsprintf.html
Gnulib module: vsprintf-posix or vsprintf-gnu
Portability problems fixed by either Gnulib module vsprintf-posix or vsprintf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module vsprintf-gnu:
Portability problems fixed by either Gnulib module vsprintf-posix or vsprintf-gnu
and additionally the Gnulib module printf-with-n-directive:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
Previous: vsprintf, Up: Functions in <stdio.h> [Contents][Index]
vsscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vsscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-vsscanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
errno
upon failure.
hh, ll, j,
t, z size specifiers.
Next: Functions in <string.h>, Previous: Functions in <stdio.h>, Up: Function Substitutes [Contents][Index]
<stdlib.h>| • _Exit | ||
| • a64l | ||
| • abort | ||
| • abs | ||
| • aligned_alloc | ||
| • at_quick_exit | ||
| • atexit | ||
| • atof | ||
| • atoi | ||
| • atol | ||
| • atoll | ||
| • bsearch | ||
| • calloc | ||
| • div | ||
| • drand48 | ||
| • erand48 | ||
| • exit | ||
| • free | ||
| • free_aligned_sized | ||
| • free_sized | ||
| • getenv | ||
| • getsubopt | ||
| • grantpt | ||
| • initstate | ||
| • jrand48 | ||
| • l64a | ||
| • labs | ||
| • lcong48 | ||
| • ldiv | ||
| • llabs | ||
| • lldiv | ||
| • lrand48 | ||
| • malloc | ||
| • mblen | ||
| • mbstowcs | ||
| • mbtowc | ||
| • memalignment | ||
| • mkdtemp | ||
| • mkostemp | ||
| • mkstemp | ||
| • mrand48 | ||
| • nrand48 | ||
| • posix_memalign | ||
| • posix_openpt | ||
| • ptsname | ||
| • ptsname_r | ||
| • putenv | ||
| • qsort | ||
| • qsort_r | ||
| • quick_exit | ||
| • rand | ||
| • rand_r | ||
| • random | ||
| • realloc | ||
| • reallocarray | ||
| • realpath | ||
| • secure_getenv | ||
| • seed48 | ||
| • setenv | ||
| • setkey | ||
| • setstate | ||
| • srand | ||
| • srand48 | ||
| • srandom | ||
| • strfromd | ||
| • strfromf | ||
| • strfroml | ||
| • strtod | ||
| • strtof | ||
| • strtol | ||
| • strtold | ||
| • strtoll | ||
| • strtoul | ||
| • strtoull | ||
| • system | ||
| • unlockpt | ||
| • unsetenv | ||
| • wcstombs | ||
| • wctomb |
Next: a64l, Up: Functions in <stdlib.h> [Contents][Index]
_ExitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/_Exit.html
Gnulib module: _Exit
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: abort, Previous: _Exit, Up: Functions in <stdlib.h> [Contents][Index]
a64lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/a64l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: abs, Previous: a64l, Up: Functions in <stdlib.h> [Contents][Index]
abortPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/abort.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: aligned_alloc, Previous: abort, Up: Functions in <stdlib.h> [Contents][Index]
absPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/abs.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: at_quick_exit, Previous: abs, Up: Functions in <stdlib.h> [Contents][Index]
aligned_allocISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.24.3.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/aligned_alloc.html
Documentation:
man aligned_alloc
Gnulib module: aligned_alloc
Portability problems fixed by Gnulib:
sizeof (void *) on some platforms:
macOS 14, AIX 7.3.1.
aligned_alloc crashes if the requested size is
not a multiple of the alignment:
AddressSanitizer (gcc 11.2 or clang 13).
Portability problems not fixed by Gnulib:
Gnulib has partial substitutes for aligned_alloc
that do not crash even if the AddressSanitizer bug is present:
alignalloc provides a portable function
alignalloc that is a near-substitute for glibc
aligned_alloc, except that the result must be freed
with alignfree rather than plain free.
aligned-malloc provides functions for
allocating and freeing blocks of suitably aligned memory.
pagealign_alloc provides a similar API for
allocating and freeing blocks of memory aligned on a system page boundary.
Next: atexit, Previous: aligned_alloc, Up: Functions in <stdlib.h> [Contents][Index]
at_quick_exitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.24.4.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/at_quick_exit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atof, Previous: at_quick_exit, Up: Functions in <stdlib.h> [Contents][Index]
atexitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atexit.html
Gnulib module: atexit
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
atexit. This is
because if a signal terminates a process after exit is called
or main returns, the process’s exit status is that specified by
exit’s argument or by main’s return value, instead of
being the exit status corresponding to the signal:
z/OS 3.1.
Next: atoi, Previous: atexit, Up: Functions in <stdlib.h> [Contents][Index]
atofPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atof.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atol, Previous: atof, Up: Functions in <stdlib.h> [Contents][Index]
atoiPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atoi.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: atoll, Previous: atoi, Up: Functions in <stdlib.h> [Contents][Index]
atolPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atol.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: bsearch, Previous: atol, Up: Functions in <stdlib.h> [Contents][Index]
atollPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/atoll.html
Gnulib module: atoll
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: calloc, Previous: atoll, Up: Functions in <stdlib.h> [Contents][Index]
bsearchPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/bsearch.html
Gnulib module: bsearch
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: div, Previous: bsearch, Up: Functions in <stdlib.h> [Contents][Index]
callocPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/calloc.html
Gnulib module: calloc-posix
Portability problems fixed by Gnulib:
errno:
mingw, MSVC 14.
errno
to EAGAIN instead of to ENOMEM. Although POSIX allows
EAGAIN, the calloc-posix module insists on ENOMEM
which also conforms to POSIX and is GNU-compatible:
Solaris 11.4.
calloc (n, s) can succeed even if
multiplying n by s would exceed PTRDIFF_MAX or
SIZE_MAX. Although failing to check for exceeding
PTRDIFF_MAX is arguably allowed by POSIX it can lead to
undefined behavior later, so calloc-posix does not allow
going over the limit.
Extension: Gnulib provides a module ‘calloc-gnu’ that substitutes a
calloc implementation that behaves more like the glibc implementation.
It fixes this portability problem:
calloc (0, s) and calloc (n, 0) return NULL on success
on some platforms:
AIX 7.3.
Next: drand48, Previous: calloc, Up: Functions in <stdlib.h> [Contents][Index]
divPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/div.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: erand48, Previous: div, Up: Functions in <stdlib.h> [Contents][Index]
drand48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/drand48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: exit, Previous: drand48, Up: Functions in <stdlib.h> [Contents][Index]
erand48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/erand48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: free, Previous: erand48, Up: Functions in <stdlib.h> [Contents][Index]
exitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/exit.html
Gnulib module: stdlib-h
Portability problems fixed by Gnulib:
EXIT_SUCCESS and EXIT_FAILURE,
see stdlib.h.
Portability problems not fixed by Gnulib:
Next: free_aligned_sized, Previous: exit, Up: Functions in <stdlib.h> [Contents][Index]
freePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/free.html
Gnulib module: free-posix
Portability problems fixed by Gnulib:
errno on many platforms:
glibc 2.32, Mac OS X, FreeBSD, NetBSD, OpenBSD 4.4, Minix, AIX, HP-UX, Cygwin, mingw, MSVC.
Portability problems not fixed by Gnulib:
Next: free_sized, Previous: free, Up: Functions in <stdlib.h> [Contents][Index]
free_aligned_sizedISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.24.3.5
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getenv, Previous: free_aligned_sized, Up: Functions in <stdlib.h> [Contents][Index]
free_sizedISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.24.3.4
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getsubopt, Previous: free_sized, Up: Functions in <stdlib.h> [Contents][Index]
getenvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getenv.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: grantpt, Previous: getenv, Up: Functions in <stdlib.h> [Contents][Index]
getsuboptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getsubopt.html
Gnulib module: getsubopt
Portability problems fixed by Gnulib:
unistd.h instead of
stdlib.h on some platforms:
Cygwin 1.7.1.
Portability problems not fixed by Gnulib:
Next: initstate, Previous: getsubopt, Up: Functions in <stdlib.h> [Contents][Index]
grantptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/grantpt.html
Gnulib module: grantpt
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: jrand48, Previous: grantpt, Up: Functions in <stdlib.h> [Contents][Index]
initstatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/initstate.html
Gnulib module: random
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
unsigned long instead of unsigned int on
some platforms:
MidnightBSD 2.0.
long instead of size_t on some platforms:
MidnightBSD 2.0.
Next: l64a, Previous: initstate, Up: Functions in <stdlib.h> [Contents][Index]
jrand48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/jrand48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: labs, Previous: jrand48, Up: Functions in <stdlib.h> [Contents][Index]
l64aPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/l64a.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lcong48, Previous: l64a, Up: Functions in <stdlib.h> [Contents][Index]
labsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/labs.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ldiv, Previous: labs, Up: Functions in <stdlib.h> [Contents][Index]
lcong48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lcong48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llabs, Previous: lcong48, Up: Functions in <stdlib.h> [Contents][Index]
ldivPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ldiv.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lldiv, Previous: ldiv, Up: Functions in <stdlib.h> [Contents][Index]
llabsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/llabs.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lrand48, Previous: llabs, Up: Functions in <stdlib.h> [Contents][Index]
lldivPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lldiv.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: malloc, Previous: lldiv, Up: Functions in <stdlib.h> [Contents][Index]
lrand48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lrand48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mblen, Previous: lrand48, Up: Functions in <stdlib.h> [Contents][Index]
mallocPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/malloc.html
Gnulib module: malloc-posix
Portability problems fixed by Gnulib:
errno:
mingw, MSVC 14.
errno
to EAGAIN instead of to ENOMEM. Although POSIX allows
EAGAIN, the malloc-posix module insists on ENOMEM
which also conforms to POSIX and is GNU-compatible:
Solaris 11.4.
malloc (n) can succeed even if n
exceeds PTRDIFF_MAX. Although this behavior is arguably
allowed by POSIX it can lead to behavior not defined by POSIX later,
so malloc-posix does not allow going over the limit.
Extension: Gnulib provides a module ‘malloc-gnu’ that substitutes a
malloc implementation that behaves more like the glibc implementation,
by fixing this portability problem:
malloc (0) returns NULL on success on some platforms:
AIX 7.3.
Next: mbstowcs, Previous: malloc, Up: Functions in <stdlib.h> [Contents][Index]
mblenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mblen.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mbtowc, Previous: mblen, Up: Functions in <stdlib.h> [Contents][Index]
mbstowcsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbstowcs.html
Gnulib module: mbstowcs
Portability problems fixed by Gnulib:
(size_t) -1
and set errno to EILSEQ:
glibc 2.35.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function mbstoc32s, provided by Gnulib module
mbstoc32s, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: memalignment, Previous: mbstowcs, Up: Functions in <stdlib.h> [Contents][Index]
mbtowcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbtowc.html
Gnulib module: mbtowc
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: mkdtemp, Previous: mbtowc, Up: Functions in <stdlib.h> [Contents][Index]
memalignmentISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.24.9.1
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
To check whether a pointer P has alignment A,
Gnulib code typically tests (uintptr_t) P % A
instead of memalignment (P) % A.
See Other portability assumptions.
Next: mkostemp, Previous: memalignment, Up: Functions in <stdlib.h> [Contents][Index]
mkdtempPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mkdtemp.html
Gnulib module: mkdtemp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mkstemp, Previous: mkdtemp, Up: Functions in <stdlib.h> [Contents][Index]
mkostempPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mkostemp.html
Documentation:
man mkostemp
Gnulib module: mkostemp
Portability problems fixed by Gnulib:
<unistd.h> instead of <stdlib.h>
on some platforms:
macOS 14.
off_t is a 32-bit type, mkostemp may not work
correctly to create files larger than 2 GB. (Cf. AC_SYS_LARGEFILE.)
Portability problems not fixed by Gnulib:
The gnulib module clean-temp can create temporary files that will not
be left behind after signals such as SIGINT.
Next: mrand48, Previous: mkostemp, Up: Functions in <stdlib.h> [Contents][Index]
mkstempPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mkstemp.html
Gnulib module: mkstemp
Portability problems fixed by Gnulib:
off_t is a 32-bit type, mkstemp may not work
correctly to create files 2 GiB and larger. See Large File Support.
mkstemp can create a world or group
writable or readable file, if you haven’t set the process umask to
077. This is a security risk.
Portability problems not fixed by Gnulib:
The gnulib module clean-temp can create temporary files that will not
be left behind after signals such as SIGINT.
Next: nrand48, Previous: mkstemp, Up: Functions in <stdlib.h> [Contents][Index]
mrand48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mrand48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_memalign, Previous: mrand48, Up: Functions in <stdlib.h> [Contents][Index]
nrand48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nrand48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_openpt, Previous: nrand48, Up: Functions in <stdlib.h> [Contents][Index]
posix_memalignPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_memalign.html
Gnulib module: posix_memalign
Although this function is superseded by aligned_alloc,
it is more portable to older systems that do not support C11.
See aligned_alloc.
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
The Gnulib module aligned-malloc provides functions for
allocating and freeing blocks of suitably aligned memory.
The Gnulib module pagealign_alloc provides a similar API for
allocating and freeing blocks of memory aligned on a system page boundary.
Next: ptsname, Previous: posix_memalign, Up: Functions in <stdlib.h> [Contents][Index]
posix_openptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_openpt.html
Gnulib module: posix_openpt
Portability problems fixed by Gnulib:
ENOSYS or ENOENT on
some platforms.
Portability problems not fixed by Gnulib:
Note that when using this function to open the master side of a
pseudo-terminal, you still need platform dependent code to open the
corresponding slave side.
The Gnulib module openpty provides
an easy-to-use API that does both at once.
Next: ptsname_r, Previous: posix_openpt, Up: Functions in <stdlib.h> [Contents][Index]
ptsnamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ptsname.html
Gnulib module: ptsname
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note that the Gnulib module ptsname_r is a version of this
function that is more likely to be thread-safe.
Next: putenv, Previous: ptsname, Up: Functions in <stdlib.h> [Contents][Index]
ptsname_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ptsname_r.html
Documentation:
Gnulib module: ptsname_r
Portability problems fixed by Gnulib:
ERANGE, it stores an empty string as result
on some platforms:
NetBSD 10.0, Solaris 11 OmniOS.
Portability problems not fixed by Gnulib:
Note: Portable programs should expect to find the error code as the
return value of this function, not as the value of errno.
This is needed for compatibility with musl libc and with the
forthcoming POSIX Issue 8.
Next: qsort, Previous: ptsname_r, Up: Functions in <stdlib.h> [Contents][Index]
putenvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/putenv.html,
amended through https://www.austingroupbugs.net/view.php?id=1598.
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Environment-Access.html.
Note: POSIX putenv supports
adding or changing the value of an environment variable,
while glibc also supports removing an environment variable
(as if by unsetenv).
Gnulib module: putenv-gnu
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: qsort_r, Previous: putenv, Up: Functions in <stdlib.h> [Contents][Index]
qsortPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/qsort.html
Gnulib module: qsort
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: quick_exit, Previous: qsort, Up: Functions in <stdlib.h> [Contents][Index]
qsort_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/qsort_r.html
Documentation:
man qsort_r
Gnulib module: qsort_r
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rand, Previous: qsort_r, Up: Functions in <stdlib.h> [Contents][Index]
quick_exitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.24.4.7.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/quick_exit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rand_r, Previous: quick_exit, Up: Functions in <stdlib.h> [Contents][Index]
randPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rand.html
Gnulib module: rand
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: random, Previous: rand, Up: Functions in <stdlib.h> [Contents][Index]
rand_rRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rand_r.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
random_r from Gnulib module random_r instead.
Next: realloc, Previous: rand_r, Up: Functions in <stdlib.h> [Contents][Index]
randomPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/random.html
Gnulib module: random
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: reallocarray, Previous: random, Up: Functions in <stdlib.h> [Contents][Index]
reallocPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/realloc.html
Gnulib module: realloc-posix
Portability problems fixed by Gnulib:
errno:
FreeBSD 15 (for a size > 0x7000000000000000), mingw, MSVC 14.
errno
to EAGAIN instead of to ENOMEM. Although POSIX allows
EAGAIN, the realloc-posix module insists on ENOMEM
which also conforms to POSIX and is GNU-compatible:
Solaris 11.4.
realloc (p, n) can succeed even if n
exceeds PTRDIFF_MAX. Although this behavior is arguably
allowed by POSIX it is not compatible with GNU and
can lead to behavior not defined by POSIX later,
so realloc-posix does not allow going over the limit.
realloc with a size of 0.
With a null pointer argument, this is the same ambiguity as malloc (0)
as to whether a successful call returns a null pointer or a pointer to a
new zero-sized memory region. Although both behaviors conform to POSIX,
realloc-posix insists on the latter behavior, which is
compatible with GNU.
With non-null p, behavior is a real mess for realloc (p, 0).
C23 says behavior is undefined.
C89 through C17 say a successful call returns either a null pointer
or a pointer to a new zero-sized memory region.
POSIX.1-2017 extends C99 by saying that if a successful call
returns a null pointer it
must also set errno to an implementation-defined value,
and POSIX.1-2024 extends C17 a bit further by saying that
such a call must set errno to EINVAL.
It is not known what POSIX.1-2024’s successor will say,
though presumably it will extend C23.
In practice, successful realloc (p, 0) calls
have one of the following behaviors:
p, do not change errno, and return a null pointer:
glibc 2.33–2.41 by default, Android.
p, possibly set errno, and return a null pointer:
glibc 1–2.1 if specially built with REALLOC_ZERO_BYTES_FREES=1,
glibc 2.1.1–2.32 by default,
mingw, MSVC 14.
p, set errno to EINVAL, and return a null pointer:
AIX 7.3 without _LINUX_SOURCE_COMPAT.
p and return a pointer to a new region of size zero:
AIX 7.3 with _LINUX_SOURCE_COMPAT, glibc 1–2.1 by default,
glibc 2.1.1–2.41 if specially built with REALLOC_ZERO_BYTES_FREES=0,
musl libc, macOS, FreeBSD, NetBSD, OpenBSD, Solaris, Cygwin.
Behaviors (3) and (4) conform to POSIX; behaviors (1) and (2) do not.
The realloc-posix module insists on behavior (4) as it is more
popular than (3) and is more useful in practice. Behavior (4) is the
only one of the four in which returning a null pointer means failure,
which is what non-expert programmers typically expect.
A program not suspecting these variations in semantics will either:
p) if it unwisely does not check
for realloc failure, when it assumes behavior (1), (2) or (3) but the
system implements behavior (4).
realloc
failure), or have double-free bugs (if it unwisely does not check),
when it assumes behavior (4) but the system implements (1), (2) or (3).
realloc (p, 0) sets errno to EINVAL and returns null,
a POSIX.1-2024 application cannot tell whether the call has succeeded
and freed p, or has failed without freeing p.
This is only a theoretical problem, though, as the only practical
implementation with this behavior is AIX without _LINUX_SOURCE_COMPAT,
which behaves this way only when the call succeeds.
Portability problems not fixed by Gnulib:
p points to a region of size psize and n <= psize,
realloc (p, n) can fail and return a null pointer:
glibc 2.42 and probably other platforms.
Next: realpath, Previous: realloc, Up: Functions in <stdlib.h> [Contents][Index]
reallocarrayPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/reallocarray.html
Documentation:
Gnulib module: reallocarray
Portability problems fixed by Gnulib:
errno
to EAGAIN instead of to ENOMEM. Although POSIX allows
EAGAIN, the reallocarray module insists on ENOMEM
which also conforms to POSIX and is GNU-compatible:
Solaris 11.4.
reallocarray (p, n, s) can succeed even if
multiplying n by s would exceed PTRDIFF_MAX,
which can lead to undefined behavior later:
FreeBSD 13, NetBSD 9, OpenBSD 6, musl 1.2.
reallocarray (p, n, s) when either n or s is zero,
as reallocarray has the same issues with zero sizes
that realloc does. See realloc.
Portability problems not fixed by Gnulib:
reallocarray, like realloc, can fail and return a null pointer:
glibc 2.42 and probably other platforms.
Next: secure_getenv, Previous: reallocarray, Up: Functions in <stdlib.h> [Contents][Index]
realpathPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/realpath.html
Gnulib module: canonicalize-lgpl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: seed48, Previous: realpath, Up: Functions in <stdlib.h> [Contents][Index]
secure_getenvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/secure_getenv.html
Documentation:
Gnulib module: secure_getenv
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setenv, Previous: secure_getenv, Up: Functions in <stdlib.h> [Contents][Index]
seed48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/seed48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setkey, Previous: seed48, Up: Functions in <stdlib.h> [Contents][Index]
setenvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setenv.html
Gnulib module: setenv
Portability problems fixed by Gnulib:
EINVAL when
passed an empty string or a string containing ‘=’:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 1.6, OpenBSD 7.5, Cygwin 1.5.x.
Portability problems not fixed by Gnulib:
setenv(NULL,"",0) gracefully
fail with EINVAL, but not all implementations guarantee this,
and the requirement was removed.
Next: setstate, Previous: setenv, Up: Functions in <stdlib.h> [Contents][Index]
setkeyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setkey.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<stdlib.h>
(without -D_GNU_SOURCE) on some platforms:
glibc (at least 2.11–2.13).
Next: srand, Previous: setkey, Up: Functions in <stdlib.h> [Contents][Index]
setstatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setstate.html
Gnulib module: random
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: srand48, Previous: setstate, Up: Functions in <stdlib.h> [Contents][Index]
srandPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/srand.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
rand invocations in other threads
on some platforms:
Cygwin 3.4.6.
Next: srandom, Previous: srand, Up: Functions in <stdlib.h> [Contents][Index]
srand48POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/srand48.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strfromd, Previous: srand48, Up: Functions in <stdlib.h> [Contents][Index]
srandomPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/srandom.html
Gnulib module: random
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
unsigned long instead of unsigned int on some
platforms:
MidnightBSD 2.0.
srandom_deterministic.
Next: strfromf, Previous: srandom, Up: Functions in <stdlib.h> [Contents][Index]
strfromdDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strfroml, Previous: strfromd, Up: Functions in <stdlib.h> [Contents][Index]
strfromfDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtod, Previous: strfromf, Up: Functions in <stdlib.h> [Contents][Index]
strfromlDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtof, Previous: strfroml, Up: Functions in <stdlib.h> [Contents][Index]
strtodPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtod.html
Gnulib module: strtod or strtod-obsolete
Portability problems fixed by either Gnulib module strtod or strtod-obsolete:
errno upon gradual underflow (resulting
in a denormalized number) on some platforms:
Cygwin 2.9.
Portability problems fixed by Gnulib module strtod-obsolete:
Portability problems not fixed by Gnulib:
errno upon gradual underflow (resulting
in a denormalized number) on some platforms:
MSVC 14.
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: strtol, Previous: strtod, Up: Functions in <stdlib.h> [Contents][Index]
strtofPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtof.html
Gnulib module: strtof
Portability problems fixed by Gnulib:
errno upon overflow on some platforms:
mingw 9.0.
errno upon underflow on some platforms:
Cygwin 2.9, mingw 5.0.
Portability problems not fixed by Gnulib:
errno upon gradual underflow (resulting
in a denormalized number) on some platforms:
MSVC 14.
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: strtold, Previous: strtof, Up: Functions in <stdlib.h> [Contents][Index]
strtolPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtol.html
Gnulib module: strtol
Portability problems fixed by Gnulib:
"0x" and the base is 16 or 0 on some platforms:
Minix 3.3, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: strtoll, Previous: strtol, Up: Functions in <stdlib.h> [Contents][Index]
strtoldPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtold.html
Gnulib module: strtold
Portability problems fixed by Gnulib:
long double, on some platforms:
HP-UX 11.31/hppa.
errno upon underflow on some platforms:
Cygwin 2.9.
Portability problems not fixed by Gnulib:
errno upon gradual underflow (resulting
in a denormalized number) on some platforms:
MSVC 14.
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: strtoul, Previous: strtold, Up: Functions in <stdlib.h> [Contents][Index]
strtollPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoll.html
Gnulib module: strtoll
Portability problems fixed by Gnulib:
"0x" and the base is 16 or 0 on some platforms:
Minix 3.3, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: strtoull, Previous: strtoll, Up: Functions in <stdlib.h> [Contents][Index]
strtoulPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoul.html
Gnulib module: strtoul
Portability problems fixed by Gnulib:
"0x" and the base is 16 or 0 on some platforms:
Minix 3.3, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: system, Previous: strtoul, Up: Functions in <stdlib.h> [Contents][Index]
strtoullPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoull.html
Gnulib module: strtoull
Portability problems fixed by Gnulib:
"0x" and the base is 16 or 0 on some platforms:
Minix 3.3, mingw, MSVC 14.
Portability problems not fixed by Gnulib:
errno
to EINVAL on some platforms. Portable programs should check
for no conversion by comparing str to *endptr, not by
inspecting errno.
Next: unlockpt, Previous: strtoull, Up: Functions in <stdlib.h> [Contents][Index]
systemPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/system.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-system-3.html
Gnulib module: system-posix
Portability problems fixed by Gnulib:
WIFSIGNALED, WIFEXITED, WIFSTOPPED,
WTERMSIG, WEXITSTATUS, WNOHANG, WUNTRACED,
WSTOPSIG are not defined in <stdlib.h> (only in
<sys/wait.h>) on some platforms:
MirBSD 10.
Portability problems not fixed by Gnulib:
system function is cmd.exe, not /bin/sh. Accordingly,
the rules for quoting shell arguments containing spaces, quote or other special
characters are different.
Next: unsetenv, Previous: system, Up: Functions in <stdlib.h> [Contents][Index]
unlockptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/unlockpt.html
Gnulib module: unlockpt
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: wcstombs, Previous: unlockpt, Up: Functions in <stdlib.h> [Contents][Index]
unsetenvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/unsetenv.html
Gnulib module: unsetenv
Portability problems fixed by Gnulib:
EINVAL when
passed an empty string or a string containing ‘=’:
FreeBSD 6.0, NetBSD 1.6, OpenBSD 4.7.
Portability problems not fixed by Gnulib:
unsetenv(NULL) gracefully
fail with EINVAL, but not all implementations guarantee this,
and the requirement was removed.
Next: wctomb, Previous: unsetenv, Up: Functions in <stdlib.h> [Contents][Index]
wcstombsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstombs.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32stombs, provided by Gnulib module
c32stombs, operates on 32-bit wide characters and therefore does not
have this limitation.
Previous: wcstombs, Up: Functions in <stdlib.h> [Contents][Index]
wctombPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wctomb.html
Gnulib module: wctomb
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: Functions in <strings.h>, Previous: Functions in <stdlib.h>, Up: Function Substitutes [Contents][Index]
<string.h>| • memccpy | ||
| • memchr | ||
| • memcmp | ||
| • memcpy | ||
| • memmem | ||
| • memmove | ||
| • memset | ||
| • memset_explicit | ||
| • stpcpy | ||
| • stpncpy | ||
| • strcat | ||
| • strchr | ||
| • strcmp | ||
| • strcoll | ||
| • strcoll_l | ||
| • strcpy | ||
| • strcspn | ||
| • strdup | ||
| • strerror | ||
| • strerror_l | ||
| • strerror_r | ||
| • strlcat | ||
| • strlcpy | ||
| • strlen | ||
| • strncat | ||
| • strncmp | ||
| • strncpy | ||
| • strndup | ||
| • strnlen | ||
| • strpbrk | ||
| • strrchr | ||
| • strsignal | ||
| • strspn | ||
| • strstr | ||
| • strtok | ||
| • strtok_r | ||
| • strxfrm | ||
| • strxfrm_l |
Next: memchr, Up: Functions in <string.h> [Contents][Index]
memccpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/memccpy.html
Gnulib module: memccpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: memcmp, Previous: memccpy, Up: Functions in <string.h> [Contents][Index]
memchrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/memchr.html
Gnulib module: memchr
Portability problems fixed by Gnulib:
unsigned char on some platforms:
Android 5.0.
Portability problems not fixed by Gnulib:
Next: memcpy, Previous: memchr, Up: Functions in <string.h> [Contents][Index]
memcmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/memcmp.html
Gnulib module: memcmp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: memmem, Previous: memcmp, Up: Functions in <string.h> [Contents][Index]
memcpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/memcpy.html
Gnulib module: memcpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: memmove, Previous: memcpy, Up: Functions in <string.h> [Contents][Index]
memmemPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/memmem.html
Documentation:
Gnulib module: memmem or memmem-simple
Both modules implement the same replacement for the memmem function
with the memmem module providing a replacement on more platforms where
the existing memmem function has a quadratic worst-case complexity.
Portability problems fixed by either Gnulib module memmem-simple
or memmem:
Performance problems fixed by Gnulib module memmem:
Portability problems not fixed by Gnulib:
Next: memset, Previous: memmem, Up: Functions in <string.h> [Contents][Index]
memmovePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/memmove.html
Gnulib module: memmove
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: memset_explicit, Previous: memmove, Up: Functions in <string.h> [Contents][Index]
memsetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/memset.html
Gnulib module: memset
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stpcpy, Previous: memset, Up: Functions in <string.h> [Contents][Index]
memset_explicitDocumentation:
Gnulib module: memset_explicit
The memset_explicit function is an approximation to what is
needed, and does not suffice in general to erase information.
Although calling memset_explicit should clear the memory in
question, the information that was in memory may still be available
elsewhere on the machine. Proper implementation of information
erasure requires support from levels below C code.
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stpncpy, Previous: memset_explicit, Up: Functions in <string.h> [Contents][Index]
stpcpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/stpcpy.html
Gnulib module: stpcpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strcat, Previous: stpcpy, Up: Functions in <string.h> [Contents][Index]
stpncpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/stpncpy.html
Gnulib module: stpncpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strchr, Previous: stpncpy, Up: Functions in <string.h> [Contents][Index]
strcatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcat.html
Gnulib module: string-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strcmp, Previous: strcat, Up: Functions in <string.h> [Contents][Index]
strchrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strchr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbschr that works on
character strings in all locales.
Next: strcoll, Previous: strchr, Up: Functions in <string.h> [Contents][Index]
strcmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcmp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strcoll_l, Previous: strcmp, Up: Functions in <string.h> [Contents][Index]
strcollPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcoll.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno to EILSEQ, on Solaris 10, in
UTF-8 locales, when at least one of the strings contains a Unicode character
in a block that was not assigned in Unicode 4.0.
Next: strcpy, Previous: strcoll, Up: Functions in <string.h> [Contents][Index]
strcoll_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcoll_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strcspn, Previous: strcoll_l, Up: Functions in <string.h> [Contents][Index]
strcpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcpy.html
Gnulib module: string-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: strcpy (dst, src) is only safe to use when you can guarantee that
there are at least strlen (src) + 1 bytes allocated at dst.
Next: strdup, Previous: strcpy, Up: Functions in <string.h> [Contents][Index]
strcspnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcspn.html
Gnulib module: strcspn
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbscspn that works on character
strings in all locales.
Next: strerror, Previous: strcspn, Up: Functions in <string.h> [Contents][Index]
strdupPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strdup.html
Gnulib module: strdup or strdup-posix
Portability problems fixed by either Gnulib module strdup or strdup-posix:
<string.h> on some old platforms.
Portability problems fixed by Gnulib module strdup-posix:
errno:
mingw, MSVC 14.
errno
to EAGAIN instead of to ENOMEM. Although POSIX allows
EAGAIN, the strdup-posix module insists on ENOMEM
which also conforms to POSIX and is GNU-compatible:
Solaris 11.4.
Portability problems not fixed by Gnulib:
Next: strerror_l, Previous: strdup, Up: Functions in <string.h> [Contents][Index]
strerrorPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strerror.html
Gnulib module: strerror
Portability problems fixed by Gnulib:
strerror(0) (by setting
errno or using a string similar to out-of-range values),
although POSIX requires this to leave errno unchanged and
report success, on some platforms:
FreeBSD 8.2, NetBSD 10.0, OpenBSD 4.7, macOS 14.
Portability problems not fixed by Gnulib:
Next: strerror_r, Previous: strerror, Up: Functions in <string.h> [Contents][Index]
strerror_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strerror_l.html
Gnulib module: strerror_l
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strlcat, Previous: strerror_l, Up: Functions in <string.h> [Contents][Index]
strerror_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strerror_r.html
LSB specification:
Gnulib module: strerror_r-posix
Portability problems fixed by Gnulib:
_LINUX_SOURCE_COMPAT
have an incompatible version of this function.
The POSIX compliant code
char *s = (strerror_r (err, buf, buflen) == 0 ? buf : NULL);
is essentially equivalent to this code using the glibc function:
char *s = strerror_r (err, buf, buflen);
strerror buffer on some platforms:
Cygwin 1.7.9.
<string.h> on some platforms:
glibc 2.8.
int instead of size_t on some
platforms:
AIX 5.1.
errno, instead of
returning the error number, on some platforms:
glibc 2.12 with -D_POSIX_C_SOURCE=200112L, AIX 6.1.
errno, on some platforms:
Solaris 10.
<errno.h> on
some platforms:
MSVC 14.
strerror_r(0, buf, len),
although POSIX requires this to succeed, on some platforms:
FreeBSD 8.2.
0 than
strerror on some platforms:
macOS 14.
Portability problems not fixed by Gnulib:
Note: Gnulib has a module xstrerror, with the property that
xstrerror (NULL, errnum) returns the value of strerror_r
as a freshly allocated string.
(Recall that the expression strerror (errnum) is not multithread-safe.)
Next: strlcpy, Previous: strerror_r, Up: Functions in <string.h> [Contents][Index]
strlcatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strlcat.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Truncating-Strings.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strlen, Previous: strlcat, Up: Functions in <string.h> [Contents][Index]
strlcpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strlcpy.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Truncating-Strings.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strncat, Previous: strlcpy, Up: Functions in <string.h> [Contents][Index]
strlenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strlen.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strncmp, Previous: strlen, Up: Functions in <string.h> [Contents][Index]
strncatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncat.html
Gnulib module: strncat
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strncpy, Previous: strncat, Up: Functions in <string.h> [Contents][Index]
strncmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncmp.html
Gnulib module: strncmp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strndup, Previous: strncmp, Up: Functions in <string.h> [Contents][Index]
strncpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncpy.html
Gnulib module: string-h or strncpy
Portability problems fixed by Gnulib module string-h or Gnulib module strncpy:
Portability problems fixed by Gnulib module strncpy:
Portability problems not fixed by Gnulib:
Note: This function was designed for the use-case of filling a fixed-size record with a string, before writing it to a file. This function is not appropriate for copying a string into a bounded memory area, because you have no guarantee that the result will be NUL-terminated. Even if you add the NUL byte at the end yourself, this function is inefficient (as it spends time clearing unused memory) and will allow silent truncation to occur, which is not a good behavior for GNU programs. For more details, see https://meyering.net/crusade-to-eliminate-strncpy/.
Next: strnlen, Previous: strncpy, Up: Functions in <string.h> [Contents][Index]
strndupPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strndup.html
Gnulib module: strndup
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strpbrk, Previous: strndup, Up: Functions in <string.h> [Contents][Index]
strnlenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strnlen.html
Gnulib module: strnlen
Portability problems fixed by Gnulib:
strnlen (s, maxlen) can crash if
s is null-terminated but address arithmetic overflows
(i.e., s + maxlen < s):
Android 5.0.
Portability problems not fixed by Gnulib:
Next: strrchr, Previous: strnlen, Up: Functions in <string.h> [Contents][Index]
strpbrkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strpbrk.html
Gnulib module: strpbrk
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbspbrk that works on character
strings in all locales.
Next: strsignal, Previous: strpbrk, Up: Functions in <string.h> [Contents][Index]
strrchrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strrchr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbsrchr that works
on character strings in all locales.
Next: strspn, Previous: strrchr, Up: Functions in <string.h> [Contents][Index]
strsignalPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strsignal.html
Gnulib module: strsignal
Portability problems fixed by Gnulib:
unistd.h instead of
string.h on some platforms:
NetBSD 5.0.
Portability problems not fixed by Gnulib:
const char * instead of char * on
some platforms:
cygwin 1.5.25, Haiku.
Next: strstr, Previous: strsignal, Up: Functions in <string.h> [Contents][Index]
strspnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strspn.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbsspn that works on character
strings in all locales.
Next: strtok, Previous: strspn, Up: Functions in <string.h> [Contents][Index]
strstrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strstr.html
Gnulib module: strstr or strstr-simple
Portability problems fixed by either Gnulib module strstr-simple
or strstr:
Portability problems fixed by Gnulib module strstr:
Portability problems not fixed by Gnulib:
mbsstr that works
on character strings in all locales.
Next: strtok_r, Previous: strstr, Up: Functions in <string.h> [Contents][Index]
strtokPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtok.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strxfrm, Previous: strtok, Up: Functions in <string.h> [Contents][Index]
strtok_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtok_r.html
Gnulib module: strtok_r
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbstok_r that works on character
strings in all locales.
Next: strxfrm_l, Previous: strtok_r, Up: Functions in <string.h> [Contents][Index]
strxfrmPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strxfrm.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: strxfrm, Up: Functions in <string.h> [Contents][Index]
strxfrm_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strxfrm_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <sys/ipc.h>, Previous: Functions in <string.h>, Up: Function Substitutes [Contents][Index]
<strings.h>| • ffs | ||
| • ffsl | ||
| • ffsll | ||
| • strcasecmp | ||
| • strcasecmp_l | ||
| • strncasecmp | ||
| • strncasecmp_l |
Next: ffsl, Up: Functions in <strings.h> [Contents][Index]
ffsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffs.html
Gnulib module: ffs
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ffsll, Previous: ffs, Up: Functions in <strings.h> [Contents][Index]
ffslPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffsl.html
Documentation:
man ffsl
Gnulib module: ffsl
Portability problems fixed by Gnulib:
<strings.h> instead of <string.h>
on some platforms:
AIX 7.2, Android 13.
Portability problems not fixed by Gnulib:
Next: strcasecmp, Previous: ffsl, Up: Functions in <strings.h> [Contents][Index]
ffsllPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffsll.html
Documentation:
man ffsll
Gnulib module: ffsll
Portability problems fixed by Gnulib:
<strings.h> instead of <string.h>
on some platforms:
AIX 7.2, Android 13.
Portability problems not fixed by Gnulib:
Next: strcasecmp_l, Previous: ffsll, Up: Functions in <strings.h> [Contents][Index]
strcasecmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcasecmp.html
Gnulib module: strcasecmp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbscasecmp that does a case
insensitive comparison of character strings and that works in all locales.
Next: strncasecmp, Previous: strcasecmp, Up: Functions in <strings.h> [Contents][Index]
strcasecmp_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcasecmp_l.html
Gnulib module: strcasecmp_l
Portability problems fixed by Gnulib:
<string.h> instead of <strings.h>
on some platforms:
glibc 2.9, macOS 15.
Portability problems not fixed by Gnulib:
Next: strncasecmp_l, Previous: strcasecmp_l, Up: Functions in <strings.h> [Contents][Index]
strncasecmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html
Gnulib module: strncasecmp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbsncasecmp and mbspcasecmp
that do a case insensitive comparison of character strings and that work in all
locales.
Previous: strncasecmp, Up: Functions in <strings.h> [Contents][Index]
strncasecmp_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp_l.html
Gnulib module: strncasecmp_l
Portability problems fixed by Gnulib:
<string.h> instead of <strings.h>
on some platforms:
glibc 2.9, macOS 15.
Portability problems not fixed by Gnulib:
Next: Functions in <sys/mman.h>, Previous: Functions in <strings.h>, Up: Function Substitutes [Contents][Index]
<sys/ipc.h>| • ftok |
ftokPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ftok.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <sys/msg.h>, Previous: Functions in <sys/ipc.h>, Up: Function Substitutes [Contents][Index]
<sys/mman.h>| • mlock | ||
| • mlockall | ||
| • mmap | ||
| • mprotect | ||
| • msync | ||
| • munlock | ||
| • munlockall | ||
| • munmap | ||
| • posix_madvise | ||
| • posix_mem_offset | ||
| • posix_typed_mem_get_info | ||
| • posix_typed_mem_open | ||
| • shm_open | ||
| • shm_unlink |
Next: mlockall, Up: Functions in <sys/mman.h> [Contents][Index]
mlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mlock.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mmap, Previous: mlock, Up: Functions in <sys/mman.h> [Contents][Index]
mlockallPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mlockall.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mprotect, Previous: mlockall, Up: Functions in <sys/mman.h> [Contents][Index]
mmapPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mmap.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly across the entire data range of files 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
MAP_ANONYMOUS | MAP_PRIVATE and -1 instead of a file descriptor;
on others you have to use a read-only file descriptor of /dev/zero.
MAP_FIXED), often causes mmap to fail. Better pass NULL
in this case.
MAP_FIXED basically never works. On other platforms, it depends
on the circumstances whether memory can be returned at a given address.
Next: msync, Previous: mmap, Up: Functions in <sys/mman.h> [Contents][Index]
mprotectPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mprotect.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno on some platforms:
mingw.
mprotect on memory regions allocated
with malloc.
Next: munlock, Previous: mprotect, Up: Functions in <sys/mman.h> [Contents][Index]
msyncPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/msync.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
msync takes only two arguments.
Next: munlockall, Previous: msync, Up: Functions in <sys/mman.h> [Contents][Index]
munlockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/munlock.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: munmap, Previous: munlock, Up: Functions in <sys/mman.h> [Contents][Index]
munlockallPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/munlockall.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_madvise, Previous: munlockall, Up: Functions in <sys/mman.h> [Contents][Index]
munmapPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/munmap.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_mem_offset, Previous: munmap, Up: Functions in <sys/mman.h> [Contents][Index]
posix_madvisePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_madvise.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_typed_mem_get_info, Previous: posix_madvise, Up: Functions in <sys/mman.h> [Contents][Index]
posix_mem_offsetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_mem_offset.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_typed_mem_open, Previous: posix_mem_offset, Up: Functions in <sys/mman.h> [Contents][Index]
posix_typed_mem_get_infoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_typed_mem_get_info.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: shm_open, Previous: posix_typed_mem_get_info, Up: Functions in <sys/mman.h> [Contents][Index]
posix_typed_mem_openPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_typed_mem_open.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: shm_unlink, Previous: posix_typed_mem_open, Up: Functions in <sys/mman.h> [Contents][Index]
shm_openPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/shm_open.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: shm_open, Up: Functions in <sys/mman.h> [Contents][Index]
shm_unlinkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/shm_unlink.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <sys/resource.h>, Previous: Functions in <sys/mman.h>, Up: Function Substitutes [Contents][Index]
<sys/msg.h>| • msgctl | ||
| • msgget | ||
| • msgrcv | ||
| • msgsnd |
Next: msgget, Up: Functions in <sys/msg.h> [Contents][Index]
msgctlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/msgctl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: msgrcv, Previous: msgctl, Up: Functions in <sys/msg.h> [Contents][Index]
msggetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/msgget.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: msgsnd, Previous: msgget, Up: Functions in <sys/msg.h> [Contents][Index]
msgrcvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/msgrcv.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: msgrcv, Up: Functions in <sys/msg.h> [Contents][Index]
msgsndPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/msgsnd.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <sys/select.h>, Previous: Functions in <sys/msg.h>, Up: Function Substitutes [Contents][Index]
<sys/resource.h>| • getpriority | ||
| • getrlimit | ||
| • getrusage | ||
| • setpriority | ||
| • setrlimit |
Next: getrlimit, Up: Functions in <sys/resource.h> [Contents][Index]
getpriorityPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpriority.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getrusage, Previous: getpriority, Up: Functions in <sys/resource.h> [Contents][Index]
getrlimitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getrlimit.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getrlimit-1.html
Gnulib module: —
Portability problems fixed by Gnulib:
rlim_t is a 32-bit type, this function does not
allow to retrieve limits larger than 4 GiB and larger,
such as for RLIMIT_FSIZE. See Large File Support.
Portability problems not fixed by Gnulib:
Next: setpriority, Previous: getrlimit, Up: Functions in <sys/resource.h> [Contents][Index]
getrusagePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getrusage.html
Gnulib module: getrusage
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
struct rusage with
meaningful values.
Next: setrlimit, Previous: getrusage, Up: Functions in <sys/resource.h> [Contents][Index]
setpriorityPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setpriority.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: setpriority, Up: Functions in <sys/resource.h> [Contents][Index]
setrlimitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setrlimit.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getrlimit-1.html
Gnulib module: —
Portability problems fixed by Gnulib:
rlim_t is a 32-bit type, this function does not
allow to set limits 4 GiB and larger, such as for RLIMIT_FSIZE.
See Large File Support.
Portability problems not fixed by Gnulib:
Next: Functions in <sys/sem.h>, Previous: Functions in <sys/resource.h>, Up: Function Substitutes [Contents][Index]
<sys/select.h>| • FD_CLR | ||
| • FD_ISSET | ||
| • FD_SET | ||
| • FD_ZERO | ||
| • pselect | ||
| • select |
Next: FD_ISSET, Up: Functions in <sys/select.h> [Contents][Index]
FD_CLRPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/FD_CLR.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: FD_SET, Previous: FD_CLR, Up: Functions in <sys/select.h> [Contents][Index]
FD_ISSETPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/FD_ISSET.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: FD_ZERO, Previous: FD_ISSET, Up: Functions in <sys/select.h> [Contents][Index]
FD_SETPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/FD_SET.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pselect, Previous: FD_SET, Up: Functions in <sys/select.h> [Contents][Index]
FD_ZEROPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/FD_ZERO.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: select, Previous: FD_ZERO, Up: Functions in <sys/select.h> [Contents][Index]
pselectPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pselect.html
Gnulib module: pselect
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
_ALL_SOURCE is defined).
Previous: pselect, Up: Functions in <sys/select.h> [Contents][Index]
selectPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/select.html
Gnulib module: select
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/select.h>
on some platforms:
mingw, MSVC 14.
select can only be
called on descriptors created by the socket function, not on regular
file descriptors.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
select with a timeout, some implementations modify the
timeout parameter so that upon return from the function, it contains the
amount of time not slept. Other implementations leave the timeout parameter
unmodified.
select replacement might
return 0 even before the timeout has passed. Programs using it with pipes can
thus busy wait.
select
may fail, setting errno to EBADF.
FD_SETSIZE
but FD_SETSIZE / 2.
Next: Functions in <sys/shm.h>, Previous: Functions in <sys/select.h>, Up: Function Substitutes [Contents][Index]
<sys/sem.h>| • semctl | ||
| • semget | ||
| • semop |
Next: semget, Up: Functions in <sys/sem.h> [Contents][Index]
semctlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/semctl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: semop, Previous: semctl, Up: Functions in <sys/sem.h> [Contents][Index]
semgetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/semget.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: semget, Up: Functions in <sys/sem.h> [Contents][Index]
semopPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/semop.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <sys/socket.h>, Previous: Functions in <sys/sem.h>, Up: Function Substitutes [Contents][Index]
<sys/shm.h>| • shmat | ||
| • shmctl | ||
| • shmdt | ||
| • shmget |
Next: shmctl, Up: Functions in <sys/shm.h> [Contents][Index]
shmatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/shmat.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
SHM_REMAP is needed in order to force shmat
to replace existing memory mappings in the specify address range. On other
platforms, it is not needed.
Next: shmdt, Previous: shmat, Up: Functions in <sys/shm.h> [Contents][Index]
shmctlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/shmctl.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: shmget, Previous: shmctl, Up: Functions in <sys/shm.h> [Contents][Index]
shmdtPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/shmdt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: shmdt, Up: Functions in <sys/shm.h> [Contents][Index]
shmgetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/shmget.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
shmget requires superuser privileges.
Next: Functions in <sys/stat.h>, Previous: Functions in <sys/shm.h>, Up: Function Substitutes [Contents][Index]
<sys/socket.h>| • accept | ||
| • accept4 | ||
| • bind | ||
| • connect | ||
| • getpeername | ||
| • getsockname | ||
| • getsockopt | ||
| • listen | ||
| • recv | ||
| • recvfrom | ||
| • recvmsg | ||
| • send | ||
| • sendmsg | ||
| • sendto | ||
| • setsockopt | ||
| • shutdown | ||
| • sockatmark | ||
| • socket | ||
| • socketpair |
Next: accept4, Up: Functions in <sys/socket.h> [Contents][Index]
acceptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/accept.html
Gnulib module: accept
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
accept function cannot be used in calls to read,
write, and close; you have to use recv, send,
closesocket in these cases instead.
errno, and WSAGetLastError must be used
instead.
_HPUX_ALT_XOPEN_SOCKET_API
is not defined, this function behaves incorrectly because it is declared
to take a pointer to a 64-bit wide socklen_t entity but in fact
considers it as a pointer to a 32-bit wide unsigned int entity.
Portability problems not fixed by Gnulib:
socklen_t type; in this case this function’s
third argument type is ‘int *’.
Next: bind, Previous: accept, Up: Functions in <sys/socket.h> [Contents][Index]
accept4POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/accept4.html
Documentation:
man accept4
Gnulib module: accept4
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: connect, Previous: accept4, Up: Functions in <sys/socket.h> [Contents][Index]
bindPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/bind.html
Gnulib module: bind
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Next: getpeername, Previous: bind, Up: Functions in <sys/socket.h> [Contents][Index]
connectPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/connect.html
Gnulib module: connect
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Next: getsockname, Previous: connect, Up: Functions in <sys/socket.h> [Contents][Index]
getpeernamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpeername.html
Gnulib module: getpeername
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
_HPUX_ALT_XOPEN_SOCKET_API
is not defined, this function behaves incorrectly because it is declared
to take a pointer to a 64-bit wide socklen_t entity but in fact
considers it as a pointer to a 32-bit wide unsigned int entity.
Portability problems not fixed by Gnulib:
socklen_t type; in this case this function’s
third argument type is ‘int *’.
Next: getsockopt, Previous: getpeername, Up: Functions in <sys/socket.h> [Contents][Index]
getsocknamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getsockname.html
Gnulib module: getsockname
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
_HPUX_ALT_XOPEN_SOCKET_API
is not defined, this function behaves incorrectly because it is declared
to take a pointer to a 64-bit wide socklen_t entity but in fact
considers it as a pointer to a 32-bit wide unsigned int entity.
Portability problems not fixed by Gnulib:
socklen_t type; in this case this function’s
third argument type is ‘int *’.
Next: listen, Previous: getsockname, Up: Functions in <sys/socket.h> [Contents][Index]
getsockoptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getsockopt.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getsockopt-1.html
Gnulib module: getsockopt
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
_HPUX_ALT_XOPEN_SOCKET_API
is not defined, this function behaves incorrectly because it is declared
to take a pointer to a 64-bit wide socklen_t entity but in fact
considers it as a pointer to a 32-bit wide unsigned int entity.
Portability problems not fixed by Gnulib:
socklen_t type; in this case this function’s
fifth argument type is ‘int *’.
Next: recv, Previous: getsockopt, Up: Functions in <sys/socket.h> [Contents][Index]
listenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/listen.html
Gnulib module: listen
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Next: recvfrom, Previous: listen, Up: Functions in <sys/socket.h> [Contents][Index]
recvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/recv.html
Gnulib module: recv
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Next: recvmsg, Previous: recv, Up: Functions in <sys/socket.h> [Contents][Index]
recvfromPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/recvfrom.html
Gnulib module: recvfrom
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
_HPUX_ALT_XOPEN_SOCKET_API
is not defined, this function behaves incorrectly because it is declared
to take a pointer to a 64-bit wide socklen_t entity but in fact
considers it as a pointer to a 32-bit wide unsigned int entity.
Portability problems not fixed by Gnulib:
socklen_t type; in this case this function’s
sixth argument type is ‘int *’.
Next: send, Previous: recvfrom, Up: Functions in <sys/socket.h> [Contents][Index]
recvmsgPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/recvmsg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sendmsg, Previous: recvmsg, Up: Functions in <sys/socket.h> [Contents][Index]
sendPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/send.html
Gnulib module: send
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Next: sendto, Previous: send, Up: Functions in <sys/socket.h> [Contents][Index]
sendmsgPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sendmsg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setsockopt, Previous: sendmsg, Up: Functions in <sys/socket.h> [Contents][Index]
sendtoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sendto.html
Gnulib module: sendto
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Next: shutdown, Previous: sendto, Up: Functions in <sys/socket.h> [Contents][Index]
setsockoptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setsockopt.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-setsockopt-2.html
Gnulib module: setsockopt
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Next: sockatmark, Previous: setsockopt, Up: Functions in <sys/socket.h> [Contents][Index]
shutdownPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/shutdown.html
Gnulib module: shutdown
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Next: socket, Previous: shutdown, Up: Functions in <sys/socket.h> [Contents][Index]
sockatmarkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sockatmark.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: socketpair, Previous: sockatmark, Up: Functions in <sys/socket.h> [Contents][Index]
socketPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/socket.html
Gnulib module: socket
Portability problems fixed by Gnulib:
<winsock2.h>
instead of <sys/socket.h>
on some platforms:
mingw, MSVC 14.
socket function cannot be used in calls to read,
write, and close; you have to use recv, send,
closesocket in these cases instead.
errno, and WSAGetLastError must be used
instead.
Portability problems not fixed by Gnulib:
Previous: socket, Up: Functions in <sys/socket.h> [Contents][Index]
socketpairPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/socketpair.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <sys/statvfs.h>, Previous: Functions in <sys/socket.h>, Up: Function Substitutes [Contents][Index]
<sys/stat.h>| • chmod | ||
| • fchmod | ||
| • fchmodat | ||
| • fstat | ||
| • fstatat | ||
| • futimens | ||
| • lstat | ||
| • mkdir | ||
| • mkdirat | ||
| • mkfifo | ||
| • mkfifoat | ||
| • mknod | ||
| • mknodat | ||
| • stat | ||
| • umask | ||
| • utimensat |
Next: fchmod, Up: Functions in <sys/stat.h> [Contents][Index]
chmodPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/chmod.html
Gnulib module: chmod
Portability problems fixed by Gnulib:
EINVAL instead of ENOTDIR)
when the file name argument ends in a slash and (without the slash) names
a non-directory, on some platforms:
mingw, MSVC.
Portability problems not fixed by Gnulib:
EACCES when the failure is
due to lack of appropriate privileges (EPERM), not to
search permission denied on the file name prefix (EACCES):
Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system
(see https://bugs.gnu.org/65599).
Next: fchmodat, Previous: chmod, Up: Functions in <sys/stat.h> [Contents][Index]
fchmodPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fchmod.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
EACCES when the failure is
due to lack of appropriate privileges (EPERM), not to
search permission denied on the file name prefix (EACCES):
Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system
(see https://bugs.gnu.org/65599).
Next: fstat, Previous: fchmod, Up: Functions in <sys/stat.h> [Contents][Index]
fchmodatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fchmodat.html
Gnulib module: fchmodat
Portability problems fixed by Gnulib:
AT_SYMLINK_NOFOLLOW flag,
this function fails with errno set to ENOTSUP,
even when the file is not a symbolic link:
GNU/Linux with glibc 2.31, Cygwin 2.9.
Portability problems not fixed by Gnulib:
AT_SYMLINK_NOFOLLOW flag is specified,
this function can fail with errno set to EMFILE or ENFILE,
and it fails with errno set to EOPNOTSUPP if the
/proc file system is not mounted:
GNU/Linux with glibc 2.34.
EACCES when the failure is
due to lack of appropriate privileges (EPERM), not to
search permission denied on the file name prefix (EACCES):
Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system
(see https://bugs.gnu.org/65599).
Next: fstatat, Previous: fchmodat, Up: Functions in <sys/stat.h> [Contents][Index]
fstatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fstat.html
Gnulib module: fstat
Portability problems fixed by Gnulib:
off_t is a 32-bit type, fstat may not correctly
report the size of files or block devices 2 GiB and larger..
See Large File Support.
tv_sec value, tv_nsec might be in the range
-999999999..-1, representing a negative nanoseconds
offset from tv_sec. Solaris 11.4 is similar, except that
tv_sec might also be -1000000000.
st_atime, st_ctime, st_mtime fields are affected by
the current time zone and by the DST flag of the current time zone on some
platforms:
mingw, MSVC 14 (when the environment variable TZ is set).
Portability problems not fixed by Gnulib:
struct stat.
O_PATH:
Linux kernel 3.5.
fstat applied to the file descriptors 0 and 1, returns
different st_ino values, even if standard input and standard output
are not redirected and refer to the same terminal.
Next: futimens, Previous: fstat, Up: Functions in <sys/stat.h> [Contents][Index]
fstatatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fstatat.html
Gnulib module: fstatat
Portability problems fixed by Gnulib:
off_t is a 32-bit type, fstatat may
not correctly report the size of files or block devices larger than 2
GB. See Large File Support.
fstatat(fd,"file/",buf,flag) succeeds instead of
failing with ENOTDIR.
Solaris 9.
tv_sec value, tv_nsec might be in the range
-999999999..-1, representing a negative nanoseconds
offset from tv_sec. Solaris 11.4 is similar, except that
tv_sec might also be -1000000000.
Portability problems not fixed by Gnulib:
AT_EMPTY_PATH is not used:
glibc 2.7, Linux 2.6.38.
st_ino only to the low-order 32 bits of
the inode number of a socket or pipe, which thus can disagree
with the st_ino obtained by fstat:
macOS 14.
struct stat.
Next: lstat, Previous: fstatat, Up: Functions in <sys/stat.h> [Contents][Index]
futimensPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/futimens.html
Gnulib module: futimens
Portability problems fixed by Gnulib:
ENOSYS on some platforms:
Linux kernel 2.6.21.
UTIME_OMIT or UTIME_NOW, some systems require
the tv_sec argument to be 0, and don’t necessarily handle all
file permissions in the manner required by POSIX:
Linux kernel 2.6.25.
UTIME_OMIT for the modification time, but specifying
an access time, some systems fail to update the change time:
Linux kernel 2.6.32, macOS 14, NetBSD 10.0, Solaris 11.1.
AT_FDCWD as the fd argument does not properly fail with
EBADF on some systems:
glibc 2.11, musl libc, Solaris 11.
tv_nsec do not lead to a failure on some
platforms:
NetBSD 10.0,
GNU/Hurd with glibc 2.41.
Portability problems not fixed by Gnulib:
noatime attribute,
this function might not modify the access time as requested:
Linux kernel 6.9.
ENOSYS;
the gnulib module ‘utimens’ provides a more reliable interface
fdutimens.
stat modifies the access time of
directories on some platforms, so utimensat can only
effectively change directory modification time:
Cygwin 1.5.x.
Next: mkdir, Previous: futimens, Up: Functions in <sys/stat.h> [Contents][Index]
lstatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lstat.html
Gnulib module: lstat
Portability problems fixed by Gnulib:
off_t is a 32-bit type, lstat may not
correctly report the size of files or block devices 2 GiB and larger.
See Large File Support.
lstat("file/",buf) succeeds instead of
failing with ENOTDIR.
macOS 14, Solaris 9.
tv_sec value, tv_nsec might be in the range
-999999999..-1, representing a negative nanoseconds
offset from tv_sec. Solaris 11.4 is similar, except that
tv_sec might also be -1000000000.
"NUL" instead of "/dev/null".
lstat does not exist.
Portability problems not fixed by Gnulib:
struct stat.
Next: mkdirat, Previous: lstat, Up: Functions in <sys/stat.h> [Contents][Index]
mkdirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mkdir.html
Gnulib module: sys_stat-h or mkdir
Portability problems fixed by either Gnulib module sys_stat-h or mkdir:
<io.h> or
<direct.h>) on some platforms:
mingw, MSVC 14.
_mkdir
and takes only one argument. The fix (without Gnulib) is to define a macro
like this:
#define mkdir ((int (*)()) _mkdir)
or
#define mkdir(path,mode) _mkdir (path)
Portability problems fixed by Gnulib module mkdir:
Portability problems not fixed by Gnulib:
Next: mkfifo, Previous: mkdir, Up: Functions in <sys/stat.h> [Contents][Index]
mkdiratPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mkdirat.html
Gnulib module: mkdirat
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mkfifoat, Previous: mkdirat, Up: Functions in <sys/stat.h> [Contents][Index]
mkfifoPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mkfifo.html
Gnulib module: mkfifo
Portability problems fixed by Gnulib:
ENOSYS:
mingw, MSVC 14, Android 4.4.
Portability problems not fixed by Gnulib:
EISDIR instead of the correct EEXIST:
HP-UX 11.11.
Next: mknod, Previous: mkfifo, Up: Functions in <sys/stat.h> [Contents][Index]
mkfifoatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mkfifoat.html
Gnulib module: mkfifoat
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on
some platforms: mingw, MSVC 14.
EISDIR instead of the correct
EEXIST: HP-UX 11.11.
Next: mknodat, Previous: mkfifoat, Up: Functions in <sys/stat.h> [Contents][Index]
mknodPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mknod.html
Gnulib module: mknod
Portability problems fixed by Gnulib:
S_IFIFO flag on some platforms:
macOS 14, DragonFly 6.0,
Haiku.
ENOSYS:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
EISDIR instead of the correct EEXIST:
HP-UX 11.11.
Next: stat, Previous: mknod, Up: Functions in <sys/stat.h> [Contents][Index]
mknodatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mknodat.html
Gnulib module: mkfifoat
Portability problems fixed by Gnulib:
S_IFIFO flag on some platforms:
Haiku.
Portability problems not fixed by Gnulib:
ENOSYS on
some platforms:
mingw, MSVC 14.
EISDIR instead of the correct
EEXIST: HP-UX 11.11.
Next: umask, Previous: mknodat, Up: Functions in <sys/stat.h> [Contents][Index]
statPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/stat.html
Gnulib module: stat
Portability problems fixed by Gnulib:
off_t is a 32-bit type, stat may not correctly
report the size of files or block devices 2 GiB and larger.
See Large File Support.
st_atime, st_ctime, st_mtime fields are affected by
the current time zone and by the DST flag of the current time zone on some
platforms:
mingw, MSVC 14 (when the environment variable TZ is set).
ENOENT
on files such as ‘C:\pagefile.sys’ and
on directories such as ‘C:\System Volume Information’.
stat("link-to-file/",buf) succeeds instead
of failing with ENOTDIR.
macOS 14, FreeBSD 7.2, AIX 7.1, Solaris 9, mingw64.
stat(".",buf) and stat("./",buf) give
different results:
mingw, MSVC 14.
st_mode field of stat("NUL",buf) is bogus,
suggesting that NUL is a regular file.
tv_sec value, tv_nsec might be in the range
-999999999..-1, representing a negative nanoseconds
offset from tv_sec. Solaris 11.4 is similar, except that
tv_sec might also be -1000000000.
"NUL" instead of "/dev/null".
Portability problems not fixed by Gnulib:
struct stat.
stat function sometimes sets errno to EACCES when
ENOENT would be more appropriate.
st_ino only to the low-order 32 bits of
the inode number of a socket or pipe, which thus can disagree
with the st_ino obtained by fstat:
macOS 14.
struct stat, it is not possible to
portably replace stat via an object-like macro. Therefore,
expressions such as (islnk ? lstat : stat) (name, buf) are not
portable, and should instead be written islnk ? lstat (name,
buf) : stat (name, buf).
Next: utimensat, Previous: stat, Up: Functions in <sys/stat.h> [Contents][Index]
umaskPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/umask.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: umask, Up: Functions in <sys/stat.h> [Contents][Index]
utimensatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/utimensat.html
Gnulib module: utimensat
Portability problems fixed by Gnulib:
ENOSYS on some platforms:
Linux kernel 2.6.21.
ENOSYS if passed the flag
AT_SYMLINK_NOFOLLOW on a regular file:
Linux kernel 2.6.22.
UTIME_OMIT or UTIME_NOW, some systems require
the tv_sec argument to be 0, and don’t necessarily handle all
file permissions in the manner required by POSIX:
Linux kernel 2.6.25.
UTIME_OMIT for the modification time, but specifying
an access time, some systems fail to update the change time:
Linux kernel 2.6.32, macOS 14, NetBSD 10.0, Solaris 11.1.
tv_nsec do not lead to a failure on some
platforms:
Linux kernel 2.6.22.19 on hppa, NetBSD 10.0,
GNU/Hurd with glibc 2.41.
Portability problems not fixed by Gnulib:
noatime attribute,
this function might not modify the access time as requested:
Linux kernel 6.9.
AT_SYMLINK_NOFOLLOW:
Linux kernel 6.8 on a CIFS file system.
ENOSYS if passed the flag
AT_SYMLINK_NOFOLLOW on a symlink.
lstat modifies the access time of
symlinks on some platforms, so utimensat with
AT_SYMLINK_NOFOLLOW can only effectively change modification time:
Cygwin.
stat modifies the access time of
directories on some platforms, so utimensat can only
effectively change directory modification time:
Cygwin 1.5.x.
The gnulib module fdutimensat provides a similar interface.
Next: Functions in <sys/time.h>, Previous: Functions in <sys/stat.h>, Up: Function Substitutes [Contents][Index]
<sys/statvfs.h>| • fstatvfs | ||
| • statvfs |
Next: statvfs, Up: Functions in <sys/statvfs.h> [Contents][Index]
fstatvfsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fstatvfs.html
Gnulib module: —
Portability problems fixed by Gnulib:
f_blocks in ‘struct statvfs’ is a 32-bit
value, this function may not work correctly on files systems larger than
4 TiB. See Large File Support. This affects
glibc/Hurd, HP-UX 11, Solaris.
Portability problems not fixed by Gnulib:
O_PATH:
Linux kernel 3.11.
Previous: fstatvfs, Up: Functions in <sys/statvfs.h> [Contents][Index]
statvfsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/statvfs.html
Gnulib module: —
Portability problems fixed by Gnulib:
f_blocks in ‘struct statvfs’ is a 32-bit
value, this function may not work correctly on files systems larger than
4 TiB. See Large File Support. This affects
glibc/Hurd, HP-UX 11, Solaris.
Portability problems not fixed by Gnulib:
Gnulib provides a module fsusage that provides similar information
as statvfs.
Next: Functions in <sys/times.h>, Previous: Functions in <sys/statvfs.h>, Up: Function Substitutes [Contents][Index]
<sys/time.h>| • utimes |
utimesPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/utimes.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
utimensat(AT_FDCWD,file,times,0),
or the gnulib module utimens,
instead.
noatime attribute,
this function might not modify the access time as requested:
Linux kernel 6.9.
utimes (file, NULL) fails to set the
file’s timestamp to the current time:
glibc 2.3.3.
utimes failed on read-only files when
utime worked fine.
glibc 2.2.5.
Extension: Gnulib provides a module ‘utimens’ that works around these problems and can set the time with nanosecond resolution (as far as supported by the file system).
Next: Functions in <sys/uio.h>, Previous: Functions in <sys/time.h>, Up: Function Substitutes [Contents][Index]
<sys/times.h>| • times |
timesPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/times.html
Gnulib module: times
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
tms_cutime and tms_cstime will always be
0 when the module is used.
Next: Functions in <sys/utsname.h>, Previous: Functions in <sys/times.h>, Up: Function Substitutes [Contents][Index]
<sys/uio.h>| • readv | ||
| • writev |
Next: writev, Up: Functions in <sys/uio.h> [Contents][Index]
readvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/readv.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: readv, Up: Functions in <sys/uio.h> [Contents][Index]
writevPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/writev.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <sys/wait.h>, Previous: Functions in <sys/uio.h>, Up: Function Substitutes [Contents][Index]
<sys/utsname.h>| • uname |
unamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/uname.html
Gnulib module: uname
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <syslog.h>, Previous: Functions in <sys/utsname.h>, Up: Function Substitutes [Contents][Index]
<sys/wait.h>| • wait | ||
| • waitid | ||
| • waitpid |
Next: waitid, Up: Functions in <sys/wait.h> [Contents][Index]
waitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wait.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: waitpid, Previous: wait, Up: Functions in <sys/wait.h> [Contents][Index]
waitidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/waitid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
waitid with flag WNOWAIT
works correctly.
Previous: waitid, Up: Functions in <sys/wait.h> [Contents][Index]
waitpidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/waitpid.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-waitpid-3.html
Gnulib module: waitpid
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <termios.h>, Previous: Functions in <sys/wait.h>, Up: Function Substitutes [Contents][Index]
<syslog.h>| • closelog | ||
| • openlog | ||
| • setlogmask | ||
| • syslog |
Next: openlog, Up: Functions in <syslog.h> [Contents][Index]
closelogPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/closelog.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setlogmask, Previous: closelog, Up: Functions in <syslog.h> [Contents][Index]
openlogPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/openlog.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: syslog, Previous: openlog, Up: Functions in <syslog.h> [Contents][Index]
setlogmaskPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setlogmask.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: setlogmask, Up: Functions in <syslog.h> [Contents][Index]
syslogPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/syslog.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <threads.h>, Previous: Functions in <syslog.h>, Up: Function Substitutes [Contents][Index]
<termios.h>| • cfgetispeed | ||
| • cfgetospeed | ||
| • cfsetispeed | ||
| • cfsetospeed | ||
| • tcdrain | ||
| • tcflow | ||
| • tcflush | ||
| • tcgetattr | ||
| • tcgetsid | ||
| • tcgetwinsize | ||
| • tcsendbreak | ||
| • tcsetattr | ||
| • tcsetwinsize |
Next: cfgetospeed, Up: Functions in <termios.h> [Contents][Index]
cfgetispeedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cfgetispeed.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cfsetispeed, Previous: cfgetispeed, Up: Functions in <termios.h> [Contents][Index]
cfgetospeedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cfgetospeed.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cfsetospeed, Previous: cfgetospeed, Up: Functions in <termios.h> [Contents][Index]
cfsetispeedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cfsetispeed.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcdrain, Previous: cfsetispeed, Up: Functions in <termios.h> [Contents][Index]
cfsetospeedPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cfsetospeed.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcflow, Previous: cfsetospeed, Up: Functions in <termios.h> [Contents][Index]
tcdrainPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcdrain.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
tcdrain on a non-tty fails with errno set to
EINVAL or, on Mac OS X, also EOPNOTSUPP or ENODEV, rather
than ENOTTY.
Next: tcflush, Previous: tcdrain, Up: Functions in <termios.h> [Contents][Index]
tcflowPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcflow.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcgetattr, Previous: tcflow, Up: Functions in <termios.h> [Contents][Index]
tcflushPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcflush.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
tcflush of TCIFLUSH on a non-tty fails with
errno set to EINVAL rather than ENOTTY.
tcflush of TCOFLUSH on a non-tty fails with
errno set to EINVAL or, on Mac OS X,
also EOPNOTSUPP or ENODEV, rather than ENOTTY.
Next: tcgetsid, Previous: tcflush, Up: Functions in <termios.h> [Contents][Index]
tcgetattrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcgetattr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcgetwinsize, Previous: tcgetattr, Up: Functions in <termios.h> [Contents][Index]
tcgetsidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcgetsid.html
Gnulib module: tcgetsid
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcsendbreak, Previous: tcgetsid, Up: Functions in <termios.h> [Contents][Index]
tcgetwinsizePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcgetwinsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcsetattr, Previous: tcgetwinsize, Up: Functions in <termios.h> [Contents][Index]
tcsendbreakPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcsendbreak.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcsetwinsize, Previous: tcsendbreak, Up: Functions in <termios.h> [Contents][Index]
tcsetattrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcsetattr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: tcsetattr, Up: Functions in <termios.h> [Contents][Index]
tcsetwinsizePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcsetwinsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <time.h>, Previous: Functions in <termios.h>, Up: Function Substitutes [Contents][Index]
<threads.h>| • call_once | ||
| • cnd_broadcast | ||
| • cnd_destroy | ||
| • cnd_init | ||
| • cnd_signal | ||
| • cnd_timedwait | ||
| • cnd_wait | ||
| • mtx_destroy | ||
| • mtx_init | ||
| • mtx_lock | ||
| • mtx_timedlock | ||
| • mtx_trylock | ||
| • mtx_unlock | ||
| • thrd_create | ||
| • thrd_current | ||
| • thrd_detach | ||
| • thrd_equal | ||
| • thrd_exit | ||
| • thrd_join | ||
| • thrd_sleep | ||
| • thrd_yield | ||
| • tss_create | ||
| • tss_delete | ||
| • tss_get | ||
| • tss_set |
Next: cnd_broadcast, Up: Functions in <threads.h> [Contents][Index]
call_onceISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.2.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/call_once.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Call-Once.html.
Gnulib module: call_once
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cnd_destroy, Previous: call_once, Up: Functions in <threads.h> [Contents][Index]
cnd_broadcastISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.3.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_broadcast.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.html.
Gnulib module: cnd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cnd_init, Previous: cnd_broadcast, Up: Functions in <threads.h> [Contents][Index]
cnd_destroyISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.3.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_destroy.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.html.
Gnulib module: cnd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cnd_signal, Previous: cnd_destroy, Up: Functions in <threads.h> [Contents][Index]
cnd_initISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.3.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_init.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.html.
Gnulib module: cnd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cnd_timedwait, Previous: cnd_init, Up: Functions in <threads.h> [Contents][Index]
cnd_signalISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.3.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_signal.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.html.
Gnulib module: cnd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cnd_wait, Previous: cnd_signal, Up: Functions in <threads.h> [Contents][Index]
cnd_timedwaitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.3.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_timedwait.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.html.
Gnulib module: cnd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mtx_destroy, Previous: cnd_timedwait, Up: Functions in <threads.h> [Contents][Index]
cnd_waitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.3.6.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_wait.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.html.
Gnulib module: cnd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mtx_init, Previous: cnd_wait, Up: Functions in <threads.h> [Contents][Index]
mtx_destroyISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.4.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_destroy.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.
Gnulib module: mtx
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mtx_lock, Previous: mtx_destroy, Up: Functions in <threads.h> [Contents][Index]
mtx_initISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.4.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_init.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.
Gnulib module: mtx
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mtx_timedlock, Previous: mtx_init, Up: Functions in <threads.h> [Contents][Index]
mtx_lockISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.4.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_lock.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.
Gnulib module: mtx
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mtx_trylock, Previous: mtx_lock, Up: Functions in <threads.h> [Contents][Index]
mtx_timedlockISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.4.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_timedlock.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.
Gnulib module: mtx
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mtx_unlock, Previous: mtx_timedlock, Up: Functions in <threads.h> [Contents][Index]
mtx_trylockISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.4.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_trylock.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.
Gnulib module: mtx
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: thrd_create, Previous: mtx_trylock, Up: Functions in <threads.h> [Contents][Index]
mtx_unlockISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.4.6.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_unlock.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.
Gnulib module: mtx
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: thrd_current, Previous: mtx_unlock, Up: Functions in <threads.h> [Contents][Index]
thrd_createISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.5.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_create.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.html.
Gnulib module: thrd
Portability problems fixed by Gnulib:
thrd_start_t on some platforms:
AIX 7.2.
Portability problems not fixed by Gnulib:
Next: thrd_detach, Previous: thrd_create, Up: Functions in <threads.h> [Contents][Index]
thrd_currentISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.5.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_current.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.html.
Gnulib module: thrd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: thrd_equal, Previous: thrd_current, Up: Functions in <threads.h> [Contents][Index]
thrd_detachISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.5.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_detach.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.html.
Gnulib module: thrd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: thrd_exit, Previous: thrd_detach, Up: Functions in <threads.h> [Contents][Index]
thrd_equalISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.5.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_equal.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.html.
Gnulib module: thrd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: thrd_join, Previous: thrd_equal, Up: Functions in <threads.h> [Contents][Index]
thrd_exitISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.5.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_exit.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.html.
Gnulib module: thrd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: thrd_sleep, Previous: thrd_exit, Up: Functions in <threads.h> [Contents][Index]
thrd_joinISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.5.6.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_join.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.html.
Gnulib module: thrd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: thrd_yield, Previous: thrd_join, Up: Functions in <threads.h> [Contents][Index]
thrd_sleepISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.5.7.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_sleep.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.html.
Gnulib module: thrd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tss_create, Previous: thrd_sleep, Up: Functions in <threads.h> [Contents][Index]
thrd_yieldISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.5.8.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_yield.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.html.
Gnulib module: thrd
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tss_delete, Previous: thrd_yield, Up: Functions in <threads.h> [Contents][Index]
tss_createISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.6.1.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tss_create.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread_002dlocal-Storage.html.
Gnulib module: tss
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tss_get, Previous: tss_create, Up: Functions in <threads.h> [Contents][Index]
tss_deleteISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.6.2.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tss_delete.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread_002dlocal-Storage.html.
Gnulib module: tss
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tss_set, Previous: tss_delete, Up: Functions in <threads.h> [Contents][Index]
tss_getISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.6.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tss_get.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread_002dlocal-Storage.html.
Gnulib module: tss
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: tss_get, Up: Functions in <threads.h> [Contents][Index]
tss_setISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.28.6.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tss_set.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread_002dlocal-Storage.html.
Gnulib module: tss
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <uchar.h>, Previous: Functions in <threads.h>, Up: Function Substitutes [Contents][Index]
<time.h>| • asctime | ||
| • asctime_r | ||
| • clock | ||
| • clock_getcpuclockid | ||
| • clock_getres | ||
| • clock_gettime | ||
| • clock_nanosleep | ||
| • clock_settime | ||
| • ctime | ||
| • ctime_r | ||
| • daylight | ||
| • difftime | ||
| • getdate | ||
| • getdate_err | ||
| • gmtime | ||
| • gmtime_r | ||
| • localtime | ||
| • localtime_r | ||
| • mktime | ||
| • nanosleep | ||
| • strftime | ||
| • strftime_l | ||
| • strptime | ||
| • time | ||
| • timegm | ||
| • timer_create | ||
| • timer_delete | ||
| • timer_getoverrun | ||
| • timer_gettime | ||
| • timer_settime | ||
| • timespec_get | ||
| • timespec_getres | ||
| • timezone | ||
| • tzname | ||
| • tzset |
Next: asctime_r, Up: Functions in <time.h> [Contents][Index]
asctimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asctime.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
strftime (or even sprintf) instead.
However, strftime is locale dependent.
localtime return, this is typically a mistake.
On most current platforms, these functions return a null pointer for
timestamps out of range, and this function has undefined behavior in
that case.
Next: clock, Previous: asctime, Up: Functions in <time.h> [Contents][Index]
asctime_rRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/asctime_r.html
Gnulib module: extensions
Portability problems fixed by Gnulib:
_POSIX_PTHREAD_SEMANTICS is not defined).
Portability problems not fixed by Gnulib:
strftime (or even sprintf) instead.
However, strftime is locale dependent.
localtime return, this is typically a mistake.
On most current platforms, these functions return a null pointer for
timestamps out of range, and this function has undefined behavior in
that case.
Next: clock_getcpuclockid, Previous: asctime_r, Up: Functions in <time.h> [Contents][Index]
clockPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clock.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clock_getres, Previous: clock, Up: Functions in <time.h> [Contents][Index]
clock_getcpuclockidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clock_getcpuclockid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clock_gettime, Previous: clock_getcpuclockid, Up: Functions in <time.h> [Contents][Index]
clock_getresPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clock_getres.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
clock_gettime, i.e., the minimum distance between
differing timestamps. For example, on AIX 7.2 it returns 10
milliseconds even though the clock resolution is 1 microsecond.
Conversely, on GNU/Linux it typically returns 1 nanosecond even
though the clock resolution may be greater.
The Gnulib module gettime-res is a partial substitute; it implements
the CLOCK_REALTIME functionality of clock_getres,
and fixes the too-high resolution bug of platforms like AIX 7.2.
Next: clock_nanosleep, Previous: clock_getres, Up: Functions in <time.h> [Contents][Index]
clock_gettimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clock_gettime.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
tv_sec field of the result
uninitialized on some platforms:
mingw in 32-bit mode.
The Gnulib modules gettime and timespec_get are partial
substitutes; they implement the CLOCK_REALTIME functionality of
clock_gettime.
Next: clock_settime, Previous: clock_gettime, Up: Functions in <time.h> [Contents][Index]
clock_nanosleepPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clock_nanosleep.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctime, Previous: clock_nanosleep, Up: Functions in <time.h> [Contents][Index]
clock_settimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/clock_settime.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ctime_r, Previous: clock_settime, Up: Functions in <time.h> [Contents][Index]
ctimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctime.html
Gnulib module: ctime
Portability problems fixed by Gnulib:
TZ has been set by Cygwin.
Portability problems not fixed by Gnulib:
localtime_r and strftime
(or even sprintf) instead.
However, localtime_r can fail and strftime is locale dependent.
INT_MIN+1900 or after the
year INT_MAX+1900.
ctime function need not be reentrant, and consequently is
not required to be thread safe. Implementations of ctime
typically write the timestamp into static buffer. If two threads
call ctime at roughly the same time, you might end up with the
wrong date in one of the threads, or some undefined string.
Although ctime and related functions asctime, asctime_r
and ctime_r formerly were plausible to use,
they are now unsafe in general, and should be avoided.
Decades ago when time_t was narrow
and there was no strftime or internationalization,
code could call these functions and then select the parts needed.
For example, in Unix 7th Edition /usr/src/cmd/ls.c (1979):
cp = ctime(&p->lmtime);
if(p->lmtime < year)
printf(" %-7.7s %-4.4s ", cp+4, cp+20); else
printf(" %-12.12s ", cp+4);
This had well-defined behavior when time_t was only 32 bits
and so was OK for circa 1979 platforms.
However, today’s platforms have a time_t so wide
that the year might not be in the range [1000, 9999].
In this case the behavior of ctime is undefined
and some platforms behave badly, overrunning a buffer
or dereferencing an internal null pointer;
and even on platforms where no undefined behavior occurs,
the 7th Edition code generates wrong output for out-of-range years,
because it incorrectly assumes that every year is represented by
exactly four digits.
Next: daylight, Previous: ctime, Up: Functions in <time.h> [Contents][Index]
ctime_rRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ctime_r.html
Gnulib module: extensions
Portability problems fixed by Gnulib:
_POSIX_PTHREAD_SEMANTICS is not defined).
Portability problems not fixed by Gnulib:
localtime_r and strftime
(or even sprintf) instead.
However, localtime_r can fail and strftime is locale dependent.
INT_MIN+1900 or after the
year INT_MAX+1900.
Next: difftime, Previous: ctime_r, Up: Functions in <time.h> [Contents][Index]
daylightPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/daylight.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
TZ setting like TZ="America/Los_Angeles".
_daylight on some platforms:
mingw with -DNO_OLDNAMES, MSVC.
This variable is vestigial: it is not needed and does not suffice in general.
It is planned to be removed from a future version of POSIX.
A more portable way of getting the UTC offset is to use
strftime with the %z format. See strftime.
Next: getdate, Previous: daylight, Up: Functions in <time.h> [Contents][Index]
difftimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/difftime.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getdate_err, Previous: difftime, Up: Functions in <time.h> [Contents][Index]
getdatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getdate.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Gnulib provides a module parse-datetime that contains a function
parse_datetime
that has similar functionality as the getdate function.
Next: gmtime, Previous: getdate, Up: Functions in <time.h> [Contents][Index]
getdate_errPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getdate_err.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gmtime_r, Previous: getdate_err, Up: Functions in <time.h> [Contents][Index]
gmtimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/gmtime.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: localtime, Previous: gmtime, Up: Functions in <time.h> [Contents][Index]
gmtime_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/gmtime_r.html
Gnulib module: time_r
Portability problems fixed by Gnulib:
_REENTRANT is defined,
on some platforms:
HP-UX 11.
Portability problems not fixed by Gnulib:
tm_zone to "GMT"
instead of "UTC" on some platforms:
glibc, NetBSD, OpenBSD 7.7, Minix, Cygwin, Android.
Next: localtime_r, Previous: gmtime_r, Up: Functions in <time.h> [Contents][Index]
localtimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/localtime.html
Gnulib module: localtime
Portability problems fixed by Gnulib:
TZ has been set by Cygwin.
Portability problems not fixed by Gnulib:
time_rz module to work around the problem.
Next: mktime, Previous: localtime, Up: Functions in <time.h> [Contents][Index]
localtime_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/localtime_r.html
Gnulib module: time_r
Portability problems fixed by Gnulib:
_REENTRANT is defined,
on some platforms:
HP-UX 11.
Portability problems not fixed by Gnulib:
time_rz module to work around the problem.
Next: nanosleep, Previous: localtime_r, Up: Functions in <time.h> [Contents][Index]
mktimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mktime.html
Gnulib module: mktime
Portability problems fixed by Gnulib:
TZ has been set by Cygwin.
mktime may go into an endless loop on some platforms.
mktime may occasionally return wrong results on some platforms.
Portability problems not fixed by Gnulib:
Next: strftime, Previous: mktime, Up: Functions in <time.h> [Contents][Index]
nanosleepPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nanosleep.html
Gnulib module: nanosleep
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strftime_l, Previous: nanosleep, Up: Functions in <time.h> [Contents][Index]
strftimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strftime.html
Gnulib module: strftime-fixes
Portability problems fixed by Gnulib:
TZ has been set by Cygwin.
Portability problems not fixed by Gnulib:
gmtime
or gmtime_r, since it outputs also the current time zone,
on some platforms:
glibc 2.30, NetBSD 10.0, Solaris 11.4.
Extension: Gnulib offers a module ‘nstrftime’ that provides an
nstrftime function with various GNU extensions.
Next: strptime, Previous: strftime, Up: Functions in <time.h> [Contents][Index]
strftime_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strftime_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: time, Previous: strftime_l, Up: Functions in <time.h> [Contents][Index]
strptimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/strptime.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-strptime-3.html
Gnulib module: strptime
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: timegm, Previous: strptime, Up: Functions in <time.h> [Contents][Index]
timePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/time.html
Gnulib module: time
Portability problems fixed by Gnulib:
gettimeofday and timespec_get
on some platforms:
glibc 2.31 or newer on Linux,
FreeBSD 14.0,
AIX 7.2, native Windows.
Namely, in the first 1 to 2.5 milliseconds of every second (or, on AIX and
Windows, in the first 5 milliseconds of every second), time returns
a value that is one less than the tv_sec part of the return value of
gettimeofday or timespec_get.
Portability problems not fixed by Gnulib:
Next: timer_create, Previous: time, Up: Functions in <time.h> [Contents][Index]
timegmDocumentation:
Gnulib module: timegm
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: timer_delete, Previous: timegm, Up: Functions in <time.h> [Contents][Index]
timer_createPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/timer_create.html
Gnulib module: timer-time
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
OpenBSD 4.9.
Next: timer_getoverrun, Previous: timer_create, Up: Functions in <time.h> [Contents][Index]
timer_deletePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/timer_delete.html
Gnulib module: timer-time
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
OpenBSD 4.9.
Next: timer_gettime, Previous: timer_delete, Up: Functions in <time.h> [Contents][Index]
timer_getoverrunPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/timer_getoverrun.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: timer_settime, Previous: timer_getoverrun, Up: Functions in <time.h> [Contents][Index]
timer_gettimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/timer_gettime.html
Gnulib module: timer-time
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
OpenBSD 4.9.
Next: timespec_get, Previous: timer_gettime, Up: Functions in <time.h> [Contents][Index]
timer_settimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/timer_settime.html
Gnulib module: timer-time
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
ENOSYS on some platforms:
OpenBSD 4.9.
Next: timespec_getres, Previous: timer_settime, Up: Functions in <time.h> [Contents][Index]
timespec_getISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.29.2.6
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/timespec_get.html
Gnulib module: timespec_get
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: timezone, Previous: timespec_get, Up: Functions in <time.h> [Contents][Index]
timespec_getresISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.29.2.7
Gnulib module: timespec_getres
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
timespec_get, i.e., the minimum distance between
differing timestamps. For example, on GNU/Linux it typically returns
1 nanosecond regardless of the actual clock resolution.
The Gnulib module gettime-res is a partial substitute; it implements
the TIME_UTC functionality of timespec_getres.
Next: tzname, Previous: timespec_getres, Up: Functions in <time.h> [Contents][Index]
timezonePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/timezone.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
TZ setting like TZ="America/Los_Angeles".
timezone exists)
on some platforms:
FreeBSD 14.0, OpenBSD 5.7.
_timezone on some platforms:
mingw with -DNO_OLDNAMES, MSVC.
This variable is vestigial: it is not needed and does not suffice in general.
It is planned to be removed from a future version of POSIX.
A more portable way of getting the UTC offset is to use
strftime with the %z format. See strftime.
Next: tzset, Previous: timezone, Up: Functions in <time.h> [Contents][Index]
tznamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tzname.html
Gnulib module: tzname
Portability problems fixed by Gnulib:
_tzname on some platforms:
mingw with -DNO_OLDNAMES, MSVC.
Portability problems not fixed by Gnulib:
TZ setting like TZ="America/Los_Angeles".
This variable is vestigial: it is not needed and does not suffice in general.
It is planned to be removed from a future version of POSIX.
A more portable way of getting the time zone abbreviation is to use
strftime with the %Z format. See strftime.
Previous: tzname, Up: Functions in <time.h> [Contents][Index]
tzsetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tzset.html
Gnulib module: tzset
Portability problems fixed by Gnulib:
TZ has been set by Cygwin.
Portability problems not fixed by Gnulib:
TZ environment variable,
consisting of a time zone abbreviation containing exactly three ASCII
letters with no daylight saving time or angle brackets, and with no
support for tz database settings like
TZ='America/New_York'. Even this subset does not work on
applications built via the Universal Windows Platform, as it does not
make environment variables like TZ available to applications.
TZ values,
as this feature was added in IEEE Std 1003.1-2001.
Next: Functions in <unistd.h>, Previous: Functions in <time.h>, Up: Function Substitutes [Contents][Index]
<uchar.h>| • c8rtomb | ||
| • c16rtomb | ||
| • c32rtomb | ||
| • mbrtoc8 | ||
| • mbrtoc16 | ||
| • mbrtoc32 |
Next: c16rtomb, Up: Functions in <uchar.h> [Contents][Index]
c8rtombGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: c32rtomb, Previous: c8rtomb, Up: Functions in <uchar.h> [Contents][Index]
c16rtombISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.30.1.4.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/c16rtomb.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mbrtoc8, Previous: c16rtomb, Up: Functions in <uchar.h> [Contents][Index]
c32rtombISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.30.1.6.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/c32rtomb.html
Gnulib module: c32rtomb
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mbrtoc16, Previous: c32rtomb, Up: Functions in <uchar.h> [Contents][Index]
mbrtoc8Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mbrtoc32, Previous: mbrtoc8, Up: Functions in <uchar.h> [Contents][Index]
mbrtoc16ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.30.1.3.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrtoc16.html
Gnulib module: mbrtoc16
Portability problems fixed by Gnulib:
(size_t) -1
and set errno to EILSEQ:
glibc 2.36.
(size_t) -2 when the input
is empty:
glibc 2.19,
Android 11.
(size_t) -3 instead of a byte count when it
has stored a high surrogate, and returns a byte count instead of
(size_t) -3 when it has stored a low surrogate, on some platforms:
Android.
mbrtowc
recognizes on some platforms:
FreeBSD 13.2,
Solaris 11.4, MSVC 14.
Portability problems not fixed by Gnulib:
mbrtoc16 returns a char16_t value, mbsinit
cannot be used to determine whether the function is ready to return
another char16_t value. To do so, instead call mbrtoc16
again, with an appropriately incremented const char * argument
and an appropriately decremented size_t argument.
Previous: mbrtoc16, Up: Functions in <uchar.h> [Contents][Index]
mbrtoc32ISO C23 specification:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf section 7.30.1.5.
POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrtoc32.html
Gnulib module: mbrtoc32 or mbrtoc32-regular
Portability problems fixed by either Gnulib module mbrtoc32 or mbrtoc32-regular:
(size_t) -1
and set errno to EILSEQ:
glibc 2.35.
(size_t) -2 when the input
is empty:
glibc 2.19,
mingw,
Android 11,
Haiku.
mbrtowc
recognizes on some platforms:
FreeBSD 13.2,
Solaris 11.4, mingw, MSVC 14.
Portability problems fixed by Gnulib module mbrtoc32-regular:
(size_t) -3.
No known implementation currently (2023) behaves that way, but it may
theoretically happen.
With the mbrtoc32-regular module, you have the guarantee that the
Gnulib-provided mbrtoc32 function maps each multibyte character to
exactly one Unicode character and thus never returns (size_t) -3.
Portability problems not fixed by Gnulib:
Note: If you want the guarantee that the char32_t values returned
by this function are Unicode code points, you also need to request the
uchar-h-c23 module.
Next: Functions in <utmpx.h>, Previous: Functions in <uchar.h>, Up: Function Substitutes [Contents][Index]
<unistd.h>| • _exit | ||
| • _Fork | ||
| • access | ||
| • alarm | ||
| • chdir | ||
| • chown | ||
| • close | ||
| • confstr | ||
| • crypt | ||
| • dup | ||
| • dup2 | ||
| • dup3 | ||
| • encrypt | ||
| • environ | ||
| • execl | ||
| • execle | ||
| • execlp | ||
| • execv | ||
| • execve | ||
| • execvp | ||
| • faccessat | ||
| • fchdir | ||
| • fchown | ||
| • fchownat | ||
| • fdatasync | ||
| • fexecve | ||
| • fork | ||
| • fpathconf | ||
| • fsync | ||
| • ftruncate | ||
| • getcwd | ||
| • getegid | ||
| • getentropy | ||
| • geteuid | ||
| • getgid | ||
| • getgroups | ||
| • gethostid | ||
| • gethostname | ||
| • getlogin | ||
| • getlogin_r | ||
| • getopt | ||
| • getpgid | ||
| • getpgrp | ||
| • getpid | ||
| • getppid | ||
| • getresgid | ||
| • getresuid | ||
| • getsid | ||
| • getuid | ||
| • isatty | ||
| • lchown | ||
| • link | ||
| • linkat | ||
| • lockf | ||
| • lseek | ||
| • nice | ||
| • optarg | ||
| • opterr | ||
| • optind | ||
| • optopt | ||
| • pathconf | ||
| • pause | ||
| • pipe | ||
| • pipe2 | ||
| • posix_close | ||
| • pread | ||
| • pwrite | ||
| • read | ||
| • readlink | ||
| • readlinkat | ||
| • rmdir | ||
| • setegid | ||
| • seteuid | ||
| • setgid | ||
| • setpgid | ||
| • setregid | ||
| • setresgid | ||
| • setresuid | ||
| • setreuid | ||
| • setsid | ||
| • setuid | ||
| • sleep | ||
| • swab | ||
| • symlink | ||
| • symlinkat | ||
| • sync | ||
| • sysconf | ||
| • tcgetpgrp | ||
| • tcsetpgrp | ||
| • truncate | ||
| • ttyname | ||
| • ttyname_r | ||
| • unlink | ||
| • unlinkat | ||
| • write |
Next: _Fork, Up: Functions in <unistd.h> [Contents][Index]
_exitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/_exit.html
Gnulib module: unistd-h
Portability problems fixed by Gnulib:
<stdlib.h>)
on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
Next: access, Previous: _exit, Up: Functions in <unistd.h> [Contents][Index]
_ForkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/_Fork.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Creating-a-Process.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: alarm, Previous: _Fork, Up: Functions in <unistd.h> [Contents][Index]
accessPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/access.html
Gnulib module: access
Portability problems fixed by Gnulib:
X_OK mode on some platforms:
MSVC 14.
Portability problems not fixed by Gnulib:
Other problems of this function:
stat versus lstat). If you need this option, use
the Gnulib module faccessat with the AT_EACCESS flag.
X_OK even if the file
does not have the x permission bit set.
execlp or execvp. Nevertheless,
this function may return true for such files.
execlp and execvp search for files with the
suffixes .com, .exe, .bat, .cmd, when the
file with the given file name does not exist. Whereas cmd.exe
searches according to the PATHEXT environment variable. This
function does not perform any search; it merely looks at the file with
the given file name.
Next: chdir, Previous: access, Up: Functions in <unistd.h> [Contents][Index]
alarmPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/alarm.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
SIGALRM is inherited as
ignored; programs should use signal (SIGALRM, SIG_DFL) if
it is important to ensure the alarm will fire.
<io.h> header on some platforms:
mingw (2012 or newer).
Next: chown, Previous: alarm, Up: Functions in <unistd.h> [Contents][Index]
chdirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/chdir.html
Gnulib module: chdir
Portability problems fixed by Gnulib:
<io.h> or
<direct.h>) on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
Next: close, Previous: chdir, Up: Functions in <unistd.h> [Contents][Index]
chownPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/chown.html
Gnulib module: chown
Portability problems fixed by Gnulib:
chown("link-to-file/",uid,gid):
macOS 14, FreeBSD 7.2, AIX 7.3.1, Solaris 9.
lchown:
some very old platforms.
ENOSYS:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
EACCES when the failure is
due to lack of appropriate privileges (EPERM), not to
search permission denied on the file name prefix (EACCES):
Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system
(see https://bugs.gnu.org/65599).
Next: confstr, Previous: chown, Up: Functions in <unistd.h> [Contents][Index]
closePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/close.html
Gnulib module: close
Portability problems fixed by Gnulib:
<io.h>)
on some platforms:
MSVC 14.
socket and accept
do not return file descriptors that can be closed by close.
Instead, closesocket must be used.
Portability problems not fixed by Gnulib:
Next: crypt, Previous: close, Up: Functions in <unistd.h> [Contents][Index]
confstrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/confstr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dup, Previous: confstr, Up: Functions in <unistd.h> [Contents][Index]
cryptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/crypt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<unistd.h>
(without -D_GNU_SOURCE) on some platforms:
glibc (at least 2.11–2.13).
Next: dup2, Previous: crypt, Up: Functions in <unistd.h> [Contents][Index]
dupPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dup.html
Gnulib module: dup
Portability problems fixed by Gnulib:
<io.h>)
on some platforms:
MSVC 14.
Portability problems not fixed by Gnulib:
Next: dup3, Previous: dup, Up: Functions in <unistd.h> [Contents][Index]
dup2POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dup2.html
Gnulib module: dup2
Portability problems fixed by Gnulib:
<io.h>)
on some platforms:
MSVC 14.
EINVAL when duplicating an fd to itself:
Android.
FD_CLOEXEC flag when duplicating an fd
to itself on some platforms:
Haiku.
dup2 (1, 1) on some platforms:
Cygwin 1.5.x.
-EBADF instead of -1 on some platforms:
Linux releases between July 2008 and May 2009 (versions 2.6.27 to 2.6.29).
EMFILE instead of EBADF for
large targets, which interferes with using
dup2(fd,fd)==fd) as the minimal EBADF filter:
AIX 7.1, FreeBSD 6.1, Cygwin 1.5.
Portability problems not fixed by Gnulib:
Next: encrypt, Previous: dup2, Up: Functions in <unistd.h> [Contents][Index]
dup3POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/dup3.html
Documentation:
man dup3
Gnulib module: dup3
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: environ, Previous: dup3, Up: Functions in <unistd.h> [Contents][Index]
encryptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/encrypt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<unistd.h>
(without -D_GNU_SOURCE) on some platforms:
glibc (at least 2.11–2.13).
Next: execl, Previous: encrypt, Up: Functions in <unistd.h> [Contents][Index]
environPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/environ.html
Gnulib module: environ
Portability problems fixed by Gnulib:
extern char **environ;
to get the variable declared. This does not work any more, however, in shared libraries on macOS 10.5. Here is a workaround: Instead, one can use
#include <crt_externs.h> #define environ (*_NSGetEnviron())
This works at all versions of macOS.
-Wl,--disable-auto-import is in use.
Portability problems not fixed by Gnulib:
environ to clear all variables is not
portable; better is to assign environ to one-element array
containing a NULL pointer. That said, an empty environment is not
portable either, as some systems may require particular environment
variables (such as PATH) to be present in order to operate
consistently.
Next: execle, Previous: environ, Up: Functions in <unistd.h> [Contents][Index]
execlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/execl.html
Gnulib module: execl
Portability problems fixed by Gnulib:
intptr_t, not int.
Note: The Gnulib replacement for this function is not async-safe, that is, it must not be invoked from a signal handler.
Portability problems not fixed by Gnulib:
Next: execlp, Previous: execl, Up: Functions in <unistd.h> [Contents][Index]
execlePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/execle.html
Gnulib module: execle
Portability problems fixed by Gnulib:
intptr_t, not int.
Note: The Gnulib replacement for this function is not async-safe, that is, it must not be invoked from a signal handler.
Portability problems not fixed by Gnulib:
Next: execv, Previous: execle, Up: Functions in <unistd.h> [Contents][Index]
execlpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/execlp.html
Gnulib module: execlp
Portability problems fixed by Gnulib:
intptr_t, not int.
Portability problems not fixed by Gnulib:
Next: execve, Previous: execlp, Up: Functions in <unistd.h> [Contents][Index]
execvPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/execv.html
Gnulib module: execv
Portability problems fixed by Gnulib:
intptr_t, not int.
Note: The Gnulib replacement for this function is not async-safe, that is, it must not be invoked from a signal handler.
Portability problems not fixed by Gnulib:
Next: execvp, Previous: execv, Up: Functions in <unistd.h> [Contents][Index]
execvePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/execve.html
Gnulib module: execve
Portability problems fixed by Gnulib:
intptr_t, not int.
Note: The Gnulib replacement for this function is not async-safe, that is, it must not be invoked from a signal handler.
Portability problems not fixed by Gnulib:
Next: faccessat, Previous: execve, Up: Functions in <unistd.h> [Contents][Index]
execvpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/execvp.html
Gnulib module: execvp
Portability problems fixed by Gnulib:
intptr_t, not int.
Portability problems not fixed by Gnulib:
Next: fchdir, Previous: execvp, Up: Functions in <unistd.h> [Contents][Index]
faccessatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/faccessat.html
Gnulib module: faccessat
Portability problems fixed by Gnulib:
faccessat (dfd, "file/", amode, flag)
succeeds instead of failing when file is not a directory.
macOS 14.
Portability problems not fixed by Gnulib:
AT_SYMLINK_NOFOLLOW flag,
which is supported by GNU faccessat.
faccessat can mishandle AT_EACCESS
after a process starts as root and then becomes non-root:
GNU/Linux with glibc 2.32.
Other problems of this function:
Next: fchown, Previous: faccessat, Up: Functions in <unistd.h> [Contents][Index]
fchdirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fchdir.html
Gnulib module: fchdir
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
O_PATH:
Linux kernel 3.4.
Next: fchownat, Previous: fchdir, Up: Functions in <unistd.h> [Contents][Index]
fchownPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fchown.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
EACCES when the failure is
due to lack of appropriate privileges (EPERM), not to
search permission denied on the file name prefix (EACCES):
Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system
(see https://bugs.gnu.org/65599).
Next: fdatasync, Previous: fchown, Up: Functions in <unistd.h> [Contents][Index]
fchownatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fchownat.html
Gnulib module: fchownat
Portability problems fixed by Gnulib:
lchown is unsupported, or fail altogether if
chown is unsupported.
<sys/stat.h>, not in <unistd.h>,
on some platforms:
Android 4.3.
fchown(dir,"link-to-file/",uid,gid,flag):
Solaris 9.
AT_SYMLINK_NOFOLLOW:
Linux kernel 2.6.17.
Portability problems not fixed by Gnulib:
EACCES when the failure is
due to lack of appropriate privileges (EPERM), not to
search permission denied on the file name prefix (EACCES):
Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system
(see https://bugs.gnu.org/65599).
Next: fexecve, Previous: fchownat, Up: Functions in <unistd.h> [Contents][Index]
fdatasyncPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fdatasync.html
Gnulib module: fdatasync
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
EBADF on some platforms:
AIX 7.3, Cygwin 3.6.x.
Next: fork, Previous: fdatasync, Up: Functions in <unistd.h> [Contents][Index]
fexecvePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fexecve.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fpathconf, Previous: fexecve, Up: Functions in <unistd.h> [Contents][Index]
forkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fork.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
fork followed by a call of the exec family
(execl, execlp, execle, execv, execvp,
or execve) is less efficient than vfork followed by the same
call. vfork is a variant of fork that has been introduced to
optimize the fork/exec pattern.
_spawnvp instead.
Next: fsync, Previous: fork, Up: Functions in <unistd.h> [Contents][Index]
fpathconfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fpathconf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ftruncate, Previous: fpathconf, Up: Functions in <unistd.h> [Contents][Index]
fsyncPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fsync.html
Gnulib module: fsync
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
EBADF on some platforms:
AIX 7.3, Cygwin 3.6.x.
Next: getcwd, Previous: fsync, Up: Functions in <unistd.h> [Contents][Index]
ftruncatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ftruncate.html
Gnulib module: ftruncate
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: getegid, Previous: ftruncate, Up: Functions in <unistd.h> [Contents][Index]
getcwdPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getcwd.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getcwd.html
Gnulib module: getcwd or getcwd-lgpl
Portability problems fixed by either Gnulib module getcwd or
getcwd-lgpl:
<io.h> or
<direct.h>) on some platforms:
mingw, MSVC 14.
getcwd (NULL, n) allocates memory for the result.
On some other platforms, this call is not allowed.
getcwd uses int
instead of size_t for the size argument when using non-standard
headers, and the declaration is missing from <unistd.h>:
mingw, MSVC 14.
getcwd (buf, 0) crashes:
MSVC 14.
getcwd (buf, 0) fails with ERANGE
instead of the required EINVAL:
mingw.
Portability problems fixed by Gnulib module getcwd:
PATH_MAX)
correctly on some platforms:
glibc on Linux 2.4.20, musl libc 1.2.2/powerpc64le, macOS 13, FreeBSD 6.4, NetBSD 10.0, OpenBSD 7.5, AIX 7.1.
Portability problems not fixed by Gnulib:
getcwd(NULL, nonzero), some platforms, such as glibc
or cygwin, allocate exactly nonzero bytes and fail with
ERANGE if it was not big enough, while other platforms, such as
FreeBSD, mingw, or MSVC 14, ignore the size argument and allocate whatever size
is necessary. If this call succeeds, an application cannot portably
access beyond the string length of the result.
Next: getentropy, Previous: getcwd, Up: Functions in <unistd.h> [Contents][Index]
getegidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getegid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: geteuid, Previous: getegid, Up: Functions in <unistd.h> [Contents][Index]
getentropyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getentropy.html
Documentation:
Gnulib module: getentropy
Portability problems fixed by Gnulib:
<sys/random.h>, not in <unistd.h>,
on some platforms:
macOS 14, Solaris 11.4, Android 9.0.
Portability problems not fixed by Gnulib:
Although this function is intended to produce random data, the data’s security properties may not be appropriate for your application. For example, identical “random” data streams might be produced by rebooted virtual machines. If this is of concern you may need to use additional techniques such as hedging.1
Related modules include getrandom, which has a more-flexible
but more-complex API, and crypto/gc-random, which is likely a
better match for code already using the other crypto APIs.
Next: getgid, Previous: getentropy, Up: Functions in <unistd.h> [Contents][Index]
geteuidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/geteuid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getgroups, Previous: geteuid, Up: Functions in <unistd.h> [Contents][Index]
getgidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getgid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gethostid, Previous: getgid, Up: Functions in <unistd.h> [Contents][Index]
getgroupsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getgroups.html
Gnulib module: getgroups
Portability problems fixed by Gnulib:
getgroups (0, NULL) always fails. See macro
‘AC_FUNC_GETGROUPS’.
Portability problems not fixed by Gnulib:
fork and exec if
the parent process is multi-threaded.
The Gnulib module mgetgroups provides a similar API.
Next: gethostname, Previous: getgroups, Up: Functions in <unistd.h> [Contents][Index]
gethostidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/gethostid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getlogin, Previous: gethostid, Up: Functions in <unistd.h> [Contents][Index]
gethostnamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/gethostname.html
Gnulib module: gethostname
Portability problems fixed by Gnulib:
<winsock2.h> instead of <unistd.h>
on some platforms:
MSVC 14.
Portability problems not fixed by Gnulib:
int instead of size_t
on some platforms:
Solaris 10, Solaris 11 OmniOS.
EINVAL, instead of returning a truncated host name.
Next: getlogin_r, Previous: gethostname, Up: Functions in <unistd.h> [Contents][Index]
getloginPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getlogin.html
Gnulib module: getlogin
Portability problems fixed by Gnulib:
_POSIX is defined on some platforms:
mingw.
LOGNAME environment variable
and is therefore arbitrarily fakeable:
musl libc 1.2.5.
Portability problems not fixed by Gnulib:
Next: getopt, Previous: getlogin, Up: Functions in <unistd.h> [Contents][Index]
getlogin_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getlogin_r.html
Gnulib module: getlogin_r
Portability problems fixed by Gnulib:
_REENTRANT is defined,
on some platforms:
HP-UX 11.
ERANGE, when the buffer is not large enough, on some platforms:
macOS 14.
LOGNAME environment variable
and is therefore arbitrarily fakeable:
musl libc 1.2.5.
Portability problems not fixed by Gnulib:
_POSIX_PTHREAD_SEMANTICS is not defined).
EINVAL instead of ERANGE when
the second argument is zero on some platforms:
HP-UX 11.31.
ENOMEM instead of ERANGE on
some platforms:
Haiku.
Next: getpgid, Previous: getlogin_r, Up: Functions in <unistd.h> [Contents][Index]
getoptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getopt.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/libutil-getopt-3.html
Gnulib module: getopt-posix or getopt-gnu
The module getopt-gnu has support for “long options” and for
“options that take optional arguments”. Compared to the API defined by POSIX,
it adds a header file <getopt.h> and a function getopt_long.
Portability problems fixed by either Gnulib module getopt-posix or getopt-gnu:
optind after a missing required argument is wrong
on some platforms:
macOS 14, AIX 7.1, mingw.
Portability problems fixed by Gnulib module getopt-gnu:
getopt does not support the ‘+’ flag in the options
string on some platforms:
macOS 14, AIX 5.2, HP-UX 11, Solaris 11 2010-11.
getopt does not obey the combination of ‘+’
and ‘:’ flags in the options string on some platforms:
glibc 2.11.
getopt does not obey the ‘-’ flag in the options
string when POSIXLY_CORRECT is set on some platforms:
Cygwin 1.7.0.
getopt does not support options with optional arguments
on some platforms:
macOS 14, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11 2010-11, Cygwin 1.5.x.
getopt_long is missing on some platforms:
AIX 5.1, HP-UX 11, Solaris 9, MSVC 14.
getopt_long does not support abbreviated long options
where all disambiguations are equivalent on some platforms:
OpenBSD 5.0.
getopt_long_only is missing on some platforms:
FreeBSD 5.2.1, NetBSD 10.0, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 14.
W; on some
platforms:
glibc 2.14.
Portability problems not fixed by Gnulib:
getopt allows
mixing option and non-option arguments on the command line in any order.
Other implementations, such as the one in Cygwin, enforce strict POSIX
compliance: they require that the option arguments precede the non-option
arguments. This is something to watch out in your program’s
testsuite.
POSIXLY_CORRECT, by setting
optind to 0. Several BSD implementations provide optreset,
causing a reset by setting it non-zero, although it does not
necessarily re-read POSIXLY_CORRECT. Solaris getopt does
not support either reset method, but does not maintain state that
needs the extra level of reset.
Next: getpgrp, Previous: getopt, Up: Functions in <unistd.h> [Contents][Index]
getpgidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpgid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpid, Previous: getpgid, Up: Functions in <unistd.h> [Contents][Index]
getpgrpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpgrp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getppid, Previous: getpgrp, Up: Functions in <unistd.h> [Contents][Index]
getpidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getpid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getresgid, Previous: getpid, Up: Functions in <unistd.h> [Contents][Index]
getppidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getppid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getresuid, Previous: getppid, Up: Functions in <unistd.h> [Contents][Index]
getresgidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getresgid.html
Documentation:
man getresgid
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getsid, Previous: getresgid, Up: Functions in <unistd.h> [Contents][Index]
getresuidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getresuid.html
Documentation:
man getresuid
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getuid, Previous: getresuid, Up: Functions in <unistd.h> [Contents][Index]
getsidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getsid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isatty, Previous: getsid, Up: Functions in <unistd.h> [Contents][Index]
getuidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getuid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lchown, Previous: getuid, Up: Functions in <unistd.h> [Contents][Index]
isattyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/isatty.html
Gnulib module: isatty
Portability problems fixed by Gnulib:
<io.h>)
on some platforms:
MSVC 14.
Portability problems not fixed by Gnulib:
Next: link, Previous: isatty, Up: Functions in <unistd.h> [Contents][Index]
lchownPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lchown.html
Gnulib module: lchown
Portability problems fixed by Gnulib:
ENOSYS:
mingw, MSVC 14.
lchown("link-to-file/",uid,gid):
FreeBSD 7.2, Solaris 9.
Portability problems not fixed by Gnulib:
EACCES when the failure is
due to lack of appropriate privileges (EPERM), not to
search permission denied on the file name prefix (EACCES):
Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system
(see https://bugs.gnu.org/65599).
Next: linkat, Previous: lchown, Up: Functions in <unistd.h> [Contents][Index]
linkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/link.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-link-1.html
Gnulib module: link
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lockf, Previous: link, Up: Functions in <unistd.h> [Contents][Index]
linkatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/linkat.html
Gnulib module: linkat
Portability problems fixed by Gnulib:
AT_SYMLINK_FOLLOW on some platforms:
Linux kernel 2.6.17.
Portability problems not fixed by Gnulib:
linkat (fd, "directory", fd, "symlink/" ...) sets errno
to EINVAL instead of EEXIST or ENOTDIR on some
platforms:
GNU/Hurd with glibc 2.41.
Next: lseek, Previous: linkat, Up: Functions in <unistd.h> [Contents][Index]
lockfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lockf.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly across the entire data range of files 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
Next: nice, Previous: lockf, Up: Functions in <unistd.h> [Contents][Index]
lseekPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lseek.html
Gnulib module: lseek
Portability problems fixed by Gnulib:
lseek (fd, offset, SEEK_DATA) returns a value
greater than offset even when offset addresses data:
macOS 14.
<io.h>)
on some platforms:
MSVC 14.
off_t is a 32-bit type, lseek does not work
correctly with files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
SEEK_DATA and SEEK_HOLE:
AIX, HP-UX, Microsoft Windows, NetBSD, OpenBSD, Cygwin 3.4.6.
SEEK_DATA and SEEK_HOLE,
and Gnulib works around the problem via #undef SEEK_DATA
and #undef SEEK_HOLE:
FreeBSD 13, macOS 12.
Next: optarg, Previous: lseek, Up: Functions in <unistd.h> [Contents][Index]
nicePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/nice.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
nice returned 0 upon success.
Next: opterr, Previous: nice, Up: Functions in <unistd.h> [Contents][Index]
optargPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/optarg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: optind, Previous: optarg, Up: Functions in <unistd.h> [Contents][Index]
opterrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/opterr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: optopt, Previous: opterr, Up: Functions in <unistd.h> [Contents][Index]
optindPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/optind.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pathconf, Previous: optind, Up: Functions in <unistd.h> [Contents][Index]
optoptPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/optopt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pause, Previous: optopt, Up: Functions in <unistd.h> [Contents][Index]
pathconfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pathconf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pipe, Previous: pathconf, Up: Functions in <unistd.h> [Contents][Index]
pausePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pause.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pipe2, Previous: pause, Up: Functions in <unistd.h> [Contents][Index]
pipePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pipe.html
Gnulib module: pipe-posix
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
EMFILE if no
resources are left on some platforms:
Cygwin 1.7.9.
Next: posix_close, Previous: pipe, Up: Functions in <unistd.h> [Contents][Index]
pipe2POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pipe2.html
Documentation:
man pipe2
Gnulib module: pipe2
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
EMFILE if no
resources are left on some platforms:
Cygwin 1.7.9.
Note: This function portably supports the O_NONBLOCK flag only if the
gnulib module nonblocking is also used.
Next: pread, Previous: pipe2, Up: Functions in <unistd.h> [Contents][Index]
posix_closePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_close.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pwrite, Previous: posix_close, Up: Functions in <unistd.h> [Contents][Index]
preadPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pread.html
Gnulib module: pread
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
Next: read, Previous: pread, Up: Functions in <unistd.h> [Contents][Index]
pwritePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pwrite.html
Gnulib module: pwrite
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
off_t argument
when large file support is enabled on some platforms:
HP-UX 11.11.
Portability problems not fixed by Gnulib:
Next: readlink, Previous: pwrite, Up: Functions in <unistd.h> [Contents][Index]
readPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/read.html
Gnulib module: read, stdio-h, nonblocking
Portability problems fixed by Gnulib module read:
<io.h>)
on some platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
EINTR, even in programs that don’t
install any signal handlers, on some platforms:
macOS 14.
For handling EINTR, Gnulib provides a module ‘safe-read’ with a
function safe_read.
Next: readlinkat, Previous: read, Up: Functions in <unistd.h> [Contents][Index]
readlinkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/readlink.html
Gnulib module: readlink
Portability problems fixed by Gnulib:
int instead of
ssize_t:
glibc 2.4, FreeBSD 6.0, OpenBSD 7.5, Cygwin 1.5.x, AIX 7.1.
Portability problems mostly fixed by Gnulib:
errno to
ERANGE rather than returning truncated contents:
AIX 7.2, HP-UX 11.
The Gnulib replacement normally works as POSIX requires by returning
the truncated contents. However, if the full link contents are
unreasonably large (more than 4000 bytes) the replacement clears the
entire buffer and returns the buffer size; although this is not a
complete fix, it suffices for typical callers, which ignore the buffer
contents anyway.
Portability problems not fixed by Gnulib:
errno to ENOENT or EIO instead of
EINVAL. To avoid this problem, check for a directory before calling
this function.
EACCES instead of EINVAL.
errno to EINVAL:
AIX 7.2.
errno to EINVAL if the
requested length is zero.
Use the gnulib module areadlink for
improved ability to read symlink contents.
Next: rmdir, Previous: readlink, Up: Functions in <unistd.h> [Contents][Index]
readlinkatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/readlinkat.html
Gnulib module: readlinkat
Portability problems fixed by Gnulib:
int instead of
ssize_t:
AIX 7.1.
Portability problems mostly fixed by Gnulib:
errno to
ERANGE rather than returning truncated contents:
AIX 7.2.
The Gnulib replacement normally works as POSIX requires by returning
the truncated contents. However, if the full link contents are
unreasonably large (more than 4000 bytes) the replacement clears the
entire buffer and returns the buffer size; although this is not a
complete fix, it suffices for typical callers, which ignore the buffer
contents anyway.
Portability problems not fixed by Gnulib:
errno to ENOENT or EIO instead of
EINVAL. To avoid this problem, check for a directory before calling
this function.
EACCES instead of EINVAL.
errno to EINVAL:
AIX 7.2.
EBADF instead of ENOENT:
Cygwin 3.4.6.
errno to EINVAL if the
requested length is zero.
Use the gnulib module areadlink for
improved ability to read symlink contents.
Next: setegid, Previous: readlinkat, Up: Functions in <unistd.h> [Contents][Index]
rmdirPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/rmdir.html
Gnulib module: rmdir
Portability problems fixed by Gnulib:
<io.h> or
<direct.h>) on some platforms:
mingw, MSVC 14.
rmdir("dir/./") on some platforms:
Cygwin 1.5.x.
EINVAL instead of the expected
ENOTDIR for rmdir("file/") on some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
rmdir fails because the specified directory is not empty, the
errno value is system dependent.
rmdir("link-to-empty/") remove empty
and leave link-to-empty as a dangling symlink. This is
counter-intuitive, so some systems fail with ENOTDIR instead:
glibc
Next: seteuid, Previous: rmdir, Up: Functions in <unistd.h> [Contents][Index]
setegidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setegid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setgid, Previous: setegid, Up: Functions in <unistd.h> [Contents][Index]
seteuidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/seteuid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setpgid, Previous: seteuid, Up: Functions in <unistd.h> [Contents][Index]
setgidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setgid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setregid, Previous: setgid, Up: Functions in <unistd.h> [Contents][Index]
setpgidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setpgid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setresgid, Previous: setpgid, Up: Functions in <unistd.h> [Contents][Index]
setregidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setregid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setresuid, Previous: setregid, Up: Functions in <unistd.h> [Contents][Index]
setresgidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setresgid.html
Documentation:
man setresgid
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setreuid, Previous: setresgid, Up: Functions in <unistd.h> [Contents][Index]
setresuidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setresuid.html
Documentation:
man setresuid
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setsid, Previous: setresuid, Up: Functions in <unistd.h> [Contents][Index]
setreuidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setreuid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setuid, Previous: setreuid, Up: Functions in <unistd.h> [Contents][Index]
setsidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setsid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sleep, Previous: setsid, Up: Functions in <unistd.h> [Contents][Index]
setuidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setuid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: swab, Previous: setuid, Up: Functions in <unistd.h> [Contents][Index]
sleepPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sleep.html
Gnulib module: sleep
Portability problems fixed by Gnulib:
void on some
platforms:
mingw (2005 and older).
Portability problems not fixed by Gnulib:
sleep function may interfere with the program’s
use of the SIGALRM signal. On Linux, it doesn’t; on other platforms,
it may.
Next: symlink, Previous: sleep, Up: Functions in <unistd.h> [Contents][Index]
swabPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/swab.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: symlinkat, Previous: swab, Up: Functions in <unistd.h> [Contents][Index]
symlinkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/symlink.html
Gnulib module: symlink
Portability problems fixed by Gnulib:
symlink(value,"name/") mistakenly creates a
symlink:
macOS 14, FreeBSD 7.2, AIX 7.1, Solaris 9.
EPERM:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
ENOENT as GNU/Linux does:
FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.8, Solaris 11.4.
On Solaris, the empty symbolic link "" resolves like "." does;
on the other operating systems, resolution fails with ENOENT.
Next: sync, Previous: symlink, Up: Functions in <unistd.h> [Contents][Index]
symlinkatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/symlinkat.html
Gnulib module: symlinkat
Portability problems fixed by Gnulib:
stdio.h instead of
unistd.h:
Cygwin 1.7.1.
symlinkat(value, fd, "name/") mistakenly creates a
symlink:
macOS 14, AIX 7.1.
Portability problems not fixed by Gnulib:
ENOSYS on platforms that don’t
support symlinks:
mingw, MSVC 14.
ENOENT as GNU/Linux does:
FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.8, Solaris 11.4.
On Solaris, the empty symbolic link "" resolves like "." does;
on the BSDs, resolution fails with ENOENT.
Next: sysconf, Previous: symlinkat, Up: Functions in <unistd.h> [Contents][Index]
syncPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sync.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcgetpgrp, Previous: sync, Up: Functions in <unistd.h> [Contents][Index]
sysconfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sysconf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sysconf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tcsetpgrp, Previous: sysconf, Up: Functions in <unistd.h> [Contents][Index]
tcgetpgrpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcgetpgrp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: truncate, Previous: tcgetpgrp, Up: Functions in <unistd.h> [Contents][Index]
tcsetpgrpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcsetpgrp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ttyname, Previous: tcsetpgrp, Up: Functions in <unistd.h> [Contents][Index]
truncatePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/truncate.html
Gnulib module: truncate
Portability problems fixed by Gnulib:
AC_SYS_LARGEFILE in effect.
off_t is a 32-bit type, this function is not
applicable to arbitrary lengths for files 2 GiB and larger.
See Large File Support.
Portability problems not fixed by Gnulib:
Next: ttyname_r, Previous: truncate, Up: Functions in <unistd.h> [Contents][Index]
ttynamePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ttyname.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: unlink, Previous: ttyname, Up: Functions in <unistd.h> [Contents][Index]
ttyname_rPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ttyname_r.html
Gnulib module: ttyname_r
Portability problems fixed by Gnulib:
_REENTRANT is defined,
on some platforms:
HP-UX 11.
_POSIX_PTHREAD_SEMANTICS is not defined).
Portability problems not fixed by Gnulib:
Next: unlinkat, Previous: ttyname_r, Up: Functions in <unistd.h> [Contents][Index]
unlinkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/unlink.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-unlink-3.html
Gnulib module: unlink
Portability problems fixed by Gnulib:
<stdio.h>)
on some platforms:
MSVC 14.
unlink("link-to-file/"):
GNU/Hurd, FreeBSD 7.2, AIX 7.1, Solaris 9.
unlink("..") succeeds
without doing anything.
Portability problems not fixed by Gnulib:
EPERM. Meanwhile, if a process
has the ability to unlink directories, POSIX requires that
unlink("symlink-to-dir/") remove dir and leave
symlink-to-dir dangling; this behavior is counter-intuitive.
The gnulib module unlinkdir can help determine whether code must be
cautious of unlinking directories.
Next: write, Previous: unlink, Up: Functions in <unistd.h> [Contents][Index]
unlinkatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/unlinkat.html
Gnulib module: unlinkat
Portability problems fixed by Gnulib:
<fcntl.h>, not in <unistd.h>,
on some platforms:
Cygwin 1.7.1, Android 4.3.
unlinkat(fd, "..", 0) succeeds
without doing anything.
unlinkat(fd,"file/",flag):
GNU/Hurd, Solaris 9.
Portability problems not fixed by Gnulib:
unlinkat(fd,name,AT_REMOVEDIR) fails because the specified
directory is not empty, the errno value is system dependent.
unlinkdir(fd,"link-to-empty/",AT_REMOVEDIR)
remove empty and leave link-to-empty as a dangling
symlink. This is counter-intuitive, so some systems fail with
ENOTDIR instead:
glibc
EPERM. Meanwhile, if a process
has the ability to unlink directories, POSIX requires that
unlinkat(fd,"symlink-to-dir/",0) remove dir and leave
symlink-to-dir dangling; this behavior is counter-intuitive.
The gnulib module unlinkdir can help determine whether code must be
cautious of unlinking directories.
Previous: unlinkat, Up: Functions in <unistd.h> [Contents][Index]
writePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/write.html
Gnulib module: write, nonblocking, sigpipe
Portability problems fixed by Gnulib module write:
<io.h>)
on some platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module nonblocking:
errno being set to ENOSPC instead of EAGAIN on some
platforms:
mingw, MSVC 14.
Portability problems fixed by Gnulib module stdio-h, together with module sigpipe:
EINVAL, instead of obeying the current SIGPIPE handler, on
some platforms:
mingw, MSVC 14.
Portability problems not fixed by Gnulib:
EINTR, even in programs that don’t
install any signal handlers, on some platforms:
macOS 14.
For handling EINTR, Gnulib provides a module ‘safe-write’ with a
function safe_write.
Next: Functions in <wchar.h>, Previous: Functions in <unistd.h>, Up: Function Substitutes [Contents][Index]
<utmpx.h>| • endutxent | ||
| • getutxent | ||
| • getutxid | ||
| • getutxline | ||
| • pututxline | ||
| • setutxent |
Next: getutxent, Up: Functions in <utmpx.h> [Contents][Index]
endutxentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/endutxent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getutxid, Previous: endutxent, Up: Functions in <utmpx.h> [Contents][Index]
getutxentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getutxent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getutxline, Previous: getutxent, Up: Functions in <utmpx.h> [Contents][Index]
getutxidPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getutxid.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pututxline, Previous: getutxid, Up: Functions in <utmpx.h> [Contents][Index]
getutxlinePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getutxline.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setutxent, Previous: getutxline, Up: Functions in <utmpx.h> [Contents][Index]
pututxlinePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pututxline.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: pututxline, Up: Functions in <utmpx.h> [Contents][Index]
setutxentPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/setutxent.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Functions in <wctype.h>, Previous: Functions in <utmpx.h>, Up: Function Substitutes [Contents][Index]
<wchar.h>| • btowc | ||
| • fgetwc | ||
| • fgetws | ||
| • fputwc | ||
| • fputws | ||
| • fwide | ||
| • fwprintf | ||
| • fwscanf | ||
| • getwc | ||
| • getwchar | ||
| • mbrlen | ||
| • mbrtowc | ||
| • mbsinit | ||
| • mbsnrtowcs | ||
| • mbsrtowcs | ||
| • open_wmemstream | ||
| • putwc | ||
| • putwchar | ||
| • swprintf | ||
| • swscanf | ||
| • ungetwc | ||
| • vfwprintf | ||
| • vfwscanf | ||
| • vswprintf | ||
| • vswscanf | ||
| • vwprintf | ||
| • vwscanf | ||
| • wcpcpy | ||
| • wcpncpy | ||
| • wcrtomb | ||
| • wcscasecmp | ||
| • wcscasecmp_l | ||
| • wcscat | ||
| • wcschr | ||
| • wcscmp | ||
| • wcscoll | ||
| • wcscoll_l | ||
| • wcscpy | ||
| • wcscspn | ||
| • wcsdup | ||
| • wcsftime | ||
| • wcslcat | ||
| • wcslcpy | ||
| • wcslen | ||
| • wcsncasecmp | ||
| • wcsncasecmp_l | ||
| • wcsncat | ||
| • wcsncmp | ||
| • wcsncpy | ||
| • wcsnlen | ||
| • wcsnrtombs | ||
| • wcspbrk | ||
| • wcsrchr | ||
| • wcsrtombs | ||
| • wcsspn | ||
| • wcsstr | ||
| • wcstod | ||
| • wcstof | ||
| • wcstok | ||
| • wcstol | ||
| • wcstold | ||
| • wcstoll | ||
| • wcstoul | ||
| • wcstoull | ||
| • wcswidth | ||
| • wcsxfrm | ||
| • wcsxfrm_l | ||
| • wctob | ||
| • wcwidth | ||
| • wmemchr | ||
| • wmemcmp | ||
| • wmemcpy | ||
| • wmemmove | ||
| • wmemset | ||
| • wprintf | ||
| • wscanf |
Next: fgetwc, Up: Functions in <wchar.h> [Contents][Index]
btowcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/btowc.html
Gnulib module: btowc
Portability problems fixed by Gnulib:
mbrtowc and can return WEOF:
glibc 2.35, MirOS BSD #10.
mbrtowc
on some platforms:
Cygwin 3.4.x, mingw with MSVCRT.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function btoc32, provided by Gnulib module
btoc32, operates on 32-bit wide characters and therefore does not have
this limitation.
Next: fgetws, Previous: btowc, Up: Functions in <wchar.h> [Contents][Index]
fgetwcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fgetwc.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: fputwc, Previous: fgetwc, Up: Functions in <wchar.h> [Contents][Index]
fgetwsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fgetws.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: fputws, Previous: fgetws, Up: Functions in <wchar.h> [Contents][Index]
fputwcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fputwc.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: fwide, Previous: fputwc, Up: Functions in <wchar.h> [Contents][Index]
fputwsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fputws.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: fwprintf, Previous: fputws, Up: Functions in <wchar.h> [Contents][Index]
fwidePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fwide.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
fwide is not guaranteed to be able to change a file stream’s mode
to a different mode than the current one.
Next: fwscanf, Previous: fwide, Up: Functions in <wchar.h> [Contents][Index]
fwprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fwprintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14,
Haiku.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
%c and %s conversions may fail
on some platforms:
glibc 2.35.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: getwc, Previous: fwprintf, Up: Functions in <wchar.h> [Contents][Index]
fwscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fwscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fwscanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: getwchar, Previous: fwscanf, Up: Functions in <wchar.h> [Contents][Index]
getwcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getwc.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: mbrlen, Previous: getwc, Up: Functions in <wchar.h> [Contents][Index]
getwcharPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/getwchar.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: mbrtowc, Previous: getwchar, Up: Functions in <wchar.h> [Contents][Index]
mbrlenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrlen.html
Gnulib module: mbrlen
Portability problems fixed by Gnulib:
(size_t) -1
and set errno to EILSEQ:
glibc 2.35.
(size_t) -2 when the input
is empty:
glibc 2.19.
(size_t) -1 instead of (size_t) -2
when the input is empty:
AIX 5.1.
Portability problems not fixed by Gnulib:
Next: mbsinit, Previous: mbrlen, Up: Functions in <wchar.h> [Contents][Index]
mbrtowcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrtowc.html
Gnulib module: mbrtowc
Portability problems fixed by Gnulib:
(size_t) -1
and set errno to EILSEQ:
glibc 2.35.
(size_t) -2 when the input
is empty:
glibc 2.19,
mingw with UCRT, MSVC 14, Android 11.
(size_t) -1 instead of (size_t) -2
when the input is empty:
AIX 7.2.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the ISO C11 function mbrtoc32, provided by Gnulib module
mbrtoc32, operates on 32-bit wide characters and therefore does not have
this limitation.
Next: mbsnrtowcs, Previous: mbrtowc, Up: Functions in <wchar.h> [Contents][Index]
mbsinitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbsinit.html
Gnulib module: mbsinit
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mbrtoc16 or mbrtoc8.
Next: mbsrtowcs, Previous: mbsinit, Up: Functions in <wchar.h> [Contents][Index]
mbsnrtowcsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbsnrtowcs.html
Gnulib module: mbsnrtowcs
Portability problems fixed by Gnulib:
(size_t) -1
and set errno to EILSEQ:
glibc 2.35.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function mbsnrtoc32s, provided by Gnulib module
mbsnrtoc32s, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: open_wmemstream, Previous: mbsnrtowcs, Up: Functions in <wchar.h> [Contents][Index]
mbsrtowcsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbsrtowcs.html
Gnulib module: mbsrtowcs
Portability problems fixed by Gnulib:
(size_t) -1
and set errno to EILSEQ:
glibc 2.35.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function mbsrtoc32s, provided by Gnulib module
mbsrtoc32s, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: putwc, Previous: mbsrtowcs, Up: Functions in <wchar.h> [Contents][Index]
open_wmemstreamPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/open_wmemstream.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: putwchar, Previous: open_wmemstream, Up: Functions in <wchar.h> [Contents][Index]
putwcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/putwc.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: swprintf, Previous: putwc, Up: Functions in <wchar.h> [Contents][Index]
putwcharPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/putwchar.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: swscanf, Previous: putwchar, Up: Functions in <wchar.h> [Contents][Index]
swprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/swprintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
_FORTIFY_SOURCE >= 2 (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14,
Haiku.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
%c and %s conversions may fail
on some platforms:
glibc 2.35, musl libc 1.2.4, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, Cygwin 2.9.0.
%lc directive may fail on some platforms:
musl libc 1.2.4, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2.
Next: ungetwc, Previous: swprintf, Up: Functions in <wchar.h> [Contents][Index]
swscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/swscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-swscanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: vfwprintf, Previous: swscanf, Up: Functions in <wchar.h> [Contents][Index]
ungetwcPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/ungetwc.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: vfwscanf, Previous: ungetwc, Up: Functions in <wchar.h> [Contents][Index]
vfwprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vfwprintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14,
Haiku.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
%c and %s conversions may fail
on some platforms:
glibc 2.35.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: vswprintf, Previous: vfwprintf, Up: Functions in <wchar.h> [Contents][Index]
vfwscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vfwscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-vfwscanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: vswscanf, Previous: vfwscanf, Up: Functions in <wchar.h> [Contents][Index]
vswprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vswprintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14,
Haiku.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
%c and %s conversions may fail
on some platforms:
glibc 2.35.
Next: vwprintf, Previous: vswprintf, Up: Functions in <wchar.h> [Contents][Index]
vswscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vswscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-vswscanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: vwscanf, Previous: vswscanf, Up: Functions in <wchar.h> [Contents][Index]
vwprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vwprintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14,
Haiku.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
%c and %s conversions may fail
on some platforms:
glibc 2.35.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Next: wcpcpy, Previous: vwprintf, Up: Functions in <wchar.h> [Contents][Index]
vwscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/vwscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-vwscanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcpncpy, Previous: vwscanf, Up: Functions in <wchar.h> [Contents][Index]
wcpcpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcpcpy.html
Gnulib module: wcpcpy
Portability problems fixed by Gnulib:
-D_GNU_SOURCE) on some platforms:
glibc 2.13.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcrtomb, Previous: wcpcpy, Up: Functions in <wchar.h> [Contents][Index]
wcpncpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcpncpy.html
Gnulib module: wcpncpy
Portability problems fixed by Gnulib:
-D_GNU_SOURCE) on some platforms:
glibc 2.13.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcscasecmp, Previous: wcpncpy, Up: Functions in <wchar.h> [Contents][Index]
wcrtombPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcrtomb.html
Gnulib module: wcrtomb
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the ISO C11 function c32rtomb, provided by Gnulib module
c32rtomb, operates on 32-bit wide characters and therefore does not have
this limitation.
Next: wcscasecmp_l, Previous: wcrtomb, Up: Functions in <wchar.h> [Contents][Index]
wcscasecmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcscasecmp.html
Gnulib module: wcscasecmp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcscat, Previous: wcscasecmp, Up: Functions in <wchar.h> [Contents][Index]
wcscasecmp_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcscasecmp_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcschr, Previous: wcscasecmp_l, Up: Functions in <wchar.h> [Contents][Index]
wcscatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcscat.html
Gnulib module: wcscat
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcscmp, Previous: wcscat, Up: Functions in <wchar.h> [Contents][Index]
wcschrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcschr.html
Gnulib module: wcschr
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcscoll, Previous: wcschr, Up: Functions in <wchar.h> [Contents][Index]
wcscmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcscmp.html
Gnulib module: wcscmp
Portability problems fixed by Gnulib:
wchar_t is signed, on some platforms:
glibc 2.14.1 on x86 or x86_64, musl libc 1.2.3, macOS 14,
FreeBSD 13.2,
NetBSD 10.0, OpenBSD 7.2, Solaris 11.4.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcscoll_l, Previous: wcscmp, Up: Functions in <wchar.h> [Contents][Index]
wcscollPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcscoll.html
Gnulib module: wcscoll
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcscpy, Previous: wcscoll, Up: Functions in <wchar.h> [Contents][Index]
wcscoll_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcscoll_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcscspn, Previous: wcscoll_l, Up: Functions in <wchar.h> [Contents][Index]
wcscpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcscpy.html
Gnulib module: wcscpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Note: wcscpy (dst, src) is only safe to use when you can guarantee that
there are at least wcslen (src) + 1 wide characters allocated at
dst.
Next: wcsdup, Previous: wcscpy, Up: Functions in <wchar.h> [Contents][Index]
wcscspnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcscspn.html
Gnulib module: wcscspn
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsftime, Previous: wcscspn, Up: Functions in <wchar.h> [Contents][Index]
wcsdupPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsdup.html
Gnulib module: wcsdup
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcslcat, Previous: wcsdup, Up: Functions in <wchar.h> [Contents][Index]
wcsftimePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsftime.html
Gnulib module: wcsftime
Portability problems fixed by Gnulib:
TZ has been set by Cygwin.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcslcpy, Previous: wcsftime, Up: Functions in <wchar.h> [Contents][Index]
wcslcatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcslcat.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Truncating-Strings.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: wcslen, Previous: wcslcat, Up: Functions in <wchar.h> [Contents][Index]
wcslcpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcslcpy.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Truncating-Strings.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: wcsncasecmp, Previous: wcslcpy, Up: Functions in <wchar.h> [Contents][Index]
wcslenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcslen.html
Gnulib module: wcslen
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsncasecmp_l, Previous: wcslen, Up: Functions in <wchar.h> [Contents][Index]
wcsncasecmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsncasecmp.html
Gnulib module: wcsncasecmp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsncat, Previous: wcsncasecmp, Up: Functions in <wchar.h> [Contents][Index]
wcsncasecmp_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsncasecmp_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsncmp, Previous: wcsncasecmp_l, Up: Functions in <wchar.h> [Contents][Index]
wcsncatPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsncat.html
Gnulib module: wcsncat
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsncpy, Previous: wcsncat, Up: Functions in <wchar.h> [Contents][Index]
wcsncmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsncmp.html
Gnulib module: wcsncmp
Portability problems fixed by Gnulib:
wchar_t is signed, on some platforms:
glibc 2.14.1 on x86 or x86_64, musl libc 1.2.3, macOS 14,
FreeBSD 13.2,
NetBSD 10.0, OpenBSD 7.2, Solaris 11.4.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsnlen, Previous: wcsncmp, Up: Functions in <wchar.h> [Contents][Index]
wcsncpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsncpy.html
Gnulib module: wcsncpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore
cannot accommodate all Unicode characters.
Note: This function has no real use: It cannot be used for filling a fixed-size record with a wide string, before writing it to a file, because the wide string encoding is platform dependent and, on some platforms, also locale dependent. And this function is not appropriate for copying a wide string into a bounded memory area, because you have no guarantee that the result will be null-terminated. Even if you add the null character at the end yourself, this function is inefficient (as it spends time clearing unused memory) and will allow silent truncation to occur, which is not a good behavior for GNU programs.
Next: wcsnrtombs, Previous: wcsncpy, Up: Functions in <wchar.h> [Contents][Index]
wcsnlenPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsnlen.html
Gnulib module: wcsnlen
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcspbrk, Previous: wcsnlen, Up: Functions in <wchar.h> [Contents][Index]
wcsnrtombsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsnrtombs.html
Gnulib module: wcsnrtombs
Portability problems fixed by Gnulib:
<wchar.h> defines std::wcsnrtombs but
not ::wcsnrtombs on some platforms:
Solaris 11 OpenIndiana.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32snrtombs, provided by Gnulib module
c32snrtombs, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: wcsrchr, Previous: wcsnrtombs, Up: Functions in <wchar.h> [Contents][Index]
wcspbrkPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcspbrk.html
Gnulib module: wcspbrk
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsrtombs, Previous: wcspbrk, Up: Functions in <wchar.h> [Contents][Index]
wcsrchrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsrchr.html
Gnulib module: wcsrchr
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsspn, Previous: wcsrchr, Up: Functions in <wchar.h> [Contents][Index]
wcsrtombsPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsrtombs.html
Gnulib module: wcsrtombs
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32srtombs, provided by Gnulib module
c32srtombs, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: wcsstr, Previous: wcsrtombs, Up: Functions in <wchar.h> [Contents][Index]
wcsspnPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsspn.html
Gnulib module: wcsspn
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstod, Previous: wcsspn, Up: Functions in <wchar.h> [Contents][Index]
wcsstrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsstr.html
Gnulib module: wcsstr or wcsstr-simple
Portability problems fixed by either Gnulib module wcsstr-simple or wcsstr:
Portability problems fixed by Gnulib module wcsstr:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstof, Previous: wcsstr, Up: Functions in <wchar.h> [Contents][Index]
wcstodPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstod.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstok, Previous: wcstod, Up: Functions in <wchar.h> [Contents][Index]
wcstofPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstof.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstol, Previous: wcstof, Up: Functions in <wchar.h> [Contents][Index]
wcstokPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstok.html
Gnulib module: wcstok
Portability problems fixed by Gnulib:
wcstok iteration loops are being performed
in the same thread, on some platforms:
HP-UX 11.31.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstold, Previous: wcstok, Up: Functions in <wchar.h> [Contents][Index]
wcstolPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstol.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstoll, Previous: wcstol, Up: Functions in <wchar.h> [Contents][Index]
wcstoldPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstold.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstoul, Previous: wcstold, Up: Functions in <wchar.h> [Contents][Index]
wcstollPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstoll.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstoull, Previous: wcstoll, Up: Functions in <wchar.h> [Contents][Index]
wcstoulPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstoul.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcswidth, Previous: wcstoul, Up: Functions in <wchar.h> [Contents][Index]
wcstoullPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstoull.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsxfrm, Previous: wcstoull, Up: Functions in <wchar.h> [Contents][Index]
wcswidthPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcswidth.html
Gnulib module: wcswidth
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
However, the Gnulib function c32swidth, provided by Gnulib module
c32swidth, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: wcsxfrm_l, Previous: wcswidth, Up: Functions in <wchar.h> [Contents][Index]
wcsxfrmPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsxfrm.html
Gnulib module: wcsxfrm
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wctob, Previous: wcsxfrm, Up: Functions in <wchar.h> [Contents][Index]
wcsxfrm_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcsxfrm_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcwidth, Previous: wcsxfrm_l, Up: Functions in <wchar.h> [Contents][Index]
wctobPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wctob.html
Gnulib module: wctob
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32tob, provided by Gnulib module
c32tob, operates on 32-bit wide characters and therefore does not have
this limitation.
Next: wmemchr, Previous: wctob, Up: Functions in <wchar.h> [Contents][Index]
wcwidthPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcwidth.html
Gnulib module: wcwidth
Portability problems fixed by Gnulib:
-D_GNU_SOURCE) on some platforms:
glibc 2.8.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
However, the Gnulib function c32width, provided by Gnulib module
c32width, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: wmemcmp, Previous: wcwidth, Up: Functions in <wchar.h> [Contents][Index]
wmemchrPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wmemchr.html
Gnulib module: wmemchr
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wmemcpy, Previous: wmemchr, Up: Functions in <wchar.h> [Contents][Index]
wmemcmpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wmemcmp.html
Gnulib module: wmemcmp
Portability problems fixed by Gnulib:
wchar_t is signed, on some platforms:
glibc 2.14.1 on x86 or x86_64, musl libc 1.2.3, NetBSD 10.0, OpenBSD 7.2, Solaris 11.4.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wmemmove, Previous: wmemcmp, Up: Functions in <wchar.h> [Contents][Index]
wmemcpyPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wmemcpy.html
Gnulib module: wmemcpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wmemset, Previous: wmemcpy, Up: Functions in <wchar.h> [Contents][Index]
wmemmovePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wmemmove.html
Gnulib module: wmemmove
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wprintf, Previous: wmemmove, Up: Functions in <wchar.h> [Contents][Index]
wmemsetPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wmemset.html
Gnulib module: wmemset
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wscanf, Previous: wmemset, Up: Functions in <wchar.h> [Contents][Index]
wprintfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wprintf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14,
Haiku.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
%c and %s conversions may fail
on some platforms:
glibc 2.35.
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Previous: wprintf, Up: Functions in <wchar.h> [Contents][Index]
wscanfPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wscanf.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-wscanf.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.38, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2,
AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: Functions in <wordexp.h>, Previous: Functions in <wchar.h>, Up: Function Substitutes [Contents][Index]
<wctype.h>| • iswalnum | ||
| • iswalnum_l | ||
| • iswalpha | ||
| • iswalpha_l | ||
| • iswblank | ||
| • iswblank_l | ||
| • iswcntrl | ||
| • iswcntrl_l | ||
| • iswctype | ||
| • iswctype_l | ||
| • iswdigit | ||
| • iswdigit_l | ||
| • iswgraph | ||
| • iswgraph_l | ||
| • iswlower | ||
| • iswlower_l | ||
| • iswprint | ||
| • iswprint_l | ||
| • iswpunct | ||
| • iswpunct_l | ||
| • iswspace | ||
| • iswspace_l | ||
| • iswupper | ||
| • iswupper_l | ||
| • iswxdigit | ||
| • iswxdigit_l | ||
| • towctrans | ||
| • towctrans_l | ||
| • towlower | ||
| • towlower_l | ||
| • towupper | ||
| • towupper_l | ||
| • wctrans | ||
| • wctrans_l | ||
| • wctype | ||
| • wctype_l |
Next: iswalnum_l, Up: Functions in <wctype.h> [Contents][Index]
iswalnumPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswalnum.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isalnum, provided by Gnulib module
c32isalnum, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswalpha, Previous: iswalnum, Up: Functions in <wctype.h> [Contents][Index]
iswalnum_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswalnum_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswalpha_l, Previous: iswalnum_l, Up: Functions in <wctype.h> [Contents][Index]
iswalphaPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswalpha.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isalpha, provided by Gnulib module
c32isalpha, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswblank, Previous: iswalpha, Up: Functions in <wctype.h> [Contents][Index]
iswalpha_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswalpha_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswblank_l, Previous: iswalpha_l, Up: Functions in <wctype.h> [Contents][Index]
iswblankPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswblank.html
Gnulib module: iswblank
Portability problems fixed by Gnulib:
-D_GNU_SOURCE) on some platforms:
glibc 2.8.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isblank, provided by Gnulib module
c32isblank, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswcntrl, Previous: iswblank, Up: Functions in <wctype.h> [Contents][Index]
iswblank_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswblank_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswcntrl_l, Previous: iswblank_l, Up: Functions in <wctype.h> [Contents][Index]
iswcntrlPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswcntrl.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32iscntrl, provided by Gnulib module
c32iscntrl, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswctype, Previous: iswcntrl, Up: Functions in <wctype.h> [Contents][Index]
iswcntrl_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswcntrl_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswctype_l, Previous: iswcntrl_l, Up: Functions in <wctype.h> [Contents][Index]
iswctypePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswctype.html
Gnulib module: iswctype
Portability problems fixed by Gnulib:
<wchar.h>, not in <wctype.h>, on
some platforms:
HP-UX 11.00.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
However, the Gnulib function c32_apply_type_test, provided by Gnulib
module c32_apply_type_test, operates on 32-bit wide characters and
therefore does not have this limitation.
Next: iswdigit, Previous: iswctype, Up: Functions in <wctype.h> [Contents][Index]
iswctype_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswctype_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswdigit_l, Previous: iswctype_l, Up: Functions in <wctype.h> [Contents][Index]
iswdigitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswdigit.html
Gnulib module: iswdigit
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isdigit, provided by Gnulib module
c32isdigit, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswgraph, Previous: iswdigit, Up: Functions in <wctype.h> [Contents][Index]
iswdigit_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswdigit_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswgraph_l, Previous: iswdigit_l, Up: Functions in <wctype.h> [Contents][Index]
iswgraphPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswgraph.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isgraph, provided by Gnulib module
c32isgraph, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswlower, Previous: iswgraph, Up: Functions in <wctype.h> [Contents][Index]
iswgraph_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswgraph_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswlower_l, Previous: iswgraph_l, Up: Functions in <wctype.h> [Contents][Index]
iswlowerPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswlower.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32islower, provided by Gnulib module
c32islower, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswprint, Previous: iswlower, Up: Functions in <wctype.h> [Contents][Index]
iswlower_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswlower_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswprint_l, Previous: iswlower_l, Up: Functions in <wctype.h> [Contents][Index]
iswprintPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswprint.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
'\t') character
on some platforms:
mingw.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isprint, provided by Gnulib module
c32isprint, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswpunct, Previous: iswprint, Up: Functions in <wctype.h> [Contents][Index]
iswprint_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswprint_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswpunct_l, Previous: iswprint_l, Up: Functions in <wctype.h> [Contents][Index]
iswpunctPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswpunct.html
Gnulib module: iswpunct
Portability problems fixed by Gnulib:
ispunct function, because it
returns false for the characters '$', '+', '<',
'=', '>', '^', '`' , '|', '~'
on some platforms:
Android 11.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32ispunct, provided by Gnulib module
c32ispunct, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswspace, Previous: iswpunct, Up: Functions in <wctype.h> [Contents][Index]
iswpunct_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswpunct_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswspace_l, Previous: iswpunct_l, Up: Functions in <wctype.h> [Contents][Index]
iswspacePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswspace.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isspace, provided by Gnulib module
c32isspace, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswupper, Previous: iswspace, Up: Functions in <wctype.h> [Contents][Index]
iswspace_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswspace_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswupper_l, Previous: iswspace_l, Up: Functions in <wctype.h> [Contents][Index]
iswupperPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswupper.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isupper, provided by Gnulib module
c32isupper, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: iswxdigit, Previous: iswupper, Up: Functions in <wctype.h> [Contents][Index]
iswupper_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswupper_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: iswxdigit_l, Previous: iswupper_l, Up: Functions in <wctype.h> [Contents][Index]
iswxdigitPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswxdigit.html
Gnulib module: iswxdigit
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function c32isxdigit, provided by Gnulib module
c32isxdigit, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: towctrans, Previous: iswxdigit, Up: Functions in <wctype.h> [Contents][Index]
iswxdigit_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/iswxdigit_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: towctrans_l, Previous: iswxdigit_l, Up: Functions in <wctype.h> [Contents][Index]
towctransPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/towctrans.html
Gnulib module: towctrans
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
However, the Gnulib function c32_apply_mapping, provided by Gnulib
module c32_apply_mapping, operates on 32-bit wide characters and
therefore does not have this limitation.
Next: towlower, Previous: towctrans, Up: Functions in <wctype.h> [Contents][Index]
towctrans_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/towctrans_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: towlower_l, Previous: towctrans_l, Up: Functions in <wctype.h> [Contents][Index]
towlowerPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/towlower.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
However, the Gnulib function c32tolower, provided by Gnulib module
c32tolower, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: towupper, Previous: towlower, Up: Functions in <wctype.h> [Contents][Index]
towlower_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/towlower_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: towupper_l, Previous: towlower_l, Up: Functions in <wctype.h> [Contents][Index]
towupperPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/towupper.html
Gnulib module: wctype-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
However, the Gnulib function c32toupper, provided by Gnulib module
c32toupper, operates on 32-bit wide characters and therefore does not
have this limitation.
Next: wctrans, Previous: towupper, Up: Functions in <wctype.h> [Contents][Index]
towupper_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/towupper_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wctrans_l, Previous: towupper_l, Up: Functions in <wctype.h> [Contents][Index]
wctransPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wctrans.html
Gnulib module: wctrans
Portability problems fixed by Gnulib:
"tolower" and "toupper"
mappings on some platforms:
NetBSD 10.0.
(It returns non-null values for the arguments "towlower" and
"towupper", but with these values, the function towctrans
always crashes.)
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
However, the Gnulib function c32_get_mapping, provided by Gnulib module
c32_get_mapping, operates on 32-bit wide characters and therefore does
not have this limitation.
Next: wctype, Previous: wctrans, Up: Functions in <wctype.h> [Contents][Index]
wctrans_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wctrans_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wctype_l, Previous: wctrans_l, Up: Functions in <wctype.h> [Contents][Index]
wctypePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wctype.html
Gnulib module: wctype
Portability problems fixed by Gnulib:
<wchar.h>, not in <wctype.h>, on
some platforms:
HP-UX 11.00.
"blank" character class
on some platforms:
mingw.
"blank" character class
is inconsistent with the iswblank and isblank functions
on some platforms:
MSVC 14.
"punct" character class
is inconsistent with the ispunct function on some platforms:
Android 11.
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
However, the Gnulib function c32_get_type_test, provided by Gnulib
module c32_get_type_test, operates on 32-bit wide characters and
therefore does not have this limitation.
Previous: wctype, Up: Functions in <wctype.h> [Contents][Index]
wctype_lPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wctype_l.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Previous: Functions in <wctype.h>, Up: Function Substitutes [Contents][Index]
<wordexp.h>| • wordexp | ||
| • wordfree |
Next: wordfree, Up: Functions in <wordexp.h> [Contents][Index]
wordexpPOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wordexp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
errno or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
Previous: wordexp, Up: Functions in <wordexp.h> [Contents][Index]
wordfreePOSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/wordfree.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc Header File Substitutes, Previous: Function Substitutes, Up: Top [Contents][Index]
This chapter describes which functions and function-like macros specified by older versions of POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.
The notation “Gnulib module: —” means that Gnulib does not provide a
module providing a substitute for the function. When the list
“Portability problems not fixed by Gnulib” is empty, such a module is
not needed: No portability problems are known. Otherwise, it indicates
that such a module would be useful but is not available: No one so far
found this function important enough to contribute a substitute for it.
If you need this particular function, you may write to
<bug-gnulib at gnu dot org>.
Next: _setjmp, Up: Legacy Function Substitutes [Contents][Index]
_longjmpRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/_longjmp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: Despite its being removed from POSIX, in 2024 on all
systems which have _setjmp, it is the fastest way to save the
registers but not the signal mask (up to 30 times faster than setjmp
on some systems).
Next: _tolower, Previous: _longjmp, Up: Legacy Function Substitutes [Contents][Index]
_setjmpRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/_setjmp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: Despite its being removed from POSIX, in 2024 on all
systems which have _setjmp, it is the fastest way to save the
registers but not the signal mask (up to 30 times faster than setjmp
on some systems).
Next: _toupper, Previous: _setjmp, Up: Legacy Function Substitutes [Contents][Index]
_tolowerRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/_tolower.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
tolower instead.
Next: bcmp, Previous: _tolower, Up: Legacy Function Substitutes [Contents][Index]
_toupperRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/_toupper.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
toupper instead.
Next: bcopy, Previous: _toupper, Up: Legacy Function Substitutes [Contents][Index]
bcmpRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/bcmp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
memcmp
instead.
Next: bsd_signal, Previous: bcmp, Up: Legacy Function Substitutes [Contents][Index]
bcopyRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/bcopy.html
Gnulib module: bcopy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
memcpy
or memmove instead.
Next: bzero, Previous: bcopy, Up: Legacy Function Substitutes [Contents][Index]
bsd_signalRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/bsd_signal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ecvt, Previous: bsd_signal, Up: Legacy Function Substitutes [Contents][Index]
bzeroRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/bzero.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
memset
instead.
Next: fattach, Previous: bzero, Up: Legacy Function Substitutes [Contents][Index]
ecvtRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/ecvt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sprintf
instead.
Next: fcvt, Previous: ecvt, Up: Legacy Function Substitutes [Contents][Index]
fattachRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/fattach.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fdetach, Previous: fattach, Up: Legacy Function Substitutes [Contents][Index]
fcvtRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/fcvt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sprintf
instead.
Next: ftime, Previous: fcvt, Up: Legacy Function Substitutes [Contents][Index]
fdetachRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdetach.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ftw, Previous: fdetach, Up: Legacy Function Substitutes [Contents][Index]
ftimeRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/ftime.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
TZ has been set by Cygwin.
clock_gettime instead, and use ftime only as a fallback for
portability to Windows platforms.
Next: gcvt, Previous: ftime, Up: Legacy Function Substitutes [Contents][Index]
ftwRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftw.html
Gnulib module: —
Portability problems fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files 2 GiB and larger. See Large File Support.
Portability problems not fixed by Gnulib:
fts instead.
Next: getcontext, Previous: ftw, Up: Legacy Function Substitutes [Contents][Index]
gcvtRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/gcvt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sprintf
instead.
Next: gethostbyaddr, Previous: gcvt, Up: Legacy Function Substitutes [Contents][Index]
getcontextRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/getcontext.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: A third-party implementation is available at https://github.com/kaniini/libucontext/.
Next: gethostbyname, Previous: getcontext, Up: Legacy Function Substitutes [Contents][Index]
gethostbyaddrRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/gethostbyaddr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<winsock2.h> instead of <netdb.h>
on some platforms:
mingw, MSVC 14.
Next: getitimer, Previous: gethostbyaddr, Up: Legacy Function Substitutes [Contents][Index]
gethostbynameRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/gethostbyname.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
<winsock2.h> instead of <netdb.h>
on some platforms:
mingw, MSVC 14.
Next: getmsg, Previous: gethostbyname, Up: Legacy Function Substitutes [Contents][Index]
getitimerRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/getitimer.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
timer_gettime instead.
Next: getpmsg, Previous: getitimer, Up: Legacy Function Substitutes [Contents][Index]
getmsgRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/getmsg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gets, Previous: getmsg, Up: Legacy Function Substitutes [Contents][Index]
getpmsgRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpmsg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gettimeofday, Previous: getpmsg, Up: Legacy Function Substitutes [Contents][Index]
getsRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/gets.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
fgets instead.
errno being set to EINVAL instead of EAGAIN on
some platforms:
mingw, MSVC 14.
errno
upon failure.
Next: getwd, Previous: gets, Up: Legacy Function Substitutes [Contents][Index]
gettimeofdayRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday.html
Gnulib module: gettimeofday
Portability problems fixed by Gnulib:
struct
timezone* rather than void *, making it an error to redeclare
the function with the POSIX signature:
glibc.
However, rather than penalize these systems with a replacement
function, gnulib defines GETTIMEOFDAY_TIMEZONE to the
appropriate type for use in avoiding a compiler warning if assigning
gettimeofday to a function pointer.
Portability problems not fixed by Gnulib:
gettimeofday
is not NULL.
gettime or timespec_get instead.
(POSIX recommends to use the function clock_gettime, but there is
no corresponding Gnulib module for it yet.)
Next: h_errno, Previous: gettimeofday, Up: Legacy Function Substitutes [Contents][Index]
getwdRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/getwd.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
getcwd function instead.
Next: _index, Previous: getwd, Up: Legacy Function Substitutes [Contents][Index]
h_errnoRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/h_errno.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ioctl, Previous: h_errno, Up: Legacy Function Substitutes [Contents][Index]
indexRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/index.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
strchr
instead.
Next: isascii, Previous: _index, Up: Legacy Function Substitutes [Contents][Index]
ioctlRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/ioctl.html
LSB specification:
Gnulib module: ioctl
Portability problems fixed by Gnulib:
ioctl is called
ioctlsocket, and error codes from this function are not placed in
errno, and WSAGetLastError must be used instead.
unsigned long rather than int
on some platforms:
glibc 2.26, macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, Haiku 2017.
Portability problems not fixed by Gnulib:
ioctl requests are platform and hardware specific.
Next: isastream, Previous: ioctl, Up: Legacy Function Substitutes [Contents][Index]
isasciiRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/isascii.html
Gnulib module: —
Portability problems not fixed by Gnulib:
Note: This function’s behaviour depends on the locale, but requires special
handling for the multibyte characters that occur in strings in locales with
MB_CUR_MAX > 1 (this includes all the common UTF-8 locales).
There are two alternative APIs:
c_isasciiThis function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.
mb_isasciiThis function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.
Next: makecontext, Previous: isascii, Up: Legacy Function Substitutes [Contents][Index]
isastreamRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/isastream.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mktemp, Previous: isastream, Up: Legacy Function Substitutes [Contents][Index]
makecontextRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/makecontext.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: A third-party implementation is available at https://github.com/kaniini/libucontext/.
Next: posix_trace_attr_destroy, Previous: makecontext, Up: Legacy Function Substitutes [Contents][Index]
mktempRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/mktemp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mkstemp instead.
Next: posix_trace_attr_getclockres, Previous: mktemp, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_destroyRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_destroy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getcreatetime, Previous: posix_trace_attr_destroy, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getclockresRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getclockres.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getgenversion, Previous: posix_trace_attr_getclockres, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getcreatetimeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getcreatetime.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getinherited, Previous: posix_trace_attr_getcreatetime, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getgenversionRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getgenversion.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getlogfullpolicy, Previous: posix_trace_attr_getgenversion, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getinheritedRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getinherited.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getlogsize, Previous: posix_trace_attr_getinherited, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getlogfullpolicyRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getlogfullpolicy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getmaxdatasize, Previous: posix_trace_attr_getlogfullpolicy, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getlogsizeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getlogsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getmaxsystemeventsize, Previous: posix_trace_attr_getlogsize, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getmaxdatasizeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getmaxdatasize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getmaxusereventsize, Previous: posix_trace_attr_getmaxdatasize, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getmaxsystemeventsizeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getmaxsystemeventsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getname, Previous: posix_trace_attr_getmaxsystemeventsize, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getmaxusereventsizeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getmaxusereventsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getstreamfullpolicy, Previous: posix_trace_attr_getmaxusereventsize, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getnameRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getname.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_getstreamsize, Previous: posix_trace_attr_getname, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getstreamfullpolicyRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getstreamfullpolicy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_init, Previous: posix_trace_attr_getstreamfullpolicy, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_getstreamsizeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_getstreamsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_setinherited, Previous: posix_trace_attr_getstreamsize, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_initRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_init.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_setlogfullpolicy, Previous: posix_trace_attr_init, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_setinheritedRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_setinherited.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_setlogsize, Previous: posix_trace_attr_setinherited, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_setlogfullpolicyRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_setlogfullpolicy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_setmaxdatasize, Previous: posix_trace_attr_setlogfullpolicy, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_setlogsizeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_setlogsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_setname, Previous: posix_trace_attr_setlogsize, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_setmaxdatasizeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_setmaxdatasize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_setstreamfullpolicy, Previous: posix_trace_attr_setmaxdatasize, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_setnameRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_setname.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_attr_setstreamsize, Previous: posix_trace_attr_setname, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_setstreamfullpolicyRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_setstreamfullpolicy.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_clear, Previous: posix_trace_attr_setstreamfullpolicy, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_attr_setstreamsizeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_attr_setstreamsize.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_close, Previous: posix_trace_attr_setstreamsize, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_clearRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_clear.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_create, Previous: posix_trace_clear, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_closeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_close.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_create_withlog, Previous: posix_trace_close, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_createRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_create.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_event, Previous: posix_trace_create, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_create_withlogRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_create_withlog.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventid_equal, Previous: posix_trace_create_withlog, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_event.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventid_get_name, Previous: posix_trace_event, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventid_equalRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventid_equal.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventid_open, Previous: posix_trace_eventid_equal, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventid_get_nameRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventid_get_name.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventset_add, Previous: posix_trace_eventid_get_name, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventid_openRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventid_open.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventset_del, Previous: posix_trace_eventid_open, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventset_addRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventset_add.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventset_empty, Previous: posix_trace_eventset_add, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventset_delRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventset_del.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventset_fill, Previous: posix_trace_eventset_del, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventset_emptyRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventset_empty.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventset_ismember, Previous: posix_trace_eventset_empty, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventset_fillRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventset_fill.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventtypelist_getnext_id, Previous: posix_trace_eventset_fill, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventset_ismemberRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventset_ismember.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_eventtypelist_rewind, Previous: posix_trace_eventset_ismember, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventtypelist_getnext_idRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventtypelist_getnext_id.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_flush, Previous: posix_trace_eventtypelist_getnext_id, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_eventtypelist_rewindRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_eventtypelist_rewind.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_get_attr, Previous: posix_trace_eventtypelist_rewind, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_flushRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_flush.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_get_filter, Previous: posix_trace_flush, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_get_attrRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_get_attr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_get_status, Previous: posix_trace_get_attr, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_get_filterRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_get_filter.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_getnext_event, Previous: posix_trace_get_filter, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_get_statusRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_get_status.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_open, Previous: posix_trace_get_status, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_getnext_eventRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_getnext_event.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_rewind, Previous: posix_trace_getnext_event, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_openRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_open.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_set_filter, Previous: posix_trace_open, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_rewindRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_rewind.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_shutdown, Previous: posix_trace_rewind, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_set_filterRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_set_filter.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_start, Previous: posix_trace_set_filter, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_shutdownRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_shutdown.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_stop, Previous: posix_trace_shutdown, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_startRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_start.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_timedgetnext_event, Previous: posix_trace_start, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_stopRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_stop.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_trid_eventid_open, Previous: posix_trace_stop, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_timedgetnext_eventRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_timedgetnext_event.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_trace_trygetnext_event, Previous: posix_trace_timedgetnext_event, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_trid_eventid_openRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_trid_eventid_open.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getstackaddr, Previous: posix_trace_trid_eventid_open, Up: Legacy Function Substitutes [Contents][Index]
posix_trace_trygetnext_eventRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_trace_trygetnext_event.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setstackaddr, Previous: posix_trace_trygetnext_event, Up: Legacy Function Substitutes [Contents][Index]
pthread_attr_getstackaddrRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_attr_getstackaddr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_getconcurrency, Previous: pthread_attr_getstackaddr, Up: Legacy Function Substitutes [Contents][Index]
pthread_attr_setstackaddrRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_attr_setstackaddr.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setconcurrency, Previous: pthread_attr_setstackaddr, Up: Legacy Function Substitutes [Contents][Index]
pthread_getconcurrencyRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_getconcurrency.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: putmsg, Previous: pthread_getconcurrency, Up: Legacy Function Substitutes [Contents][Index]
pthread_setconcurrencyRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_setconcurrency.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: putpmsg, Previous: pthread_setconcurrency, Up: Legacy Function Substitutes [Contents][Index]
putmsgRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/putmsg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rindex, Previous: putmsg, Up: Legacy Function Substitutes [Contents][Index]
putpmsgRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/putpmsg.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalb, Previous: putpmsg, Up: Legacy Function Substitutes [Contents][Index]
rindexRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/rindex.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
strrchr
instead.
Next: setcontext, Previous: rindex, Up: Legacy Function Substitutes [Contents][Index]
scalbRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/scalb.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setitimer, Previous: scalb, Up: Legacy Function Substitutes [Contents][Index]
setcontextRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/setcontext.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: A third-party implementation is available at https://github.com/kaniini/libucontext/.
Next: setpgrp, Previous: setcontext, Up: Legacy Function Substitutes [Contents][Index]
setitimerRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/setitimer.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
timer_create and timer_settime instead.
Next: sighold, Previous: setitimer, Up: Legacy Function Substitutes [Contents][Index]
setpgrpRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpgrp.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
setpgid or setsid instead, as appropriate.
Next: sigignore, Previous: setpgrp, Up: Legacy Function Substitutes [Contents][Index]
sigholdRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/sighold.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigprocmask instead.
Next: siginterrupt, Previous: sighold, Up: Legacy Function Substitutes [Contents][Index]
sigignoreRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigignore.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigaction instead.
Next: sigpause, Previous: sigignore, Up: Legacy Function Substitutes [Contents][Index]
siginterruptRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/siginterrupt.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigaction instead.
Note: POSIX recommends using sigaction with SA_RESTART instead of
siginterrupt (sig, 0).
Next: sigrelse, Previous: siginterrupt, Up: Legacy Function Substitutes [Contents][Index]
sigpauseRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigpause.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sigpause-3.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigsuspend instead.
Next: sigset, Previous: sigpause, Up: Legacy Function Substitutes [Contents][Index]
sigrelseRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigrelse.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigprocmask instead.
Next: swapcontext, Previous: sigrelse, Up: Legacy Function Substitutes [Contents][Index]
sigsetRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigset.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
sigaction instead.
Next: tempnam, Previous: sigset, Up: Legacy Function Substitutes [Contents][Index]
swapcontextRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/swapcontext.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: A third-party implementation is available at https://github.com/kaniini/libucontext/.
Next: toascii, Previous: swapcontext, Up: Legacy Function Substitutes [Contents][Index]
tempnamRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/tempnam.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
mkstemp instead.
mkstemp instead.
Next: ualarm, Previous: tempnam, Up: Legacy Function Substitutes [Contents][Index]
toasciiRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/toascii.html
Gnulib module: ctype
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ulimit, Previous: toascii, Up: Legacy Function Substitutes [Contents][Index]
ualarmRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/ualarm.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: usleep, Previous: ualarm, Up: Legacy Function Substitutes [Contents][Index]
ulimitRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/ulimit.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
getrlimit and setrlimit instead.
Next: utime, Previous: ulimit, Up: Legacy Function Substitutes [Contents][Index]
usleepRemoved in POSIX.1-2008.
POSIX.1-2004 specification:
https://pubs.opengroup.org/onlinepubs/009695399/functions/usleep.html
Gnulib module: usleep
Portability problems fixed by Gnulib:
usleep rejects attempts to sleep longer than 1
second, as allowed by POSIX:
NetBSD 10.0, mingw.
Portability problems not fixed by Gnulib:
usleep function may interfere with the program’s
use of the SIGALRM signal. On Linux, it doesn’t; on other platforms,
it may.
usleep may sleep for less than the indicated duration:
Cygwin 3.5.3.
Next: vfork, Previous: usleep, Up: Legacy Function Substitutes [Contents][Index]
utimeRemoved in POSIX.1-2024.
POSIX.1-2017 specification:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/utime.html
Gnulib module: utime
Portability problems fixed by Gnulib:
TZ is set).
utime omits const
for the second argument:
mingw, MSVC 14.
utime("link-to-file/",buf) succeeds instead
of failing with ENOTDIR.
macOS 14.
Portability problems not fixed by Gnulib:
utimensat(AT_FDCWD,file,times,0),
or the gnulib module utimens,
instead.
utimens instead.
Next: wcswcs, Previous: utime, Up: Legacy Function Substitutes [Contents][Index]
vforkRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/vfork.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: vfork, Up: Legacy Function Substitutes [Contents][Index]
wcswcsRemoved in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.org/onlinepubs/009695399/functions/wcswcs.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
wcsstr
instead.
Next: Glibc Function Substitutes, Previous: Legacy Function Substitutes, Up: Top [Contents][Index]
This chapter describes which header files contained in GNU libc but not specified by ISO C or POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.
The notation “Gnulib module: —” means that Gnulib does not provide a
module providing a substitute for the header file. When the list
“Portability problems not fixed by Gnulib” is empty, such a module is
not needed: No portability problems are known. Otherwise, it indicates
that such a module would be useful but is not available: No one so far
found this header file important enough to contribute a substitute for it.
If you need this particular header file, you may write to
<bug-gnulib at gnu dot org>.
| • a.out.h | ||
| • aliases.h | ||
| • alloca.h | ||
| • ar.h | ||
| • argp.h | ||
| • argz.h | ||
| • byteswap.h | ||
| • crypt.h | ||
| • envz.h | ||
| • err.h | ||
| • error.h | ||
| • execinfo.h | ||
| • fpu_control.h | ||
| • fstab.h | ||
| • fts.h | ||
| • getopt.h | ||
| • gshadow.h | ||
| • ieee754.h | ||
| • ifaddrs.h | ||
| • link.h | ||
| • malloc.h | ||
| • mcheck.h | ||
| • mntent.h | ||
| • obstack.h | ||
| • paths.h | ||
| • printf.h | ||
| • pty.h | ||
| • resolv.h | ||
| • shadow.h | ||
| • sys/file.h | ||
| • sys/ioctl.h | ||
| • sys/random.h | ||
| • sysexits.h | ||
| • ttyent.h | ||
| • utmp.h |
Next: aliases.h, Up: Glibc Header File Substitutes [Contents][Index]
Describes the structure of executables (and object files?) in the old
a.out format.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: alloca.h, Previous: a.out.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct aliasent and declares the functions
setaliasent, endaliasent,
getaliasent, getaliasent_r,
getaliasbyname, getaliasbyname_r.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ar.h, Previous: aliases.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the alloca function of function-like macro.
Documentation:
Gnulib module: alloca
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp.h, Previous: alloca.h, Up: Glibc Header File Substitutes [Contents][Index]
Describes the structure of files produced by the ‘ar’ program.
Defines the type struct ar_hdr and the macros ARMAG,
SARMAG, ARFMAG.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz.h, Previous: ar.h, Up: Glibc Header File Substitutes [Contents][Index]
Documentation:
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: byteswap.h, Previous: argp.h, Up: Glibc Header File Substitutes [Contents][Index]
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: crypt.h, Previous: argz.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the functions or function-like macros bswap_16, bswap_32,
bswap_64.
Gnulib module: byteswap
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: envz.h, Previous: byteswap.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct crypt_data and declares the functions
crypt, crypt_r,
setkey, setkey_r,
encrypt, encrypt_r.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
crypt, setkey, encrypt are missing on some
platforms:
HP-UX 11.
struct crypt_data and the functions crypt_r,
setkey_r, encrypt_r are missing on some platforms:
Solaris 11.4, Cygwin.
Next: err.h, Previous: crypt.h, Up: Glibc Header File Substitutes [Contents][Index]
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: error.h, Previous: envz.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the functions
warn, vwarn, warnx, vwarnx,
err, verr, errx, verrx.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: execinfo.h, Previous: err.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the functions error, error_at_line and the variables
error_print_progname, error_message_count,
error_one_per_line.
Documentation:
Gnulib module: error-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fpu_control.h, Previous: error.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the functions backtrace, backtrace_symbols,
backtrace_symbols_fd.
Documentation:
Gnulib module: execinfo
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fstab.h, Previous: execinfo.h, Up: Glibc Header File Substitutes [Contents][Index]
Handling of the FPU control word. Defines the fpu_control_t type,
declares the __fpu_control variable, and defines the _FPU_GETCW,
_FPU_SETCW macros.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fts.h, Previous: fpu_control.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct fstab, the macros FSTAB_*,
_PATH_FSTAB, and declares the functions
setfsent, endfsent,
getfsent, getfsspec, getfsfile.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
_PATH_FSTAB is missing on some platforms:
AIX 5.1, HP-UX 11.
Next: getopt.h, Previous: fstab.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the types FTS, FTSENT and the macros FTS_*,
and declares the functions fts_open, fts_read,
fts_children, fts_set, fts_close.
Documentation:
Gnulib module: fts
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gshadow.h, Previous: fts.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct option and declares the variables
optarg, optind, opterr, optopt
and the functions getopt, getopt_long, getopt_long_only.
Documentation:
Gnulib module: getopt-gnu
Portability problems fixed by Gnulib:
getopt_long is missing on some platforms:
Solaris 9.
getopt_long_only is missing on some platforms:
FreeBSD 5.2.1, NetBSD 10.0, Solaris 9, mingw.
getopt does not handle a leading ‘+’ character in
the options string on some platforms:
Solaris 11 2010-11.
Portability problems not fixed by Gnulib:
Next: ieee754.h, Previous: getopt.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct sgrp and declares the functions
setsgent, endsgent, getsgent, getsgnam,
sgetsgent, fgetsgent, putsgent,
getsgent_r, getsgnam_r, sgetsgent_r, fgetsgent_r.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ifaddrs.h, Previous: gshadow.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the types union ieee754_float, union ieee754_double,
union ieee854_long_double.
Gnulib module: ieee754-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
long
double and does not work on some platforms.
Next: link.h, Previous: ieee754.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct ifaddrs and declares the functions
getifaddrs, freeifaddrs.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: malloc.h, Previous: ifaddrs.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct dl_phdr_info, and declares the function
dl_iterate_phdr.
Documentation: —
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mcheck.h, Previous: link.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the function memalign and functions for customizing the
malloc behavior.
Documentation:
Gnulib module: malloc-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mntent.h, Previous: malloc.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type enum mcheck_status and declares the functions
mcheck, mcheck_pedantic, mcheck_check_all, mprobe,
mtrace, muntrace.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: obstack.h, Previous: mcheck.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct mntent and the macros MNTTAB,
MOUNTED, MNTTYPE_*, MNTOPT_*, and declares the functions
setmntent, getmntent, getmntent_r, addmntent,
endmntent, hasmntopt.
Documentation:
Gnulib module: mntent-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
getmntent_r is missing on all non-glibc platforms:
AIX 5.1, HP-UX 11, Cygwin, Android 9.0.
Gnulib module mountlist provides a higher-level abstraction.
Next: paths.h, Previous: mntent.h, Up: Glibc Header File Substitutes [Contents][Index]
Documentation:
Gnulib module: obstack
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: printf.h, Previous: obstack.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the macros _PATH_*.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
_PATH_* macros is platform dependent.
Next: pty.h, Previous: paths.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct printf_info and the macros and enum values
PA_*, and declares the functions
printf_function, printf_arginfo_function,
register_printf_function, parse_printf_format,
printf_size, printf_size_info.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: resolv.h, Previous: printf.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the functions openpty and forkpty.
Documentation:
Gnulib module: pty-h
Portability problems fixed by Gnulib:
forkpty and openpty functions in util.h or
libutil.h instead:
macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5.
Portability problems not fixed by Gnulib:
Next: shadow.h, Previous: pty.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the types res_sendhookact, res_send_qhook,
res_send_rhook, res_state, struct res_sym and the
macros _PATH_RESCONF, RES_*, and declares the functions
res_close, res_init,
res_mkquery, res_query, res_querydomain,
res_search, res_send.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys/file.h, Previous: resolv.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct spwd and declares the functions
setspent, endspent,
getspent, getspent_r,
getspnam, getspnam_r,
sgetspent, sgetspent_r,
fgetspent, fgetspent_r,
putspent,
lckpwdf, ulckpwdf.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
getspent_r, getspnam_r, sgetspent_r,
fgetspent, fgetspent_r, putspent are missing on some
platforms:
HP-UX 11.
sgetspent, sgetspent_r are missing on some
platforms:
HP-UX 11, Solaris 11.4.
Next: sys/ioctl.h, Previous: shadow.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the function flock.
Gnulib module: sys_file-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
flock function on some platforms:
AIX 7.1, HP-UX 11.23, Solaris 11.4.
Next: sys/random.h, Previous: sys/file.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the function ioctl.
Documentation:
Gnulib module: sys_ioctl-h
Portability problems fixed by Gnulib:
ioctl function on some platforms:
AIX 5.1, Solaris 11.4, Haiku 2017.
Portability problems not fixed by Gnulib:
Next: sysexits.h, Previous: sys/ioctl.h, Up: Glibc Header File Substitutes [Contents][Index]
Declares the function getrandom and the flags for it.
Documentation:
Gnulib module: sys_random-h
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ttyent.h, Previous: sys/random.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the EX_* macros, including EX_OK.
Gnulib module: sysexits-h
Portability problems fixed by Gnulib:
EX_* macros if _BSD_SOURCE is not
defined on some platforms:
Haiku.
EX_CONFIG is missing on some platforms:
HP-UX 11.
Portability problems not fixed by Gnulib:
Next: utmp.h, Previous: sysexits.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines the type struct ttyent and declares the functions
setttyent, endttyent, getttyent, getttynam.
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ttyent.h, Up: Glibc Header File Substitutes [Contents][Index]
Defines functions for login and logout (to a tty session) and for examining the history of logins and logouts.
Documentation:
Gnulib module: utmp-h
Portability problems fixed by Gnulib:
<sys/types.h> is a prerequisite of <utmp.h> on some platforms:
FreeBSD 8.0, OpenBSD 7.2.
Portability problems not fixed by Gnulib:
struct utmp field ut_user,
older platforms have the field ut_name.
struct utmp fields ut_id, ut_pid, ut_type
do not exist on some platforms:
macOS, old FreeBSD, NetBSD, OpenBSD, Minix.
struct utmp field ut_host does not exist on some platforms:
Solaris.
struct utmp field ut_exit does not exist on some platforms:
macOS, old FreeBSD, NetBSD, OpenBSD, Minix, Cygwin.
struct utmp field ut_session does not exist on some platforms:
macOS, old FreeBSD, NetBSD, OpenBSD, Minix, AIX, HP-UX, Solaris, Cygwin.
struct utmp field ut_addr or ut_addr_v6 does not exist
on some platforms:
macOS, old FreeBSD, NetBSD, OpenBSD, Minix, AIX, Solaris.
time_t
was historically 32 bits.
year2038 or
year2038-recommended modules are used and the program is
configured without the --disable-year2038 option.
The readutmp module works around this problem:
glibc 2.38 on 32-bit platforms like x86 and ARM where time_t
was historically 32 bits.
See Avoiding the year 2038 problem.
Next: Native Windows Support, Previous: Glibc Header File Substitutes, Up: Top [Contents][Index]
This chapter describes which functions and function-like macros provided as extensions by at least GNU libc are also supported by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.
The notation “Gnulib module: —” means that Gnulib does not provide a
module providing a substitute for the function. When the list
“Portability problems not fixed by Gnulib” is empty, such a module is
not needed: No portability problems are known. Otherwise, it indicates
that such a module would be useful but is not available: No one so far
found this function important enough to contribute a substitute for it.
If you need this particular function, you may write to
<bug-gnulib at gnu dot org>.
This list of functions is sorted according to the header that declares them.
Next: Glibc aliases.h, Up: Glibc Function Substitutes [Contents][Index]
<aio.h>| • aio_init |
Up: Glibc aio.h [Contents][Index]
aio_initDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc argp.h, Previous: Glibc aio.h, Up: Glibc Function Substitutes [Contents][Index]
<aliases.h>| • endaliasent | ||
| • getaliasbyname | ||
| • getaliasbyname_r | ||
| • getaliasent | ||
| • getaliasent_r | ||
| • setaliasent |
Next: getaliasbyname, Up: Glibc aliases.h [Contents][Index]
endaliasentDocumentation:
man endaliasent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getaliasbyname_r, Previous: endaliasent, Up: Glibc aliases.h [Contents][Index]
getaliasbynameDocumentation:
man getaliasbyname
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getaliasent, Previous: getaliasbyname, Up: Glibc aliases.h [Contents][Index]
getaliasbyname_rDocumentation:
man getaliasbyname_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getaliasent_r, Previous: getaliasbyname_r, Up: Glibc aliases.h [Contents][Index]
getaliasentDocumentation:
man getaliasent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setaliasent, Previous: getaliasent, Up: Glibc aliases.h [Contents][Index]
getaliasent_rDocumentation:
man getaliasent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: getaliasent_r, Up: Glibc aliases.h [Contents][Index]
setaliasentDocumentation:
man setaliasent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc argz.h, Previous: Glibc aliases.h, Up: Glibc Function Substitutes [Contents][Index]
<argp.h>| • argp_err_exit_status | ||
| • argp_error | ||
| • argp_failure | ||
| • argp_help | ||
| • argp_parse | ||
| • argp_program_bug_address | ||
| • argp_program_version | ||
| • argp_program_version_hook | ||
| • argp_state_help | ||
| • argp_usage |
Next: argp_error, Up: Glibc argp.h [Contents][Index]
argp_err_exit_statusDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp_failure, Previous: argp_err_exit_status, Up: Glibc argp.h [Contents][Index]
argp_errorDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Helper-Functions.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp_help, Previous: argp_error, Up: Glibc argp.h [Contents][Index]
argp_failureDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Helper-Functions.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp_parse, Previous: argp_failure, Up: Glibc argp.h [Contents][Index]
argp_helpDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Help.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp_program_bug_address, Previous: argp_help, Up: Glibc argp.h [Contents][Index]
argp_parseDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp_program_version, Previous: argp_parse, Up: Glibc argp.h [Contents][Index]
argp_program_bug_addressDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp_program_version_hook, Previous: argp_program_bug_address, Up: Glibc argp.h [Contents][Index]
argp_program_versionDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp_state_help, Previous: argp_program_version, Up: Glibc argp.h [Contents][Index]
argp_program_version_hookDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argp_usage, Previous: argp_program_version_hook, Up: Glibc argp.h [Contents][Index]
argp_state_helpDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Helper-Functions.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: argp_state_help, Up: Glibc argp.h [Contents][Index]
argp_usageDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Argp-Helper-Functions.html.
Gnulib module: argp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc arpa/inet.h, Previous: Glibc argp.h, Up: Glibc Function Substitutes [Contents][Index]
<argz.h>| • argz_add | ||
| • argz_add_sep | ||
| • argz_append | ||
| • argz_count | ||
| • argz_create | ||
| • argz_create_sep | ||
| • argz_delete | ||
| • argz_extract | ||
| • argz_insert | ||
| • argz_next | ||
| • argz_replace | ||
| • argz_stringify |
Next: argz_add_sep, Up: Glibc argz.h [Contents][Index]
argz_addLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_append, Previous: argz_add, Up: Glibc argz.h [Contents][Index]
argz_add_sepLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_count, Previous: argz_add_sep, Up: Glibc argz.h [Contents][Index]
argz_appendLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_create, Previous: argz_append, Up: Glibc argz.h [Contents][Index]
argz_countLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_create_sep, Previous: argz_count, Up: Glibc argz.h [Contents][Index]
argz_createLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_delete, Previous: argz_create, Up: Glibc argz.h [Contents][Index]
argz_create_sepLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_extract, Previous: argz_create_sep, Up: Glibc argz.h [Contents][Index]
argz_deleteLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_insert, Previous: argz_delete, Up: Glibc argz.h [Contents][Index]
argz_extractLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_next, Previous: argz_extract, Up: Glibc argz.h [Contents][Index]
argz_insertLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_replace, Previous: argz_insert, Up: Glibc argz.h [Contents][Index]
argz_nextLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: argz_stringify, Previous: argz_next, Up: Glibc argz.h [Contents][Index]
argz_replaceLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: argz_replace, Up: Glibc argz.h [Contents][Index]
argz_stringifyLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-argz-add.html
Documentation:
Gnulib module: argz
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc arpa/nameser.h, Previous: Glibc argz.h, Up: Glibc Function Substitutes [Contents][Index]
<arpa/inet.h>| • inet_aton | ||
| • inet_lnaof | ||
| • inet_makeaddr | ||
| • inet_net_ntop | ||
| • inet_net_pton | ||
| • inet_netof | ||
| • inet_network | ||
| • inet_nsap_addr | ||
| • inet_nsap_ntoa |
Next: inet_lnaof, Up: Glibc arpa/inet.h [Contents][Index]
inet_atonLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-inet-aton-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet_makeaddr, Previous: inet_aton, Up: Glibc arpa/inet.h [Contents][Index]
inet_lnaofDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet_net_ntop, Previous: inet_lnaof, Up: Glibc arpa/inet.h [Contents][Index]
inet_makeaddrDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet_net_pton, Previous: inet_makeaddr, Up: Glibc arpa/inet.h [Contents][Index]
inet_net_ntopDocumentation:
man inet_net_ntop
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet_netof, Previous: inet_net_ntop, Up: Glibc arpa/inet.h [Contents][Index]
inet_net_ptonDocumentation:
man inet_net_pton
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet_network, Previous: inet_net_pton, Up: Glibc arpa/inet.h [Contents][Index]
inet_netofDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet_nsap_addr, Previous: inet_netof, Up: Glibc arpa/inet.h [Contents][Index]
inet_networkDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet_nsap_ntoa, Previous: inet_network, Up: Glibc arpa/inet.h [Contents][Index]
inet_nsap_addrGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: inet_nsap_addr, Up: Glibc arpa/inet.h [Contents][Index]
inet_nsap_ntoaGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc byteswap.h, Previous: Glibc arpa/inet.h, Up: Glibc Function Substitutes [Contents][Index]
<arpa/nameser.h>| • ns_name_compress | ||
| • ns_name_ntop | ||
| • ns_name_pack | ||
| • ns_name_pton | ||
| • ns_name_skip | ||
| • ns_name_uncompress | ||
| • ns_name_unpack |
Next: ns_name_ntop, Up: Glibc arpa/nameser.h [Contents][Index]
ns_name_compressDocumentation:
https://web.deu.edu.tr/doc/oreily/networking/dnsbind/ch14_02.htm
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ns_name_pack, Previous: ns_name_compress, Up: Glibc arpa/nameser.h [Contents][Index]
ns_name_ntopDocumentation: —
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ns_name_pton, Previous: ns_name_ntop, Up: Glibc arpa/nameser.h [Contents][Index]
ns_name_packDocumentation: —
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ns_name_skip, Previous: ns_name_pack, Up: Glibc arpa/nameser.h [Contents][Index]
ns_name_ptonDocumentation: —
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ns_name_uncompress, Previous: ns_name_pton, Up: Glibc arpa/nameser.h [Contents][Index]
ns_name_skipDocumentation:
https://web.deu.edu.tr/doc/oreily/networking/dnsbind/ch14_02.htm
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ns_name_unpack, Previous: ns_name_skip, Up: Glibc arpa/nameser.h [Contents][Index]
ns_name_uncompressDocumentation:
https://web.deu.edu.tr/doc/oreily/networking/dnsbind/ch14_02.htm
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ns_name_uncompress, Up: Glibc arpa/nameser.h [Contents][Index]
ns_name_unpackDocumentation: —
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
https://man7.org/linux/man-pages/man3/libsres.3.html https://www.kernel.org/doc/man-pages/online/pages/man3/
Next: Glibc complex.h, Previous: Glibc arpa/nameser.h, Up: Glibc Function Substitutes [Contents][Index]
<byteswap.h>| • bswap_16 | ||
| • bswap_32 | ||
| • bswap_64 |
Next: bswap_32, Up: Glibc byteswap.h [Contents][Index]
bswap_16Documentation:
man bswap_16
Gnulib module: byteswap
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: bswap_64, Previous: bswap_16, Up: Glibc byteswap.h [Contents][Index]
bswap_32Documentation:
man bswap_32
Gnulib module: byteswap
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: bswap_32, Up: Glibc byteswap.h [Contents][Index]
bswap_64Documentation:
man bswap_64
Gnulib module: byteswap
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc ctype.h, Previous: Glibc byteswap.h, Up: Glibc Function Substitutes [Contents][Index]
<complex.h>| • clog10 | ||
| • clog10f | ||
| • clog10l |
Next: clog10f, Up: Glibc complex.h [Contents][Index]
clog10LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib---clog10.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clog10l, Previous: clog10, Up: Glibc complex.h [Contents][Index]
clog10fLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib---clog10f.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: clog10f, Up: Glibc complex.h [Contents][Index]
clog10lLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib---clog10l.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc dirent.h, Previous: Glibc complex.h, Up: Glibc Function Substitutes [Contents][Index]
<ctype.h>| • isctype |
Up: Glibc ctype.h [Contents][Index]
isctypeGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc dlfcn.h, Previous: Glibc ctype.h, Up: Glibc Function Substitutes [Contents][Index]
<dirent.h>| • getdirentries | ||
| • scandirat | ||
| • versionsort |
Next: scandirat, Up: Glibc dirent.h [Contents][Index]
getdirentriesDocumentation:
man getdirentries
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. The fix is to use
the AC_SYS_LARGEFILE macro.
Next: versionsort, Previous: getdirentries, Up: Glibc dirent.h [Contents][Index]
scandiratDocumentation:
man scandirat
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: scandirat, Up: Glibc dirent.h [Contents][Index]
versionsortDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc envz.h, Previous: Glibc dirent.h, Up: Glibc Function Substitutes [Contents][Index]
<dlfcn.h>| • dladdr1 | ||
| • dlinfo | ||
| • dlmopen | ||
| • dlvsym | ||
| • _dl_find_object |
Next: dlinfo, Up: Glibc dlfcn.h [Contents][Index]
dladdr1Documentation:
man dladdr1
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dlmopen, Previous: dladdr1, Up: Glibc dlfcn.h [Contents][Index]
dlinfoDocumentation:
man dlinfo
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dlvsym, Previous: dlinfo, Up: Glibc dlfcn.h [Contents][Index]
dlmopenDocumentation:
man dlmopen
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: _dl_find_object, Previous: dlmopen, Up: Glibc dlfcn.h [Contents][Index]
dlvsymLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dlvsym-1.html
Documentation:
man dlvsym
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: dlvsym, Up: Glibc dlfcn.h [Contents][Index]
_dl_find_objectDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Dynamic-Linker-Introspection.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc err.h, Previous: Glibc dlfcn.h, Up: Glibc Function Substitutes [Contents][Index]
<envz.h>| • envz_add | ||
| • envz_entry | ||
| • envz_get | ||
| • envz_merge | ||
| • envz_remove | ||
| • envz_strip |
Next: envz_entry, Up: Glibc envz.h [Contents][Index]
envz_addLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-envz-add.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: envz_get, Previous: envz_add, Up: Glibc envz.h [Contents][Index]
envz_entryLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-envz-add.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: envz_merge, Previous: envz_entry, Up: Glibc envz.h [Contents][Index]
envz_getLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-envz-add.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: envz_remove, Previous: envz_get, Up: Glibc envz.h [Contents][Index]
envz_mergeLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-envz-add.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: envz_strip, Previous: envz_merge, Up: Glibc envz.h [Contents][Index]
envz_removeLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-envz-add.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: envz_remove, Up: Glibc envz.h [Contents][Index]
envz_stripLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-envz-add.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc errno.h, Previous: Glibc envz.h, Up: Glibc Function Substitutes [Contents][Index]
<err.h>| • err | ||
| • errx | ||
| • verr | ||
| • verrx | ||
| • vwarn | ||
| • vwarnx | ||
| • warn | ||
| • warnx |
Next: errx, Up: Glibc err.h [Contents][Index]
errLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-err-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: verr, Previous: err, Up: Glibc err.h [Contents][Index]
errxLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-errx-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: verrx, Previous: errx, Up: Glibc err.h [Contents][Index]
verrDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: vwarn, Previous: verr, Up: Glibc err.h [Contents][Index]
verrxLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-verrx-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: vwarnx, Previous: verrx, Up: Glibc err.h [Contents][Index]
vwarnDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: warn, Previous: vwarn, Up: Glibc err.h [Contents][Index]
vwarnxDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: warnx, Previous: vwarnx, Up: Glibc err.h [Contents][Index]
warnLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-warn-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: warn, Up: Glibc err.h [Contents][Index]
warnxLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-warnx-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc error.h, Previous: Glibc err.h, Up: Glibc Function Substitutes [Contents][Index]
<errno.h>| • program_invocation_name | ||
| • program_invocation_short_name |
Next: program_invocation_short_name, Up: Glibc errno.h [Contents][Index]
program_invocation_nameDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: program_invocation_name, Up: Glibc errno.h [Contents][Index]
program_invocation_short_nameDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc execinfo.h, Previous: Glibc errno.h, Up: Glibc Function Substitutes [Contents][Index]
<error.h>| • error | ||
| • error_at_line | ||
| • error_message_count | ||
| • error_one_per_line | ||
| • error_print_progname |
Next: error_at_line, Up: Glibc error.h [Contents][Index]
errorLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-error-n.html
Documentation:
Gnulib module: error
Portability problems fixed by Gnulib:
error_print_progname is set,
on some platforms:
Android 11.
Portability problems not fixed by Gnulib:
Next: error_message_count, Previous: error, Up: Glibc error.h [Contents][Index]
error_at_lineDocumentation:
Gnulib module: error
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: error_one_per_line, Previous: error_at_line, Up: Glibc error.h [Contents][Index]
error_message_countDocumentation:
Gnulib module: error
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: error_print_progname, Previous: error_message_count, Up: Glibc error.h [Contents][Index]
error_one_per_lineDocumentation:
Gnulib module: error
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: error_one_per_line, Up: Glibc error.h [Contents][Index]
error_print_prognameDocumentation:
man error_print_progname
Gnulib module: error
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc fcntl.h, Previous: Glibc error.h, Up: Glibc Function Substitutes [Contents][Index]
<execinfo.h>| • backtrace | ||
| • backtrace_symbols | ||
| • backtrace_symbols_fd |
Next: backtrace_symbols, Up: Glibc execinfo.h [Contents][Index]
backtraceLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-backtrace-1.html
Documentation:
Gnulib module: execinfo
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
size_t, not int, on some platforms:
FreeBSD, NetBSD, OpenBSD.
(size_t)(-1) instead of 0 on some platforms:
FreeBSD 12.4/i386.
Next: backtrace_symbols_fd, Previous: backtrace, Up: Glibc execinfo.h [Contents][Index]
backtrace_symbolsLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-backtrace-1.html
Documentation:
Gnulib module: execinfo
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
size_t, not int, on some platforms:
FreeBSD, NetBSD, OpenBSD.
Previous: backtrace_symbols, Up: Glibc execinfo.h [Contents][Index]
backtrace_symbols_fdLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-backtrace-1.html
Documentation:
Gnulib module: execinfo
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
size_t, not int, on some platforms:
FreeBSD, NetBSD, OpenBSD.
backtrace_symbols on some platforms:
glibc 2.39.
Next: Glibc fenv.h, Previous: Glibc execinfo.h, Up: Glibc Function Substitutes [Contents][Index]
<fcntl.h>| • fallocate | ||
| • name_to_handle_at | ||
| • readahead | ||
| • open_by_handle_at | ||
| • sync_file_range |
Next: name_to_handle_at, Up: Glibc fcntl.h [Contents][Index]
fallocateDocumentation:
man fallocate
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly across the entire data range of files larger than 2 GB.
The fix is to use the AC_SYS_LARGEFILE macro.
Next: readahead, Previous: fallocate, Up: Glibc fcntl.h [Contents][Index]
name_to_handle_atDocumentation:
man name_to_handle_at
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: open_by_handle_at, Previous: name_to_handle_at, Up: Glibc fcntl.h [Contents][Index]
readaheadDocumentation:
man readahead
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sync_file_range, Previous: readahead, Up: Glibc fcntl.h [Contents][Index]
open_by_handle_atDocumentation:
man open_by_handle_at
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: open_by_handle_at, Up: Glibc fcntl.h [Contents][Index]
sync_file_rangeDocumentation:
man sync_file_range
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc fmtmsg.h, Previous: Glibc fcntl.h, Up: Glibc Function Substitutes [Contents][Index]
<fenv.h>| • fedisableexcept | ||
| • feenableexcept | ||
| • fegetexcept |
Next: feenableexcept, Up: Glibc fenv.h [Contents][Index]
fedisableexceptLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fedisableexcept.html
Documentation:
Gnulib module: fenv-exceptions-trapping
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fegetexcept, Previous: fedisableexcept, Up: Glibc fenv.h [Contents][Index]
feenableexceptLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-feenableexcept.html
Documentation:
Gnulib module: fenv-exceptions-trapping
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
SIGILL instead of SIGFPE
on some platforms:
Linux/hppa, macOS 14/arm64.
Previous: feenableexcept, Up: Glibc fenv.h [Contents][Index]
fegetexceptLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fegetexcept.html
Documentation:
Gnulib module: fenv-exceptions-trapping
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc fstab.h, Previous: Glibc fenv.h, Up: Glibc Function Substitutes [Contents][Index]
<fmtmsg.h>| • addseverity |
Up: Glibc fmtmsg.h [Contents][Index]
addseverityDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc fts.h, Previous: Glibc fmtmsg.h, Up: Glibc Function Substitutes [Contents][Index]
<fstab.h>| • endfsent | ||
| • getfsent | ||
| • getfsfile | ||
| • getfsspec | ||
| • setfsent |
Next: getfsent, Up: Glibc fstab.h [Contents][Index]
endfsentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getfsfile, Previous: endfsent, Up: Glibc fstab.h [Contents][Index]
getfsentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getfsspec, Previous: getfsent, Up: Glibc fstab.h [Contents][Index]
getfsfileDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setfsent, Previous: getfsfile, Up: Glibc fstab.h [Contents][Index]
getfsspecDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: getfsspec, Up: Glibc fstab.h [Contents][Index]
setfsentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc getopt.h, Previous: Glibc fstab.h, Up: Glibc Function Substitutes [Contents][Index]
<fts.h>| • fts_children | ||
| • fts_close | ||
| • fts_open | ||
| • fts_read | ||
| • fts_set |
Next: fts_close, Up: Glibc fts.h [Contents][Index]
fts_childrenDocumentation:
man fts_children
Gnulib module: fts
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
off_t is a 32-bit type, this function may not
correctly report the size of files or block devices larger than 2 GB and
may not work correctly on huge directories larger than 2 GB. Also, on
platforms where ino_t is a 32-bit type, this function may report
inode numbers incorrectly. The fix is to use the AC_SYS_LARGEFILE
macro (only on Mac OS X systems).
Next: fts_open, Previous: fts_children, Up: Glibc fts.h [Contents][Index]
fts_closeDocumentation:
man fts_close
Gnulib module: fts
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fts_read, Previous: fts_close, Up: Glibc fts.h [Contents][Index]
fts_openDocumentation:
man fts_open
Gnulib module: fts
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fts_set, Previous: fts_open, Up: Glibc fts.h [Contents][Index]
fts_readDocumentation:
man fts_read
Gnulib module: fts
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
off_t is a 32-bit type, this function may not
correctly report the size of files or block devices larger than 2 GB and
may not work correctly on huge directories larger than 2 GB. Also, on
platforms where ino_t is a 32-bit type, this function may report
inode numbers incorrectly. The fix is to use the AC_SYS_LARGEFILE
macro (only on Mac OS X systems).
Previous: fts_read, Up: Glibc fts.h [Contents][Index]
fts_setDocumentation:
man fts_set
Gnulib module: fts
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc glob.h, Previous: Glibc fts.h, Up: Glibc Function Substitutes [Contents][Index]
<getopt.h>| • getopt_long | ||
| • getopt_long_only |
Next: getopt_long_only, Up: Glibc getopt.h [Contents][Index]
getopt_longLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getopt-long-3.html
Documentation:
Gnulib module: getopt-gnu
Portability problems fixed by Gnulib:
getopt_long does not obey the combination of
‘+’ and ‘:’ flags in the options string on some platforms:
glibc 2.11.
-W foo to behave synonymously with --foo:
glibc 2.11.
getopt_long does not support the ‘+’ flag in
the options string on some platforms:
macOS 14, AIX 5.2, Solaris 10.
optind after a missing required argument is wrong
on some platforms:
macOS 14.
getopt_long does not obey the ‘-’ flag in the
options string when POSIXLY_CORRECT is set on some platforms:
Cygwin 1.7.0.
POSIXLY_CORRECT, when optind is set to ‘0’:
NetBSD, Cygwin 1.7.0.
getopt_long does not support options with optional
arguments on some platforms:
macOS 14, OpenBSD 4.0, AIX 5.2, Solaris 11 2010-11, Cygwin 1.5.x.
W; but
there are no long options, on some platforms:
glibc 2.14.
Portability problems not fixed by Gnulib:
Gnulib provides also a module options, that
fixes the following shortcomings of the getopt_long API.
These shortcomings are best illustrated with an example:
static struct option const long_options[] =
{
{ "width", required_argument, NULL, 'w' },
{ "help", no_argument, &show_help, 1 },
{ "version", no_argument, &show_version, 1 },
{ NULL, 0, NULL, 0 }
};
while ((optchar = getopt_long (argc, argv, "w:xhV", long_options, NULL))
!= -1)
switch (optchar)
{
case '\0': /* Long option with flag != NULL. */
break;
case 'w':
set_width (optarg);
break;
case 'x':
do_x = true;
break;
case 'h':
show_help = 1; /* Action code duplication! */
break;
case 'V':
show_version = 1; /* Action code duplication! */
break;
default:
usage (EXIT_FAILURE);
}
option[] array for the long option
and in the string argument for the short option.
It is too easy to forget to
add the ":" or "::" part in the string argument
and thus get inconsistent behaviour
between the long option and the short option.
| In the array | In the string |
|---|---|
no_argument | "" |
required_argument | ":" |
optional_argument | "::" |
int-typed variable to a value,
you can specify this action in the options[] array,
and thus omit the handling in the switch statement.
But this works only for options that are
long options without a corresponding short option.
As soon as the option has a corresponding short option,
you do need to handle it in the switch statement.
Here again, there is the opportunity for
inconsistent behaviour between the long option and the short option.
val field in a struct option has different meanings,
depending on another field:
If the flag field is non-NULL,
val is a value to be stored in a variable.
If the flag field is NULL,
val is a key to be returned from getopt_long
and subject to the switch statement.
enum type, or a flags word.
opterr.
struct option is a misnomer:
It cannot encode short options.
Therefore, it would have better been called struct long_option.
getopt_long function is expected to
receive the same arguments in each call, in the while loop.
The effects are undefined if you don’t follow this (unwritten!) constraint.
getopt_long, indexptr, is redundant, because
when the flag is non-NULL,
the switch statement does not need to handle the option,
and when the flag is NULL,
getopt_long returns the value of val,
as a way to identify which option was seen.
Previous: getopt_long, Up: Glibc getopt.h [Contents][Index]
getopt_long_onlyLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getopt-long-only-3.html
Documentation:
Gnulib module: getopt-gnu
Portability problems fixed by Gnulib:
getopt_long_only does not obey the combination of
‘+’ and ‘:’ flags in the options string on some platforms:
glibc 2.11.
-W foo to behave synonymously with --foo:
glibc 2.11.
getopt_long_only does not support the ‘+’
flag in the options string on some platforms:
macOS 14, AIX 5.2, Solaris 10.
optind after a missing required argument is wrong
on some platforms:
macOS 14.
getopt_long_only does not obey the ‘-’ flag
in the options string when POSIXLY_CORRECT is set on some platforms:
Cygwin 1.7.0.
POSIXLY_CORRECT, when optind is set to ‘0’:
NetBSD, Cygwin 1.7.0.
getopt_long_only does not support options with
optional arguments on some platforms:
macOS 14, OpenBSD 4.0, AIX 5.2, Solaris 11 2010-11, Cygwin 1.5.x.
W; but
there are no long options, on some platforms:
glibc 2.14.
Portability problems not fixed by Gnulib:
getopt_long_only
in new programs.
Next: Glibc gnu/libc-version.h, Previous: Glibc getopt.h, Up: Glibc Function Substitutes [Contents][Index]
<glob.h>| • glob_pattern_p |
Up: Glibc glob.h [Contents][Index]
glob_pattern_pGnulib module: glob
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc grp.h, Previous: Glibc glob.h, Up: Glibc Function Substitutes [Contents][Index]
<gnu/libc-version.h>| • gnu_get_libc_release | ||
| • gnu_get_libc_version |
Next: gnu_get_libc_version, Up: Glibc gnu/libc-version.h [Contents][Index]
gnu_get_libc_releaseLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gnu-get-libc-version-1.html
Documentation:
man gnu_get_libc_release
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: gnu_get_libc_release, Up: Glibc gnu/libc-version.h [Contents][Index]
gnu_get_libc_versionLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gnu-get-libc-version-1.html
Documentation:
man gnu_get_libc_version
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc gshadow.h, Previous: Glibc gnu/libc-version.h, Up: Glibc Function Substitutes [Contents][Index]
<grp.h>| • fgetgrent | ||
| • fgetgrent_r | ||
| • getgrent_r | ||
| • getgrouplist | ||
| • initgroups | ||
| • putgrent | ||
| • setgroups |
Next: fgetgrent_r, Up: Glibc grp.h [Contents][Index]
fgetgrentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getgrent_r, Previous: fgetgrent, Up: Glibc grp.h [Contents][Index]
fgetgrent_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getgrouplist, Previous: fgetgrent_r, Up: Glibc grp.h [Contents][Index]
getgrent_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getgrent-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: initgroups, Previous: getgrent_r, Up: Glibc grp.h [Contents][Index]
getgrouplistLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getgrouplist-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
int instead of gid_t parameters
on some platforms: OS X 10.11.
The Gnulib module getugroups provides a similar API.
Next: putgrent, Previous: getgrouplist, Up: Glibc grp.h [Contents][Index]
initgroupsLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-initgroups-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
fork and exec if
the parent process is multi-threaded. Instead, use getgroups or
getgrouplist
(or use the gnulib module mgetgroups)
before forking, and setgroups in the child.
Next: setgroups, Previous: initgroups, Up: Glibc grp.h [Contents][Index]
putgrentDocumentation:
man putgrent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: putgrent, Up: Glibc grp.h [Contents][Index]
setgroupsLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-setgroups-2.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
GETGROUPS_T to
the appropriate size (since getgroups and setgroups
share the same bug).
Next: Glibc ifaddrs.h, Previous: Glibc grp.h, Up: Glibc Function Substitutes [Contents][Index]
<gshadow.h>| • endsgent | ||
| • fgetsgent | ||
| • fgetsgent_r | ||
| • getsgent | ||
| • getsgent_r | ||
| • getsgnam | ||
| • getsgnam_r | ||
| • putsgent | ||
| • setsgent | ||
| • sgetsgent | ||
| • sgetsgent_r |
Next: fgetsgent, Up: Glibc gshadow.h [Contents][Index]
endsgentGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fgetsgent_r, Previous: endsgent, Up: Glibc gshadow.h [Contents][Index]
fgetsgentGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getsgent, Previous: fgetsgent, Up: Glibc gshadow.h [Contents][Index]
fgetsgent_rGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getsgent_r, Previous: fgetsgent_r, Up: Glibc gshadow.h [Contents][Index]
getsgentGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getsgnam, Previous: getsgent, Up: Glibc gshadow.h [Contents][Index]
getsgent_rGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getsgnam_r, Previous: getsgent_r, Up: Glibc gshadow.h [Contents][Index]
getsgnamGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: putsgent, Previous: getsgnam, Up: Glibc gshadow.h [Contents][Index]
getsgnam_rGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setsgent, Previous: getsgnam_r, Up: Glibc gshadow.h [Contents][Index]
putsgentGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sgetsgent, Previous: putsgent, Up: Glibc gshadow.h [Contents][Index]
setsgentGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sgetsgent_r, Previous: setsgent, Up: Glibc gshadow.h [Contents][Index]
sgetsgentGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: sgetsgent, Up: Glibc gshadow.h [Contents][Index]
sgetsgent_rGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc inttypes.h, Previous: Glibc gshadow.h, Up: Glibc Function Substitutes [Contents][Index]
<ifaddrs.h>| • getifaddrs | ||
| • freeifaddrs |
Next: freeifaddrs, Up: Glibc ifaddrs.h [Contents][Index]
getifaddrsLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getifaddrs.html
Documentation:
man getifaddrs
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: getifaddrs, Up: Glibc ifaddrs.h [Contents][Index]
freeifaddrsDocumentation:
man freeifaddrs
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc link.h, Previous: Glibc ifaddrs.h, Up: Glibc Function Substitutes [Contents][Index]
<inttypes.h>| • uimaxabs |
Up: Glibc inttypes.h [Contents][Index]
uimaxabsDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc malloc.h, Previous: Glibc inttypes.h, Up: Glibc Function Substitutes [Contents][Index]
<link.h>| • dl_iterate_phdr |
Up: Glibc link.h [Contents][Index]
dl_iterate_phdrLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dl-iterate-phdr-1.html
Documentation:
man dl_iterate_phdr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc math.h, Previous: Glibc link.h, Up: Glibc Function Substitutes [Contents][Index]
<malloc.h>| • mallinfo | ||
| • mallinfo2 | ||
| • malloc_info | ||
| • malloc_stats | ||
| • malloc_trim | ||
| • malloc_usable_size | ||
| • mallopt | ||
| • memalign | ||
| • pvalloc |
Next: mallinfo2, Up: Glibc malloc.h [Contents][Index]
mallinfoDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: malloc_info, Previous: mallinfo, Up: Glibc malloc.h [Contents][Index]
mallinfo2Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: malloc_stats, Previous: mallinfo2, Up: Glibc malloc.h [Contents][Index]
malloc_infoDocumentation:
man malloc_info
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: malloc_trim, Previous: malloc_info, Up: Glibc malloc.h [Contents][Index]
malloc_statsDocumentation:
man malloc_stats
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: malloc_usable_size, Previous: malloc_stats, Up: Glibc malloc.h [Contents][Index]
malloc_trimDocumentation:
man malloc_trim
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mallopt, Previous: malloc_trim, Up: Glibc malloc.h [Contents][Index]
malloc_usable_sizeDocumentation:
man malloc_usable_size
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: memalign, Previous: malloc_usable_size, Up: Glibc malloc.h [Contents][Index]
malloptDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pvalloc, Previous: mallopt, Up: Glibc malloc.h [Contents][Index]
memalignDocumentation:
Gnulib module: memalign
Portability problems fixed by Gnulib:
<stdlib.h> instead of <malloc.h>
on some platforms:
Solaris 11.
Portability problems not fixed by Gnulib:
The Gnulib module aligned-malloc provides functions for
allocating and freeing blocks of suitably aligned memory.
Previous: memalign, Up: Glibc malloc.h [Contents][Index]
pvallocDocumentation:
man pvalloc
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc mcheck.h, Previous: Glibc malloc.h, Up: Glibc Function Substitutes [Contents][Index]
<math.h>| • drem | ||
| • dremf | ||
| • dreml | ||
| • finite | ||
| • finitef | ||
| • finitel | ||
| • gamma | ||
| • gammaf | ||
| • gammal | ||
| • isinff | ||
| • isinfl | ||
| • isnanf | ||
| • isnanl | ||
| • j0f | ||
| • j0l | ||
| • j1f | ||
| • j1l | ||
| • jnf | ||
| • jnl | ||
| • lgamma_r | ||
| • lgammaf_r | ||
| • lgammal_r | ||
| • matherr | ||
| • pow10 | ||
| • pow10f | ||
| • pow10l | ||
| • scalbf | ||
| • scalbl | ||
| • significand | ||
| • significandf | ||
| • significandl | ||
| • sincos | ||
| • sincosf | ||
| • sincosl | ||
| • y0f | ||
| • y0l | ||
| • y1f | ||
| • y1l | ||
| • ynf | ||
| • ynl |
Next: dremf, Up: Glibc math.h [Contents][Index]
dremLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-drem.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dreml, Previous: drem, Up: Glibc math.h [Contents][Index]
dremfLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dremf.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: finite, Previous: dremf, Up: Glibc math.h [Contents][Index]
dremlLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dreml.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: finitef, Previous: dreml, Up: Glibc math.h [Contents][Index]
finiteLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-finite.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: finitel, Previous: finite, Up: Glibc math.h [Contents][Index]
finitefLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-finitef.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gamma, Previous: finitef, Up: Glibc math.h [Contents][Index]
finitelLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-finitel.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gammaf, Previous: finitel, Up: Glibc math.h [Contents][Index]
gammaLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gamma.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gammal, Previous: gamma, Up: Glibc math.h [Contents][Index]
gammafLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gammaf.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isinff, Previous: gammaf, Up: Glibc math.h [Contents][Index]
gammalLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gammal.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isinfl, Previous: gammal, Up: Glibc math.h [Contents][Index]
isinffDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isnanf, Previous: isinff, Up: Glibc math.h [Contents][Index]
isinflDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: isnanl, Previous: isinfl, Up: Glibc math.h [Contents][Index]
isnanfDocumentation:
Gnulib module: isnanf
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: j0f, Previous: isnanf, Up: Glibc math.h [Contents][Index]
isnanlDocumentation:
Gnulib module: isnanl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: j0l, Previous: isnanl, Up: Glibc math.h [Contents][Index]
j0fLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-j0f.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: j1f, Previous: j0f, Up: Glibc math.h [Contents][Index]
j0lLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-j0l.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: j1l, Previous: j0l, Up: Glibc math.h [Contents][Index]
j1fLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-j1f.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: jnf, Previous: j1f, Up: Glibc math.h [Contents][Index]
j1lLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-j1l.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: jnl, Previous: j1l, Up: Glibc math.h [Contents][Index]
jnfLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-jnf.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lgamma_r, Previous: jnf, Up: Glibc math.h [Contents][Index]
jnlLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-jnl.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lgammaf_r, Previous: jnl, Up: Glibc math.h [Contents][Index]
lgamma_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-lgamma-r.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lgammal_r, Previous: lgamma_r, Up: Glibc math.h [Contents][Index]
lgammaf_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-lgammaf-r.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: matherr, Previous: lgammaf_r, Up: Glibc math.h [Contents][Index]
lgammal_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-lgammal-r.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pow10, Previous: lgammal_r, Up: Glibc math.h [Contents][Index]
matherrLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-matherr-1.html
Documentation:
man matherr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pow10f, Previous: matherr, Up: Glibc math.h [Contents][Index]
pow10LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pow10.html
Documentation:
man pow10
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pow10l, Previous: pow10, Up: Glibc math.h [Contents][Index]
pow10fLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pow10f.html
Documentation:
man pow10f
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalbf, Previous: pow10f, Up: Glibc math.h [Contents][Index]
pow10lLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pow10l.html
Documentation:
man pow10l
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: scalbl, Previous: pow10l, Up: Glibc math.h [Contents][Index]
scalbfLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-scalbf.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: significand, Previous: scalbf, Up: Glibc math.h [Contents][Index]
scalblLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-scalbl.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: significandf, Previous: scalbl, Up: Glibc math.h [Contents][Index]
significandLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-significand.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: significandl, Previous: significand, Up: Glibc math.h [Contents][Index]
significandfLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-significandf.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sincos, Previous: significandf, Up: Glibc math.h [Contents][Index]
significandlLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-significandl.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sincosf, Previous: significandl, Up: Glibc math.h [Contents][Index]
sincosLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sincos.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sincosl, Previous: sincos, Up: Glibc math.h [Contents][Index]
sincosfLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sincosf.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: y0f, Previous: sincosf, Up: Glibc math.h [Contents][Index]
sincoslLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sincosl.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: y0l, Previous: sincosl, Up: Glibc math.h [Contents][Index]
y0fLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-y0f.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: y1f, Previous: y0f, Up: Glibc math.h [Contents][Index]
y0lLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-y0l.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: y1l, Previous: y0l, Up: Glibc math.h [Contents][Index]
y1fLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-y1f.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ynf, Previous: y1f, Up: Glibc math.h [Contents][Index]
y1lLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-y1l.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ynl, Previous: y1l, Up: Glibc math.h [Contents][Index]
ynfLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-ynf.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ynf, Up: Glibc math.h [Contents][Index]
ynlLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-ynl.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc mntent.h, Previous: Glibc math.h, Up: Glibc Function Substitutes [Contents][Index]
<mcheck.h>| • mcheck | ||
| • mcheck_check_all | ||
| • mcheck_pedantic | ||
| • mprobe | ||
| • mtrace | ||
| • muntrace |
Next: mcheck_check_all, Up: Glibc mcheck.h [Contents][Index]
mcheckDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mcheck_pedantic, Previous: mcheck, Up: Glibc mcheck.h [Contents][Index]
mcheck_check_allDocumentation:
man mcheck_check_all
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mprobe, Previous: mcheck_check_all, Up: Glibc mcheck.h [Contents][Index]
mcheck_pedanticDocumentation:
man mcheck_pedantic
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mtrace, Previous: mcheck_pedantic, Up: Glibc mcheck.h [Contents][Index]
mprobeDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: muntrace, Previous: mprobe, Up: Glibc mcheck.h [Contents][Index]
mtraceDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: mtrace, Up: Glibc mcheck.h [Contents][Index]
muntraceDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc netdb.h, Previous: Glibc mcheck.h, Up: Glibc Function Substitutes [Contents][Index]
<mntent.h>| • addmntent | ||
| • endmntent | ||
| • getmntent | ||
| • getmntent_r | ||
| • hasmntopt | ||
| • setmntent |
Next: endmntent, Up: Glibc mntent.h [Contents][Index]
addmntentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getmntent, Previous: addmntent, Up: Glibc mntent.h [Contents][Index]
endmntentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getmntent_r, Previous: endmntent, Up: Glibc mntent.h [Contents][Index]
getmntentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: hasmntopt, Previous: getmntent, Up: Glibc mntent.h [Contents][Index]
getmntent_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setmntent, Previous: getmntent_r, Up: Glibc mntent.h [Contents][Index]
hasmntoptDocumentation:
Gnulib module: hasmntopt
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: hasmntopt, Up: Glibc mntent.h [Contents][Index]
setmntentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc netinet/ether.h, Previous: Glibc mntent.h, Up: Glibc Function Substitutes [Contents][Index]
<netdb.h>| • endnetgrent | ||
| • gethostbyaddr_r | ||
| • gethostbyname2 | ||
| • gethostbyname2_r | ||
| • gethostbyname_r | ||
| • gethostent_r | ||
| • getnetbyaddr_r | ||
| • getnetbyname_r | ||
| • getnetent_r | ||
| • getnetgrent | ||
| • getnetgrent_r | ||
| • getprotobyname_r | ||
| • getprotobynumber_r | ||
| • getprotoent_r | ||
| • getservbyname_r | ||
| • getservbyport_r | ||
| • getservent_r | ||
| • herror | ||
| • hstrerror | ||
| • innetgr | ||
| • rcmd | ||
| • rcmd_af | ||
| • rexec | ||
| • rexec_af | ||
| • rresvport | ||
| • rresvport_af | ||
| • ruserok | ||
| • ruserok_af | ||
| • setnetgrent |
Next: gethostbyaddr_r, Up: Glibc netdb.h [Contents][Index]
endnetgrentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gethostbyname2, Previous: endnetgrent, Up: Glibc netdb.h [Contents][Index]
gethostbyaddr_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gethostbyaddr-r-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gethostbyname2_r, Previous: gethostbyaddr_r, Up: Glibc netdb.h [Contents][Index]
gethostbyname2LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gethostbyname2-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gethostbyname_r, Previous: gethostbyname2, Up: Glibc netdb.h [Contents][Index]
gethostbyname2_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gethostbyname2-r-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: gethostent_r, Previous: gethostbyname2_r, Up: Glibc netdb.h [Contents][Index]
gethostbyname_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gethostbyname-r-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetbyaddr_r, Previous: gethostbyname_r, Up: Glibc netdb.h [Contents][Index]
gethostent_rDocumentation:
man gethostent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetbyname_r, Previous: gethostent_r, Up: Glibc netdb.h [Contents][Index]
getnetbyaddr_rDocumentation:
man getnetbyaddr_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetent_r, Previous: getnetbyaddr_r, Up: Glibc netdb.h [Contents][Index]
getnetbyname_rDocumentation:
man getnetbyname_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetgrent, Previous: getnetbyname_r, Up: Glibc netdb.h [Contents][Index]
getnetent_rDocumentation:
man getnetent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetgrent_r, Previous: getnetent_r, Up: Glibc netdb.h [Contents][Index]
getnetgrentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getprotobyname_r, Previous: getnetgrent, Up: Glibc netdb.h [Contents][Index]
getnetgrent_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getprotobynumber_r, Previous: getnetgrent_r, Up: Glibc netdb.h [Contents][Index]
getprotobyname_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getprotobyname-r.html
Documentation:
man getprotobyname_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getprotoent_r, Previous: getprotobyname_r, Up: Glibc netdb.h [Contents][Index]
getprotobynumber_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getprotobynumber-r.html
Documentation:
man getprotobynumber_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getservbyname_r, Previous: getprotobynumber_r, Up: Glibc netdb.h [Contents][Index]
getprotoent_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getprotoent-r.html
Documentation:
man getprotoent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getservbyport_r, Previous: getprotoent_r, Up: Glibc netdb.h [Contents][Index]
getservbyname_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getservbyname-r.html
Documentation:
man getservbyname_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getservent_r, Previous: getservbyname_r, Up: Glibc netdb.h [Contents][Index]
getservbyport_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getservbyport-r.html
Documentation:
man getservbyport_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: herror, Previous: getservbyport_r, Up: Glibc netdb.h [Contents][Index]
getservent_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getservent-r.html
Documentation:
man getservent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: hstrerror, Previous: getservent_r, Up: Glibc netdb.h [Contents][Index]
herrorDocumentation:
man herror
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: innetgr, Previous: herror, Up: Glibc netdb.h [Contents][Index]
hstrerrorDocumentation:
man hstrerror
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rcmd, Previous: hstrerror, Up: Glibc netdb.h [Contents][Index]
innetgrDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rcmd_af, Previous: innetgr, Up: Glibc netdb.h [Contents][Index]
rcmdDocumentation:
man rcmd
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rexec, Previous: rcmd, Up: Glibc netdb.h [Contents][Index]
rcmd_afDocumentation:
man rcmd_af
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rexec_af, Previous: rcmd_af, Up: Glibc netdb.h [Contents][Index]
rexecDocumentation:
man rexec
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rresvport, Previous: rexec, Up: Glibc netdb.h [Contents][Index]
rexec_afDocumentation:
man rexec_af
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rresvport_af, Previous: rexec_af, Up: Glibc netdb.h [Contents][Index]
rresvportDocumentation:
man rresvport
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ruserok, Previous: rresvport, Up: Glibc netdb.h [Contents][Index]
rresvport_afDocumentation:
man rresvport_af
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ruserok_af, Previous: rresvport_af, Up: Glibc netdb.h [Contents][Index]
ruserokDocumentation:
man ruserok
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setnetgrent, Previous: ruserok, Up: Glibc netdb.h [Contents][Index]
ruserok_afDocumentation:
man ruserok_af
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ruserok_af, Up: Glibc netdb.h [Contents][Index]
setnetgrentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc netinet/in.h, Previous: Glibc netdb.h, Up: Glibc Function Substitutes [Contents][Index]
<netinet/ether.h>| • ether_aton | ||
| • ether_aton_r | ||
| • ether_hostton | ||
| • ether_line | ||
| • ether_ntoa | ||
| • ether_ntoa_r | ||
| • ether_ntohost |
Next: ether_aton_r, Up: Glibc netinet/ether.h [Contents][Index]
ether_atonDocumentation:
man ether_aton
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ether_hostton, Previous: ether_aton, Up: Glibc netinet/ether.h [Contents][Index]
ether_aton_rDocumentation:
man ether_aton_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ether_line, Previous: ether_aton_r, Up: Glibc netinet/ether.h [Contents][Index]
ether_hosttonDocumentation:
man ether_hostton
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ether_ntoa, Previous: ether_hostton, Up: Glibc netinet/ether.h [Contents][Index]
ether_lineDocumentation:
man ether_line
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ether_ntoa_r, Previous: ether_line, Up: Glibc netinet/ether.h [Contents][Index]
ether_ntoaDocumentation:
man ether_ntoa
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ether_ntohost, Previous: ether_ntoa, Up: Glibc netinet/ether.h [Contents][Index]
ether_ntoa_rDocumentation:
man ether_ntoa_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ether_ntoa_r, Up: Glibc netinet/ether.h [Contents][Index]
ether_ntohostDocumentation:
man ether_ntohost
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc obstack.h, Previous: Glibc netinet/ether.h, Up: Glibc Function Substitutes [Contents][Index]
<netinet/in.h>Next: getipv4sourcefilter, Up: Glibc netinet/in.h [Contents][Index]
bindresvportLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-bindresvport-3.html
Documentation:
man bindresvport
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getsourcefilter, Previous: bindresvport, Up: Glibc netinet/in.h [Contents][Index]
getipv4sourcefilterGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_option_alloc, Previous: getipv4sourcefilter, Up: Glibc netinet/in.h [Contents][Index]
getsourcefilterGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_option_append, Previous: getsourcefilter, Up: Glibc netinet/in.h [Contents][Index]
inet6_option_allocGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_option_find, Previous: inet6_option_alloc, Up: Glibc netinet/in.h [Contents][Index]
inet6_option_appendGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_option_init, Previous: inet6_option_append, Up: Glibc netinet/in.h [Contents][Index]
inet6_option_findGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_option_next, Previous: inet6_option_find, Up: Glibc netinet/in.h [Contents][Index]
inet6_option_initGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_option_space, Previous: inet6_option_init, Up: Glibc netinet/in.h [Contents][Index]
inet6_option_nextGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_opt_append, Previous: inet6_option_next, Up: Glibc netinet/in.h [Contents][Index]
inet6_option_spaceGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_opt_find, Previous: inet6_option_space, Up: Glibc netinet/in.h [Contents][Index]
inet6_opt_appendGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_opt_finish, Previous: inet6_opt_append, Up: Glibc netinet/in.h [Contents][Index]
inet6_opt_findGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_opt_get_val, Previous: inet6_opt_find, Up: Glibc netinet/in.h [Contents][Index]
inet6_opt_finishGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_opt_init, Previous: inet6_opt_finish, Up: Glibc netinet/in.h [Contents][Index]
inet6_opt_get_valGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_opt_next, Previous: inet6_opt_get_val, Up: Glibc netinet/in.h [Contents][Index]
inet6_opt_initGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_opt_set_val, Previous: inet6_opt_init, Up: Glibc netinet/in.h [Contents][Index]
inet6_opt_nextGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_rth_add, Previous: inet6_opt_next, Up: Glibc netinet/in.h [Contents][Index]
inet6_opt_set_valGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_rth_getaddr, Previous: inet6_opt_set_val, Up: Glibc netinet/in.h [Contents][Index]
inet6_rth_addGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_rth_init, Previous: inet6_rth_add, Up: Glibc netinet/in.h [Contents][Index]
inet6_rth_getaddrGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_rth_reverse, Previous: inet6_rth_getaddr, Up: Glibc netinet/in.h [Contents][Index]
inet6_rth_initGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_rth_segments, Previous: inet6_rth_init, Up: Glibc netinet/in.h [Contents][Index]
inet6_rth_reverseGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inet6_rth_space, Previous: inet6_rth_reverse, Up: Glibc netinet/in.h [Contents][Index]
inet6_rth_segmentsGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setipv4sourcefilter, Previous: inet6_rth_segments, Up: Glibc netinet/in.h [Contents][Index]
inet6_rth_spaceGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setsourcefilter, Previous: inet6_rth_space, Up: Glibc netinet/in.h [Contents][Index]
setipv4sourcefilterGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: setipv4sourcefilter, Up: Glibc netinet/in.h [Contents][Index]
setsourcefilterGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc printf.h, Previous: Glibc netinet/in.h, Up: Glibc Function Substitutes [Contents][Index]
<obstack.h>| • obstack_alloc_failed_handler | ||
| • obstack_exit_failure | ||
| • obstack_free | ||
| • obstack_printf | ||
| • obstack_vprintf |
Next: obstack_exit_failure, Up: Glibc obstack.h [Contents][Index]
obstack_alloc_failed_handlerDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Preparing-for-Obstacks.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: obstack_free, Previous: obstack_alloc_failed_handler, Up: Glibc obstack.h [Contents][Index]
obstack_exit_failureGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: obstack_printf, Previous: obstack_exit_failure, Up: Glibc obstack.h [Contents][Index]
obstack_freeDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Freeing-Obstack-Objects.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: obstack_vprintf, Previous: obstack_free, Up: Glibc obstack.h [Contents][Index]
obstack_printfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Dynamic-Output.html.
Gnulib module: obstack-printf or obstack-printf-posix or obstack-printf-gnu
Portability problems fixed by either Gnulib module
obstack-printf or obstack-printf-posix or obstack-printf-gnu:
Portability problems fixed by either Gnulib module obstack-printf-posix or obstack-printf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module obstack-printf-gnu:
Portability problems fixed by either Gnulib module obstack-printf-posix or obstack-printf-gnu
and additionally the Gnulib module printf-with-n-directive:
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
Previous: obstack_printf, Up: Glibc obstack.h [Contents][Index]
obstack_vprintfDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Variable-Arguments-Output.html.
Gnulib module: obstack-printf or obstack-printf-posix or obstack-printf-gnu
Portability problems fixed by either Gnulib module
obstack-printf or obstack-printf-posix or obstack-printf-gnu:
Portability problems fixed by either Gnulib module obstack-printf-posix or obstack-printf-gnu:
hh, ll,
j, t, z) on some platforms:
AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
w8,
w16, w32, w64, wf8, wf16, wf32,
wf64) on some platforms:
glibc 2.37.
"%f", "%e", "%g" of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
' flag at all on some platforms:
mingw without __USE_MINGW_ANSI_STDIO, MSVC 14.
' flag correctly for integers
(it uses the decimal point instead of the thousands separator!)
on some platforms:
mingw with __USE_MINGW_ANSI_STDIO.
' flag together with a precision
on an integer argument correctly on some platforms:
glibc 2.36, FreeBSD 14.0, NetBSD 10.0, Solaris 11, Cygwin 3.6.0, Haiku.
' flag correctly in locales where
the thousands separator is a multibyte character on some platforms:
NetBSD 10.0, Solaris 11 OpenIndiana.
"%2$s", on some platforms:
NetBSD 3.0, mingw, MSVC 14.
' flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
"%010f" of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
"%#.0x" or "%#.0X" with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
Portability problems fixed by Gnulib module obstack-printf-gnu:
Portability problems fixed by either Gnulib module obstack-printf-posix or obstack-printf-gnu
and additionally the Gnulib module printf-with-n-directive:
Portability problems not fixed by Gnulib:
%m directive is not portable, use %s mapped to an
argument of strerror(errno) (or a version of strerror_r)
instead.
Next: Glibc pthread.h, Previous: Glibc obstack.h, Up: Glibc Function Substitutes [Contents][Index]
<printf.h>| • parse_printf_format | ||
| • printf_size | ||
| • printf_size_info | ||
| • register_printf_function | ||
| • register_printf_modifier | ||
| • register_printf_specifier | ||
| • register_printf_type |
Next: printf_size, Up: Glibc printf.h [Contents][Index]
parse_printf_formatDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Parsing-a-Template-String.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: printf_size_info, Previous: parse_printf_format, Up: Glibc printf.h [Contents][Index]
printf_sizeDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Predefined-Printf-Handlers.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: register_printf_function, Previous: printf_size, Up: Glibc printf.h [Contents][Index]
printf_size_infoDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Predefined-Printf-Handlers.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: register_printf_modifier, Previous: printf_size_info, Up: Glibc printf.h [Contents][Index]
register_printf_functionDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Registering-New-Conversions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: register_printf_specifier, Previous: register_printf_function, Up: Glibc printf.h [Contents][Index]
register_printf_modifierGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: register_printf_type, Previous: register_printf_modifier, Up: Glibc printf.h [Contents][Index]
register_printf_specifierGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: register_printf_specifier, Up: Glibc printf.h [Contents][Index]
register_printf_typeGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc pty.h, Previous: Glibc printf.h, Up: Glibc Function Substitutes [Contents][Index]
<pthread.h>Next: pthread_attr_setaffinity_np, Up: Glibc pthread.h [Contents][Index]
pthread_attr_getaffinity_npDocumentation:
man pthread_attr_getaffinity_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_getsigmask_np, Previous: pthread_attr_getaffinity_np, Up: Glibc pthread.h [Contents][Index]
pthread_attr_setaffinity_npDocumentation:
man pthread_attr_setaffinity_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_attr_setsigmask_np, Previous: pthread_attr_setaffinity_np, Up: Glibc pthread.h [Contents][Index]
pthread_attr_getsigmask_npDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Initial-Thread-Signal-Mask.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_clockjoin_np, Previous: pthread_attr_getsigmask_np, Up: Glibc pthread.h [Contents][Index]
pthread_attr_setsigmask_npDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Initial-Thread-Signal-Mask.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_getaffinity_np, Previous: pthread_attr_setsigmask_np, Up: Glibc pthread.h [Contents][Index]
pthread_clockjoin_npDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_getattr_default_np, Previous: pthread_clockjoin_np, Up: Glibc pthread.h [Contents][Index]
pthread_getaffinity_npDocumentation:
man pthread_getaffinity_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_getattr_np, Previous: pthread_getaffinity_np, Up: Glibc pthread.h [Contents][Index]
pthread_getattr_default_npDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_getname_np, Previous: pthread_getattr_default_np, Up: Glibc pthread.h [Contents][Index]
pthread_getattr_npLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pthread-getattr-np-1.html
Documentation:
man pthread_getattr_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_gettid_np, Previous: pthread_getattr_np, Up: Glibc pthread.h [Contents][Index]
pthread_getname_npDocumentation:
man pthread_getname_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_kill_other_threads_np, Previous: pthread_getname_np, Up: Glibc pthread.h [Contents][Index]
pthread_gettid_npDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlockattr_getkind_np, Previous: pthread_gettid_np, Up: Glibc pthread.h [Contents][Index]
pthread_kill_other_threads_npDocumentation:
man pthread_kill_other_threads_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_rwlockattr_setkind_np, Previous: pthread_kill_other_threads_np, Up: Glibc pthread.h [Contents][Index]
pthread_rwlockattr_getkind_npLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pthread-rwlockattr-getkind-np-1.html
Documentation:
man pthread_rwlockattr_getkind_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setaffinity_np, Previous: pthread_rwlockattr_getkind_np, Up: Glibc pthread.h [Contents][Index]
pthread_rwlockattr_setkind_npLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pthread-rwlockattr-getkind-np-1.html
Documentation:
man pthread_rwlockattr_setkind_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setattr_default_np, Previous: pthread_rwlockattr_setkind_np, Up: Glibc pthread.h [Contents][Index]
pthread_setaffinity_npDocumentation:
man pthread_setaffinity_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_setname_np, Previous: pthread_setaffinity_np, Up: Glibc pthread.h [Contents][Index]
pthread_setattr_default_npDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_sigqueue, Previous: pthread_setattr_default_np, Up: Glibc pthread.h [Contents][Index]
pthread_setname_npDocumentation:
man pthread_setname_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
printf format string,
with the third argument as parameter.
Next: pthread_timedjoin_np, Previous: pthread_setname_np, Up: Glibc pthread.h [Contents][Index]
pthread_sigqueueDocumentation:
man pthread_sigqueue
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pthread_tryjoin_np, Previous: pthread_sigqueue, Up: Glibc pthread.h [Contents][Index]
pthread_timedjoin_npDocumentation:
man pthread_timedjoin_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
libthr but not in
libpthread, and it also is missing a declaration.
Previous: pthread_timedjoin_np, Up: Glibc pthread.h [Contents][Index]
pthread_tryjoin_npDocumentation:
man pthread_tryjoin_np
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc pwd.h, Previous: Glibc pthread.h, Up: Glibc Function Substitutes [Contents][Index]
<pty.h>| • forkpty | ||
| • openpty |
Next: openpty, Up: Glibc pty.h [Contents][Index]
forkptyDocumentation:
Gnulib module: forkpty
Portability problems fixed by Gnulib:
-lutil is not required.
-lutil is
required.
const.
FreeBSD 14.0, Solaris 11.4, Cygwin 1.7.1.
Portability problems not fixed by Gnulib:
Previous: forkpty, Up: Glibc pty.h [Contents][Index]
openptyDocumentation:
Gnulib module: openpty
Portability problems fixed by Gnulib:
-lutil is not required.
-lutil is
required.
const.
FreeBSD 14.0, Solaris 11.4, Cygwin 1.7.1.
Portability problems not fixed by Gnulib:
Next: Glibc regex.h, Previous: Glibc pty.h, Up: Glibc Function Substitutes [Contents][Index]
<pwd.h>| • fgetpwent | ||
| • fgetpwent_r | ||
| • getpw | ||
| • getpwent_r | ||
| • putpwent |
Next: fgetpwent_r, Up: Glibc pwd.h [Contents][Index]
fgetpwentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpw, Previous: fgetpwent, Up: Glibc pwd.h [Contents][Index]
fgetpwent_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpwent_r, Previous: fgetpwent_r, Up: Glibc pwd.h [Contents][Index]
getpwDocumentation:
man getpw
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: putpwent, Previous: getpw, Up: Glibc pwd.h [Contents][Index]
getpwent_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getpwent-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: getpwent_r, Up: Glibc pwd.h [Contents][Index]
putpwentDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc regexp.h, Previous: Glibc pwd.h, Up: Glibc Function Substitutes [Contents][Index]
<regex.h>| • re_comp | ||
| • re_compile_fastmap | ||
| • re_compile_pattern | ||
| • re_exec | ||
| • re_match | ||
| • re_match_2 | ||
| • re_search | ||
| • re_search_2 | ||
| • re_set_registers | ||
| • re_set_syntax | ||
| • re_syntax_options |
Next: re_compile_fastmap, Up: Glibc regex.h [Contents][Index]
re_compDocumentation:
man re_comp
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_compile_pattern, Previous: re_comp, Up: Glibc regex.h [Contents][Index]
re_compile_fastmapGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_exec, Previous: re_compile_fastmap, Up: Glibc regex.h [Contents][Index]
re_compile_patternGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_match, Previous: re_compile_pattern, Up: Glibc regex.h [Contents][Index]
re_execDocumentation:
man re_exec
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_match_2, Previous: re_exec, Up: Glibc regex.h [Contents][Index]
re_matchGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_search, Previous: re_match, Up: Glibc regex.h [Contents][Index]
re_match_2Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_search_2, Previous: re_match_2, Up: Glibc regex.h [Contents][Index]
re_searchGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_set_registers, Previous: re_search, Up: Glibc regex.h [Contents][Index]
re_search_2Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_set_syntax, Previous: re_search_2, Up: Glibc regex.h [Contents][Index]
re_set_registersGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: re_syntax_options, Previous: re_set_registers, Up: Glibc regex.h [Contents][Index]
re_set_syntaxGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: re_set_syntax, Up: Glibc regex.h [Contents][Index]
re_syntax_optionsGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc resolv.h, Previous: Glibc regex.h, Up: Glibc Function Substitutes [Contents][Index]
<regexp.h>| • advance | ||
| • loc1 | ||
| • loc2 | ||
| • locs | ||
| • step |
Next: loc1, Up: Glibc regexp.h [Contents][Index]
advanceGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: loc2, Previous: advance, Up: Glibc regexp.h [Contents][Index]
loc1Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: locs, Previous: loc1, Up: Glibc regexp.h [Contents][Index]
loc2Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: step, Previous: loc2, Up: Glibc regexp.h [Contents][Index]
locsGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: locs, Up: Glibc regexp.h [Contents][Index]
stepGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/auth.h, Previous: Glibc regexp.h, Up: Glibc Function Substitutes [Contents][Index]
<resolv.h>| • dn_comp | ||
| • dn_expand | ||
| • dn_skipname | ||
| • res_dnok | ||
| • res_hnok | ||
| • res_init | ||
| • res_mailok | ||
| • res_mkquery | ||
| • res_nmkquery | ||
| • res_nquery | ||
| • res_nquerydomain | ||
| • res_nsearch | ||
| • res_nsend | ||
| • res_ownok | ||
| • res_query | ||
| • res_querydomain | ||
| • res_search | ||
| • res_send |
Next: dn_expand, Up: Glibc resolv.h [Contents][Index]
dn_compDocumentation:
man dn_comp
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: dn_skipname, Previous: dn_comp, Up: Glibc resolv.h [Contents][Index]
dn_expandDocumentation:
man dn_expand
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_dnok, Previous: dn_expand, Up: Glibc resolv.h [Contents][Index]
dn_skipnameDocumentation:
man dn_skipname
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_hnok, Previous: dn_skipname, Up: Glibc resolv.h [Contents][Index]
res_dnokDocumentation:
man res_dnok
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_init, Previous: res_dnok, Up: Glibc resolv.h [Contents][Index]
res_hnokDocumentation:
man res_hnok
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_mailok, Previous: res_hnok, Up: Glibc resolv.h [Contents][Index]
res_initDocumentation:
man res_init
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_mkquery, Previous: res_init, Up: Glibc resolv.h [Contents][Index]
res_mailokDocumentation:
man res_mailok
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_nmkquery, Previous: res_mailok, Up: Glibc resolv.h [Contents][Index]
res_mkqueryDocumentation:
man res_mkquery
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_nquery, Previous: res_mkquery, Up: Glibc resolv.h [Contents][Index]
res_nmkqueryDocumentation:
man res_nmkquery
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_nquerydomain, Previous: res_nmkquery, Up: Glibc resolv.h [Contents][Index]
res_nqueryDocumentation:
man res_nquery
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_nsearch, Previous: res_nquery, Up: Glibc resolv.h [Contents][Index]
res_nquerydomainDocumentation:
man res_nquerydomain
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_nsend, Previous: res_nquerydomain, Up: Glibc resolv.h [Contents][Index]
res_nsearchDocumentation:
man res_nsearch
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_ownok, Previous: res_nsearch, Up: Glibc resolv.h [Contents][Index]
res_nsendDocumentation:
man res_nsend
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_query, Previous: res_nsend, Up: Glibc resolv.h [Contents][Index]
res_ownokDocumentation:
man res_ownok
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_querydomain, Previous: res_ownok, Up: Glibc resolv.h [Contents][Index]
res_queryDocumentation:
man res_query
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_search, Previous: res_query, Up: Glibc resolv.h [Contents][Index]
res_querydomainDocumentation:
man res_querydomain
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: res_send, Previous: res_querydomain, Up: Glibc resolv.h [Contents][Index]
res_searchDocumentation:
man res_search
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: res_search, Up: Glibc resolv.h [Contents][Index]
res_sendDocumentation:
man res_send
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/auth_des.h, Previous: Glibc resolv.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/auth.h>Next: authdes_pk_create, Up: Glibc rpc/auth.h [Contents][Index]
authdes_createGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: authnone_create, Previous: authdes_create, Up: Glibc rpc/auth.h [Contents][Index]
authdes_pk_createGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: authunix_create, Previous: authdes_pk_create, Up: Glibc rpc/auth.h [Contents][Index]
authnone_createDocumentation:
man authnone_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: authunix_create_default, Previous: authnone_create, Up: Glibc rpc/auth.h [Contents][Index]
authunix_createDocumentation:
man authunix_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getnetname, Previous: authunix_create, Up: Glibc rpc/auth.h [Contents][Index]
authunix_create_defaultDocumentation:
man authunix_create_default
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: host2netname, Previous: authunix_create_default, Up: Glibc rpc/auth.h [Contents][Index]
getnetnameGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: key_decryptsession, Previous: getnetname, Up: Glibc rpc/auth.h [Contents][Index]
host2netnameGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: key_decryptsession_pk, Previous: host2netname, Up: Glibc rpc/auth.h [Contents][Index]
key_decryptsessionDocumentation:
man key_decryptsession
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: key_encryptsession, Previous: key_decryptsession, Up: Glibc rpc/auth.h [Contents][Index]
key_decryptsession_pkGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: key_encryptsession_pk, Previous: key_decryptsession_pk, Up: Glibc rpc/auth.h [Contents][Index]
key_encryptsessionDocumentation:
man key_encryptsession
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: key_gendes, Previous: key_encryptsession, Up: Glibc rpc/auth.h [Contents][Index]
key_encryptsession_pkGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: key_get_conv, Previous: key_encryptsession_pk, Up: Glibc rpc/auth.h [Contents][Index]
key_gendesDocumentation:
man key_gendes
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: key_secretkey_is_set, Previous: key_gendes, Up: Glibc rpc/auth.h [Contents][Index]
key_get_convGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: key_setsecret, Previous: key_get_conv, Up: Glibc rpc/auth.h [Contents][Index]
key_secretkey_is_setDocumentation:
man key_secretkey_is_set
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: netname2host, Previous: key_secretkey_is_set, Up: Glibc rpc/auth.h [Contents][Index]
key_setsecretDocumentation:
man key_setsecret
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: netname2user, Previous: key_setsecret, Up: Glibc rpc/auth.h [Contents][Index]
netname2hostGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: user2netname, Previous: netname2host, Up: Glibc rpc/auth.h [Contents][Index]
netname2userGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_des_block, Previous: netname2user, Up: Glibc rpc/auth.h [Contents][Index]
user2netnameGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_opaque_auth, Previous: user2netname, Up: Glibc rpc/auth.h [Contents][Index]
xdr_des_blockGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xdr_des_block, Up: Glibc rpc/auth.h [Contents][Index]
xdr_opaque_authDocumentation:
man xdr_opaque_auth
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/auth_unix.h, Previous: Glibc rpc/auth.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/auth_des.h>| • authdes_getucred | ||
| • getpublickey | ||
| • getsecretkey | ||
| • rtime |
Next: getpublickey, Up: Glibc rpc/auth_des.h [Contents][Index]
authdes_getucredGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getsecretkey, Previous: authdes_getucred, Up: Glibc rpc/auth_des.h [Contents][Index]
getpublickeyGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rtime, Previous: getpublickey, Up: Glibc rpc/auth_des.h [Contents][Index]
getsecretkeyGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: getsecretkey, Up: Glibc rpc/auth_des.h [Contents][Index]
rtimeDocumentation:
man rtime
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/clnt.h, Previous: Glibc rpc/auth_des.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/auth_unix.h>| • xdr_authunix_parms |
Up: Glibc rpc/auth_unix.h [Contents][Index]
xdr_authunix_parmsDocumentation:
man xdr_authunix_parms
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/key_prot.h, Previous: Glibc rpc/auth_unix.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/clnt.h>Next: clnt_create, Up: Glibc rpc/clnt.h [Contents][Index]
callrpcDocumentation:
man callrpc
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clnt_pcreateerror, Previous: callrpc, Up: Glibc rpc/clnt.h [Contents][Index]
clnt_createDocumentation:
man clnt_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clnt_perrno, Previous: clnt_create, Up: Glibc rpc/clnt.h [Contents][Index]
clnt_pcreateerrorDocumentation:
man clnt_pcreateerror
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clnt_perror, Previous: clnt_pcreateerror, Up: Glibc rpc/clnt.h [Contents][Index]
clnt_perrnoDocumentation:
man clnt_perrno
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clnt_spcreateerror, Previous: clnt_perrno, Up: Glibc rpc/clnt.h [Contents][Index]
clnt_perrorDocumentation:
man clnt_perror
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clnt_sperrno, Previous: clnt_perror, Up: Glibc rpc/clnt.h [Contents][Index]
clnt_spcreateerrorDocumentation:
man clnt_spcreateerror
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clnt_sperror, Previous: clnt_spcreateerror, Up: Glibc rpc/clnt.h [Contents][Index]
clnt_sperrnoDocumentation:
man clnt_sperrno
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clntraw_create, Previous: clnt_sperrno, Up: Glibc rpc/clnt.h [Contents][Index]
clnt_sperrorDocumentation:
man clnt_sperror
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clnttcp_create, Previous: clnt_sperror, Up: Glibc rpc/clnt.h [Contents][Index]
clntraw_createDocumentation:
man clntraw_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clntudp_bufcreate, Previous: clntraw_create, Up: Glibc rpc/clnt.h [Contents][Index]
clnttcp_createDocumentation:
man clnttcp_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clntudp_create, Previous: clnttcp_create, Up: Glibc rpc/clnt.h [Contents][Index]
clntudp_bufcreateDocumentation:
man clntudp_bufcreate
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clntunix_create, Previous: clntudp_bufcreate, Up: Glibc rpc/clnt.h [Contents][Index]
clntudp_createDocumentation:
man clntudp_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: get_myaddress, Previous: clntudp_create, Up: Glibc rpc/clnt.h [Contents][Index]
clntunix_createGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getrpcport, Previous: clntunix_create, Up: Glibc rpc/clnt.h [Contents][Index]
get_myaddressDocumentation:
man get_myaddress
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rpc_createerr, Previous: get_myaddress, Up: Glibc rpc/clnt.h [Contents][Index]
getrpcportDocumentation:
man getrpcport
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: getrpcport, Up: Glibc rpc/clnt.h [Contents][Index]
rpc_createerrGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/netdb.h, Previous: Glibc rpc/clnt.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/key_prot.h>| • xdr_cryptkeyarg | ||
| • xdr_cryptkeyarg2 | ||
| • xdr_cryptkeyres | ||
| • xdr_getcredres | ||
| • xdr_key_netstarg | ||
| • xdr_key_netstres | ||
| • xdr_keybuf | ||
| • xdr_keystatus | ||
| • xdr_netnamestr | ||
| • xdr_unixcred |
Next: xdr_cryptkeyarg2, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_cryptkeyargGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_cryptkeyres, Previous: xdr_cryptkeyarg, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_cryptkeyarg2Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_getcredres, Previous: xdr_cryptkeyarg2, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_cryptkeyresGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_key_netstarg, Previous: xdr_cryptkeyres, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_getcredresGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_key_netstres, Previous: xdr_getcredres, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_key_netstargGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_keybuf, Previous: xdr_key_netstarg, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_key_netstresGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_keystatus, Previous: xdr_key_netstres, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_keybufGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_netnamestr, Previous: xdr_keybuf, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_keystatusGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_unixcred, Previous: xdr_keystatus, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_netnamestrGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xdr_netnamestr, Up: Glibc rpc/key_prot.h [Contents][Index]
xdr_unixcredGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/pmap_clnt.h, Previous: Glibc rpc/key_prot.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/netdb.h>| • endrpcent | ||
| • getrpcbyname | ||
| • getrpcbyname_r | ||
| • getrpcbynumber | ||
| • getrpcbynumber_r | ||
| • getrpcent | ||
| • getrpcent_r | ||
| • setrpcent |
Next: getrpcbyname, Up: Glibc rpc/netdb.h [Contents][Index]
endrpcentDocumentation:
man endrpcent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getrpcbyname_r, Previous: endrpcent, Up: Glibc rpc/netdb.h [Contents][Index]
getrpcbynameDocumentation:
man getrpcbyname
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getrpcbynumber, Previous: getrpcbyname, Up: Glibc rpc/netdb.h [Contents][Index]
getrpcbyname_rDocumentation:
man getrpcbyname_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getrpcbynumber_r, Previous: getrpcbyname_r, Up: Glibc rpc/netdb.h [Contents][Index]
getrpcbynumberDocumentation:
man getrpcbynumber
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getrpcent, Previous: getrpcbynumber, Up: Glibc rpc/netdb.h [Contents][Index]
getrpcbynumber_rDocumentation:
man getrpcbynumber_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getrpcent_r, Previous: getrpcbynumber_r, Up: Glibc rpc/netdb.h [Contents][Index]
getrpcentDocumentation:
man getrpcent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setrpcent, Previous: getrpcent, Up: Glibc rpc/netdb.h [Contents][Index]
getrpcent_rDocumentation:
man getrpcent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: getrpcent_r, Up: Glibc rpc/netdb.h [Contents][Index]
setrpcentDocumentation:
man setrpcent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/pmap_prot.h, Previous: Glibc rpc/netdb.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/pmap_clnt.h>| • clnt_broadcast | ||
| • pmap_getmaps | ||
| • pmap_getport | ||
| • pmap_rmtcall | ||
| • pmap_set | ||
| • pmap_unset |
Next: pmap_getmaps, Up: Glibc rpc/pmap_clnt.h [Contents][Index]
clnt_broadcastDocumentation:
man clnt_broadcast
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pmap_getport, Previous: clnt_broadcast, Up: Glibc rpc/pmap_clnt.h [Contents][Index]
pmap_getmapsDocumentation:
man pmap_getmaps
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pmap_rmtcall, Previous: pmap_getmaps, Up: Glibc rpc/pmap_clnt.h [Contents][Index]
pmap_getportLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pmap-getport-3.html
Documentation:
man pmap_getport
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pmap_set, Previous: pmap_getport, Up: Glibc rpc/pmap_clnt.h [Contents][Index]
pmap_rmtcallDocumentation:
man pmap_rmtcall
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pmap_unset, Previous: pmap_rmtcall, Up: Glibc rpc/pmap_clnt.h [Contents][Index]
pmap_setLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pmap-set-3.html
Documentation:
man pmap_set
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: pmap_set, Up: Glibc rpc/pmap_clnt.h [Contents][Index]
pmap_unsetLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-pmap-unset-3.html
Documentation:
man pmap_unset
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/pmap_rmt.h, Previous: Glibc rpc/pmap_clnt.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/pmap_prot.h>| • xdr_pmap | ||
| • xdr_pmaplist |
Next: xdr_pmaplist, Up: Glibc rpc/pmap_prot.h [Contents][Index]
xdr_pmapDocumentation:
man xdr_pmap
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xdr_pmap, Up: Glibc rpc/pmap_prot.h [Contents][Index]
xdr_pmaplistDocumentation:
man xdr_pmaplist
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/rpc_msg.h, Previous: Glibc rpc/pmap_prot.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/pmap_rmt.h>| • xdr_rmtcall_args | ||
| • xdr_rmtcallres |
Next: xdr_rmtcallres, Up: Glibc rpc/pmap_rmt.h [Contents][Index]
xdr_rmtcall_argsGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xdr_rmtcall_args, Up: Glibc rpc/pmap_rmt.h [Contents][Index]
xdr_rmtcallresGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/svc.h, Previous: Glibc rpc/pmap_rmt.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/rpc_msg.h>| • xdr_callhdr | ||
| • xdr_callmsg | ||
| • xdr_replymsg |
Next: xdr_callmsg, Up: Glibc rpc/rpc_msg.h [Contents][Index]
xdr_callhdrDocumentation:
man xdr_callhdr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_replymsg, Previous: xdr_callhdr, Up: Glibc rpc/rpc_msg.h [Contents][Index]
xdr_callmsgDocumentation:
man xdr_callmsg
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xdr_callmsg, Up: Glibc rpc/rpc_msg.h [Contents][Index]
xdr_replymsgDocumentation:
man xdr_replymsg
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpc/xdr.h, Previous: Glibc rpc/rpc_msg.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/svc.h>Next: svc_fdset, Up: Glibc rpc/svc.h [Contents][Index]
svc_exitGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_getreq, Previous: svc_exit, Up: Glibc rpc/svc.h [Contents][Index]
svc_fdsetGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_getreq_common, Previous: svc_fdset, Up: Glibc rpc/svc.h [Contents][Index]
svc_getreqDocumentation:
man svc_getreq
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_getreq_poll, Previous: svc_getreq, Up: Glibc rpc/svc.h [Contents][Index]
svc_getreq_commonGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_getreqset, Previous: svc_getreq_common, Up: Glibc rpc/svc.h [Contents][Index]
svc_getreq_pollGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_max_pollfd, Previous: svc_getreq_poll, Up: Glibc rpc/svc.h [Contents][Index]
svc_getreqsetDocumentation:
man svc_getreqset
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_pollfd, Previous: svc_getreqset, Up: Glibc rpc/svc.h [Contents][Index]
svc_max_pollfdGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_register, Previous: svc_max_pollfd, Up: Glibc rpc/svc.h [Contents][Index]
svc_pollfdGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_run, Previous: svc_pollfd, Up: Glibc rpc/svc.h [Contents][Index]
svc_registerLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-svc-register-3.html
Documentation:
man svc_register
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_sendreply, Previous: svc_register, Up: Glibc rpc/svc.h [Contents][Index]
svc_runLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-svc-run-3.html
Documentation:
man svc_run
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svc_unregister, Previous: svc_run, Up: Glibc rpc/svc.h [Contents][Index]
svc_sendreplyLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-svc-sendreply-3.html
Documentation:
man svc_sendreply
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcerr_auth, Previous: svc_sendreply, Up: Glibc rpc/svc.h [Contents][Index]
svc_unregisterDocumentation:
man svc_unregister
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcerr_decode, Previous: svc_unregister, Up: Glibc rpc/svc.h [Contents][Index]
svcerr_authDocumentation:
man svcerr_auth
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcerr_noproc, Previous: svcerr_auth, Up: Glibc rpc/svc.h [Contents][Index]
svcerr_decodeDocumentation:
man svcerr_decode
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcerr_noprog, Previous: svcerr_decode, Up: Glibc rpc/svc.h [Contents][Index]
svcerr_noprocDocumentation:
man svcerr_noproc
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcerr_progvers, Previous: svcerr_noproc, Up: Glibc rpc/svc.h [Contents][Index]
svcerr_noprogDocumentation:
man svcerr_noprog
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcerr_systemerr, Previous: svcerr_noprog, Up: Glibc rpc/svc.h [Contents][Index]
svcerr_progversDocumentation:
man svcerr_progvers
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcerr_weakauth, Previous: svcerr_progvers, Up: Glibc rpc/svc.h [Contents][Index]
svcerr_systemerrDocumentation:
man svcerr_systemerr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcraw_create, Previous: svcerr_systemerr, Up: Glibc rpc/svc.h [Contents][Index]
svcerr_weakauthDocumentation:
man svcerr_weakauth
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svctcp_create, Previous: svcerr_weakauth, Up: Glibc rpc/svc.h [Contents][Index]
svcraw_createDocumentation:
man svcraw_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcudp_bufcreate, Previous: svcraw_create, Up: Glibc rpc/svc.h [Contents][Index]
svctcp_createLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-svctcp-create-3.html
Documentation:
man svctcp_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcudp_create, Previous: svctcp_create, Up: Glibc rpc/svc.h [Contents][Index]
svcudp_bufcreateDocumentation:
man svcudp_bufcreate
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: svcunix_create, Previous: svcudp_bufcreate, Up: Glibc rpc/svc.h [Contents][Index]
svcudp_createLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-svcudp-create-3.html
Documentation:
man svcudp_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xprt_register, Previous: svcudp_create, Up: Glibc rpc/svc.h [Contents][Index]
svcunix_createGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xprt_unregister, Previous: svcunix_create, Up: Glibc rpc/svc.h [Contents][Index]
xprt_registerDocumentation:
man xprt_register
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xprt_register, Up: Glibc rpc/svc.h [Contents][Index]
xprt_unregisterDocumentation:
man xprt_unregister
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpcsvc/nislib.h, Previous: Glibc rpc/svc.h, Up: Glibc Function Substitutes [Contents][Index]
<rpc/xdr.h>| • xdr_array | ||
| • xdr_bool | ||
| • xdr_bytes | ||
| • xdr_char | ||
| • xdr_double | ||
| • xdr_enum | ||
| • xdr_float | ||
| • xdr_free | ||
| • xdr_hyper | ||
| • xdr_int | ||
| • xdr_int16_t | ||
| • xdr_int32_t | ||
| • xdr_int64_t | ||
| • xdr_int8_t | ||
| • xdr_long | ||
| • xdr_longlong_t | ||
| • xdr_netobj | ||
| • xdr_opaque | ||
| • xdr_pointer | ||
| • xdr_quad_t | ||
| • xdr_reference | ||
| • xdr_short | ||
| • xdr_sizeof | ||
| • xdr_string | ||
| • xdr_u_char | ||
| • xdr_u_hyper | ||
| • xdr_u_int | ||
| • xdr_u_long | ||
| • xdr_u_longlong_t | ||
| • xdr_u_quad_t | ||
| • xdr_u_short | ||
| • xdr_uint16_t | ||
| • xdr_uint32_t | ||
| • xdr_uint64_t | ||
| • xdr_uint8_t | ||
| • xdr_union | ||
| • xdr_vector | ||
| • xdr_void | ||
| • xdr_wrapstring | ||
| • xdrmem_create | ||
| • xdrrec_create | ||
| • xdrrec_endofrecord | ||
| • xdrrec_eof | ||
| • xdrrec_skiprecord | ||
| • xdrstdio_create |
Next: xdr_bool, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_arrayDocumentation:
man xdr_array
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_bytes, Previous: xdr_array, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_boolDocumentation:
man xdr_bool
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_char, Previous: xdr_bool, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_bytesDocumentation:
man xdr_bytes
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_double, Previous: xdr_bytes, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_charDocumentation:
man xdr_char
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_enum, Previous: xdr_char, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_doubleDocumentation:
man xdr_double
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_float, Previous: xdr_double, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_enumDocumentation:
man xdr_enum
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_free, Previous: xdr_enum, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_floatDocumentation:
man xdr_float
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_hyper, Previous: xdr_float, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_freeDocumentation:
man xdr_free
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_int, Previous: xdr_free, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_hyperGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_int16_t, Previous: xdr_hyper, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_intDocumentation:
man xdr_int
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_int32_t, Previous: xdr_int, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_int16_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_int64_t, Previous: xdr_int16_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_int32_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_int8_t, Previous: xdr_int32_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_int64_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_long, Previous: xdr_int64_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_int8_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_longlong_t, Previous: xdr_int8_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_longDocumentation:
man xdr_long
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_netobj, Previous: xdr_long, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_longlong_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_opaque, Previous: xdr_longlong_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_netobjGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_pointer, Previous: xdr_netobj, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_opaqueDocumentation:
man xdr_opaque
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_quad_t, Previous: xdr_opaque, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_pointerDocumentation:
man xdr_pointer
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_reference, Previous: xdr_pointer, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_quad_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_short, Previous: xdr_quad_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_referenceDocumentation:
man xdr_reference
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_sizeof, Previous: xdr_reference, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_shortDocumentation:
man xdr_short
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_string, Previous: xdr_short, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_sizeofGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_u_char, Previous: xdr_sizeof, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_stringDocumentation:
man xdr_string
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_u_hyper, Previous: xdr_string, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_u_charDocumentation:
man xdr_u_char
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_u_int, Previous: xdr_u_char, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_u_hyperGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_u_long, Previous: xdr_u_hyper, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_u_intLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-xdr-u-int-3.html
Documentation:
man xdr_u_int
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_u_longlong_t, Previous: xdr_u_int, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_u_longDocumentation:
man xdr_u_long
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_u_quad_t, Previous: xdr_u_long, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_u_longlong_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_u_short, Previous: xdr_u_longlong_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_u_quad_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_uint16_t, Previous: xdr_u_quad_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_u_shortDocumentation:
man xdr_u_short
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_uint32_t, Previous: xdr_u_short, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_uint16_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_uint64_t, Previous: xdr_uint16_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_uint32_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_uint8_t, Previous: xdr_uint32_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_uint64_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_union, Previous: xdr_uint64_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_uint8_tGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_vector, Previous: xdr_uint8_t, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_unionDocumentation:
man xdr_union
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_void, Previous: xdr_union, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_vectorDocumentation:
man xdr_vector
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_wrapstring, Previous: xdr_vector, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_voidDocumentation:
man xdr_void
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdrmem_create, Previous: xdr_void, Up: Glibc rpc/xdr.h [Contents][Index]
xdr_wrapstringDocumentation:
man xdr_wrapstring
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdrrec_create, Previous: xdr_wrapstring, Up: Glibc rpc/xdr.h [Contents][Index]
xdrmem_createDocumentation:
man xdrmem_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdrrec_endofrecord, Previous: xdrmem_create, Up: Glibc rpc/xdr.h [Contents][Index]
xdrrec_createDocumentation:
man xdrrec_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdrrec_eof, Previous: xdrrec_create, Up: Glibc rpc/xdr.h [Contents][Index]
xdrrec_endofrecordDocumentation:
man xdrrec_endofrecord
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdrrec_skiprecord, Previous: xdrrec_endofrecord, Up: Glibc rpc/xdr.h [Contents][Index]
xdrrec_eofDocumentation:
man xdrrec_eof
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdrstdio_create, Previous: xdrrec_eof, Up: Glibc rpc/xdr.h [Contents][Index]
xdrrec_skiprecordDocumentation:
man xdrrec_skiprecord
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xdrrec_skiprecord, Up: Glibc rpc/xdr.h [Contents][Index]
xdrstdio_createLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-xdrstdio-create-3.html
Documentation:
man xdrstdio_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpcsvc/nis_callback.h, Previous: Glibc rpc/xdr.h, Up: Glibc Function Substitutes [Contents][Index]
<rpcsvc/nislib.h>Next: nis_add_entry, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_addGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_addmember, Previous: nis_add, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_add_entryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_checkpoint, Previous: nis_add_entry, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_addmemberGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_clone_object, Previous: nis_addmember, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_checkpointGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_creategroup, Previous: nis_checkpoint, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_clone_objectGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_destroy_object, Previous: nis_clone_object, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_creategroupGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_destroygroup, Previous: nis_creategroup, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_destroy_objectGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_dir_cmp, Previous: nis_destroy_object, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_destroygroupGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_domain_of, Previous: nis_destroygroup, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_dir_cmpGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_domain_of_r, Previous: nis_dir_cmp, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_domain_ofGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_first_entry, Previous: nis_domain_of, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_domain_of_rGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_freenames, Previous: nis_domain_of_r, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_first_entryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_freeresult, Previous: nis_first_entry, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_freenamesGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_freeservlist, Previous: nis_freenames, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_freeresultGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_freetags, Previous: nis_freeresult, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_freeservlistGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_getnames, Previous: nis_freeservlist, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_freetagsGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_getservlist, Previous: nis_freetags, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_getnamesGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_ismember, Previous: nis_getnames, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_getservlistGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_leaf_of, Previous: nis_getservlist, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_ismemberGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_leaf_of_r, Previous: nis_ismember, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_leaf_ofGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_lerror, Previous: nis_leaf_of, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_leaf_of_rGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_list, Previous: nis_leaf_of_r, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_lerrorGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_local_directory, Previous: nis_lerror, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_listGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_local_group, Previous: nis_list, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_local_directoryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_local_host, Previous: nis_local_directory, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_local_groupGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_local_principal, Previous: nis_local_group, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_local_hostGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_lookup, Previous: nis_local_host, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_local_principalGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_mkdir, Previous: nis_local_principal, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_lookupGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_modify, Previous: nis_lookup, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_mkdirGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_modify_entry, Previous: nis_mkdir, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_modifyGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_name_of, Previous: nis_modify, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_modify_entryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_name_of_r, Previous: nis_modify_entry, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_name_ofGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_next_entry, Previous: nis_name_of, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_name_of_rGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_perror, Previous: nis_name_of_r, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_next_entryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_ping, Previous: nis_next_entry, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_perrorGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_directory, Previous: nis_perror, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_pingGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_entry, Previous: nis_ping, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_directoryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_group, Previous: nis_print_directory, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_entryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_group_entry, Previous: nis_print_entry, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_groupGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_link, Previous: nis_print_group, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_group_entryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_object, Previous: nis_print_group_entry, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_linkGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_result, Previous: nis_print_link, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_objectGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_rights, Previous: nis_print_object, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_resultGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_print_table, Previous: nis_print_result, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_rightsGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_remove, Previous: nis_print_rights, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_print_tableGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_remove_entry, Previous: nis_print_table, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_removeGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_removemember, Previous: nis_remove, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_remove_entryGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_rmdir, Previous: nis_remove_entry, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_removememberGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_servstate, Previous: nis_removemember, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_rmdirGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_sperrno, Previous: nis_rmdir, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_servstateGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_sperror, Previous: nis_servstate, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_sperrnoGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_sperror_r, Previous: nis_sperrno, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_sperrorGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_stats, Previous: nis_sperror, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_sperror_rGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: nis_verifygroup, Previous: nis_sperror_r, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_statsGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: nis_stats, Up: Glibc rpcsvc/nislib.h [Contents][Index]
nis_verifygroupGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpcsvc/yp.h, Previous: Glibc rpcsvc/nislib.h, Up: Glibc Function Substitutes [Contents][Index]
<rpcsvc/nis_callback.h>| • xdr_cback_data | ||
| • xdr_obj_p |
Next: xdr_obj_p, Up: Glibc rpcsvc/nis_callback.h [Contents][Index]
xdr_cback_dataGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xdr_cback_data, Up: Glibc rpcsvc/nis_callback.h [Contents][Index]
xdr_obj_pGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc rpcsvc/ypclnt.h, Previous: Glibc rpcsvc/nis_callback.h, Up: Glibc Function Substitutes [Contents][Index]
<rpcsvc/yp.h>Next: xdr_keydat, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_domainnameGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_valdat, Previous: xdr_domainname, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_keydatGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypbind_resptype, Previous: xdr_keydat, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_valdatGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypmap_parms, Previous: xdr_valdat, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypbind_resptypeGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypmaplist, Previous: xdr_ypbind_resptype, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypmap_parmsGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_yppushresp_xfr, Previous: xdr_ypmap_parms, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypmaplistGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypreq_key, Previous: xdr_ypmaplist, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_yppushresp_xfrGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypreq_nokey, Previous: xdr_yppushresp_xfr, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypreq_keyGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypreq_xfr, Previous: xdr_ypreq_key, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypreq_nokeyGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypresp_all, Previous: xdr_ypreq_nokey, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypreq_xfrGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypresp_key_val, Previous: xdr_ypreq_xfr, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypresp_allGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypresp_maplist, Previous: xdr_ypresp_all, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypresp_key_valGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypresp_master, Previous: xdr_ypresp_key_val, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypresp_maplistGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypresp_order, Previous: xdr_ypresp_maplist, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypresp_masterGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypresp_val, Previous: xdr_ypresp_master, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypresp_orderGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypresp_xfr, Previous: xdr_ypresp_order, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypresp_valGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypstat, Previous: xdr_ypresp_val, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypresp_xfrGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: xdr_ypxfrstat, Previous: xdr_ypresp_xfr, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypstatGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: xdr_ypstat, Up: Glibc rpcsvc/yp.h [Contents][Index]
xdr_ypxfrstatGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sched.h, Previous: Glibc rpcsvc/yp.h, Up: Glibc Function Substitutes [Contents][Index]
<rpcsvc/ypclnt.h>| • yp_all | ||
| • yp_bind | ||
| • yp_first | ||
| • yp_get_default_domain | ||
| • yp_master | ||
| • yp_match | ||
| • yp_next | ||
| • yp_order | ||
| • yp_unbind | ||
| • ypbinderr_string | ||
| • yperr_string | ||
| • ypprot_err |
Next: yp_bind, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_allGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yp_first, Previous: yp_all, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_bindGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yp_get_default_domain, Previous: yp_bind, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_firstGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yp_master, Previous: yp_first, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_get_default_domainGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yp_match, Previous: yp_get_default_domain, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_masterGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yp_next, Previous: yp_master, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_matchGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yp_order, Previous: yp_match, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_nextGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yp_unbind, Previous: yp_next, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_orderGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ypbinderr_string, Previous: yp_order, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yp_unbindGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: yperr_string, Previous: yp_unbind, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
ypbinderr_stringGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ypprot_err, Previous: ypbinderr_string, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
yperr_stringGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: yperr_string, Up: Glibc rpcsvc/ypclnt.h [Contents][Index]
ypprot_errGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc search.h, Previous: Glibc rpcsvc/ypclnt.h, Up: Glibc Function Substitutes [Contents][Index]
<sched.h>| • clone | ||
| • getcpu | ||
| • sched_getaffinity | ||
| • sched_getattr | ||
| • sched_getcpu | ||
| • sched_setaffinity | ||
| • sched_setattr | ||
| • setns |
Next: getcpu, Up: Glibc sched.h [Contents][Index]
cloneDocumentation:
man clone
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched_getaffinity, Previous: clone, Up: Glibc sched.h [Contents][Index]
getcpuDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched_getattr, Previous: getcpu, Up: Glibc sched.h [Contents][Index]
sched_getaffinityLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sched-getaffinity.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched_getcpu, Previous: sched_getaffinity, Up: Glibc sched.h [Contents][Index]
sched_getattrDocumentation:
man sched_getattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched_setaffinity, Previous: sched_getattr, Up: Glibc sched.h [Contents][Index]
sched_getcpuDocumentation:
man sched_getcpu
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sched_setattr, Previous: sched_getcpu, Up: Glibc sched.h [Contents][Index]
sched_setaffinityLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sched-setaffinity.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setns, Previous: sched_setaffinity, Up: Glibc sched.h [Contents][Index]
sched_setattrDocumentation:
man sched_setattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: sched_setattr, Up: Glibc sched.h [Contents][Index]
setnsDocumentation:
man setns
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc selinux/selinux.h, Previous: Glibc sched.h, Up: Glibc Function Substitutes [Contents][Index]
<search.h>| • hcreate_r | ||
| • hdestroy_r | ||
| • hsearch_r | ||
| • tdestroy | ||
| • twalk_r |
Next: hdestroy_r, Up: Glibc search.h [Contents][Index]
hcreate_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-hcreate-r.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: hsearch_r, Previous: hcreate_r, Up: Glibc search.h [Contents][Index]
hdestroy_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-hdestroy-r.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tdestroy, Previous: hdestroy_r, Up: Glibc search.h [Contents][Index]
hsearch_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-hsearch-r.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: twalk_r, Previous: hsearch_r, Up: Glibc search.h [Contents][Index]
tdestroyDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: tdestroy, Up: Glibc search.h [Contents][Index]
twalk_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc shadow.h, Previous: Glibc search.h, Up: Glibc Function Substitutes [Contents][Index]
<selinux/selinux.h>| • fgetfilecon | ||
| • getfilecon | ||
| • lgetfilecon |
Next: getfilecon, Up: Glibc selinux/selinux.h [Contents][Index]
fgetfileconDocumentation:
man fgetfilecon
Gnulib module: selinux-h
Portability problems fixed by Gnulib:
errno to ENOTSUP and returns ‘-1’.
fgetfilecon function that insulates the caller from API-nonconforming behavior.
Without this wrapper, fgetfilecon can return ‘0’ and set
the context pointer to NULL, and in another scenario can return
‘10’ and set the context pointer to ‘unlabeled’.
This wrapper returns ‘-1’ in each case and sets errno to
ENOTSUP and ENODATA respectively.
While the conditions that can provoke such behavior are rare, the
average caller does not handle them because the possibility of such
behavior is not documented.
Portability problems not fixed by Gnulib:
Next: lgetfilecon, Previous: fgetfilecon, Up: Glibc selinux/selinux.h [Contents][Index]
getfileconDocumentation:
man getfilecon
Gnulib module: selinux-h
Portability problems fixed by Gnulib:
errno to ENOTSUP and returns ‘-1’.
getfilecon function that insulates the caller from API-nonconforming behavior.
Without this wrapper, getfilecon can return ‘0’ and set
the context pointer to NULL, and in another scenario can return
‘10’ and set the context pointer to ‘unlabeled’.
This wrapper returns ‘-1’ in each case and sets errno to
ENOTSUP and ENODATA respectively.
While the conditions that can provoke such behavior are rare, the
average caller does not handle them because the possibility of such
behavior is not documented.
Portability problems not fixed by Gnulib:
Previous: getfilecon, Up: Glibc selinux/selinux.h [Contents][Index]
lgetfileconDocumentation:
man lgetfilecon
Gnulib module: selinux-h
Portability problems fixed by Gnulib:
errno to ENOTSUP and returns ‘-1’.
lgetfilecon function that insulates the caller from API-nonconforming behavior.
Without this wrapper, lgetfilecon can return ‘0’ and set
the context pointer to NULL, and in another scenario can return
‘10’ and set the context pointer to ‘unlabeled’.
This wrapper returns ‘-1’ in each case and sets errno to
ENOTSUP and ENODATA respectively.
While the conditions that can provoke such behavior are rare, the
average caller does not handle them because the possibility of such
behavior is not documented.
Portability problems not fixed by Gnulib:
Next: Glibc signal.h, Previous: Glibc selinux/selinux.h, Up: Glibc Function Substitutes [Contents][Index]
<shadow.h>| • endspent | ||
| • fgetspent | ||
| • fgetspent_r | ||
| • getspent | ||
| • getspent_r | ||
| • getspnam | ||
| • getspnam_r | ||
| • lckpwdf | ||
| • putspent | ||
| • setspent | ||
| • sgetspent | ||
| • sgetspent_r | ||
| • ulckpwdf |
Next: fgetspent, Up: Glibc shadow.h [Contents][Index]
endspentDocumentation:
man endspent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fgetspent_r, Previous: endspent, Up: Glibc shadow.h [Contents][Index]
fgetspentDocumentation:
man fgetspent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getspent, Previous: fgetspent, Up: Glibc shadow.h [Contents][Index]
fgetspent_rDocumentation:
man fgetspent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getspent_r, Previous: fgetspent_r, Up: Glibc shadow.h [Contents][Index]
getspentDocumentation:
man getspent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getspnam, Previous: getspent, Up: Glibc shadow.h [Contents][Index]
getspent_rDocumentation:
man getspent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getspnam_r, Previous: getspent_r, Up: Glibc shadow.h [Contents][Index]
getspnamDocumentation:
man getspnam
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lckpwdf, Previous: getspnam, Up: Glibc shadow.h [Contents][Index]
getspnam_rDocumentation:
man getspnam_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: putspent, Previous: getspnam_r, Up: Glibc shadow.h [Contents][Index]
lckpwdfDocumentation:
man lckpwdf
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setspent, Previous: lckpwdf, Up: Glibc shadow.h [Contents][Index]
putspentDocumentation:
man putspent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sgetspent, Previous: putspent, Up: Glibc shadow.h [Contents][Index]
setspentDocumentation:
man setspent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sgetspent_r, Previous: setspent, Up: Glibc shadow.h [Contents][Index]
sgetspentDocumentation:
man sgetspent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ulckpwdf, Previous: sgetspent, Up: Glibc shadow.h [Contents][Index]
sgetspent_rDocumentation:
man sgetspent_r
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: sgetspent_r, Up: Glibc shadow.h [Contents][Index]
ulckpwdfDocumentation:
man ulckpwdf
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc spawn.h, Previous: Glibc shadow.h, Up: Glibc Function Substitutes [Contents][Index]
<signal.h>| • gsignal | ||
| • sigandset | ||
| • sigblock | ||
| • siggetmask | ||
| • sigisemptyset | ||
| • sigorset | ||
| • sigreturn | ||
| • sigsetmask | ||
| • sigstack | ||
| • sigvec | ||
| • ssignal | ||
| • sys_siglist | ||
| • sysv_signal | ||
| • tgkill |
Next: sigandset, Up: Glibc signal.h [Contents][Index]
gsignalDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigblock, Previous: gsignal, Up: Glibc signal.h [Contents][Index]
sigandsetLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sigandset.html
Documentation:
man sigandset
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: siggetmask, Previous: sigandset, Up: Glibc signal.h [Contents][Index]
sigblockDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigisemptyset, Previous: sigblock, Up: Glibc signal.h [Contents][Index]
siggetmaskDocumentation:
man siggetmask
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigorset, Previous: siggetmask, Up: Glibc signal.h [Contents][Index]
sigisemptysetLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sigisemptyset.html
Documentation:
man sigisemptyset
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigreturn, Previous: sigisemptyset, Up: Glibc signal.h [Contents][Index]
sigorsetLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sigorset.html
Documentation:
man sigorset
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigsetmask, Previous: sigorset, Up: Glibc signal.h [Contents][Index]
sigreturnLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sigreturn-2.html
Documentation:
man sigreturn
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigstack, Previous: sigreturn, Up: Glibc signal.h [Contents][Index]
sigsetmaskDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigvec, Previous: sigsetmask, Up: Glibc signal.h [Contents][Index]
sigstackDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ssignal, Previous: sigstack, Up: Glibc signal.h [Contents][Index]
sigvecDocumentation:
man sigvec
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys_siglist, Previous: sigvec, Up: Glibc signal.h [Contents][Index]
ssignalDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sysv_signal, Previous: ssignal, Up: Glibc signal.h [Contents][Index]
sys_siglistDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Signal-Messages.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tgkill, Previous: sys_siglist, Up: Glibc signal.h [Contents][Index]
sysv_signalDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: sysv_signal, Up: Glibc signal.h [Contents][Index]
tgkillDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc stdio.h, Previous: Glibc signal.h, Up: Glibc Function Substitutes [Contents][Index]
<spawn.h>Next: pidfd_spawnp, Up: Glibc spawn.h [Contents][Index]
pidfd_spawnDocumentation:
https://lwn.net/Articles/943022/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawn_file_actions_addchdir_np, Previous: pidfd_spawn, Up: Glibc spawn.h [Contents][Index]
pidfd_spawnpDocumentation:
https://lwn.net/Articles/943022/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawn_file_actions_addclosefrom_np, Previous: pidfd_spawnp, Up: Glibc spawn.h [Contents][Index]
posix_spawn_file_actions_addchdir_npposix_spawn_file_actions_addchdir is
specified in POSIX.1-2024.
Draft specification:
https://www.austingroupbugs.net/view.php?id=1208
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: Gnulib has a module posix_spawn_file_actions_addchdir that
provides equivalent functionality, just without the suffix _np.
Next: posix_spawn_file_actions_addfchdir_np, Previous: posix_spawn_file_actions_addchdir_np, Up: Glibc spawn.h [Contents][Index]
posix_spawn_file_actions_addclosefrom_npGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawn_file_actions_addtcsetpgrp_np, Previous: posix_spawn_file_actions_addclosefrom_np, Up: Glibc spawn.h [Contents][Index]
posix_spawn_file_actions_addfchdir_npposix_spawn_file_actions_addfchdir is
specified in POSIX.1-2024.
Draft specification:
https://www.austingroupbugs.net/view.php?id=1208
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: Gnulib has a module posix_spawn_file_actions_addfchdir that
provides equivalent functionality, just without the suffix _np.
Next: posix_spawnattr_getcgroup_np, Previous: posix_spawn_file_actions_addfchdir_np, Up: Glibc spawn.h [Contents][Index]
posix_spawn_file_actions_addtcsetpgrp_npDocumentation: —
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: posix_spawnattr_setcgroup_np, Previous: posix_spawn_file_actions_addtcsetpgrp_np, Up: Glibc spawn.h [Contents][Index]
posix_spawnattr_getcgroup_npDocumentation:
https://sourceware.org/pipermail/libc-alpha/2023-August/151106.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: posix_spawnattr_getcgroup_np, Up: Glibc spawn.h [Contents][Index]
posix_spawnattr_setcgroup_npDocumentation:
https://sourceware.org/pipermail/libc-alpha/2023-August/151106.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc stdlib.h, Previous: Glibc spawn.h, Up: Glibc Function Substitutes [Contents][Index]
<stdio.h>| • cuserid | ||
| • clearerr_unlocked | ||
| • fcloseall | ||
| • feof_unlocked | ||
| • ferror_unlocked | ||
| • fflush_unlocked | ||
| • fgetc_unlocked | ||
| • fgets_unlocked | ||
| • fileno_unlocked | ||
| • fopencookie | ||
| • fputc_unlocked | ||
| • fputs_unlocked | ||
| • fread_unlocked | ||
| • fwrite_unlocked | ||
| • getw | ||
| • putw | ||
| • renameat2 | ||
| • setbuffer | ||
| • setlinebuf | ||
| • sys_errlist | ||
| • sys_nerr | ||
| • tmpnam_r |
Next: clearerr_unlocked, Up: Glibc stdio.h [Contents][Index]
cuseridDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fcloseall, Previous: cuserid, Up: Glibc stdio.h [Contents][Index]
clearerr_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-clearerr-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: feof_unlocked, Previous: clearerr_unlocked, Up: Glibc stdio.h [Contents][Index]
fcloseallDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
void instead of int on some platforms:
FreeBSD 14.0.
Next: ferror_unlocked, Previous: fcloseall, Up: Glibc stdio.h [Contents][Index]
feof_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-feof-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fflush_unlocked, Previous: feof_unlocked, Up: Glibc stdio.h [Contents][Index]
ferror_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-ferror-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fgetc_unlocked, Previous: ferror_unlocked, Up: Glibc stdio.h [Contents][Index]
fflush_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fflush-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fgets_unlocked, Previous: fflush_unlocked, Up: Glibc stdio.h [Contents][Index]
fgetc_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fgetc-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fileno_unlocked, Previous: fgetc_unlocked, Up: Glibc stdio.h [Contents][Index]
fgets_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fgets-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fopencookie, Previous: fgets_unlocked, Up: Glibc stdio.h [Contents][Index]
fileno_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fileno-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fputc_unlocked, Previous: fileno_unlocked, Up: Glibc stdio.h [Contents][Index]
fopencookieDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fputs_unlocked, Previous: fopencookie, Up: Glibc stdio.h [Contents][Index]
fputc_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fputc-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fread_unlocked, Previous: fputc_unlocked, Up: Glibc stdio.h [Contents][Index]
fputs_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fputs-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fwrite_unlocked, Previous: fputs_unlocked, Up: Glibc stdio.h [Contents][Index]
fread_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fread-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getw, Previous: fread_unlocked, Up: Glibc stdio.h [Contents][Index]
fwrite_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fwrite-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: putw, Previous: fwrite_unlocked, Up: Glibc stdio.h [Contents][Index]
getwDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: renameat2, Previous: getw, Up: Glibc stdio.h [Contents][Index]
putwDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setbuffer, Previous: putw, Up: Glibc stdio.h [Contents][Index]
renameat2Documentation:
man renameat2
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
RENAME_NOREPLACE flag is specified
and the source and destination are the same file, on some platforms:
Cygwin 3.4.6.
renameat2 (AT_FDCWD, "file", AT_FDCWD, "new/" ...) succeeds
instead of failing and setting errno to ENOTDIR, on some
platforms:
GNU/Hurd with glibc 2.41.
renameat2 (ATFDCWD, "dir", AT_FDCWD, "new/" ...) fails with
errno set to ENOENT, on some platforms:
GNU/Hurd with glibc 2.42.
renameat2 (ATFDCWD, "dir/", AT_FDCWD, "new" ...) fails with
errno set to ENOTDIR, on some platforms:
GNU/Hurd with glibc 2.42.
The renameatu module addresses some of these portability issues.
Next: setlinebuf, Previous: renameat2, Up: Glibc stdio.h [Contents][Index]
setbufferLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-setbuffer-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys_errlist, Previous: setbuffer, Up: Glibc stdio.h [Contents][Index]
setlinebufDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sys_nerr, Previous: setlinebuf, Up: Glibc stdio.h [Contents][Index]
sys_errlistDocumentation:
man sys_errlist
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: tmpnam_r, Previous: sys_errlist, Up: Glibc stdio.h [Contents][Index]
sys_nerrDocumentation:
man sys_nerr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: sys_nerr, Up: Glibc stdio.h [Contents][Index]
tmpnam_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc string.h, Previous: Glibc stdio.h, Up: Glibc Function Substitutes [Contents][Index]
<stdlib.h>| • arc4random | ||
| • arc4random_buf | ||
| • arc4random_uniform | ||
| • canonicalize_file_name | ||
| • cfree | ||
| • clearenv | ||
| • drand48_r | ||
| • ecvt_r | ||
| • erand48_r | ||
| • fcvt_r | ||
| • getloadavg | ||
| • getpt | ||
| • initstate_r | ||
| • jrand48_r | ||
| • lcong48_r | ||
| • lrand48_r | ||
| • mkostemps | ||
| • mkstemps | ||
| • mrand48_r | ||
| • nrand48_r | ||
| • on_exit | ||
| • qecvt | ||
| • qecvt_r | ||
| • qfcvt | ||
| • qfcvt_r | ||
| • qgcvt | ||
| • random_r | ||
| • rpmatch | ||
| • seed48_r | ||
| • setstate_r | ||
| • srand48_r | ||
| • srandom_r | ||
| • strtod_l | ||
| • strtof_l | ||
| • strtol_l | ||
| • strtold_l | ||
| • strtoll_l | ||
| • strtoq | ||
| • strtoul_l | ||
| • strtoull_l | ||
| • strtouq | ||
| • uabs | ||
| • ulabs | ||
| • ullabs | ||
| • valloc |
Next: arc4random_buf, Up: Glibc stdlib.h [Contents][Index]
arc4randomDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: arc4random_uniform, Previous: arc4random, Up: Glibc stdlib.h [Contents][Index]
arc4random_bufDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: canonicalize_file_name, Previous: arc4random_buf, Up: Glibc stdlib.h [Contents][Index]
arc4random_uniformDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: cfree, Previous: arc4random_uniform, Up: Glibc stdlib.h [Contents][Index]
canonicalize_file_nameDocumentation:
Gnulib module: canonicalize-lgpl
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: clearenv, Previous: canonicalize_file_name, Up: Glibc stdlib.h [Contents][Index]
cfreeDocumentation:
man cfree
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: drand48_r, Previous: cfree, Up: Glibc stdlib.h [Contents][Index]
clearenvDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ecvt_r, Previous: clearenv, Up: Glibc stdlib.h [Contents][Index]
drand48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-drand48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: erand48_r, Previous: drand48_r, Up: Glibc stdlib.h [Contents][Index]
ecvt_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fcvt_r, Previous: ecvt_r, Up: Glibc stdlib.h [Contents][Index]
erand48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-erand48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getloadavg, Previous: erand48_r, Up: Glibc stdlib.h [Contents][Index]
fcvt_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getpt, Previous: fcvt_r, Up: Glibc stdlib.h [Contents][Index]
getloadavgLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getloadavg-3.html
Documentation:
Gnulib module: getloadavg
Portability problems fixed by Gnulib:
<sys/loadavg.h>, not <stdlib.h>,
on some platforms:
Solaris 11.4.
Portability problems not fixed by Gnulib:
Next: initstate_r, Previous: getloadavg, Up: Glibc stdlib.h [Contents][Index]
getptDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: jrand48_r, Previous: getpt, Up: Glibc stdlib.h [Contents][Index]
initstate_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-initstate-r-1.html
Documentation:
Gnulib module: random_r
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lcong48_r, Previous: initstate_r, Up: Glibc stdlib.h [Contents][Index]
jrand48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-jrand48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: lrand48_r, Previous: jrand48_r, Up: Glibc stdlib.h [Contents][Index]
lcong48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-lcong48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mkostemps, Previous: lcong48_r, Up: Glibc stdlib.h [Contents][Index]
lrand48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-lrand48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mkstemps, Previous: lrand48_r, Up: Glibc stdlib.h [Contents][Index]
mkostempsDocumentation:
man mkostemps
Gnulib module: mkostemps
Portability problems fixed by Gnulib:
<unistd.h> instead of <stdlib.h>
on some platforms:
macOS 14.
off_t is a 32-bit type, mkostemps may not work
correctly to create files larger than 2 GB. (Cf. AC_SYS_LARGEFILE.)
Portability problems not fixed by Gnulib:
The gnulib module clean-temp can create temporary files that will not
be left behind after signals such as SIGINT.
Next: mrand48_r, Previous: mkostemps, Up: Glibc stdlib.h [Contents][Index]
mkstempsDocumentation:
man mkstemps
Gnulib module: mkstemps
Portability problems fixed by Gnulib:
<unistd.h> instead of <stdlib.h>
on some platforms:
macOS 14.
off_t is a 32-bit type, mkstemps may not work
correctly to create files larger than 2 GB. (Cf. AC_SYS_LARGEFILE.)
Portability problems not fixed by Gnulib:
The gnulib module clean-temp can create temporary files that will not
be left behind after signals such as SIGINT.
Next: nrand48_r, Previous: mkstemps, Up: Glibc stdlib.h [Contents][Index]
mrand48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-mrand48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: on_exit, Previous: mrand48_r, Up: Glibc stdlib.h [Contents][Index]
nrand48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-nrand48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: qecvt, Previous: nrand48_r, Up: Glibc stdlib.h [Contents][Index]
on_exitDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: qecvt_r, Previous: on_exit, Up: Glibc stdlib.h [Contents][Index]
qecvtDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: qfcvt, Previous: qecvt, Up: Glibc stdlib.h [Contents][Index]
qecvt_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: qfcvt_r, Previous: qecvt_r, Up: Glibc stdlib.h [Contents][Index]
qfcvtDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: qgcvt, Previous: qfcvt, Up: Glibc stdlib.h [Contents][Index]
qfcvt_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: random_r, Previous: qfcvt_r, Up: Glibc stdlib.h [Contents][Index]
qgcvtDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rpmatch, Previous: qgcvt, Up: Glibc stdlib.h [Contents][Index]
random_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-random-r-1.html
Documentation:
Gnulib module: random_r
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: seed48_r, Previous: random_r, Up: Glibc stdlib.h [Contents][Index]
rpmatchDocumentation:
Gnulib module: rpmatch
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setstate_r, Previous: rpmatch, Up: Glibc stdlib.h [Contents][Index]
seed48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-seed48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: srand48_r, Previous: seed48_r, Up: Glibc stdlib.h [Contents][Index]
setstate_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-setstate-r-1.html
Documentation:
Gnulib module: random_r
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: srandom_r, Previous: setstate_r, Up: Glibc stdlib.h [Contents][Index]
srand48_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-srand48-r-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtod_l, Previous: srand48_r, Up: Glibc stdlib.h [Contents][Index]
srandom_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-srandom-r-1.html
Documentation:
Gnulib module: random_r
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtof_l, Previous: srandom_r, Up: Glibc stdlib.h [Contents][Index]
strtod_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtol_l, Previous: strtod_l, Up: Glibc stdlib.h [Contents][Index]
strtof_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtold_l, Previous: strtof_l, Up: Glibc stdlib.h [Contents][Index]
strtol_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtoll_l, Previous: strtol_l, Up: Glibc stdlib.h [Contents][Index]
strtold_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtoq, Previous: strtold_l, Up: Glibc stdlib.h [Contents][Index]
strtoll_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtoul_l, Previous: strtoll_l, Up: Glibc stdlib.h [Contents][Index]
strtoqLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-strtoq-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtoull_l, Previous: strtoq, Up: Glibc stdlib.h [Contents][Index]
strtoul_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strtouq, Previous: strtoul_l, Up: Glibc stdlib.h [Contents][Index]
strtoull_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: uabs, Previous: strtoull_l, Up: Glibc stdlib.h [Contents][Index]
strtouqLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-strtouq-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ulabs, Previous: strtouq, Up: Glibc stdlib.h [Contents][Index]
uabsDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ullabs, Previous: uabs, Up: Glibc stdlib.h [Contents][Index]
ulabsDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: valloc, Previous: ulabs, Up: Glibc stdlib.h [Contents][Index]
ullabsDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ullabs, Up: Glibc stdlib.h [Contents][Index]
vallocDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/auxv.h, Previous: Glibc stdlib.h, Up: Glibc Function Substitutes [Contents][Index]
<string.h>| • explicit_bzero | ||
| • memfrob | ||
| • mempcpy | ||
| • memrchr | ||
| • rawmemchr | ||
| • sigabbrev_np | ||
| • sigdescr_np | ||
| • strcasestr | ||
| • strchrnul | ||
| • strerrordesc_np | ||
| • strerrorname_np | ||
| • strfry | ||
| • strsep | ||
| • strverscmp |
Next: memfrob, Up: Glibc string.h [Contents][Index]
explicit_bzeroDocumentation:
Gnulib module: explicit_bzero
The explicit_bzero function is an approximation to what is
needed, and does not suffice in general to erase information.
Although calling explicit_bzero should clear the memory in
question, the information that was in memory may still be available
elsewhere on the machine. Proper implementation of information
erasure requires support from levels below C code.
C23 specifies the function memset_explicit, which should be
preferred to explicit_bzero in new code.
See memset_explicit.
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mempcpy, Previous: explicit_bzero, Up: Glibc string.h [Contents][Index]
memfrobDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: memrchr, Previous: memfrob, Up: Glibc string.h [Contents][Index]
mempcpyDocumentation:
Gnulib module: mempcpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: rawmemchr, Previous: mempcpy, Up: Glibc string.h [Contents][Index]
memrchrLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-memrchr.html
Documentation:
Gnulib module: memrchr
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigabbrev_np, Previous: memrchr, Up: Glibc string.h [Contents][Index]
rawmemchrDocumentation:
Gnulib module: rawmemchr
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sigdescr_np, Previous: rawmemchr, Up: Glibc string.h [Contents][Index]
sigabbrev_npDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Signal-Messages.html.
Gnulib module: sigabbrev_np
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: Gnulib has a module sig2str that contains an equivalent function
and also one that does the opposite conversion, from an abbreviated signal name
to a signal number.
Next: strcasestr, Previous: sigabbrev_np, Up: Glibc string.h [Contents][Index]
sigdescr_npDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Signal-Messages.html.
Gnulib module: sigdescr_np
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note: This function is hardly useful, because it returns English strings, not
internationalized strings. Better use the function strsignal, which
returns internationalized strings.
Next: strchrnul, Previous: sigdescr_np, Up: Glibc string.h [Contents][Index]
strcasestrLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-strcasestr.html
Documentation:
Gnulib module: strcasestr or strcasestr-simple
Portability problems fixed by either Gnulib module strcasestr-simple
or strcasestr:
Portability problems fixed by Gnulib module strcasestr:
Portability problems not fixed by Gnulib:
Next: strerrordesc_np, Previous: strcasestr, Up: Glibc string.h [Contents][Index]
strchrnulDocumentation:
Gnulib module: strchrnul
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strerrorname_np, Previous: strchrnul, Up: Glibc string.h [Contents][Index]
strerrordesc_npDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strfry, Previous: strerrordesc_np, Up: Glibc string.h [Contents][Index]
strerrorname_npDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html.
Gnulib module: strerrorname_np
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strsep, Previous: strerrorname_np, Up: Glibc string.h [Contents][Index]
strfryDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strverscmp, Previous: strfry, Up: Glibc string.h [Contents][Index]
strsepLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-strsep-3.html
Documentation:
Gnulib module: strsep
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: strsep, Up: Glibc string.h [Contents][Index]
strverscmpDocumentation:
Gnulib module: strverscmp
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
strverscmp ("B0075022800016.gbp.corp.com",
"B007502357019.GBP.CORP.COM") does not yield a negative number as it
should):
glibc 2.9
Next: Glibc sys/capability.h, Previous: Glibc string.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/auxv.h>| • getauxval |
Up: Glibc sys/auxv.h [Contents][Index]
getauxvalDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/epoll.h, Previous: Glibc sys/auxv.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/capability.h>| • capget | ||
| • capset |
Next: capset, Up: Glibc sys/capability.h [Contents][Index]
capgetDocumentation:
man capget
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: capget, Up: Glibc sys/capability.h [Contents][Index]
capsetDocumentation:
man capset
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/eventfd.h, Previous: Glibc sys/capability.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/epoll.h>| • epoll_create | ||
| • epoll_create1 | ||
| • epoll_ctl | ||
| • epoll_pwait | ||
| • epoll_pwait2 | ||
| • epoll_wait |
Next: epoll_create1, Up: Glibc sys/epoll.h [Contents][Index]
epoll_createLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-epoll-create-1.html
Documentation:
man epoll_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: epoll_ctl, Previous: epoll_create, Up: Glibc sys/epoll.h [Contents][Index]
epoll_create1Documentation:
man epoll_create1
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: epoll_pwait, Previous: epoll_create1, Up: Glibc sys/epoll.h [Contents][Index]
epoll_ctlLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-epoll-ctl-1.html
Documentation:
man epoll_ctl
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: epoll_pwait2, Previous: epoll_ctl, Up: Glibc sys/epoll.h [Contents][Index]
epoll_pwaitDocumentation:
man epoll_pwait
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: epoll_wait, Previous: epoll_pwait, Up: Glibc sys/epoll.h [Contents][Index]
epoll_pwait2Documentation:
man epoll_pwait2
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: epoll_pwait2, Up: Glibc sys/epoll.h [Contents][Index]
epoll_waitLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-epoll-wait-1.html
Documentation:
man epoll_wait
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/fanotify.h, Previous: Glibc sys/epoll.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/eventfd.h>| • eventfd | ||
| • eventfd_read | ||
| • eventfd_write |
Next: eventfd_read, Up: Glibc sys/eventfd.h [Contents][Index]
eventfdDocumentation:
man eventfd
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: eventfd_write, Previous: eventfd, Up: Glibc sys/eventfd.h [Contents][Index]
eventfd_readDocumentation:
man eventfd_read
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: eventfd_read, Up: Glibc sys/eventfd.h [Contents][Index]
eventfd_writeDocumentation:
man eventfd_write
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/file.h, Previous: Glibc sys/eventfd.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/fanotify.h>| • fanotify_init | ||
| • fanotify_mark |
Next: fanotify_mark, Up: Glibc sys/fanotify.h [Contents][Index]
fanotify_initDocumentation:
man fanotify_init
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: fanotify_init, Up: Glibc sys/fanotify.h [Contents][Index]
fanotify_markDocumentation:
man fanotify_mark
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/fsuid.h, Previous: Glibc sys/fanotify.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/file.h>| • flock |
Up: Glibc sys/file.h [Contents][Index]
flockLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-flock-2.html
Documentation:
man flock
Gnulib module: flock
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/gmon.h, Previous: Glibc sys/file.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/fsuid.h>| • setfsgid | ||
| • setfsuid |
Next: setfsuid, Up: Glibc sys/fsuid.h [Contents][Index]
setfsgidDocumentation:
man setfsgid
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: setfsgid, Up: Glibc sys/fsuid.h [Contents][Index]
setfsuidDocumentation:
man setfsuid
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/inotify.h, Previous: Glibc sys/fsuid.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/gmon.h>| • monstartup |
Up: Glibc sys/gmon.h [Contents][Index]
monstartupGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/io.h and sys/perm.h, Previous: Glibc sys/gmon.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/inotify.h>| • inotify_add_watch | ||
| • inotify_init | ||
| • inotify_init1 | ||
| • inotify_rm_watch |
Next: inotify_init, Up: Glibc sys/inotify.h [Contents][Index]
inotify_add_watchLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-inotify-add-watch.html
Documentation:
man inotify_add_watch
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inotify_init1, Previous: inotify_add_watch, Up: Glibc sys/inotify.h [Contents][Index]
inotify_initLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-inotify-init.html
Documentation:
man inotify_init
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: inotify_rm_watch, Previous: inotify_init, Up: Glibc sys/inotify.h [Contents][Index]
inotify_init1Documentation:
man inotify_init1
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: inotify_init1, Up: Glibc sys/inotify.h [Contents][Index]
inotify_rm_watchLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-inotify-rm-watch.html
Documentation:
man inotify_rm_watch
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/kdaemon.h, Previous: Glibc sys/inotify.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/io.h>, <sys/perm.h>| • ioperm | ||
| • iopl |
Next: iopl, Up: Glibc sys/io.h and sys/perm.h [Contents][Index]
iopermDocumentation:
man ioperm
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ioperm, Up: Glibc sys/io.h and sys/perm.h [Contents][Index]
ioplDocumentation:
man iopl
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/klog.h, Previous: Glibc sys/io.h and sys/perm.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/kdaemon.h>| • bdflush |
Up: Glibc sys/kdaemon.h [Contents][Index]
bdflushDocumentation:
man bdflush
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/mman.h, Previous: Glibc sys/kdaemon.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/klog.h>| • klogctl |
Up: Glibc sys/klog.h [Contents][Index]
klogctlDocumentation:
man klogctl
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/mount.h, Previous: Glibc sys/klog.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/mman.h>| • madvise | ||
| • memfd_create | ||
| • mincore | ||
| • mlock2 | ||
| • mremap | ||
| • pkey_alloc | ||
| • pkey_free | ||
| • pkey_get | ||
| • pkey_mprotect | ||
| • pkey_set | ||
| • process_madvise | ||
| • process_mrelease | ||
| • remap_file_pages |
Next: memfd_create, Up: Glibc sys/mman.h [Contents][Index]
madviseDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mincore, Previous: madvise, Up: Glibc sys/mman.h [Contents][Index]
memfd_createDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mlock2, Previous: memfd_create, Up: Glibc sys/mman.h [Contents][Index]
mincoreDocumentation:
man mincore
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mremap, Previous: mincore, Up: Glibc sys/mman.h [Contents][Index]
mlock2Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pkey_alloc, Previous: mlock2, Up: Glibc sys/mman.h [Contents][Index]
mremapLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-mremap.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pkey_free, Previous: mremap, Up: Glibc sys/mman.h [Contents][Index]
pkey_allocDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pkey_get, Previous: pkey_alloc, Up: Glibc sys/mman.h [Contents][Index]
pkey_freeDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pkey_mprotect, Previous: pkey_free, Up: Glibc sys/mman.h [Contents][Index]
pkey_getDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Memory-Protection.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pkey_set, Previous: pkey_get, Up: Glibc sys/mman.h [Contents][Index]
pkey_mprotectDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: process_madvise, Previous: pkey_mprotect, Up: Glibc sys/mman.h [Contents][Index]
pkey_setDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Memory-Protection.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: process_mrelease, Previous: pkey_set, Up: Glibc sys/mman.h [Contents][Index]
process_madviseDocumentation:
man process_madvise
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: remap_file_pages, Previous: process_madvise, Up: Glibc sys/mman.h [Contents][Index]
process_mreleaseDocumentation:
https://lwn.net/Articles/864184/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: process_mrelease, Up: Glibc sys/mman.h [Contents][Index]
remap_file_pagesDocumentation:
man remap_file_pages
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/personality.h, Previous: Glibc sys/mman.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/mount.h>| • fsconfig | ||
| • fsmount | ||
| • fsopen | ||
| • fspick | ||
| • mount | ||
| • mount_setattr | ||
| • move_mount | ||
| • open_tree | ||
| • umount | ||
| • umount2 |
Next: fsmount, Up: Glibc sys/mount.h [Contents][Index]
fsconfigDocumentation:
https://lore.kernel.org/all/159827191245.306468.4903071494263813779.stgit@warthog.procyon.org.uk/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fsopen, Previous: fsconfig, Up: Glibc sys/mount.h [Contents][Index]
fsmountDocumentation:
https://lore.kernel.org/all/159827190508.306468.12755090833140558156.stgit@warthog.procyon.org.uk/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: fspick, Previous: fsmount, Up: Glibc sys/mount.h [Contents][Index]
fsopenDocumentation:
https://lore.kernel.org/all/159827190508.306468.12755090833140558156.stgit@warthog.procyon.org.uk/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mount, Previous: fsopen, Up: Glibc sys/mount.h [Contents][Index]
fspickDocumentation:
https://lore.kernel.org/all/159827189767.306468.1803062787718957199.stgit@warthog.procyon.org.uk/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: mount_setattr, Previous: fspick, Up: Glibc sys/mount.h [Contents][Index]
mountDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: move_mount, Previous: mount, Up: Glibc sys/mount.h [Contents][Index]
mount_setattrDocumentation:
man mount_setattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: open_tree, Previous: mount_setattr, Up: Glibc sys/mount.h [Contents][Index]
move_mountDocumentation:
https://lore.kernel.org/all/159827189025.306468.4916341547843731338.stgit@warthog.procyon.org.uk/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: umount, Previous: move_mount, Up: Glibc sys/mount.h [Contents][Index]
open_treeDocumentation:
https://lore.kernel.org/all/159827188271.306468.16962617119460123110.stgit@warthog.procyon.org.uk/
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: umount2, Previous: open_tree, Up: Glibc sys/mount.h [Contents][Index]
umountDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: umount, Up: Glibc sys/mount.h [Contents][Index]
umount2Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/pidfd.h, Previous: Glibc sys/mount.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/personality.h>| • personality |
Up: Glibc sys/personality.h [Contents][Index]
personalityDocumentation:
man personality
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/prctl.h, Previous: Glibc sys/personality.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/pidfd.h>| • pidfd_getfd | ||
| • pidfd_getpid | ||
| • pidfd_open | ||
| • pidfd_send_signal |
Next: pidfd_getpid, Up: Glibc sys/pidfd.h [Contents][Index]
pidfd_getfdDocumentation:
man pidfd_getfd
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pidfd_open, Previous: pidfd_getfd, Up: Glibc sys/pidfd.h [Contents][Index]
pidfd_getpidDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pidfd_send_signal, Previous: pidfd_getpid, Up: Glibc sys/pidfd.h [Contents][Index]
pidfd_openDocumentation:
man pidfd_open
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: pidfd_open, Up: Glibc sys/pidfd.h [Contents][Index]
pidfd_send_signalDocumentation:
man pidfd_send_signal
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/profil.h, Previous: Glibc sys/pidfd.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/prctl.h>| • prctl |
Up: Glibc sys/prctl.h [Contents][Index]
prctlDocumentation:
man prctl
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/ptrace.h, Previous: Glibc sys/prctl.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/profil.h>| • sprofil |
Up: Glibc sys/profil.h [Contents][Index]
sprofilGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/quota.h, Previous: Glibc sys/profil.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/ptrace.h>| • ptrace |
Up: Glibc sys/ptrace.h [Contents][Index]
ptraceLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-ptrace-1.html
Documentation:
man ptrace
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/random.h, Previous: Glibc sys/ptrace.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/quota.h>| • quotactl |
Up: Glibc sys/quota.h [Contents][Index]
quotactlDocumentation:
man quotactl
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/reboot.h, Previous: Glibc sys/quota.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/random.h>| • getrandom |
Up: Glibc sys/random.h [Contents][Index]
getrandomDocumentation:
Gnulib module: getrandom
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
GRND_INSECURE flag is missing on some platforms:
glibc 2.34, macOS 10.15, GNU/kFreeBSD, FreeBSD 12.0, OpenBSD 7.5,
Minix 3.3, Haiku.
GRND_RANDOM flag has different effects on different platforms.
Some platforms ignore the flag, or yield data that can fail to be
random in some cases.
Although this function is intended to produce random data, the data’s security properties may not be appropriate for your application. For example, identical “random” data streams might be produced by rebooted virtual machines. If this is of concern you may need to use additional techniques such as hedging.2
Related modules include getentropy, which has a simpler but
more-limited API, and crypto/gc-random, which is likely a
better match for code already using the other crypto APIs.
Next: Glibc sys/resource.h, Previous: Glibc sys/random.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/reboot.h>| • reboot |
Up: Glibc sys/reboot.h [Contents][Index]
rebootDocumentation:
man reboot
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/sem.h, Previous: Glibc sys/reboot.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/resource.h>| • prlimit |
Up: Glibc sys/resource.h [Contents][Index]
prlimitDocumentation:
man prlimit
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/sendfile.h, Previous: Glibc sys/resource.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/sem.h>| • semtimedop |
Up: Glibc sys/sem.h [Contents][Index]
semtimedopDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/signalfd.h, Previous: Glibc sys/sem.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/sendfile.h>| • sendfile |
Up: Glibc sys/sendfile.h [Contents][Index]
sendfileLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sendfile.html
Documentation:
man sendfile
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
AC_SYS_LARGEFILE macro.
Next: Glibc sys/single_threaded.h, Previous: Glibc sys/sendfile.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/signalfd.h>| • signalfd |
Up: Glibc sys/signalfd.h [Contents][Index]
signalfdDocumentation:
man signalfd
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/socket.h, Previous: Glibc sys/signalfd.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/single_threaded.h>| • __libc_single_threaded |
__libc_single_threadedDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Single_002dThreaded.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/stat.h, Previous: Glibc sys/single_threaded.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/socket.h>| • isfdtype | ||
| • recvmmsg | ||
| • sendmmsg |
Next: recvmmsg, Up: Glibc sys/socket.h [Contents][Index]
isfdtypeDocumentation:
man isfdtype
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sendmmsg, Previous: isfdtype, Up: Glibc sys/socket.h [Contents][Index]
recvmmsgDocumentation:
man recvmmsg
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: recvmmsg, Up: Glibc sys/socket.h [Contents][Index]
sendmmsgDocumentation:
man sendmmsg
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/statfs.h, Previous: Glibc sys/socket.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/stat.h>| • getumask | ||
| • lchmod | ||
| • statx |
Next: lchmod, Up: Glibc sys/stat.h [Contents][Index]
getumaskDocumentation:
Gnulib module: getumask
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: statx, Previous: getumask, Up: Glibc sys/stat.h [Contents][Index]
lchmodGnulib module: lchmod
Portability problems fixed by Gnulib:
errno set to ENOSYS,
even when the file is not a symbolic link:
GNU/Linux with glibc 2.31.
Portability problems not fixed by Gnulib:
errno set to EMFILE or ENFILE,
and it fails with errno set to EOPNOTSUPP if the
/proc file system is not mounted:
GNU/Linux with glibc 2.34.
Previous: lchmod, Up: Glibc sys/stat.h [Contents][Index]
statxDocumentation:
man statx
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/swap.h, Previous: Glibc sys/stat.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/statfs.h>| • fstatfs | ||
| • statfs |
Next: statfs, Up: Glibc sys/statfs.h [Contents][Index]
fstatfsLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fstatfs-2.html
Documentation:
man fstatfs
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
f_blocks in ‘struct statfs’ is a 32-bit
value, this function may not work correctly on files systems larger than
4 TiB. The fix is to use the AC_SYS_LARGEFILE macro. This affects
Mac OS X.
Previous: fstatfs, Up: Glibc sys/statfs.h [Contents][Index]
statfsLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-statfs-2.html
Documentation:
man statfs
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
f_blocks in ‘struct statfs’ is a 32-bit
value, this function may not work correctly on files systems larger than
4 TiB. The fix is to use the AC_SYS_LARGEFILE macro. This affects
Mac OS X.
Next: Glibc sys/sysctl.h, Previous: Glibc sys/statfs.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/swap.h>| • swapoff | ||
| • swapon |
Next: swapon, Up: Glibc sys/swap.h [Contents][Index]
swapoffDocumentation:
man swapoff
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: swapoff, Up: Glibc sys/swap.h [Contents][Index]
swaponDocumentation:
man swapon
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/sysinfo.h, Previous: Glibc sys/swap.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/sysctl.h>| • sysctl |
Up: Glibc sys/sysctl.h [Contents][Index]
sysctlDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/syslog.h, Previous: Glibc sys/sysctl.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/sysinfo.h>| • get_avphys_pages | ||
| • get_nprocs | ||
| • get_nprocs_conf | ||
| • get_phys_pages | ||
| • sysinfo |
Next: get_nprocs, Up: Glibc sys/sysinfo.h [Contents][Index]
get_avphys_pagesDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: get_nprocs_conf, Previous: get_avphys_pages, Up: Glibc sys/sysinfo.h [Contents][Index]
get_nprocsDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Gnulib provides the module nproc that performs a similar
function but is portable to more systems.
Next: get_phys_pages, Previous: get_nprocs, Up: Glibc sys/sysinfo.h [Contents][Index]
get_nprocs_confDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sysinfo, Previous: get_nprocs_conf, Up: Glibc sys/sysinfo.h [Contents][Index]
get_phys_pagesDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: get_phys_pages, Up: Glibc sys/sysinfo.h [Contents][Index]
sysinfoLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sysinfo-1.html
Documentation:
man sysinfo
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/sysmacros.h, Previous: Glibc sys/sysinfo.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/syslog.h>| • vsyslog |
Up: Glibc sys/syslog.h [Contents][Index]
vsyslogLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-vsyslog-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/time.h, Previous: Glibc sys/syslog.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/sysmacros.h>| • gnu_dev_major | ||
| • gnu_dev_makedev | ||
| • gnu_dev_minor |
Next: gnu_dev_makedev, Up: Glibc sys/sysmacros.h [Contents][Index]
gnu_dev_majorDocumentation:
man gnu_dev_major
Gnulib module: —
Portability problems fixed by Gnulib:
AC_HEADER_MAJOR macro in Autoconf 2.69 and earlier fails to
set MAJOR_IN_SYSMACROS when it detects namespace pollution in
sys/types.h; which in turn provokes deprecation warnings in
glibc 2.25.
Portability problems not fixed by Gnulib:
Next: gnu_dev_minor, Previous: gnu_dev_major, Up: Glibc sys/sysmacros.h [Contents][Index]
gnu_dev_makedevDocumentation:
man gnu_dev_makedev
Gnulib module: —
Portability problems fixed by Gnulib:
AC_HEADER_MAJOR macro in Autoconf 2.69 and earlier fails to
set MAJOR_IN_SYSMACROS when it detects namespace pollution in
sys/types.h; which in turn provokes deprecation warnings in
glibc 2.25.
Portability problems not fixed by Gnulib:
Previous: gnu_dev_makedev, Up: Glibc sys/sysmacros.h [Contents][Index]
gnu_dev_minorDocumentation:
man gnu_dev_minor
Gnulib module: —
Portability problems fixed by Gnulib:
AC_HEADER_MAJOR macro in Autoconf 2.69 and earlier fails to
set MAJOR_IN_SYSMACROS when it detects namespace pollution in
sys/types.h; which in turn provokes deprecation warnings in
glibc 2.25.
Portability problems not fixed by Gnulib:
Next: Glibc sys/timerfd.h, Previous: Glibc sys/sysmacros.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/time.h>| • adjtime | ||
| • futimes | ||
| • futimesat | ||
| • lutimes | ||
| • settimeofday |
Next: futimes, Up: Glibc sys/time.h [Contents][Index]
adjtimeLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-adjtime-2.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: futimesat, Previous: adjtime, Up: Glibc sys/time.h [Contents][Index]
futimesLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-futimes.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
futimens(fd,times) instead.
Next: lutimes, Previous: futimes, Up: Glibc sys/time.h [Contents][Index]
futimesatDocumentation:
man futimesat
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
file ? utimensat(fd, file, times, 0)
: futimens(fd, times)
or
the gnulib module fdutimensat, instead.
Next: settimeofday, Previous: futimesat, Up: Glibc sys/time.h [Contents][Index]
lutimesDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
utimensat(AT_FDCWD,file,times,AT_SYMLINK_NOFOLLOW), or the
gnulib module utimens, instead.
lstat modifies the access time of
symlinks on some platforms, so lutimes can only effectively
change modification time:
Cygwin.
Previous: lutimes, Up: Glibc sys/time.h [Contents][Index]
settimeofdayDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/timex.h, Previous: Glibc sys/time.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/timerfd.h>| • timerfd_create | ||
| • timerfd_gettime | ||
| • timerfd_settime |
Next: timerfd_gettime, Up: Glibc sys/timerfd.h [Contents][Index]
timerfd_createDocumentation:
man timerfd_create
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: timerfd_settime, Previous: timerfd_create, Up: Glibc sys/timerfd.h [Contents][Index]
timerfd_gettimeDocumentation:
man timerfd_gettime
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: timerfd_gettime, Up: Glibc sys/timerfd.h [Contents][Index]
timerfd_settimeDocumentation:
man timerfd_settime
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/uio.h, Previous: Glibc sys/timerfd.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/timex.h>| • adjtimex | ||
| • ntp_adjtime | ||
| • ntp_gettime | ||
| • ntp_gettimex |
Next: ntp_adjtime, Up: Glibc sys/timex.h [Contents][Index]
adjtimexDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ntp_gettime, Previous: adjtimex, Up: Glibc sys/timex.h [Contents][Index]
ntp_adjtimeDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ntp_gettimex, Previous: ntp_adjtime, Up: Glibc sys/timex.h [Contents][Index]
ntp_gettimeDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ntp_gettime, Up: Glibc sys/timex.h [Contents][Index]
ntp_gettimexDocumentation:
man ntp_gettimex
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/ustat.h, Previous: Glibc sys/timex.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/uio.h>| • preadv | ||
| • preadv2 | ||
| • process_vm_readv | ||
| • process_vm_writev | ||
| • pwritev | ||
| • pwritev2 |
Next: preadv2, Up: Glibc sys/uio.h [Contents][Index]
preadvDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
AC_SYS_LARGEFILE macro.
Next: process_vm_readv, Previous: preadv, Up: Glibc sys/uio.h [Contents][Index]
preadv2Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: process_vm_writev, Previous: preadv2, Up: Glibc sys/uio.h [Contents][Index]
process_vm_readvDocumentation:
man process_vm_readv
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pwritev, Previous: process_vm_readv, Up: Glibc sys/uio.h [Contents][Index]
process_vm_writevDocumentation:
man process_vm_writev
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pwritev2, Previous: process_vm_writev, Up: Glibc sys/uio.h [Contents][Index]
pwritevDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
off_t is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
AC_SYS_LARGEFILE macro.
Previous: pwritev, Up: Glibc sys/uio.h [Contents][Index]
pwritev2Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/vlimit.h, Previous: Glibc sys/uio.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/ustat.h>| • ustat |
Up: Glibc sys/ustat.h [Contents][Index]
ustatDocumentation:
man ustat
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/wait.h, Previous: Glibc sys/ustat.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/vlimit.h>| • vlimit |
Up: Glibc sys/vlimit.h [Contents][Index]
vlimitDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc sys/xattr.h, Previous: Glibc sys/vlimit.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/wait.h>| • wait3 | ||
| • wait4 |
Next: wait4, Up: Glibc sys/wait.h [Contents][Index]
wait3Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: wait3, Up: Glibc sys/wait.h [Contents][Index]
wait4LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-wait4-2.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc termios.h, Previous: Glibc sys/wait.h, Up: Glibc Function Substitutes [Contents][Index]
<sys/xattr.h>| • fgetxattr | ||
| • flistxattr | ||
| • fremovexattr | ||
| • fsetxattr | ||
| • getxattr | ||
| • lgetxattr | ||
| • listxattr | ||
| • llistxattr | ||
| • lremovexattr | ||
| • lsetxattr | ||
| • removexattr | ||
| • setxattr |
Next: flistxattr, Up: Glibc sys/xattr.h [Contents][Index]
fgetxattrDocumentation:
man fgetxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
offset and options parameters
on some platforms:
macOS 14.
Next: fremovexattr, Previous: fgetxattr, Up: Glibc sys/xattr.h [Contents][Index]
flistxattrDocumentation:
man flistxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
options parameter on some platforms:
macOS 14.
EACCES on unreadable files accessed via NFS:
Linux kernel 6.12.
security.* extended attributes
on tmpfs and kernfs-based file systems:
Linux kernel 6.14.
ERANGE even if the buffer is large enough:
Linux kernel 6.15.
Next: fsetxattr, Previous: flistxattr, Up: Glibc sys/xattr.h [Contents][Index]
fremovexattrDocumentation:
man fremovexattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
options parameter on some platforms:
macOS 14.
Next: getxattr, Previous: fremovexattr, Up: Glibc sys/xattr.h [Contents][Index]
fsetxattrDocumentation:
man fsetxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
offset and options parameters
and no flags parameter on some platforms:
macOS 14.
Next: lgetxattr, Previous: fsetxattr, Up: Glibc sys/xattr.h [Contents][Index]
getxattrDocumentation:
man getxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
offset and options parameters
on some platforms:
macOS 14.
Next: listxattr, Previous: getxattr, Up: Glibc sys/xattr.h [Contents][Index]
lgetxattrDocumentation:
man lgetxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: llistxattr, Previous: lgetxattr, Up: Glibc sys/xattr.h [Contents][Index]
listxattrDocumentation:
man listxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
options parameter on some platforms:
macOS 14.
EACCES on unreadable files accessed via NFS:
Linux kernel 6.12.
security.* extended attributes
on tmpfs and kernfs-based file systems:
Linux kernel 6.14.
ERANGE even if the buffer is large enough:
Linux kernel 6.15.
Next: lremovexattr, Previous: listxattr, Up: Glibc sys/xattr.h [Contents][Index]
llistxattrDocumentation:
man llistxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
EACCES on unreadable files accessed via NFS:
Linux kernel 6.12.
security.* extended attributes
on tmpfs and kernfs-based file systems:
Linux kernel 6.14.
ERANGE even if the buffer is large enough:
Linux kernel 6.15.
Next: lsetxattr, Previous: llistxattr, Up: Glibc sys/xattr.h [Contents][Index]
lremovexattrDocumentation:
man lremovexattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: removexattr, Previous: lremovexattr, Up: Glibc sys/xattr.h [Contents][Index]
lsetxattrDocumentation:
man lsetxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setxattr, Previous: lsetxattr, Up: Glibc sys/xattr.h [Contents][Index]
removexattrDocumentation:
man removexattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
options parameter on some platforms:
macOS 14.
Previous: removexattr, Up: Glibc sys/xattr.h [Contents][Index]
setxattrDocumentation:
man setxattr
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
offset and options parameters
and no flags parameter on some platforms:
macOS 14.
Next: Glibc time.h, Previous: Glibc sys/xattr.h, Up: Glibc Function Substitutes [Contents][Index]
<termios.h>| • cfmakeraw | ||
| • cfsetspeed |
Next: cfsetspeed, Up: Glibc termios.h [Contents][Index]
cfmakerawLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-cfmakeraw-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: cfmakeraw, Up: Glibc termios.h [Contents][Index]
cfsetspeedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-cfsetspeed-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc ttyent.h, Previous: Glibc termios.h, Up: Glibc Function Substitutes [Contents][Index]
<time.h>| • clock_adjtime | ||
| • dysize | ||
| • getdate_r | ||
| • stime | ||
| • strptime_l | ||
| • timelocal |
Next: dysize, Up: Glibc time.h [Contents][Index]
clock_adjtimeGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getdate_r, Previous: clock_adjtime, Up: Glibc time.h [Contents][Index]
dysizeDocumentation:
man dysize
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: stime, Previous: dysize, Up: Glibc time.h [Contents][Index]
getdate_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: strptime_l, Previous: getdate_r, Up: Glibc time.h [Contents][Index]
stimeLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-stime-2.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: timelocal, Previous: stime, Up: Glibc time.h [Contents][Index]
strptime_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: strptime_l, Up: Glibc time.h [Contents][Index]
timelocalDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc unistd.h, Previous: Glibc time.h, Up: Glibc Function Substitutes [Contents][Index]
<ttyent.h>| • endttyent | ||
| • getttyent | ||
| • getttynam | ||
| • setttyent |
Next: getttyent, Up: Glibc ttyent.h [Contents][Index]
endttyentDocumentation:
man endttyent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getttynam, Previous: endttyent, Up: Glibc ttyent.h [Contents][Index]
getttyentDocumentation:
man getttyent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setttyent, Previous: getttyent, Up: Glibc ttyent.h [Contents][Index]
getttynamDocumentation:
man getttynam
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: getttynam, Up: Glibc ttyent.h [Contents][Index]
setttyentDocumentation:
man setttyent
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc utmp.h, Previous: Glibc ttyent.h, Up: Glibc Function Substitutes [Contents][Index]
<unistd.h>| • acct | ||
| • brk | ||
| • chroot | ||
| • closefrom | ||
| • close_range | ||
| • copy_file_range | ||
| • daemon | ||
| • eaccess | ||
| • endusershell | ||
| • euidaccess | ||
| • execveat | ||
| • execvpe | ||
| • get_current_dir_name | ||
| • getdomainname | ||
| • getdtablesize | ||
| • getpagesize | ||
| • getpass | ||
| • gettid | ||
| • getusershell | ||
| • group_member | ||
| • profil | ||
| • revoke | ||
| • sbrk | ||
| • setlogin | ||
| • setdomainname | ||
| • sethostid | ||
| • sethostname | ||
| • setusershell | ||
| • syncfs | ||
| • syscall | ||
| • ttyslot | ||
| • vhangup |
Next: brk, Up: Glibc unistd.h [Contents][Index]
acctLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-acct-3.html
Documentation:
man acct
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: chroot, Previous: acct, Up: Glibc unistd.h [Contents][Index]
brkDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: closefrom, Previous: brk, Up: Glibc unistd.h [Contents][Index]
chrootDocumentation:
man chroot
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: close_range, Previous: chroot, Up: Glibc unistd.h [Contents][Index]
closefromDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Opening-and-Closing-Files.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Note (quoted from
man close):
“The [POSIX] standard developers rejected a proposal to add
closefrom() to the [POSIX] standard. Because the standard
permits implementations to use inherited file descriptors as a means of
providing a conforming environment for the child process, it is not
possible to standardize an interface that closes arbitrary file
descriptors above a certain value while still guaranteeing a conforming
environment.”
Next: copy_file_range, Previous: closefrom, Up: Glibc unistd.h [Contents][Index]
close_rangeDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: daemon, Previous: close_range, Up: Glibc unistd.h [Contents][Index]
copy_file_rangeDocumentation:
Gnulib module: copy-file-range
Portability problems fixed by Gnulib:
ENOSYS.
ENOSYS.
INT_MAX on systems using glibc version 2.41 or 2.42.
See https://sourceware.org/PR33245.
ENOSYS.
Portability problems not fixed by Gnulib:
Next: eaccess, Previous: copy_file_range, Up: Glibc unistd.h [Contents][Index]
daemonLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-daemon-3.html
Documentation:
man daemon
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: endusershell, Previous: daemon, Up: Glibc unistd.h [Contents][Index]
eaccessDocumentation:
man eaccess
This function is an alias of euidaccess. See euidaccess.
Next: euidaccess, Previous: eaccess, Up: Glibc unistd.h [Contents][Index]
endusershellDocumentation:
man endusershell
Gnulib module: getusershell
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: execveat, Previous: endusershell, Up: Glibc unistd.h [Contents][Index]
euidaccessDocumentation:
man euidaccess
Gnulib module: euidaccess
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Other problems of this function:
stat versus lstat). If you need this option, use
the Gnulib module faccessat with the AT_EACCESS flag.
X_OK even if the file
does not have the x permission bit set.
Next: execvpe, Previous: euidaccess, Up: Glibc unistd.h [Contents][Index]
execveatDocumentation: man execveat.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: get_current_dir_name, Previous: execveat, Up: Glibc unistd.h [Contents][Index]
execvpeDocumentation:
man execvpe
Gnulib module: execvpe
Portability problems fixed by Gnulib:
intptr_t, not int.
Portability problems not fixed by Gnulib:
Next: getdomainname, Previous: execvpe, Up: Glibc unistd.h [Contents][Index]
get_current_dir_nameDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getdtablesize, Previous: get_current_dir_name, Up: Glibc unistd.h [Contents][Index]
getdomainnameLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getdomainname.html
Documentation:
Gnulib module: getdomainname
Portability problems fixed by Gnulib:
netdb.h, not in unistd.h, on
some platforms:
AIX 7.1.
int, not size_t, on some platforms:
macOS 14, FreeBSD 14.0, AIX 7.1.
Portability problems not fixed by Gnulib:
Next: getpagesize, Previous: getdomainname, Up: Glibc unistd.h [Contents][Index]
getdtablesizeSUSv2 specification: https://pubs.opengroup.org/onlinepubs/7908799/xsh/getdtablesize.html
LSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getdtablesize.html
Documentation:
man getdtablesize
Gnulib module: getdtablesize
Portability problems fixed by Gnulib:
RLIMIT_NOFILE soft
limit on some platforms:
Android 13 (LP32?), Cygwin 1.7.25.
Portability problems not fixed by Gnulib:
Next: getpass, Previous: getdtablesize, Up: Glibc unistd.h [Contents][Index]
getpagesizeLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getpagesize.html
Documentation:
Gnulib module: getpagesize
Portability problems fixed by Gnulib:
-D_XOPEN_SOURCE=600.
Portability problems not fixed by Gnulib:
sysconf (_SC_PAGESIZE)
instead, in practice getpagesize can be a little faster.
sysconf (_SC_PAGESIZE) does not have this limitation.
However, this has not been a practical problem yet,
and so many programs use getpagesize that it’s unlikely that
new platforms would introduce larger page sizes any time soon.
Next: gettid, Previous: getpagesize, Up: Glibc unistd.h [Contents][Index]
getpassDocumentation:
Gnulib module: getpass or getpass-gnu
Portability problems fixed by either Gnulib module getpass or getpass-gnu:
Portability problems fixed by Gnulib module getpass-gnu:
Portability problems not fixed by Gnulib:
Next: getusershell, Previous: getpass, Up: Glibc unistd.h [Contents][Index]
gettidDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: group_member, Previous: gettid, Up: Glibc unistd.h [Contents][Index]
getusershellDocumentation:
man getusershell
Gnulib module: getusershell
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: profil, Previous: getusershell, Up: Glibc unistd.h [Contents][Index]
group_memberDocumentation:
man group_member
Gnulib module: group-member
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: revoke, Previous: group_member, Up: Glibc unistd.h [Contents][Index]
profilDocumentation:
man profil
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sbrk, Previous: profil, Up: Glibc unistd.h [Contents][Index]
revokeGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setlogin, Previous: revoke, Up: Glibc unistd.h [Contents][Index]
sbrkDocumentation:
man sbrk
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setdomainname, Previous: sbrk, Up: Glibc unistd.h [Contents][Index]
setloginGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sethostid, Previous: setlogin, Up: Glibc unistd.h [Contents][Index]
setdomainnameDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: sethostname, Previous: setdomainname, Up: Glibc unistd.h [Contents][Index]
sethostidDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setusershell, Previous: sethostid, Up: Glibc unistd.h [Contents][Index]
sethostnameLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sethostname-2.html
Documentation:
Gnulib module: sethostname
Portability problems fixed by Gnulib:
ENOSYS on some platforms.
Portability problems not fixed by Gnulib:
char * instead of const char *
on some platforms:
Solaris 11 2010-11.
int instead of size_t
on some platforms:
macOS 14, FreeBSD 14.0, MidnightBSD 3.0, Solaris 11 2010-11, Solaris 11 OpenIndiana, Solaris 11 OmniOS.
Next: syncfs, Previous: sethostname, Up: Glibc unistd.h [Contents][Index]
setusershellDocumentation:
man setusershell
Gnulib module: getusershell
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: syscall, Previous: setusershell, Up: Glibc unistd.h [Contents][Index]
syncfsDocumentation:
man syncfs
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: ttyslot, Previous: syncfs, Up: Glibc unistd.h [Contents][Index]
syscallDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: vhangup, Previous: syscall, Up: Glibc unistd.h [Contents][Index]
ttyslotDocumentation:
man ttyslot
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: ttyslot, Up: Glibc unistd.h [Contents][Index]
vhangupDocumentation:
man vhangup
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: Glibc utmpx.h, Previous: Glibc unistd.h, Up: Glibc Function Substitutes [Contents][Index]
<utmp.h>| • endutent | ||
| • getutent | ||
| • getutent_r | ||
| • getutid | ||
| • getutid_r | ||
| • getutline | ||
| • getutline_r | ||
| • pututline | ||
| • setutent | ||
| • updwtmp | ||
| • utmpname | ||
| • login | ||
| • login_tty |
Next: getutent, Up: Glibc utmp.h [Contents][Index]
endutentLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-endutent-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getutent_r, Previous: endutent, Up: Glibc utmp.h [Contents][Index]
getutentLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getutent-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getutid, Previous: getutent, Up: Glibc utmp.h [Contents][Index]
getutent_rLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getutent-r-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getutid_r, Previous: getutent_r, Up: Glibc utmp.h [Contents][Index]
getutidDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getutline, Previous: getutid, Up: Glibc utmp.h [Contents][Index]
getutid_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: getutline_r, Previous: getutid_r, Up: Glibc utmp.h [Contents][Index]
getutlineDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: pututline, Previous: getutline, Up: Glibc utmp.h [Contents][Index]
getutline_rDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: setutent, Previous: getutline_r, Up: Glibc utmp.h [Contents][Index]
pututlineDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: updwtmp, Previous: pututline, Up: Glibc utmp.h [Contents][Index]
setutentLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-setutent-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: utmpname, Previous: setutent, Up: Glibc utmp.h [Contents][Index]
updwtmpDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: login, Previous: updwtmp, Up: Glibc utmp.h [Contents][Index]
utmpnameLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-utmpname-3.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Next: login_tty, Previous: utmpname, Up: Glibc utmp.h [Contents][Index]
loginDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: login, Up: Glibc utmp.h [Contents][Index]
login_ttyDocumentation:
Gnulib module: login_tty
Portability problems fixed by Gnulib:
<utmp.h> on glibc, Cygwin, Android,
in <util.h> on macOS 14, NetBSD 5.0, OpenBSD 3.8,
in <libutil.h> on FreeBSD 14.0, Haiku,
and in <termios.h> on Solaris 11.4.
-lutil on some platforms:
glibc 2.3.6, FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8.
It is available without link options on other platforms:
macOS 14, Cygwin.
Portability problems not fixed by Gnulib:
Next: Glibc wchar.h, Previous: Glibc utmp.h, Up: Glibc Function Substitutes [Contents][Index]
<utmpx.h>| • getutmp | ||
| • getutmpx | ||
| • updwtmpx | ||
| • utmpxname |
Next: getutmpx, Up: Glibc utmpx.h [Contents][Index]
getutmpDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
time_t
was historically 32 bits.
year2038 or
year2038-recommended modules are used and the program is
configured without the --disable-year2038 option.
The readutmp module works around this problem:
glibc 2.38 on 32-bit platforms like x86 and ARM where time_t
was historically 32 bits.
See Avoiding the year 2038 problem.
Next: updwtmpx, Previous: getutmp, Up: Glibc utmpx.h [Contents][Index]
getutmpxDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
time_t
was historically 32 bits.
year2038 or
year2038-recommended modules are used and the program is
configured without the --disable-year2038 option.
The readutmp module works around this problem:
glibc 2.38 on 32-bit platforms like x86 and ARM where time_t
was historically 32 bits.
See Avoiding the year 2038 problem.
Next: utmpxname, Previous: getutmpx, Up: Glibc utmpx.h [Contents][Index]
updwtmpxDocumentation:
man updwtmpx
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: updwtmpx, Up: Glibc utmpx.h [Contents][Index]
utmpxnameDocumentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
Previous: Glibc utmpx.h, Up: Glibc Function Substitutes [Contents][Index]
<wchar.h>| • fgetwc_unlocked | ||
| • fgetws_unlocked | ||
| • fputwc_unlocked | ||
| • fputws_unlocked | ||
| • getwc_unlocked | ||
| • getwchar_unlocked | ||
| • putwc_unlocked | ||
| • putwchar_unlocked | ||
| • wcschrnul | ||
| • wcsftime_l | ||
| • wcstod_l | ||
| • wcstof_l | ||
| • wcstol_l | ||
| • wcstold_l | ||
| • wcstoll_l | ||
| • wcstoq | ||
| • wcstoul_l | ||
| • wcstoull_l | ||
| • wcstouq | ||
| • wmempcpy |
Next: fgetws_unlocked, Up: Glibc wchar.h [Contents][Index]
fgetwc_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fgetwc-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: fputwc_unlocked, Previous: fgetwc_unlocked, Up: Glibc wchar.h [Contents][Index]
fgetws_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fgetws-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: fputws_unlocked, Previous: fgetws_unlocked, Up: Glibc wchar.h [Contents][Index]
fputwc_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fputwc-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: getwc_unlocked, Previous: fputwc_unlocked, Up: Glibc wchar.h [Contents][Index]
fputws_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-fputws-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: getwchar_unlocked, Previous: fputws_unlocked, Up: Glibc wchar.h [Contents][Index]
getwc_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getwc-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: putwc_unlocked, Previous: getwc_unlocked, Up: Glibc wchar.h [Contents][Index]
getwchar_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-getwchar-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: putwchar_unlocked, Previous: getwchar_unlocked, Up: Glibc wchar.h [Contents][Index]
putwc_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-putwc-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcschrnul, Previous: putwc_unlocked, Up: Glibc wchar.h [Contents][Index]
putwchar_unlockedLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-putwchar-unlocked-1.html
Documentation:
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcsftime_l, Previous: putwchar_unlocked, Up: Glibc wchar.h [Contents][Index]
wcschrnulDocumentation:
https://www.gnu.org/software/libc/manual/html_node/Search-Functions.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstod_l, Previous: wcschrnul, Up: Glibc wchar.h [Contents][Index]
wcsftime_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstof_l, Previous: wcsftime_l, Up: Glibc wchar.h [Contents][Index]
wcstod_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstol_l, Previous: wcstod_l, Up: Glibc wchar.h [Contents][Index]
wcstof_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstold_l, Previous: wcstof_l, Up: Glibc wchar.h [Contents][Index]
wcstol_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstoll_l, Previous: wcstol_l, Up: Glibc wchar.h [Contents][Index]
wcstold_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstoq, Previous: wcstold_l, Up: Glibc wchar.h [Contents][Index]
wcstoll_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstoul_l, Previous: wcstoll_l, Up: Glibc wchar.h [Contents][Index]
wcstoqLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-wcstoq.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstoull_l, Previous: wcstoq, Up: Glibc wchar.h [Contents][Index]
wcstoul_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wcstouq, Previous: wcstoul_l, Up: Glibc wchar.h [Contents][Index]
wcstoull_lGnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: wmempcpy, Previous: wcstoull_l, Up: Glibc wchar.h [Contents][Index]
wcstouqLSB specification:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-wcstouq.html
Documentation:
https://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.html.
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Previous: wcstouq, Up: Glibc wchar.h [Contents][Index]
wmempcpyDocumentation:
Gnulib module: wmempcpy
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
wchar_t is a 16-bit type and therefore cannot
accommodate all Unicode characters.
Next: Multithreading, Previous: Glibc Function Substitutes, Up: Top [Contents][Index]
There are three ways to create binaries that run on Microsoft Windows:
This chapter deals with the MinGW and MSVC platforms, commonly called “native Windows” platforms. Cygwin, on the other hand, is close enough to POSIX that it can be treated like any other Unix-like platform.
Next: Large File Support, Up: Native Windows Support [Contents][Index]
If you want it to be possible to compile your program for a native Windows
platform and you use Libtool, you need to use the win32-dll option of
LT_INIT. In other words, put:
LT_INIT([win32-dll])
in your configure.ac. This sets the correct names for the
OBJDUMP, DLLTOOL, and AS tools for the build.
If you are building a library, you will also need to pass
-no-undefined to make sure Libtool produces a DLL for your
library. From a Makefile.am:
libgsasl_la_LDFLAGS += -no-undefined
Next: Inode numbers on Windows, Previous: Libtool and Windows, Up: Native Windows Support [Contents][Index]
This module provides support for files 2 GiB and larger, or with
device or inode numbers exceeding 32 bits.
To this effect, it attempts to ensure that types like off_t and
ino_t are 64-bit,
at least on the following platforms:
glibc, Mac OS X, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, Solaris,
Cygwin, mingw, MSVC.
If the types cannot be made 64-bit, configure issues a
warning and proceeds.
This module gives
configure an option ‘--disable-largefile’ that
suppresses support for large files. This may be useful if the package
links to other libraries whose user-facing ABIs still require
off_t or most other file-related types to be 32-bit on your
platform.
This module also adds to configure an option
--enable-year2038, needed on some platforms to access files
with timestamps past the year 2038. See Avoiding the year 2038 problem.
Next: Precise file timestamps on Windows, Previous: Large File Support, Up: Native Windows Support [Contents][Index]
The module ‘windows-stat-inodes’ ensures that,
on native Windows platforms, struct stat contains
st_dev, st_ino fields that are able to distinguish
different inodes.
Note: Such values can only be provided for most files on the
file system. For a few files (such as inaccessible files),
st_dev and st_ino are set to 0. Therefore,
you should test whether st_dev != 0 && st_ino != 0,
before going to make inferences based on the file identity
based on st_dev and st_ino.
Next: Avoiding the year 2038 problem, Previous: Inode numbers on Windows, Up: Native Windows Support [Contents][Index]
The module ‘windows-stat-timespec’ ensures that,
on native Windows platforms, struct stat contains
st_atim, st_mtim, st_ctim fields of type
struct timespec, providing 100 ns resolution for the timestamps
of files.
Note: On some types of file systems, the timestamp resolution is limited
by the file system. For example, on FAT file systems, st_mtim
only has a resolution of 2 seconds. For more details, see
https://docs.microsoft.com/en-us/windows/desktop/SysInfo/file-times.
Next: Windows sockets, Previous: Precise file timestamps on Windows, Up: Native Windows Support [Contents][Index]
The year 2038 problem denotes unpredictable behaviour that will likely occur in the year 2038, for programs that use a 32-bit signed integer ‘time_t’ type that cannot represent timestamps on or after 2038-01-19 03:14:08 UTC. See Year 2038 problem for details.
The Gnulib module ‘year2038’ fixes this problem on some
platforms, by making time_t wide enough to represent timestamps
after 2038. This has no effect on most current platforms, which have
timestamps that are already wide enough. However, ‘year2038’ by
default arranges for builds on legacy 32-bit Linux kernels running
glibc 2.34 and later to compile with ‘_TIME_BITS=64’ to get wider
timestamps. On older platforms that do not support timestamps after
the year 2038, ‘year2038’ causes configure to issue a
warning but still proceed. On platforms that appear to support
post-2038 timestamps but where something prevents this from working,
configure fails.
The default behavior of ‘year2038’ can be overridden by using the
configure option --disable-year2038, which
suppresses support for post-2038 timestamps. This may be useful if
the package links to other libraries whose user-facing ABIs still
require time_t to be 32-bit on your platform.
The Gnulib module ‘year2038-recommended’ is like ‘year2038’,
except it by default rejects platforms where time_t cannot represent
timestamps after 2038. If this module is used and a 32-platform cannot support
64-bit time_t, one can still fix the year-2038 problem by using
a 64-bit instead of a 32-bit build, as noted in the architecture list
below. If all else fails one can configure with
--disable-year2038; however, the resulting programs will
mishandle timestamps after 2038.
The Gnulib module ‘year2038-recommended’ is designed for packages intended for use on 32-bit platforms after the year 2038. If your package is commonly built on 32-bit platforms that will not be used after the year 2038, you can use the ‘year2038’ module instead, to save builders the trouble of configuring with --disable-year2038.
If the Gnulib module ‘largefile’ is used but neither
‘year2038’ nor ‘year2038-recommended’ is used,
configure will have an option --enable-year2038
that causes configure to behave as if ‘year2038’ was used.
This is for packages that have long used ‘largefile’ but have not
gotten around to upgrading their Gnulib module list to include
‘year2038’ or ‘year2038-recommended’.
See Large File Support.
With the ‘year2038-recommended’ module, configure by
default should work on the following 32-bit platforms (or 32-bit ABIs
in bi-arch systems):
Whereas with ‘year2038-recommended’, configure should
by default fail on earlier versions of the abovementioned platforms if
a version is listed, and it should also by default fail on all
versions of the following older 32-bit platforms or ABIs:
time_t),
If you use the ‘year2038’ or ‘year2038-recommended’ modules,
and configure to support timestamps after the year 2038,
your code should not include ‘<utmp.h>’ or ‘<utmpx.h>’
directly, because these include files do not work with 64-bit timestamps
if the platform’s time_t was traditionally 32 bits.
Your code can instead use the ‘readutmp’ module,
which works around this problem.
Next: Native Windows Support without MSVC Support, Previous: Avoiding the year 2038 problem, Up: Native Windows Support [Contents][Index]
One of the portability problems for native Windows are sockets and networking functions.
This was written for the getaddrinfo module, but may be applicable to
other functions too.
The getaddrinfo function exists in ws2tcpip.h and -lws2_32
on Windows XP. The function declaration is present if WINVER >= 0x0501.
Windows 2000 does not have getaddrinfo in its WS2_32.DLL.
Thus, if you want to assume Windows XP or later, you can add
AC_DEFINE([WINVER], [0x0501]) to avoid compiling the (partial)
getaddrinfo implementation.
If you want to support Windows 2000, don’t do anything. The
replacement function will open WS2_32.DLL during run-time to
see if there is a getaddrinfo function available, and use it when
available.
Next: Visual Studio Compatibility, Previous: Windows sockets, Up: Native Windows Support [Contents][Index]
If your package does not desire to have MSVC support, that is, if MinGW
shall be the only native Windows platform that you wish to get support
for from Gnulib, and you wish to minimize the number of files imported
from Gnulib accordingly, you can do so by passing the options
‘--avoid=msvc-inval --avoid=msvc-nothrow’ to gnulib-tool.
Previous: Native Windows Support without MSVC Support, Up: Native Windows Support [Contents][Index]
The lib-msvc-compat module detects whether the linker supports
--output-def when building a library. That parameter is used
to generate a DEF file for a shared library (DLL). DEF files are
useful for developers that use Visual Studio to develop programs that
links to your library. See the GNU LD manual for more information.
There are other ways to create a DEF file, but we believe they are all
sub-optimal to using --output-def during the build process.
The variants we have considered include:
$ { echo EXPORTS; \
dumpbin /EXPORTS libfoo-0.dll | tail -n+20 | awk '{ print $4 }'; \
} > libfoo-0.def
$ lib /def:libfoo-0.def
If you are using libtool to build your shared library, here is how to
use this module. Import lib-msvc-compat to your project, and
then add the following lines to the Makefile.am that builds the
library:
if HAVE_LD_OUTPUT_DEF libfoo_la_LDFLAGS += -Wl,--output-def,libfoo-$(DLL_VERSION).def libfoo-$(DLL_VERSION).def: libfoo.la defexecdir = $(libdir) defexec_DATA = libfoo-$(DLL_VERSION).def DISTCLEANFILES += $(defexec_DATA) endif
The DLL_VERSION variable needs to be defined. It should be the
shared library version number used in the DLL filename. For Windows
targets you compute this value from the values you pass to Libtool’s
-version-info. Assuming you have variables LT_CURRENT
and LT_AGE defined for the CURRENT and AGE
libtool version integers, you compute DLL_VERSION as follows:
DLL_VERSION=`expr ${LT_CURRENT} - ${LT_AGE}`
AC_SUBST(DLL_VERSION)
Next: Strings and Characters, Previous: Native Windows Support, Up: Top [Contents][Index]
Multithreading is a programming paradigm. In a multithreaded program, multiple threads execute concurrently (or quasi concurrently) at different places in the program.
There are three motivations for using multithreading in a program:
select or poll on all the descriptors and then dispatches
according to from which descriptor input arrived. In a multi-threaded
program, you allocate one thread for each descriptor, and these threads can
be programmed and managed independently.
malloc; therefore you are very limited in what you can do in
a signal handler. But a signal handler can notify a thread, and the thread
can then do the appropriate processing, as complex as it needs to be.
A multithreading API offers
Note: Programs that achieve multithreading through OpenMP (cf. the gnulib module ‘openmp’) don’t create and manage their threads themselves. Nevertheless, they need to use mutexes/locks in many cases.
| • Multithreading APIs | ||
| • Choosing a multithreading API | ||
| • POSIX multithreading | ||
| • ISO C multithreading | ||
| • Gnulib multithreading | ||
| • Multithreading Optimizations |
Next: Choosing a multithreading API, Up: Multithreading [Contents][Index]
Three multithreading APIs are available to Gnulib users:
They are supported on all platforms that have multithreading in one form or the other. Currently, these are all platforms supported by Gnulib, except for Minix.
The main differences are:
int in the ISO C API.
Next: POSIX multithreading, Previous: Multithreading APIs, Up: Multithreading [Contents][Index]
Here are guidelines for determining which multithreading API is best for your code.
In programs that use advanced POSIX APIs, such as
detached threads (pthread_detach),
signal blocking (pthread_sigmask),
priorities (pthread_setschedparam),
processor affinity (pthread_setaffinity_np), it is best to use
the POSIX API. This is because you cannot convert an ISO C thrd_t
or a Gnulib gl_thread_t to a POSIX pthread_t.
In code that is shared with glibc, it is best to use the POSIX API as well.
In libraries, it is best to use the Gnulib API. This is because it gives the person who builds the library an option ‘--enable-threads={isoc,posix,windows}’, that determines on which native multithreading API of the platform to rely. In other words, with this choice, you can minimize the amount of glue code that your library needs to contain.
In the other cases, the POSIX API and the Gnulib API are equally well suited.
The ISO C API is never the best choice, as of this writing (2020).
Next: ISO C multithreading, Previous: Choosing a multithreading API, Up: Multithreading [Contents][Index]
The POSIX multithreading API is documented in POSIX https://pubs.opengroup.org/onlinepubs/9799919799/.
To make use of POSIX multithreading, even on platforms that don’t support it natively (most prominently, native Windows), use the following Gnulib modules:
| Purpose | Module |
|---|---|
| For thread creation and management: | pthread-thread |
| For simple and recursive locks: | pthread-mutex |
| For read-write locks: | pthread-rwlock |
| For once-only execution: | pthread-once |
| For “condition variables” (wait queues): | pthread-cond |
| For thread-local storage: | pthread-tss |
| For relinquishing control: | sched_yield |
| For spin locks: | pthread-spin |
There is also a convenience module named pthread which depends on all
of these (except sched_yield); so you don’t need to enumerate these
modules one by one.
Next: Gnulib multithreading, Previous: POSIX multithreading, Up: Multithreading [Contents][Index]
The ISO C multithreading API is documented in ISO C 11 https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf.
To make use of ISO C multithreading, even on platforms that don’t support it or have severe bugs, use the following Gnulib modules:
| Purpose | Module |
|---|---|
| For thread creation and management: | thrd |
| For simple locks, recursive locks, and read-write locks: | mtx |
| For once-only execution: | mtx |
| For “condition variables” (wait queues): | cnd |
| For thread-local storage: | tss |
There is also a convenience module named threads which depends on all
of these; so you don’t need to enumerate these modules one by one.
Next: Multithreading Optimizations, Previous: ISO C multithreading, Up: Multithreading [Contents][Index]
The Gnulib multithreading API is documented in the respective include files:
<glthread/thread.h>
<glthread/lock.h>
<glthread/once.h>
<glthread/cond.h>
<glthread/tls.h>
<glthread/yield.h>
<glthread/spin.h>
To make use of Gnulib multithreading, use the following Gnulib modules:
| Purpose | Module |
|---|---|
| For thread creation and management: | thread |
| For simple locks, recursive locks, and read-write locks: | lock |
| For once-only execution: | once |
| For “condition variables” (wait queues): | cond |
| For thread-local storage: | tls |
| For relinquishing control: | yield |
| For spin locks: | spin |
The Gnulib multithreading supports a configure option ‘--enable-threads={isoc,posix,windows}’, that chooses the underlying thread implementation. Currently (2020):
--enable-threads=posix is supported and is the best choice on all
platforms except for native Windows. It may also work, to a limited extent,
on mingw with the winpthreads library, but is not recommended there.
--enable-threads=windows is supported and is the best choice on
native Windows platforms (mingw and MSVC).
--enable-threads=isoc is supported on all platforms that have the
ISO C multithreading API. However, --enable-threads=posix is always
a better choice.
Previous: Gnulib multithreading, Up: Multithreading [Contents][Index]
Despite all the optimizations of multithreading primitives that have been implemented over the years – from atomic operations in hardware, over futexes and restartable sequences in the Linux kernel, to lock elision [1] [2]) – single-threaded programs can still profit performance-wise from the assertion that they are single-threaded.
Gnulib defines four facilities that help optimizing for the single-threaded case.
libpthread. If not, the program has no way to create additional
threads and must therefore be single-threaded. This optimization applies
to all the Gnulib multithreading API (locks, thread-local storage, and more).
thread-optim module, on glibc ≥ 2.32 systems, allows your code
to skip locking between threads (regardless which of the three multithreading
APIs you use). You need extra code for this: include the
"thread-optim.h" header file, and use the macro gl_multithreaded
like this:
bool mt = gl_multithreaded (); if (mt) gl_lock_lock (some_lock); ... if (mt) gl_lock_unlock (some_lock);
unlocked-io module if you want the FILE stream
functions getc, putc, etc. to use unlocked I/O if available,
throughout the package. Unlocked I/O can improve performance, sometimes
dramatically. But unlocked I/O is safe only in single-threaded programs,
as well as in multithreaded programs for which you can guarantee that
every FILE stream, including stdin, stdout, stderr,
is used only in a single thread.
You need extra code for this optimization to be effective: include the
"unlocked-io.h" header file. Some Gnulib modules that do operations
on FILE streams have these preparations already included.
GNULIB_REGEX_SINGLE_THREAD, if all the
programs in your package invoke the functions of the regex module
only from a single thread.
GNULIB_MBRTOWC_SINGLE_THREAD, if all the
programs in your package invoke the functions mbrtowc, mbrtoc32,
and the functions of the regex module only from a single thread. (The
regex module uses mbrtowc under the hood.)
GNULIB_WCHAR_SINGLE_LOCALE, if all the
programs in your package set the locale early and
mbrtowc, wcwidth, etc.)
before the locale has been initialized.
This macro optimizes the functions mbrtowc, mbrtoc32, and
wcwidth.
You can get this macro defined by including the Gnulib module
wchar-single.
GNULIB_EXCLUDE_SINGLE_THREAD, if all the
programs in your package invoke the functions of the exclude module
only from a single thread.
Next: Particular Modules, Previous: Multithreading, Up: Top [Contents][Index]
This chapter describes the APIs for strings and characters, provided by Gnulib.
| • Strings | ||
| • Characters |
Next: Characters, Up: Strings and Characters [Contents][Index]
Several possible representations exist for the representation of strings in memory of a running C program.
| • C strings | ||
| • Iterating through strings | ||
| • Strings with NUL characters | ||
| • String Functions in C Locale | ||
| • Comparison of string APIs |
Next: Iterating through strings, Up: Strings [Contents][Index]
The classical representation of a string in C is a sequence of
characters, where each character takes up one or more bytes, followed by
a terminating NUL byte. This representation is used for strings that
are passed by the operating system (in the argv argument of
main, for example) and for strings that are passed to the
operating system (in system calls such as open). The C type to
hold such strings is ‘char *’ or, in places where the string shall
not be modified, ‘const char *’. There are many C library
functions, standardized by ISO C and POSIX, that assume this
representation of strings.
A character encoding, or encoding for short, describes
how the elements of a character set are represented as a sequence of
bytes. For example, in the ASCII encoding, the UNDERSCORE
character is represented by a single byte, with value 0x5F. As another
example, the COPYRIGHT SIGN character is represented:
ISO-8859-1 encoding, by the single byte 0xA9,
UTF-8 encoding, by the two bytes 0xC2 0xA9,
GB18030 encoding, by the four bytes 0x81 0x30 0x84 0x38.
Note: The ‘char’ type may be signed or unsigned, depending on the
platform. When we talk about the "byte 0xA9" we actually mean the
char object whose value is (char) 0xA9; we omit the cast
to char in this documentation, for brevity.
In POSIX, the character encoding is determined by the locale. The locale is some environmental attribute that the user can choose.
Depending on the encoding, in general, every character is represented by
one or more bytes (up to 4 bytes in practice – but
use MB_LEN_MAX instead of the number 4 in the code).
When every character is represented by only 1 byte, we speak of an
“unibyte locale”, otherwise of a “multibyte locale”.
It is important to realize that the majority of Unix installations nowadays use UTF-8 as locale encoding; therefore, the majority of users are using multibyte locales.
Three important facts to remember are:
|
A ‘char’ is a byte, not a character. |
As a consequence:
<ctype.h> API, that was designed only with unibyte
encodings in mind, is useless nowadays for general text processing; it
does not work in multibyte locales.
strlen function does not return the number of characters
in a string. Nor does it return the number of screen columns occupied
by a string after it is output. It merely returns the number of
bytes occupied by a string.
strncpy, can have the
effect of truncating it in the middle of a multibyte character. Such
a string will, when output, have a garbled character at its end, often
represented by a hollow box.
|
Multibyte does not imply UTF-8 encoding. |
While UTF-8 is the most common multibyte encoding, GB18030 is also a supported locale encoding on GNU systems (mostly because it is a Chinese government standard, last revised in 2022).
|
Searching for a character in a string is not the same as searching for a byte in the string. |
Take the above example of COPYRIGHT SIGN in the GB18030 encoding:
A byte search will find the bytes '0' and '8' in this
string. But a search for the character "0" or "8" in the string
"©" must, of course, report “not found”.
As a consequence:
strchr and strrchr do not work with multibyte
strings if the locale encoding is GB18030 and the character to be
searched is a digit.
strstr does not work with multibyte strings if the locale
encoding is different from UTF-8.
strcspn, strpbrk, strspn cannot work
correctly in multibyte locales: they assume the second argument is a
list of single-byte characters. Even in this simple case, they do not
work with multibyte strings if the locale encoding is GB18030 and one of
the characters to be searched is a digit.
strsep and strtok_r do not work with multibyte
strings unless all of the delimiter characters are ASCII characters
< 0x30.
strcasecmp, strncasecmp, and
strcasestr functions do not work with multibyte strings.
Workarounds can be found in Gnulib, in the form of mbs* API
functions:
mbslen and mbswidth that can be used
instead of strlen when the number of characters or the
number of screen columns of a string is requested.
mbschr and mbsrrchr that are like
strchr and strrchr, but work in multibyte
locales.
mbsstr that is like strstr, but
works in multibyte locales.
mbscspn, mbspbrk, mbsspn that
are like strcspn, strpbrk, strspn,
but work in multibyte locales.
mbssep and mbstok_r that are like
strsep and strtok_r but work in multibyte
locales.
mbscasecmp, mbsncasecmp,
mbspcasecmp, and mbscasestr that are like
strcasecmp, strncasecmp, and
strcasestr, but work in multibyte locales. Still, the
function ulc_casecmp is preferable to these functions.
|
A C string can contain encoding errors. |
Not every NUL-terminated byte sequence represents a valid multibyte string. Byte sequences can contain encoding errors, that is, bytes or byte sequences that are invalid and do not represent characters.
String functions like mbscasecmp and strcoll whose
behavior depends on encoding have unspecified behavior on strings
containing encoding errors, unless the behavior is specifically
documented. If an application needs a particular behavior on these
strings it can iterate through them itself, as described in the next
subsection.
Next: Strings with NUL characters, Previous: C strings, Up: Strings [Contents][Index]
For complex string processing, string functions may not be enough, and you need to iterate through a string while processing each (possibly multibyte) character or encoding error in turn. Gnulib has several modules for iterating forward through a string in this way. Backward iteration, that is, from the string’s end to start, is not provided, as it is too hairy in general.
mbiter module iterates through a string whose length
is already known. The string can contain NULs and encoding errors.
mbiterf module is like mbiter
except it is more complex and typically faster.
mbuiter module iterates through a C string whose length
is not a-priori known. The string can contain encoding errors and is
terminated by the first NUL.
mbuiterf module is like mbuiter
except it is more complex and typically faster.
mcel module is simpler than mbiter and mbuiter
and can be faster than even mbiterf and mbuiterf.
It can iterate through either strings whose length is known, or
C strings, or strings terminated by other ASCII characters < 0x30.
mcel-prefer module is like mcel except that it
causes some other modules to be based on mcel instead of
on the mbiter family.
The choice of modules depends on the application’s needs. The
mbiter module family is more suitable for applications that
treat some sequences of two or more bytes as a single encoding error,
and for applications that need to support obsolescent encodings on
non-GNU platforms, such as CP864, EBCDIC, Johab, and Shift JIS.
In this module family, mbuiter and mbuiterf are more
suitable than mbiter and mbiterf when arguments are C strings,
lengths are not already known, and it is highly likely that only the
first few multibyte characters need to be inspected.
The mcel module is simpler and can be faster than the
mbiter family, and is more suitable for applications that do
not need the mbiter family’s special features.
The mcel-prefer module is like mcel except that it also
causes some other modules, such as mbscasecmp, to use
mcel rather than the mbiter family. This can be simpler
and faster. However, it does not support the obsolescent encodings,
and it may behave differently on data containing encoding errors where
behavior is unspecified or undefined, because in mcel each
encoding error is a single byte whereas in the mbiter family a
single encoding error can contain two or more bytes.
If a package uses mcel-prefer, it may also want to give
gnulib-tool one or more of the options
--avoid=mbiter, --avoid=mbiterf,
--avoid=mbuiter and --avoid=mbuiterf,
to avoid packaging modules that are not needed.
Next: String Functions in C Locale, Previous: Iterating through strings, Up: Strings [Contents][Index]
The GNU Coding Standards, section https://www.gnu.org/prep/standards/html_node/Semantics.html, specifies:
|
Utilities reading files should not drop NUL characters, or any other nonprinting characters. |
When it is a requirement to store NUL characters in strings, a variant of the C strings is needed. Gnulib offers a “string descriptor” type for this purpose. See Handling strings with NUL characters.
All remarks regarding encodings and multibyte characters in the previous section apply to string descriptors as well.
Next: Comparison of string APIs, Previous: Strings with NUL characters, Up: Strings [Contents][Index]
The functions in this section are similar to the generic string functions from the standard C library, except that
The functions are provided by the following modules.
| • c-ctype | ||
| • c-strcaseeq | ||
| • c-strcasecmp | ||
| • c-strncasecmp | ||
| • c-strcasestr | ||
| • c-strstr | ||
| • c-strtod | ||
| • c-strtold |
Next: c-strcaseeq, Up: String Functions in C Locale [Contents][Index]
The c-ctype module contains functions operating on single-byte
characters, like the functions in <ctype.h>, that operate as if the
locale encoding was ASCII. (The "C" locale on many systems has the locale
encoding "ASCII".)
The functions are:
extern bool c_isascii (int c); extern bool c_isalnum (int c); extern bool c_isalpha (int c); extern bool c_isblank (int c); extern bool c_iscntrl (int c); extern bool c_isdigit (int c); extern bool c_islower (int c); extern bool c_isgraph (int c); extern bool c_isprint (int c); extern bool c_ispunct (int c); extern bool c_isspace (int c); extern bool c_isupper (int c); extern bool c_isxdigit (int c); extern int c_tolower (int c); extern int c_toupper (int c);
These functions assign properties only to ASCII characters.
The c argument can be a char or unsigned char value,
whereas the corresponding functions in <ctype.h> take an argument
that is actually an unsigned char value.
The c_is* functions return ‘bool’, where the corresponding
functions in <ctype.h> return ‘int’ for historical reasons.
Note: The <ctype.h> functions support only unibyte locales.
Next: c-strcasecmp, Previous: c-ctype, Up: String Functions in C Locale [Contents][Index]
The c-strcaseeq module contains an optimized case-insensitive
string comparison function operating on single-byte character strings, that
operate as if the locale encoding was ASCII.
(The "C" locale on many systems has the locale encoding "ASCII".)
The functions is actually implemented as a macro:
extern int STRCASEEQ (const char *s1, const char *s2,
int s20, int s21, int s22, int s23, int s24, int s25,
int s26, int s27, int s28);
s2 should be a short literal ASCII string, and s20, s21, ... the individual characters of s2.
For case conversion here, only ASCII characters are considered to be upper case or lower case.
Next: c-strncasecmp, Previous: c-strcaseeq, Up: String Functions in C Locale [Contents][Index]
The c-strcasecmp module contains a case-insensitive string comparison
function operating on single-byte character strings, like the functions in
<strings.h>, that operate as if the locale encoding was ASCII.
(The "C" locale on many systems has the locale encoding "ASCII".)
The function is:
extern int c_strcasecmp (const char *s1, const char *s2);
For case conversion here, only ASCII characters are considered to be upper case or lower case.
Note: The function strcasecmp from <strings.h>
supports only unibyte locales;
for multibyte locales,
you need the function mbscasecmp.
Next: c-strcasestr, Previous: c-strcasecmp, Up: String Functions in C Locale [Contents][Index]
The c-strncasecmp module contains a case-insensitive string comparison
function operating on single-byte character strings, like the functions in
<strings.h>, that operate as if the locale encoding was ASCII.
(The "C" locale on many systems has the locale encoding "ASCII".)
The function is:
extern int c_strncasecmp (const char *s1, const char *s2, size_t n);
For case conversion here, only ASCII characters are considered to be upper case or lower case.
Note: The function strncasecmp from <strings.h>
supports only unibyte locales;
for multibyte locales,
you need the function mbsncasecmp or mbspcasecmp.
Next: c-strstr, Previous: c-strncasecmp, Up: String Functions in C Locale [Contents][Index]
The c-strcasestr module contains a case-insensitive string search
function operating on single-byte character strings, that operate as if the
locale encoding was ASCII.
(The "C" locale on many systems has the locale encoding "ASCII".)
The function is:
extern char *c_strcasestr (const char *haystack, const char *needle);
For case conversion here, only ASCII characters are considered to be upper case or lower case.
Note: The function strcasestr from <string.h> supports only
unibyte locales;
for multibyte locales, you need the function mbscasestr.
Next: c-strtod, Previous: c-strcasestr, Up: String Functions in C Locale [Contents][Index]
The c-strstr module contains a substring search function operating
on single-byte character strings, that operate as if the locale encoding
was ASCII.
(The "C" locale on many systems has the locale encoding "ASCII".)
The function is:
extern char *c_strstr (const char *haystack, const char *needle);
Note: The function strstr from <string.h> supports only
unibyte locales;
for multibyte locales, you need the function mbsstr.
Next: c-strtold, Previous: c-strstr, Up: String Functions in C Locale [Contents][Index]
The c-strtod module contains a string to number (‘double’)
conversion function operating on single-byte character strings, that operates
as if the locale encoding was ASCII.
(The "C" locale on many systems has the locale encoding "ASCII".)
The function is:
extern double c_strtod (const char *string, char **endp);
In particular, only a period ‘.’ is accepted as decimal point, even when the current locale’s notion of decimal point is a comma ‘,’, and no characters outside the basic character set are accepted.
On platforms without strtod_l, this function is not safe for use in
multi-threaded applications since it calls setlocale.
Previous: c-strtod, Up: String Functions in C Locale [Contents][Index]
The c-strtold module contains a string to number (‘long double’)
conversion function operating on single-byte character strings, that operates
as if the locale encoding was ASCII.
(The "C" locale on many systems has the locale encoding "ASCII".)
The function is:
extern long double c_strtold (const char *string, char **endp);
In particular, only a period ‘.’ is accepted as decimal point, even when the current locale’s notion of decimal point is a comma ‘,’.
Previous: String Functions in C Locale, Up: Strings [Contents][Index]
This table summarizes the API functions available for strings, in POSIX and in Gnulib.
| unibyte strings only | assume C locale | multibyte strings | multibyte strings with NULs | wide character strings | 32-bit wide character strings |
|---|---|---|---|---|---|
strlen | strlen | mbslen | sd_length | wcslen | u32_strlen |
strnlen | strnlen | mbsnlen | – | wcsnlen | u32_strnlen, u32_mbsnlen |
strcmp | strcmp | strcmp | sd_cmp | wcscmp | u32_strcmp |
strncmp | strncmp | strncmp | – | wcsncmp | u32_strncmp |
strcasecmp | strcasecmp | mbscasecmp | – | wcscasecmp | u32_casecmp |
strncasecmp | strncasecmp | mbsncasecmp, mbspcasecmp | – | wcsncasecmp | u32_casecmp |
strcoll | strcmp | strcoll | – | wcscoll | u32_strcoll |
strxfrm | – | strxfrm | – | wcsxfrm | – |
strchr | strchr | mbschr | sd_index | wcschr | u32_strchr |
strrchr | strrchr | mbsrchr | sd_last_index | wcsrchr | u32_strrchr |
strstr | strstr | mbsstr | sd_contains | wcsstr | u32_strstr |
strcasestr | strcasestr | mbscasestr | – | – | – |
str_startswith | str_startswith | mbs_startswith | sd_startswith | – | u32_startswith |
str_endswith | str_endswith | mbs_endswith | sd_endswith | – | u32_endswith |
strspn | strspn | mbsspn | – | wcsspn | u32_strspn |
strcspn | strcspn | mbscspn | – | wcscspn | u32_strcspn |
strpbrk | strpbrk | mbspbrk | – | wcspbrk | u32_strpbrk |
strtok_r | strtok_r | mbstok_r | – | wcstok | u32_strtok |
strsep | strsep | mbssep | – | – | – |
strcpy | strcpy | strcpy | sd_copy | wcscpy | u32_strcpy |
stpcpy | stpcpy | stpcpy | – | wcpcpy | u32_stpcpy |
strncpy | strncpy | strncpy | – | wcsncpy | u32_strncpy |
stpncpy | stpncpy | stpncpy | – | wcpncpy | u32_stpncpy |
strcat | strcat | strcat | sd_concat | wcscat | u32_strcat |
strncat | strncat | strncat | – | wcsncat | u32_strncat |
free | free | free | sd_free | free | free |
strdup | strdup | strdup | sd_copy | wcsdup | u32_strdup |
strndup | strndup | strndup | – | – | – |
mbswidth | mbswidth | mbswidth | – | wcswidth | c32swidth, u32_strwidth |
strtol | strtol | strtol | – | – | – |
strtoul | strtoul | strtoul | – | – | – |
strtoll | strtoll | strtoll | – | – | – |
strtoull | strtoull | strtoull | – | – | – |
strtoimax | strtoimax | strtoimax | – | wcstoimax | – |
strtoumax | strtoumax | strtoumax | – | wcstoumax | – |
strtof | – | strtof | – | – | – |
strtod | c_strtod | strtod | – | – | – |
strtold | c_strtold | strtold | – | – | – |
strfromf | – | strfromf | – | – | – |
strfromd | – | strfromd | – | – | – |
strfroml | – | strfroml | – | – | – |
| – | – | – | – | mbstowcs | mbstoc32s |
| – | – | – | – | mbsrtowcs | mbsrtoc32s |
| – | – | – | – | mbsnrtowcs | mbsnrtoc32s |
| – | – | – | – | wcstombs | c32stombs |
| – | – | – | – | wcsrtombs | c32srtombs |
| – | – | – | – | wcsnrtombs | c32snrtombs |
Previous: Strings, Up: Strings and Characters [Contents][Index]
A character is the elementary unit that strings are made of.
What is a character? “A character is an element of a character set” is sort of a circular definition, but it highlights the fact that it is not merely a number. Although many characters are visually represented by a single glyph, there are characters that, for example, have a different glyph when used at the end of a word than when used inside a word. A character is also not the minimal rendered text processing unit; that is a grapheme cluster and in general consists of one or more characters. If you want to know more about the concept of character and various concepts associated with characters, refer to the Unicode standard.
For the representation in memory of a character, various types have been
in use, and some of them were failures: char and wchar_t
were invented for this purpose, but are not the right types.
char32_t is the right type (successor of wchar_t); and
mbchar_t (defined by Gnulib) is an alternative for specific kinds
of processing.
| • The char type | ||
| • The wchar_t type | ||
| • The char32_t type | ||
| • The mbchar_t type | ||
| • Comparison of character APIs |
Next: The wchar_t type, Up: Characters [Contents][Index]
char typeThe char type is in the C language since the beginning in the
1970ies, but – due to its limitation of 256 possible values – is no
longer the adequate type for storing a character.
Technically, it is still adequate in unibyte locales. But since most locales nowadays are multibyte locales, it makes no sense to write a program that runs only in unibyte locales.
ISO C and POSIX standardized an API for characters of type char,
in <ctype.h>. This API is nowadays useless and obsolete, when it
comes to general text processing.
The important lessons to remember are:
|
A ‘char’ is just the elementary storage unit for a string, not a character. |
|
Never use |
Next: The char32_t type, Previous: The char type, Up: Characters [Contents][Index]
wchar_t typeThe ISO C and POSIX standard creators made an attempt to overcome the
dead end regarding the char type. They introduced
<wchar.h>, and
<wctype.h> that were meant to supplant
the ones in <ctype.h>.
Unfortunately, this API and its implementation has numerous problems:
wchar_t is a
16-bit type. This means that it can never accommodate an entire Unicode
character. Either the wchar_t * strings are limited to
characters in UCS-2 (the “Basic Multilingual Plane” of Unicode), or
– if wchar_t * strings are encoded in UTF-16 – a
wchar_t represents only half of a character in the worst case,
making the <wctype.h> functions pointless.
wchar_t encoding is locale dependent
and undocumented. This means, if you want to know any property of a
wchar_t character, other than the properties defined by
<wctype.h> – such as whether it’s a dash, currency symbol,
paragraph separator, or similar –, you have to convert it to
char * encoding first, by use of the function wctomb.
fgetwc and fgetws, and when the input
stream/file is not in the expected encoding, you have no way to
determine the invalid byte sequence and do some corrective action. If
you use these functions, your program becomes “garbage in - more
garbage out” or “garbage in - abort”.
As a consequence, it is better to use multibyte strings. Such multibyte
strings can bypass limitations of the wchar_t type, if you use
functions defined in Gnulib and GNU libunistring for text processing.
They can also faithfully transport malformed characters that were
present in the input, without requiring the program to produce garbage
or abort.
Next: The mbchar_t type, Previous: The wchar_t type, Up: Characters [Contents][Index]
char32_t typeThe ISO C and POSIX standard creators then introduced the
char32_t type. In ISO C 11, it was conceptually a “32-bit wide
character” type. In ISO C 23, its semantics has been further
specified: A char32_t value is a Unicode code point.
Thus, the char32_t type is not affected the problems that plague
the wchar_t type.
The char32_t type and its API are defined in the <uchar.h>
header file.
ISO C and POSIX specify only the basic functions for the char32_t
type, namely conversion of a single character (mbrtoc32 and
c32rtomb). For convenience, Gnulib adds API for classification
and case conversion of characters.
GNU libunistring can also be used on char32_t values. Since
char32_t is the same as uint32_t, all u32_*
functions of GNU libunistring are applicable to arrays of
char32_t values.
On glibc systems, use of the 32-bit wide strings (char32_t[]) is
exactly as efficient as the use of the older wide strings
(wchar_t[]). This is possible because on glibc, wchar_t
values already always were 32-bit and Unicode code points.
mbrtoc32 is just an alias of mbrtowc. The Gnulib
*c32* functions are optimized so that on glibc systems they
immediately redirect to the corresponding *wc* functions.
Gnulib implements the ISO C 23 semantics of char32_t when you
import the ‘uchar-h-c23’ module. Without this module, it implements
only the ISO C 11 semantics; the effect is that on some platforms
(macOS, FreeBSD, NetBSD, Solaris) a char32_t value is the same
as a wchar_t value, not a Unicode code point. Thus, when you
want to pass char32_t values to GNU libunistring or to some Unicode
centric Gnulib functions, you need the ‘uchar-h-c23’ module in order
to do so without portability problems.
Next: Comparison of character APIs, Previous: The char32_t type, Up: Characters [Contents][Index]
mbchar_t typeGnulib defines an alternate way to encode a multibyte character:
mbchar_t. Its main feature is the ability to process a string or
stream with some malformed characters without reporting an error.
The type mbchar_t, defined in "mbchar.h", holds a
character in both the multibyte and the 32-bit wide character
representation. In case of a malformed character only the multibyte
representation is used.
| • Reading multibyte strings |
Up: The mbchar_t type [Contents][Index]
If you want to process (possibly multibyte) characters while reading
them from a FILE * stream, without reading them into a string
first, the mbfile module is made for this purpose.
Previous: The mbchar_t type, Up: Characters [Contents][Index]
This table summarizes the API functions available for characters, in POSIX and in Gnulib.
| unibyte character | assume C locale | wide character | 32-bit wide character | mbchar_t character |
|---|---|---|---|---|
== '\0' | == '\0' | == L'\0' | == 0 | mb_isnul |
== | == | == | == | mb_equal |
isalnum | c_isalnum | iswalnum | c32isalnum | mb_isalnum |
isalpha | c_isalpha | iswalpha | c32isalpha | mb_isalpha |
isblank | c_isblank | iswblank | c32isblank | mb_isblank |
iscntrl | c_iscntrl | iswcntrl | c32iscntrl | mb_iscntrl |
isdigit | c_isdigit | iswdigit | c32isdigit | mb_isdigit |
isgraph | c_isgraph | iswgraph | c32isgraph | mb_isgraph |
islower | c_islower | iswlower | c32islower | mb_islower |
isprint | c_isprint | iswprint | c32isprint | mb_isprint |
ispunct | c_ispunct | iswpunct | c32ispunct | mb_ispunct |
isspace | c_isspace | iswspace | c32isspace | mb_isspace |
isupper | c_isupper | iswupper | c32isupper | mb_isupper |
isxdigit | c_isxdigit | iswxdigit | c32isxdigit | mb_isxdigit |
| – | – | wctype | c32_get_type_test | – |
| – | – | iswctype | c32_apply_type_test | – |
tolower | c_tolower | towlower | c32tolower | – |
toupper | c_toupper | towupper | c32toupper | – |
| – | – | wctrans | c32_get_mapping | – |
| – | – | towctrans | c32_apply_mapping | – |
| – | – | wcwidth | c32width | mb_width |
Next: Regular expressions, Previous: Strings and Characters, Up: Top [Contents][Index]
Next: alloca-opt, Up: Particular Modules [Contents][Index]
The alloca module provides for a function alloca which allocates
memory on the stack, where the system allows it. A memory block allocated with
alloca exists only until the function that calls alloca returns
or exits abruptly.
There are a few systems where this is not possible: HP-UX systems, and some
other platforms when the C++ compiler is used. On these platforms the alloca
module provides a malloc based emulation. This emulation will not free a
memory block immediately when the calling function returns, but rather will
wait until the next alloca call from a function with the same or a
shorter stack length. Thus, in some cases, a few memory blocks will be kept
although they are not needed any more.
The user can #include <alloca.h> and use alloca on all platforms.
Note that the #include <alloca.h> must be the first one after the
autoconf-generated config.h, for AIX 3 compatibility. Thanks to IBM for
this nice restriction!
Note that GCC 3.1 and 3.2 can inline functions that call alloca.
When this happens, the memory blocks allocated with alloca will not be
freed until the end of the calling function. If this calling function
runs a loop calling the function that uses alloca, the program easily
gets a stack overflow and crashes. To protect against this compiler behaviour,
you can mark the function that uses alloca with the following attribute:
#ifdef __GNUC__ __attribute__ ((__noinline__)) #endif
An alternative to this module is the ‘alloca-opt’ module.
Next: Safe Allocation Macros, Previous: alloca, Up: Particular Modules [Contents][Index]
The alloca-opt module provides for a function alloca which allocates
memory on the stack, where the system allows it. A memory block allocated with
alloca exists only until the function that calls alloca returns
or exits abruptly.
There are a few systems where this is not possible: HP-UX systems, and some
other platforms when the C++ compiler is used. On these platforms the
alloca-opt module provides no replacement, just a preprocessor macro
HAVE_ALLOCA.
The user can #include <alloca.h> on all platforms, and use
alloca on those platforms where the preprocessor macro HAVE_ALLOCA
evaluates to true. If HAVE_ALLOCA is false, the code should use a heap-based
memory allocation based on malloc or (in C++) new. Note that
the #include <alloca.h> must be the first one after the
autoconf-generated config.h, for AIX 3 compatibility. Thanks to IBM for
this nice restriction!
Note that GCC 3.1 and 3.2 can inline functions that call alloca.
When this happens, the memory blocks allocated with alloca will not be
freed until the end of the calling function. If this calling function
runs a loop calling the function that uses alloca, the program easily
gets a stack overflow and crashes. To protect against this compiler behaviour,
you can mark the function that uses alloca with the following attribute:
#ifdef __GNUC__ __attribute__ ((__noinline__)) #endif
Next: Attributes, Previous: alloca-opt, Up: Particular Modules [Contents][Index]
The standard C library malloc/realloc/calloc/free APIs are prone to a
number of common coding errors. The safe-alloc module provides
macros that make it easier to avoid many of them. It still uses the
standard C allocation functions behind the scenes.
This module is obsolete, as it does not seem to have caught on in practice and some of its features could not be ported to unusual platforms.
Some of the memory allocation mistakes that are commonly made are
malloc, especially
when allocating an array,
malloc and realloc for
errors,
malloc,
free by forgetting to set the pointer
variable to NULL,
realloc when that call fails.
The safe-alloc module addresses these problems in the following way:
__warn_unused_result__ attribute.
calloc instead of
malloc so that the array’s contents are zeroed.
However, memory added to an already-existing array is uninitialized.
Allocate sizeof *ptr bytes of memory and store the address of
allocated memory in ptr. Fill the newly allocated memory with
zeros.
Returns -1 on failure, 0 on success.
Allocate an array of count elements, each sizeof *ptr
bytes long, and store the address of allocated memory in
ptr. Fill the newly allocated memory with zeros.
Returns -1 on failure, 0 on success.
Allocate an array of count elements, each sizeof *ptr
bytes long, and store the address of allocated memory in
ptr. The allocated memory is not initialized.
Returns -1 on failure, 0 on success.
Free the memory stored in ptr and set ptr to
NULL.
Next: Compile-time Assertions, Previous: Safe Allocation Macros, Up: Particular Modules [Contents][Index]
The module ‘attribute’ provides a header file attribute.h that
defines macros related to C and C++ attributes and the GCC
__attribute__ keyword.
Here is an example of its use:
#include <attribute.h> NODISCARD extern char *crypt (char const *, char const *) ATTRIBUTE_NOTHROW ATTRIBUTE_LEAF ATTRIBUTE_NONNULL ((1, 2));
NODISCARD expands to [[nodiscard]] if the compiler
supports this C23 syntax, otherwise to
__attribute__ ((__warn_unused_result__)) if the compiler
is a recent-enough GCC or GCC-like compiler, otherwise to nothing.
ATTRIBUTE_NOTHROW expands to __attribute__
((__nothrow__)) if the compiler is a recent-enough GCC or GCC-like
compiler, and to nothing otherwise. Similarly for
ATTRIBUTE_LEAF. ATTRIBUTE_NONNULL ((1, 2)) expands to
__attribute__ ((__nonnull__ (1, 2))) if the compiler is
recent-enough GCC, and to nothing otherwise.
Most of these attribute names begin with ATTRIBUTE_.
A few do not, because they are part of C23 and their
names are not likely to clash with other macro names.
These macros are DEPRECATED, FALLTHROUGH,
MAYBE_UNUSED, and NODISCARD, which can
be defined to [[deprecated]] etc. on C23 platforms.
Also, these exceptional macros should be placed at the start of
function declarations, whereas the ATTRIBUTE_* macros can be
placed at the end.
The module also defines the macro UNNAMED,
designed for function parameters that are never used,
whereas the MAYBE_UNUSED attribute is better suited for parameters
that might or might not be unused depending on preprocessor macro settings.
For example:
int
f (int a, MAYBE_UNUSED int b, int UNNAMED (c))
{
int r = a;
#ifdef B_FEATURE
r |= b;
#endif
return r;
}
Next: Non-returning Functions, Previous: Attributes, Up: Particular Modules [Contents][Index]
The module ‘verify’ provides a header file verify.h that defines macros related to compile-time verification.
Two of these macros are verify (V) and verify_expr
(V, EXPR). Both accept an integer constant expression
argument V and verify that it is nonzero. If not, a compile-time error
results.
These two macros implement compile-time tests, as opposed to
the standard assert macro which supports only runtime tests.
Since the tests occur at compile-time, they are more reliable, and
they require no runtime overhead.
verify (V); is a declaration; it can occur outside of
functions. In contrast, verify_expr (V, EXPR) is
an expression that returns the value of EXPR; it can be used in
macros that expand to expressions. If EXPR is an integer
constant expression, then verify_expr (V, EXPR) is
also an integer constant expression. Although EXPR and
verify_expr (V, EXPR) are guaranteed to have the
same side effects and value and type (after integer promotion), they
need not have the same type if EXPR’s type is an integer that is
narrower than int or unsigned int.
V should be an integer constant expression in the sense
of the C standard. Its leaf operands should be integer, enumeration,
or character constants; or sizeof expressions that return
constants; or floating constants that are the immediate operands of
casts. Outside a sizeof subexpression, V should
not contain any assignments, function calls, comma operators, casts to
non-integer types, or subexpressions whose values are outside the
representable ranges for their types. If V is not an
integer constant expression, then a compiler might reject a usage like
‘verify (V);’ even when V is
nonzero.
Although the standard assert macro is a runtime test, C23 and C++17
specify a builtin static_assert (V), which differs
from verify in two major ways. First, it can also be used
within a struct or union specifier, in place of an
ordinary member declaration. Second, it allows the programmer to
specify, as an optional second argument, a compile-time diagnostic as
a string literal. If your program is not intended to be portable to
compilers that lack C23 or C++17 static_assert, the only
advantage of verify is that its name is a bit shorter.
The verify.h header defines one more macro, assume
(E), which expands to an expression of type void
that causes the compiler to assume that E yields a nonzero
value. E should be a scalar expression, and should not
have side effects; it may or may not be evaluated. The behavior is
undefined if E would yield zero. The main use of assume
is optimization, as the compiler may be able to generate better code
if it assumes E. For best results, E should be simple
enough that a compiler can determine that it has no side effects: if
E calls an external function or accesses volatile storage the
compiler may not be able to optimize E away and assume
(E) may therefore slow down the program.
Here are some example uses of these macros.
#include <verify.h> #include <limits.h> #include <time.h>
/* Verify that time_t is an integer type. */ verify ((time_t) 1.5 == 1);
/* Verify that time_t is no smaller than int. */ verify (sizeof (int) <= sizeof (time_t));
/* Verify that time_t is signed. */ verify ((time_t) -1 < 0);
/* Verify that time_t uses two's complement representation. */ verify (~ (time_t) -1 == 0);
/* Return the maximum value of the integer type T, verifying that T is an unsigned integer type. The cast to (T) is outside the call to verify_expr so that the result is of type T even when T is narrower than unsigned int. */ #define MAX_UNSIGNED_VAL(t) \ ((t) verify_expr (0 < (t) -1, -1))
/* Return T divided by CHAR_MAX + 1, where behavior is
undefined if T < 0. In the common case where CHAR_MAX
is 127 the compiler can therefore implement the division
by shifting T right 7 bits, an optimization that would
not be valid if T were negative. */
time_t
time_index (time_t t)
{
assume (0 <= t);
return t / (CHAR_MAX + 1);
}
Next: Integer Properties, Previous: Compile-time Assertions, Up: Particular Modules [Contents][Index]
A "non-returning" function is a function which cannot return normally.
Instead of returning, it can loop forever, or it can transfer control via
abort, execvp, exit, longjmp, throw
(in C++), or similar mechanisms. Non-returning functions are
declared with a void return type.
It helps the compiler’s ability to emit sensible warnings, following data-flow analysis, to declare which functions are non-returning. It can also help generate more-efficient code, as there is no need to save a return address when calling a non-returning function.
Gnulib has multiple ways to support such a declaration:
_Noreturn keyword. No modules are needed, as Gnulib
arranges for <config.h> to define _Noreturn to an
appropriate replacement on platforms lacking it.
Unfortunately, although this approach works for all current C versions,
the _Noreturn keyword is obsolescent in C23.
_GL_NORETURN_FUNC for use in function declarations and function
definitions.
_GL_NORETURN_FUNCPTR for use on function pointers.
The include file is <noreturn.h>.
Which of the approaches to use? If the non-returning functions you
have to declare are unlikely to be accessed through function pointers,
you should use _Noreturn; otherwise the module
noreturn provides for better data-flow analysis and thus for
better warnings.
There is also an obsolete stdnoreturn-h module, but its use is no
longer recommended.
Next: static inline, Previous: Non-returning Functions, Up: Particular Modules [Contents][Index]
The intprops module consists of an include file <intprops.h>
that defines several macros useful for testing properties of integer
types.
Integer overflow is a common source of problems in programs written in C and other languages. In some cases, such as signed integer arithmetic in C programs, the resulting behavior is undefined, and practical platforms do not always behave as if integers wrap around reliably. In other cases, such as unsigned integer arithmetic in C, the resulting behavior is well-defined, but programs may still misbehave badly after overflow occurs.
Many techniques have been proposed to attack these problems. These include precondition testing, wraparound behavior where signed integer arithmetic is guaranteed to be modular, saturation semantics where overflow reliably yields an extreme value, undefined behavior sanitizers where overflow is guaranteed to trap, and various static analysis techniques.
Gnulib supports wraparound arithmetic and precondition testing, as these are relatively easy to support portably and efficiently. There are two families of precondition tests: the first, for integer types, is easier to use, while the second, for integer ranges, has a simple and straightforward portable implementation.
Like other Gnulib modules, the implementation of the intprops
module assumes that integers use a two’s complement representation,
but it does not assume that signed integer arithmetic wraps around.
See Other portability assumptions.
| • Arithmetic Type Properties | Determining properties of arithmetic types. | |
| • Arithmetic Type Conversion | Converting arithmetic types. | |
| • Integer Bounds | Bounds on integer values and representations. | |
| • Checking Integer Overflow | Checking for overflow while computing integers. | |
| • Wraparound Arithmetic | Well-defined behavior on integer overflow. | |
| • Integer Type Overflow | General integer overflow checking. | |
| • Integer Range Overflow | Integer overflow checking if bounds are known. |
Next: Arithmetic Type Conversion, Up: Integer Properties [Contents][Index]
TYPE_IS_INTEGER (t) is an arithmetic constant
expression that yields 1 if the arithmetic type t is an integer type,
0 otherwise.
bool counts as an integer type.
TYPE_SIGNED (t) is an arithmetic constant expression
that yields 1 if the real type t is a signed integer type or a
floating type, 0 otherwise.
If t is an integer type, TYPE_SIGNED (t)
is an integer constant expression.
EXPR_SIGNED (e) yields 1 if the real expression e
has a signed integer type or a floating type, 0 otherwise. If e is an
integer constant expression or an arithmetic constant expression,
EXPR_SIGNED (e) is likewise. The expression
e is not evaluated, and EXPR_SIGNED
(e) is typically optimized to a constant.
Example usage:
#include <intprops.h>
#include <sys/types.h>
enum
{
clock_t_is_integer = TYPE_IS_INTEGER (clock_t),
uid_t_is_signed = TYPE_SIGNED (uid_t)
};
int
CLOCKS_PER_SEC_is_signed (void)
{
return EXPR_SIGNED (CLOCKS_PER_SEC);
}
Next: Integer Bounds, Previous: Arithmetic Type Properties, Up: Integer Properties [Contents][Index]
Here are some ways in C to convert an arithmetic expression e to a possibly different arithmetic type t.
((t) e) is powerful and
can therefore be dangerous, because the conversion can succeed even if
neither e nor t happens to have an arithmetic type. For
example, if e is a pointer, ((long int) e) will do
a conversion even if that was not the intent.
t v = e; is less
powerful, as it does not convert from pointers. However, it can lose
information and sign, as in for example int v = -0.9; which
sets v to zero.
+e is even less
powerful, as it preserves value (including sign) because it does only
integer promotions. That is, it converts to int if that can
represent all values of e’s underlying type, otherwise to
unsigned int if that can represent all values, and
otherwise it does no conversion.
INT_PROMOTE (e) is an expression with the same value as
the arithmetic expression e but with e’s type after
any integer promotion. It behaves like +e.
In the following example, using INT_PROMOTE pacifies GCC’s
-Wswitch-enum option, and may help human readers see what is
going on even if they are not expert in C’s integer promotion rules
and might be confused by the simpler switch (+v).
enum { A = 1, B, C, D, E } v = ...;
switch (INT_PROMOTE (v))
{
case A: case C:
return true;
default:
/* Handle all other cases,
even cases like v == 0. */
return false;
}
Next: Checking Integer Overflow, Previous: Arithmetic Type Conversion, Up: Integer Properties [Contents][Index]
INT_BUFSIZE_BOUND (t) is an integer constant
expression that is a bound on the size of the string representing an
integer type or expression t in decimal notation, including the
terminating null character and any leading - character. For
example, if INT_BUFSIZE_BOUND (int) is 12, any value of type
int can be represented in 12 bytes or less, including the
terminating null. The bound is not necessarily tight.
Example usage:
#include <intprops.h>
#include <stdio.h>
int
int_strlen (int i)
{
char buf[INT_BUFSIZE_BOUND (int)];
return sprintf (buf, "%d", i);
}
INT_STRLEN_BOUND (t) is an integer constant
expression that is a bound on the length of the string representing an
integer type or expression t in decimal notation, including any
leading - character. This is one less than
INT_BUFSIZE_BOUND (t).
TYPE_MINIMUM (t) and TYPE_MAXIMUM (t) are
integer constant expressions equal to the minimum and maximum
values of the integer type t. These expressions are of the type
t.
Example usage:
#include <sys/types.h>
#include <intprops.h>
bool
in_off_t_range (long long int a)
{
return TYPE_MINIMUM (off_t) <= a && a <= TYPE_MAXIMUM (off_t);
}
Next: Wraparound Arithmetic, Previous: Integer Bounds, Up: Integer Properties [Contents][Index]
Signed integer arithmetic has undefined behavior on overflow in C. Although almost all modern computers use two’s complement signed arithmetic that is well-defined to wrap around, C compilers routinely optimize assuming that signed integer overflow cannot occur, which means that a C program cannot easily get at the underlying machine arithmetic. For example:
if ((a + b < b) == (a < 0))
a += b;
else
printf ("overflow\n");
might not work as expected if a and b are signed,
because a compiler can assume that signed overflow cannot occur and
treat the entire if expression as if it were true. And even if
a is unsigned, the expression might not work as expected if
b is negative or is wider than a.
The following macros work around this problem by yielding an overflow
indication while computing the sum, difference, or product of two
integers. For example, if i is of type int,
INT_ADD_OK (INT_MAX - 1, 1, &i) sets i to
INT_MAX and yields 1, whereas INT_ADD_OK (INT_MAX, 1,
&i) yields 0.
Example usage:
#include <intprops.h>
#include <stdio.h>
/* Compute A * B, reporting whether overflow occurred. */
void
print_product (long int a, long int b)
{
long int r;
if (INT_MULTIPLY_OK (a, b, &r))
printf ("result is %ld\n", r);
else
printf ("overflow\n");
}
These macros work for both signed and unsigned integers, so they can
be used with integer types like time_t that may or may not be
signed, depending on the platform.
These macros have the following restrictions:
INT_ADD_OK (a, b, r)Compute the sum of a and b. If it fits into
*r, store it there and yield 1. Otherwise yield
0, possibly modifying *r to an unspecified value.
See above for restrictions.
INT_SUBTRACT_OK (a, b, r)Compute the difference between a and b. If it fits into
*r, store it there and yield 1. Otherwise yield
0, possibly modifying *r to an unspecified value.
See above for restrictions.
INT_MULTIPLY_OK (a, b, r)Compute the product of a and b. If it fits into
*r, store it there and yield 1. Otherwise yield
0, possibly modifying *r to an unspecified value.
See above for restrictions.
Other macros are available if you need wrapped-around results when overflow occurs (see Wraparound Arithmetic), or if you need to check for overflow in operations other than addition, subtraction, and multiplication (see Integer Type Overflow).
Next: Integer Type Overflow, Previous: Checking Integer Overflow, Up: Integer Properties [Contents][Index]
Signed integer arithmetic has undefined behavior on overflow in C.
Although almost all modern computers use two’s complement signed
arithmetic that is well-defined to wrap around, C compilers routinely
optimize assuming that signed integer overflow cannot occur, which
means that a C program cannot easily get at the underlying machine
arithmetic. For example, on a typical machine with 32-bit two’s
complement int the expression INT_MAX + 1 does not
necessarily yield INT_MIN, because the compiler may do
calculations with a 64-bit register, or may generate code that
traps on signed integer overflow.
The following macros work around this problem by storing the
wraparound value, i.e., the low-order bits of the correct answer, and
by yielding an overflow indication. For example, if i is of
type int, INT_ADD_WRAPV (INT_MAX, 1, &i) sets i
to INT_MIN and yields 1 on a two’s complement machine.
See Integer Type Overflow.
Example usage:
#include <intprops.h>
#include <stdio.h>
/* Print the low order bits of A * B,
reporting whether overflow occurred. */
void
print_product (long int a, long int b)
{
long int r;
int overflow = INT_MULTIPLY_WRAPV (a, b, &r);
printf ("result is %ld (%s)\n", r,
(overflow
? "after overflow"
: "no overflow"));
}
These macros work for both signed and unsigned integers, so they can
be used with integer types like time_t that may or may not be
signed, depending on the platform.
These macros have the following restrictions:
INT_ADD_WRAPV (a, b, r)Store the low-order bits of the sum of a and b into
*r. Yield 1 if overflow occurred, 0 if the
low-order bits are the mathematically-correct sum. See above for
restrictions.
INT_SUBTRACT_WRAPV (a, b, r)Store the low-order bits of the difference between a and b
into *r. Yield 1 if overflow occurred, 0 if the
low-order bits are the mathematically-correct difference. See above
for restrictions.
INT_MULTIPLY_WRAPV (a, b, r)Store the low-order bits of the product of a and b into
*r. Yield 1 if overflow occurred, 0 if the
low-order bits are the mathematically-correct product. See above for
restrictions.
If your code includes <intprops.h> only for these _WRAPV
macros, you may prefer to use Gnulib’s stdckdint-h module
instead, as it supports similar macros that were standardized in C23
and are therefore independent of Gnulib if your code can assume C23 or
later. See stdckdint.h.
Other macros are available if you do not need wrapped-around results when overflow occurs (see Checking Integer Overflow), or if you need to check for overflow in operations other than addition, subtraction, and multiplication (see Integer Type Overflow).
Next: Integer Range Overflow, Previous: Wraparound Arithmetic, Up: Integer Properties [Contents][Index]
Although unsigned integer arithmetic wraps around modulo a power of
two, signed integer arithmetic has undefined behavior on overflow in
C. Almost all modern computers use two’s complement signed
arithmetic that is well-defined to wrap around, but C compilers
routinely optimize based on the assumption that signed integer
overflow cannot occur, which means that a C program cannot easily get
at the underlying machine behavior. For example, the signed integer
expression (a + b < b) != (a < 0) is not a reliable test for
whether a + b overflows, because a compiler can assume that
signed overflow cannot occur and treat the entire expression as if it
were false.
These macros yield 1 if the corresponding C operators overflow, 0 otherwise. They work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. They are integer constant expressions if their arguments are. They are typically easier to use than the integer range overflow macros (see Integer Range Overflow), and they support more operations and evaluation contexts than the integer overflow checking macros (see Checking Integer Overflow) or the wraparound macros (see Wraparound Arithmetic).
These macros can be tricky to use with arguments narrower than
int. For example, in the common case with 16-bit short
int and 32-bit int, if a and b are of type
short int then INT_MULTIPLY_OVERFLOW (a, b) always
yields 0, as a * b cannot overflow due to C’s rule that
a and b are widened to int before multiplying.
For this reason, often it is better to use the integer overflow
checking macros (see Checking Integer Overflow) or the wraparound
macros (see Wraparound Arithmetic) when checking for overflow in
addition, subtraction, or multiplication.
Example usage:
#include <intprops.h>
#include <limits.h>
#include <stdio.h>
/* Print A * B if in range, an overflow
indicator otherwise. */
void
print_product (long int a, long int b)
{
if (INT_MULTIPLY_OVERFLOW (a, b))
printf ("multiply would overflow");
else
printf ("product is %ld", a * b);
}
/* Does the product of two ints always fit
in a long int? */
enum {
INT_PRODUCTS_FIT_IN_LONG
= ! (INT_MULTIPLY_OVERFLOW
((long int) INT_MIN, INT_MIN))
};
These macros have the following restrictions:
These macros are tuned for their last argument being a constant.
INT_ADD_OVERFLOW (a, b)Yield 1 if a + b would overflow, 0 otherwise. See above for
restrictions.
INT_SUBTRACT_OVERFLOW (a, b)Yield 1 if a - b would overflow, 0 otherwise. See above for
restrictions.
INT_NEGATE_OVERFLOW (a)Yields 1 if -a would overflow, 0 otherwise.
See above for restrictions.
INT_MULTIPLY_OVERFLOW (a, b)Yield 1 if a * b would overflow, 0 otherwise. See above for
restrictions.
INT_DIVIDE_OVERFLOW (a, b)Yield 1 if a / b would overflow, 0 otherwise. See above for
restrictions. Division overflow can happen on two’s complement hosts
when dividing the most negative integer by -1. This macro does
not check for division by zero.
INT_REMAINDER_OVERFLOW (a, b)Yield 1 if a % b would overflow, 0 otherwise. See above for
restrictions. Remainder overflow can happen on two’s complement hosts
when dividing the most negative integer by -1; although the
mathematical result is always 0, in practice some implementations
trap, so this counts as an overflow. This macro does not check for
division by zero.
INT_LEFT_SHIFT_OVERFLOW (a, b)Yield 1 if a << b would overflow, 0 otherwise. See above for
restrictions. The C standard says that behavior is undefined for
shifts unless 0≤b<w where w is a’s word
width, and that when a is negative then a <<
b has undefined behavior, but this macro does not check these
other restrictions.
Previous: Integer Type Overflow, Up: Integer Properties [Contents][Index]
These macros yield 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow, and 0 if if the operators do not overflow. They do not rely on undefined or implementation-defined behavior. They are integer constant expressions if their arguments are. Their implementations are simple and straightforward, but they are typically harder to use than the integer type overflow macros. See Integer Type Overflow.
Although the implementation of these macros is similar to that suggested in the SEI CERT C Secure Coding Standard, in its two sections “INT30-C. Ensure that unsigned integer operations do not wrap” and “INT32-C. Ensure that operations on signed integers do not result in overflow”, Gnulib’s implementation was derived independently of CERT’s suggestions.
Example usage:
#include <intprops.h>
#include <limits.h>
#include <stdio.h>
void
print_product (long int a, long int b)
{
if (INT_MULTIPLY_RANGE_OVERFLOW (a, b, LONG_MIN, LONG_MAX))
printf ("multiply would overflow");
else
printf ("product is %ld", a * b);
}
/* Does the product of two ints always fit
in a long int? */
enum {
INT_PRODUCTS_FIT_IN_LONG
= ! (INT_MULTIPLY_RANGE_OVERFLOW
((long int) INT_MIN, (long int) INT_MIN,
LONG_MIN, LONG_MAX))
};
These macros have the following restrictions:
(unsigned int) 0.
These macros are tuned for constant min and max. For
commutative operations such as a + b, they are also
tuned for constant b.
INT_ADD_RANGE_OVERFLOW (a, b, min, max)Yield 1 if a + b would overflow in
[min,max] integer arithmetic, 0 otherwise.
See above for restrictions.
INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max)Yield 1 if a - b would overflow in
[min,max] integer arithmetic, 0 otherwise.
See above for restrictions.
INT_NEGATE_RANGE_OVERFLOW (a, min, max)Yield 1 if -a would overflow in [min,max]
integer arithmetic, 0 otherwise. See above for restrictions.
INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)Yield 1 if a * b would overflow in
[min,max] integer arithmetic, 0 otherwise.
See above for restrictions.
INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max)Yield 1 if a / b would overflow in
[min,max] integer arithmetic, 0 otherwise.
See above for restrictions.
Division overflow can happen on two’s complement hosts when dividing
the most negative integer by -1. This macro does not check for
division by zero.
INT_REMAINDER_RANGE_OVERFLOW (a, b, min, max)Yield 1 if a % b would overflow in
[min,max] integer arithmetic, 0 otherwise.
See above for restrictions.
Remainder overflow can happen on two’s complement hosts when dividing
the most negative integer by -1; although the mathematical
result is always 0, in practice some implementations trap, so this
counts as an overflow. This macro does not check for division by
zero.
INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, min, max)Yield 1 if a << b would overflow in
[min,max] integer arithmetic, 0 otherwise.
See above for restrictions.
Here, min and max are for a only, and b need
not be of the same type as the other arguments. The C standard says
that behavior is undefined for shifts unless 0≤b<w
where w is a’s word width, and that when a is negative
then a << b has undefined behavior, but this macro
does not check these other restrictions.
Next: extern inline, Previous: Integer Properties, Up: Particular Modules [Contents][Index]
In order to mark functions as static inline in .c files,
the only prerequisite you need is an AC_REQUIRE([AC_C_INLINE]).
No Gnulib module is needed.
When marking functions as static inline in .h files,
on the other hand,
it is useful to avoid the following problem:
When gcc or clang is not optimizing, it generates the same object code
for every static inline function
that is actually used in the current compilation unit,
thus bloating the size of the resulting binary.
(Code of static inline functions
that are unused in the current compilation unit gets dropped;
that is not an issue.)
To avoid this problem, use the Gnulib module ‘inline’
and make the static inline function definition conditional
on the value of the C macro HAVE_INLINE.
Next: Closed standard fds, Previous: static inline, Up: Particular Modules [Contents][Index]
The extern-inline module supports the use of C99-style
extern inline functions so that the code still runs on
compilers that do not support this feature correctly.
C code ordinarily should not use inline. Typically it is
better to let the compiler figure out whether to inline, as compilers
are pretty good about optimization nowadays. In this sense,
inline is like register, another keyword that is
typically no longer needed.
Functions defined (not merely declared) in headers are an exception,
as avoiding inline would commonly cause problems for these
functions. Suppose aaa.h defines the function aaa_fun,
and aaa.c, bbb.c and ccc.c all include
aaa.h. If code is intended to portable to non-C99 compilers,
aaa_fun cannot be declared with the C99 inline keyword.
This problem cannot be worked around by making aaa_fun an
ordinary function, as it would be defined three times with external
linkage and the definitions would clash. Although aaa_fun
could be a static function, with separate compilation if
aaa_fun is not inlined its code will appear in the executable
three times.
To avoid this code bloat, aaa.h can do this:
/* aaa.h */
/* #include any other headers here */
#ifndef _GL_INLINE_HEADER_BEGIN
#error "Please include config.h first."
#endif
_GL_INLINE_HEADER_BEGIN
#ifndef AAA_INLINE
# define AAA_INLINE _GL_INLINE
#endif
...
AAA_INLINE int
aaa_fun (int i)
{
return i + 1;
}
...
_GL_INLINE_HEADER_END
and aaa.c can do this:
/* aaa.c */ #define AAA_INLINE _GL_EXTERN_INLINE #include <config.h> #include <aaa.h>
whereas bbb.c and ccc.c can include aaa.h in the
usual way. C99 compilers expand AAA_INLINE to C99-style
inline usage, where aaa_fun is declared extern
inline in aaa.c and plain inline in other modules.
Non-C99 compilers that are compatible with GCC use GCC-specific syntax
to accomplish the same ends. Other non-C99 compilers use static
inline so they suffer from code bloat, but they are not mainline
platforms and will die out eventually.
In this coding idiom,
the compilation unit should define AAA_INLINE before
including the aaa.h header that conditionally defines it.
In the unusual and not-recommended case where config.h
itself includes aaa.h, the compilation unit should
define AAA_INLINE before including config.h,
not merely before including aaa.h. Also,
you need one AAA_INLINE-like macro per compilation unit,
not one per header file.
In other words, if the header file aaa.h defines functions
defined in aaa-foo.c and aaa-bar.c,
you need different macros AAA_FOO_INLINE and AAA_BAR_INLINE.
Use AAA_FOO_INLINE for the functions defined in aaa-foo.c,
and use AAA_BAR_INLINE for the functions defined in aaa-bar.c.
Functions defined in this way should not refer to identifiers with static linkage, as C99 through C23 prohibit this. Although a future C standard will likely relax this restriction, it is still an issue on many practical platforms.
_GL_INLINE is a portable alternative to C99 plain inline.
_GL_EXTERN_INLINE is a portable alternative to C99 extern inline.
Invoke _GL_INLINE_HEADER_BEGIN before all uses of
_GL_INLINE in an include file. This suppresses some
bogus warnings in GCC versions before 5.1. If an include file includes
other files, it is better to invoke this macro after including the
other files.
Invoke _GL_INLINE_HEADER_END after all uses of
_GL_INLINE in an include file.
Next: Handling strings with NUL characters, Previous: extern inline, Up: Particular Modules [Contents][Index]
Usually, when a program gets invoked, its file descriptors 0 (for standard input), 1 (for standard output), and 2 (for standard error) are open. But there are situations when some of these file descriptors are closed. These situations can arise when
close() on the file descriptor before
exec, or
posix_spawn_file_actions_addclose() for
the file descriptor before posix_spawn or posix_spawnp, or
<&- for closing standard input,
>&- for closing standard output, or
2>&- for closing standard error.
When a closed file descriptor is accessed through a system call, such as
fcntl(), fstat(), read(), or write(), the
system calls fails with error EBADF ("Bad file descriptor").
When a new file descriptor is allocated, the operating system chooses the smallest non-negative integer that does not yet correspond to an open file descriptor. So, when a given fd (0, 1, or 2) is closed, opening a new file descriptor may assign the new file descriptor to this fd. This can have unintended effects, because now standard input/output/error of your process is referring to a file that was not meant to be used in that role.
This situation is a security risk because the behaviour of the program in this situation was surely never tested, therefore anything can happen then – from overwriting precious files of the user to endless loops.
To deal with this situation, you first need to determine whether your program is affected by the problem.
open(), openat(), creat()
dup()
fopen(), freopen()
pipe(), pipe2(), popen()
opendir()
tmpfile(), mkstemp(), mkstemps(), mkostemp(),
mkostemps()
Note that you also have to consider the libraries that your program uses.
O_RDONLY
mode will produce an error EBADF, as desired.
If your program is affected, what is the mitigation?
Some operating systems install open file descriptors in place of the
closed ones, either in the exec system call or during program
startup. When such a file descriptor is accessed through a system call,
it behaves like an open file descriptor opened for the “wrong” direction:
the system calls fcntl() and fstat() succeed, whereas
read() from fd 0 and write() to fd 1 or 2 fail with error
EBADF ("Bad file descriptor"). The important point here is that
when your program allocates a new file descriptor, it will have a value
greater than 2.
This mitigation is enabled on HP-UX, for all programs, and on glibc, FreeBSD, NetBSD, OpenBSD, but only for setuid or setgid programs. Since it is operating system dependent, it is not a complete mitigation.
For a complete mitigation, Gnulib provides two alternative sets of modules:
xstdopen module.
*-safer modules:
fcntl-safer,
openat-safer,
unistd-safer,
fopen-safer,
freopen-safer,
pipe2-safer,
popen-safer,
dirent-safer,
tmpfile-safer,
stdlib-safer.
The approach with the xstdopen module is simple, but it adds three
system calls to program startup. Whereas the approach with the *-safer
modules is more complicated and error-prone,
and does not fix the problem if system library functions call one
of the affected functions,
but adds no overhead (no additional system calls)
in the normal case.
To use the approach with the xstdopen module:
xstdopen from Gnulib.
main function, include
"xstdopen.h".
main function, near the beginning, namely right after
the i18n related initializations (setlocale, bindtextdomain,
textdomain invocations, if any) and
the closeout initialization (if any), insert the invocation:
/* Ensure that stdin, stdout, stderr are open. */ xstdopen ();
To use the approach with the *-safer modules:
Do so according to this table:
| Function | Module | Header file |
|---|---|---|
open() | fcntl-safer | "fcntl--.h" |
openat() | openat-safer | "fcntl--.h" |
creat() | fcntl-safer | "fcntl--.h" |
dup() | unistd-safer | "unistd--.h" |
fopen() | fopen-safer | "stdio--.h" |
freopen() | freopen-safer | "stdio--.h" |
pipe() | unistd-safer | "unistd--.h" |
pipe2() | pipe2-safer | "unistd--.h" |
popen() | popen-safer | "stdio--.h" |
opendir() | dirent-safer | "dirent--.h" |
tmpfile() | tmpfile-safer | "stdio--.h" |
mkstemp() | stdlib-safer | "stdlib--.h" |
mkstemps() | stdlib-safer | "stdlib--.h" |
mkostemp() | stdlib-safer | "stdlib--.h" |
mkostemps() | stdlib-safer | "stdlib--.h" |
Next: Container data types, Previous: Closed standard fds, Up: Particular Modules [Contents][Index]
Strings in C are usually represented by a character sequence with a terminating NUL character. A ‘char *’, pointer to the first byte of this character sequence, is what gets passed around as function argument or return value.
The major restriction of this string representation is that it cannot
handle strings that contain NUL characters: such strings will appear
shorter than they were meant to be. In most application areas, this is
not a problem, and the char * type is well usable.
A second problem of this string representation is that taking a substring is not cheap: it either requires a memory allocation or a destructive modification of the string. The former has a runtime cost; the latter complicates the logic of the program. This matters for application areas that analyze text, such as parsers.
In areas where strings with embedded NUL characters need to be handled
or where taking substrings is a recurrent operation,
the common approach is to use a char *ptr pointer variable
together with a size_t nbytes variable (or an idx_t nbytes
variable, if you want to avoid problems due to integer overflow). This
works fine in code that constructs or manipulates strings with embedded
NUL characters. But when it comes to storing them, for example
in an array or as key or value of a hash table, one needs a type that
combines these two fields.
The Gnulib modules string-desc, xstring-desc, and
string-desc-quotearg provide such a type. We call it a
“string descriptor” and name it string_desc_t.
The type string_desc_t is a struct that contains a pointer to the
first byte and the number of bytes of the memory region that make up the
string. An additional terminating NUL byte, that may be present in
memory, is not included in this byte count. This type implements the
same concept as std::string_view in C++, or the String
type in Java.
string_desc_t is a string descriptor to a string that cannot
be written to. There is also a type rw_string_desc_t, that is
a descriptor for a writable string.
rw_string_desc_t compares to string_desc_t, like the
pointer type ‘char *’ compares to the pointer type
‘const char *’.
A string_desc_t or rw_string_desc_t
can be passed to a function as an argument, or
can be the return value of a function. This is type-safe: If, by
mistake, a programmer passes a string_desc_t to a function that
expects a char * argument, or vice versa, or assigns a
string_desc_t value to a variable of type char *, or
vice versa, the compiler will report an error.
Unfortunately, string_desc_t and rw_string_desc_t
being different types, there is no implicit conversion from
rw_string_desc_t to string_desc_t. In places
where such a conversion is desired, the (inline) function
sd_readonly needs to be called.
Functions related to string descriptors are provided:
"string-desc.h",
"string-desc.h",
"xstring-desc.h",
"string-desc.h".
For outputting a string descriptor, the *printf family of
functions cannot be used directly. A format string directive such as
"%.*s" would not work:
int, and thus
would not work for strings longer than INT_MAX bytes.
Therefore Gnulib offers
sd_fwrite that outputs a string descriptor to
a FILE stream,
sd_write that outputs a string descriptor to
a file descriptor,
quotearg based functions, that
allow to specify the escaping rules in detail.
The functionality is thus split across three modules as follows:
string-desc, under LGPL, defines the type and
elementary functions.
xstring-desc, under GPL, defines the memory-allocating
functions with out-of-memory checking.
string-desc-quotearg, under GPL, defines the
quotearg based functions.
Next: Modernized printf, Previous: Handling strings with NUL characters, Up: Particular Modules [Contents][Index]
Gnulib provides several generic container data types. They can be used to organize collections of application-defined objects.
| • Ordinary container data types | ||
| • Specialized container data types |
Next: Specialized containers, Up: Container data types [Contents][Index]
| Data type | Details | Module | Main include file | Include file for operations with out-of-memory checking |
|---|---|---|---|---|
| Sequential list | Can contain any number of objects in any given order. Duplicates are allowed, but can optionally be forbidden. | list | "gl_list.h" | "gl_xlist.h" |
| Set | Can contain any number of objects; the order does not matter. Duplicates (in the sense of the comparator) are forbidden. | set | "gl_set.h" | "gl_xset.h" |
| Ordered set | Can contain any number of objects in the order of a given comparator function. Duplicates (in the sense of the comparator) are forbidden. | oset | "gl_oset.h" | "gl_xoset.h" |
| Map | Can contain any number of (key, value) pairs, where keys and values are objects; there are no (key, value1) and (key, value2) pairs with the same key (in the sense of a given comparator function). | map | "gl_map.h" | "gl_xmap.h" |
| Ordered map | Can contain any number of (key, value) pairs, where keys and values are objects; the (key, value) pairs are ordered by the key, in the order of a given comparator function; there are no (key, value1) and (key, value2) pairs with the same key (in the sense of the comparator function). | omap | "gl_omap.h" | "gl_xomap.h" |
Operations without out-of-memory checking (suitable for use in libraries) are declared in the “main include file”. Whereas operations with out-of-memory checking (suitable only in programs) are declared in the “include file for operations with out-of-memory checking”.
For each of the data types, several implementations are available, with
different performance profiles with respect to the available operations.
This enables you to start with the simplest implementation (ARRAY) initially,
and switch to a more suitable implementation after profiling your application.
The implementation of each container instance is specified in a single place
only: in the invocation of the function gl_*_create_empty that creates
the instance.
The implementations and the guaranteed average performance for the operations for the “sequential list” data type are:
| Operation | ARRAY | CARRAY | LINKED | TREE | LINKEDHASH with duplicates | LINKEDHASH without duplicates | TREEHASH with duplicates | TREEHASH without duplicates |
|---|---|---|---|---|---|---|---|---|
gl_list_size | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) |
gl_list_node_value | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) |
gl_list_node_set_value | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O((log n)2) | O(1) |
gl_list_next_node | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O(log n) | O(log n) |
gl_list_previous_node | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O(log n) | O(log n) |
gl_list_first_node | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O(log n) | O(log n) |
gl_list_last_node | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O(log n) | O(log n) |
gl_list_get_at | O(1) | O(1) | O(n) | O(log n) | O(n) | O(n) | O(log n) | O(log n) |
gl_list_get_first | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O(log n) | O(log n) |
gl_list_get_last | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O(log n) | O(log n) |
gl_list_set_at | O(1) | O(1) | O(n) | O(log n) | O(n) | O(n) | O((log n)2) | O(log n) |
gl_list_set_first | O(1) | O(1) | O(1) | O(log n) | O(n) | O(1) | O((log n)2) | O(log n) |
gl_list_set_last | O(1) | O(1) | O(1) | O(log n) | O(n) | O(1) | O((log n)2) | O(log n) |
gl_list_search | O(n) | O(n) | O(n) | O(n) | O(n) | O(1) | O(log n) | O(1) |
gl_list_search_from | O(n) | O(n) | O(n) | O(n) | O(n) | O(1) | O((log n)2) | O(log n) |
gl_list_search_from_to | O(n) | O(n) | O(n) | O(n) | O(n) | O(1) | O((log n)2) | O(log n) |
gl_list_indexof | O(n) | O(n) | O(n) | O(n) | O(n) | O(n) | O(log n) | O(log n) |
gl_list_indexof_from | O(n) | O(n) | O(n) | O(n) | O(n) | O(n) | O((log n)2) | O(log n) |
gl_list_indexof_from_to | O(n) | O(n) | O(n) | O(n) | O(n) | O(n) | O((log n)2) | O(log n) |
gl_list_add_first | O(n) | O(1) | O(1) | O(log n) | O(1) | O(1) | O((log n)2) | O(log n) |
gl_list_add_last | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O((log n)2) | O(log n) |
gl_list_add_before | O(n) | O(n) | O(1) | O(log n) | O(1) | O(1) | O((log n)2) | O(log n) |
gl_list_add_after | O(n) | O(n) | O(1) | O(log n) | O(1) | O(1) | O((log n)2) | O(log n) |
gl_list_add_at | O(n) | O(n) | O(n) | O(log n) | O(n) | O(n) | O((log n)2) | O(log n) |
gl_list_remove_node | O(n) | O(n) | O(1) | O(log n) | O(n) | O(1) | O((log n)2) | O(log n) |
gl_list_remove_at | O(n) | O(n) | O(n) | O(log n) | O(n) | O(n) | O((log n)2) | O(log n) |
gl_list_remove_first | O(n) | O(1) | O(1) | O(log n) | O(n) | O(1) | O((log n)2) | O(log n) |
gl_list_remove_last | O(1) | O(1) | O(1) | O(log n) | O(n) | O(1) | O((log n)2) | O(log n) |
gl_list_remove | O(n) | O(n) | O(n) | O(n) | O(n) | O(1) | O((log n)2) | O(log n) |
gl_list_iterator | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O(log n) | O(log n) |
gl_list_iterator_from_to | O(1) | O(1) | O(n) | O(log n) | O(n) | O(n) | O(log n) | O(log n) |
gl_list_iterator_next | O(1) | O(1) | O(1) | O(log n) | O(1) | O(1) | O(log n) | O(log n) |
gl_sortedlist_search | O(log n) | O(log n) | O(n) | O(log n) | O(n) | O(n) | O(log n) | O(log n) |
gl_sortedlist_search_from | O(log n) | O(log n) | O(n) | O(log n) | O(n) | O(n) | O(log n) | O(log n) |
gl_sortedlist_indexof | O(log n) | O(log n) | O(n) | O(log n) | O(n) | O(n) | O(log n) | O(log n) |
gl_sortedlist_indexof_from | O(log n) | O(log n) | O(n) | O(log n) | O(n) | O(n) | O(log n) | O(log n) |
gl_sortedlist_add | O(n) | O(n) | O(n) | O(log n) | O(n) | O(n) | O((log n)2) | O(log n) |
gl_sortedlist_remove | O(n) | O(n) | O(n) | O(log n) | O(n) | O(n) | O((log n)2) | O(log n) |
The Gnulib modules for sequential lists are:
| Implementation | Modules |
|---|---|
| Abstract | list, xlist |
| ARRAY | array-list |
| CARRAY | carray-list |
| LINKED | linked-list |
| TREE | avltree-list, rbtree-list |
| LINKEDHASH | linkedhash-list |
| TREEHASH | avltreehash-list, rbtreehash-list |
| Portion of a list | sublist, xsublist |
The implementations and the guaranteed average performance for the operations for the “set” data type are:
| Operation | ARRAY | LINKEDHASH, HASH |
|---|---|---|
gl_set_size | O(1) | O(1) |
gl_set_add | O(n) | O(1) |
gl_set_remove | O(n) | O(1) |
gl_set_search | O(n) | O(1) |
gl_set_iterator | O(1) | O(1) |
gl_set_iterator_next | O(1) | O(1) |
The Gnulib modules for sets are:
| Implementation | Modules |
|---|---|
| Abstract | set, xset |
| ARRAY | array-set |
| LINKEDHASH | linkedhash-set |
| HASH | hash-set |
The implementations and the guaranteed average performance for the operations for the “ordered set” data type are:
| Operation | ARRAY | TREE |
|---|---|---|
gl_oset_size | O(1) | O(1) |
gl_oset_add | O(n) | O(log n) |
gl_oset_remove | O(n) | O(log n) |
gl_oset_search | O(log n) | O(log n) |
gl_oset_search_atleast | O(log n) | O(log n) |
gl_oset_iterator | O(1) | O(log n) |
gl_oset_iterator_next | O(1) | O(log n) |
The Gnulib modules for ordered sets are:
| Implementation | Modules |
|---|---|
| Abstract | oset, xoset |
| ARRAY | array-oset |
| TREE | avltree-oset, rbtree-oset |
The implementations and the guaranteed average performance for the operations for the “map” data type are:
| Operation | ARRAY | LINKEDHASH, HASH |
|---|---|---|
gl_map_size | O(1) | O(1) |
gl_map_get | O(n) | O(1) |
gl_map_put | O(n) | O(1) |
gl_map_remove | O(n) | O(1) |
gl_map_search | O(n) | O(1) |
gl_map_iterator | O(1) | O(1) |
gl_map_iterator_next | O(1) | O(1) |
The Gnulib modules for maps are:
| Implementation | Modules |
|---|---|
| Abstract | map, xmap |
| ARRAY | array-map |
| LINKEDHASH | linkedhash-map |
| HASH | hash-map |
The implementations and the guaranteed average performance for the operations for the “ordered map” data type are:
| Operation | ARRAY | TREE |
|---|---|---|
gl_omap_size | O(1) | O(1) |
gl_omap_get | O(log n) | O(log n) |
gl_omap_put | O(n) | O(log n) |
gl_omap_remove | O(n) | O(log n) |
gl_omap_search | O(log n) | O(log n) |
gl_omap_search_atleast | O(log n) | O(log n) |
gl_omap_iterator | O(1) | O(log n) |
gl_omap_iterator_next | O(1) | O(log n) |
The Gnulib modules for ordered maps are:
| Implementation | Modules |
|---|---|
| Abstract | omap, xomap |
| ARRAY | array-omap |
| TREE | avltree-omap, rbtree-omap |
For C++, Gnulib provides a C++ template class for each of these container data types.
| Data type | C++ class | Module | Include file |
|---|---|---|---|
| Sequential list | gl_List | list-c++ | "gl_list.hh" |
| Set | gl_Set | set-c++ | "gl_set.hh" |
| Ordered set | gl_OSet | oset-c++ | "gl_oset.hh" |
| Map | gl_Map | map-c++ | "gl_map.hh" |
| Ordered map | gl_OMap | omap-c++ | "gl_omap.hh" |
Previous: Ordinary containers, Up: Container data types [Contents][Index]
The hamt module implements the hash array mapped trie (HAMT) data
structure. This is a data structure that contains (key, value) pairs.
Lookup of a (key, value) pair given the key is on average an O(1)
operation, assuming a good hash function for the keys is employed.
The HAMT data structure is useful when you want modifications (additions of pairs, removal, value changes) to be visible only to some part of your program, whereas other parts of the program continue to use the unmodified HAMT. The HAMT makes this possible in a space-efficient manner: the modified and the unmodified HAMT share most of their allocated memory. It is also time-efficient: Every such modification is O(1) on average, again assuming a good hash function for the keys.
A HAMT can be used whenever an ordinary hash table would be used. It does however, provide non-destructive updating operations without the need to copy the whole container. On the other hand, a hash table is simpler so that its performance may be better when non-destructive update operations are not needed.
For example, a HAMT can be used to model the dynamic environment in a LISP interpreter. Updating a value in the dynamic environment of one continuation frame would not modify values in earlier frames.
To use the module, include hamt.h in your code. The public
interface is documented in that header file. You have to provide a hash
function and an equivalence relation, which defines key equality. The
module includes a test file test-hamt.c, which demonstrates how
the API can be used.
In the current implementation, each inner node of the HAMT can store up to 32 = 2^5 entries and subtries. Whenever a collision between the initial bits of the hash values of two entries would happen, the next 5 bits of the hash values are examined and the two entries pushed down one level in the trie.
HAMTs have the same average access times as hash tables but grow and shrink dynamically, so they use memory more economically and do not have to be periodically resized.
They were described and analyzed in Phil Bagwell (2000). Ideal Hash Trees (Report). Infoscience Department, École Polytechnique Fédérale de Lausanne.
The persistence aspect of the HAMT data structure, which means that each updating operation (like inserting, replacing, or removing an entry) returns a new HAMT while leaving the original one intact, is achieved through structure sharing, which is even safe in the presence of multiple threads when the used C compiler supports atomics.
Next: Advanced stdio functions, Previous: Container data types, Up: Particular Modules [Contents][Index]
The *zprintf family of functions is
a modernized form of the *printf family of functions.
The *printf functions have a return type ‘int’
and therefore can only produce results that are up to (2 GiB - 1 byte) long.
The problem with this is not so much that it is an arbitrary limitation
(that persists even in processes that have, say, 50 GiB of RAM available).
The bigger problem is that in reliable programs,
it requires handling of an error code EOVERFLOW
that indicates a result whose size would be 2 GiB or larger.
How does a reliable program do error handling of *printf function calls?
For output to strings and file descriptors
(such as sprintf and dprintf),
there is no other way than to check each such call.
For output to FILE streams (such as fprintf),
beginners are tempted to ignore the return value of each call
and instead check ferror (stream) at the end.
The problem with this approach is that
at the moment the error is detected,
incorrect output has already been sent onto the stream.
So, in this case as well, the reliable approach is to check each such call.
The simple format strings that most programs use in 99% of the places,
namely with no wide string or wide character arguments,
nor with widths passed as int argument,
can only fail with two possible error codes:
ENOMEM, when
the result would be too large to allocate in the process’ memory.
EOVERFLOW, when
the result is 2 GiB or larger but still allocatable.
Many GNU programs use “checking” wrappers (functions xvasprintf, etc.)
that check for ENOMEM and call xalloc_die,
thus aborting the program in that case.
The problem is that EOVERFLOW is not handled, even with such wrappers.
Should EOVERFLOW be handled like ENOMEM, by aborting the program?
No, as mentioned above, that would be an arbitrary limitation, which the
GNU Coding Standards
urge us to avoid.
The *zprintf functions are like the *printf functions,
except that the return type is
ptrdiff_t instead of int,
for output to strings,
off64_t (which is always equivalent to int64_t)
instead of int,
for output to file streams and file descriptors.
Thus, for these functions, EOVERFLOW cannot occur
(except for format strings which take widths as argument,
which we have excluded above),
and the “checking” wrappers (functions xvasprintf, etc.)
are thus sufficient for ensuring an error-free result.
Note:
In 64-bit processes, ptrdiff_t is 64 bits wide,
i.e. equivalent to int64_t.
In 32-bit processes, ptrdiff_t is only 32 bits wide,
but since in these environments,
memory regions of 2 GiB or larger cannot be allocated anyway
(malloc would fail with ENOMEM),
this type is sufficient.
The following Gnulib functions and modules exist:
| Original function | Modernized function | Modules |
|---|---|---|
sprintf | szprintf | szprintf, szprintf-posix, szprintf-gnu |
vsprintf | vszprintf | vszprintf, vszprintf-posix, vszprintf-gnu |
snprintf | snzprintf | snzprintf, snzprintf-posix, snzprintf-gnu |
vsnprintf | vsnzprintf | vsnzprintf, vsnzprintf-posix, vsnzprintf-gnu |
asprintf | aszprintf | vaszprintf, vaszprintf-posix, vaszprintf-gnu |
vasprintf | vaszprintf | vaszprintf, vaszprintf-posix, vaszprintf-gnu |
c_snprintf | c_snzprintf | c-snzprintf, c-snzprintf-gnu |
c_vsnprintf | c_vsnzprintf | c-vsnzprintf, c-vsnzprintf-gnu |
c_asprintf | c_aszprintf | c-vaszprintf, c-vaszprintf-gnu |
c_vasprintf | c_vaszprintf | c-vaszprintf, c-vaszprintf-gnu |
fprintf | fzprintf | fzprintf, fzprintf-posix, fzprintf-gnu |
vfprintf | vfzprintf | vfzprintf, vfzprintf-posix, vfzprintf-gnu |
printf | zprintf | zprintf, zprintf-posix, zprintf-gnu |
vprintf | vzprintf | vzprintf, vzprintf-posix, vzprintf-gnu |
dprintf | dzprintf | dzprintf, dzprintf-posix, dzprintf-gnu |
vdprintf | vdzprintf | vdzprintf, vdzprintf-posix, vdzprintf-gnu |
obstack_printf | obstack_zprintf | obstack-zprintf,
obstack-zprintf-posix, obstack-zprintf-gnu |
obstack_vprintf | obstack_vzprintf | obstack-zprintf,
obstack-zprintf-posix, obstack-zprintf-gnu |
The following functions use the *zprintf functions under the hood
and thus don’t need a *zprintf variant:
| Function | Modules |
|---|---|
xasprintf | xvasprintf, xvasprintf-posix, xvasprintf-gnu |
xvasprintf | xvasprintf, xvasprintf-posix, xvasprintf-gnu |
c_xasprintf | c-xvasprintf |
c_xvasprintf | c-xvasprintf |
xprintf | xprintf, xprintf-posix, xprintf-gnu |
xvprintf | xprintf, xprintf-posix, xprintf-gnu |
xfprintf | xprintf, xprintf-posix, xprintf-gnu |
xvfprintf | xprintf, xprintf-posix, xprintf-gnu |
Note: Even with the *zprintf functions,
you need to be prepared to handle specific error codes
when you use non-simple format strings:
EILSEQ when
the format string takes wide strings or wide characters as arguments,
EOVERFLOW when
the format string takes a width as argument
and you cannot ensure that its value is in the range 0...INT_MAX.
Next: libunistring, Previous: Modernized printf, Up: Particular Modules [Contents][Index]
Gnulib provides a few functions that operate on FILE * streams
and that go beyond what ISO C and POSIX specify.
Each such function is provided in a Gnulib module of the same name.
When Gnulib implemented them in 2007, some people considered them
“unportable”, because they required digging in undocumented internals
of the FILE structure.
But Gnulib made them portable, by providing implementations for all
platforms, from glibc to native Windows, and from Minix to QNX.
Nowadays, new platforms already implement them in their libc;
this has been seen for the Android libc and musl libc.
The stream argument of these functions must not be wide-character oriented.
But this is not an actual restriction, since
no programs use wide-character orientation on FILE streams anyway:
no one uses the fwide function.
Next: Error in a stream, Up: Advanced stdio functions [Contents][Index]
Gnulib modules: freadable, fwritable, freading, fwriting
The freadable function returns
true if the given stream supports reading,
false if it supports only writing,
i.e. if it was opened write-only or append-only.
The fwritable function returns
true if the given stream supports writing,
false if it supports only reading.
The freading function returns
true if the given stream is opened read-only,
or if the last operation on the stream was a read operation.
The fwriting function returns
true if the given stream is opened write-only or append-only,
or if the last operation on the stream was a write operation.
freading and fwriting will never both be true
on the same stream at the same time.
If the stream supports both reads and writes, then
freading and fwriting might be false
when the stream is first opened, after read encounters EOF,
or after fflush,
freading might be false or true and fwriting might be false
after repositioning (such as fseek, fsetpos, or rewind),
depending on the underlying implementation.
Next: Dropping the buffer contents, Previous: State of a stream, Up: Advanced stdio functions [Contents][Index]
A FILE * stream has an error indicator, that can be
tested through the ferror function and
cleared through the clearerr function.
The error indicator is set when an I/O operation on the stream fails.
But ISO C and POSIX don’t provide a way to set the error indicator!
The fseterr function sets the error indicator in the given stream.
Next: Accessing the write buffer, Previous: Error in a stream, Up: Advanced stdio functions [Contents][Index]
The fpurge function drops
the contents of the input and output buffers of the given FILE * stream:
fflush function does.
fflush function does.
Next: Accessing the read buffer, Previous: Dropping the buffer contents, Up: Advanced stdio functions [Contents][Index]
The following two functions provide information about the output buffer
of a FILE * stream.
The fpending function returns
the number of pending (a.k.a. buffered, unflushed) bytes in the given stream.
The fbufmode function returns the buffering mode of the given stream:
| Result | means |
|---|---|
_IONBF | unbuffered |
_IOLBF | line buffered |
_IOFBF | fully buffered |
Note that on some platforms,
it is impossible to distinguish _IOFBF and _IOLBF.
Previous: Accessing the write buffer, Up: Advanced stdio functions [Contents][Index]
The following functions allow code to scan the contents of the input buffer
of a FILE * stream, without first copying it into a separate memory
area via fread.
The function freadahead returns
the number of bytes waiting in the input buffer of the given stream.
This includes both
the bytes that have been read from the underlying input source
and the bytes that have been pushed back through ungetc.
A function call freadptr (stream, &size) returns
a pointer to the input buffer of the given stream, or NULL.
If the returned pointer is non-NULL,
size is set to the (positive) size of the input buffer.
If the returned pointer is NULL, you should use
getc (stream),
fgetc (stream),
or fread (..., stream)
to access the input from stream.
A function call freadseek (stream, offset)
is the same as fseek (stream, offset, SEEK_CUR),
except that the latter does not work
on non-seekable input streams (such as pipes).
Next: Stack traces, Previous: Advanced stdio functions, Up: Particular Modules [Contents][Index]
GNU libunistring provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard.
It consists of the following parts:
<unistr.h> | elementary string functions |
<uniconv.h> | conversion from/to legacy encodings |
<unistdio.h> | formatted output to strings |
<uniname.h> | character names |
<unictype.h> | character classification and properties |
<uniwidth.h> | string width when using nonproportional fonts |
<unigbrk.h> | grapheme cluster breaks |
<uniwbrk.h> | word breaks |
<unilbrk.h> | line breaking algorithm |
<uninorm.h> | normalization (composition and decomposition) |
<unicase.h> | case folding |
Nearly all of the source code of GNU libunistring resides in Gnulib.
| • How to use libunistring | ||
| • The libunistring modules |
Next: The libunistring modules, Up: libunistring [Contents][Index]
There are three ways to use GNU libunistring:
libunistring.
configure option --with-included-libunistring,
the included modules will be used
and the package will not link against an installed libunistring.
Otherwise, the package will link against an installed libunistring if found,
and only those modules will be built
that are not contained or that are too old in the found libunistring.
To achieve this, request from Gnulib the specific modules
and the Gnulib module libunistring-optional.
Previous: How to use libunistring, Up: libunistring [Contents][Index]
Every function or variable that is part of the GNU libunistring API is available through a specific Gnulib module. For the documentation, refer to the GNU libunistring documentation.
Next: <unistr.h> modules, Up: The libunistring modules [Contents][Index]
The <unitypes.h> header file is provided by the module unitypes-h.
Next: <uniconv.h> modules, Previous: <unitypes.h> modules, Up: The libunistring modules [Contents][Index]
| Function | Module |
|---|---|
u8_check | unistr/u8-check |
u16_check | unistr/u16-check |
u32_check | unistr/u32-check |
u8_to_u16 | unistr/u8-to-u16 |
u8_to_u32 | unistr/u8-to-u32 |
u16_to_u8 | unistr/u16-to-u8 |
u16_to_u32 | unistr/u16-to-u32 |
u32_to_u8 | unistr/u32-to-u8 |
u32_to_u16 | unistr/u32-to-u16 |
u8_mblen | unistr/u8-mblen |
u16_mblen | unistr/u16-mblen |
u32_mblen | unistr/u32-mblen |
u8_mbtouc | unistr/u8-mbtouc |
u16_mbtouc | unistr/u16-mbtouc |
u32_mbtouc | unistr/u32-mbtouc |
u8_mbtouc_unsafe | unistr/u8-mbtouc-unsafe |
u16_mbtouc_unsafe | unistr/u16-mbtouc-unsafe |
u32_mbtouc_unsafe | unistr/u32-mbtouc-unsafe |
u8_mbtoucr | unistr/u8-mbtoucr |
u16_mbtoucr | unistr/u16-mbtoucr |
u32_mbtoucr | unistr/u32-mbtoucr |
u8_uctomb | unistr/u8-uctomb |
u16_uctomb | unistr/u16-uctomb |
u32_uctomb | unistr/u32-uctomb |
u8_cpy | unistr/u8-cpy |
u16_cpy | unistr/u16-cpy |
u32_cpy | unistr/u32-cpy |
u8_pcpy | unistr/u8-pcpy |
u16_pcpy | unistr/u16-pcpy |
u32_pcpy | unistr/u32-pcpy |
u8_move | unistr/u8-move |
u16_move | unistr/u16-move |
u32_move | unistr/u32-move |
u8_set | unistr/u8-set |
u16_set | unistr/u16-set |
u32_set | unistr/u32-set |
u8_cmp | unistr/u8-cmp |
u16_cmp | unistr/u16-cmp |
u32_cmp | unistr/u32-cmp |
u8_cmp2 | unistr/u8-cmp2 |
u16_cmp2 | unistr/u16-cmp2 |
u32_cmp2 | unistr/u32-cmp2 |
u8_chr | unistr/u8-chr |
u16_chr | unistr/u16-chr |
u32_chr | unistr/u32-chr |
u8_mbsnlen | unistr/u8-mbsnlen |
u16_mbsnlen | unistr/u16-mbsnlen |
u32_mbsnlen | unistr/u32-mbsnlen |
u8_cpy_alloc | unistr/u8-cpy-alloc |
u16_cpy_alloc | unistr/u16-cpy-alloc |
u32_cpy_alloc | unistr/u32-cpy-alloc |
u8_strmblen | unistr/u8-strmblen |
u16_strmblen | unistr/u16-strmblen |
u32_strmblen | unistr/u32-strmblen |
u8_strmbtouc | unistr/u8-strmbtouc |
u16_strmbtouc | unistr/u16-strmbtouc |
u32_strmbtouc | unistr/u32-strmbtouc |
u8_next | unistr/u8-next |
u16_next | unistr/u16-next |
u32_next | unistr/u32-next |
u8_prev | unistr/u8-prev |
u16_prev | unistr/u16-prev |
u32_prev | unistr/u32-prev |
u8_strlen | unistr/u8-strlen |
u16_strlen | unistr/u16-strlen |
u32_strlen | unistr/u32-strlen |
u8_strnlen | unistr/u8-strnlen |
u16_strnlen | unistr/u16-strnlen |
u32_strnlen | unistr/u32-strnlen |
u8_strcpy | unistr/u8-strcpy |
u16_strcpy | unistr/u16-strcpy |
u32_strcpy | unistr/u32-strcpy |
u8_stpcpy | unistr/u8-stpcpy |
u16_stpcpy | unistr/u16-stpcpy |
u32_stpcpy | unistr/u32-stpcpy |
u8_strncpy | unistr/u8-strncpy |
u16_strncpy | unistr/u16-strncpy |
u32_strncpy | unistr/u32-strncpy |
u8_stpncpy | unistr/u8-stpncpy |
u16_stpncpy | unistr/u16-stpncpy |
u32_stpncpy | unistr/u32-stpncpy |
u8_strcat | unistr/u8-strcat |
u16_strcat | unistr/u16-strcat |
u32_strcat | unistr/u32-strcat |
u8_strncat | unistr/u8-strncat |
u16_strncat | unistr/u16-strncat |
u32_strncat | unistr/u32-strncat |
u8_strcmp | unistr/u8-strcmp |
u16_strcmp | unistr/u16-strcmp |
u32_strcmp | unistr/u32-strcmp |
u8_strcoll | unistr/u8-strcoll |
u16_strcoll | unistr/u16-strcoll |
u32_strcoll | unistr/u32-strcoll |
u8_strncmp | unistr/u8-strncmp |
u16_strncmp | unistr/u16-strncmp |
u32_strncmp | unistr/u32-strncmp |
u8_strdup | unistr/u8-strdup |
u16_strdup | unistr/u16-strdup |
u32_strdup | unistr/u32-strdup |
u8_strchr | unistr/u8-strchr |
u16_strchr | unistr/u16-strchr |
u32_strchr | unistr/u32-strchr |
u8_strrchr | unistr/u8-strrchr |
u16_strrchr | unistr/u16-strrchr |
u32_strrchr | unistr/u32-strrchr |
u8_strcspn | unistr/u8-strcspn |
u16_strcspn | unistr/u16-strcspn |
u32_strcspn | unistr/u32-strcspn |
u8_strspn | unistr/u8-strspn |
u16_strspn | unistr/u16-strspn |
u32_strspn | unistr/u32-strspn |
u8_strpbrk | unistr/u8-strpbrk |
u16_strpbrk | unistr/u16-strpbrk |
u32_strpbrk | unistr/u32-strpbrk |
u8_strstr | unistr/u8-strstr |
u16_strstr | unistr/u16-strstr |
u32_strstr | unistr/u32-strstr |
u8_startswith | unistr/u8-startswith |
u16_startswith | unistr/u16-startswith |
u32_startswith | unistr/u32-startswith |
u8_endswith | unistr/u8-endswith |
u16_endswith | unistr/u16-endswith |
u32_endswith | unistr/u32-endswith |
u8_strtok | unistr/u8-strtok |
u16_strtok | unistr/u16-strtok |
u32_strtok | unistr/u32-strtok |
Next: <unistdio.h> modules, Previous: <unistr.h> modules, Up: The libunistring modules [Contents][Index]
| Function | Module |
|---|---|
locale_charset | localcharset |
u8_conv_from_encoding | uniconv/u8-conv-from-enc |
u16_conv_from_encoding | uniconv/u16-conv-from-enc |
u32_conv_from_encoding | uniconv/u32-conv-from-enc |
u8_conv_to_encoding | uniconv/u8-conv-to-enc |
u16_conv_to_encoding | uniconv/u16-conv-to-enc |
u32_conv_to_encoding | uniconv/u32-conv-to-enc |
u8_strconv_from_encoding | uniconv/u8-strconv-from-enc |
u16_strconv_from_encoding | uniconv/u16-strconv-from-enc |
u32_strconv_from_encoding | uniconv/u32-strconv-from-enc |
u8_strconv_to_encoding | uniconv/u8-strconv-to-enc |
u16_strconv_to_encoding | uniconv/u16-strconv-to-enc |
u32_strconv_to_encoding | uniconv/u32-strconv-to-enc |
u8_strconv_from_locale | uniconv/u8-strconv-from-locale |
u16_strconv_from_locale | uniconv/u16-strconv-from-locale |
u32_strconv_from_locale | uniconv/u32-strconv-from-locale |
u8_strconv_to_locale | uniconv/u8-strconv-to-locale |
u16_strconv_to_locale | uniconv/u16-strconv-to-locale |
u32_strconv_to_locale | uniconv/u32-strconv-to-locale |
Next: <uniname.h> modules, Previous: <uniconv.h> modules, Up: The libunistring modules [Contents][Index]
| Function | Module |
|---|---|
ulc_sprintf | unistdio/ulc-sprintf |
ulc_snprintf | unistdio/ulc-snprintf |
ulc_asprintf | unistdio/ulc-asprintf |
ulc_asnprintf | unistdio/ulc-asnprintf |
ulc_vsprintf | unistdio/ulc-vsprintf |
ulc_vsnprintf | unistdio/ulc-vsnprintf |
ulc_vasprintf | unistdio/ulc-vasprintf |
ulc_vasnprintf | unistdio/ulc-vasnprintf |
u8_sprintf | unistdio/u8-sprintf |
u8_snprintf | unistdio/u8-snprintf |
u8_asprintf | unistdio/u8-asprintf |
u8_asnprintf | unistdio/u8-asnprintf |
u8_vsprintf | unistdio/u8-vsprintf |
u8_vsnprintf | unistdio/u8-vsnprintf |
u8_vasprintf | unistdio/u8-vasprintf |
u8_vasnprintf | unistdio/u8-vasnprintf |
u8_u8_sprintf | unistdio/u8-u8-sprintf |
u8_u8_snprintf | unistdio/u8-u8-snprintf |
u8_u8_asprintf | unistdio/u8-u8-asprintf |
u8_u8_asnprintf | unistdio/u8-u8-asnprintf |
u8_u8_vsprintf | unistdio/u8-u8-vsprintf |
u8_u8_vsnprintf | unistdio/u8-u8-vsnprintf |
u8_u8_vasprintf | unistdio/u8-u8-vasprintf |
u8_u8_vasnprintf | unistdio/u8-u8-vasnprintf |
u16_sprintf | unistdio/u16-sprintf |
u16_snprintf | unistdio/u16-snprintf |
u16_asprintf | unistdio/u16-asprintf |
u16_asnprintf | unistdio/u16-asnprintf |
u16_vsprintf | unistdio/u16-vsprintf |
u16_vsnprintf | unistdio/u16-vsnprintf |
u16_vasprintf | unistdio/u16-vasprintf |
u16_vasnprintf | unistdio/u16-vasnprintf |
u16_u16_sprintf | unistdio/u16-u16-sprintf |
u16_u16_snprintf | unistdio/u16-u16-snprintf |
u16_u16_asprintf | unistdio/u16-u16-asprintf |
u16_u16_asnprintf | unistdio/u16-u16-asnprintf |
u16_u16_vsprintf | unistdio/u16-u16-vsprintf |
u16_u16_vsnprintf | unistdio/u16-u16-vsnprintf |
u16_u16_vasprintf | unistdio/u16-u16-vasprintf |
u16_u16_vasnprintf | unistdio/u16-u16-vasnprintf |
u32_sprintf | unistdio/u32-sprintf |
u32_snprintf | unistdio/u32-snprintf |
u32_asprintf | unistdio/u32-asprintf |
u32_asnprintf | unistdio/u32-asnprintf |
u32_vsprintf | unistdio/u32-vsprintf |
u32_vsnprintf | unistdio/u32-vsnprintf |
u32_vasprintf | unistdio/u32-vasprintf |
u32_vasnprintf | unistdio/u32-vasnprintf |
u32_u32_sprintf | unistdio/u32-u32-sprintf |
u32_u32_snprintf | unistdio/u32-u32-snprintf |
u32_u32_asprintf | unistdio/u32-u32-asprintf |
u32_u32_asnprintf | unistdio/u32-u32-asnprintf |
u32_u32_vsprintf | unistdio/u32-u32-vsprintf |
u32_u32_vsnprintf | unistdio/u32-u32-vsnprintf |
u32_u32_vasprintf | unistdio/u32-u32-vasprintf |
u32_u32_vasnprintf | unistdio/u32-u32-vasnprintf |
ulc_fprintf | unistdio/ulc-fprintf |
ulc_vfprintf | unistdio/ulc-vfprintf |
Next: <unictype.h> modules, Previous: <unistdio.h> modules, Up: The libunistring modules [Contents][Index]
| Function | Module |
|---|---|
unicode_character_name | uniname/uniname |
unicode_name_character | uniname/uniname |
Next: <uniwidth.h> modules, Previous: <uniname.h> modules, Up: The libunistring modules [Contents][Index]
| Function or constant | Module |
|---|---|
UC_CATEGORY_L | unictype/category-L |
UC_CATEGORY_LC | unictype/category-LC |
UC_CATEGORY_Lu | unictype/category-Lu |
UC_CATEGORY_Ll | unictype/category-Ll |
UC_CATEGORY_Lt | unictype/category-Lt |
UC_CATEGORY_Lm | unictype/category-Lm |
UC_CATEGORY_Lo | unictype/category-Lo |
UC_CATEGORY_M | unictype/category-M |
UC_CATEGORY_Mn | unictype/category-Mn |
UC_CATEGORY_Mc | unictype/category-Mc |
UC_CATEGORY_Me | unictype/category-Me |
UC_CATEGORY_N | unictype/category-N |
UC_CATEGORY_Nd | unictype/category-Nd |
UC_CATEGORY_Nl | unictype/category-Nl |
UC_CATEGORY_No | unictype/category-No |
UC_CATEGORY_P | unictype/category-P |
UC_CATEGORY_Pc | unictype/category-Pc |
UC_CATEGORY_Pd | unictype/category-Pd |
UC_CATEGORY_Ps | unictype/category-Ps |
UC_CATEGORY_Pe | unictype/category-Pe |
UC_CATEGORY_Pi | unictype/category-Pi |
UC_CATEGORY_Pf | unictype/category-Pf |
UC_CATEGORY_Po | unictype/category-Po |
UC_CATEGORY_S | unictype/category-S |
UC_CATEGORY_Sm | unictype/category-Sm |
UC_CATEGORY_Sc | unictype/category-Sc |
UC_CATEGORY_Sk | unictype/category-Sk |
UC_CATEGORY_So | unictype/category-So |
UC_CATEGORY_Z | unictype/category-Z |
UC_CATEGORY_Zs | unictype/category-Zs |
UC_CATEGORY_Zl | unictype/category-Zl |
UC_CATEGORY_Zp | unictype/category-Zp |
UC_CATEGORY_C | unictype/category-C |
UC_CATEGORY_Cc | unictype/category-Cc |
UC_CATEGORY_Cf | unictype/category-Cf |
UC_CATEGORY_Cs | unictype/category-Cs |
UC_CATEGORY_Co | unictype/category-Co |
UC_CATEGORY_Cn | unictype/category-Cn |
uc_general_category_or | unictype/category-or |
uc_general_category_and | unictype/category-and |
uc_general_category_and_not | unictype/category-and-not |
uc_general_category_name | unictype/category-name |
uc_general_category_long_name | unictype/category-longname |
uc_general_category_byname | unictype/category-byname |
uc_general_category | unictype/category-of |
uc_is_general_category | unictype/category-test |
uc_is_general_category_withtable | unictype/category-test-withtable |
uc_combining_class_name | unictype/combining-class-name |
uc_combining_class_long_name | unictype/combining-class-longname |
uc_combining_class_byname | unictype/combining-class-byname |
uc_combining_class | unictype/combining-class |
uc_bidi_class_name | unictype/bidiclass-name |
uc_bidi_category_name | unictype/bidiclass-name |
uc_bidi_class_long_name | unictype/bidiclass-longname |
uc_bidi_class_byname | unictype/bidiclass-byname |
uc_bidi_category_byname | unictype/bidiclass-byname |
uc_bidi_class | unictype/bidiclass-of |
uc_bidi_category | unictype/bidiclass-of |
uc_is_bidi_class | unictype/bidiclass-test |
uc_is_bidi_category | unictype/bidiclass-test |
uc_decimal_value | unictype/decimal-digit |
uc_digit_value | unictype/digit |
uc_numeric_value | unictype/numeric |
uc_mirror_char | unictype/mirror |
uc_joining_type_name | unictype/joiningtype-name |
uc_joining_type_long_name | unictype/joiningtype-longname |
uc_joining_type_byname | unictype/joiningtype-byname |
uc_joining_type | unictype/joiningtype-of |
uc_joining_group_name | unictype/joininggroup-name |
uc_joining_group_byname | unictype/joininggroup-byname |
uc_joining_group | unictype/joininggroup-of |
UC_PROPERTY_WHITE_SPACE | unictype/property-white-space |
UC_PROPERTY_ALPHABETIC | unictype/property-alphabetic |
UC_PROPERTY_OTHER_ALPHABETIC | unictype/property-other-alphabetic |
UC_PROPERTY_NOT_A_CHARACTER | unictype/property-not-a-character |
UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT | unictype/property-default-ignorable-code-point |
UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT | unictype/property-other-default-ignorable-code-point |
UC_PROPERTY_DEPRECATED | unictype/property-deprecated |
UC_PROPERTY_LOGICAL_ORDER_EXCEPTION | unictype/property-logical-order-exception |
UC_PROPERTY_VARIATION_SELECTOR | unictype/property-variation-selector |
UC_PROPERTY_PRIVATE_USE | unictype/property-private-use |
UC_PROPERTY_UNASSIGNED_CODE_VALUE | unictype/property-unassigned-code-value |
UC_PROPERTY_UPPERCASE | unictype/property-uppercase |
UC_PROPERTY_OTHER_UPPERCASE | unictype/property-other-uppercase |
UC_PROPERTY_LOWERCASE | unictype/property-lowercase |
UC_PROPERTY_OTHER_LOWERCASE | unictype/property-other-lowercase |
UC_PROPERTY_TITLECASE | unictype/property-titlecase |
UC_PROPERTY_CASED | unictype/property-cased |
UC_PROPERTY_CASE_IGNORABLE | unictype/property-case-ignorable |
UC_PROPERTY_CHANGES_WHEN_LOWERCASED | unictype/property-changes-when-lowercased |
UC_PROPERTY_CHANGES_WHEN_UPPERCASED | unictype/property-changes-when-uppercased |
UC_PROPERTY_CHANGES_WHEN_TITLECASED | unictype/property-changes-when-titlecased |
UC_PROPERTY_CHANGES_WHEN_CASEFOLDED | unictype/property-changes-when-casefolded |
UC_PROPERTY_CHANGES_WHEN_CASEMAPPED | unictype/property-changes-when-casemapped |
UC_PROPERTY_SOFT_DOTTED | unictype/property-soft-dotted |
UC_PROPERTY_ID_START | unictype/property-id-start |
UC_PROPERTY_OTHER_ID_START | unictype/property-other-id-start |
UC_PROPERTY_ID_CONTINUE | unictype/property-id-continue |
UC_PROPERTY_OTHER_ID_CONTINUE | unictype/property-other-id-continue |
UC_PROPERTY_XID_START | unictype/property-xid-start |
UC_PROPERTY_XID_CONTINUE | unictype/property-xid-continue |
UC_PROPERTY_ID_COMPAT_MATH_START | unictype/property-id-compat-math-start |
UC_PROPERTY_ID_COMPAT_MATH_CONTINUE | unictype/property-id-compat-math-continue |
UC_PROPERTY_PATTERN_WHITE_SPACE | unictype/property-pattern-white-space |
UC_PROPERTY_PATTERN_SYNTAX | unictype/property-pattern-syntax |
UC_PROPERTY_JOIN_CONTROL | unictype/property-join-control |
UC_PROPERTY_GRAPHEME_BASE | unictype/property-grapheme-base |
UC_PROPERTY_GRAPHEME_EXTEND | unictype/property-grapheme-extend |
UC_PROPERTY_OTHER_GRAPHEME_EXTEND | unictype/property-other-grapheme-extend |
UC_PROPERTY_GRAPHEME_LINK | unictype/property-grapheme-link |
UC_PROPERTY_MODIFIER_COMBINING_MARK | unictype/property-modifier-combining-mark |
UC_PROPERTY_BIDI_CONTROL | unictype/property-bidi-control |
UC_PROPERTY_BIDI_LEFT_TO_RIGHT | unictype/property-bidi-left-to-right |
UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT | unictype/property-bidi-hebrew-right-to-left |
UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT | unictype/property-bidi-arabic-right-to-left |
UC_PROPERTY_BIDI_EUROPEAN_DIGIT | unictype/property-bidi-european-digit |
UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR | unictype/property-bidi-eur-num-separator |
UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR | unictype/property-bidi-eur-num-terminator |
UC_PROPERTY_BIDI_ARABIC_DIGIT | unictype/property-bidi-arabic-digit |
UC_PROPERTY_BIDI_COMMON_SEPARATOR | unictype/property-bidi-common-separator |
UC_PROPERTY_BIDI_BLOCK_SEPARATOR | unictype/property-bidi-block-separator |
UC_PROPERTY_BIDI_SEGMENT_SEPARATOR | unictype/property-bidi-segment-separator |
UC_PROPERTY_BIDI_WHITESPACE | unictype/property-bidi-whitespace |
UC_PROPERTY_BIDI_NON_SPACING_MARK | unictype/property-bidi-non-spacing-mark |
UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL | unictype/property-bidi-boundary-neutral |
UC_PROPERTY_BIDI_PDF | unictype/property-bidi-pdf |
UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE | unictype/property-bidi-embedding-or-override |
UC_PROPERTY_BIDI_OTHER_NEUTRAL | unictype/property-bidi-other-neutral |
UC_PROPERTY_HEX_DIGIT | unictype/property-hex-digit |
UC_PROPERTY_ASCII_HEX_DIGIT | unictype/property-ascii-hex-digit |
UC_PROPERTY_IDEOGRAPHIC | unictype/property-ideographic |
UC_PROPERTY_UNIFIED_IDEOGRAPH | unictype/property-unified-ideograph |
UC_PROPERTY_RADICAL | unictype/property-radical |
UC_PROPERTY_IDS_UNARY_OPERATOR | unictype/property-ids-unary-operator |
UC_PROPERTY_IDS_BINARY_OPERATOR | unictype/property-ids-binary-operator |
UC_PROPERTY_IDS_TRINARY_OPERATOR | unictype/property-ids-trinary-operator |
UC_PROPERTY_EMOJI | unictype/property-emoji |
UC_PROPERTY_EMOJI_PRESENTATION | unictype/property-emoji-presentation |
UC_PROPERTY_EMOJI_MODIFIER | unictype/property-emoji-modifier |
UC_PROPERTY_EMOJI_MODIFIER_BASE | unictype/property-emoji-modifier-base |
UC_PROPERTY_EMOJI_COMPONENT | unictype/property-emoji-component |
UC_PROPERTY_EXTENDED_PICTOGRAPHIC | unictype/property-extended-pictographic |
UC_PROPERTY_ZERO_WIDTH | unictype/property-zero-width |
UC_PROPERTY_SPACE | unictype/property-space |
UC_PROPERTY_NON_BREAK | unictype/property-non-break |
UC_PROPERTY_ISO_CONTROL | unictype/property-iso-control |
UC_PROPERTY_FORMAT_CONTROL | unictype/property-format-control |
UC_PROPERTY_PREPENDED_CONCATENATION_MARK | unictype/property-prepended-concatenation-mark |
UC_PROPERTY_DASH | unictype/property-dash |
UC_PROPERTY_HYPHEN | unictype/property-hyphen |
UC_PROPERTY_PUNCTUATION | unictype/property-punctuation |
UC_PROPERTY_LINE_SEPARATOR | unictype/property-line-separator |
UC_PROPERTY_PARAGRAPH_SEPARATOR | unictype/property-paragraph-separator |
UC_PROPERTY_QUOTATION_MARK | unictype/property-quotation-mark |
UC_PROPERTY_SENTENCE_TERMINAL | unictype/property-sentence-terminal |
UC_PROPERTY_TERMINAL_PUNCTUATION | unictype/property-terminal-punctuation |
UC_PROPERTY_CURRENCY_SYMBOL | unictype/property-currency-symbol |
UC_PROPERTY_MATH | unictype/property-math |
UC_PROPERTY_OTHER_MATH | unictype/property-other-math |
UC_PROPERTY_PAIRED_PUNCTUATION | unictype/property-paired-punctuation |
UC_PROPERTY_LEFT_OF_PAIR | unictype/property-left-of-pair |
UC_PROPERTY_COMBINING | unictype/property-combining |
UC_PROPERTY_COMPOSITE | unictype/property-composite |
UC_PROPERTY_DECIMAL_DIGIT | unictype/property-decimal-digit |
UC_PROPERTY_NUMERIC | unictype/property-numeric |
UC_PROPERTY_DIACRITIC | unictype/property-diacritic |
UC_PROPERTY_EXTENDER | unictype/property-extender |
UC_PROPERTY_IGNORABLE_CONTROL | unictype/property-ignorable-control |
UC_PROPERTY_REGIONAL_INDICATOR | unictype/property-regional-indicator |
uc_property_byname | unictype/property-byname |
uc_property_is_valid | unictype/base |
uc_is_property | unictype/property-test |
uc_is_property_white_space | unictype/property-white-space |
uc_is_property_alphabetic | unictype/property-alphabetic |
uc_is_property_other_alphabetic | unictype/property-other-alphabetic |
uc_is_property_not_a_character | unictype/property-not-a-character |
uc_is_property_default_ignorable_code_point | unictype/property-default-ignorable-code-point |
uc_is_property_other_default_ignorable_code_point | unictype/property-other-default-ignorable-code-point |
uc_is_property_deprecated | unictype/property-deprecated |
uc_is_property_logical_order_exception | unictype/property-logical-order-exception |
uc_is_property_variation_selector | unictype/property-variation-selector |
uc_is_property_private_use | unictype/property-private-use |
uc_is_property_unassigned_code_value | unictype/property-unassigned-code-value |
uc_is_property_uppercase | unictype/property-uppercase |
uc_is_property_other_uppercase | unictype/property-other-uppercase |
uc_is_property_lowercase | unictype/property-lowercase |
uc_is_property_other_lowercase | unictype/property-other-lowercase |
uc_is_property_titlecase | unictype/property-titlecase |
uc_is_property_cased | unictype/property-cased |
uc_is_property_case_ignorable | unictype/property-case-ignorable |
uc_is_property_changes_when_lowercased | unictype/property-changes-when-lowercased |
uc_is_property_changes_when_uppercased | unictype/property-changes-when-uppercased |
uc_is_property_changes_when_titlecased | unictype/property-changes-when-titlecased |
uc_is_property_changes_when_casefolded | unictype/property-changes-when-casefolded |
uc_is_property_changes_when_casemapped | unictype/property-changes-when-casemapped |
uc_is_property_soft_dotted | unictype/property-soft-dotted |
uc_is_property_id_start | unictype/property-id-start |
uc_is_property_other_id_start | unictype/property-other-id-start |
uc_is_property_id_continue | unictype/property-id-continue |
uc_is_property_other_id_continue | unictype/property-other-id-continue |
uc_is_property_xid_start | unictype/property-xid-start |
uc_is_property_xid_continue | unictype/property-xid-continue |
uc_is_property_id_compat_math_start | unictype/property-id-compat-math-start |
uc_is_property_id_compat_math_continue | unictype/property-id-compat-math-continue |
uc_is_property_pattern_white_space | unictype/property-pattern-white-space |
uc_is_property_pattern_syntax | unictype/property-pattern-syntax |
uc_is_property_join_control | unictype/property-join-control |
uc_is_property_grapheme_base | unictype/property-grapheme-base |
uc_is_property_grapheme_extend | unictype/property-grapheme-extend |
uc_is_property_other_grapheme_extend | unictype/property-other-grapheme-extend |
uc_is_property_grapheme_link | unictype/property-grapheme-link |
uc_is_property_modifier_combining_mark | unictype/property-modifier-combining-mark |
uc_is_property_bidi_control | unictype/property-bidi-control |
uc_is_property_bidi_left_to_right | unictype/property-bidi-left-to-right |
uc_is_property_bidi_hebrew_right_to_left | unictype/property-bidi-hebrew-right-to-left |
uc_is_property_bidi_arabic_right_to_left | unictype/property-bidi-arabic-right-to-left |
uc_is_property_bidi_european_digit | unictype/property-bidi-european-digit |
uc_is_property_bidi_eur_num_separator | unictype/property-bidi-eur-num-separator |
uc_is_property_bidi_eur_num_terminator | unictype/property-bidi-eur-num-terminator |
uc_is_property_bidi_arabic_digit | unictype/property-bidi-arabic-digit |
uc_is_property_bidi_common_separator | unictype/property-bidi-common-separator |
uc_is_property_bidi_block_separator | unictype/property-bidi-block-separator |
uc_is_property_bidi_segment_separator | unictype/property-bidi-segment-separator |
uc_is_property_bidi_whitespace | unictype/property-bidi-whitespace |
uc_is_property_bidi_non_spacing_mark | unictype/property-bidi-non-spacing-mark |
uc_is_property_bidi_boundary_neutral | unictype/property-bidi-boundary-neutral |
uc_is_property_bidi_pdf | unictype/property-bidi-pdf |
uc_is_property_bidi_embedding_or_override | unictype/property-bidi-embedding-or-override |
uc_is_property_bidi_other_neutral | unictype/property-bidi-other-neutral |
uc_is_property_hex_digit | unictype/property-hex-digit |
uc_is_property_ascii_hex_digit | unictype/property-ascii-hex-digit |
uc_is_property_ideographic | unictype/property-ideographic |
uc_is_property_unified_ideograph | unictype/property-unified-ideograph |
uc_is_property_radical | unictype/property-radical |
uc_is_property_ids_unary_operator | unictype/property-ids-unary-operator |
uc_is_property_ids_binary_operator | unictype/property-ids-binary-operator |
uc_is_property_ids_trinary_operator | unictype/property-ids-trinary-operator |
uc_is_property_emoji | unictype/property-emoji |
uc_is_property_emoji_presentation | unictype/property-emoji-presentation |
uc_is_property_emoji_modifier | unictype/property-emoji-modifier |
uc_is_property_emoji_modifier_base | unictype/property-emoji-modifier-base |
uc_is_property_emoji_component | unictype/property-emoji-component |
uc_is_property_extended_pictographic | unictype/property-extended-pictographic |
uc_is_property_zero_width | unictype/property-zero-width |
uc_is_property_space | unictype/property-space |
uc_is_property_non_break | unictype/property-non-break |
uc_is_property_iso_control | unictype/property-iso-control |
uc_is_property_format_control | unictype/property-format-control |
uc_is_property_prepended_concatenation_mark | unictype/property-prepended-concatenation-mark |
uc_is_property_dash | unictype/property-dash |
uc_is_property_hyphen | unictype/property-hyphen |
uc_is_property_punctuation | unictype/property-punctuation |
uc_is_property_line_separator | unictype/property-line-separator |
uc_is_property_paragraph_separator | unictype/property-paragraph-separator |
uc_is_property_quotation_mark | unictype/property-quotation-mark |
uc_is_property_sentence_terminal | unictype/property-sentence-terminal |
uc_is_property_terminal_punctuation | unictype/property-terminal-punctuation |
uc_is_property_currency_symbol | unictype/property-currency-symbol |
uc_is_property_math | unictype/property-math |
uc_is_property_other_math | unictype/property-other-math |
uc_is_property_paired_punctuation | unictype/property-paired-punctuation |
uc_is_property_left_of_pair | unictype/property-left-of-pair |
uc_is_property_combining | unictype/property-combining |
uc_is_property_composite | unictype/property-composite |
uc_is_property_decimal_digit | unictype/property-decimal-digit |
uc_is_property_numeric | unictype/property-numeric |
uc_is_property_diacritic | unictype/property-diacritic |
uc_is_property_extender | unictype/property-extender |
uc_is_property_ignorable_control | unictype/property-ignorable-control |
uc_is_property_regional_indicator | unictype/property-regional-indicator |
uc_indic_conjunct_break_name | unictype/incb-name |
uc_indic_conjunct_break_byname | unictype/incb-byname |
uc_indic_conjunct_break | unictype/incb-of |
uc_script | unictype/scripts |
uc_script_byname | unictype/scripts |
uc_is_script | unictype/scripts |
uc_all_scripts | unictype/scripts |
uc_block | unictype/block-of |
uc_is_block | unictype/block-test |
uc_all_blocks | unictype/block-list |
uc_is_c_whitespace | unictype/syntax-c-whitespace |
uc_is_java_whitespace | unictype/syntax-java-whitespace |
uc_c_ident_category | unictype/syntax-c-ident |
uc_java_ident_category | unictype/syntax-java-ident |
uc_is_alnum | unictype/ctype-alnum |
uc_is_alpha | unictype/ctype-alpha |
uc_is_cntrl | unictype/ctype-cntrl |
uc_is_digit | unictype/ctype-digit |
uc_is_graph | unictype/ctype-graph |
uc_is_lower | unictype/ctype-lower |
uc_is_print | unictype/ctype-print |
uc_is_punct | unictype/ctype-punct |
uc_is_space | unictype/ctype-space |
uc_is_upper | unictype/ctype-upper |
uc_is_xdigit | unictype/ctype-xdigit |
uc_is_blank | unictype/ctype-blank |
Next: <unigbrk.h> modules, Previous: <unictype.h> modules, Up: The libunistring modules [Contents][Index]
| Function | Module |
|---|---|
uc_width | uniwidth/width |
u8_width | uniwidth/u8-width |
u16_width | uniwidth/u16-width |
u32_width | uniwidth/u32-width |
u8_strwidth | uniwidth/u8-strwidth |
u16_strwidth | uniwidth/u16-strwidth |
u32_strwidth | uniwidth/u32-strwidth |
Next: <uniwbrk.h> modules, Previous: <uniwidth.h> modules, Up: The libunistring modules [Contents][Index]
| Function | Module |
|---|---|
u8_grapheme_next | unigbrk/u8-grapheme-next |
u16_grapheme_next | unigbrk/u16-grapheme-next |
u32_grapheme_next | unigbrk/u32-grapheme-next |
u8_grapheme_prev | unigbrk/u8-grapheme-prev |
u16_grapheme_prev | unigbrk/u16-grapheme-prev |
u32_grapheme_prev | unigbrk/u32-grapheme-prev |
u8_grapheme_breaks | unigbrk/u8-grapheme-breaks |
u16_grapheme_breaks | unigbrk/u16-grapheme-breaks |
u32_grapheme_breaks | unigbrk/u32-grapheme-breaks |
ulc_grapheme_breaks | unigbrk/ulc-grapheme-breaks |
uc_grapheme_breaks | unigbrk/uc-grapheme-breaks |
uc_graphemeclusterbreak_property | unigbrk/uc-gbrk-prop |
uc_is_grapheme_break | unigbrk/uc-is-grapheme-break |
Next: <unilbrk.h> modules, Previous: <unigbrk.h> modules, Up: The libunistring modules [Contents][Index]
| Function | Module |
|---|---|
u8_wordbreaks | uniwbrk/u8-wordbreaks |
u16_wordbreaks | uniwbrk/u16-wordbreaks |
u32_wordbreaks | uniwbrk/u32-wordbreaks |
ulc_wordbreaks | uniwbrk/ulc-wordbreaks |
uc_wordbreak_property | uniwbrk/wordbreak-property |
Next: <uninorm.h> modules, Previous: <uniwbrk.h> modules, Up: The libunistring modules [Contents][Index]
| Function | Module |
|---|---|
u8_possible_linebreaks | unilbrk/u8-possible-linebreaks |
u16_possible_linebreaks | unilbrk/u16-possible-linebreaks |
u32_possible_linebreaks | unilbrk/u32-possible-linebreaks |
ulc_possible_linebreaks | unilbrk/ulc-possible-linebreaks |
u8_width_linebreaks | unilbrk/u8-width-linebreaks |
u16_width_linebreaks | unilbrk/u16-width-linebreaks |
u32_width_linebreaks | unilbrk/u32-width-linebreaks |
ulc_width_linebreaks | unilbrk/ulc-width-linebreaks |
Next: <unicase.h> modules, Previous: <unilbrk.h> modules, Up: The libunistring modules [Contents][Index]
| Function or macro | Module |
|---|---|
uc_decomposition | uninorm/decomposition |
uc_canonical_decomposition | uninorm/canonical-decomposition |
uc_composition | uninorm/composition |
UNINORM_NFD | uninorm/nfd |
UNINORM_NFC | uninorm/nfc |
UNINORM_NFKD | uninorm/nfkd |
UNINORM_NFKC | uninorm/nfkc |
uninorm_is_compat_decomposing | uninorm/base |
uninorm_is_composing | uninorm/base |
uninorm_decomposing_form | uninorm/decomposing-form |
u8_normalize | uninorm/u8-normalize |
u16_normalize | uninorm/u16-normalize |
u32_normalize | uninorm/u32-normalize |
u8_normcmp | uninorm/u8-normcmp |
u16_normcmp | uninorm/u16-normcmp |
u32_normcmp | uninorm/u32-normcmp |
u8_normxfrm | uninorm/u8-normxfrm |
u16_normxfrm | uninorm/u16-normxfrm |
u32_normxfrm | uninorm/u32-normxfrm |
u8_normcoll | uninorm/u8-normcoll |
u16_normcoll | uninorm/u16-normcoll |
u32_normcoll | uninorm/u32-normcoll |
uninorm_filter_create | uninorm/filter |
uninorm_filter_write | uninorm/filter |
uninorm_filter_flush | uninorm/filter |
uninorm_filter_free | uninorm/filter |
Previous: <uninorm.h> modules, Up: The libunistring modules [Contents][Index]
| Function or constant | Module |
|---|---|
uc_toupper | unicase/toupper |
uc_tolower | unicase/tolower |
uc_totitle | unicase/totitle |
uc_locale_language | unicase/locale-language |
u8_toupper | unicase/u8-toupper |
u16_toupper | unicase/u16-toupper |
u32_toupper | unicase/u32-toupper |
u8_tolower | unicase/u8-tolower |
u16_tolower | unicase/u16-tolower |
u32_tolower | unicase/u32-tolower |
u8_totitle | unicase/u8-totitle |
u16_totitle | unicase/u16-totitle |
u32_totitle | unicase/u32-totitle |
unicase_empty_prefix_context | unicase/empty-prefix-context |
u8_casing_prefix_context | unicase/u8-prefix-context |
u16_casing_prefix_context | unicase/u16-prefix-context |
u32_casing_prefix_context | unicase/u32-prefix-context |
u8_casing_prefixes_context | unicase/u8-prefix-context |
u16_casing_prefixes_context | unicase/u16-prefix-context |
u32_casing_prefixes_context | unicase/u32-prefix-context |
unicase_empty_suffix_context | unicase/empty-suffix-context |
u8_casing_suffix_context | unicase/u8-suffix-context |
u16_casing_suffix_context | unicase/u16-suffix-context |
u32_casing_suffix_context | unicase/u32-suffix-context |
u8_casing_suffixes_context | unicase/u8-suffix-context |
u16_casing_suffixes_context | unicase/u16-suffix-context |
u32_casing_suffixes_context | unicase/u32-suffix-context |
u8_ct_toupper | unicase/u8-ct-toupper |
u16_ct_toupper | unicase/u16-ct-toupper |
u32_ct_toupper | unicase/u32-ct-toupper |
u8_ct_tolower | unicase/u8-ct-tolower |
u16_ct_tolower | unicase/u16-ct-tolower |
u32_ct_tolower | unicase/u32-ct-tolower |
u8_ct_totitle | unicase/u8-ct-totitle |
u16_ct_totitle | unicase/u16-ct-totitle |
u32_ct_totitle | unicase/u32-ct-totitle |
u8_casefold | unicase/u8-casefold |
u16_casefold | unicase/u16-casefold |
u32_casefold | unicase/u32-casefold |
u8_ct_casefold | unicase/u8-ct-casefold |
u16_ct_casefold | unicase/u16-ct-casefold |
u32_ct_casefold | unicase/u32-ct-casefold |
u8_casecmp | unicase/u8-casecmp |
u16_casecmp | unicase/u16-casecmp |
u32_casecmp | unicase/u32-casecmp |
ulc_casecmp | unicase/ulc-casecmp |
u8_casexfrm | unicase/u8-casexfrm |
u16_casexfrm | unicase/u16-casexfrm |
u32_casexfrm | unicase/u32-casexfrm |
ulc_casexfrm | unicase/ulc-casexfrm |
u8_casecoll | unicase/u8-casecoll |
u16_casecoll | unicase/u16-casecoll |
u32_casecoll | unicase/u32-casecoll |
ulc_casecoll | unicase/ulc-casecoll |
u8_is_uppercase | unicase/u8-is-uppercase |
u16_is_uppercase | unicase/u16-is-uppercase |
u32_is_uppercase | unicase/u32-is-uppercase |
u8_is_lowercase | unicase/u8-is-lowercase |
u16_is_lowercase | unicase/u16-is-lowercase |
u32_is_lowercase | unicase/u32-is-lowercase |
u8_is_titlecase | unicase/u8-is-titlecase |
u16_is_titlecase | unicase/u16-is-titlecase |
u32_is_titlecase | unicase/u32-is-titlecase |
u8_is_casefolded | unicase/u8-is-casefolded |
u16_is_casefolded | unicase/u16-is-casefolded |
u32_is_casefolded | unicase/u32-is-casefolded |
u8_is_cased | unicase/u8-is-cased |
u16_is_cased | unicase/u16-is-cased |
u32_is_cased | unicase/u32-is-cased |
Next: Printing --version and bug-reporting information, Previous: libunistring, Up: Particular Modules [Contents][Index]
Printing a stack trace
was traditionally seen as a feature of the debugging environment
and thus only implemented in the debuggers (gdb etc.).
However, they are also useful in production code,
for use in two circumstances:
And in fact, printing a stack trace is part of the basic runtime system in programming languages such as Java (printStackTrace method), Python (print_exception method), Go (PrintStack function), and ISO C++ 23 (std::stacktrace class).
Gnulib provides a module ‘stack-trace’ with this feature:
print_stack_trace ()
prints a stack trace of the current thread to standard error.
For it to work best, three requirements need to be met:
libasan needs to be installed.
-g).
dsymutil program needs to be used when linking,
and the debugging information needs to be copied when the program is installed.
Cf. https://github.com/ianlancetaylor/libbacktrace/issues/122#issuecomment-2122589147.
When these requirements are not met, the function print_stack_trace ()
either prints a stack trace without source file names and line numbers,
or prints nothing at all.
Gnulib also provides a module ‘abort-debug’,
that overrides the abort function so that
it prints the stack trace of the current thread, before actually aborting.
Thus, abort () remains the idiom of choice
for signaling a fatal situation that requires developer attention:
it is useful both in debugging environments and production code.
Note:
While the original abort function is safe to call in signal handlers,
the overridden abort function is not.
In signal handlers, you will need to call the original abort function,
by doing #undef abort first.
Next: Recognizing Option Arguments, Previous: Stack traces, Up: Particular Modules [Contents][Index]
Gnulib provides a few modules for printing --version and
bug-reporting information according to the GNU Coding Standards; see
https://www.gnu.org/prep/standards/html_node/_002d_002dversion.html#g_t_002d_002dversion
The ‘version-etc’ module defines functions used to emit
--version and bug-reporting input in a standard way. The module
expects the string version_etc_copyright to be defined to display
the copyright holder along with the package release year. The
version_etc function can then be used like so:
const char version_etc_copyright[] = "Copyright %s %d copyright-holder";
int
main (void)
{
version_etc (stdout, "my-program", "my-package", "1.0",
"author1", "author2", (const char *) NULL);
return 0;
}
The above example generates the following output:
my-program (my-package) 1.0 Copyright (C) 2025 copyright-holder License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by author1 and author2.
The ‘version-etc’ module also defines the function
emit_bug_reporting_address which emits the bug-reporting location
based on arguments passed to AC_INIT. For example, using the
following in configure.ac:
AC_INIT([gnulib], [0.0], [bug-gnulib@gnu.org], [gnulib],
[https://www.gnu.org/software/gnulib/])
And the following program:
#include <config.h>
#include "version-etc.h"
int
main (void)
{
emit_bug_reporting_address ();
return 0;
}
Will output:
Report bugs to: bug-gnulib@gnu.org gnulib home page: <https://www.gnu.org/software/gnulib/> General help using GNU software: <https://www.gnu.org/gethelp/>
The ‘version-etc-fsf’ module defines and links to the variable
version_etc_copyright containing copyright information for Free
Software Foundation. This module should be used by programs which are
FSF-copyrighted and use the ‘version-etc’ module.
The ‘argp-version-etc’ defines the argp_version_setup
function takes the program name and authors as arguments. This function
should be called before argp_parse since it modifies argp global
variables; see
https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.html.
Next: Quoting, Previous: Printing --version and bug-reporting information, Up: Particular Modules [Contents][Index]
The module ‘argmatch’ provides a simple textual user interface to a finite choice. It is for example well suited to recognize arguments of options or values of environment variables that accept a fixed set of valid choices.
These choices may be denoted by synonyms, such as ‘none’ and ‘off’ below.
$ my_cp --backup=none foo bar $ my_cp --backup=non foo bar $ my_cp --backup=no foo bar $ my_cp --backup=n foo bar my_cp: ambiguous argument 'n' for 'backup type' Valid arguments are: - 'no', 'none', 'off' - 'numbered', 't', 'newstyle' - 'existing', 'nil', 'numbered-existing' - 'simple', 'never', 'single' Try 'my_cp --help' for more information. $ my_cp --backup=num foo bar $ my_cp --backup=true foo bar my_cp: invalid argument 'true' for 'backup type' Valid arguments are: - 'no', 'none', 'off' - 'numbered', 't', 'newstyle' - 'existing', 'nil', 'numbered-existing' - 'simple', 'never', 'single' Try 'my_cp --help' for more information.
To set up argmatch, first call ‘ARGMATCH_DEFINE_GROUP
(name, type)’ with the name of the argmatch group name, and the
value type. For instance:
enum backup_type
{
no_backups,
simple_backups,
numbered_existing_backups,
numbered_backups
};
ARGMATCH_DEFINE_GROUP (backup, enum backup_type);
This defines a few types and functions named argmatch_name_*.
Introduce the array that defines the mapping from user-input to actual
value, with a terminator:
static const argmatch_backup_arg argmatch_backup_args[] =
{
{ "no", no_backups },
{ "none", no_backups },
{ "off", no_backups },
{ "simple", simple_backups },
{ "never", simple_backups },
{ "single", simple_backups },
{ "existing", numbered_existing_backups },
{ "nil", numbered_existing_backups },
{ "numbered-existing", numbered_existing_backups },
{ "numbered", numbered_backups },
{ "t", numbered_backups },
{ "newstyle", numbered_backups },
{ NULL, no_backups }
};
Then introduce the array that defines the values, also with a terminator. Document only once per group of synonyms:
static const argmatch_backup_doc argmatch_backup_docs[] =
{
{ "no", N_("never make backups (even if --backup is given)") },
{ "numbered", N_("make numbered backups") },
{ "existing", N_("numbered if numbered backups exist, simple otherwise") },
{ "simple", N_("always make simple backups") },
{ NULL, NULL }
};
Finally, define the argmatch group:
const argmatch_backup_group_type argmatch_backup_group =
{
argmatch_backup_args,
argmatch_backup_docs,
N_("\
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n\
The version control method may be selected via the --backup option or through\n\
the VERSION_CONTROL environment variable. Here are the values:\n"),
NULL
};
To use the argmatch group:
ptrdiff_t i = argmatch_backup_choice ("--backup", "none");
// argmatch_backup_group.args[i].arg is "none", so its value
// is argmatch_backup_group.args[i].val.
// Return -1 on invalid argument, and -2 on ambiguity.
enum backup_type val = *argmatch_backup_value ("--backup", "none");
// Returns a pointer to the value, and exit on errors.
// So argmatch_backup_group.args[i].val == val.
const char *arg = argmatch_backup_argument (&no_backups);
// arg is "no".
// Print the documentation on stdout.
argmatch_backup_usage (stdout);
// Gives:
//
// The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
// The version control method may be selected via the --backup option or through
// the VERSION_CONTROL environment variable. Here are the values:
//
// no, none, off never make backups (even if --backup is given)
// numbered, t, newstyle
// make numbered backups
// existing, nil, numbered-existing
// numbered if numbered backups exist, simple otherwise
// simple, never, single
// always make simple backups
Next: progname and getprogname, Previous: Recognizing Option Arguments, Up: Particular Modules [Contents][Index]
Gnulib provides ‘quote’ and ‘quotearg’ modules to help with quoting text, such as file names, in messages to the user. Here’s an example of using ‘quote’:
#include <quote.h>
...
error (0, errno, _("cannot change owner of %s"), quote (fname));
This differs from
error (0, errno, _("cannot change owner of '%s'"), fname);
in that quote escapes unusual characters in
fname, e.g., ‘'’ and control characters like ‘\n’.
However, a caveat: quote reuses the storage that it returns.
Hence if you need more than one thing quoted at the same time, you
need to use quote_n.
Also, the quote module is not suited for multithreaded applications.
In that case, you have to use quotearg_alloc, defined in the
‘quotearg’ module, which is decidedly less convenient.
Next: gcd, Previous: Quoting, Up: Particular Modules [Contents][Index]
Gnulib has two modules for retrieving the name of the currently executing
program: progname and getprogname.
The progname module defines a variable program_name.
It contains the name of the currently executing program, on all platforms.
But it cannot be used implicitly: It requires that every main
function be modified to invoke set_program_name (argv[0]) as one
of its first actions.
The getprogname module defines a function getprogname().
It returns the name of the currently executing program, on most platforms.
The advantage of this module is that it can be used without prior
initializations. But it has limitations: In some rare situations, it
cannot determine the name; then it returns "?" instead. And on
some platforms, it returns a truncated program name.
The error function uses the getprogname module.
Next: Profiling of program phases, Previous: progname and getprogname, Up: Particular Modules [Contents][Index]
The gcd function returns the greatest common divisor of two numbers
a > 0 and b > 0. It is the caller’s responsibility to ensure
that the arguments are non-zero.
If you need a gcd function for an integer type larger than ‘unsigned long’, you can include the gcd.c implementation file with parametrization. The parameters are:
The created function has the prototype
WORD_T GCD (WORD_T a, WORD_T b);
If you need the least common multiple of two numbers, it can be computed
like this: lcm(a,b) = (a / gcd(a,b)) * b or
lcm(a,b) = a * (b / gcd(a,b)).
Avoid the formula lcm(a,b) = (a * b) / gcd(a,b) because—although
mathematically correct—it can yield a wrong result, due to integer overflow.
In some applications it is useful to have a function taking the gcd of two signed numbers. In this case, the gcd function result is usually normalized to be non-negative (so that two gcd results can be compared in magnitude or compared against 1, etc.). Note that in this case the prototype of the function has to be
unsigned long gcd (long a, long b);
and not
long gcd (long a, long b);
because gcd(LONG_MIN,LONG_MIN) = -LONG_MIN = LONG_MAX + 1 does not
fit into a signed ‘long’.
Next: Library version handling, Previous: gcd, Up: Particular Modules [Contents][Index]
The module ‘timevar’ provides a simple self-profiling facility, based on timers.
Execution times (seconds) read : 0.09 (19%) usr 0.08 (80%) sys 0.09 (18%) wall read: scan : 0.04 ( 9%) usr 0.08 (80%) sys 0.12 (26%) wall read: parse : 0.05 (10%) usr 0.00 ( 0%) sys 0.05 (10%) wall work : 0.33 (70%) usr 0.00 ( 0%) sys 0.35 (71%) wall work: phase 1 : 0.30 (64%) usr 0.00 ( 0%) sys 0.30 (64%) wall work: phase 2 : 0.13 (28%) usr 0.00 ( 0%) sys 0.14 (29%) wall output : 0.04 ( 9%) usr 0.02 (20%) sys 0.04 ( 8%) wall total time : 0.47 0.10 0.49
To set up timevar, copy the stub file
gnulib/lib/timevar.def next to where timevar.h and
timevar.c were imported in your project, and define your timers
there. For instance:
/* The total execution time. Mandatory. */ DEFTIMEVAR (tv_total, "total time") /* Examples. */ DEFTIMEVAR (tv_read, "read") DEFTIMEVAR (tv_work, "work") DEFTIMEVAR (tv_work_1, "work: phase 1") DEFTIMEVAR (tv_work_2, "work: phase 2") DEFTIMEVAR (tv_output, "output")
Do not remove tv_total, it is mandatory. You may change its
associated string.
Use timevar_push/timevar_pop to start/stop timers, as in
the following example.
#include <config.h>
#include "timevar.h"
#include <stdio.h>
#include "read.h"
#include "work.h"
#include "output.h"
int
main (void)
{
timevar_enabled = true;
timevar_init ();
timevar_start (tv_total);
timevar_push (tv_read);
reader ();
timevar_pop (tv_read);
timevar_push (tv_work);
work ();
timevar_pop (tv_work);
timevar_push (tv_output);
output ();
timevar_pop (tv_output);
timevar_stop (tv_total);
timevar_print (stderr);
}
with, for instance, in work.c
#include <config.h>
#include "work.h"
void
work (void)
{
timevar_push (tv_work_phase1);
work1 ();
timevar_pop (tv_work_phase1);
timevar_push (tv_work_phase2);
work2 ();
timevar_pop (tv_work_phase2);
}
Next: Supporting Relocation, Previous: Profiling of program phases, Up: Particular Modules [Contents][Index]
The module ‘check-version’ can be useful when your gnulib
application is a system library. You will typically wrap the call to
the check_version function through a library API, your library
header file may contain:
#define STRINGPREP_VERSION "0.5.18" ... extern const char *stringprep_check_version (const char *req_version);
To avoid ELF symbol collisions with other libraries that use the ‘check-version’ module, add to config.h through a AC_DEFINE something like:
AC_DEFINE(check_version, stringprep_check_version,
[Rename check_version.])
The stringprep_check_version function will thus be implemented
by the check_version module.
There are two uses of the interface. The first is a way to provide for applications to find out the version number of the library it uses. The application may contain diagnostic code such as:
printf ("Stringprep version: header %s library %s",
STRINGPREP_VERSION,
stringprep_check_version (NULL));
Separating the library and header file version can be useful when searching for version mismatch related problems.
The second uses is as a rudimentary test of proper library version, by making sure the application get a library version that is the same, or newer, than the header file used when building the application. This doesn’t catch all problems, libraries may change backwards incompatibly in later versions, but enable applications to require a certain minimum version before it may proceed.
Typical uses look like:
/* Check version of libgcrypt. */
if (!gcry_check_version (GCRYPT_VERSION))
die ("version mismatch\n");
Next: func, Previous: Library version handling, Up: Particular Modules [Contents][Index]
It has been a pain for many users of GNU packages for a long time that
packages are not relocatable. It means a user cannot copy a program,
installed by another user on the same machine, to his home directory,
and have it work correctly (including i18n). So many users need to go
through configure; make; make install with all its
dependencies, options, and hurdles.
Red Hat, Debian, and other binary distributions solve the “ease of installation” problem, but they hardwire path names, usually to /usr or /usr/local. This means that users need root privileges to install a binary package, and prevents installing two different versions of the same binary package.
A relocatable program can be moved or copied to a different location on the file system. It is possible to make symlinks to the installed and moved programs, and invoke them through the symlink. It is possible to do the same thing with a hard link only if the hard link file is in the same directory as the real program.
The relocatable-prog module aims to ease the process of making a
GNU program relocatable. It helps overcome two obstacles. First, it aids
with relocating the hard-coded references to absolute file names that
GNU programs often contain. These references must be fixed up at
runtime if a program is to be successfully relocated. The
relocatable-prog module provides a function relocate that
does this job.
Second, the loader must be able to find shared libraries linked to
relocatable executables or referenced by other shared libraries linked
to relocatable executables. The relocatable-prog module helps out
here in a platform-specific way:
LD_LIBRARY_PATH) and then invokes the real executable.
This applies to operating systems such as AIX, HP-UX, or Minix.
You can make your program relocatable by following these steps:
relocatable-prog module. For libraries, use the
relocatable-lib or relocatable-lib-lgpl module, if
the libraries are independent. For installing multiple libraries,
at least one of which depends on another one, use the relocatable-prog
module.
If you need more than one module, or you need to use them with different
settings, you will need multiple copies of gnulib (see Multiple instances).
main as the first statement (even
before setting the locale or doing anything related to libintl):
set_program_name (argv[0]);
The prototype for this function is in progname.h.
set_relocation_prefix.
relocate so it gets translated to the run-time situation.
Example:
bindtextdomain (PACKAGE, LOCALEDIR);
becomes:
bindtextdomain (PACKAGE, relocate (LOCALEDIR));
The prototype for this function is in relocatable.h.
There is also a variant of this function, named relocate2, that
makes it easy to reclaim the memory allocated by the call.
set_program_name function can also configure some
additional libraries to relocate files that they access, by defining
corresponding C preprocessor symbols to 1. The libraries for which
this is supported and the corresponding preprocessor symbols are:
DEPENDS_ON_LIBCHARSET
DEPENDS_ON_LIBICONV
DEPENDS_ON_LIBINTL
Defining the symbol for a library makes every program in the package depend on that library, whether the program really uses the library or not, so this feature should be used with some caution.
relocatable-script module. Then, near the beginning of each
shell script that your package installs, add the following:
@relocatable_sh@
prefix="@prefix@"
exec_prefix="@exec_prefix@" # usually needs $prefix.
datarootdir="@datarootdir@" # usually needs $prefix.
if test "@RELOCATABLE@" = yes; then
bindir="@bindir@"
orig_installdir="$bindir" # see Makefile.am's *_SCRIPTS variables
func_find_curr_installdir # determine curr_installdir
func_find_prefixes
relocate () {
echo "$1/" \
| sed -e "s%^${orig_installprefix}/%${curr_installprefix}/%" \
| sed -e 's,/$,,'
}
else
relocate () {
echo "$1"
}
fi
# Get some relocated directory names.
sysconfdir=`relocate "@sysconfdir@"` # usually needs $prefix.
some_datadir=`relocate "@datadir@/something"` # usually needs $datarootdir.
bindir=`relocate "@bindir@"` # usually needs $exec_prefix, hence $prefix.
You must adapt the definition of orig_installdir, depending on
where the script gets installed. Also, at the end, instead of
sysconfdir and some_datadir, transform those variables
that you need.
relocatable-perl module. Then, near the beginning of each
Perl script that your package installs, add the following:
@relocatable_pl@
if ("@RELOCATABLE@" eq "yes") {
my $exec_prefix = "@exec_prefix@";
my $orig_installdir = "@bindir@"; # see Makefile.am's *_SCRIPTS variables
my ($orig_installprefix, $curr_installprefix) =
find_prefixes($orig_installdir, find_curr_installdir());
# the subroutine is defined whether or not the enclosing block is executed
sub relocate {
my ($dir) = @_;
if ("@RELOCATABLE@" eq "yes") {
$dir =~ s%^$orig_installprefix/%$curr_installprefix/%;
$dir =~ s,/$,,;
}
return $dir;
}
}
# Get some relocated directory names.
# (The gnulib module 'configmake' can help with this.)
$sysconfdir = relocate("@sysconfdir@");
$some_datadir = relocate(@datadir@/something");
You must adapt the definition of $orig_installdir, depending on
where the script gets installed. Also, at the end, instead of
sysconfdir and some_datadir, transform those variables
that you need.
foo that gets
installed in, say, $(bindir), you add:
foo_CPPFLAGS = -DINSTALLDIR=$(bindir_c_make) if RELOCATABLE_VIA_LD foo_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)` endif
Similarly, if a program foo gets installed in $(pkglibdir),
you add:
foo_CPPFLAGS = -DINSTALLDIR=$(pkglibdir_c_make) if RELOCATABLE_VIA_LD foo_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(pkglibdir)` endif
The Makefile variables bindir_c_make or pkglibdir_c_make
get defined by the Autoconf macros
gl_BUILD_TO_HOST_BINDIR or gl_BUILD_TO_HOST_PKGLIBDIR,
respectively.
These Autoconf macros are defined in the file m4/build-to-host.m4.
You need to
m4/build-to-host.m4 into your package, for example
by using of a command like ‘gnulib-tool --copy m4/build-to-host.m4’.
IN_LIBRARY.
You may also want to build with ENABLE_COSTLY_RELOCATABLE, in which case
you will also need to define INSTALLDIR.
The following fragment can be added to an override Makefile.am used
to build gnulib (see Modified build rules).
AM_CPPFLAGS += -DIN_LIBRARY -DENABLE_COSTLY_RELOCATABLE if SHLIBS_IN_BINDIR AM_CPPFLAGS += -DINSTALLDIR=$(bindir_c_make) else AM_CPPFLAGS += -DINSTALLDIR=$(libdir_c_make) endif
SHLIBS_IN_BINDIR is defined in configure.ac as follows:
AM_CONDITIONAL([SHLIBS_IN_BINDIR],
[case "$host_os" in mingw* | cygwin*) true;; *) false;; esac])
libfoo that gets
installed in, say, $(libdir), you add:
if RELOCATABLE_VIA_LD libfoo_la_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(libdir)` endif
If your package (or any package you rely on, e.g. gettext-runtime)
will be relocated together with a set of installed shared libraries,
then set RELOCATABLE_LIBRARY_PATH to a colon-separated list
of those libraries’ directories, e.g.
RELOCATABLE_LIBRARY_PATH = $(libdir)
If your config.h is not in $(top_builddir), then set
RELOCATABLE_CONFIG_H_DIR to its directory, e.g.
RELOCATABLE_CONFIG_H_DIR = $(top_builddir)/src
Next: stat-size, Previous: Supporting Relocation, Up: Particular Modules [Contents][Index]
The func module makes sure that you can use the predefined
identifier __func__ as defined by C99 in your code.
A small example is:
#include <config.h>
#include <stdio.h> /* for printf */
int main (void)
{
printf ("%s: hello world\n", __func__);
}
Note that sizeof cannot be applied to __func__: On SunPRO C
compiler, sizeof __func__ evaluates to 0.
Previous: func, Up: Particular Modules [Contents][Index]
The stat-size module provides a small number of macros
intended for interpreting the file size information in an instance of
struct stat.
On POSIX systems, the st_blocks member of struct stat
contains the number of disk blocks occupied by a file. The
ST_NBLOCKS and STP_NBLOCKS macros
estimate this quantity on systems
which don’t actually have st_blocks. Each of these blocks
contains ST_NBLOCKSIZE bytes.
The value of ST_NBLOCKSIZE is often quite small, small enough
that performing I/O in chunks that size would be inefficient.
The ST_BLKSIZE and STP_BLKSIZE macros
give the I/O block size recommended for I/O to this
file. This is not guaranteed to give optimum performance, but it
should be reasonably efficient.
Next: Build Infrastructure Modules, Previous: Particular Modules, Up: Top [Contents][Index]
| • Overview | ||
| • Regular Expression Syntax | ||
| • Common Operators | ||
| • GNU Operators | ||
| • What Gets Matched? | ||
| • Programming with Regex | ||
| • Regular expression syntaxes |
Next: Regular Expression Syntax, Up: Regular expressions [Contents][Index]
A regular expression (or regexp, or pattern) is a text string that describes some (mathematical) set of strings. A regexp r matches a string s if s is in the set of strings described by r.
Using the Regex library, you can:
Some regular expressions match only one string, i.e., the set they describe has only one member. For example, the regular expression ‘foo’ matches the string ‘foo’ and no others. Other regular expressions match more than one string, i.e., the set they describe has more than one member. For example, the regular expression ‘f*’ matches the set of strings made up of any number (including zero) of ‘f’s. As you can see, some characters in regular expressions match themselves (such as ‘f’) and some don’t (such as ‘*’); the ones that don’t match themselves instead let you specify patterns that describe many different strings.
To either match or search for a regular expression with the Regex library functions, you must first compile it with a Regex pattern compiling function. A compiled pattern is a regular expression converted to the internal format used by the library functions. Once you’ve compiled a pattern, you can use it for matching or searching any number of times.
The Regex library is used by including regex.h. Regex provides three groups of functions with which you can operate on regular expressions. One group—the GNU group—is more powerful but not completely compatible with the other two, namely the POSIX and Berkeley Unix groups; its interface was designed specifically for GNU.
We wrote this chapter with programmers in mind, not users of programs—such as Emacs—that use Regex. We describe the Regex library in its entirety, not how to write regular expressions that a particular program understands.
Next: Common Operators, Previous: Overview, Up: Regular expressions [Contents][Index]
Characters are things you can type. Operators are things in a regular expression that match one or more characters. You compose regular expressions from operators, which in turn you specify using one or more characters.
Most characters represent what we call the match-self operator, i.e., they match themselves; we call these characters ordinary. Other characters represent either all or parts of fancier operators; e.g., ‘.’ represents what we call the match-any-character operator (which, no surprise, matches (almost) any character); we call these characters special. Two different things determine what characters represent what operators:
In the following sections, we describe these things in more detail.
| • Syntax Bits | ||
| • Predefined Syntaxes | ||
| • Collating Elements vs. Characters | ||
| • The Backslash Character |
Next: Predefined Syntaxes, Up: Regular Expression Syntax [Contents][Index]
In any particular syntax for regular expressions, some characters are
always special, others are sometimes special, and others are never
special. The particular syntax that Regex recognizes for a given
regular expression depends on the current syntax (as set by
re_set_syntax) when the pattern buffer of that regular expression
was compiled.
You get a pattern buffer by compiling a regular expression. See GNU Pattern Buffers, for more information on pattern buffers. See GNU Regular Expression Compiling, and BSD Regular Expression Compiling, for more information on compiling.
Regex considers the current syntax to be a collection of bits; we refer to these bits as syntax bits. In most cases, they affect what characters represent what operators. We describe the meanings of the operators to which we refer in Common Operators and GNU Operators.
For reference, here is the complete list of syntax bits, in alphabetical order:
RE_BACKSLASH_ESCAPE_IN_LISTSIf this bit is set, then ‘\’ inside a list (see List Operators) quotes (makes ordinary, if it’s special) the following character; if this bit isn’t set, then ‘\’ is an ordinary character inside lists. (See The Backslash Character, for what ‘\’ does outside of lists.)
RE_BK_PLUS_QMIf this bit is set, then ‘\+’ represents the match-one-or-more
operator and ‘\?’ represents the match-zero-or-more operator; if
this bit isn’t set, then ‘+’ represents the match-one-or-more
operator and ‘?’ represents the match-zero-or-one operator. This
bit is irrelevant if RE_LIMITED_OPS is set.
RE_CHAR_CLASSESIf this bit is set, then you can use character classes in lists; if this bit isn’t set, then you can’t.
RE_CONTEXT_INDEP_ANCHORSIf this bit is set, then ‘^’ and ‘$’ are special anywhere outside a list; if this bit isn’t set, then these characters are special only in certain contexts. See Match-beginning-of-line Operator, and Match-end-of-line Operator.
RE_CONTEXT_INDEP_OPSIf this bit is set, then certain characters are special anywhere outside
a list; if this bit isn’t set, then those characters are special only in
some contexts and are ordinary elsewhere. Specifically, if this bit
isn’t set then ‘*’, and (if the syntax bit RE_LIMITED_OPS
isn’t set) ‘+’ and ‘?’ (or ‘\+’ and ‘\?’, depending
on the syntax bit RE_BK_PLUS_QM) represent repetition operators
only if they’re not first in a regular expression or just after an
open-group or alternation operator. The same holds for ‘{’ (or
‘\{’, depending on the syntax bit RE_NO_BK_BRACES) if
it is the beginning of a valid interval and the syntax bit
RE_INTERVALS is set.
RE_CONTEXT_INVALID_DUPIf this bit is set, then an open-interval operator cannot occur at the start of a regular expression, or immediately after an alternation, open-group or close-interval operator.
RE_CONTEXT_INVALID_OPSIf this bit is set, then repetition and alternation operators can’t be in certain positions within a regular expression. Specifically, the regular expression is invalid if it has:
If this bit isn’t set, then you can put the characters representing the repetition and alternation characters anywhere in a regular expression. Whether or not they will in fact be operators in certain positions depends on other syntax bits.
RE_DEBUGIf this bit is set, and the regex library was compiled with
-DDEBUG, then internal debugging is turned on; if unset, then
it is turned off.
RE_DOT_NEWLINEIf this bit is set, then the match-any-character operator matches a newline; if this bit isn’t set, then it doesn’t.
RE_DOT_NOT_NULLIf this bit is set, then the match-any-character operator doesn’t match a null character; if this bit isn’t set, then it does.
RE_HAT_LISTS_NOT_NEWLINEIf this bit is set, nonmatching lists ‘[^...]’ do not match newline; if not set, they do.
RE_ICASEIf this bit is set, then ignore case when matching; otherwise, case is significant.
RE_INTERVALSIf this bit is set, then Regex recognizes interval operators; if this bit isn’t set, then it doesn’t.
RE_INVALID_INTERVAL_ORDIf this bit is set, a syntactically invalid interval is treated as a string of ordinary characters. For example, the extended regular expression ‘a{1’ is treated as ‘a\{1’.
RE_LIMITED_OPSIf this bit is set, then Regex doesn’t recognize the match-one-or-more, match-zero-or-one or alternation operators; if this bit isn’t set, then it does.
RE_NEWLINE_ALTIf this bit is set, then newline represents the alternation operator; if this bit isn’t set, then newline is ordinary.
RE_NO_BK_BRACESIf this bit is set, then ‘{’ represents the open-interval operator
and ‘}’ represents the close-interval operator; if this bit isn’t
set, then ‘\{’ represents the open-interval operator and
‘\}’ represents the close-interval operator. This bit is relevant
only if RE_INTERVALS is set.
RE_NO_BK_PARENSIf this bit is set, then ‘(’ represents the open-group operator and ‘)’ represents the close-group operator; if this bit isn’t set, then ‘\(’ represents the open-group operator and ‘\)’ represents the close-group operator.
RE_NO_BK_REFSIf this bit is set, then Regex doesn’t recognize ‘\’digit as the back-reference operator; if this bit isn’t set, then it does.
RE_NO_BK_VBARIf this bit is set, then ‘|’ represents the alternation operator;
if this bit isn’t set, then ‘\|’ represents the alternation
operator. This bit is irrelevant if RE_LIMITED_OPS is set.
RE_NO_EMPTY_RANGESIf this bit is set, then a regular expression with a range whose ending point collates lower than its starting point is invalid; if this bit isn’t set, then Regex considers such a range to be empty.
RE_NO_GNU_OPSIf this bit is set, GNU regex operators are not recognized; otherwise, they are.
RE_NO_POSIX_BACKTRACKINGIf this bit is set, succeed as soon as we match the whole pattern, without further backtracking. This means that a match may not be the leftmost longest; see What Gets Matched? for what this means.
RE_NO_SUBIf this bit is set, then no_sub will be set to one during
re_compile_pattern. This causes matching and searching routines
not to record substring match information.
RE_UNMATCHED_RIGHT_PAREN_ORDIf this bit is set and the regular expression has no matching open-group
operator, then Regex considers what would otherwise be a close-group
operator (based on how RE_NO_BK_PARENS is set) to match ‘)’.
Next: Collating Elements vs. Characters, Previous: Syntax Bits, Up: Regular Expression Syntax [Contents][Index]
If you’re programming with Regex, you can set a pattern buffer’s (see GNU Pattern Buffers) syntax either to an arbitrary combination of syntax bits (see Syntax Bits) or else to the configurations defined by Regex. These configurations define the syntaxes used by certain programs—GNU Emacs, POSIX Awk, traditional Awk, Grep, Egrep—in addition to syntaxes for POSIX basic and extended regular expressions.
The predefined syntaxes—taken directly from regex.h—are:
# define RE_SYNTAX_EMACS \ (RE_CHAR_CLASSES | RE_INTERVALS) #define RE_SYNTAX_AWK \ (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \ | RE_NO_BK_PARENS | RE_NO_BK_REFS \ | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \ | RE_UNMATCHED_RIGHT_PAREN_ORD) #define RE_SYNTAX_POSIX_AWK \ (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS) #define RE_SYNTAX_GREP \ (RE_BK_PLUS_QM | RE_CHAR_CLASSES \ | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \ | RE_NEWLINE_ALT) #define RE_SYNTAX_EGREP \ (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \ | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \ | RE_NEWLINE_ALT | RE_NO_BK_PARENS \ | RE_NO_BK_VBAR) #define RE_SYNTAX_POSIX_EGREP \ (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES) /* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */ #define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC #define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC /* Syntax bits common to both basic and extended POSIX regex syntax. */ #define _RE_SYNTAX_POSIX_COMMON \ (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \ | RE_INTERVALS | RE_NO_EMPTY_RANGES) #define RE_SYNTAX_POSIX_BASIC \ (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM) /* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this isn't minimal, since other operators, such as \`, aren't disabled. */ #define RE_SYNTAX_POSIX_MINIMAL_BASIC \ (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS) #define RE_SYNTAX_POSIX_EXTENDED \ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \ | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \ | RE_NO_BK_PARENS | RE_NO_BK_VBAR \ | RE_UNMATCHED_RIGHT_PAREN_ORD) /* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */ #define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \ | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \ | RE_NO_BK_PARENS | RE_NO_BK_REFS \ | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
Next: The Backslash Character, Previous: Predefined Syntaxes, Up: Regular Expression Syntax [Contents][Index]
POSIX generalizes the notion of a character to that of a collating element. It defines a collating element to be “a sequence of one or more bytes defined in the current collating sequence as a unit of collation.”
This generalizes the notion of a character in two ways. First, a single character can map into two or more collating elements. For example, the German “ß” collates as the collating element ‘s’ followed by another collating element ‘s’. Second, two or more characters can map into one collating element. For example, the Czech ‘ch’ collates after ‘h’ and before ‘i’.
Since POSIX’s “collating element” preserves the essential idea of a “character,” we use the latter, more familiar, term in this document.
Previous: Collating Elements vs. Characters, Up: Regular Expression Syntax [Contents][Index]
The ‘\’ character has one of four different meanings, depending on the context in which you use it and what syntax bits are set (see Syntax Bits). It can: 1) stand for itself, 2) quote the next character, 3) introduce an operator, or 4) do nothing.
RE_BACKSLASH_ESCAPE_IN_LISTS is not set. For example, ‘[\]’
would match ‘\’.
RE_BACKSLASH_ESCAPE_IN_LISTS is set.
RE_BK_PLUS_QM, RE_NO_BK_BRACES, RE_NO_BK_VAR,
RE_NO_BK_PARENS, RE_NO_BK_REF in Syntax Bits. Also:
[[:space:]]
(see Match-space Operator).
[^[:space]]
(see Match-non-space Operator).
Next: GNU Operators, Previous: Regular Expression Syntax, Up: Regular expressions [Contents][Index]
You compose regular expressions from operators. In the following sections, we describe the regular expression operators specified by POSIX; GNU also uses these. Most operators have more than one representation as characters. See Regular Expression Syntax, for what characters represent what operators under what circumstances.
For most operators that can be represented in two ways, one
representation is a single character and the other is that character
preceded by ‘\’. For example, either ‘(’ or ‘\(’
represents the open-group operator. Which one does depends on the
setting of a syntax bit, in this case RE_NO_BK_PARENS. Why is
this so? Historical reasons dictate some of the varying
representations, while POSIX dictates others.
Finally, almost all characters lose any special meaning inside a list (see List Operators).
| • Match-self Operator | Ordinary characters. | |
| • Match-any-character Operator | . | |
| • Concatenation Operator | Juxtaposition. | |
| • Repetition Operators | * + ? {} | |
| • Alternation Operator | | | |
| • List Operators | [...] [^...] | |
| • Grouping Operators | (...) | |
| • Back-reference Operator | \digit | |
| • Anchoring Operators | ^ $ |
Next: Match-any-character Operator, Up: Common Operators [Contents][Index]
This operator matches the character itself. All ordinary characters (see Regular Expression Syntax) represent this operator. For example, ‘f’ is always an ordinary character, so the regular expression ‘f’ matches only the string ‘f’. In particular, it does not match the string ‘ff’.
Next: Concatenation Operator, Previous: Match-self Operator, Up: Common Operators [Contents][Index]
.)This operator matches any single printing or nonprinting character except it won’t match a:
if the syntax bit RE_DOT_NEWLINE isn’t set.
if the syntax bit RE_DOT_NOT_NULL is set.
The ‘.’ (period) character represents this operator. For example, ‘a.b’ matches any three-character string beginning with ‘a’ and ending with ‘b’.
Next: Repetition Operators, Previous: Match-any-character Operator, Up: Common Operators [Contents][Index]
This operator concatenates two regular expressions a and b. No character represents this operator; you simply put b after a. The result is a regular expression that will match a string if a matches its first part and b matches the rest. For example, ‘xy’ (two match-self operators) matches ‘xy’.
Next: Alternation Operator, Previous: Concatenation Operator, Up: Common Operators [Contents][Index]
Repetition operators repeat the preceding regular expression a specified number of times.
| • Match-zero-or-more Operator | * | |
| • Match-one-or-more Operator | + | |
| • Match-zero-or-one Operator | ? | |
| • Interval Operators | {} |
Next: Match-one-or-more Operator, Up: Repetition Operators [Contents][Index]
*)This operator repeats the smallest possible preceding regular expression as many times as necessary (including zero) to match the pattern. ‘*’ represents this operator. For example, ‘o*’ matches any string made up of zero or more ‘o’s. Since this operator operates on the smallest preceding regular expression, ‘fo*’ has a repeating ‘o’, not a repeating ‘fo’. So, ‘fo*’ matches ‘f’, ‘fo’, ‘foo’, and so on.
Since the match-zero-or-more operator is a suffix operator, it may be useless as such when no regular expression precedes it. This is the case when it:
Three different things can happen in these cases:
RE_CONTEXT_INVALID_OPS is set, then the
regular expression is invalid.
RE_CONTEXT_INVALID_OPS isn’t set, but
RE_CONTEXT_INDEP_OPS is, then ‘*’ represents the
match-zero-or-more operator (which then operates on the empty string).
The matcher processes a match-zero-or-more operator by first matching as many repetitions of the smallest preceding regular expression as it can. Then it continues to match the rest of the pattern.
If it can’t match the rest of the pattern, it backtracks (as many times as necessary), each time discarding one of the matches until it can either match the entire pattern or be certain that it cannot get a match. For example, when matching ‘ca*ar’ against ‘caaar’, the matcher first matches all three ‘a’s of the string with the ‘a*’ of the regular expression. However, it cannot then match the final ‘ar’ of the regular expression against the final ‘r’ of the string. So it backtracks, discarding the match of the last ‘a’ in the string. It can then match the remaining ‘ar’.
Next: Match-zero-or-one Operator, Previous: Match-zero-or-more Operator, Up: Repetition Operators [Contents][Index]
+ or \+)If the syntax bit RE_LIMITED_OPS is set, then Regex doesn’t recognize
this operator. Otherwise, if the syntax bit RE_BK_PLUS_QM isn’t
set, then ‘+’ represents this operator; if it is, then ‘\+’
does.
This operator is similar to the match-zero-or-more operator except that it repeats the preceding regular expression at least once; see Match-zero-or-more Operator, for what it operates on, how some syntax bits affect it, and how Regex backtracks to match it.
For example, supposing that ‘+’ represents the match-one-or-more operator; then ‘ca+r’ matches, e.g., ‘car’ and ‘caaaar’, but not ‘cr’.
Next: Interval Operators, Previous: Match-one-or-more Operator, Up: Repetition Operators [Contents][Index]
? or \?)If the syntax bit RE_LIMITED_OPS is set, then Regex doesn’t
recognize this operator. Otherwise, if the syntax bit
RE_BK_PLUS_QM isn’t set, then ‘?’ represents this operator;
if it is, then ‘\?’ does.
This operator is similar to the match-zero-or-more operator except that it repeats the preceding regular expression once or not at all; see Match-zero-or-more Operator, to see what it operates on, how some syntax bits affect it, and how Regex backtracks to match it.
For example, supposing that ‘?’ represents the match-zero-or-one operator; then ‘ca?r’ matches both ‘car’ and ‘cr’, but nothing else.
Previous: Match-zero-or-one Operator, Up: Repetition Operators [Contents][Index]
{ … } or \{ … \})If the syntax bit RE_INTERVALS is set, then Regex recognizes
interval expressions. They repeat the smallest possible preceding
regular expression a specified number of times.
If the syntax bit RE_NO_BK_BRACES is set, ‘{’ represents
the open-interval operator and ‘}’ represents the
close-interval operator ; otherwise, ‘\{’ and ‘\}’ do.
Specifically, supposing that ‘{’ and ‘}’ represent the open-interval and close-interval operators; then:
{count}matches exactly count occurrences of the preceding regular expression.
{min,}matches min or more occurrences of the preceding regular expression.
{min, max}matches at least min but no more than max occurrences of the preceding regular expression.
The interval expression (but not necessarily the regular expression that contains it) is invalid if:
RE_DUP_MAX (which symbol regex.h
defines).
If the interval expression is invalid and the syntax bit
RE_NO_BK_BRACES is set, then Regex considers all the
characters in the would-be interval to be ordinary. If that bit
isn’t set, then the regular expression is invalid.
If the interval expression is valid but there is no preceding regular
expression on which to operate, then if the syntax bit
RE_CONTEXT_INVALID_OPS is set, the regular expression is invalid.
If that bit isn’t set, then Regex considers all the characters—other
than backslashes, which it ignores—in the would-be interval to be
ordinary.
Next: List Operators, Previous: Repetition Operators, Up: Common Operators [Contents][Index]
| or \|)If the syntax bit RE_LIMITED_OPS is set, then Regex doesn’t
recognize this operator. Otherwise, if the syntax bit
RE_NO_BK_VBAR is set, then ‘|’ represents this operator;
otherwise, ‘\|’ does.
Alternatives match one of a choice of regular expressions: if you put the character(s) representing the alternation operator between any two regular expressions a and b, the result matches the union of the strings that a and b match. For example, supposing that ‘|’ is the alternation operator, then ‘foo|bar|quux’ would match any of ‘foo’, ‘bar’ or ‘quux’.
The alternation operator operates on the largest possible surrounding regular expressions. (Put another way, it has the lowest precedence of any regular expression operator.) Thus, the only way you can delimit its arguments is to use grouping. For example, if ‘(’ and ‘)’ are the open and close-group operators, then ‘fo(o|b)ar’ would match either ‘fooar’ or ‘fobar’. (‘foo|bar’ would match ‘foo’ or ‘bar’.)
The matcher usually tries all combinations of alternatives so as to match the longest possible string. For example, when matching ‘(fooq|foo)*(qbarquux|bar)’ against ‘fooqbarquux’, it cannot take, say, the first (“depth-first”) combination it could match, since then it would be content to match just ‘fooqbar’.
Note that since the default behavior is to return the leftmost longest match, when more than one of a series of alternatives matches the actual match will be the longest matching alternative, not necessarily the first in the list.
Next: Grouping Operators, Previous: Alternation Operator, Up: Common Operators [Contents][Index]
[ … ] and [^ … ])Lists, also called bracket expressions, are a set of one or more items. An item is a character, a collating symbol, an equivalence class expression, a character class expression, or a range expression. The syntax bits affect which kinds of items you can put in a list. We explain the last four items in subsections below. Empty lists are invalid.
A matching list matches a single character represented by one of the list items. You form a matching list by enclosing one or more items within an open-matching-list operator (represented by ‘[’) and a close-list operator (represented by ‘]’).
For example, ‘[ab]’ matches either ‘a’ or ‘b’. ‘[ad]*’ matches the empty string and any string composed of just ‘a’s and ‘d’s in any order. Regex considers invalid a regular expression with a ‘[’ but no matching ‘]’.
Nonmatching lists are similar to matching lists except that they match a single character not represented by one of the list items. You use an open-nonmatching-list operator (represented by ‘[^’4) instead of an open-matching-list operator to start a nonmatching list.
For example, ‘[^ab]’ matches any character except ‘a’ or ‘b’.
If the syntax bit RE_HAT_LISTS_NOT_NEWLINE is set, then
nonmatching lists do not match a newline.
Most characters lose any special meaning inside a list. The special characters inside a list follow.
ends the list if it’s not the first list item. So, if you want to make the ‘]’ character a list item, you must put it first.
quotes the next character if the syntax bit RE_BACKSLASH_ESCAPE_IN_LISTS is
set.
represents the open-collating-symbol operator (see Collating Symbol Operators).
represents the close-collating-symbol operator.
represents the open-equivalence-class operator (see Equivalence Class Operators).
represents the close-equivalence-class operator.
represents the open-character-class operator (see Character Class Operators) if the syntax bit RE_CHAR_CLASSES is set and what
follows is a valid character class expression.
represents the close-character-class operator if the syntax bit
RE_CHAR_CLASSES is set and what precedes it is an
open-character-class operator followed by a valid character class name.
represents the range operator (see Range Operator) if it’s not first or last in a list or the ending point of a range.
All other characters are ordinary. For example, ‘[.*]’ matches ‘.’ and ‘*’.
| • Collating Symbol Operators | [.elem.] | |
| • Equivalence Class Operators | [=class=] | |
| • Character Class Operators | [:class:] | |
| • Range Operator | start-end |
Next: Equivalence Class Operators, Up: List Operators [Contents][Index]
[. … .])Collating symbols can be represented inside lists. You form a collating symbol by putting a collating element between an open-collating-symbol operator and a close-collating-symbol operator. ‘[.’ represents the open-collating-symbol operator and ‘.]’ represents the close-collating-symbol operator. For example, if ‘ll’ is a collating element, then ‘[[.ll.]]’ would match ‘ll’.
Next: Character Class Operators, Previous: Collating Symbol Operators, Up: List Operators [Contents][Index]
[= … =])Regex recognizes equivalence class expressions inside lists. A equivalence class expression is a set of collating elements which all belong to the same equivalence class. You form an equivalence class expression by putting a collating element between an open-equivalence-class operator and a close-equivalence-class operator. ‘[=’ represents the open-equivalence-class operator and ‘=]’ represents the close-equivalence-class operator. For example, if ‘a’ and ‘A’ were an equivalence class, then both ‘[[=a=]]’ and ‘[[=A=]]’ would match both ‘a’ and ‘A’. If the collating element in an equivalence class expression isn’t part of an equivalence class, then the matcher considers the equivalence class expression to be a collating symbol.
Next: Range Operator, Previous: Equivalence Class Operators, Up: List Operators [Contents][Index]
[: … :])If the syntax bit RE_CHAR_CLASSES is set, then Regex recognizes
character class expressions inside lists. A character class
expression matches one character from a given class. You form a
character class expression by putting a character class name between
an open-character-class operator (represented by ‘[:’) and
a close-character-class operator (represented by ‘:]’).
The character class names and their meanings are:
alnumletters and digits
alphaletters
blanksystem-dependent; for GNU, a space or tab
cntrlcontrol characters (in the ASCII encoding, code 0177 and codes less than 040)
digitdigits
graphsame as print except omits space
lowerlowercase letters
printprintable characters (in the ASCII encoding, space tilde—codes 040 through 0176)
punctneither control nor alphanumeric characters
spacespace, carriage return, newline, vertical tab, and form feed
upperuppercase letters
xdigithexadecimal digits: 0–9, a–f, A–F
These correspond to the definitions in the C library’s <ctype.h>
facility. For example, ‘[:alpha:]’ corresponds to the standard
facility isalpha. Regex recognizes character class expressions
only inside of lists; so ‘[[:alpha:]]’ matches any letter, but
‘[:alpha:]’ outside of a bracket expression and not followed by a
repetition operator matches just itself.
Previous: Character Class Operators, Up: List Operators [Contents][Index]
-)Regex recognizes range expressions inside a list. They represent those characters that fall between two elements in the current collating sequence. You form a range expression by putting a range operator between two of any of the following: characters, collating elements, collating symbols, and equivalence class expressions. The starting point of the range and the ending point of the range don’t have to be the same kind of item, e.g., the starting point could be a collating element and the ending point could be an equivalence class expression. If a range’s ending point is an equivalence class, then all the collating elements in that class will be in the range.5 ‘-’ represents the range operator. For example, ‘a-f’ within a list represents all the characters from ‘a’ through ‘f’ inclusively.
If the syntax bit RE_NO_EMPTY_RANGES is set, then if the range’s
ending point collates less than its starting point, the range (and the
regular expression containing it) is invalid. For example, the regular
expression ‘[z-a]’ would be invalid. If this bit isn’t set, then
Regex considers such a range to be empty.
Since ‘-’ represents the range operator, if you want to make a ‘-’ character itself a list item, you must do one of the following:
For example, ‘[-a-z]’ matches a lowercase letter or a hyphen (in English, in ASCII).
Next: Back-reference Operator, Previous: List Operators, Up: Common Operators [Contents][Index]
( … ) or \( … \))A group, also known as a subexpression, consists of an open-group operator, any number of other operators, and a close-group operator. Regex treats this sequence as a unit, just as mathematics and programming languages treat a parenthesized expression as a unit.
Therefore, using groups, you can:
If the syntax bit RE_NO_BK_PARENS is set, then ‘(’ represents
the open-group operator and ‘)’ represents the
close-group operator; otherwise, ‘\(’ and ‘\)’ do.
If the syntax bit RE_UNMATCHED_RIGHT_PAREN_ORD is set and a
close-group operator has no matching open-group operator, then Regex
considers it to match ‘)’.
Next: Anchoring Operators, Previous: Grouping Operators, Up: Common Operators [Contents][Index]
If the syntax bit RE_NO_BK_REF isn’t set, then Regex recognizes
back-references. A back-reference matches a specified preceding group.
The back-reference operator is represented by ‘\digit’
anywhere after the end of a regular expression’s digit-th
group (see Grouping Operators).
digit must be between ‘1’ and ‘9’. The matcher assigns numbers 1 through 9 to the first nine groups it encounters. By using one of ‘\1’ through ‘\9’ after the corresponding group’s close-group operator, you can match a substring identical to the one that the group does.
Back-references match according to the following (in all examples below, ‘(’ represents the open-group, ‘)’ the close-group, ‘{’ the open-interval and ‘}’ the close-interval operator):
RE_DOT_NEWLINE isn’t set) string that is composed of two
identical halves; the ‘(.*)’ matches the first half and the
‘\1’ matches the second half.
You can use a back-reference as an argument to a repetition operator. For example, ‘(a(b))\2*’ matches ‘a’ followed by two or more ‘b’s. Similarly, ‘(a(b))\2{3}’ matches ‘abbbb’.
If there is no preceding digit-th subexpression, the regular expression is invalid.
Back-references can greatly slow down matching, as they can generate exponentially many matching possibilities that can consume both time and memory to explore. Also, the POSIX specification for back-references is at times unclear. Furthermore, many regular expression implementations have back-reference bugs that can cause programs to return incorrect answers or even crash, and fixing these bugs has often been low-priority: for example, as of 2020 the GNU C library bug database contained back-reference bugs 52, 10844, 11053, 24269 and 25322, with little sign of forthcoming fixes. Luckily, back-references are rarely useful and it should be little trouble to avoid them in practical applications.
Previous: Back-reference Operator, Up: Common Operators [Contents][Index]
These operators can constrain a pattern to match only at the beginning or end of the entire string or at the beginning or end of a line.
| • Match-beginning-of-line Operator | ^ | |
| • Match-end-of-line Operator | $ |
Next: Match-end-of-line Operator, Up: Anchoring Operators [Contents][Index]
^)This operator can match the empty string either at the beginning of the string or after a newline character. Thus, it is said to anchor the pattern to the beginning of a line.
In the cases following, ‘^’ represents this operator. (Otherwise, ‘^’ is ordinary.)
RE_CONTEXT_INDEP_ANCHORS is set, and it is outside
a bracket expression.
These rules imply that some valid patterns containing ‘^’ cannot be
matched; for example, ‘foo^bar’ if RE_CONTEXT_INDEP_ANCHORS
is set.
If the not_bol field is set in the pattern buffer (see GNU Pattern Buffers), then ‘^’ fails to match at the beginning of the
string. This lets you match against pieces of a line, as you would need to if,
say, searching for repeated instances of a given pattern in a line; it
would work correctly for patterns both with and without
match-beginning-of-line operators.
Previous: Match-beginning-of-line Operator, Up: Anchoring Operators [Contents][Index]
$)This operator can match the empty string either at the end of the string or before a newline character in the string. Thus, it is said to anchor the pattern to the end of a line.
It is always represented by ‘$’. For example, ‘foo$’ usually matches, e.g., ‘foo’ and, e.g., the first three characters of ‘foo\nbar’.
Its interaction with the syntax bits and pattern buffer fields is
exactly the dual of ‘^’’s; see the previous section. (That is,
“‘^’” becomes “‘$’”, “beginning” becomes “end”,
“next” becomes “previous”, “after” becomes “before”, and
“not_bol” becomes “not_eol”.)
Next: What Gets Matched?, Previous: Common Operators, Up: Regular expressions [Contents][Index]
The following are operators that GNU defines (and POSIX doesn’t) that
you can use unless the syntax bit RE_NO_GNU_OPS is set.
| • Word Operators | ||
| • Space Operators | ||
| • Whole-string Operators |
Next: Space Operators, Up: GNU Operators [Contents][Index]
The operators in this section require Regex to recognize parts of words.
Characters that are part of words, which are called
word-constituent, are letters, digits, and the underscore
(‘_’); more precisely, any character in the POSIX class
alnum in the current locale, or underscore.
Next: Match-within-word Operator, Up: Word Operators [Contents][Index]
\b)This operator (represented by ‘\b’) matches the empty string at either the beginning or the end of a word. For example, ‘\brat\b’ matches the separate word ‘rat’.
Next: Match-beginning-of-word Operator, Previous: Match-word-boundary Operator, Up: Word Operators [Contents][Index]
\B)This operator (represented by ‘\B’) matches the empty string within a word. For example, ‘c\Brat\Be’ matches ‘crate’, but ‘dirty \Brat’ doesn’t match ‘dirty rat’.
Next: Match-end-of-word Operator, Previous: Match-within-word Operator, Up: Word Operators [Contents][Index]
\<)This operator (represented by ‘\<’) matches the empty string at the beginning of a word.
Next: Match-word-constituent Operator, Previous: Match-beginning-of-word Operator, Up: Word Operators [Contents][Index]
\>)This operator (represented by ‘\>’) matches the empty string at the end of a word.
Next: Match-non-word-constituent Operator, Previous: Match-end-of-word Operator, Up: Word Operators [Contents][Index]
\w)This operator (represented by ‘\w’) matches any word-constituent character.
Previous: Match-word-constituent Operator, Up: Word Operators [Contents][Index]
\W)This operator (represented by ‘\W’) matches any character that is not word-constituent.
Next: Whole-string Operators, Previous: Word Operators, Up: GNU Operators [Contents][Index]
• The Match-space Operator (\s) | ||
• The Match-non-space Operator (\S) |
Next: Match-non-space Operator, Up: Space Operators [Contents][Index]
\s)This operator (represented by ‘\s’) matches any space
character (that is, in the POSIX class [:space:]).
Previous: Match-space Operator, Up: Space Operators [Contents][Index]
\S)This operator (represented by ‘\S’) matches any character
that is not a space (that is, in the POSIX class [:space:]).
Previous: Space Operators, Up: GNU Operators [Contents][Index]
Following are operators which work on the whole string.
| • Match-beginning-of-string Operator | \‘ | |
| • Match-end-of-string Operator | \’ |
Next: Match-end-of-string Operator, Up: Whole-string Operators [Contents][Index]
\`)This operator (represented by ‘\`’) matches the empty string at the beginning of the string.
Previous: Match-beginning-of-string Operator, Up: Whole-string Operators [Contents][Index]
\')This operator (represented by ‘\'’) matches the empty string at the end of the string.
Next: Programming with Regex, Previous: GNU Operators, Up: Regular expressions [Contents][Index]
Regex usually matches strings according to the “leftmost longest” rule; that is, it chooses the longest of the leftmost matches. This does not mean that for a regular expression containing subexpressions that it simply chooses the longest match for each subexpression, left to right; the overall match must also be the longest possible one.
For example, ‘(ac*)(c*d[ac]*)\1’ matches ‘acdacaaa’, not ‘acdac’, as it would if it were to choose the longest match for the first subexpression.
Next: Regular expression syntaxes, Previous: What Gets Matched?, Up: Regular expressions [Contents][Index]
Here we describe how you use the Regex data structures and functions in C programs. Regex has three interfaces: one designed for GNU, one compatible with POSIX (as specified by POSIX, draft 1003.2/D11.2), and one compatible with Berkeley Unix. The POSIX interface is not documented here; see the documentation of GNU libc, or the POSIX man pages. The Berkeley Unix interface is documented here for convenience, since its documentation is not otherwise readily available on GNU systems.
| • GNU Regex Functions | ||
| • BSD Regex Functions |
Next: BSD Regex Functions, Up: Programming with Regex [Contents][Index]
If you’re writing code that doesn’t need to be compatible with either POSIX or Berkeley Unix, you can use these functions. They provide more options than the other interfaces.
| • GNU Pattern Buffers | The re_pattern_buffer type. | |
| • GNU Regular Expression Compiling | re_compile_pattern () | |
| • GNU Matching | re_match () | |
| • GNU Searching | re_search () | |
| • Matching/Searching with Split Data | re_match_2 (), re_search_2 () | |
| • Searching with Fastmaps | re_compile_fastmap () | |
| • GNU Translate Tables | The translate field.
| |
| • Using Registers | The re_registers type and related fns. | |
| • Freeing GNU Pattern Buffers | regfree () |
Next: GNU Regular Expression Compiling, Up: GNU Regex Functions [Contents][Index]
To compile, match, or search for a given regular expression, you must supply a pattern buffer. A pattern buffer holds one compiled regular expression.6
You can have several different pattern buffers simultaneously, each holding a compiled pattern for a different regular expression.
regex.h defines the pattern buffer struct with the
following public fields:
unsigned char *buffer; unsigned long allocated; char *fastmap; char *translate; size_t re_nsub; unsigned no_sub : 1; unsigned not_bol : 1; unsigned not_eol : 1;
Next: GNU Matching, Previous: GNU Pattern Buffers, Up: GNU Regex Functions [Contents][Index]
In GNU, you can both match and search for a given regular expression. To do either, you must first compile it in a pattern buffer (see GNU Pattern Buffers).
Regular expressions match according to the syntax with which they were
compiled; with GNU, you indicate what syntax you want by setting
the variable re_syntax_options (declared in regex.h)
before calling the compiling function, re_compile_pattern (see
below). See Syntax Bits, and Predefined Syntaxes.
You can change the value of re_syntax_options at any time.
Usually, however, you set its value once and then never change it.
re_compile_pattern takes a pattern buffer as an argument. You
must initialize the following fields:
translate initializationtranslateInitialize this to point to a translate table if you want one, or to zero if you don’t. We explain translate tables in GNU Translate Tables.
fastmapInitialize this to nonzero if you want a fastmap, or to zero if you don’t.
bufferallocatedIf you want re_compile_pattern to allocate memory for the
compiled pattern, set both of these to zero. If you have an existing
block of memory (allocated with malloc) you want Regex to use,
set buffer to its address and allocated to its size (in
bytes).
re_compile_pattern uses realloc to extend the space for
the compiled pattern as necessary.
To compile a pattern buffer, use:
char *
re_compile_pattern (const char *regex, const int regex_size,
struct re_pattern_buffer *pattern_buffer)
regex is the regular expression’s address, regex_size is its length, and pattern_buffer is the pattern buffer’s address.
If re_compile_pattern successfully compiles the regular
expression, it returns zero and sets *pattern_buffer to the
compiled pattern. It sets the pattern buffer’s fields as follows:
bufferto the compiled pattern.
syntaxto the current value of re_syntax_options.
re_nsubto the number of subexpressions in regex.
If re_compile_pattern can’t compile regex, it returns an
error string corresponding to a POSIX error code.
Next: GNU Searching, Previous: GNU Regular Expression Compiling, Up: GNU Regex Functions [Contents][Index]
Matching the GNU way means trying to match as much of a string as possible starting at a position within it you specify. Once you’ve compiled a pattern into a pattern buffer (see GNU Regular Expression Compiling), you can ask the matcher to match that pattern against a string using:
int
re_match (struct re_pattern_buffer *pattern_buffer,
const char *string, const int size,
const int start, struct re_registers *regs)
pattern_buffer is the address of a pattern buffer containing a compiled pattern. string is the string you want to match; it can contain newline and null characters. size is the length of that string. start is the string index at which you want to begin matching; the first character of string is at index zero. See Using Registers, for an explanation of regs; you can safely pass zero.
re_match matches the regular expression in pattern_buffer
against the string string according to the syntax of
pattern_buffer. (See GNU Regular Expression Compiling, for how
to set it.) The function returns -1 if the compiled pattern does
not match any part of string and -2 if an internal error
happens; otherwise, it returns how many (possibly zero) characters of
string the pattern matched.
An example: suppose pattern_buffer points to a pattern buffer
containing the compiled pattern for ‘a*’, and string points
to ‘aaaaab’ (whereupon size should be 6). Then if start
is 2, re_match returns 3, i.e., ‘a*’ would have matched the
last three ‘a’s in string. If start is 0,
re_match returns 5, i.e., ‘a*’ would have matched all the
‘a’s in string. If start is either 5 or 6, it returns
zero.
If start is not between zero and size, then
re_match returns -1.
Next: Matching/Searching with Split Data, Previous: GNU Matching, Up: GNU Regex Functions [Contents][Index]
Searching means trying to match starting at successive positions
within a string. The function re_search does this.
Before calling re_search, you must compile your regular
expression. See GNU Regular Expression Compiling.
Here is the function declaration:
int
re_search (struct re_pattern_buffer *pattern_buffer,
const char *string, const int size,
const int start, const int range,
struct re_registers *regs)
whose arguments are the same as those to re_match (see GNU Matching) except that the two arguments start and range
replace re_match’s argument start.
If range is positive, then re_search attempts a match
starting first at index start, then at start + 1 if
that fails, and so on, up to start + range; if
range is negative, then it attempts a match starting first at
index start, then at start -1 if that fails, and so
on.
If start is not between zero and size, then re_search
returns -1. When range is positive, re_search
adjusts range so that start + range - 1 is
between zero and size, if necessary; that way it won’t search
outside of string. Similarly, when range is negative,
re_search adjusts range so that start +
range + 1 is between zero and size, if necessary.
If the fastmap field of pattern_buffer is zero,
re_search matches starting at consecutive positions; otherwise,
it uses fastmap to make the search more efficient.
See Searching with Fastmaps.
If no match is found, re_search returns -1. If
a match is found, it returns the index where the match began. If an
internal error happens, it returns -2.
Next: Searching with Fastmaps, Previous: GNU Searching, Up: GNU Regex Functions [Contents][Index]
Using the functions re_match_2 and re_search_2, you can
match or search in data that is divided into two strings.
The function:
int
re_match_2 (struct re_pattern_buffer *buffer,
const char *string1, const int size1,
const char *string2, const int size2,
const int start,
struct re_registers *regs,
const int stop)
is similar to re_match (see GNU Matching) except that you
pass two data strings and sizes, and an index stop beyond
which you don’t want the matcher to try matching. As with
re_match, if it succeeds, re_match_2 returns how many
characters of string it matched. Regard string1 and
string2 as concatenated when you set the arguments start and
stop and use the contents of regs; re_match_2 never
returns a value larger than size1 + size2.
The function:
int
re_search_2 (struct re_pattern_buffer *buffer,
const char *string1, const int size1,
const char *string2, const int size2,
const int start, const int range,
struct re_registers *regs,
const int stop)
is similarly related to re_search.
Next: GNU Translate Tables, Previous: Matching/Searching with Split Data, Up: GNU Regex Functions [Contents][Index]
If you’re searching through a long string, you should use a fastmap. Without one, the searcher tries to match at consecutive positions in the string. Generally, most of the characters in the string could not start a match. It takes much longer to try matching at a given position in the string than it does to check in a table whether or not the character at that position could start a match. A fastmap is such a table.
More specifically, a fastmap is an array indexed by the characters in
your character set. Under the ASCII encoding, therefore, a fastmap
has 256 elements. If you want the searcher to use a fastmap with a
given pattern buffer, you must allocate the array and assign the array’s
address to the pattern buffer’s fastmap field. You either can
compile the fastmap yourself or have re_search do it for you;
when fastmap is nonzero, it automatically compiles a fastmap the
first time you search using a particular compiled pattern.
By setting the buffer’s fastmap field before calling
re_compile_pattern, you can reuse a buffer data structure across
multiple searches with different patterns, and allocate the fastmap only
once. Nonetheless, the fastmap must be recompiled each time the buffer
has a new pattern compiled into it.
To compile a fastmap yourself, use:
int re_compile_fastmap (struct re_pattern_buffer *pattern_buffer)
pattern_buffer is the address of a pattern buffer. If the
character c could start a match for the pattern,
re_compile_fastmap makes
pattern_buffer->fastmap[c] nonzero. It returns
0 if it can compile a fastmap and -2 if there is an
internal error. For example, if ‘|’ is the alternation operator
and pattern_buffer holds the compiled pattern for ‘a|b’, then
re_compile_fastmap sets fastmap['a'] and
fastmap['b'] (and no others).
re_search uses a fastmap as it moves along in the string: it
checks the string’s characters until it finds one that’s in the fastmap.
Then it tries matching at that character. If the match fails, it
repeats the process. So, by using a fastmap, re_search doesn’t
waste time trying to match at positions in the string that couldn’t
start a match.
If you don’t want re_search to use a fastmap,
store zero in the fastmap field of the pattern buffer before
calling re_search.
Once you’ve initialized a pattern buffer’s fastmap field, you
need never do so again—even if you compile a new pattern in
it—provided the way the field is set still reflects whether or not you
want a fastmap. re_search will still either do nothing if
fastmap is null or, if it isn’t, compile a new fastmap for the
new pattern.
Next: Using Registers, Previous: Searching with Fastmaps, Up: GNU Regex Functions [Contents][Index]
If you set the translate field of a pattern buffer to a translate
table, then the GNU Regex functions to which you’ve passed that
pattern buffer use it to apply a simple transformation
to all the regular expression and string characters at which they look.
A translate table is an array indexed by the characters in your
character set. Under the ASCII encoding, therefore, a translate
table has 256 elements. The array’s elements are also characters in
your character set. When the Regex functions see a character c,
they use translate[c] in its place, with one exception: the
character after a ‘\’ is not translated. (This ensures that, the
operators, e.g., ‘\B’ and ‘\b’, are always distinguishable.)
For example, a table that maps all lowercase letters to the
corresponding uppercase ones would cause the matcher to ignore
differences in case.7 Such a table would map all characters except lowercase letters
to themselves, and lowercase letters to the corresponding uppercase
ones. Under the ASCII encoding, here’s how you could initialize
such a table (we’ll call it case_fold):
for (i = 0; i < 256; i++)
case_fold[i] = i;
for (i = 'a'; i <= 'z'; i++)
case_fold[i] = i - ('a' - 'A');
You tell Regex to use a translate table on a given pattern buffer by
assigning that table’s address to the translate field of that
buffer. If you don’t want Regex to do any translation, put zero into
this field. You’ll get weird results if you change the table’s contents
anytime between compiling the pattern buffer, compiling its fastmap, and
matching or searching with the pattern buffer.
Next: Freeing GNU Pattern Buffers, Previous: GNU Translate Tables, Up: GNU Regex Functions [Contents][Index]
A group in a regular expression can match a (possibly empty) substring of the string that regular expression as a whole matched. The matcher remembers the beginning and end of the substring matched by each group.
To find out what they matched, pass a nonzero regs argument to a GNU matching or searching function (see GNU Matching and GNU Searching), i.e., the address of a structure of this type, as defined in regex.h:
struct re_registers
{
unsigned num_regs;
regoff_t *start;
regoff_t *end;
};
Except for (possibly) the num_regs’th element (see below), the
ith element of the start and end arrays records
information about the ith group in the pattern. (They’re declared
as C pointers, but this is only because not all C compilers accept
zero-length arrays; conceptually, it is simplest to think of them as
arrays.)
The start and end arrays are allocated in one of two ways.
The simplest and perhaps most useful is to let the matcher (re)allocate
enough space to record information for all the groups in the regular
expression. If re_set_registers is not called before searching
or matching, then the matcher allocates two arrays each of 1 +
re_nsub elements (re_nsub is another field in the pattern
buffer; see GNU Pattern Buffers). The extra element is set to
-1. Then on subsequent calls with the same pattern buffer and
regs arguments, the matcher reallocates more space if necessary.
The function:
void
re_set_registers (struct re_pattern_buffer *buffer,
struct re_registers *regs,
size_t num_regs,
regoff_t *starts, regoff_t *ends)
sets regs to hold num_regs registers, storing
them in starts and ends. Subsequent matches using
buffer and regs will use this memory for recording
register information. starts and ends must be allocated
with malloc, and must each be at least num_regs *
sizeof (regoff_t) bytes long.
If num_regs is zero, then subsequent matches should allocate their own register data.
Unless this function is called, the first search or match using buffer will allocate its own register data, without freeing the old data.
The following examples illustrate the information recorded in the
re_registers structure. (In all of them, ‘(’ represents the
open-group and ‘)’ the close-group operator. The first character
in the string string is at index 0.)
regs->start[i] to the index in string where
the substring matched by the i-th group begins, and
regs->end[i] to the index just beyond that
substring’s end. The function sets regs->start[0] and
regs->end[0] to analogous information about the entire
pattern.
For example, when you match ‘((a)(b))’ against ‘ab’, you get:
regs->start[0] and 2 in regs->end[0]
regs->start[1] and 2 in regs->end[1]
regs->start[2] and 1 in regs->end[2]
regs->start[3] and 2 in regs->end[3]
For example, when you match the pattern ‘(a)*’ against the string ‘aa’, you get:
regs->start[0] and 2 in regs->end[0]
regs->start[1] and 2 in regs->end[1]
regs->start[i] and
regs->end[i] to -1.
For example, when you match the pattern ‘(a)*b’ against the string ‘b’, you get:
regs->start[0] and 1 in regs->end[0]
regs->start[1] and -1 in regs->end[1]
regs->start[i] and
regs->end[i] to the index just beyond that
zero-length string.
For example, when you match the pattern ‘(a*)b’ against the string ‘b’, you get:
regs->start[0] and 1 in regs->end[0]
regs->start[1] and 0 in regs->end[1]
regs->start[j] and
regs->end[j] the last match (if it matched) of
the j-th group.
For example, when you match the pattern ‘((a*)b)*’ against the string ‘abb’, group 2 last matches the empty string, so you get what it previously matched:
regs->start[0] and 3 in regs->end[0]
regs->start[1] and 3 in regs->end[1]
regs->start[2] and 2 in regs->end[2]
When you match the pattern ‘((a)*b)*’ against the string ‘abb’, group 2 doesn’t participate in the last match, so you get:
regs->start[0] and 3 in regs->end[0]
regs->start[1] and 3 in regs->end[1]
regs->start[2] and 1 in regs->end[2]
regs->start[i] and
regs->end[i] to -1, then it also sets
regs->start[j] and
regs->end[j] to -1.
For example, when you match the pattern ‘((a)*b)*c’ against the string ‘c’, you get:
regs->start[0] and 1 in regs->end[0]
regs->start[1] and -1 in regs->end[1]
regs->start[2] and -1 in regs->end[2]
Previous: Using Registers, Up: GNU Regex Functions [Contents][Index]
To free any allocated fields of a pattern buffer, use the POSIX
function regfree:
void regfree (regex_t *preg)
preg is the pattern buffer whose allocated fields you want freed;
this works because since the type regex_t—the type for
POSIX pattern buffers—is equivalent to the type
re_pattern_buffer.
regfree also sets preg’s allocated field to zero.
After a buffer has been freed, it must have a regular expression
compiled in it before passing it to a matching or searching function.
Previous: GNU Regex Functions, Up: Programming with Regex [Contents][Index]
If you’re writing code that has to be Berkeley Unix compatible, you’ll need to use these functions whose interfaces are the same as those in Berkeley Unix.
| • BSD Regular Expression Compiling | re_comp () | |
| • BSD Searching | re_exec () |
Next: BSD Searching, Up: BSD Regex Functions [Contents][Index]
With Berkeley Unix, you can only search for a given regular
expression; you can’t match one. To search for it, you must first
compile it. Before you compile it, you must indicate the regular
expression syntax you want it compiled according to by setting the
variable re_syntax_options (declared in regex.h) to some
syntax (see Regular Expression Syntax).
To compile a regular expression use:
char * re_comp (char *regex)
regex is the address of a null-terminated regular expression.
re_comp uses an internal pattern buffer, so you can use only the
most recently compiled pattern buffer. This means that if you want to
use a given regular expression that you’ve already compiled—but it
isn’t the latest one you’ve compiled—you’ll have to recompile it. If
you call re_comp with the null string (not the empty
string) as the argument, it doesn’t change the contents of the pattern
buffer.
If re_comp successfully compiles the regular expression, it
returns zero. If it can’t compile the regular expression, it returns
an error string. re_comp’s error messages are identical to those
of re_compile_pattern (see GNU Regular Expression Compiling).
Previous: BSD Regular Expression Compiling, Up: BSD Regex Functions [Contents][Index]
Searching the Berkeley Unix way means searching in a string
starting at its first character and trying successive positions within
it to find a match. Once you’ve compiled a pattern using re_comp
(see BSD Regular Expression Compiling), you can ask Regex
to search for that pattern in a string using:
int re_exec (char *string)
string is the address of the null-terminated string in which you want to search.
re_exec returns either 1 for success or 0 for failure. It
automatically uses a GNU fastmap (see Searching with Fastmaps).
Previous: Programming with Regex, Up: Regular expressions [Contents][Index]
Gnulib supports many different types of regular expressions; although the underlying features are the same or identical, the syntax used varies. The descriptions given here for the different types are generated automatically.
Next: ed regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character except the null character.
indicates that the regular expression should match one or more occurrences of the previous atom or regexp.
indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.
matches a ‘+’
matches a ‘?’.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ can be used to quote the following character. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are not supported and so ‘\w’, ‘\W’, ‘\<’, ‘\>’, ‘\b’, ‘\B’, ‘\`’, and ‘\'’ match ‘w’, ‘W’, ‘<’, ‘>’, ‘b’, ‘B’, ‘`’, and ‘'’ respectively.
Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself. A backslash followed by a digit matches that digit.
The alternation operator is ‘|’.
The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.
‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except:
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Next: egrep regular expression syntax, Previous: awk regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character except the null character.
indicates that the regular expression should match one or more occurrences of the previous atom or regexp.
indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.
match themselves.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are supported:
Grouping is performed with backslashes followed by parentheses ‘\(’, ‘\)’. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘\(’.
The alternation operator is ‘\|’.
The character ‘^’ only represents the beginning of a string when it appears:
The character ‘$’ only represents the end of a string when it appears:
‘\*’, ‘\+’ and ‘\?’ are special at any point in a regular expression except:
Intervals are specified by ‘\{’ and ‘\}’. Invalid intervals such as ‘a\{1z’ are not accepted.
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Next: emacs regular expression syntax, Previous: ed regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character.
indicates that the regular expression should match one or more occurrences of the previous atom or regexp.
indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.
matches a ‘+’
matches a ‘?’.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are supported:
Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘(’.
The alternation operator is ‘|’.
The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.
The characters ‘*’, ‘+’ and ‘?’ are special anywhere in a regular expression.
Intervals are specified by ‘{’ and ‘}’. Invalid intervals are treated as literals, for example ‘a{1’ is treated as ‘a\{1’
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Next: gnu-awk regular expression syntax, Previous: egrep regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character except newline.
indicates that the regular expression should match one or more occurrences of the previous atom or regexp.
indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.
matches a ‘+’
matches a ‘?’.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are ignored. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are supported:
Grouping is performed with backslashes followed by parentheses ‘\(’, ‘\)’. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘\(’.
The alternation operator is ‘\|’.
The character ‘^’ only represents the beginning of a string when it appears:
The character ‘$’ only represents the end of a string when it appears:
‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except:
Intervals are specified by ‘\{’ and ‘\}’. Invalid intervals such as ‘a\{1z’ are not accepted.
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Next: grep regular expression syntax, Previous: emacs regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character.
indicates that the regular expression should match one or more occurrences of the previous atom or regexp.
indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.
matches a ‘+’
matches a ‘?’.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ can be used to quote the following character. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are supported:
Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘(’.
The alternation operator is ‘|’.
The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.
‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except:
Intervals are specified by ‘{’ and ‘}’. Invalid intervals are treated as literals, for example ‘a{1’ is treated as ‘a\{1’
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Next: posix-awk regular expression syntax, Previous: gnu-awk regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character.
indicates that the regular expression should match one or more occurrences of the previous atom or regexp.
indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.
match themselves.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are supported:
Grouping is performed with backslashes followed by parentheses ‘\(’, ‘\)’. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘\(’.
The alternation operator is ‘\|’.
The character ‘^’ only represents the beginning of a string when it appears:
The character ‘$’ only represents the end of a string when it appears:
‘\*’, ‘\+’ and ‘\?’ are special at any point in a regular expression except:
Intervals are specified by ‘\{’ and ‘\}’. Invalid intervals such as ‘a\{1z’ are not accepted.
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Next: posix-basic regular expression syntax, Previous: grep regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character except the null character.
indicates that the regular expression should match one or more occurrences of the previous atom or regexp.
indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.
matches a ‘+’
matches a ‘?’.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ can be used to quote the following character. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are not supported and so ‘\w’, ‘\W’, ‘\<’, ‘\>’, ‘\b’, ‘\B’, ‘\`’, and ‘\'’ match ‘w’, ‘W’, ‘<’, ‘>’, ‘b’, ‘B’, ‘`’, and ‘'’ respectively.
Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘(’.
The alternation operator is ‘|’.
The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.
‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except the following places, where they are not allowed:
Intervals are specified by ‘{’ and ‘}’. Invalid intervals are treated as literals, for example ‘a{1’ is treated as ‘a\{1’
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Next: posix-egrep regular expression syntax, Previous: posix-awk regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
This is a synonym for ed.
Next: posix-extended regular expression syntax, Previous: posix-basic regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
This is a synonym for egrep.
Next: posix-minimal-basic regular expression syntax, Previous: posix-egrep regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character except the null character.
indicates that the regular expression should match one or more occurrences of the previous atom or regexp.
indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.
matches a ‘+’
matches a ‘?’.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are supported:
Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘(’.
The alternation operator is ‘|’.
The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.
‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except the following places, where they are not allowed:
Intervals are specified by ‘{’ and ‘}’. Invalid intervals such as ‘a{1z’ are not accepted.
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Next: sed regular expression syntax, Previous: posix-extended regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
The character ‘.’ matches any single character except the null character.
Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.
GNU extensions are supported:
Grouping is performed with backslashes followed by parentheses ‘\(’, ‘\)’. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘\(’.
The character ‘^’ only represents the beginning of a string when it appears:
The character ‘$’ only represents the end of a string when it appears:
Intervals are specified by ‘\{’ and ‘\}’. Invalid intervals such as ‘a\{1z’ are not accepted.
The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.
Previous: posix-minimal-basic regular expression syntax, Up: Regular expression syntaxes [Contents][Index]
This is a synonym for ed.
Next: Build Infrastructure Files, Previous: Regular expressions, Up: Top [Contents][Index]
Gnulib has a couple of modules that don’t provide code, but rather extend the GNU Build System. That is, they are convenience facilities for use with GNU Automake (in particular).
The following macros check for the presence or location of certain C, C++, or Fortran library archive files.
The macros AC_CHECK_LIB, AC_SEARCH_LIBS from GNU Autoconf check
for the presence of certain C, C++, or Fortran library archive files.
The libraries are looked up in the default linker path—a system dependent
list of directories, that usually contains the /usr/lib directory—and
those directories given by -L options in the LDFLAGS
variable.
The following macros, defined in the Gnulib module havelib, search for
the location of certain C, C++, or Fortran library archive files and make the
found location available to the compilation process and to further Autoconf
tests.
AC_LIB_LINKFLAGS(name, [dependencies])Searches for lib<name> and the libraries corresponding to
explicit and implicit dependencies. Sets and AC_SUBSTs the
LIB<NAME> and LTLIB<NAME> variables (with
<NAME> in upper case) and augments the CPPFLAGS variable
by -I options.
This macro should be used when lib<name> is expected to be found.
AC_LIB_HAVE_LINKFLAGS(name, [dependencies], [includes], [testcode], [missing-message])Searches for lib<name> and the libraries corresponding to
explicit and implicit dependencies, together with the specified include files
and the ability to compile and link the specified testcode. The
missing-message defaults to no and may contain additional hints
for the user. If found, it sets and AC_SUBSTs HAVE_LIB<NAME>=yes
and the LIB<NAME> and LTLIB<NAME> variables (with
<NAME> in upper case) and augments the CPPFLAGS variable
by -I options, and #defines HAVE_LIB<NAME> to 1.
Otherwise, it sets and AC_SUBSTs HAVE_LIB<NAME>=no and
LIB<NAME> and LTLIB<NAME> to empty.
These macros assume that when a library is installed in
some_directory/lib, its include files are installed in
some_directory/include.
The complexities that AC_LIB_LINKFLAGS and AC_LIB_HAVE_LINKFLAGS
deal with are the following:
CPPFLAGS for
the include file search path, LDFLAGS for the library search path).
The macro provides a ‘--with-lib<name>’ option. The user of the
‘configure’ script can use this option to indicate the location of the
library and its include files. If not provided, the --prefix directory
is searched as well.
LD_LIBRARY_PATH, the macro adds the appropriate run time search path
options to the LIB<NAME> variable. This works on most systems.
It can also be inhibited: The user of ‘configure’ can use the
--disable-rpath option to force an installation that doesn’t contain
hardcoded library search paths but instead may require the use of an
environment variable like LD_LIBRARY_PATH.
The macros also set a variable LTLIB<NAME>, that should be used
when linking with libtool. Both LTLIB<NAME> and
LIB<NAME> contain essentially the same option, but where
LIB<NAME> contains platform dependent flags like
‘-Wl,-rpath’, LTLIB<NAME> contains platform independent
flags like ‘-R’.
If you, by mistake, use LIB<NAME> instead of
LTLIB<NAME> when linking with libtool, you will observe that the
binaries created in the build dir will prefer the shared libraries in the
installation directories over the shared libraries in the build dir; this can
lead to all sorts of build failures, test failures, or crashes!
If you, on the other hand, by mistake, use LTLIB<NAME> instead of
LIB<NAME> when linking without libtool, you will observe
build failures, because the ‘-R’ options contained in
LTLIB<NAME> are not valid options to compilers such as GCC.
AC_LIB_LINKFLAGSSuppose you want to use libz, the compression library.
AC_CONFIG_AUX_DIR([build-aux]) AC_LIB_LINKFLAGS([z])
Note that since the AC_LIB_LINKFLAGS invocation modifies the CPPFLAGS,
it should precede all tests that check for header files, declarations,
structures or types.
havelib module.
(gnulib-tool will usually do this for you automatically.)
Makefile.in you add @LIBZ@ to the link command line of
your program. Or, if you are using Automake, you add $(LIBZ) to the
LDADD variable that corresponds to your program.
The dependencies list is a space separated list of library names that
libname is known to depend upon. Example: If libfooy
depends on libfoox, and libfooz depends on libfoox and
libfooy, you can write:
AC_LIB_LINKFLAGS([foox]) AC_LIB_LINKFLAGS([fooy], [foox]) AC_LIB_LINKFLAGS([fooz], [foox fooy])
Explicit dependencies are necessary if you cannot assume that a .la
file, created by libtool, is installed. If you can assume that
libfooy.la is installed by libtool (and has not been omitted by the
package distributor!), you can omit the explicit dependency and just write
AC_LIB_LINKFLAGS([fooy])
This way, you don’t need to know in advance which libraries the needed library depends upon.
The macros find the libraries regardless whether they are installed as shared or static libraries.
CPPFLAGS vs. LDFLAGSThe macros determine the directories that should be added to the compiler
preprocessor’s search path and to the linker’s search path. For the
compiler preprocessor, -I options with the necessary directories are
added to the CPPFLAGS variable, for use by the whole package. For
the linker, appropriate options are added to the LIB<NAME> and
LTLIB<NAME> variables, for use during linking by those programs
and libraries that need the dependency on lib<name>. You need
to use the value of LIB<NAME> or LTLIB<NAME> in the
Makefiles. LTLIB<NAME> is for use with libtool, whereas
LIB<NAME> is for when libtool is not involved in linking.
The macros do not check whether the include files and the library found match. If you want to verify this at configure time, one technique is to have a version number in the include files and a version number in the library, like this:
#define LIBNAME_VERSION 10203 extern int libname_version; /* initialized to LIBNAME_VERSION */
and use a test like
AC_TRY_RUN([int main () { return libname_version != LIBNAME_VERSION; }])
A bi-arch system is one where
On several types of such systems, for historical reasons, the 32-bit libraries are installed in prefix/lib, whereas the 64-bit libraries are installed in
On such systems, in 64-bit mode, configure will search for the
libraries in prefix/lib64 or prefix/lib/64,
respectively, not in prefix/lib. A user can adhere to these
system-wide conventions by using the ‘--libdir’ option when installing
packages. When a user has already installed packages in 64-bit mode using
the GNU default ‘--libdir=prefix/lib’, he can make this directory
adhere to the system-wide convention by placing a symbolic link:
ln -s lib prefix/lib64
ln -s . prefix/lib/64
Next: LD Version Scripts, Previous: Searching for Libraries, Up: Build Infrastructure Modules [Contents][Index]
The lib-symbol-visibility module allows precise control of the
symbols exported by a shared library. This is useful because
LD_PRELOAD.) Whereas a call to a function for which the compiler
can assume that it is in the same shared library is just a direct “call”
instructions. Similarly for variables: A reference to a global variable
fetches a pointer in the so-called GOT (global offset table); this is a
pointer to the variable’s memory. So the code to access it is two memory
load instructions. Whereas for a variable which is known to reside in the
same shared library, it is just a direct memory access: one memory load
instruction.
There are traditionally three ways to specify the exported symbols of a shared library.
The upside of this approach is flexibility: it allows the same code to be used in different libraries with different export lists. The downsides are: 1. it’s a lot of maintenance overhead when the symbol list is platform dependent, 2. it doesn’t work well with C++, due to name mangling.
The drawbacks of this approach are: Symbols are still exported from the library by default. It’s a lot of maintenance work to mark every non- exported variable and function. But usually the exported API is quite small, compared to the internal API of the library. And it’s the wrong paradigm: It doesn’t force thinking when introducing new exported API.
This is perfect: It burdens the maintainer only for exported API, not for library-internal API. And it keeps the annotations in the source code.
GNU libtool’s -export-symbols option implements the first approach.
The script declared.sh from Gnulib can help to produce the list of
symbols.
This gnulib module implements the third approach. For this it relies on GNU GCC 4.0 or newer, namely on its ‘-fvisibility=hidden’ command-line option and the “visibility” attribute. (The “visibility” attribute was already supported in GCC 3.4, but without the command line option, introduced in GCC 4.0, the third approach could not be used.)
More explanations on this subject can be found in https://gcc.gnu.org/wiki/Visibility, which contains more details on the GCC features and additional advice for C++ libraries, and in Ulrich Drepper’s paper https://www.akkadia.org/drepper/dsohowto.pdf, which also explains other tricks for reducing the startup time impact of shared libraries.
The gnulib autoconf macro gl_VISIBILITY tests for GCC 4.0 or newer.
It defines a Makefile variable @CFLAG_VISIBILITY@ containing
‘-fvisibility=hidden’ or nothing. It also defines as a C macro and
as a substituted variable: @HAVE_VISIBILITY@. Its value is 1 when symbol
visibility control is supported, and 0 otherwise.
As of 2022, symbol visibility control is supported on
It is not supported on
To use this module in a library, say libfoo, you will do these steps:
@CFLAG_VISIBILITY@ or (in a Makefile.am)
$(CFLAG_VISIBILITY) to the CFLAGS for the compilation of the sources
that make up the library.
#if HAVE_VISIBILITY && BUILDING_LIBFOO
# define LIBFOO_SHLIB_EXPORTED __attribute__((__visibility__("default")))
#else
# define LIBFOO_SHLIB_EXPORTED
#endif
This macro should be enabled in all public header files of your library.
Note that the precise control of the exported symbols will not work with other compilers than GCC >= 4.0, and will not work on systems where the assembler or linker lack the support of “hidden” visibility. Therefore, it’s good if, in order to reduce the risk of collisions with symbols in other libraries, you continue to use a prefix specific to your library for all non-static variables and functions and for all C++ classes in your library.
Note about other compilers: MSVC support can be added easily, by extending the definition of the macro mentioned above, to something like this:
#if HAVE_VISIBILITY && BUILDING_LIBFOO
# define LIBFOO_SHLIB_EXPORTED __attribute__((__visibility__("default")))
#elif (defined _WIN32 && !defined __CYGWIN__) && @BUILDING_SHARED@ && BUILDING_LIBFOO
# if defined DLL_EXPORT
# define LIBFOO_SHLIB_EXPORTED __declspec(dllexport)
# else
# define LIBFOO_SHLIB_EXPORTED
# endif
#elif (defined _WIN32 && !defined __CYGWIN__) && @BUILDING_SHARED@
# define LIBFOO_SHLIB_EXPORTED __declspec(dllimport)
#else
# define LIBFOO_SHLIB_EXPORTED
#endif
Here BUILDING_SHARED is an Autoconf variable that you have to define.
It ought to evaluate to 1 in a build configured with ‘--enable-shared’,
or to 0 in a build configured with ‘--disable-shared’.
You may use the following ‘configure.ac’ snippet:
if test "$enable_shared" = yes; then
BUILDING_SHARED=1
else
BUILDING_SHARED=0
fi
AC_SUBST([BUILDING_SHARED])
And DLL_EXPORT is defined by Libtool, on Windows platforms, when
compiling for a shared library (called DLL under Windows).
It is not defined when Libtool compiles an object file meant to be linked
statically into some executable.
Next: configmake, Previous: Exported Symbols of Shared Libraries, Up: Build Infrastructure Modules [Contents][Index]
The lib-symbol-versions module can be used to add shared
library versioning support. Currently, only GNU LD and the Solaris
linker supports this.
Version scripts provides information that can be used by GNU/Linux
distribution packaging tools. For example, Debian has a tool
dpkg-shlibdeps that can determine the minimal required version
of each dependency (by looking at the symbol list) and stuff the
information into the Debian specific packaging files.
For more information and other uses of version scripts, see Ulrich Drepper’s paper https://www.akkadia.org/drepper/dsohowto.pdf
You use the module by importing it to your library, and then add the
following lines to the Makefile.am that builds the library:
if HAVE_LD_VERSION_SCRIPT libfoo_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libfoo.map endif
The version script file format is documented in the GNU LD manual, but a small example would be:
LIBFOO_1.0 {
global:
libfoo_init; libfoo_doit; libfoo_done;
local:
*;
};
If you target platforms that do not support linker scripts (i.e., all
platforms that doesn’t use GNU LD) you may want to consider a more
portable but less powerful alternative: libtool
-export-symbols. It will hide internal symbols from your
library, but will not add ELF versioning symbols. Your usage would
then be something like:
if HAVE_LD_VERSION_SCRIPT libfoo_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libfoo.map else libfoo_la_LDFLAGS += -export-symbols $(srcdir)/libfoo.sym endif
See the Libtool manual for the file syntax, but a small example would be:
libfoo_init libfoo_doit libfoo_done
To avoid the need for a *.sym file if your symbols are easily
expressed using a regular expression, you may use
-export-symbols-regex:
if HAVE_LD_VERSION_SCRIPT libfoo_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libfoo.map else libfoo_la_LDFLAGS += -export-symbols-regex '^libfoo_.*' endif
For more discussions about symbol visibility, rather than shared
library versioning, see the lib-symbol-visibility module
(see Exported Symbols of Shared Libraries).
Next: warnings, Previous: LD Version Scripts, Up: Build Infrastructure Modules [Contents][Index]
The configmake module builds a C include file named
configmake.h containing the usual installation directory
values; for example, those specified by --prefix or
--libdir to configure. Each variable is given a #define
with an all-uppercase macro name, such as PREFIX and
LIBDIR. (Automake cannot create this file directly because the
user might override directory values at make time.)
Specifically, the module retrieves values of the variables through
configure followed by make, not directly through
configure, so that a user who sets some of these variables
consistently on the make command line gets correct results.
One advantage of this approach, compared to the classical approach of
adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS, is
that it protects against the use of undefined variables. That is, if,
say, $(libdir) is not set in the Makefile, LIBDIR is not
defined by this module, and code using LIBDIR gives a
compilation error.
Another advantage is that make output is shorter.
For the complete list of variables which are #defined this way,
see the file gnulib/modules/configmake, or inspect your
resulting gnulib Makefile.
Next: manywarnings, Previous: configmake, Up: Build Infrastructure Modules [Contents][Index]
The warnings module allows regularly building a package with more
GCC warnings than the default warnings emitted by GCC. It is often used
indirectly through the manywarnings module
(see manywarnings).
It provides the following functionality:
CFLAGS variable at configuration time.
CFLAGS does not work in general, because it may
break autoconfiguration.)
configure with an option such as
--enable-gcc-warnings.
To use this module, you need the following:
gl_WARN_ADD([-Wall], [WARN_CFLAGS]) gl_WARN_ADD([-Wpointer-arith], [WARN_CFLAGS])
WARN_CFLAGS, use it in the
definition of AM_CFLAGS, like this:
AM_CFLAGS = $(WARN_CFLAGS)
Note that the AM_CFLAGS is used in combination with CFLAGS
and before CFLAGS in build rules emitted by Automake. This allows
the user to provide CFLAGS that override the WARN_CFLAGS.
‘gl_WARN_ADD([-Werror])’ is intended for developers, and should be avoided in contexts where it would affect ordinary installation builds. The warnings emitted by GCC depend, to some extent, on the contents of the system header files, on the size and signedness of built-in types, etc. Use of ‘-Werror’ would cause frustration to all users on platforms that the maintainer has not tested before the release. It is better if ‘-Werror’ is off by default, and is enabled only by developers. For example, ‘-Werror’ could affect ‘make distcheck’ or ‘configure --enable-gcc-warnings’ as mentioned above.
Next: Running self-tests under valgrind, Previous: warnings, Up: Build Infrastructure Modules [Contents][Index]
The manywarnings module enables many GCC warnings for your
package. Here is an example use:
AC_ARG_ENABLE([gcc-warnings],
[AS_HELP_STRING([[--enable-gcc-warnings[=TYPE]]],
[control generation of GCC warnings. The TYPE 'no' disables
warnings; 'yes' (default) generates cheap warnings;
'expensive' in addition generates expensive warnings.])])
AS_IF([test "$enable_gcc_warnings" != no],
[
# Set up the list of unwanted warning options.
nw=
if test "$enable_gcc_warnings" != expensive; then
nw="$nw -fanalyzer"
fi
nw="$nw -Wbad-function-cast" # Casting a function's result is not more
# dangerous than casting any other value.
nw="$nw -Winline" # It's OK to not inline.
nw="$nw -Wsign-compare" # Too many false alarms.
nw="$nw -Wstrict-overflow" # It's OK to optimize strictly.
nw="$nw -Wsystem-headers" # Don't warn in system headers.
# Setup the list of meaningful warning options for the C compiler.
# The list comes from manywarnings.m4. Warning options that are not
# generally meaningful have already been filtered out (cf.
# build-aux/gcc-warning.spec).
gl_MANYWARN_ALL_GCC([possible_warning_options])
# Compute the list of warning options that are desired.
gl_MANYWARN_COMPLEMENT([desired_warning_options],
[$possible_warning_options], [$nw])
# Compute the list of remaining undesired warning options.
# Namely those, that were not in manywarnings.m4 because they were
# already listed in build-aux/gcc-warning.spec; this includes those
# that are implied by -Wall.
gl_MANYWARN_COMPLEMENT([remaining_undesired_warning_options],
[$nw], [$possible_warning_options])
# Add the desired warning options to WARN_CFLAGS.
for w in $desired_warning_options; do
gl_WARN_ADD([$w])
done
# Add the opposites of the remaining undesired warning options to
# WARN_CFLAGS.
for w in `echo "$remaining_undesired_warning_options" | sed -e 's/-W/-Wno-/g'`; do
gl_WARN_ADD([$w])
done
])
This module sets up many GCC warning options.
When you use it for the first time, it is common practice to do it as follows:
-Wstrict-overflow or
-Wunsafe-loop-optimizations).
configure default to -O2 optimization.
If you also commonly build with -O0 or other optimization options,
you can compile again with those options.
Using more optimizations catches more bugs, because the compiler does
a better static analysis of the program when optimizing more.
Also, some warning options that diagnose suboptimal code generation,
such as -Winline, are not effective when not optimizing.
On the other hand, if it’s frequent to build the package with warnings but
without optimizations, for debugging purposes, then you don’t want to see
undesired warnings in these phases of development either.
nw value, that is, with all
possible warnings enabled.
$ grep warning: make-output.log \ | sed -e 's/^\(.*\) \[\(-W.*\)\]$/\2 \1/' | sort -k1
Many GCC warning options usually don’t point to mistakes in the code; these warnings enforce a certain programming style. It is a project management decision whether you want your code to follow any of these styles. Note that some of these programming styles are conflicting. You cannot have them all; you have to choose among them.
When a warning option pinpoints real bugs occasionally, but it also
whines about a few code locations which are fine, we recommend to leave
the warning option enabled.
Whether you then live with the remaining few warnings, or choose to
disable them one-by-one through
#pragma GCC diagnostic ignored "option"
(see Diagnostic Pragmas in Using the GNU Compiler Collection,
https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html),
is again a project management decision.
When a new major version of GCC is released, the Gnulib maintainers add
the newly available warning options into the gl_MANYWARN_ALL_GCC
macro.
You will then enjoy the benefits of the new warnings, simply by updating
to the newest Gnulib.
If some of the new warnings are undesired, you can add them to the
‘nw’ variable, as described above.
Comments on particular warning flags:
The manywarnings module by default uses GCC’s
-fanalyzer option, as this issues some useful warnings.
(It can also help GCC generate better code.)
However, -fanalyzer can greatly slow down compilation,
and in programs with large modules it can be so slow as to be unusable,
so it is common for configure to disable it unless
configure is given an option like
--enable-gcc-warnings=expensive.
Although the manywarnings module does not enable GCC’s
-fstrict-aliasing option, it is enabled by default if you
compile with -O2 or higher optimization, and can help GCC
generate better warnings.
The -fanalyzer option generates many false alarms about
malloc leaks, which manywarnings suppresses by also
using -Wno-analyzer-malloc-leak.
The manywarnings module by default uses GCC’s
-fstrict-flex-arrays option if available, so that GCC can
warn about nonportable usage of flexible array members.
In a few cases this can help GCC generate better code,
so it is not strictly a warning option.
GCC and Clang generate too many false alarms with -Wsign-compare,
and we don’t recommend that warning. You can disable it by using
gl_WARN_ADD([-Wno-sign-compare]) as illustrated above.
Programs using Gnulib generally don’t enable
that warning when compiling Gnulib code. If you happen to find a real
bug with that warning we’d like to know it.
Next: Package version management, Previous: manywarnings, Up: Build Infrastructure Modules [Contents][Index]
For projects written in C or similar languages, running the self-tests
under Valgrind can reveal hard to find memory issues. Gnulib supports
two ways to make use of Valgrind: one that enables use of Valgrind at
configure time, when configure found it to be present; and one
at the discretion of the developer.
| • Using valgrind automatically | ||
| • Valgrind options | ||
| • Using valgrind manually | ||
| • Valgrind and shell scripts |
Next: Valgrind options, Up: Running self-tests under valgrind [Contents][Index]
The valgrind-tests module searches for Valgrind at configure time
and declares the LOG_VALGRIND automake variable for use with
automake’s LOG_COMPILER.
After importing the valgrind-tests module to your project, you
use it by adding the following to the Makefile.am that runs the
self-tests:
LOG_COMPILER = $(LOG_VALGRIND)
This will run all self-checks under valgrind.
Replace LOG_COMPILER with TESTS_ENVIRONMENT if you are
using the old serial test harness. The parallel test harness has been
the default in automake since version 1.11.3, but if you are using an
older automake, or put ‘serial-tests’ in
‘AM_INIT_AUTOMAKE’/‘AUTOMAKE_OPTIONS’ you would still be using
the serial test harness.
If you desire a project-wide decision that valgrind is not enabled by
default, but still allow users to enable it with
--enable-valgrind-tests you may put the following in configure.ac
before gl_INIT.
gl_VALGRIND_TESTS_DEFAULT_NO
Next: Using valgrind manually, Previous: Using valgrind automatically, Up: Running self-tests under valgrind [Contents][Index]
The VALGRIND variable holds the name of the valgrind binary and
some options passed to valgrind. You may provide additional options
that are passed to valgrind using the ‘VALGRINDFLAGS’ variable, for
example:
./configure VALGRINDFLAGS="--suppressions=~/local.supp"
Alternatively during build phase:
make check VALGRINDFLAGS="--suppressions=~/local.supp"
This is useful if you have a valgrind suppression files that are needed to avoid triggering errors for known errors, typically in system libraries.
The VALGRIND variable include options that are useful when
valgrind is run non-interactively through the test harness. The default
parameters are -q to silence the output,
--error-exitcode=1 to cause valgrind errors to be treated as
fatal errors, and --leak-check=full to check for memory leaks.
These options can be controlled through the DEFAULT_VALGRINDFLAGS
variable. For example, when configuring the package:
./configure DEFAULT_VALGRINDFLAGS="--quiet"
Alternatively, during the build phase:
make check DEFAULT_VALGRINDFLAGS="--quiet"
That would have the effect of removing --error-exitcode=1 and
--leak-check=full from the default options, thus causing any
valgrind errors to be silently ignored, instead of causing fatal test
failures.
As a developer you may use the variables in configure.ac before
calling gl_INIT, like this if your program has deeply-nested call
chains:
gl_EARLY ... VALGRINDFLAGS="$VALGRINDFLAGS --num-callers=42" ... gl_INIT
Note that any user-supplied VALGRINDFLAGS value is preserved,
which is usually what you want.
Finally, as a developer you may want to provide additional per-directory
options to valgrind and the AM_VALGRINDFLAGS variable can be used
for this. For example:
AM_VALGRINDFLAGS = --suppressions=$(srcdir)/local-valgrind.supp LOG_COMPILER = $(LOG_VALGRIND)
Next: Valgrind and shell scripts, Previous: Valgrind options, Up: Running self-tests under valgrind [Contents][Index]
In this approach, you define a Makefile.am variable ‘VALGRIND’
(or, more abstractly, ‘CHECKER’), that is usually set to empty.
When you have configured and built the package and you decide that you want
to run the tests with valgrind, you do so by modifying the definition of
‘VALGRIND’ in the Makefile.
Previous: Using valgrind manually, Up: Running self-tests under valgrind [Contents][Index]
It is not desirable to apply valgrind to shell scripts or other non-binaries, because
There are two ways to avoid this:
TEST_EXTENSIONS = .pl .sh LOG_COMPILER = $(LOG_VALGRIND)
Then valgrind will only be used for the non-.sh and non-.pl tests.
For old automake (before 1.11.3), you will need AUTOMAKE_OPTIONS =
parallel-tests to enable the parallel test harness.
build-aux/run-test script from Gnulib.
Add these lines to your Makefile.am:
LOG_COMPILER += $(SHELL) $(top_srcdir)/build-aux/run-test '$(LOG_VALGRIND)'
Replace LOG_COMPILER with TESTS_ENVIRONMENT if you use the
old serial test harness.
However, with this measure in place, binaries invoked through scripts will
not be invoked under valgrind. This can be solved by defining environment
variables in the TESTS_ENVIRONMENT variable that are then used by the
shell scripts. For example, add the following:
TESTS_ENVIRONMENT = VALGRIND='$(LOG_VALGRIND)'
And then modify the shell scripts to invoke the binary prefixed with
$VALGRIND.
Next: VCS To ChangeLog, Previous: Running self-tests under valgrind, Up: Build Infrastructure Modules [Contents][Index]
The goals of a package maintainer, when dealing with the version number of a package, are:
program --version.
package-version.tar.gz.
package-version.
program --version.
Here’s how the GNU Build System and Gnulib achieve these goals.
| • Setting the package version | ||
| • Propagating the package version | ||
| • Using the package version |
When the maintainer has decided about the version number for the next build (and likely also the next tarball), they implement that decision by storing this version number in a file named .tarball-version at the top level of the package. This is a simple one-line text file.
The maintainer can, alternatively, decide to let the git version be the version number. To implement this choice, they remove the file .tarball-version at the top level of the package.
The actual version number comes from an invocation of
the program git-version-gen,
part of the Gnulib module git-version-gen.
It looks at the file .tarball-version, if that exists,
and at the current checkout, otherwise.
The file .tarball-version should not be put under version control.
Therefore you may want to list it
in the package’s top-level .gitignore file.
But you need a Makefile.am rule that will
make sure that .tarball-version will exist in distribution tarballs:
dist-hook: dist-tarball-version .PHONY: dist-tarball-version dist-tarball-version: echo '$(VERSION)' > $(distdir)/.tarball-version
Typically, the maintainer will set the version number in a clean directory
(i.e. after “make distclean”).
In order to adapt to alternative workflows,
the file GNUmakefile, part of the Gnulib module gnumakefile,
contains a rule that will print a warning or possibly call autoreconf
if it finds that the version has changed but has not yet been propagated.
Reminder: Not every package supports autoreconf.
Next: Using the package version, Previous: Setting the package version, Up: Package version management [Contents][Index]
At the end of a configure run,
config.status is run,
that creates various files with embedded pieces of information.
It thus propagates the values of various variables
to various files in the build tree
(most notably, Makefiles and config.h).
One such propagated value is
the value of the Automake-defined variable $(VERSION).
(There is also the Autoconf-defined variable $(PACKAGE_VERSION),
but nothing except Automake ought to use it.)
For $(VERSION) to have a sensible value,
a few lines are needed in configure.ac.
The recommended code pattern is
AC_INIT([package], [package])
AC_CONFIG_SRCDIR([unique-file-in-source-dir])
AC_CONFIG_AUX_DIR([build-aux])
VERSION_NUMBER=`cd $srcdir \
&& build-aux/git-version-gen .tarball-version`
gl_INIT_PACKAGE_VERSION([$VERSION_NUMBER])
AM_INIT_AUTOMAKE([options])
With this code pattern,
the contents of the file .tarball-version and the git status
are considered when configure is run.
Two older code patterns are deprecated, because they read
the contents of the file .tarball-version and the git status
when autoconf is run, not when configure is run.
These older code patterns thus require a longer turnaround cycle
when the maintainer has changed the version number.
The first such old code pattern
is to set the version number directly in configure.ac:
AC_INIT([package, version]) AC_CONFIG_SRCDIR([unique-file-in-source-dir]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([options])
The second such old code pattern
is to invoke git-version-gen at autoconf time:
AC_INIT([package],
m4_esyscmd([build-aux/git-version-gen .tarball-version])])
AC_CONFIG_SRCDIR([unique-file-in-source-dir])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([options])
The macro gl_INIT_PACKAGE_VERSION
is defined in the Gnulib module package-version.
Previous: Propagating the package version, Up: Package version management [Contents][Index]
Once propagated through config.status,
the value of $(VERSION) can appear anywhere in built files.
For built files that are
distributed (that is, not erased by “make distclean”),
it is important to add a dependency in the Makefile.am,
so that the file gets rebuilt:
built-file: $(top_builddir)/config.status
For files that are erased by “make distclean”, this is not really necessary, because
.o files depend on config.h,
which is rebuilt when configure runs.
Thus, only in packages that don’t use Gnulib would a dependency such as
hello-hello.$(OBJEXT): $(top_builddir)/config.status
be needed.
Notice that
config.status usually changes much more often than the version number.
Therefore, for built files which depend
only on $(VERSION) and not on other variables,
the following optimized technique can be used.
The technique consists of keeping a file named $(top_srcdir)/.version,
which is a timestamp file.
Its modification time represents the last time
the value of $(VERSION) was changed.
Its contents is an undocumented implementation detail.
With such a file, the dependency in Makefile.am becomes:
built-file: $(top_srcdir)/.version
In order to prepare for using $(top_srcdir)/.version,
three modifications in the package are needed:
configure.ac file,
add an invocation of the macro gl_CONFIG_VERSION_STAMP,
near the end (before AC_OUTPUT).
This macro is defined in file m4/version-stamp.m4,
part of the Gnulib module version-stamp.
Makefile.am, add:
EXTRA_DIST += $(top_srcdir)/.version BUILT_SOURCES += $(top_srcdir)/.version
so that the file .version will be present in tarballs
and so that “make maintainer-clean” will erase it.
.version to the package’s top-level .gitignore file.
Next: gitlog-to-changelog, Previous: Package version management, Up: Build Infrastructure Modules [Contents][Index]
Gnulib provides the ‘vcs-to-changelog’ module to generate an output similar to the GNU ChangeLog format from metadata of source control software such as git. Here’s an example of using ‘vcs-to-changelog’:
build-aux/vcs-to-changelog.py <from_ref> <to_ref>
where <from_ref> and <to_ref> refer to the range of commits to
generate the output.
VCS To ChangeLog currently recognises changes in C source code and can traverse commits in git. Additional source frontends and source control backends may be added to the module. ‘vcs-to-changelog’ takes the following optional arguments:
-d: Run the parser debugger, used for debugging
‘vcs-to-changelog’
-q filename: Load filename as the quirks file for the
project.
The quirks file is a python module that must minimally implement a
get_project_quirks function that returns an object of type
ProjectQuirks or its subclass. The subclass may override the following
members of ProjectQuirks:
repo: Specify the project repo source control. The default value
is git.
IGNORE_LIST: A list of files to ignore in the changesets, either
because they are not needed (such as the ChangeLog) or because they are
not parseable. For example, the GNU C Library has a header file that is only
assembly code, which breaks the C parser.
MACRO_QUIRKS: A list of dictionary entries with indexes as
orig and sub where orig is a Python regular expression
pattern to match and sub is the substitution. These substitutions are
used to work around C/C++ macros that are known to break parsing of C programs.
C_MACROS: This is a list of C preprocessor macro definitions that
are extensively used and are known to break parsing due to some characteristic,
mainly the lack of a semicolon at the end.
Previous: VCS To ChangeLog, Up: Build Infrastructure Modules [Contents][Index]
Gnulib has a module gitlog-to-changelog to parse git log
output and generate ChangeLog files; see
https://www.gnu.org/prep/standards/html_node/Change-Logs.html.
You can use it by extending the dist-hook rule in the
top-level Makefile.am like this:
dist-hook: gen-ChangeLog
.PHONY: gen-ChangeLog
gen-ChangeLog:
$(AM_V_GEN)if test -e $(srcdir)/.git; then \
LC_ALL=en_US.UTF-8 TZ=UTC0 \
$(top_srcdir)/build-aux/gitlog-to-changelog \
--srcdir=$(srcdir) > $(distdir)/ChangeLog \
|| exit 1; \
fi
See gitlog-to-changelog --help for complete documentation.
The LC_ALL=en_US.UTF-8 TZ=UTC0 line in this recipe assumes that
you want to generate reproducible ChangeLog files that do not
depend on the developer’s locale and time zone. Omit this line if you
prefer ChangeLog files that depend on these developer settings.
If you wish to output the ChangeLog with dates respecting the time zone each individual commit was made in you can use the --commit-timezone option. For example:
dist-hook: gen-ChangeLog
.PHONY: gen-ChangeLog
gen-ChangeLog:
$(AM_V_GEN)if test -e $(srcdir)/.git; then \
$(top_srcdir)/build-aux/gitlog-to-changelog \
--srcdir=$(srcdir) --commit-timezone \
> $(distdir)/ChangeLog \
|| exit 1; \
fi
The use of --commit-timezone means that ChangeLog dates correctly represent when a committer pushed a change according to their time zone. However, as a consequence ChangeLog dates will no longer be monotonically increasing, if the developers are spread across different time zones. For example, the following three commits were made in a short period of time across two different time zones. This behavior may be undesired.
2024-06-19 Bruno Haible <bruno@clisp.org> ... 2024-06-18 Collin Funk <collin.funk1@gmail.com> ... 2024-06-19 Bruno Haible <bruno@clisp.org> ...
If you wish to limit the ChangeLog entries (perhaps for size
issues) to contain only entries since a particular git tag, you can
use a gen-ChangeLog rule like the following:
gen_start_ver = 8.31
gen-ChangeLog:
$(AM_V_GEN)if test -e $(srcdir)/.git; then \
log_fix='$(srcdir)/build-aux/git-log-fix'; \
test -e "$$log_fix" \
&& amend_git_log=--amend=$$log_fix \
|| amend_git_log=; \
{ LC_ALL=en_US.UTF-8 TZ=UTC0 \
$(top_srcdir)/build-aux/gitlog-to-changelog \
--srcdir=$(srcdir) \
"$$amend_git_log" -- 'v$(gen_start_ver)~..' && \
printf '\n\nSee the source repo for older entries.\n'; \
} > $(distdir)/ChangeLog \
|| exit 1; \
fi
Next: Release Management Files, Previous: Build Infrastructure Modules, Up: Top [Contents][Index]
Gnulib contains also a small number of files that are not part of
modules. They are meant to be imported into packages by means of
‘gnulib-tool --copy-file’, not ‘gnulib-tool --import’. For
example, the commands to import the files config.guess and
config.sub are
for file in config.guess config.sub; do
$GNULIB_TOOL --copy-file build-aux/$file \
&& chmod a+x build-aux/$file \
|| exit $?
done
Packages that don’t use Gnulib can get hold of these files through direct download from Gnulib’s git repository. The commands to do this look as follows:
for file in config.guess config.sub; do
echo "$0: getting $file..."
wget -q --timeout=5 -O build-aux/$file.tmp "https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/${file};hb=HEAD" \
&& mv build-aux/$file.tmp build-aux/$file \
&& chmod a+x build-aux/$file
retval=$?
rm -f build-aux/$file.tmp
test $retval -eq 0 || exit $retval
done
| • Recognizing platforms | ||
| • Utilities for Makefiles | ||
| • Developer tools | ||
| • For building documentation | ||
| • For building libraries | ||
| • For running tests |
Next: Utilities for Makefiles, Up: Build Infrastructure Files [Contents][Index]
build-aux/config.guessbuild-aux/config.subThese files are helper scripts, invoked by the ‘configure’ script.
config.guess recognizes the platform on which the script is
running, and produces a triplet of the form
cpu-type-vendor-operating_system.
config.sub receives a possibly abbreviated triplet and produces a
canonical triplet for a platform. For more information, see
https://www.gnu.org/prep/standards/html_node/Configuration.html.
It is important that you always include the newest versions of these two files in your tarball, because people who work on emerging platforms otherwise have a hard time building your package.
Next: Developer tools, Previous: Recognizing platforms, Up: Build Infrastructure Files [Contents][Index]
These programs can be used in Makefiles. Some of them are also described in https://www.gnu.org/software/automake/manual/html_node/Auxiliary-Programs.html.
build-aux/ar-libbuild-aux/compileThese two scripts are necessary for supporting portability to native
Windows with the MSVC compiler. compile is a wrapper script that
invokes the compiler and provides a command-line interface compatible
with Unix compilers. Similarly, ar-lib is a wrapper script that
provides a command-line interface compatible with Unix ar.
build-aux/depcompThis is a helper script, used by Makefile rules generated by GNU Automake. It generates Makefile dependencies while compiling a file.
build-aux/install-shThis is a helper script, used by Makefile rules generated by GNU
Automake. It installs files during the make install phase. In
the Makefile, don’t use this file directly; always use
$(INSTALL_PROGRAM) or $(INSTALL_DATA) instead.
build-aux/mdate-shThis script determines the modification time of a file and pretty-prints it. The typical use is to add a “Last modified” line to the documentation.
build-aux/mkinstalldirsThis is a helper script, used by Makefile rules generated by GNU
Automake. It creates directories during the make install phase.
It is roughly equivalent to ‘mkdir -p’ (except that the latter is
not portable). In the Makefile, don’t use this file directly; always
use $(MKDIR_P) instead.
build-aux/mktempdThis script creates a temporary directory. It is roughly equivalent to ‘mktemp -d’ (except that the latter is not portable).
build-aux/move-if-changeThis script moves a freshly generated file to a destination file, with a special optimization for the case that both files are identical. In this case the freshly generated file is deleted, and the time stamp of the destination file is not changed. This is useful when updating a file that rarely actually changes and which many Makefile targets depend upon.
Next: For building documentation, Previous: Utilities for Makefiles, Up: Build Infrastructure Files [Contents][Index]
These programs can help when developing in a Git checkout. The maintainer of the package copies these programs into the version control of the package, so that co-developers can use these tools right away.
top/gitsub.shThis program manages the subdirectories of a Git checkout that come from other packages, including Gnulib.
top/bootstraptop/autopull.shtop/autogen.shtop/bootstrap-funclib.shThis is a set of three programs and a function library, that manage the source directory of a package, preparing for the state where ‘./configure’ can be used.
autopull.sh is a program for fetching dependencies that may
require network accesses. It manages the Git submodules, including
Gnulib – assuming that Gnulib is a Git submodule. It also can fetch
the PO files for internationalized packages.
autogen.sh is a program that is meant to be run after
autopull.sh. It generates all autogeneratable files that are
omitted from version control. Usually this means that it invokes
gnulib-tool and automake, that generate files from other
files.
bootstrap is a wrapper around both:
./bootstrap --pull is equivalent to ./autopull.sh,
./bootstrap --gen is equivalent to ./autogen.sh.
Plain ./bootstrap is equivalent to ./autopull.sh
immediately followed by ./autogen.sh; however, because plain
./bootstrap mixes version control management and
generation of files in non-obvious ways, it has a number of usability
issues for the advanced developer.
bootstrap-funclib.sh is a function library for these three
programs. It is not meant to be used directly.
All three programs make use of a configuration file, called
bootstrap.conf.
build-aux/bootstrapThis acts like top/bootstrap, except it does not
need the companion files autogen.sh,
autopull.sh, and bootstrap-funclib.sh
so it avoids some clutter in your project’s top level directory.
With this approach, you update via ./bootstrap --pull and
./bootstrap --gen instead of via ./autopull.sh and
./autogen.sh. Otherwise this approach acts similarly, and
uses the same bootstrap.conf file.
build-aux/bootstrap.confThis is the template configuration file. After copying it into the top-level directory of your package, you need to customize it.
build-aux/po/Makefile.in.inbuild-aux/po/remove-potcdate.sedThese are auxiliary files used by bootstrap. You don’t have to
copy them yourself; bootstrap will do that.
Next: For building libraries, Previous: Developer tools, Up: Build Infrastructure Files [Contents][Index]
These are auxiliary files for building documentation.
build-aux/texinfo.texThis file is needed for the conversion of Texinfo-format documentation to PDF, PostScript, or DVI formats. It implements the GNU Texinfo commands on top of plain TeX.
build-aux/x-to-1.inThis file, once processed, gives a program x-to-1, that produces
a manual page for a program, by combining a skeleton with the program’s
--help output.
Next: For running tests, Previous: For building documentation, Up: Build Infrastructure Files [Contents][Index]
build-aux/declared.shThis program extracts the declared global symbols of a C header file. It is useful when you want to control the set of symbols exported by a library. See Exported Symbols of Shared Libraries.
Previous: For building libraries, Up: Build Infrastructure Files [Contents][Index]
build-aux/run-testThis file is a test driver that supports running a test under
valgrind.
build-aux/test-driver.diffThis is a patch, against Automake’s test driver, that supports running a test suite on Android.
Next: GNU Free Documentation License, Previous: Build Infrastructure Files, Up: Top [Contents][Index]
Gnulib also contain a few scripts that are useful for the release management of a package. They can be used directly off the Gnulib checkout; they don’t need to copied first.
| • For building shared libraries | ||
| • For uploading releases |
Next: For uploading releases, Up: Release Management Files [Contents][Index]
build-aux/libtool-next-versionThis program is a wizard that helps a maintainer update the libtool version of a shared library, without making mistakes in this process. For background documentation, see https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html.
Previous: For building shared libraries, Up: Release Management Files [Contents][Index]
build-aux/gnuploadThis program is a user-friendly way to upload a release tarball to one of
the GNU servers (ftp.gnu.org or alpha.gnu.org). It
implements the interface described in
https://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html.
build-aux/ncftpput-ftpThis is a helper program that mimics the ncftpput program used by
gnupload. If you want to use gnupload but don’t have
ncftp installed, copy this file into your $PATH, renaming it to
ncftpput.
Next: Gnulib history, Previous: Release Management Files, Up: Top [Contents][Index]
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. https://fsf.org/ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”.
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.
The “publisher” means any person or entity that distributes copies of the Document to the public.
A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles.
You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.”
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See https://www.gnu.org/licenses/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document.
“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site.
“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.
“Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document.
An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.
To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
Copyright (C) year your name. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''.
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with…Texts.” line with this:
with the Invariant Sections being list their titles, with
the Front-Cover Texts being list, and with the Back-Cover Texts
being list.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
Next: Module Index, Previous: GNU Free Documentation License, Up: Top [Contents][Index]
In the beginning, Richard Stallman maintained the regular expression engine
of GNU and made it available to other GNU packages, such as
sed, awk, grep, so that they could use the same engine.
Recall that there was no GNU C library at the time.
A couple of years later, Jim Meyering, who was maintaining the shell utilities, the file utilities, and the text processing utilities, collected the common parts of these three packages in the same repository. Paul Eggert joined in, with code coming from a few GNU packages that he maintained, and so did Bruno Haible, with reusable code from the GNU gettext package.
As they cared for portability, many changes in the C code were accompanied by changes in the build infrastructure. Copying these changes into packages — it was all done manually — became cumbersome. So they wrote a program, called ‘gnulib-tool’, that does this job of copying the requested shared code into a particular package. This was in 2002.
Providing a substitute / override for a system function was relatively easy.
Providing a substitute / override for a system header file was significantly
harder, but was done successively:
for stdint.h in 2004,
for stdarg.h, sys/socket.h, sys/stat.h in 2006,
for sys/time.h, wchar.h in 2007,
and the development of the corresponding idioms took until 2010.
Unicode string modules (that make up GNU libunistring) were added in 2007–2009.
Modules for numeric functions (<math.h>) were added in 2010–2011.
Modules for container data structures were added between 2006 and 2018.
Versatile bit-set modules were added in 2018.
POSIX threads on non-POSIX platforms, as well as ISO C threads on all platforms, were added in 2019.
The posix_spawn facility was brought to completion on native Windows
in 2022, providing the world’s first posix_spawn implementation for
this platform.
Support for Android was added in 2023 and immediately used by GNU Emacs for Android.
Functions for working with Unicode characters in multibyte representation,
based on mbrtoc32, were added in 2023.
Modules for manipulating the floating-point environment (fenv.h) were
added in 2023.
The ‘gnulib-tool’ rewrite in Python, that was started by Dmitry Selyutin in 2012 but lay unfinished for many years, was completed by Collin Funk and Bruno Haible in 2024.
Next: Undocumented Module Index, Previous: Gnulib history, Up: Top [Contents][Index]
| Jump to: | _
A B C D E F G H I J L M N O P Q R S T U V W X Y Z |
|---|
| Jump to: | _
A B C D E F G H I J L M N O P Q R S T U V W X Y Z |
|---|
Next: Index, Previous: Module Index, Up: Top [Contents][Index]
These are the modules that are not explicitly documented in this manual. Please look at the respective module description. (Ideally, this list should be as small as possible.)
| Jump to: | A B C D E F G H I J K L M N O P Q R S T U V W X Y |
|---|
| Jump to: | A B C D E F G H I J K L M N O P Q R S T U V W X Y |
|---|
Previous: Undocumented Module Index, Up: Top [Contents][Index]
| Jump to: | $
(
)
*
+
-
.
=
?
[
\
]
^
_
{
|
}
A B C D E F G H I J K L M N O P Q R S T U V W X Y |
|---|
| Jump to: | $
(
)
*
+
-
.
=
?
[
\
]
^
_
{
|
}
A B C D E F G H I J K L M N O P Q R S T U V W X Y |
|---|
Ristenpart T, Yilek S. When good randomness goes bad: virtual machine vulnerabilities and hedging deployed cryptography. NDSS 2010.
Ristenpart T, Yilek S. When good randomness goes bad: virtual machine vulnerabilities and hedging deployed cryptography. NDSS 2010.
Sometimes
you don’t have to explicitly quote special characters to make
them ordinary. For instance, most characters lose any special meaning
inside a list (see List Operators). In addition, if the syntax bits
RE_CONTEXT_INVALID_OPS and RE_CONTEXT_INDEP_OPS
aren’t set, then (for historical reasons) the matcher considers special
characters ordinary if they are in contexts where the operations they
represent make no sense; for example, then the match-zero-or-more
operator (represented by ‘*’) matches itself in the regular
expression ‘*foo’ because there is no preceding expression on which
it can operate. It is poor practice, however, to depend on this
behavior; if you want a special character to be ordinary outside a list,
it’s better to always quote it, regardless.
Regex therefore doesn’t consider the ‘^’ to be the first character in the list. If you put a ‘^’ character first in (what you think is) a matching list, you’ll turn it into a nonmatching list.
You can’t use a character class for the starting or ending point of a range, since a character class is not a single character.
Regular expressions are also referred to as “patterns,” hence the name “pattern buffer.”
A table that maps all uppercase letters to the corresponding lowercase ones would work just as well for this purpose.