1/* Which POSIX version to conform to, for utilities.
2
3   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 2, or (at your option)
8   any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License along
16   with this program; if not, write to the Free Software Foundation,
17   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
18
19/* Written by Paul Eggert.  */
20
21#ifdef HAVE_CONFIG_H
22# include <config.h>
23#endif
24
25#include "posixver.h"
26
27#include <limits.h>
28#include <stdlib.h>
29
30#include <unistd.h>
31#ifndef _POSIX2_VERSION
32# define _POSIX2_VERSION 0
33#endif
34
35#ifndef DEFAULT_POSIX2_VERSION
36# define DEFAULT_POSIX2_VERSION _POSIX2_VERSION
37#endif
38
39/* The POSIX version that utilities should conform to.  The default is
40   specified by the system.  */
41
42int
43posix2_version (void)
44{
45  long int v = DEFAULT_POSIX2_VERSION;
46  char const *s = getenv ("_POSIX2_VERSION");
47
48  if (s && *s)
49    {
50      char *e;
51      long int i = strtol (s, &e, 10);
52      if (! *e)
53	v = i;
54    }
55
56  return v < INT_MIN ? INT_MIN : v < INT_MAX ? v : INT_MAX;
57}
58