FreeBSD C99 & POSIX Conformance Project
Project Goal

The FreeBSD C99 & POSIX Conformance Project aims to implement all requirements of the ISO 9899:1999 (C99) and IEEE 1003.1-2001 (POSIX) standards. In cases where aspects of these standards cannot be followed, those aspects will be documented in the c99(7) or posix(7) manuals. It is also an aim of this project to implement regression tests to ensure correctness whenever possible.

Project Plan

All of the initial development takes place in the 5-CURRENT branch and most changes are merged into the 4-STABLE branch. Since this is a rather large project and is being done on a volunteer basis, there is no set schedule.

How to Contribute

The project is always looking for additional contributors. If you wish to participate, the best way to find out what is happening is to subscribe to the freebsd-standards mailing list. If you are working on a specific task relating to the project, you should contact mike@FreeBSD.org with a description of the task so that your task can be listed below.

Resources and Links Status Board

Task Responsible Last Updated Status
5.x 4.x
Documentation
Create stdint(7) manual to document <stdint.h>. Mike Barcroft 15 September 2002 Done Not Planned
Document standards conformity level of the API.   26 March 2002 In progress  
Document thread safety and async-cancel safety.   26 March 2002 In progress  
Create c99(7) and posix(7) manuals.   11 December 2001 Not Started  
Document in posix(7) that the batch job management utilities are available in the port net/generic-nqs.   11 December 2001 Not Started  
Document flockfile(3), ftrylockfile(3), funlockfile(3).   17 September 2002 Not Started  
Document new _SC options in sysconf(3) (PR: 20528).   25 November 2002 Not Started  


Task Responsible Last Updated Status
5.0 4.x
Functions and System Calls
Add __func__ reporting to assert(3). Jeroen Ruigrok 27 October 2001 Done Not Planned
Implement imaxabs(), imaxdiv(), llabs(), lldiv(). Mike Barcroft 14 November 2001 Done Not Planned
Implement atoll(), strtoimax(), strtoumax(). Bill Fenner 27 November 2001 Done Not Planned
Implement new length modifiers (hh, j, t, z) and new flag (') in printf(3). Garrett Wollman,
Bill Fenner
30 November 2001 Done Not Planned
Implement strerror_r(). Wes Peters 20 December 2001 Done Done
Implement tgamma() based on Lite1's gamma(). Bruce Evans 27 March 2002 Done Not Planned
Implement new length modifiers (hh, j, ll, t, z) in scanf(3). Bill Fenner 20 April 2002 Done Not Planned
Add WCONTINUED to waitpid(2). Mike Barcroft 1 June 2002 Done Not Planned
Implement new conversion specifiers (%j and %n) in printf(9). Dima Dorfman
Dag-Erling Smorgrav
3 June 2002 Done Not Planned
Implement fstatvfs() and statvfs() (trivial). Garrett Wollman 14 June 2002 Done Not Planned
Implement fmtmsg(). Mike Barcroft 8 August 2002 Done Not Planned
Implement ulimit(). Kyle Martin 8 August 2002 Done Not Planned
Implement C99's _Exit(). Garrett Wollman 11 September 2002 Done Not Planned
Add required options for POSIX.1-2001 to glob(). (partial MFC) Mike Heffner 20 September 2002 Done Done
Update sysconf(3) for POSIX.1-2001. Garrett Wollman 18 September 2002 Done Not Planned
Restore insque(), lsearch(), remque() from libcompat. Robert Drehmel 16 November 2002 Done Not Planned
Implement fpclassify(). David Schultz,
Mike Barcroft
8 February 2003 Done Not Planned
Implement isfinite(), isinf(), isnan(), isnormal(). David Schultz 17 February 2003 Done Not Planned
Implement isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(). David Schultz 17 February 2003 Done Not Planned
Implement signbit(). Mike Barcroft 17 February 2003 Done Not Planned
Implement sockatmark(). Bill Fenner 23 December 2002 Done Not Started
Implement wordexp() and wordfree(). Tim J. Robbins 31 December 2002 Done Not Started
Implement grantpt(), posix_openpt(), ptsname(), unlockpt(). Ryan Younce 4 February 2003 Done Not Started
Implement getgrgid_r(), getgrnam_r(). Wes Peters 20 December 2001 In progress  
Implement new functions that appear in <complex.h>. Mark Murray 6 February 2002 In progress  
Implement waitid(2). Mike Barcroft 27 May 2002 In progress  
Add floating-point support for the (') modifier in printf(3) Alexey Zelkin 13 June 2002 In progress  
Add new conversion specifiers (%a and %A) to printf(3). Kyle Martin 13 June 2002 In progress  
Implement the utmpx family of functions. Robert Drehmel 28 June 2002 In progress  
Implement ftw() and nftw() in terms of fts(). Kyle Martin 16 August 2002 In progress  
Add restrict type-qualifier to functions that require it. Robert Drehmel 16 August 2002 In progress  
Implement iconv(), iconv_close(), iconv_open(). Tim J. Robbins 8 October 2002 In progress  
Implement getpwnam_r(), getpwuid_r(). David Leimbach 8 February 2003 In progress  
Transition to vendor (Netlib) source for strtod.c. David Schultz 27 February 2003 In progress  
Import Netlib's gdtoa (strtof, strtold, etc.). David Schultz 27 February 2003 In progress  
Implement new functions that appear in <fenv.h>. Bill Fenner 14 November 2001 Not Started  
Make non thread-safe functions thread-safe.   22 October 2001 Not Started  
Make functions async-cancel safe.   22 October 2001 Not Started  
Implement C99 macros fpclassify(), isfinite(), isinf(), isnan(), isnormal(), signbit().   13 April 2002 Not Started  
Implement C99 macros isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(), isunordered().   13 April 2002 Not Started  
Implement new hex floating-point format types (%a/%A) in scanf(3).   20 April 2002 Not Started  
Implement C99 rounding functions lrint(), lrintf(), lrintl(), llrint(), llrintf(), llrintl().   30 July 2002 Not Started  
Implement posix_madvise(), posix_mem_offset(), posix_typed_mem_get_info(), posix_typed_mem_open(), posix_memalign().   23 August 2002 Not Started  
Obtain a64l(), l64a(), and l64a_r() (extention) from NetBSD.   9 September 2002 Not Started  
Decide whether to implement legacy functions: ecvt(), fcvt(), gcvt().   9 September 2002 Not Started  
Add SIG_HOLD support to signal(3)/sigaction(2).   13 October 2002 Not Started  
Implement RTS functions sigqueue(), sigtimedwait(), sigwaitinfo().   13 October 2002 Not Started  
Update fmtcheck(3) to recognize new printf(3) flags.   16 October 2002 Not Started  


Task Responsible Last Updated Status
5.0 4.x
Headers
Fix prototypes and hide non-conforming portions of header <arpa/inet.h>. Mike Barcroft 19 February 2002 Done Not Planned
Implement the <stdint.h> and <inttypes.h> headers. Mike Barcroft 1 March 2002 Done Not Planned
Add exposure control primitives to <sys/cdefs.h> (originally developed by Garrett Wollman). Mike Barcroft 1 April 2002 Done Not Planned
Implement <sys/_types> to store shared MI types. Mike Barcroft 1 April 2002 Done Not Planned
Implement header <strings.h>, and work out compatibility issues with header <string.h>. Mike Barcroft 4 April 2002 Done Not Planned
Hide non-conforming portions, add missing types to <sys/un.h>. Mike Barcroft 19 April 2002 Done Not Planned
Remove pollution and add missing macros to <netinet/in.h> and <netinet6/in6.h>. Mike Barcroft 23 May 2002 Done Not Planned
Hide non-conforming portions of <sys/wait.h>. Mike Barcroft 3 June 2002 Done Not Planned
Hide non-conforming portions of <pwd.h>. Mike Barcroft 9 June 2002 Done Not Planned
Create <sys/statvfs.h> based on POSIX spec. Garrett Wollman 14 June 2002 Done Not Planned
Add nfds_t and resolve other issues in <poll.h> (actually <sys/poll.h>). Mike Barcroft 8 July 2002 Done Not Planned
Implement the XSI header, <cpio.h>. Mike Barcroft 1 August 2002 Done Not Planned
Implement <fmtmsg.h>. Mike Barcroft 8 August 2002 Done Not Planned
Implement <ulimit.h>. Kyle Martin 8 August 2002 Done Not Planned
Merge <machine/ansi.h> and <machine/types> into a new common header <machine/_types.h>. Bruce Evans,
Mike Barcroft
23 August 2002 Done Not Planned
Fix namespaces, add missing types in <sys/mman.h>. Mike Barcroft 29 August 2002 Done Not Planned
Fix namespace issues in <ctype.h>. Mike Barcroft 9 September 2002 Done Not Planned
Fix namespace issues in <dlfcn.h>. Garrett Wollman,
Mike Barcroft
11 September 2002 Done Not Planned
Fix namespace issues in <fcntl.h>. Mike Barcroft 18 September 2002 Done Not Planned
Fix namespace issues in <fnmatch.h>. Mike Barcroft 18 September 2002 Done Not Planned
Fix namespace issues in <grp.h>. Mike Barcroft 18 September 2002 Done Not Planned
Fix namespace issues in <langinfo.h>. Mike Barcroft 18 September 2002 Done Not Planned
Add va_copy() macro to <stdarg.h> (actually <machine/stdarg.h>). Mike Barcroft 20 September 2002 Done Not Planned
Fix namespaces issues in <stdlib.h>. Garrett Wollman 21 September 2002 Done Not Planned
Add new pathname, system variable, and POSIX option constants to <unistd.h>. Garrett Wollman 21 September 2002 Done Not Planned
Merge two conflicting math.h headers into a single header. Bruce Evans 2 October 2002 Done Not Planned
Fix namespace issues in <net/if.h>. Mike Barcroft 2 October 2002 Done Not Planned
Fix namespace issues in <netinet/tcp.h>. Mike Barcroft 2 October 2002 Done Not Planned
Add size_t, fix regoff_t in <regex.h>. Mike Barcroft 2 October 2002 Done Not Planned
Fix namespace issues in <sched.h> (actually <posix4/sched.h>). Mike Barcroft 5 October 2002 Done Not Planned
Fix namespace issues in <semaphore.h> (actually <posix4/semaphore.h>). Mike Barcroft 5 October 2002 Done Not Planned
Fix namespace issues in <setjmp.h> (actually <machine/setjmp.h>). Mike Barcroft 5 October 2002 Done Not Planned
Fix namespace issues in <stdio.h>. Garrett Wollman 7 October 2002 Done Not Planned
Add missing members to struct lconv in <locale.h>. Tim J. Robbins 9 October 2002 Done Not Planned
Fix namespace issues, add missing types in <sys/socket.h>. Mike Barcroft 13 October 2002 Done Not Planned
Fix namespace issues, add missing types in <sys/uio.h>. Mike Barcroft 13 October 2002 Done Not Planned
Fix namespace issues in <signal.h> (also <sys/signal.h> and <machine/signal.h>). Mike Barcroft 13 October 2002 Done Not Planned
Eliminate <sys/_posix.h>. Mike Barcroft 16 October 2002 Done Not Planned
Implement the header <wordexp.h>. Tim J. Robbins 31 December 2002 Done Not Started
Implement new types and prototypes in header <complex.h>. Mark Murray 6 February 2002 In progress  
Hide non-conforming portions, add missing types to <sys/types.h>. Mike Barcroft 1 April 2002 In progress  
Reduce namespace pollution and add missing typedefs in <unistd.h> Mike Barcroft 25 March 2002 In progress  
Implement <utmpx.h> to eventually replace <utmp.h>. Robert Drehmel 28 June 2002 In progress  
Implement <ftw.h>. Kyle Martin 16 August 2002 In progress  
Add missing errnos to <errno.h> (actually <sys/errno.h>). Mike Barcroft 11 September 2002 In progress  
Implement the header <iconv.h>. Tim J. Robbins 7 October 2002 In progress  
Evaluate missing features of <math.h>. Ryan Younce 23 December 2002 In progress  
Hide non-conforming portions, add missing types to <sys/stat.h>. Mike Barcroft 27 February 2003 In progress  
Implement the header <fenv.h>. Bill Fenner 14 November 2001 Not Started  
Add missing constants FLT_EVAL_METHOD, DECIMAL_DIG to <float.h> (actually <machine/float.h>).   17 September 2002 Not Started  
Fix sizes of members in glob_t, add restrict type-qualifiers in <glob.h>.   20 September 2002 Not Started  
Decide whether to remove const type-qualifiers in <libgen.h>.   20 September 2002 Not Started  
Add missing constants in <limits.h>.   20 September 2002 Not Started  
Fix sizes of members in datum, add missing types, fix namespace issues in <ndbm.h>.   2 October 2002 Not Started  
Fix size of si_addrlen in struct addrinfo, add missing types, fix namespace issues in <netdb.h>.   2 October 2002 Not Started  
Evaluate missing features of <pthread.h>.   2 October 2002 Not Started  
Add missing members to struct sigevent, fix type of ss_sp in struct sigstack, add SIGEV_THREAD constant, add ucontext_t and mcontext_t in <sys/signal.h>.   13 October 2002 Not Started  
Fix types for members of struct ipc_perm in <sys/ipc.h>.   16 October 2002 Not Started  
Implement <tgmath.h>.   23 December 2002 Not Started  


Task Responsible Last Updated Status
5.0 4.x
Miscellaneous
Obtain a copy of Proc. ACM SIGPLAN '90 (required for printf(3) %'f). Bill Fenner 9 November 2001 Done Not Planned
Upgrade system compiler to GCC 3.1. David O'Brien 15 May 2002 Done Not Planned
Add regression test for each function.   17 November 2001 Not Started  
Merge sys/posix4/* into regular kernel hierachy, and remove sys/posix4.   21 September 2002 Not Started  
Open an Aardvark on how to deal with no newline on the last line of a file in diff(1).   25 November 2002 Not Started  
Globally rename the `lint' macro to something in the implementation namespace so it can safely modify the implementation ( reference).   25 November 2002 Not Started  
Globally rename the `LOCORE' macro to something in the implementation namespace so it can safely modify the implementation ( reference).   25 November 2002 Not Started  


Task Responsible Last Updated Status
5.0 4.x
Utility Conformance
Add -o option and base64 decoding to the uudecode utility. Juli Mallett 26 March 2002 Done Done
Add -m option and base64 encoding to the uuencode utility. Juli Mallett 26 March 2002 Done Done
Require atleast one file argument in paste(1). (PR: 36074) Tim J. Robbins 1 April 2002 Done Done
Add the -i option to the patch utility. Juli Mallett 9 April 2002 Done Done
Add -r and -t options to the at utility. Joe Halpin 16 April 2002 Done Not Planned
Add the -f and -p options to the pr utility. (PR: 36243) Tim J. Robbins 16 April 2002 Done Done
Add the -s option to the m4 utility. (PR: 36075) Tim J. Robbins 24 April 2002 Done Done
Make printf(1) utility conform to POSIX.2 (1992). (PR: 35616) Tim J. Robbins 2 May 2002 Done Done
Correct output stream and exit status of the mesg(1) utility. Tim J. Robbins 6 May 2002 Done Not Planned
Implement the asa utility. (PR: 36130) Tim J. Robbins 15 May 2002 Done Not Planned
Add the tabs utility. (PR: 36126) Tim J. Robbins 20 May 2002 Done Not Planned
Restore sccs utility from CVS attic. Juli Mallett 22 May 2002 Done Not Planned
Make expr(1) conform to POSIX.1-2001. Garrett Wollman 22 May 2002 Done Not Planned
Add the newgrp utility. (PR: 36190) Tim J. Robbins 28 May 2002 Done Not Planned
Fix ctags(1)'s -t option; fix ordering with -x. Tim J. Robbins 2 June 2002 Done Not Planned
Add -L option to the pwd utility. Tim J. Robbins 20 June 2002 Done Done
Fix exit status of the env(1) utility. Tim J. Robbins 20 June 2002 Done Done
Add the -b and -s option to the fold utility. (PR: 36245) Tim J. Robbins 20 June 2002 Done Done
Add -I and -L options to the xargs utility. Juli Mallett 20 June 2002 Done Done
Implement the csplit utility. (PR: 36191) Tim J. Robbins 20 June 2002 Done Not Planned
Fix exit status of the nice(1) utility. Tim J. Robbins 20 June 2002 Done Done
Add -n option to the nice utility. Peter Avalos 20 June 2002 Done Done
Add -n option and resolve other issues in the renice utility. (PR: 36950) Peter Avalos,
Maxim Konovalov
20 June 2002 Done Done
Add -t option to unexpand(1) utility. (PR: 35621) Tim J. Robbins 20 June 2002 Done Done
Make the uniq(1) utility accept `-' as a stdin specifier. Tim J. Robbins 28 June 2002 Done Done
Improve join(1)'s POSIX.1-2001 conformance. (PR: 36072) Tim J. Robbins 28 June 2002 Done Done
Add -C option to the tr utility. Tim J. Robbins 28 June 2002 Done Not Planned
Implement the -m, -p, and -x options in the ls utility. Kyle Martin 8 July 2002 Done Done
Reimplement the who utility. (PR: 36128) Tim J. Robbins 14 July 2002 Done Done
Fix exit status, stdout/stderr confusion, and add `-' stdin support to the compress(1) utility. Tim J. Robbins 17 July 2002 Done Done
Add the -s, -A, -j, -N, and -t options to the od utility. (PR: 36783) Tim J. Robbins 24 July 2002 Done Done
Add -a option to the split utility. Tim J. Robbins 30 July 2002 Done Done
Add -m option to the wc utility. Tim J. Robbins 29 August 2002 Done Done
Add -L and -P options to the cd utility (shell built-in). Tim J. Robbins 7 October 2002 Done Done
Reimplement command(1) (shell built-in). Tim J. Robbins 7 October 2002 Done Done
Add the c99 utility (similar to c89). (PR: 36087) Tim J. Robbins 8 October 2002 Done Not Planned
Update getconf(1) for POSIX.1-2001. Garrett Wollman 12 November 2002 Done Done
Add the pathchk utility. Tim J. Robbins 12 November 2002 Done Done
Document the -n option in the echo utility as being implementation-defined. Jens Schweikhardt 8 May 2003 Done Done
Add missing options to the mailx utility. Mike Heffner 22 December 2001 In progress  
Add missing components to the jobs utility. Kyle Martin 5 March 2002 In progress  
Work out conflicting -t option in the df utility. Tim J. Robbins 22 April 2002 In progress  
Add unimplemented features to the sh utility. Tim J. Robbins 20 May 2002 In progress  
Implement the -m, -w, and -t options in the lp utility. Garance A Drosehn 23 May 2002 In progress  
Implement/import the SCCS development utilities: admin, delta, get, prs, rmdel, sact, unget, val Juli Mallett 23 May 2002 In progress  
Investigate adopting some of the POSIX options in the ps utility. Juli Mallett 6 June 2002 In progress  
Add missing options and resolve conflicting options in the nm utility. Robert Drehmel 2 August 2002 In progress  
Implement the iconv utility. Tim J. Robbins 9 October 2002 In progress  
Implement the locale and localedef utilities. Alexey Zelkin 16 October 2002 In progress  
Add -C and -T options to the ar utility.   30 November 2001 Not Started  
Investigate importing the cflow utility from the ports collection.   30 November 2001 Not Started  
Add -p, -v, and -V options to the command utility (shell built-in).   30 November 2001 Not Started  
Bring the cp utility up to conformance.   30 November 2001 Not Started  
Implement the cxref utility.   30 November 2001 Not Started  
Add the -d, -h, and -M options and fix conflicting -i option in the file utility.   30 November 2001 Not Started  
Bring the make utility up to conformance.   30 November 2001 Not Started  
Add -p option the more utility.   30 November 2001 Not Started  
Add the qsub utility.   30 November 2001 Not Started  
Make printf(1) utility conform to SUSv3.   23 April 2002 Not Started  
Implement the fuser utility. (PR: 36076)   4 February 2003 Not Started  


Task Responsible Last Updated Status
5.0 4.x
Wide Character/String Support
Implement basic support for wide character I/O: getwc(), fgetwc(), getwchar(), putwc(), fputwc(), putwchar(), ungetwc(), fwide(). Tim J. Robbins 16 August 2002 Done Not Planned
Add stubs for reentrant wc handling functions btowc(), mbrlen(), mbrtowc(), mbsrtowcs(), wcrtomb(), wcsrtombs(), wctob(), wctype(). Tim J. Robbins 23 August 2002 Done Not Planned
Add stubs for reentrant wc handling functions iswalnum(), iswalpha(), iswcntrl(), iswctype(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(). Tim J. Robbins 23 August 2002 Done Not Planned
Implement wcwidth(). Michael C. Wu 23 August 2002 Done Not Planned
Implement wcswidth(). Andrey A. Chernov 23 August 2002 Done Not Planned
Implement wcstok(). Tim J. Robbins 9 September 2002 Done Not Planned
Implement wcstod(), wcstol(), wcstoul(). Tim J. Robbins 15 September 2002 Done Not Planned
Implement wcsftime(). Tim J. Robbins 15 September 2002 Done Not Planned
Implement fwprintf(), swprintf(), vfwprintf(), vswprintf(), vwprintf(), wprintf(). Tim J. Robbins 23 September 2002 Done Not Planned
Implement fwscanf(), swscanf(), vfwscanf(), vswscanf(), vwscanf(), wscanf(). Tim J. Robbins 23 September 2002 Done Not Planned
Implement wcstoimax(), wcstoll(), wcstoumax(), wcstoull(). Tim J. Robbins 23 September 2002 Done Not Planned
Implement wide character format types (%C, %S, %lc, %ls) in printf(3). Tim J. Robbins 16 October 2002 Done Not Planned
Implement wcscoll(), wcsxfrm(). Tim J. Robbins 7 October 2002 In progress  
Implement wide character format types (%C, %S, %lc, %ls) in scanf(3). Tim J. Robbins 18 September 2002 Not Started  


Legend
Not Started Not yet started
Blocked Blocked awaiting completion of another task
In progress Work in progress
Done Task completed
Not Planned Not planned

News

The remainder of this page is structured as a reverse-chronological log.

31 December 2002 13 December 2002 9 October 2002 16 August 2002 1 August 2002 22 May 2002 3 March 2002 30 January 2002 14 December 2001 6 December 2001 28 November 2001 19 October 2001 10 October 2001

The original layout for this web page was borrowed from the FreeBSD SMPng Project. BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.


home   |   contact   |   legal   |   © 1995-2003 The FreeBSD Project. All rights reserved.
Last modified: 2003/06/18 23:45:53