summaryrefslogtreecommitdiffstats
path: root/src/H5Flow.c
diff options
context:
space:
mode:
authorPatrick Lu <ptlu@hawkwind.ncsa.uiuc.edu>1999-04-29 17:44:36 (GMT)
committerPatrick Lu <ptlu@hawkwind.ncsa.uiuc.edu>1999-04-29 17:44:36 (GMT)
commit18d325e35fd17fbf24f4d31d63d025bb73052b7e (patch)
tree5251c51331229c8be27f347b5565bf7a057805b0 /src/H5Flow.c
parent2443c16bf0e93465b0bbebde5920b199fca5630c (diff)
downloadhdf5-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.c59
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