X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ffilename.c;h=b8f8332fdb9057f753435aedd92e84ae33d27d14;hb=4de79b34b329d1da6cdeb145993d3efd911e2967;hp=3b25b99c9e768452916412083f05b65643fc5c86;hpb=1a5f49c70a1bdc19d0c12a617d54013aa7118b4a;p=pspp-builds.git diff --git a/src/filename.c b/src/filename.c index 3b25b99c..b8f8332f 100644 --- a/src/filename.c +++ b/src/filename.c @@ -20,6 +20,7 @@ #include #include "error.h" #include "filename.h" +#include #include #include #include @@ -28,6 +29,10 @@ #include "settings.h" #include "str.h" #include "version.h" +#include "xreadlink.h" + +#include "gettext.h" +#define _(msgid) gettext (msgid) #include "debug-print.h" @@ -38,7 +43,8 @@ #if HAVE_UNISTD_H #include #endif -#include "stat.h" +#include +#include "stat-macros.h" #endif #ifdef __WIN32__ @@ -619,40 +625,13 @@ fn_exists_p (const char *name) #endif } -#ifdef unix -/* Stolen from libc.info but heavily modified, this is a wrapper - around readlink() that allows for arbitrary filename length. */ -char * -fn_readlink (const char *filename) -{ - int size = 128; - - for (;;) - { - char *buffer = xmalloc (size); - int nchars = readlink (filename, buffer, size); - if (nchars == -1) - { - free (buffer); - return NULL; - } - - if (nchars < size - 1) - { - buffer[nchars] = 0; - return buffer; - } - free (buffer); - size *= 2; - } -} -#else /* Not UNIX. */ +/* Returns the symbolic link value for FILENAME as a dynamically + allocated buffer, or a null pointer on failure. */ char * fn_readlink (const char *filename) { - return NULL; + return xreadlink (filename, 32); } -#endif /* Not UNIX. */ /* Environment variables. */