diff options
author | Patrick Lu <ptlu@hawkwind.ncsa.uiuc.edu> | 1999-04-29 17:44:36 (GMT) |
---|---|---|
committer | Patrick Lu <ptlu@hawkwind.ncsa.uiuc.edu> | 1999-04-29 17:44:36 (GMT) |
commit | 18d325e35fd17fbf24f4d31d63d025bb73052b7e (patch) | |
tree | 5251c51331229c8be27f347b5565bf7a057805b0 /src/H5Fsec2.c | |
parent | 2443c16bf0e93465b0bbebde5920b199fca5630c (diff) | |
download | hdf5-18d325e35fd17fbf24f4d31d63d025bb73052b7e.zip hdf5-18d325e35fd17fbf24f4d31d63d025bb73052b7e.tar.gz hdf5-18d325e35fd17fbf24f4d31d63d025bb73052b7e.tar.bz2 |
[svn-r1237] removed the path member in the search struct. replaced it with a fileindex
hi and lo. this number and the dev id will allow us to determine if the
file is currently open on NT
Diffstat (limited to 'src/H5Fsec2.c')
-rw-r--r-- | src/H5Fsec2.c | 56 |
1 files changed, 26 insertions, 30 deletions
diff --git a/src/H5Fsec2.c b/src/H5Fsec2.c index 476d292..add8e1f 100644 --- a/src/H5Fsec2.c +++ b/src/H5Fsec2.c @@ -97,41 +97,37 @@ H5F_sec2_open(const char *name, const H5F_access_t UNUSED *access_parms, if (key) { #if WIN32 - /* - * some windows specific types. the LPSTR is just a char* - */ - LPSTR pathbuf = NULL; - LPSTR *namebuf = NULL; - int bufsize = 0; - /* - * gets the full path of the file name. the if statement below is to - * try to distinguish if we have the ablosute path already - */ - if ((*(name+1) != ':') && (*(name+2)!= '\\')){ - /* - * if the size of the buffer is too small it will return - * the appropriate size of the buffer not including the null - */ - bufsize = GetFullPathName(name,bufsize,pathbuf,namebuf); - if (bufsize != 0){ - pathbuf = malloc(sizeof(char) * (bufsize + 1)); - namebuf = malloc(sizeof(char) * (bufsize + 1)); - bufsize++; - GetFullPathName(name,bufsize,pathbuf,namebuf); - } else { - pathbuf = NULL; - } - } else { - pathbuf = malloc(strlen(name)); - strcpy(pathbuf,name); + int fd; + HFILE filehandle; + struct _BY_HANDLE_FILE_INFORMATION fileinfo; + int results; + + + fd = HDopen(name,_O_RDONLY,0); + filehandle = _get_osfhandle(fd); + results = GetFileInformationByHandle(filehandle, &fileinfo); + + /*returns a 0 on failure*/ + + if (!results) { + lf = NULL; + } + + else { + HDstat(name,&sb); + key->dev = sb.st_dev; + key->ino = 0; + key->fileindexhi = fileinfo.nFileIndexHigh; + key->fileindexlo = fileinfo.nFileIndexLow; } - key->path = pathbuf; + + HDclose(fd); + #else - key->path = NULL; -#endif key->dev = sb.st_dev; key->ino = sb.st_ino; +#endif } FUNC_LEAVE(lf); } |