1/* Which POSIX version to conform to, for utilities.
2
3   Copyright (C) 2002, 2003, 2004 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
18
19/* Written by Paul Eggert.  */
20
21#if 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#if HAVE_UNISTD_H
31# include <unistd.h>
32#endif
33#ifndef _POSIX2_VERSION
34# define _POSIX2_VERSION 0
35#endif
36
37#ifndef DEFAULT_POSIX2_VERSION
38# define DEFAULT_POSIX2_VERSION _POSIX2_VERSION
39#endif
40
41/* The POSIX version that utilities should conform to.  The default is
42   specified by the system.  */
43
44int
45posix2_version (void)
46{
47  long int v = DEFAULT_POSIX2_VERSION;
48  char const *s = getenv ("_POSIX2_VERSION");
49
50  if (s && *s)
51    {
52      char *e;
53      long int i = strtol (s, &e, 10);
54      if (! *e)
55	v = i;
56    }
57
58  return v < INT_MIN ? INT_MIN : v < INT_MAX ? v : INT_MAX;
59}
60