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/H5Flow.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/H5Flow.c')
-rw-r--r-- | src/H5Flow.c | 59 |
1 files changed, 26 insertions, 33 deletions
diff --git a/src/H5Flow.c b/src/H5Flow.c index caeb8a5..b3c0df1 100644 --- a/src/H5Flow.c +++ b/src/H5Flow.c @@ -493,43 +493,36 @@ H5F_low_access(const H5F_low_class_t *type, const char *name, if (key) { #ifdef 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; + + 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) { + ret_value = FALSE; + } + + else { + HDstat(name,&sb); + key->dev = sb.st_dev; + key->ino = 0; + key->fileindexhi = fileinfo.nFileIndexHigh; + key->fileindexlo = fileinfo.nFileIndexLow; } - } else { - pathbuf = malloc(strlen(name)); - strcpy(pathbuf,name); - } - key->path = pathbuf; - key->dev = 0; - key->ino = 0; + HDclose(fd); + + #else HDstat(name, &sb); - key->path = NULL; key->dev = sb.st_dev; key->ino = sb.st_ino; #endif |