File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srclib / readlink.c
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:57:48 2012 UTC (12 years, 4 months ago) by misho
CVS tags: MAIN, HEAD
Initial revision

    1: /* Stub for readlink().
    2:    Copyright (C) 2003-2007 Free Software Foundation, Inc.
    3: 
    4:    This program is free software: you can redistribute it and/or modify
    5:    it under the terms of the GNU General Public License as published by
    6:    the Free Software Foundation; either version 3 of the License, or
    7:    (at your option) any later version.
    8: 
    9:    This program is distributed in the hope that it will be useful,
   10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   12:    GNU General Public License for more details.
   13: 
   14:    You should have received a copy of the GNU General Public License
   15:    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
   16: 
   17: #include <config.h>
   18: 
   19: /* Specification.  */
   20: #include <unistd.h>
   21: 
   22: #include <errno.h>
   23: #include <sys/types.h>
   24: #include <sys/stat.h>
   25: #include <stddef.h>
   26: 
   27: #if !HAVE_READLINK
   28: 
   29: /* readlink() substitute for systems that don't have a readlink() function,
   30:    such as DJGPP 2.03 and mingw32.  */
   31: 
   32: /* The official POSIX return type of readlink() is ssize_t, but since here
   33:    we have no declaration in a public header file, we use 'int' as return
   34:    type.  */
   35: 
   36: int
   37: readlink (const char *path, char *buf, size_t bufsize)
   38: {
   39:   struct stat statbuf;
   40: 
   41:   /* In general we should use lstat() here, not stat().  But on platforms
   42:      without symbolic links lstat() - if it exists - would be equivalent to
   43:      stat(), therefore we can use stat().  This saves us a configure check.  */
   44:   if (stat (path, &statbuf) >= 0)
   45:     errno = EINVAL;
   46:   return -1;
   47: }
   48: 
   49: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>