You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
44 lines
1.4 KiB
/* xreadlink.c -- readlink wrapper to return the link name in malloc'd storage |
|
|
|
Copyright (C) 2001, 2003-2007, 2009-2017 Free Software Foundation, Inc. |
|
|
|
This program is free software: you can redistribute it and/or modify |
|
it under the terms of the GNU General Public License as published by |
|
the Free Software Foundation; either version 3 of the License, or |
|
(at your option) any later version. |
|
|
|
This program is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
GNU General Public License for more details. |
|
|
|
You should have received a copy of the GNU General Public License |
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
|
|
|
/* Written by Jim Meyering <jim@meyering.net> |
|
and Bruno Haible <bruno@clisp.org>. */ |
|
|
|
#include <config.h> |
|
|
|
/* Specification. */ |
|
#include "xreadlink.h" |
|
|
|
#include <errno.h> |
|
|
|
#include "areadlink.h" |
|
#include "xalloc.h" |
|
|
|
/* Call readlink to get the symbolic link value of FILENAME. |
|
Return a pointer to that NUL-terminated string in malloc'd storage. |
|
If readlink fails, return NULL and set errno. |
|
If realloc fails, or if the link value is longer than SIZE_MAX :-), |
|
give a diagnostic and exit. */ |
|
|
|
char * |
|
xreadlink (char const *filename) |
|
{ |
|
char *result = areadlink (filename); |
|
if (result == NULL && errno == ENOMEM) |
|
xalloc_die (); |
|
return result; |
|
}
|
|
|