--- libaitio/src/aitio.c 2013/05/30 09:10:13 1.15 +++ libaitio/src/aitio.c 2013/06/04 12:44:46 1.16 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.c,v 1.15 2013/05/30 09:10:13 misho Exp $ +* $Id: aitio.c,v 1.16 2013/06/04 12:44:46 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -546,4 +546,37 @@ ioRecvFile(int s, const char *csFile, size_t recvLen, munmap(addr, recvLen); return len; +} + +/* + * ioRealFileName() - Get real file name + * + * @fname = filename + * return: =NULL error or !=NULL real filename, should be free with e_free() + */ +char * +ioRealFileName(const char *fname) +{ + char *str = NULL; + struct stat sb; + + if (!fname) + return NULL; + + str = e_malloc(MAXPATHLEN); + if (!str) { + io_SetErr(elwix_GetErrno(), "%s", elwix_GetError()); + return NULL; + } else + memset(str, 0, MAXPATHLEN); + if (readlink(fname, str, MAXPATHLEN) == -1) { + if (stat(fname, &sb) == -1) { + LOGERR; + e_free(str); + return NULL; + } else + strlcpy(str, fname, MAXPATHLEN); + } + + return str; }