diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/.distdep | 814 | ||||
-rw-r--r-- | src/H5D.c | 27 | ||||
-rw-r--r-- | src/H5G.c | 10 | ||||
-rw-r--r-- | src/H5Gpublic.h | 11 | ||||
-rw-r--r-- | src/H5O.c | 147 | ||||
-rw-r--r-- | src/H5Omtime.c | 316 | ||||
-rw-r--r-- | src/H5Oprivate.h | 7 | ||||
-rw-r--r-- | src/H5T.c | 8 | ||||
-rw-r--r-- | src/H5config.h.in | 25 | ||||
-rw-r--r-- | src/H5private.h | 3 | ||||
-rw-r--r-- | src/Makefile.in | 6 |
11 files changed, 936 insertions, 438 deletions
diff --git a/src/.distdep b/src/.distdep index 3e0c443..c8e7e52 100644 --- a/src/.distdep +++ b/src/.distdep @@ -1,64 +1,3 @@ -H5.o: \ - H5.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Ipublic.h \ - H5Dpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Iprivate.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Pprivate.h \ - H5Ppublic.h \ - H5Zpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h -H5A.o: \ - H5A.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Dprivate.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Pprivate.h H5AC.o: \ H5AC.c \ H5private.h \ @@ -84,101 +23,6 @@ H5B.o: \ H5Bpublic.h \ H5Eprivate.h \ H5Epublic.h -H5D.o: \ - H5D.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Dprivate.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5HLprivate.h \ - H5HLpublic.h \ - H5MFprivate.h \ - H5MFpublic.h \ - H5MMprivate.h \ - H5MMpublic.h -H5E.o: \ - H5E.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MMprivate.h -H5F.o: \ - H5F.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Pprivate.h \ - H5Ppublic.h \ - H5Zpublic.h \ - H5Tprivate.h \ - H5Tpublic.h -H5Farray.o: \ - H5Farray.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Dprivate.h \ - H5Dpublic.h \ - H5Ipublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h H5Fcore.o: \ H5Fcore.c \ H5private.h \ @@ -199,49 +43,6 @@ H5Ffamily.o: \ H5Ipublic.h \ H5Fprivate.h \ H5Fpublic.h -H5Fistore.o: \ - H5Fistore.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Dprivate.h \ - H5Dpublic.h \ - H5Ipublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MFprivate.h \ - H5MFpublic.h \ - H5MMprivate.h \ - H5MMpublic.h -H5Flow.o: \ - H5Flow.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Ipublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5MMprivate.h \ - H5MMpublic.h H5Fmpio.o: \ H5Fmpio.c \ H5private.h \ @@ -283,16 +84,6 @@ H5Fsec2.o: \ H5Dpublic.h \ H5MMprivate.h \ H5MMpublic.h -H5Fsplit.o: \ - H5Fsplit.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Ipublic.h \ - H5Fprivate.h \ - H5Fpublic.h H5Fstdio.o: \ H5Fstdio.c \ H5private.h \ @@ -306,56 +97,6 @@ H5Fstdio.o: \ H5Dpublic.h \ H5MMprivate.h \ H5MMpublic.h -H5G.o: \ - H5G.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Ipublic.h \ - H5Dpublic.h \ - H5Dprivate.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Gpkg.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5HLprivate.h -H5Gent.o: \ - H5Gent.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Ipublic.h \ - H5Gpkg.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5HLprivate.h \ - H5HLpublic.h H5Gnode.o: \ H5Gnode.c \ H5private.h \ @@ -416,21 +157,6 @@ H5Gstab.o: \ H5Tpublic.h \ H5Sprivate.h \ H5Spublic.h -H5HG.o: \ - H5HG.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Ipublic.h \ - H5Dpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5HGprivate.h \ - H5HGpublic.h H5HL.o: \ H5HL.c \ H5private.h \ @@ -501,33 +227,33 @@ H5O.o: \ H5Sprivate.h \ H5Spublic.h \ H5Zprivate.h -H5Oattr.o: \ - H5Oattr.c \ +H5Ocomp.o: \ + H5Ocomp.c \ H5private.h \ H5public.h \ H5config.h \ H5Eprivate.h \ H5Epublic.h \ H5Ipublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ H5MMprivate.h \ H5MMpublic.h \ H5Oprivate.h \ H5Opublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h \ H5Sprivate.h \ H5Spublic.h -H5Ocomp.o: \ - H5Ocomp.c \ +H5Ocont.o: \ + H5Ocont.c \ H5private.h \ H5public.h \ H5config.h \ @@ -551,8 +277,8 @@ H5Ocomp.o: \ H5Tpublic.h \ H5Sprivate.h \ H5Spublic.h -H5Ocont.o: \ - H5Ocont.c \ +H5Oname.o: \ + H5Oname.c \ H5private.h \ H5public.h \ H5config.h \ @@ -576,8 +302,28 @@ H5Ocont.o: \ H5Tpublic.h \ H5Sprivate.h \ H5Spublic.h -H5Odtype.o: \ - H5Odtype.c \ +H5Onull.o: \ + H5Onull.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Ipublic.h \ + H5Dpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h +H5Ostab.o: \ + H5Ostab.c \ H5private.h \ H5public.h \ H5config.h \ @@ -601,33 +347,129 @@ H5Odtype.o: \ H5Tpublic.h \ H5Sprivate.h \ H5Spublic.h -H5Oefl.o: \ - H5Oefl.c \ +H5Tbit.o: \ + H5Tbit.c \ H5private.h \ H5public.h \ H5config.h \ H5Eprivate.h \ H5Epublic.h \ H5Ipublic.h \ - H5HLprivate.h \ - H5HLpublic.h \ + H5Iprivate.h \ + H5Tpkg.h \ + H5HGprivate.h \ + H5HGpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h +H5Tconv.o: \ + H5Tconv.c \ + H5Iprivate.h \ + H5Ipublic.h \ + H5public.h \ + H5config.h \ + H5private.h \ + H5Eprivate.h \ + H5Epublic.h \ H5MMprivate.h \ H5MMpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ + H5Tpkg.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h +H5Flow.o: \ + H5Flow.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5MMprivate.h \ + H5MMpublic.h +H5Fsplit.o: \ + H5Fsplit.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5Fprivate.h \ + H5Fpublic.h +H5Gent.o: \ + H5Gent.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5Gpkg.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ H5Bpublic.h \ + H5HLprivate.h \ + H5HLpublic.h +H5HG.o: \ + H5HG.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Ipublic.h \ + H5Dpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5HGprivate.h \ + H5HGpublic.h +H5Tinit.o: \ + H5Tinit.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Iprivate.h \ + H5Ipublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Tpkg.h \ H5HGprivate.h \ H5HGpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ H5Tprivate.h \ - H5Tpublic.h -H5Olayout.o: \ - H5Olayout.c \ + H5Tpublic.h \ + H5Gprivate.h +H5Farray.o: \ + H5Farray.c \ H5private.h \ H5public.h \ H5config.h \ @@ -651,21 +493,48 @@ H5Olayout.o: \ H5Zprivate.h \ H5Zpublic.h \ H5Eprivate.h -H5Oname.o: \ - H5Oname.c \ +H5Odtype.o: \ + H5Odtype.c \ H5private.h \ H5public.h \ H5config.h \ H5Eprivate.h \ H5Epublic.h \ H5Ipublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ H5MMprivate.h \ H5MMpublic.h \ H5Oprivate.h \ H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h +H5Oefl.o: \ + H5Oefl.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5HLprivate.h \ + H5HLpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ @@ -673,29 +542,32 @@ H5Oname.o: \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h -H5Onull.o: \ - H5Onull.c \ + H5Tpublic.h +H5Olayout.o: \ + H5Olayout.c \ H5private.h \ H5public.h \ H5config.h \ - H5Oprivate.h \ - H5Opublic.h \ + H5Dprivate.h \ + H5Dpublic.h \ + H5Ipublic.h \ H5Fprivate.h \ H5Fpublic.h \ - H5Ipublic.h \ - H5Dpublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ H5Bpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h \ - H5Sprivate.h + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ + H5Eprivate.h H5Osdspace.o: \ H5Osdspace.c \ H5private.h \ @@ -746,23 +618,30 @@ H5Oshared.o: \ H5Tpublic.h \ H5Sprivate.h \ H5Spublic.h -H5Ostab.o: \ - H5Ostab.c \ +H5E.o: \ + H5E.c \ H5private.h \ H5public.h \ H5config.h \ + H5Iprivate.h \ + H5Ipublic.h \ H5Eprivate.h \ H5Epublic.h \ + H5MMprivate.h +H5Fistore.o: \ + H5Fistore.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Dprivate.h \ + H5Dpublic.h \ H5Ipublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ H5Bpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ H5Oprivate.h \ H5Opublic.h \ H5HGprivate.h \ @@ -770,22 +649,32 @@ H5Ostab.o: \ H5Tprivate.h \ H5Tpublic.h \ H5Sprivate.h \ - H5Spublic.h -H5P.o: \ - H5P.c \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MFprivate.h \ + H5MFpublic.h \ + H5MMprivate.h \ + H5MMpublic.h +H5Oattr.o: \ + H5Oattr.c \ H5private.h \ H5public.h \ H5config.h \ - H5Iprivate.h \ + H5Eprivate.h \ + H5Epublic.h \ H5Ipublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ H5Bprivate.h \ H5Bpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ - H5Dprivate.h \ - H5Gprivate.h \ - H5Gpublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ H5Oprivate.h \ H5Opublic.h \ H5HGprivate.h \ @@ -793,23 +682,15 @@ H5P.o: \ H5Tprivate.h \ H5Tpublic.h \ H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Pprivate.h -H5S.o: \ - H5S.c \ + H5Spublic.h +H5Z.o: \ + H5Z.c \ H5private.h \ H5public.h \ H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ H5Eprivate.h \ H5Epublic.h \ + H5Ipublic.h \ H5MMprivate.h \ H5MMpublic.h \ H5Oprivate.h \ @@ -825,7 +706,10 @@ H5S.o: \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h \ - H5Sprivate.h + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h H5Sall.o: \ H5Sall.c \ H5private.h \ @@ -851,8 +735,8 @@ H5Sall.o: \ H5Tpublic.h \ H5Zprivate.h \ H5Zpublic.h -H5Shyper.o: \ - H5Shyper.c \ +H5Ssimp.o: \ + H5Ssimp.c \ H5private.h \ H5public.h \ H5config.h \ @@ -876,70 +760,126 @@ H5Shyper.o: \ H5Tpublic.h \ H5Zprivate.h \ H5Zpublic.h -H5Spoint.o: \ - H5Spoint.c \ +H5T.o: \ + H5T.c \ H5private.h \ H5public.h \ H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ + H5Dprivate.h \ + H5Dpublic.h \ H5Ipublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ H5Bpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ H5Oprivate.h \ H5Opublic.h \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h \ - H5Tpublic.h -H5Ssimp.o: \ - H5Ssimp.c \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ + H5Iprivate.h +H5V.o: \ + H5V.c \ H5private.h \ H5public.h \ H5config.h \ H5Eprivate.h \ H5Epublic.h \ H5Ipublic.h \ - H5Sprivate.h \ - H5Spublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ H5Bpublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h +H5.o: \ + H5.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5ACprivate.h \ + H5ACpublic.h \ H5Fprivate.h \ H5Fpublic.h \ + H5Ipublic.h \ H5Dpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Iprivate.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Pprivate.h \ + H5Ppublic.h \ + H5Zpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ H5Oprivate.h \ H5Opublic.h \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h \ - H5Tpublic.h \ - H5Zprivate.h \ - H5Zpublic.h -H5T.o: \ - H5T.c \ + H5Tpublic.h +H5F.o: \ + H5F.c \ H5private.h \ H5public.h \ H5config.h \ - H5Dprivate.h \ - H5Dpublic.h \ + H5Iprivate.h \ H5Ipublic.h \ + H5ACprivate.h \ + H5ACpublic.h \ H5Fprivate.h \ H5Fpublic.h \ + H5Dpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ H5Bpublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Pprivate.h \ + H5Ppublic.h \ + H5Zpublic.h \ + H5Tprivate.h \ + H5Tpublic.h +H5G.o: \ + H5G.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Ipublic.h \ + H5Dpublic.h \ + H5Dprivate.h \ + H5Gprivate.h \ + H5Gpublic.h \ H5Oprivate.h \ H5Opublic.h \ H5HGprivate.h \ @@ -950,70 +890,92 @@ H5T.o: \ H5Spublic.h \ H5Zprivate.h \ H5Zpublic.h \ - H5Iprivate.h -H5Tbit.o: \ - H5Tbit.c \ + H5Eprivate.h \ + H5Epublic.h \ + H5Gpkg.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5HLprivate.h +H5P.o: \ + H5P.c \ H5private.h \ H5public.h \ H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Ipublic.h \ H5Iprivate.h \ - H5Tpkg.h \ - H5HGprivate.h \ - H5HGpublic.h \ + H5Ipublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ + H5Dprivate.h \ H5Gprivate.h \ H5Gpublic.h \ - H5Bprivate.h -H5Tconv.o: \ - H5Tconv.c \ - H5Iprivate.h \ - H5Ipublic.h \ - H5public.h \ - H5config.h \ - H5private.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ H5Eprivate.h \ H5Epublic.h \ H5MMprivate.h \ H5MMpublic.h \ - H5Tpkg.h \ - H5HGprivate.h \ - H5HGpublic.h \ + H5Pprivate.h +H5Shyper.o: \ + H5Shyper.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h -H5Tinit.o: \ - H5Tinit.c \ + H5Zprivate.h \ + H5Zpublic.h +H5Spoint.o: \ + H5Spoint.c \ H5private.h \ H5public.h \ H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ H5Eprivate.h \ H5Epublic.h \ + H5Ipublic.h \ H5MMprivate.h \ H5MMpublic.h \ - H5Tpkg.h \ - H5HGprivate.h \ - H5HGpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ H5Tprivate.h \ - H5Tpublic.h \ - H5Gprivate.h + H5Tpublic.h H5TB.o: \ H5TB.c \ H5private.h \ @@ -1024,23 +986,23 @@ H5TB.o: \ H5Eprivate.h \ H5Epublic.h \ H5MMprivate.h -H5V.o: \ - H5V.c \ +H5A.o: \ + H5A.c \ H5private.h \ H5public.h \ H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ + H5Iprivate.h \ H5Ipublic.h \ - H5Oprivate.h \ - H5Opublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ + H5Dprivate.h \ H5Gprivate.h \ H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h \ @@ -1048,15 +1010,21 @@ H5V.o: \ H5Sprivate.h \ H5Spublic.h \ H5Zprivate.h \ - H5Zpublic.h -H5Z.o: \ - H5Z.c \ + H5Zpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Pprivate.h +H5S.o: \ + H5S.c \ H5private.h \ H5public.h \ H5config.h \ + H5Iprivate.h \ + H5Ipublic.h \ H5Eprivate.h \ H5Epublic.h \ - H5Ipublic.h \ H5MMprivate.h \ H5MMpublic.h \ H5Oprivate.h \ @@ -1072,10 +1040,7 @@ H5Z.o: \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h + H5Sprivate.h H5Sselect.o: \ H5Sselect.c \ H5private.h \ @@ -1101,3 +1066,26 @@ H5Sselect.o: \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h +H5Omtime.o: \ + H5Omtime.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h @@ -753,7 +753,8 @@ H5Dextend (hid_t dset_id, const hsize_t *size) * Errors: * DATASET CANTINIT Can't update dataset header. * DATASET CANTINIT Problem with the dataset name. - * DATASET CANTINIT Fail in file space allocation for chunks"); + * DATASET CANTINIT Fail in file space allocation for + * chunks * * Programmer: Robb Matzke * Thursday, December 4, 1997 @@ -762,6 +763,9 @@ H5Dextend (hid_t dset_id, const hsize_t *size) * Robb Matzke, 9 Jun 1998 * The data space message is no longer cached in the dataset struct. * + * Robb Matzke, 27 Jul 1998 + * Added the MTIME message to the dataset object header. + * *------------------------------------------------------------------------- */ H5D_t * @@ -896,6 +900,14 @@ H5D_create(H5G_t *loc, const char *name, const H5T_t *type, const H5S_t *space, HGOTO_ERROR (H5E_DATASET, H5E_CANTINIT, NULL, "unable to update compression header message"); } + + /* + * Add a modification time message. + */ + if (H5O_touch(&(new_dset->ent), TRUE)<0) { + HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, + "unable to update modification time message"); + } /* * Initialize storage. We assume that external storage is already @@ -1597,6 +1609,11 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, HDmemset(&bkg_iter,0,sizeof(H5S_sel_iter_t)); HDmemset(&file_iter,0,sizeof(H5S_sel_iter_t)); + if (0==(dataset->ent.file->intent & H5F_ACC_RDWR)) { + HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, + "no write intent on file"); + } + if (!file_space) { if (NULL==(free_this_space=H5S_read (&(dataset->ent)))) { HGOTO_ERROR (H5E_DATASET, H5E_CANTINIT, FAIL, @@ -1849,6 +1866,14 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, } } + /* + * Update modification time. We have to do this explicitly because + * writing to a dataset doesn't necessarily change the object header. + */ + if (H5O_touch(&(dataset->ent), FALSE)<0) { + HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, + "unable to update modification time"); + } succeed: ret_value = SUCCEED; @@ -1982,10 +1982,16 @@ H5G_stat (H5G_t *loc, const char *name, hbool_t follow_link, if (statbuf) { if (H5G_CACHED_SLINK!=obj_ent.type) { statbuf->objno[0] = (unsigned long)(obj_ent.header.offset); - statbuf->objno[1] = (unsigned long)(obj_ent.header.offset >> - 8*sizeof(long)); + if (sizeof(obj_ent.header.offset)>sizeof(long)) { + statbuf->objno[1] = (unsigned long)(obj_ent.header.offset >> + 8*sizeof(long)); + } statbuf->nlink = H5O_link (&obj_ent, 0); statbuf->type = H5G_LINK; + if (NULL==H5O_read(&obj_ent, H5O_MTIME, 0, &(statbuf->mtime))) { + H5E_clear(); + statbuf->mtime = 0; + } } else { if (NULL==H5O_read (&grp_ent, H5O_STAB, 0, &stab_mesg) || NULL==(s=H5HL_peek (grp_ent.file, &(stab_mesg.heap_addr), diff --git a/src/H5Gpublic.h b/src/H5Gpublic.h index 217ad7e..f4de521 100644 --- a/src/H5Gpublic.h +++ b/src/H5Gpublic.h @@ -42,11 +42,12 @@ typedef enum H5G_link_t { /* Information about an object */ typedef struct H5G_stat_t { - unsigned long fileno[2]; - unsigned long objno[2]; - unsigned nlink; - int type; - size_t linklen; + unsigned long fileno[2]; /*file number */ + unsigned long objno[2]; /*object number */ + unsigned nlink; /*number of hard links to object*/ + int type; /*basic object type */ + time_t mtime; /*modification time */ + size_t linklen; /*symbolic link value length */ } H5G_stat_t; @@ -35,6 +35,7 @@ static intn H5O_alloc(H5F_t *f, H5O_t *oh, const H5O_class_t *type, size_t size); static intn H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size); static intn H5O_alloc_new_chunk(H5F_t *f, H5O_t *oh, size_t size); +static herr_t H5O_touch_oh(H5F_t *f, H5O_t *oh, hbool_t force); /* H5O inherits cache-like properties from H5AC */ static const H5AC_class_t H5AC_OHDR[1] = {{ @@ -64,7 +65,7 @@ static const H5O_class_t *const message_type_g[] = { H5O_COMPRESS, /*0x000B Data storage -- compressed object */ H5O_ATTR, /*0x000C Attribute list */ H5O_NAME, /*0x000D Object name */ - NULL, /*0x000E Object modification date and time */ + H5O_MTIME, /*0x000E Object modification date and time */ NULL, /*0x000F Shared header message */ H5O_CONT, /*0x0010 Object header continuation */ H5O_STAB, /*0x0011 Symbol table */ @@ -1235,6 +1236,9 @@ H5O_modify(H5G_entry_t *ent, const H5O_class_t *type, intn overwrite, "unable to copy message to object header"); } } + + /* Update the modification time message if any */ + H5O_touch_oh(ent->file, oh, FALSE); oh->mesg[idx].flags = flags; oh->mesg[idx].dirty = TRUE; @@ -1252,6 +1256,126 @@ H5O_modify(H5G_entry_t *ent, const H5O_class_t *type, intn overwrite, /*------------------------------------------------------------------------- + * Function: H5O_touch_oh + * + * Purpose: If FORCE is non-zero then create a modification time message + * unless one already exists. Then update any existing + * modification time message with the current time. + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * Monday, July 27, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +H5O_touch_oh(H5F_t *f, H5O_t *oh, hbool_t force) +{ + intn idx; + time_t now = time(NULL); + size_t size; + + FUNC_ENTER(H5O_touch_oh, FAIL); + assert(oh); + + /* Look for existing message */ + for (idx=0; idx<oh->nmesgs; idx++) { + if (H5O_MTIME==oh->mesg[idx].type) break; + } + + /* Create a new message */ + if (idx==oh->nmesgs) { + if (!force) HRETURN(SUCCEED); /*nothing to do*/ + size = (H5O_MTIME->raw_size)(f, &now); + size = H5O_ALIGN(size); + if ((idx=H5O_alloc(f, oh, H5O_MTIME, size))<0) { + HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL, + "unable to allocate space for modification time " + "message"); + } + } + + /* Update the native part */ + if (NULL==oh->mesg[idx].native) { + if (NULL==(oh->mesg[idx].native = H5MM_malloc(sizeof(time_t)))) { + HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL, + "memory allocation failed for modification time " + "message"); + } + } + *((time_t*)(oh->mesg[idx].native)) = now; + oh->mesg[idx].dirty = TRUE; + oh->dirty = TRUE; + + FUNC_LEAVE(SUCCEED); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_touch + * + * Purpose: Touch an object by setting the modification time to the + * current time and marking the object as dirty. Unless FORCE + * is non-zero, nothing happens if there is no MTIME message in + * the object header. + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * Monday, July 27, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +herr_t +H5O_touch(H5G_entry_t *ent, hbool_t force) +{ + H5O_t *oh = NULL; + herr_t ret_value = FAIL; + + FUNC_ENTER(H5O_touch, FAIL); + + /* check args */ + assert(ent); + assert(ent->file); + assert(H5F_addr_defined(&(ent->header))); + if (0==(ent->file->intent & H5F_ACC_RDWR)) { + HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, + "no write intent on file"); + } + + /* Get the object header */ + if (NULL==(oh=H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), + NULL, NULL))) { + HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, + "unable to load object header"); + } + + /* Create/Update the modification time message */ + if (H5O_touch_oh(ent->file, oh, force)<0) { + HGOTO_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL, + "unable to update object modificaton time"); + } + ret_value = SUCCEED; + + done: + if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, &(ent->header), oh)<0) { + HRETURN_ERROR(H5E_OHDR, H5E_PROTECT, FAIL, + "unable to release object header"); + } + FUNC_LEAVE(ret_value); +} + + +/*------------------------------------------------------------------------- * Function: H5O_remove * * Purpose: Removes the specified message from the object header. @@ -1347,6 +1471,7 @@ H5O_remove(H5G_entry_t *ent, const H5O_class_t *type, intn sequence) oh->mesg[i].native = H5O_free (type, oh->mesg[i].native); oh->mesg[i].dirty = TRUE; oh->dirty = TRUE; + H5O_touch_oh(ent->file, oh, FALSE); } } @@ -1789,6 +1914,7 @@ H5O_alloc(H5F_t *f, H5O_t *oh, const H5O_class_t *type, size_t size) oh->mesg[null_idx].chunkno = oh->mesg[idx].chunkno; oh->mesg[idx].raw_size = size; } + /* initialize the new message */ oh->mesg[idx].type = type; oh->mesg[idx].dirty = TRUE; @@ -1996,16 +2122,17 @@ H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, } /* decode the message */ - if (NULL == oh->mesg[i].native && oh->mesg[i].type->decode) { - if (oh->mesg[i].flags & H5O_FLAG_SHARED) { - decode = H5O_SHARED->decode; - debug = H5O_SHARED->debug; - } else { - decode = oh->mesg[i].type->decode; - debug = oh->mesg[i].type->debug; - } - oh->mesg[i].native = (decode)(f, oh->mesg[i].raw, NULL); + if (oh->mesg[i].flags & H5O_FLAG_SHARED) { + decode = H5O_SHARED->decode; + debug = H5O_SHARED->debug; } else { + decode = oh->mesg[i].type->decode; + debug = oh->mesg[i].type->debug; + } + if (NULL==oh->mesg[i].native && oh->mesg[i].type->decode) { + oh->mesg[i].native = (decode)(f, oh->mesg[i].raw, NULL); + } + if (NULL==oh->mesg[i].native) { debug = NULL; } diff --git a/src/H5Omtime.c b/src/H5Omtime.c new file mode 100644 index 0000000..ae85abb --- /dev/null +++ b/src/H5Omtime.c @@ -0,0 +1,316 @@ +/* + * Copyright © 1998 NCSA + * All rights reserved. + * + * Programmer: Robb Matzke <matzke@llnl.gov> + * Friday, July 24, 1998 + * + * Purpose: The object modification time message. + */ +#include <H5private.h> +#include <H5Eprivate.h> +#include <H5MMprivate.h> +#include <H5Oprivate.h> + +#define PABLO_MASK H5O_mtime_mask + +static void *H5O_mtime_decode(H5F_t *f, const uint8 *p, H5O_shared_t *sh); +static herr_t H5O_mtime_encode(H5F_t *f, uint8 *p, const void *_mesg); +static void *H5O_mtime_copy(const void *_mesg, void *_dest); +static size_t H5O_mtime_size(H5F_t *f, const void *_mesg); +static herr_t H5O_mtime_debug(H5F_t *f, const void *_mesg, FILE * stream, + intn indent, intn fwidth); + +/* This message derives from H5O */ +const H5O_class_t H5O_MTIME[1] = {{ + H5O_MTIME_ID, /*message id number */ + "mtime", /*message name for debugging */ + sizeof(time_t), /*native message size */ + H5O_mtime_decode, /*decode message */ + H5O_mtime_encode, /*encode message */ + H5O_mtime_copy, /*copy the native value */ + H5O_mtime_size, /*raw message size */ + NULL, /*free internal memory */ + NULL, /*get share method */ + NULL, /*set share method */ + H5O_mtime_debug, /*debug the message */ +}}; + +/* Interface initialization */ +static hbool_t interface_initialize_g = FALSE; +#define INTERFACE_INIT NULL + + +/*------------------------------------------------------------------------- + * Function: H5O_mtime_decode + * + * Purpose: Decode a modification time message and return a pointer to a + * new time_t value. + * + * Return: Success: Ptr to new message in native struct. + * + * Failure: NULL + * + * Programmer: Robb Matzke + * matzke@llnl.gov + * Jul 24 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void * +H5O_mtime_decode(H5F_t __unused__ *f, const uint8 *p, + H5O_shared_t __unused__ *sh) +{ + time_t *mesg, the_time; + intn i; + struct tm tm; + static int ncalls=0; + + FUNC_ENTER(H5O_mtime_decode, NULL); + + /* check args */ + assert(f); + assert(p); + assert (!sh); + + /* Initialize time zone information */ + if (0==ncalls++) tzset(); + + /* decode */ + for (i=0; i<14; i++) { + if (!isdigit(p[i])) { + HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, NULL, + "badly formatted modification time message"); + } + } + + /* + * Convert YYYYMMDDhhmmss UTC to a time_t. This is a little problematic + * because mktime() operates on local times. We convert to local time + * and then figure out the adjustment based on the local time zone and + * daylight savings setting. + */ + memset(&tm, 0, sizeof tm); + tm.tm_year = (p[0]-'0')*1000 + (p[1]-'0')*100 + + (p[2]-'0')*10 + (p[3]-'0') - 1900; + tm.tm_mon = (p[4]-'0')*10 + (p[5]-'0') - 1; + tm.tm_mday = (p[6]-'0')*10 + (p[7]-'0'); + tm.tm_hour = (p[8]-'0')*10 + (p[9]-'0'); + tm.tm_min = (p[10]-'0')*10 + (p[11]-'0'); + tm.tm_sec = (p[12]-'0')*10 + (p[13]-'0'); + tm.tm_isdst = -1; /*figure it out*/ + if ((time_t)-1==(the_time=mktime(&tm))) { + HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, NULL, + "badly formatted modification time message"); + } + +#if defined(HAVE_TM_GMTOFF) + /* FreeBSD, OSF 4.0 */ + the_time += tm.tm_gmtoff; +#elif defined(HAVE_TIMEZONE) + /* Linux */ + the_time -= timezone - (tm.tm_isdst?3600:0); +#elif defined(HAVE_BSDGETTIMEOFDAY) && defined(HAVE_STRUCT_TIMEZONE) + /* Irix5.3 */ + { + struct timezone tz; + if (BSDgettimeofday(NULL, &tz)<0) { + HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, NULL, + "unable to obtain local timezone information"); + } + the_time -= tz.tz_minuteswest*60 - (tm.tm_idst?3600:0); + } +#elif defined(HAVE_GETTIMEOFDAY) && defined(HAVE_STRUCT_TIMEZONE) + { + struct timezone tz; + if (gettimeofday(NULL, &tz)<0) { + HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, NULL, + "unable to obtain local timezone information"); + } + the_time -= tz.tz_minuteswest*60 - (tm.tm_isdst?3600:0); + } +#else + /* + * The catch-all. If we can't convert a character string universal + * coordinated time to a time_t value reliably then we can't decode the + * modification time message. This really isn't as bad as it sounds -- + * the only way a user can get the modification time is from H5Gstat() + * and H5G_stat() can gracefully recover. + */ + + /* Irix64 */ + HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, NULL, + "unable to obtain local timezone information"); +#endif + + /* The return value */ + if (NULL==(mesg = H5MM_calloc(sizeof(time_t)))) { + HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, + "memory allocation failed"); + } + *mesg = the_time; + + FUNC_LEAVE((void*)mesg); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_mtime_encode + * + * Purpose: Encodes a modification time message. + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * matzke@llnl.gov + * Jul 24 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +H5O_mtime_encode(H5F_t __unused__ *f, uint8 *p, const void *_mesg) +{ + const time_t *mesg = (const time_t *) _mesg; + struct tm *tm; + + + FUNC_ENTER(H5O_mtime_encode, FAIL); + + /* check args */ + assert(f); + assert(p); + assert(mesg); + + /* encode */ + tm = gmtime(mesg); + sprintf(p, "%04d%02d%02d%02d%02d%02d", + 1900+tm->tm_year, 1+tm->tm_mon, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec); + + FUNC_LEAVE(SUCCEED); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_mtime_copy + * + * Purpose: Copies a message from _MESG to _DEST, allocating _DEST if + * necessary. + * + * Return: Success: Ptr to _DEST + * + * Failure: NULL + * + * Programmer: Robb Matzke + * matzke@llnl.gov + * Jul 24 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void * +H5O_mtime_copy(const void *_mesg, void *_dest) +{ + const time_t *mesg = (const time_t *) _mesg; + time_t *dest = (time_t *) _dest; + + FUNC_ENTER(H5O_mtime_copy, NULL); + + /* check args */ + assert(mesg); + if (!dest && NULL==(dest = H5MM_calloc(sizeof(time_t)))) { + HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, + "memory allocation failed"); + } + + /* copy */ + *dest = *mesg; + + FUNC_LEAVE((void *) dest); +} + +/*------------------------------------------------------------------------- + * Function: H5O_mtime_size + * + * Purpose: Returns the size of the raw message in bytes not + * counting the message type or size fields, but only the data + * fields. This function doesn't take into account + * alignment. + * + * Return: Success: Message data size in bytes w/o alignment. + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * matzke@llnl.gov + * Jul 14 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static size_t +H5O_mtime_size(H5F_t __unused__ *f, const void __unused__ *mesg) +{ + FUNC_ENTER(H5O_mtime_size, 0); + + /* check args */ + assert(f); + assert(mesg); + + FUNC_LEAVE(16); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_mtime_debug + * + * Purpose: Prints debugging info for the message. + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * matzke@llnl.gov + * Jul 24 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +H5O_mtime_debug(H5F_t __unused__ *f, const void *_mesg, FILE *stream, + intn indent, intn fwidth) +{ + const time_t *mesg = (const time_t *)_mesg; + struct tm *tm; + char buf[128]; + + FUNC_ENTER(H5O_mtime_debug, FAIL); + + /* check args */ + assert(f); + assert(mesg); + assert(stream); + assert(indent >= 0); + assert(fwidth >= 0); + + /* debug */ + tm = localtime(mesg); + + + strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %z", tm); + fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "Time:", buf); + + FUNC_LEAVE(SUCCEED); +} + diff --git a/src/H5Oprivate.h b/src/H5Oprivate.h index 7f6cabb..92ba11a 100644 --- a/src/H5Oprivate.h +++ b/src/H5Oprivate.h @@ -200,6 +200,12 @@ typedef struct H5O_name_t { } H5O_name_t; /* + * Modification time message. The message is just a `time_t'. + */ +#define H5O_MTIME_ID 0x000e +extern const H5O_class_t H5O_MTIME[1]; + +/* * Shared object message. This message ID never really appears in an object * header. Instead, bit 2 of the `Flags' field will be set and the ID field * will be the ID of the pointed-to message. @@ -253,6 +259,7 @@ void *H5O_read (H5G_entry_t *ent, const H5O_class_t *type, intn sequence, void *mesg); intn H5O_modify (H5G_entry_t *ent, const H5O_class_t *type, intn overwrite, uintn flags, const void *mesg); +herr_t H5O_touch(H5G_entry_t *ent, hbool_t force); herr_t H5O_remove (H5G_entry_t *ent, const H5O_class_t *type, intn sequence); herr_t H5O_reset (const H5O_class_t *type, void *native); void *H5O_free (const H5O_class_t *type, void *mesg); @@ -2639,8 +2639,8 @@ H5Tget_member_dims (hid_t type_id, int membno, /* Value */ ndims = dt->u.compnd.memb[membno].ndims; for (i = 0; i < ndims; i++) { - if (dims[i]) dims[i] = dt->u.compnd.memb[membno].dim[i]; - if (perm[i]) perm[i] = dt->u.compnd.memb[membno].perm[i]; + if (dims) dims[i] = dt->u.compnd.memb[membno].dim[i]; + if (perm) perm[i] = dt->u.compnd.memb[membno].perm[i]; } FUNC_LEAVE(ndims); @@ -2816,10 +2816,10 @@ H5Tinsert_array (hid_t parent_id, const char *name, size_t offset, if (!name || !*name) { HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no member name"); } - if (ndims<1 || ndims>4) { + if (ndims<0 || ndims>4) { HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid dimensionality"); } - if (!dim) { + if (ndims>0 && !dim) { HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no dimensions specified"); } for (i=0; i<ndims; i++) { diff --git a/src/H5config.h.in b/src/H5config.h.in index 5feabff..5978d92 100644 --- a/src/H5config.h.in +++ b/src/H5config.h.in @@ -3,6 +3,13 @@ /* Define to empty if the keyword does not work. */ #undef const +/* Define if your struct tm has tm_zone. */ +#undef HAVE_TM_ZONE + +/* Define if you don't have tm_zone but do have the external array + tzname. */ +#undef HAVE_TZNAME + /* Define as __inline if that's what the C compiler calls it. */ #undef inline @@ -15,6 +22,9 @@ /* Define if you have the ANSI C header files. */ #undef STDC_HEADERS +/* Define if your <sys/time.h> declares struct tm. */ +#undef TM_IN_SYS_TIME + /* Define if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN @@ -34,6 +44,15 @@ /* The width parameter for printf formats for type `long long', us. `ll' */ #undef PRINTF_LL_WIDTH +/* Define if `tm_gmtoff' is a member of `struct tm' */ +#undef HAVE_TM_GMTOFF + +/* Define if `timezone' is a global variable */ +#undef HAVE_TIMEZONE + +/* Define if `struct timezone' is defined */ +#undef HAVE_STRUCT_TIMEZONE + /* The number of bytes in a double. */ #undef SIZEOF_DOUBLE @@ -61,6 +80,9 @@ /* The number of bytes in a size_t. */ #undef SIZEOF_SIZE_T +/* Define if you have the BSDgettimeofday function. */ +#undef HAVE_BSDGETTIMEOFDAY + /* Define if you have the fork function. */ #undef HAVE_FORK @@ -76,6 +98,9 @@ /* Define if you have the getrusage function. */ #undef HAVE_GETRUSAGE +/* Define if you have the gettimeofday function. */ +#undef HAVE_GETTIMEOFDAY + /* Define if you have the lseek64 function. */ #undef HAVE_LSEEK64 diff --git a/src/H5private.h b/src/H5private.h index 2dac272..7f26ff3 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -32,11 +32,14 @@ */ #ifdef STDC_HEADERS # include <assert.h> +# include <ctype.h> # include <fcntl.h> # include <stdio.h> # include <stdlib.h> # include <string.h> +# include <sys/time.h> # include <sys/types.h> +# include <time.h> # include <unistd.h> #endif diff --git a/src/Makefile.in b/src/Makefile.in index 4eaebdd..681e285 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -18,9 +18,9 @@ LIB_SRC=H5.c H5A.c H5AC.c H5B.c H5D.c H5E.c H5F.c H5Farray.c H5Fcore.c \ H5Ffamily.c H5Fistore.c H5Flow.c H5Fmpio.c H5Fsec2.c H5Fsplit.c \ H5Fstdio.c H5G.c H5Gent.c H5Gnode.c H5Gstab.c H5HG.c H5HL.c H5I.c H5MF.c \ H5MM.c H5O.c H5Oattr.c H5Ocomp.c H5Ocont.c H5Odtype.c H5Oefl.c \ - H5Olayout.c H5Oname.c H5Onull.c H5Osdspace.c H5Oshared.c H5Ostab.c H5P.c \ - H5S.c H5Sall.c H5Shyper.c H5Spoint.c H5Ssimp.c H5Sselect.c H5T.c H5Tbit.c \ - H5Tconv.c H5Tinit.c H5TB.c H5V.c H5Z.c + H5Olayout.c H5Omtime.c H5Oname.c H5Onull.c H5Osdspace.c H5Oshared.c \ + H5Ostab.c H5P.c H5S.c H5Sall.c H5Shyper.c H5Spoint.c H5Ssimp.c \ + H5Sselect.c H5T.c H5Tbit.c H5Tconv.c H5Tinit.c H5TB.c H5V.c H5Z.c LIB_OBJ=$(LIB_SRC:.c=.o) |