00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00025 #include "plibc_private.h"
00026
00030 int __win_stat(const char *path, struct stat *buffer, int iDeref)
00031 {
00032 char szFile[_MAX_PATH + 1];
00033 long lRet;
00034
00035 if ((lRet = plibc_conv_to_win_path(path, szFile)) != ERROR_SUCCESS)
00036 {
00037 SetErrnoFromWinError(lRet);
00038 return -1;
00039 }
00040
00041
00042 lRet = strlen(szFile) - 1;
00043 if (szFile[lRet] == '\\')
00044 {
00045 szFile[lRet] = 0;
00046 }
00047
00048
00049 if (iDeref)
00050 {
00051 if (__win_deref(szFile) == -1 && errno != EINVAL)
00052 return -1;
00053 }
00054
00055
00056 return stat(szFile, buffer);
00057 }
00058
00062 int _win_stat(const char *path, struct stat *buffer)
00063 {
00064 return __win_stat(path, buffer, 1);
00065 }
00066
00070 int _win_lstat(const char *path, struct stat *buf)
00071 {
00072 return __win_stat(path, buf, 0);
00073 }
00074
00075