Skip site navigation (1) Skip section navigation (2)

Site Navigation

FreeBSD C99 and POSIX® Conformance Project

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 -CURRENT branch and most changes are merged into the -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 mail to the list with a description of the task so that your task can be listed below.

Resources and Links Status Board

Task Responsible Last Updated Status
7.X 6.X
Documentation
Create stdint(7) manual to document <stdint.h>. Mike Barcroft 15 September 2002 Done Done
Document flockfile(3), ftrylockfile(3), funlockfile(3). Tim J. Robbins 22 January 2004 Done Done
Document new _SC options in sysconf(3) (PR: 20528). Tom Rhodes 13 January 2005 Done Done
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  


Task Responsible Last Updated Status
7.X 6.X
Functions and System Calls
Add __func__ reporting to assert(3). Jeroen Ruigrok/Asmodai 27 October 2001 Done Done
Implement imaxabs(), imaxdiv(), llabs(), lldiv(). Mike Barcroft 14 November 2001 Done Done
Implement atoll(), strtoimax(), strtoumax(). Bill Fenner 27 November 2001 Done Done
Implement new length modifiers (hh, j, t, z) and new flag (') in printf(3). Garrett Wollman,
Bill Fenner
30 November 2001 Done Done
Implement strerror_r(). Wes Peters 20 December 2001 Done Done
Implement tgamma() based on Lite1's gamma(). Bruce Evans 27 March 2002 Done Done
Implement new length modifiers (hh, j, ll, t, z) in scanf(3). Bill Fenner 20 April 2002 Done Done
Add WCONTINUED to waitpid(2). Mike Barcroft 1 June 2002 Done Done
Implement new conversion specifiers (%j and %n) in printf(9). Dima Dorfman
Dag-Erling C. Smørgrav
3 June 2002 Done Done
Implement fstatvfs() and statvfs() (trivial). Garrett Wollman 14 June 2002 Done Done
Implement fmtmsg(). Mike Barcroft 8 August 2002 Done Done
Implement ulimit(). Kyle Martin 8 August 2002 Done Done
Implement C99's _Exit(). Garrett Wollman 11 September 2002 Done Done
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 Done
Restore insque(), lsearch(), remque() from libcompat. Robert Drehmel 16 November 2002 Done Done
Implement fpclassify(). David Schultz,
Mike Barcroft
8 February 2003 Done Done
Implement isfinite(), isinf(), isnan(), isnormal(). David Schultz 17 February 2003 Done Done
Implement isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(). David Schultz 17 February 2003 Done Done
Implement signbit(). Mike Barcroft 17 February 2003 Done Done
Implement sockatmark(). Bill Fenner 23 December 2002 Done Done
Implement wordexp() and wordfree(). Tim J. Robbins 31 December 2002 Done Done
Implement grantpt(), posix_openpt(), ptsname(), unlockpt(). Ryan Younce 4 February 2003 Done Done
Add floating-point support for the (') modifier in printf(3) David Schultz 22 January 2004 Done Done
Add new conversion specifiers (%a and %A) to printf(3). David Schultz 22 January 2004 Done Done
Transition to vendor (Netlib) source for strtod.c. David Schultz 22 January 2004 Done Done
Import Netlib's gdtoa (strtof, strtold, etc.). David Schultz 22 January 2004 Done Done
Implement C99 macros fpclassify(), isfinite(), isinf(), isnan(), isnormal(), signbit(). Mike Barcroft,
David Schultz
22 January 2004 Done Done
Implement C99 macros isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(), isunordered(). Mike Barcroft,
David Schultz
22 January 2004 Done Done
Implement new hex floating-point format types (%a/%A) in scanf(3). David Schultz 22 January 2004 Done Done
Implement getpwnam_r(), getpwuid_r(). Jacques Vidrine 7 June 2004 Done Done
Implement posix_madvise(). Bruce M. Simpson 7 June 2004 Done Done
Implement new functions that appear in <fenv.h>. David Schultz 7 June 2004 Done Done
Implement ftw() and nftw() in terms of fts(). David Schultz 8 July 2004 Done Done
Implement C99 rounding functions lrint(), lrintf(), lrintl(), llrint(), llrintf(), llrintl(). David Schultz 13 January 2005 Done Done
Implement getgrgid_r(), getgrnam_r(). Wes Peters 19 August 2005 Done Done
Obtain a64l(), l64a(), and l64a_r() (extention) from NetBSD (PR: 51209). Tom Rhodes 27 February 2006 Done Done
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  
Implement the utmpx family of functions. Robert Drehmel 28 June 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  
Update fmtcheck(3) to recognize new printf(3) flags.   16 October 2002 In progress  
Make non thread-safe functions thread-safe.   22 October 2001 Not Started  
Make functions async-cancel safe.   22 October 2001 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  
Implement posix_mem_offset(), posix_typed_mem_get_info(), posix_typed_mem_open(), posix_memalign() (PR: 85090).   7 June 2004 Not Started  
Implement long double versions of libm routines (PR: 82654).   13 January 2005 Not Started  
Implement exp2(), fma(), log2(), nan(), nexttoward(), and remquo() in libm (PR: 83845).   13 January 2005 Not Started  


Task Responsible Last Updated Status
7.X 6.X
Headers
Fix prototypes and hide non-conforming portions of header <arpa/inet.h>. Mike Barcroft 19 February 2002 Done Done
Implement the <stdint.h> and <inttypes.h> headers. Mike Barcroft 1 March 2002 Done Done
Add exposure control primitives to <sys/cdefs.h> (originally developed by Garrett Wollman). Mike Barcroft 1 April 2002 Done Done
Implement <sys/_types> to store shared MI types. Mike Barcroft 1 April 2002 Done Done
Implement header <strings.h>, and work out compatibility issues with header <string.h>. Mike Barcroft 4 April 2002 Done Done
Hide non-conforming portions, add missing types to <sys/un.h>. Mike Barcroft 19 April 2002 Done Done
Remove pollution and add missing macros to <netinet/in.h> and <netinet6/in6.h>. Mike Barcroft 23 May 2002 Done Done
Hide non-conforming portions of <sys/wait.h>. Mike Barcroft 3 June 2002 Done Done
Hide non-conforming portions of <pwd.h>. Mike Barcroft 9 June 2002 Done Done
Create <sys/statvfs.h> based on POSIX spec. Garrett Wollman 14 June 2002 Done Done
Add nfds_t and resolve other issues in <poll.h> (actually <sys/poll.h>). Mike Barcroft 8 July 2002 Done Done
Implement the XSI header, <cpio.h>. Mike Barcroft 1 August 2002 Done Done
Implement <fmtmsg.h>. Mike Barcroft 8 August 2002 Done Done
Implement <ulimit.h>. Kyle Martin 8 August 2002 Done Done
Merge <machine/ansi.h> and <machine/types> into a new common header <machine/_types.h>. Bruce Evans,
Mike Barcroft
23 August 2002 Done Done
Fix namespaces, add missing types in <sys/mman.h>. Mike Barcroft 29 August 2002 Done Done
Fix namespace issues in <ctype.h>. Mike Barcroft 9 September 2002 Done Done
Fix namespace issues in <dlfcn.h>. Garrett Wollman,
Mike Barcroft
11 September 2002 Done Done
Fix namespace issues in <fcntl.h>. Mike Barcroft 18 September 2002 Done Done
Fix namespace issues in <fnmatch.h>. Mike Barcroft 18 September 2002 Done Done
Fix namespace issues in <grp.h>. Mike Barcroft 18 September 2002 Done Done
Fix namespace issues in <langinfo.h>. Mike Barcroft 18 September 2002 Done Done
Add va_copy() macro to <stdarg.h> (actually <machine/stdarg.h>). Mike Barcroft 20 September 2002 Done Done
Fix namespaces issues in <stdlib.h>. Garrett Wollman 21 September 2002 Done Done
Add new pathname, system variable, and POSIX option constants to <unistd.h>. Garrett Wollman 21 September 2002 Done Done
Merge two conflicting math.h headers into a single header. Bruce Evans 2 October 2002 Done Done
Fix namespace issues in <net/if.h>. Mike Barcroft 2 October 2002 Done Done
Fix namespace issues in <netinet/tcp.h>. Mike Barcroft 2 October 2002 Done Done
Add size_t, fix regoff_t in <regex.h>. Mike Barcroft 2 October 2002 Done Done
Fix namespace issues in <sched.h> (actually <posix4/sched.h>). Mike Barcroft 5 October 2002 Done Done
Fix namespace issues in <semaphore.h> (actually <posix4/semaphore.h>). Mike Barcroft 5 October 2002 Done Done
Fix namespace issues in <setjmp.h> (actually <machine/setjmp.h>). Mike Barcroft 5 October 2002 Done Done
Fix namespace issues in <stdio.h>. Garrett Wollman 7 October 2002 Done Done
Add missing members to struct lconv in <locale.h>. Tim J. Robbins 9 October 2002 Done Done
Fix namespace issues, add missing types in <sys/socket.h>. Mike Barcroft 13 October 2002 Done Done
Fix namespace issues, add missing types in <sys/uio.h>. Mike Barcroft 13 October 2002 Done Done
Fix namespace issues in <signal.h> (also <sys/signal.h> and <machine/signal.h>). Mike Barcroft 13 October 2002 Done Done
Eliminate <sys/_posix.h>. Mike Barcroft 16 October 2002 Done Done
Implement the header <wordexp.h>. Tim J. Robbins 31 December 2002 Done Done
Add missing constants FLT_EVAL_METHOD, DECIMAL_DIG to <float.h> (actually <machine/float.h>). Mike Barcroft,
David Schultz
22 January 2004 Done Done
Implement the header <fenv.h>. David Schultz 7 June 2004 Done Done
Implement <ftw.h>. David Schultz 8 July 2004 Done Done
Implement <tgmath.h>. Stefan Farfeleder 13 January 2005 Done Done
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  
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  
Hide non-conforming portions, add missing types to <sys/stat.h>. Mike Barcroft 27 February 2003 In progress  
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  


Task Responsible Last Updated Status
7.X 6.X
Miscellaneous
Obtain a copy of Proc. ACM SIGPLAN '90 (required for printf(3) %'f). Bill Fenner 9 November 2001 Done Done
Upgrade system compiler to GCC 3.1. David O'Brien 15 May 2002 Done Done
Merge sys/posix4/* into regular kernel hierarchy, and remove sys/posix4. Tom Rhodes 13 November 2006 Done  
Add regression test for each function.   17 November 2001 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
7.X 6.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 at least 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 Done
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 Done
Implement the asa utility. (PR: 36130) Tim J. Robbins 15 May 2002 Done Done
Add the tabs utility. (PR: 36126) Tim J. Robbins 20 May 2002 Done Done
Restore sccs utility from CVS attic. Juli Mallett 22 May 2002 Done Done
Make expr(1) conform to POSIX.1-2001. Garrett Wollman 22 May 2002 Done Done
Add the newgrp utility. (PR: 36190) Tim J. Robbins 28 May 2002 Done Done
Fix ctags(1)'s -t option; fix ordering with -x. Tim J. Robbins 2 June 2002 Done Done
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 Done
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 Done
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 Done
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 -p option to the more utility.   30 November 2001 Done Done
Add -p, -v, and -V options to the command utility (shell built-in). Stefan Farfeleder 27 February 2006 Done Done
Add missing options to the mailx utility. Mike Heffner 24 September 2006 Done Done
Add missing components to the jobs utility (PR: 99926). Stefan Farfeleder 7 October 2006 Done  
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  
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 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, 53682, 100017).   4 February 2003 Not Started  


Task Responsible Last Updated Status
7.X 6.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 Done
Add stubs for reentrant wc handling functions btowc(), mbrlen(), mbrtowc(), mbsrtowcs(), wcrtomb(), wcsrtombs(), wctob(), wctype(). Tim J. Robbins 23 August 2002 Done Done
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 Done
Implement wcwidth(). Michael C. Wu 23 August 2002 Done Done
Implement wcswidth(). Andrey A. Chernov 23 August 2002 Done Done
Implement wcstok(). Tim J. Robbins 9 September 2002 Done Done
Implement wcstod(), wcstol(), wcstoul(). Tim J. Robbins 15 September 2002 Done Done
Implement wcsftime(). Tim J. Robbins 15 September 2002 Done Done
Implement fwprintf(), swprintf(), vfwprintf(), vswprintf(), vwprintf(), wprintf(). Tim J. Robbins 23 September 2002 Done Done
Implement fwscanf(), swscanf(), vfwscanf(), vswscanf(), vwscanf(), wscanf(). Tim J. Robbins 23 September 2002 Done Done
Implement wcstoimax(), wcstoll(), wcstoumax(), wcstoull(). Tim J. Robbins 23 September 2002 Done Done
Implement wide character format types (%C, %S, %lc, %ls) in printf(3). Tim J. Robbins 16 October 2002 Done Done
Implement wcscoll(), wcsxfrm(). Tim J. Robbins 7 June 2004 Done Done
Implement wide character format types (%C, %S, %lc, %ls) in scanf(3). Tim J. Robbins 7 June 2004 Done Done


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
  • A new status report on the state of the project, covering September through October, has been produced.

9 October 2002
  • A new status report on the state of the project, covering July through August, has been produced.

16 August 2002
  • A new status report on the state of the project, covering May through June, has been produced.

1 August 2002
  • The Open Group has generously donated several copies of the Authorized Guide to Single UNIX® Specification, Version 3, books and CD-ROMs to the project. We are greatly appreciative of their gift.

22 May 2002
  • A new status report on the state of the project, covering February through April, has been produced.

3 March 2002
  • A new status report on the state of the project, covering December and January, has been produced.

30 January 2002
  • The Open Group has announced the completion of SUSv3 and POSIX.1-2001 and the availability of a free, online version of the specification.

14 December 2001
  • A new status report on the current state of the project has been produced.

6 December 2001
  • The IEEE Standards Board has approved the Austin Group Specification as IEEE Std 1003.1.

28 November 2001 19 October 2001
  • A status report on the current state of the project has been produced.

10 October 2001
  • This web page was created.

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.