mirror of
https://sourceware.org/git/glibc.git
synced 2025-04-26 15:09:05 +03:00
1997-10-12 05:09 Ulrich Drepper <drepper@cygnus.com> * libio/Makefile (routines): Remove iofprintf. * stdio-common/fprintf.c [USE_IN_LIBIO]: Define _IO_fprintf. * libio/filedoalloc.c: Use _G_stat64 instead of stat. * libio/fileops.c (_IO_file_open): Change to take extra argument indicating whether 32 or 64 bit mode is wanted. * libio/iofopen.c: Call _IO_file_open with extra argument set to 0. * libio/iofopen64.c: Call _IO_file_open with extra argument set to 0. * libio/iolibio.h (_IO_freopen, _IO_freopen64): Likewise. * libio/iofgetpos.c: Pretty print. * libio/iofgetpos64.c: Use _IO_fpos64_t for local variable `pos'. * manual/conf.texi: Document all the _SC_ and _CS_ constants. * manual/creature.texi: Document _LARGEFILE_SOURCE, _LARGEFILE64_SOURCE and _FILE_OFFSET_BITS. * manual/llio.texi: Document truncate and ftruncate. * manual/stdio.texi: Document positional parameters for printf. * math/Makefile (headers): Add tgmath.h. (libm-support): Remove s_lrint, s_llrint, s_lround, and s_llround and move to ... (libm-calls): ... here. Add scalbln, s_nextafterx and s_fma. * math/libm-test.c (lround_test, llround_test): Test for all FP formats by using FUNC(). * math/libm.map: Add fma, fmaf, fmal, nextafterx, nextafterxf, nextafterxl, scalbln, scalblnf, scalblnl, lrintf, lrintl, llrintf, llrintl, lroundf, lroundl, llroundf, and llroundl. * math/math.h: Document new platform specific macros from mathdef.h. Remove declaration of lrint, llrint, lround, and llround. * math/test-double.c: Define TEST_DOUBLE. * math/test-idouble.c: Likewise. * math/test-float.c: Define TEST_FLOAT. * math/test-ifloat.c: Likewise. * math/tgmath.h: New file. * math/bits/mathcalls.h: Add nextafterx, scalbln, fma, lrint, llrint, lround, and llround. Change second argument of scalbn to `int'. * sysdeps/libm-ieee754/s_fma.S: New file. * sysdeps/libm-ieee754/s_fmaf.S: New file. * sysdeps/libm-ieee754/s_fmal.S: New file. * sysdeps/libm-i387/s_fma.S: New file. * sysdeps/libm-i387/s_fmaf.S: New file. * sysdeps/libm-i387/s_fmal.S: New file. * sysdeps/libm-i387/s_llrint.S: Change to take double argument. * sysdeps/libm-i387/s_lrint.S: Likewise. * sysdeps/libm-i387/s_llrintf.S: New file. * sysdeps/libm-i387/s_llrintl.S: New file. * sysdeps/libm-i387/s_lrintf.S: New file. * sysdeps/libm-i387/s_lrintl.S: New file. * sysdeps/libm-ieee754/s_llrint.c: Remove version which works on 80bit double. * sysdeps/libm-ieee754/s_lrint.c: Likewise. * sysdeps/libm-ieee754/s_llrintf.S: New file. * sysdeps/libm-ieee754/s_llrintl.S: New file. * sysdeps/libm-ieee754/s_lrintf.S: New file. * sysdeps/libm-ieee754/s_lrintl.S: New file. * sysdeps/libm-i387/s_scalbln.c: New file. Empty file. * sysdeps/libm-i387/s_scalblnf.c: New file. Empty file. * sysdeps/libm-i387/s_scalblnl.c: New file. Empty file. * sysdeps/libm-i387/s_scalbn.c: Add scalbln as alias. * sysdeps/libm-i387/s_scalbnf.c: Add scalblnf as alias. * sysdeps/libm-i387/s_scalbnl.c: Add scalblnl as alias. * sysdeps/libm-ieee754/s_llround.c: Remove version which works on 80bit double. * sysdeps/libm-ieee754/s_lround.c: Likewise. * sysdeps/libm-ieee754/s_llroundf.c: Likewise. * sysdeps/libm-ieee754/s_llroundl.c: Likewise. * sysdeps/libm-ieee754/s_lroundf.c: Likewise. * sysdeps/libm-ieee754/s_lroundl.c: Likewise. * sysdeps/libm-ieee754/s_nextafterl.c: Add alias fo nextafterxl. * sysdeps/libm-ieee754/s_nextafterx.c: New file. * sysdeps/libm-ieee754/s_nextafterxf.c: New file. * sysdeps/libm-ieee754/s_nextafterxl.c: New file. * sysdeps/libm-ieee754/s_scalbln.c: New file. * sysdeps/libm-ieee754/s_scalblnf.c: New file. * sysdeps/libm-ieee754/s_scalblnl.c: New file. * sysdeps/libm-ieee754/s_scalbn.c: Change to take `int' as second arg. * sysdeps/libm-ieee754/s_scalbnf.c: Likewise. * sysdeps/libm-ieee754/s_scalbnl.c: Likewise. * stdlib/stdlib.h: Protect declarations of __strto*l_internal functions by #ifdefs since they are duplicated in inttypes.h. * sysdeps/wordsize-32/inttypes.h: Add definition of strtoimax and strtoumax plus needed declarations. * sysdeps/generic/confname.h (_SC_AIO_LISTIO_MAX): Fix typo. 1997-10-09 Andreas Jaeger <aj@arthur.rhein-neckar.de> * locale/programs/locfile.c (locfile_read): Correct while loop. * db2/makedb.c (main): Add missing parameter for error output. (process_input): Likewise. * resolv/gethnamaddr.c (getanswer): Rewrite a bit to avoid warning. 1997-10-12 05:05 Ulrich Drepper <drepper@cygnus.com> * libc-map: Add __bzero, __mempcpy. 1997-10-10 18:51 David S. Miller <davem@tanya.rutgers.edu> * sysdeps/unix/sysv/linux/sparc/bits/ioctls.h: Remove dependencies on kernel_termios.h 1997-10-09 10:24 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> Add the changes from the Solaris 2.6 header files, use the new public defines/functions. * nis/nis_addmember.c: Updated. * nis/nis_checkpoint.c: Updated. * nis/nis_creategroup.c: updated. * nis/nis_destroygroup.c: Updated. * nis/nis_getservlist.c: Updated. * nis/nis_ismember.c: Updated. * nis/nis_lookup.c: Updated. * nis/nis_modify.c: Updated. * nis/nis_ping.c: Updated. * nis/nis_print.c: Updated. * nis/nis_print_group_entry.c: Updated. * nis/nis_remove.c: Updated. * nis/nis_removemember.c: Updated. * nis/nis_xdr.c: Updated. * nis/nss_nisplus/nisplus-alias.c: Updated. * nis/nss_nisplus/nisplus-ethers.c: Updated. * nis/nss_nisplus/nisplus-hosts.c: Updated. * nis/nss_nisplus/nisplus-network.c: Updated. * nis/nss_nisplus/nisplus-parser.c: Updated. * nis/nss_nisplus/nisplus-proto.c: Updated. * nis/nss_nisplus/nisplus-rpc.c: Updated. * nis/nss_nisplus/nisplus-service.c: Updated. * nis/rpcsvc/nis.h: Updated. * nis/rpcsvc/nis.x: Updated. * nis/rpcsvc/nis_object.x: Updated. * nis/rpcsvc/nis_tags.h: Updated. * nis/rpcsvc/nislib.h: Updated. * nis/lckcache.c: Removed, since Sun has dropped the directory signatures. The old cache version is now a security risk and not longer supported by Sun. * nis/nis_cache.c: Likewise. * nis/rpcsvc/nis_cache.h: Likewise. * nis/rpcsvc/nis_cache.x: Likewise. * nis/nis_call.c: Remove calls to the cache functions. * nis/libnsl.map: Remove cache and depending functions. * nis/nis_intern.h: Likewise. * nis/nis_add.c: Remove #include <rpcsvc/nislib.h>. * nis/nis_domain_of.c: Likewise. * nis/nis_domain_of_r.c: Likewise. * nis/nis_error.c: Likewise. * nis/nis_file.c: Likewise. * nis/nis_local_names.c: Likewise. * nis/nis_mkdir.c: Likewise. * nis/nis_rmdir.c: Likewise. * nis/nis_subr.c: Likewise. * nis/nis_verifygroup.c: Likewise. * nis/nis_clone.c: Removed, replaced by ... * nis/nis_clone_dir.c: New. * nis/nis_clone_obj.c: New. * nis/nis_clone_res.c: New. * nis/nis_table.c: Fixed bugs shown through the new clone functions. * nis/nis_defaults.c: Fixed a lot of race conditions. * nis/nis_free.c: Rewritten. * sunrpc/auth_des.c: Fix use of free'ed pointer. * nis/Makefile (libnsl-routines): Remove nis_clone, nis_cache and lckcache. Add nis_clone_dir, nis_clone_obj, and nis_clone_res. 1997-10-09 Andreas Jaeger <aj@arthur.rhein-neckar.de> * wctype/test_wctype.c (TEST): Add parens to avoid ambiguity. 1997-10-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * include/features.h: Don't crash if _XOPEN_SOURCE is defined to be empty. 1997-10-09 05:54 Ulrich Drepper <drepper@cygnus.com> * nss/digits_dots.c: Place `result' in resbuf and not in `buffer'. * nss/getXXbyYY_r.c: Make sure digits_dots.c sees `resbuf' as struct and not a pointer. Little optimizations. 1997-10-09 05:00 Ulrich Drepper <drepper@cygnus.com> * sysdeps/stub/getenv.c: Remove unused file. * sysdeps/stub/lxstat.c: Likewise. * sysdeps/stub/morecore.c: Likewise. * sysdeps/stub/putenv.c: Likewise. * sysdeps/stub/sbrk.c: Likewise. * sysdeps/stub/setenv.c: Likewise. * sysdeps/stub/sysd-stdio.c: Likewise. * sysdeps/stub/sysdep.h: Likewise. Reported by Zack Weinberg <zack@rabi.phys.columbia.edu>. 1997-10-09 04:58 Ulrich Drepper <drepper@cygnus.com> * configure.in: Add __bzero definition to DWARF2 unwind test. Reported by David S. Miller <davem@caip.rutgers.edu>. 1997-10-07 Paul Eggert <eggert@twinsun.com> * intl/loadmsgcat.c (_nl_load_domain): Fix &&/|| typo when checking file size. Check for overflow when stuffing off_t into size_t. 1997-10-07 18:11 Ulrich Drepper <drepper@cygnus.com> * time/africa: Update from tzdata1997i. 1997-10-07 Andreas Jaeger <aj@arthur.rhein-neckar.de> * posix/globtest.sh: Add arguments for name of dynamic linker and call dynamic linker to execute globtest. * posix/Makefile (tests): Supply arguments to globtest.sh. 1997-10-07 Andreas Jaeger <aj@arthur.rhein-neckar.de> * nis/rpcsvc/ypupd.h: Add missing __END_DECLS. 1997-10-03 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libc.map: Add mempcpy, prctl. 1997-09-30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/generic/memcmp.c: Avoid warnings. * sysdeps/generic/memset.c: Likewise. * sysdeps/generic/strchr.c: Likewise. * sysdeps/generic/strlen.c: Likewise. 1997-09-29 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * malloc/Makefile ($(objpfx)mtrace): Fix typo. 1997-09-29 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/dl-machine.h (elf_machine_rela): Fix last change. The R_68K_GLOB_DAT and R_68K_JMP_SLOT relocations really ignore the addend, Richard. (elf_machine_fixup_plt): Don't add the addend. (elf_machine_plt_value): New function. * sysdeps/alpha/dl-machine.h (elf_machine_plt_value): New function. * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_plt_value): New function. * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_plt_value): New function. * sysdeps/powerpc/dl-machine.h (elf_machine_plt_value): New function. * sysdeps/i386/dl-machine.h (elf_machine_plt_value): New function. * elf/dl-runtime.c (fixup, profile_fixup): Don't add in the addend, instead let the machine dependent setup decide. 1997-09-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/m68020/bits/string.h: New file. 1997-10-07 04:27 Richard Henderson <rth@cygnus.com> * Makeconfig (+includes): Add -I$(objpfx). * stdlib/longlong.h [__sparc__]: Prototype __udiv_qrnnd. * sysdeps/alpha/setjmp.S: __setjmp is the same as _setjmp. Make the former a strong symbol and the later a weak alias. * sysdeps/sparc/sparc32/setjmp.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S: Likewise. 1997-10-06 21:01 David S. Miller <davem@tanya.rutgers.edu> * sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h: Make ino_t 64-bits. * sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h: Make st_ino member 64-bits as well, to match the kernel. 1997-10-06 19:35 Ulrich Drepper <drepper@cygnus.com> * sysdeps/sparc/sparc64/sub_n.S: Fix typo. Patch by Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>. 1997-10-06 01:09 Zack Weinberg <zack@rabi.phys.columbia.edu> * time/README: Correct list of files from tzcode package. Add contact information for tzcode/tzdata maintainers. Correct spelling of author's name. Compact lists. 1997-10-06 01:48 Ulrich Drepper <drepper@cygnus.com> * malloc/malloc.h: Remove hook definition without caller argument. * malloc/malloc.c: Likewise. * string/tester.c: Correct strsep test. * string/bits/string2.h: Define __string2_1bptr_p and use it. Patch by David S. Miller <davem@tanya.rutgers.edu>. * math/Makefile (routines): Add s_clog10. * math/libm-test.c: Add test for clog10. * math/libm.map: Add clog10{,f,l}. * math/bits/cmathcalls.h [__USE_GNU]: Add clog10. * sysdeps/libm-ieee754/s_clog10.c: New file. * sysdeps/libm-ieee754/s_clog10f.c: New file. * sysdeps/libm-ieee754/s_clog10l.c: New file. * manual/math.texi: Describe clog10. * config.h.in: Add USE_REGPARMS and define internal_function based on this. * configure.in: Define USE_REGPARMS for ix86 machines. * gmon/gmon.c: Mark write_hist, write_call_graph and write_bb_counts as internal functions. * inet/getnameinfo.c: Likewise for nrl_domainname. * inet/getnetgrent_r.c: Likewise for __internal_setnetgrent_reuse. * inet/rcmd.c: Likewise for __icheckhost. * intl/dcgettext.c: Likewise for category_to_name and guess_category_value. * intl/localealias.c: Likewise for read_alias_file. * io/fts.c: Likewise for fts_alloc, fts_build, fts_lfree, fts_maxarglen, fts_padjust, fts_palloc, fts_sort, and fts_stat. * libio/genops.c: Likewise for save_for_backup. * malloc/malloc.c (chunk_free, chunk_alloc, chunk_realloc, chunk_align, main_trim, heap_trim): Likewise. * malloc/mtrace.c (tr_where): Likewise. * misc/fstab.c (mnt2fs): Likewise. * misc/getttyent.c (skip, value): Likewise. * misc/syslog.c (openlog_internal): Likewise. * misc/tsearch.c (trecurse, tdestroy_internal): Likewise. * nss/nsswitch.c (nss_lookup_function, nss_parse_file, nss_getline, nss_parse_service_list, nss_new_service): Likewise. * posix/wordexp.c (parse_dollars, parse_backtick, eval_expr): Likewise. * resolv/inet_ntop.c (inet_ntop4, inet_ntop6): Likewise. * resolv/inet_pton.c (inet_pton4, inet_pton6): Likewise. * resolv/res_init.c (res_setoptions): Likewise. * stdio-common/printf_fp.c (group_number): Likewise. * stdio-common/vfprintf.c (buffered_vfprintf, group_number): Likewise. * stdlib/fmtmsg.c (internal_addseverity): Likewise. * sunrpc/auth_des.c (synchronize): Likewise. * sunrpc/auth_unix.c (marshal_new_auth): Likewise. * sunrpc/clnt_perr.c (auth_errmsg): Likewise. * sunrpc/key_call.c (key_call): Likewise. * sunprc/pmap_rmt.c (getbroadcastnets): Likewise. * sunrpc/svc_tcp.c (makefd_xprt): Likewise. * sunrpc/svcauth_des.c (cache_init, cache_spot, cache_ref, invalidate): Likewise. * sunrpc/xdr_rec.c (fix_buf_size, skip_input_bytes, flush_out, set_input_fragment, get_input_bytes): Likewise. * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path, phys_pages_info): Likewise. * sysdeps/unix/sysv/linux/if_index.c (opensock): Likewise. * sysdeps/unix/sysv/linux/poll.c (__emulate_poll): Likewise. * sysdeps/unix/sysv/linux/readv.c (__atomic_readv_replacement): Likewise. * sysdeps/unix/sysv/linux/readv.c (__atomic_writev_replacement): Likewise. * time/strptime.c (strptime_internal): Likewise. * time/tzfile.c (find_transition, compute_tzname_max): Likewise. * time/tzset.c (compute_change, tz_compute, tzset_internal): Likewise. * libc.map: Remove _libio_using_thunks, add _fp_hw and _dl_addr. * ctype/ctype.h: Pretty print. * grp/grp.h: Likewise. * include/libc-symbols.h: Likewise. * include/limits.h: Likewise. * include/values.h: Likewise. * io/fcntl.h: Likewise. * io/sys/stat.h: Likewise. * libio/stdio.h: Likewise. * malloc/malloc.h: Likewise. * misc/err.h: Likewise. * misc/regexp.h: Likewise. * misc/sys/cdefs.h: Likewise. * misc/sys/file.h: Likewise. * posix/sys/utsname.h: Likewise. * posix/sys/wait.h: Likewise. * pwd/pwd.h: Likewise. * resolv/netdb.h: Likewise. * signal/signal.h: Likewise. * stdlib/stdlib.h: Likewise. * string/endian.h: Likewise. * string/memory.h: Likewise. * sysdeps/mach/hurd/bits/fcntl.h: Likewise. * sysdeps/mach/hurd/sys/param.h: Likewise. * sysdeps/unix/sysv/linux/sys/param.h: Likewise. * termios/termios.h: Likewise. * wcsmbs/wchar.h: Likewise. * wctype/wctype.h: Likewise. * sysdeps/unix/bsd/bsd4.4/wait3.c: Use __WAIT_STATUS in definition. Implement Large File Support API. * include/features.h: Add suuport for _LARGEFILE_SOURCE, _LARGEFILE64_SOURCE, and _FILE_OFFSET_BITS. * libc.map: Add new functions for LFS. * dirent/Makefile (routines): Add readdir64 and readdir64_r. * dirent/dirent.h: Update readdir prototype for LFS and add new prototypes for above functions. * io/Makefile (routines): Add xstat64, fxstat64, lxstat64, statfs64, fstatfs64, lstat64, open64, lseek64, creat64, and ftw64. * io/creat64.c: New file. * io/fstat64.c: New file. * io/lstat64.c: New file. * io/stat64.c: New file. * io/ftw64.c: New file. * io/ftw.c: Rewrite to allow easy definition of ftw64. * io/ftw.h: Add LFS interface. * io/fcntl.h: Likewise. * io/sys/stat.h: Likewise. * io/sys/statfs.h: Likewise. * libio/Makefile (routines): Add iofgetpos64, iofopen64, iofsetpos64, freopen64, fseeko64, and ftello64. * libcio/fseeko64.c: New file. * libio/ftello64.c: New file. * libio/iofgetpos64.c: New file. * libio/iofopen64.c: New file. * libio/iofsetpos64.c: New file. * libio/fileops.c (_IO_file_fopen): Change to use _IO_off64_t. (_IO_file_attach): Likewise. (_IO_do_write): Likewise. (_IO_file_sync): Likewise. (_IO_file_seek): Likewise. (_IO_file_seekoff): Likewise. Use _G_stat64. (_IO_file_fopen64): New function. (_IO_file_jumps): Initialize showmanyc and imbue. * libio/genops.c (_IO_default_seekpos): Change to use _IO_fpos64_t. (_IO_default_seekoff): Likewise. (_IO_default_seek): Likewise. (_IO_default_showmanyc, _IO_default_imbue): New functions. * libio/iofopncook.c (_IO_cookie_seek): Change to use _IO_off64_t. * libio/iolibio.h: Add prototypes for LFS functions. * libio/ioseekoff.c: Change to use _IO_fpos64_t. * libio/ioseekpos.c: Likewise. * libio/libio.h: Define _IO_fpos64_t and _IO_off64_t. (_IO_FILE): Move _offset field to end and change type to _IO_off64_t. (_IO_seekoff, _IO_seekpos): Change prototype. * libio/libioP.h (_IO_seekoff_t, _IO_seekpos_t, _IO_seek_t): Change to use _IO_off64_t. Change prototypes for function from the *ops.c files. * libio/stdio.h: Add LFS interface definition. * libio/strops.c (_IO_str_seekoff): Change to use _IO_fpos64_t. * posix/Makefile (routines): Add pread64 and pwrite64. * posix/confstr.c: Handle _CS_LFS* requests. * posix/getconf.c: Handle LFS* requests. * sysdeps/generic/confname.h: Add _CS_LFS* constants. * posix/unistd.h: Document _LFS64_LARGEFILE and _LFS64_STDIO. Define off_t and off64_t appropriately. Change prototypes of LFS functions. * posix/sys/types.h: Add LFS types. * resources/Makefile (routines): Add getrlimit64 and setlimit64. * resource/sys/resource.h: Change prototypes of LFS functions. * stdio-common/Makefile (routines): Add tmpfile64. * stdio-common/tmpfile64.c: New file. * sysdeps/generic/_G_config.h: Define _G_fpos64_t and _G_off64_t. Define _G_OPEN64, _G_LSEEK64, _G_FSTAT64. * sysdeps/unix/sysv/linux/_G_config.h: Likewise. * sysdeps/generic/bits/resource.h: Add LFS definitions. * sysdeps/unix/bsd/sun/sunos4/bits/resource.h: Likewise. * sysdeps/unix/sysv/linux/bits/resource.h: Likewise. * sysdeps/generic/statfs.h: Use __fsblkcnt_t for some of the fields. * sysdeps/unix/sysv/linux/bits/statfs.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/statfs.h: Likewise. * sysdeps/generic/types.h: Define LFS types. * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h: Likewise. * sysdeps/generic/sys/mman.h: Add LFS definitions. * sysdeps/unix/sysv/linux/sys/mman.h: Likewise. * sysdeps/generic/mach/hurd/bits/fcntl.h: Add flock LFS extensions. * sysdeps/unix/bsd/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. * sysdeps/generic/mach/hurd/bits/stat.h: Add stat LFS extensions. * sysdeps/unix/bsd/bits/stat.h: Likewise. * sysdeps/unix/bsd/osf/alpha/bits/stat.h: Likewise. * sysdeps/unix/sysv/linux/alpha/bits/stat.h: Likewise. * sysdeps/unix/sysv/linux/bits/stat.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise. * sysdeps/unix/sysv/sysv4/i386/bits/stat.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h: Likewise. * sysdeps/posix/open64.c: New file. * sysdeps/stub/fstatfs64.c: New file. * sysdeps/stub/fxstat64.c: New file. * sysdeps/stub/getrlimit64.c: New file. * sysdeps/stub/lseek64.c: New file. * sysdeps/stub/lxstat64.c: New file. * sysdeps/stub/open64.c: New file. * sysdeps/stub/pread64.c: New file. * sysdeps/stub/pwrite64.c: New file. * sysdeps/stub/readdir64.c: New file. * sysdeps/stub/readdir64_r.c: New file. * sysdeps/stub/setrlimit64.c: New file. * sysdeps/stub/statfs64.c: New file. * sysdeps/stub/xstat64.c: New file. * sysdeps/unix/sysv/linux/llseek.c: Define as __llseek and make llseek and lseek64 weak aliases. * sysdeps/unix/sysv/linux/lseek64.c: New file. Empty. * sysdeps/unix/sysv/linux/alpha/bits/dirent.h: New file. * sysdeps/unix/sysv/linux/bits/dirent.h: Add LFS definitions. * sysdeps/posix/tempname.c: Add extra argument to trigger use of open64. * sysdeps/stub/tempname.c: Likewise. * stdio-common/tempnam.c: Call __stdio_gen_tempname with extra argument. * stdio-common/tmpfile.c: Likewise. * stdio-common/tmpnam.c: Likewise. * stdio-common/tmpnam_r.c: Likewise. * libio/libioP.h: Add definition ofr showmanyc and imbue callbacks. * libio/fileops.c (_IO_file_jumps): Initialize showmanyc and imbue. * libio/iofopncook.c (_IO_cookie_jumps): Likewise. * libio/iopopen.c (_IO_proc_jumps): Likewise. * libio/memstream.c (_IO_mem_jumps): Likewise. * libio/obprintf.c (_IO_obstack_jumps): Likewise. * libio/vsnprintf.c (_IO_strn_jumps): Likewise. * libio/strops.c (_IO_str_jumps): Likewise. * manual/arith.texi: Add a few words why cabs should be used. * manual/llio.texi: Describe sync, fsync, fdatasync. Tell about cleanup handlers & fcntl,lseek,write,read,close,open. * manual/process.texi: Tell about cleanup handlers & system,waitpid, wait. * manual/signal.texi: Likewise for pause. * manual/terminal.texi: Likewise for tcdrain. * manual/time.texi: Document nanosleep. * posix/exevp.c: Don't use nested function. * stdlib/ucontext.h: New file. * sysdeps/i386/sys/ucontext.h: New file. SysV/i386 API definitions. * sunrpc/xcrypt.c (hexval): Make a macro for efficiency. * sysdeps/i386/setjmp.h: Make `here` label local. * sysdeps/i386/elf/start.S: Define _fp_hw "variable". * sysdeps/stub/fstatfs.c: Correct warning. * sysdeps/stub/fxstat.c: Likewise. * sysdeps/stub/lxstat.c: Likewise. * sysdeps/unix/sysv/i386/i686/time.S: New file. 1997-10-03 20:56 Jason Merrill <jason@yorick.cygnus.com> * malloc/obstack.h (obstack_empty_p): New macro. 1997-10-04 17:41 Philip Blundell <Philip.Blundell@pobox.com> * inet/getnameinfo.c (getnameinfo): Remove spurious `#if INET6'. 1997-09-30 Zack Weinberg <zack@rabi.phys.columbia.edu> * maint.texi: Add copyright terms for libdb (Sleepycat, Harvard). Document new --with-binutils switch; delete reference to --with-gnu-as, --with-gnu-ld, --with-gnu-binutils. Add to description of --without-fp: a kernel FPU emulator is adequate (from FAQ) * INSTALL: Regenerated. 1997-09-30 17:29 Richard Henderson <rth@cygnus.com> * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Move _dl_hwcap declaration to ... (elf_machine_fixup_plt): ... here.
737 lines
26 KiB
C
737 lines
26 KiB
C
/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
|
|
This file is part of the GNU C Library.
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public License as
|
|
published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version.
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA. */
|
|
|
|
/*
|
|
* ISO C Standard: 4.10 GENERAL UTILITIES <stdlib.h>
|
|
*/
|
|
|
|
#ifndef _STDLIB_H
|
|
#define _STDLIB_H 1
|
|
|
|
#include <features.h>
|
|
|
|
/* Get size_t, wchar_t and NULL from <stddef.h>. */
|
|
#define __need_size_t
|
|
#define __need_wchar_t
|
|
#define __need_NULL
|
|
#include <stddef.h>
|
|
|
|
__BEGIN_DECLS
|
|
|
|
/* Returned by `div'. */
|
|
typedef struct
|
|
{
|
|
int quot; /* Quotient. */
|
|
int rem; /* Remainder. */
|
|
} div_t;
|
|
|
|
/* Returned by `ldiv'. */
|
|
typedef struct
|
|
{
|
|
long int quot; /* Quotient. */
|
|
long int rem; /* Remainder. */
|
|
} ldiv_t;
|
|
|
|
#ifdef __USE_ISOC9X
|
|
/* Returned by `lldiv'. */
|
|
typedef struct
|
|
{
|
|
long long int quot; /* Quotient. */
|
|
long long int rem; /* Remainder. */
|
|
} lldiv_t;
|
|
#endif
|
|
|
|
|
|
/* The largest number rand will return (same as INT_MAX). */
|
|
#define RAND_MAX 2147483647
|
|
|
|
|
|
/* We define these the same for all machines.
|
|
Changes from this to the outside world should be done in `_exit'. */
|
|
#define EXIT_FAILURE 1 /* Failing exit status. */
|
|
#define EXIT_SUCCESS 0 /* Successful exit status. */
|
|
|
|
|
|
/* Maximum length of a multibyte character in the current locale. */
|
|
#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
|
|
extern int __ctype_get_mb_cur_max __P ((void));
|
|
|
|
|
|
/* Convert a string to a floating-point number. */
|
|
extern double atof __P ((__const char *__nptr));
|
|
/* Convert a string to an integer. */
|
|
extern int atoi __P ((__const char *__nptr));
|
|
/* Convert a string to a long integer. */
|
|
extern long int atol __P ((__const char *__nptr));
|
|
|
|
#if defined __USE_ISOC9X || (defined __GNUC__ && defined __USE_MISC)
|
|
/* These functions will part of the standard C library in ISO C 9X. */
|
|
extern long long int atoll __P ((__const char *__nptr));
|
|
#endif
|
|
|
|
/* Convert a string to a floating-point number. */
|
|
extern double strtod __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr));
|
|
|
|
#ifdef __USE_GNU
|
|
/* Likewise for `float' and `long double' sizes of floating-point numbers. */
|
|
extern float strtof __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr));
|
|
|
|
extern __long_double_t strtold __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr));
|
|
#endif
|
|
|
|
/* Convert a string to a long integer. */
|
|
extern long int strtol __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr, int __base));
|
|
/* Convert a string to an unsigned long integer. */
|
|
extern unsigned long int strtoul __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __base));
|
|
|
|
#if defined __GNUC__ && defined __USE_BSD
|
|
/* Convert a string to a quadword integer. */
|
|
extern long long int strtoq __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr, int __base));
|
|
/* Convert a string to an unsigned quadword integer. */
|
|
extern unsigned long long int strtouq __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __base));
|
|
#endif /* GCC and use BSD. */
|
|
|
|
#if defined __USE_ISOC9X || (defined __GNUC__ && defined __USE_MISC)
|
|
/* These functions will part of the standard C library in ISO C 9X. */
|
|
|
|
/* Convert a string to a quadword integer. */
|
|
extern long long int strtoll __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr, int __base));
|
|
/* Convert a string to an unsigned quadword integer. */
|
|
extern unsigned long long int strtoull __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __base));
|
|
#endif /* ISO C 9X or GCC and use MISC. */
|
|
|
|
|
|
#ifdef __USE_GNU
|
|
/* The concept of one static locale per category is not very well
|
|
thought out. Many applications will need to process its data using
|
|
information from several different locales. Another application is
|
|
the implementation of the internationalization handling in the
|
|
upcoming ISO C++ standard library. To support this another set of
|
|
the functions using locale data exist which have an additional
|
|
argument.
|
|
|
|
Attention: all these functions are *not* standardized in any form.
|
|
This is a proof-of-concept implementation. */
|
|
|
|
/* Structure for reentrant locale using functions. This is an
|
|
(almost) opaque type for the user level programs. */
|
|
# include <xlocale.h>
|
|
|
|
/* Special versions of the functions above which take the locale to
|
|
use as an additional parameter. */
|
|
extern long int __strtol_l __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr, int __base,
|
|
__locale_t __loc));
|
|
|
|
extern unsigned long int __strtoul_l __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __base, __locale_t __loc));
|
|
|
|
extern long long int __strtoll_l __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr, int __base,
|
|
__locale_t __loc));
|
|
|
|
extern unsigned long long int __strtoull_l __P ((__const char *__restrict
|
|
__nptr,
|
|
char **__restrict __endptr,
|
|
int __base,
|
|
__locale_t __loc));
|
|
|
|
extern double __strtod_l __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr, __locale_t __loc));
|
|
|
|
extern float __strtof_l __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr, __locale_t __loc));
|
|
|
|
extern __long_double_t __strtold_l __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
__locale_t __loc));
|
|
#endif /* GNU */
|
|
|
|
|
|
/* The internal entry points for `strtoX' take an extra flag argument
|
|
saying whether or not to parse locale-dependent number grouping. */
|
|
|
|
extern double __strtod_internal __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __group));
|
|
extern float __strtof_internal __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr, int __group));
|
|
extern __long_double_t __strtold_internal __P ((__const char *
|
|
__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __group));
|
|
#ifndef __strtol_internal_defined
|
|
extern long int __strtol_internal __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __base, int __group));
|
|
# define __strtol_internal_defined 1
|
|
#endif
|
|
#ifndef __strtoul_internal_defined
|
|
extern unsigned long int __strtoul_internal __P ((__const char *
|
|
__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __base, int __group));
|
|
# define __strtoul_internal_defined 1
|
|
#endif
|
|
#if defined __GNUC__ || defined __USE_ISOC9X
|
|
# ifndef __strtoll_internal_defined
|
|
extern long long int __strtoll_internal __P ((__const char *__restrict __nptr,
|
|
char **__restrict __endptr,
|
|
int __base, int __group));
|
|
# define __strtoll_internal_defined 1
|
|
# endif
|
|
# ifndef __strtoull_internal_defined
|
|
extern unsigned long long int __strtoull_internal __P ((__const char *
|
|
__restrict __nptr,
|
|
char **
|
|
__restrict __endptr,
|
|
int __base,
|
|
int __group));
|
|
# define __strtoull_internal_defined 1
|
|
# endif
|
|
#endif /* GCC */
|
|
|
|
#if defined __OPTIMIZE__ && __GNUC__ >= 2
|
|
/* Define inline functions which call the internal entry points. */
|
|
|
|
extern __inline double
|
|
strtod (__const char *__restrict __nptr, char **__restrict __endptr)
|
|
{
|
|
return __strtod_internal (__nptr, __endptr, 0);
|
|
}
|
|
extern __inline long int
|
|
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
int __base)
|
|
{
|
|
return __strtol_internal (__nptr, __endptr, __base, 0);
|
|
}
|
|
extern __inline unsigned long int
|
|
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
int __base)
|
|
{
|
|
return __strtoul_internal (__nptr, __endptr, __base, 0);
|
|
}
|
|
|
|
# ifdef __USE_GNU
|
|
extern __inline float
|
|
strtof (__const char *__restrict __nptr, char **__restrict __endptr)
|
|
{
|
|
return __strtof_internal (__nptr, __endptr, 0);
|
|
}
|
|
extern __inline __long_double_t
|
|
strtold (__const char *__restrict __nptr, char **__restrict __endptr)
|
|
{
|
|
return __strtold_internal (__nptr, __endptr, 0);
|
|
}
|
|
# endif
|
|
|
|
# ifdef __USE_BSD
|
|
extern __inline long long int
|
|
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
int __base)
|
|
{
|
|
return __strtoll_internal (__nptr, __endptr, __base, 0);
|
|
}
|
|
extern __inline unsigned long long int
|
|
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
int __base)
|
|
{
|
|
return __strtoull_internal (__nptr, __endptr, __base, 0);
|
|
}
|
|
# endif
|
|
|
|
# if defined __USE_MISC || defined __USE_ISOC9X
|
|
extern __inline long long int
|
|
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
|
|
int __base)
|
|
{
|
|
return __strtoll_internal (__nptr, __endptr, __base, 0);
|
|
}
|
|
extern __inline unsigned long long int
|
|
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
|
|
int __base)
|
|
{
|
|
return __strtoull_internal (__nptr, __endptr, __base, 0);
|
|
}
|
|
# endif
|
|
|
|
extern __inline double
|
|
atof (__const char *__nptr)
|
|
{
|
|
return strtod (__nptr, (char **) NULL);
|
|
}
|
|
extern __inline int
|
|
atoi (__const char *__nptr)
|
|
{
|
|
return (int) strtol (__nptr, (char **) NULL, 10);
|
|
}
|
|
extern __inline long int
|
|
atol (__const char *__nptr)
|
|
{
|
|
return strtol (__nptr, (char **) NULL, 10);
|
|
}
|
|
|
|
# if defined __USE_MISC || defined __USE_ISOC9X
|
|
extern __inline long long int
|
|
atoll (__const char *__nptr)
|
|
{
|
|
return strtoll (__nptr, (char **) NULL, 10);
|
|
}
|
|
# endif
|
|
#endif /* Optimizing GCC >=2. */
|
|
|
|
|
|
#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
|
|
/* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant
|
|
digit first. Returns a pointer to static storage overwritten by the
|
|
next call. */
|
|
extern char *l64a __P ((long int __n));
|
|
|
|
/* Read a number from a string S in base 64 as above. */
|
|
extern long int a64l __P ((__const char *__s));
|
|
|
|
|
|
# include <sys/types.h> /* we need int32_t... */
|
|
|
|
/* These are the functions that actually do things. The `random', `srandom',
|
|
`initstate' and `setstate' functions are those from BSD Unices.
|
|
The `rand' and `srand' functions are required by the ANSI standard.
|
|
We provide both interfaces to the same random number generator. */
|
|
/* Return a random long integer between 0 and RAND_MAX inclusive. */
|
|
extern int32_t __random __P ((void));
|
|
extern int32_t random __P ((void));
|
|
|
|
/* Seed the random number generator with the given number. */
|
|
extern void __srandom __P ((unsigned int __seed));
|
|
extern void srandom __P ((unsigned int __seed));
|
|
|
|
/* Initialize the random number generator to use state buffer STATEBUF,
|
|
of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16,
|
|
32, 64, 128 and 256, the bigger the better; values less than 8 will
|
|
cause an error and values greater than 256 will be rounded down. */
|
|
extern __ptr_t __initstate __P ((unsigned int __seed, __ptr_t __statebuf,
|
|
size_t __statelen));
|
|
extern __ptr_t initstate __P ((unsigned int __seed, __ptr_t __statebuf,
|
|
size_t __statelen));
|
|
|
|
/* Switch the random number generator to state buffer STATEBUF,
|
|
which should have been previously initialized by `initstate'. */
|
|
extern __ptr_t __setstate __P ((__ptr_t __statebuf));
|
|
extern __ptr_t setstate __P ((__ptr_t __statebuf));
|
|
|
|
|
|
# ifdef __USE_MISC
|
|
/* Reentrant versions of the `random' family of functions.
|
|
These functions all use the following data structure to contain
|
|
state, rather than global state variables. */
|
|
|
|
struct random_data
|
|
{
|
|
int32_t *fptr; /* Front pointer. */
|
|
int32_t *rptr; /* Rear pointer. */
|
|
int32_t *state; /* Array of state values. */
|
|
int rand_type; /* Type of random number generator. */
|
|
int rand_deg; /* Degree of random number generator. */
|
|
int rand_sep; /* Distance between front and rear. */
|
|
int32_t *end_ptr; /* Pointer behind state table. */
|
|
};
|
|
|
|
extern int __random_r __P ((struct random_data *__buf, int32_t *__result));
|
|
extern int random_r __P ((struct random_data *__buf, int32_t *__result));
|
|
|
|
extern int __srandom_r __P ((unsigned int __seed, struct random_data *__buf));
|
|
extern int srandom_r __P ((unsigned int __seed, struct random_data *__buf));
|
|
|
|
extern int __initstate_r __P ((unsigned int __seed, __ptr_t __statebuf,
|
|
size_t __statelen, struct random_data *__buf));
|
|
extern int initstate_r __P ((unsigned int __seed, __ptr_t __statebuf,
|
|
size_t __statelen, struct random_data *__buf));
|
|
|
|
extern int __setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf));
|
|
extern int setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf));
|
|
# endif /* Use misc. */
|
|
#endif /* Use SVID || extended X/Open. */
|
|
|
|
|
|
/* Return a random integer between 0 and RAND_MAX inclusive. */
|
|
extern int rand __P ((void));
|
|
/* Seed the random number generator with the given number. */
|
|
extern void srand __P ((unsigned int __seed));
|
|
|
|
#ifdef __USE_MISC
|
|
/* Reentrant interface according to POSIX.1. */
|
|
extern int __rand_r __P ((unsigned int *__seed));
|
|
extern int rand_r __P ((unsigned int *__seed));
|
|
#endif
|
|
|
|
|
|
#if defined __USE_SVID || defined __USE_XOPEN
|
|
/* System V style 48-bit random number generator functions. */
|
|
|
|
/* Return non-negative, double-precision floating-point value in [0.0,1.0). */
|
|
extern double drand48 __P ((void));
|
|
extern double erand48 __P ((unsigned short int __xsubi[3]));
|
|
|
|
/* Return non-negative, long integer in [0,2^31). */
|
|
extern long int lrand48 __P ((void));
|
|
extern long int nrand48 __P ((unsigned short int __xsubi[3]));
|
|
|
|
/* Return signed, long integers in [-2^31,2^31). */
|
|
extern long int mrand48 __P ((void));
|
|
extern long int jrand48 __P ((unsigned short int __xsubi[3]));
|
|
|
|
/* Seed random number generator. */
|
|
extern void srand48 __P ((long int __seedval));
|
|
extern unsigned short int *seed48 __P ((unsigned short int __seed16v[3]));
|
|
extern void lcong48 __P ((unsigned short int __param[7]));
|
|
|
|
/* Data structure for communication with thread safe versions. */
|
|
struct drand48_data
|
|
{
|
|
unsigned short int X[3]; /* Current state. */
|
|
unsigned short int a[3]; /* Factor in congruential formula. */
|
|
unsigned short int c; /* Additive const. in congruential formula. */
|
|
unsigned short int old_X[3]; /* Old state. */
|
|
int init; /* Flag for initializing. */
|
|
};
|
|
|
|
# ifdef __USE_MISC
|
|
/* Return non-negative, double-precision floating-point value in [0.0,1.0). */
|
|
extern int drand48_r __P ((struct drand48_data *__buffer, double *__result));
|
|
extern int __erand48_r __P ((unsigned short int __xsubi[3],
|
|
struct drand48_data *__buffer, double *__result));
|
|
extern int erand48_r __P ((unsigned short int __xsubi[3],
|
|
struct drand48_data *__buffer, double *__result));
|
|
|
|
/* Return non-negative, long integer in [0,2^31). */
|
|
extern int lrand48_r __P ((struct drand48_data *__buffer, long int *__result));
|
|
extern int __nrand48_r __P ((unsigned short int __xsubi[3],
|
|
struct drand48_data *__buffer,
|
|
long int *__result));
|
|
extern int nrand48_r __P ((unsigned short int __xsubi[3],
|
|
struct drand48_data *__buffer, long int *__result));
|
|
|
|
/* Return signed, long integers in [-2^31,2^31). */
|
|
extern int mrand48_r __P ((struct drand48_data *__buffer, long int *__result));
|
|
extern int __jrand48_r __P ((unsigned short int __xsubi[3],
|
|
struct drand48_data *__buffer,
|
|
long int *__result));
|
|
extern int jrand48_r __P ((unsigned short int __xsubi[3],
|
|
struct drand48_data *__buffer, long int *__result));
|
|
|
|
/* Seed random number generator. */
|
|
extern int __srand48_r __P ((long int __seedval,
|
|
struct drand48_data *__buffer));
|
|
extern int srand48_r __P ((long int __seedval, struct drand48_data *__buffer));
|
|
|
|
extern int __seed48_r __P ((unsigned short int __seed16v[3],
|
|
struct drand48_data *__buffer));
|
|
extern int seed48_r __P ((unsigned short int __seed16v[3],
|
|
struct drand48_data *__buffer));
|
|
|
|
extern int __lcong48_r __P ((unsigned short int __param[7],
|
|
struct drand48_data *__buffer));
|
|
extern int lcong48_r __P ((unsigned short int __param[7],
|
|
struct drand48_data *__buffer));
|
|
# endif /* Use misc. */
|
|
|
|
/* Internal function to compute next state of the generator. */
|
|
extern int __drand48_iterate __P ((unsigned short int __xsubi[3],
|
|
struct drand48_data *__buffer));
|
|
#endif /* Use SVID or X/Open. */
|
|
|
|
|
|
/* Allocate SIZE bytes of memory. */
|
|
extern __ptr_t malloc __P ((size_t __size));
|
|
/* Re-allocate the previously allocated block
|
|
in __ptr_t, making the new block SIZE bytes long. */
|
|
extern __ptr_t realloc __P ((__ptr_t __ptr, size_t __size));
|
|
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
|
|
extern __ptr_t calloc __P ((size_t __nmemb, size_t __size));
|
|
/* Free a block allocated by `malloc', `realloc' or `calloc'. */
|
|
extern void free __P ((__ptr_t __ptr));
|
|
|
|
#ifdef __USE_MISC
|
|
/* Free a block. An alias for `free'. (Sun Unices). */
|
|
extern void cfree __P ((__ptr_t __ptr));
|
|
#endif /* Use misc. */
|
|
|
|
#if defined __USE_GNU || defined __USE_BSD || defined __USE_MISC
|
|
# include <alloca.h>
|
|
#endif /* Use GNU, BSD, or misc. */
|
|
|
|
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
|
|
/* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */
|
|
extern __ptr_t valloc __P ((size_t __size));
|
|
#endif
|
|
|
|
|
|
/* Abort execution and generate a core-dump. */
|
|
extern void abort __P ((void)) __attribute__ ((__noreturn__));
|
|
|
|
|
|
/* Register a function to be called when `exit' is called. */
|
|
extern int atexit __P ((void (*__func) (void)));
|
|
|
|
#ifdef __USE_MISC
|
|
/* Register a function to be called with the status
|
|
given to `exit' and the given argument. */
|
|
extern int __on_exit __P ((void (*__func) (int __status, __ptr_t __arg),
|
|
__ptr_t __arg));
|
|
extern int on_exit __P ((void (*__func) (int __status, __ptr_t __arg),
|
|
__ptr_t __arg));
|
|
#endif
|
|
|
|
/* Call all functions registered with `atexit' and `on_exit',
|
|
in the reverse of the order in which they were registered
|
|
perform stdio cleanup, and terminate program execution with STATUS. */
|
|
extern void exit __P ((int __status)) __attribute__ ((__noreturn__));
|
|
|
|
|
|
/* Return the value of envariable NAME, or NULL if it doesn't exist. */
|
|
extern char *getenv __P ((__const char *__name));
|
|
|
|
/* This function is similar to the above but returns NULL if the
|
|
programs is running with SUID or SGID enabled. */
|
|
extern char *__secure_getenv __P ((__const char *__name));
|
|
|
|
#if defined __USE_SVID || defined __USE_XOPEN
|
|
/* The SVID says this is in <stdio.h>, but this seems a better place. */
|
|
/* Put STRING, which is of the form "NAME=VALUE", in the environment.
|
|
If there is no `=', remove NAME from the environment. */
|
|
extern int putenv __P ((__const char *__string));
|
|
#endif
|
|
|
|
#ifdef __USE_BSD
|
|
/* Set NAME to VALUE in the environment.
|
|
If REPLACE is nonzero, overwrite an existing value. */
|
|
extern int setenv __P ((__const char *__name, __const char *__value,
|
|
int __replace));
|
|
|
|
/* Remove the variable NAME from the environment. */
|
|
extern void unsetenv __P ((__const char *__name));
|
|
#endif
|
|
|
|
#ifdef __USE_MISC
|
|
/* The `clearenv' was planned to be added to POSIX.1 but probably
|
|
never made it. Nevertheless the POSIX.9 standard (POSIX bindings
|
|
for Fortran 77) requires this function. */
|
|
extern int __clearenv __P ((void));
|
|
extern int clearenv __P ((void));
|
|
#endif
|
|
|
|
|
|
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
|
|
/* Generate a unique temporary file name from TEMPLATE.
|
|
The last six characters of TEMPLATE must be "XXXXXX";
|
|
they are replaced with a string that makes the file name unique.
|
|
Returns TEMPLATE, or a null pointer if it cannot get a unique file name. */
|
|
extern char *mktemp __P ((char *__template));
|
|
|
|
/* Generate a unique temporary file name from TEMPLATE.
|
|
The last six characters of TEMPLATE must be "XXXXXX";
|
|
they are replaced with a string that makes the filename unique.
|
|
Returns a file descriptor open on the file for reading and writing,
|
|
or -1 if it cannot create a uniquely-named file. */
|
|
extern int mkstemp __P ((char *__template));
|
|
#endif
|
|
|
|
|
|
/* Execute the given line as a shell command. */
|
|
extern int system __P ((__const char *__command));
|
|
|
|
|
|
#ifdef __USE_GNU
|
|
/* Return a malloc'd string containing the canonical absolute name of the
|
|
named file. The last file name component need not exist, and may be a
|
|
symlink to a nonexistent file. */
|
|
extern char *canonicalize_file_name __P ((__const char *__name));
|
|
#endif
|
|
|
|
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
|
|
/* Return the canonical absolute name of file NAME. The last file name
|
|
component need not exist, and may be a symlink to a nonexistent file.
|
|
If RESOLVED is null, the result is malloc'd; otherwise, if the canonical
|
|
name is PATH_MAX chars or more, returns null with `errno' set to
|
|
ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the
|
|
name in RESOLVED. */
|
|
extern char *realpath __P ((__const char *__name, char *__resolved));
|
|
#endif
|
|
|
|
|
|
/* Shorthand for type of comparison functions. */
|
|
#ifndef __COMPAR_FN_T
|
|
# define __COMPAR_FN_T
|
|
typedef int (*__compar_fn_t) __P ((__const __ptr_t, __const __ptr_t));
|
|
|
|
# ifdef __USE_GNU
|
|
typedef __compar_fn_t comparison_fn_t;
|
|
# endif
|
|
#endif
|
|
|
|
/* Do a binary search for KEY in BASE, which consists of NMEMB elements
|
|
of SIZE bytes each, using COMPAR to perform the comparisons. */
|
|
extern __ptr_t bsearch __P ((__const __ptr_t __key, __const __ptr_t __base,
|
|
size_t __nmemb, size_t __size,
|
|
__compar_fn_t __compar));
|
|
|
|
/* Sort NMEMB elements of BASE, of SIZE bytes each,
|
|
using COMPAR to perform the comparisons. */
|
|
extern void qsort __P ((__ptr_t __base, size_t __nmemb, size_t __size,
|
|
__compar_fn_t __compar));
|
|
|
|
|
|
/* Return the absolute value of X. */
|
|
extern int abs __P ((int __x)) __attribute__ ((__const__));
|
|
extern long int labs __P ((long int __x)) __attribute__ ((__const__));
|
|
#ifdef __USE_ISOC9X
|
|
extern long long int llabs __P ((long long int __x))
|
|
__attribute__ ((__const__));
|
|
#endif
|
|
|
|
|
|
/* Return the `div_t', `ldiv_t' or `lldiv_t' representation
|
|
of the value of NUMER over DENOM. */
|
|
/* GCC may have built-ins for these someday. */
|
|
extern div_t div __P ((int __numer, int __denom)) __attribute__ ((__const__));
|
|
extern ldiv_t ldiv __P ((long int __numer, long int __denom))
|
|
__attribute__ ((__const__));
|
|
#ifdef __USE_ISOC9X
|
|
extern lldiv_t lldiv __P ((long long int __numer, long long int __denom))
|
|
__attribute__ ((__const__));
|
|
#endif
|
|
|
|
|
|
#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
|
|
/* Convert floating point numbers to strings. The returned values are
|
|
valid only until another call to the same function. */
|
|
|
|
/* Convert VALUE to a string with NDIGIT digits and return a pointer to
|
|
this. Set *DECPT with the position of the decimal character and *SIGN
|
|
with the sign of the number. */
|
|
extern char *ecvt __P ((double __value, int __ndigit, int *__decpt,
|
|
int *__sign));
|
|
|
|
/* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT
|
|
with the position of the decimal character and *SIGN with the sign of
|
|
the number. */
|
|
extern char *fcvt __P ((double __value, int __ndigit, int *__decpt,
|
|
int *__sign));
|
|
|
|
/* If possible convert VALUE to a string with NDIGIT significant digits.
|
|
Otherwise use exponential representation. The resulting string will
|
|
be written to BUF. */
|
|
extern char *gcvt __P ((double __value, int __ndigit, char *__buf));
|
|
|
|
/* Long double versions of above functions. */
|
|
extern char *qecvt __P ((__long_double_t __value, int __ndigit, int *__decpt,
|
|
int *__sign));
|
|
extern char *qfcvt __P ((__long_double_t __value, int __ndigit, int *__decpt,
|
|
int *__sign));
|
|
extern char *qgcvt __P ((__long_double_t __value, int __ndigit, char *__buf));
|
|
|
|
|
|
# ifdef __USE_MISC
|
|
/* Reentrant version of the functions above which provide their own
|
|
buffers. */
|
|
extern int ecvt_r __P ((double __value, int __ndigit, int *__decpt,
|
|
int *__sign, char *__buf, size_t __len));
|
|
extern int fcvt_r __P ((double __value, int __ndigit, int *__decpt,
|
|
int *__sign, char *__buf, size_t __len));
|
|
|
|
extern int qecvt_r __P ((__long_double_t __value, int __ndigit, int *__decpt,
|
|
int *__sign, char *__buf, size_t __len));
|
|
extern int qfcvt_r __P ((__long_double_t __value, int __ndigit, int *__decpt,
|
|
int *__sign, char *__buf, size_t __len));
|
|
# endif /* misc */
|
|
#endif /* use MISC || use X/Open Unix */
|
|
|
|
|
|
/* Return the length of the multibyte character
|
|
in S, which is no longer than N. */
|
|
extern int mblen __P ((__const char *__s, size_t __n));
|
|
/* Return the length of the given multibyte character,
|
|
putting its `wchar_t' representation in *PWC. */
|
|
extern int mbtowc __P ((wchar_t *__restrict __pwc,
|
|
__const char *__restrict __s, size_t __n));
|
|
/* Put the multibyte character represented
|
|
by WCHAR in S, returning its length. */
|
|
extern int wctomb __P ((char *__s, wchar_t __wchar));
|
|
|
|
#if defined __OPTIMIZE__ && __GNUC__ >= 2
|
|
extern __inline int
|
|
mblen (__const char *__s, size_t __n)
|
|
{
|
|
return mbtowc ((wchar_t *) NULL, __s, __n);
|
|
}
|
|
#endif /* Optimizing GCC >=2. */
|
|
|
|
|
|
/* Convert a multibyte string to a wide char string. */
|
|
extern size_t mbstowcs __P ((wchar_t *__restrict __pwcs,
|
|
__const char *__restrict __s, size_t __n));
|
|
/* Convert a wide char string to multibyte string. */
|
|
extern size_t wcstombs __P ((char *__restrict __s,
|
|
__const wchar_t *__restrict __pwcs, size_t __n));
|
|
|
|
|
|
#ifdef __USE_SVID
|
|
/* Determine whether the string value of RESPONSE matches the affirmation
|
|
or negative response expression as specified by the LC_MESSAGES category
|
|
in the program's current locale. Returns 1 if affirmative, 0 if
|
|
negative, and -1 if not matching. */
|
|
extern int rpmatch __P ((__const char *__response));
|
|
#endif
|
|
|
|
|
|
#ifdef __USE_XOPEN_EXTENDED
|
|
/* Parse comma separated suboption from *OPTIONP and match against
|
|
strings in TOKENS. If found return index and set *VALUEP to
|
|
optional value introduced by an equal sign. If the suboption is
|
|
not part of TOKENS return in *VALUEP beginning of unknown
|
|
suboption. On exit *OPTIONP is set to the beginning of the next
|
|
token or at the terminating NUL character. */
|
|
extern int getsubopt __P ((char **__optionp, __const char *__const *__tokens,
|
|
char **__valuep));
|
|
#endif
|
|
|
|
|
|
#ifdef __USE_XOPEN
|
|
|
|
/* Setup DES tables according KEY. */
|
|
extern void setkey __P ((__const char *__key));
|
|
#endif
|
|
|
|
|
|
__END_DECLS
|
|
|
|
#endif /* stdlib.h */
|