summaryrefslogtreecommitdiffstats
path: root/src/H5Fsec2.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/H5Fsec2.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/H5Fsec2.c')
-rw-r--r--src/H5Fsec2.c56
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);
}