1/* areadlink.c -- readlink wrapper to return the link name in malloc'd storage 2 Unlike xreadlink and xreadlink_with_size, don't ever call exit. 3 4 Copyright (C) 2001, 2003-2007, 2009-2011 Free Software Foundation, Inc. 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 18 19/* Written by Jim Meyering <jim@meyering.net> 20 and Bruno Haible <bruno@clisp.org>. */ 21 22#include <config.h> 23 24/* Specification. */ 25#include "areadlink.h" 26 27#include "careadlinkat.h" 28 29/* Call readlink to get the symbolic link value of FILENAME. 30 Return a pointer to that NUL-terminated string in malloc'd storage. 31 If readlink fails, return NULL and set errno. 32 If allocation fails, or if the link value is longer than SIZE_MAX :-), 33 return NULL and set errno to ENOMEM. */ 34 35char * 36areadlink (char const *filename) 37{ 38 return careadlinkat (AT_FDCWD, filename, NULL, 0, NULL, careadlinkatcwd); 39} 40