X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Frealpath.c;h=89f77378d432b05c4bcfe01906ffcd5987847b50;hp=0dc5fa5cb81f667d82b77e43dbe273290685f260;hb=e44cf42f362d793c47d892a18a6853d88abd6ecb;hpb=74bde73d5c60c13b894fa60fff680a447499c884 diff --git a/daemon/realpath.c b/daemon/realpath.c index 0dc5fa5..89f7737 100644 --- a/daemon/realpath.c +++ b/daemon/realpath.c @@ -27,25 +27,43 @@ #include #include -#include "openat.h" - #include "daemon.h" +#include "optgroups.h" #include "actions.h" +/* On Windows, NAME_MAX is not defined. */ +#ifndef NAME_MAX +#define NAME_MAX FILENAME_MAX +#endif + +int +optgroup_realpath_available (void) +{ +#ifdef HAVE_REALPATH + return 1; +#else + return 0; +#endif +} + char * do_realpath (const char *path) { +#ifdef HAVE_REALPATH char *ret; CHROOT_IN; ret = realpath (path, NULL); CHROOT_OUT; if (ret == NULL) { - reply_with_perror ("realpath"); + reply_with_perror ("%s", path); return NULL; } return ret; /* caller frees */ +#else + NOT_AVAILABLE (NULL); +#endif } char * @@ -80,11 +98,11 @@ do_case_sensitive_path (const char *path) if ((i == 1 && path[0] == '.') || (i == 2 && path[0] == '.' && path[1] == '.')) { - reply_with_error ("case_sensitive_path: path contained . or .. elements"); + reply_with_error ("path contained . or .. elements"); goto error; } if (i > NAME_MAX) { - reply_with_error ("case_sensitive_path: path element too long"); + reply_with_error ("path element too long"); goto error; } @@ -113,7 +131,7 @@ do_case_sensitive_path (const char *path) errno = 0; while ((d = readdir (dir)) != NULL) { - if (strcasecmp (d->d_name, name) == 0) + if (STRCASEEQ (d->d_name, name)) break; }