]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added [GS]etDates methods to get and set creation, modification and
authorJack Jansen <jack.jansen@cwi.nl>
Sun, 15 Sep 1996 22:11:25 +0000 (22:11 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Sun, 15 Sep 1996 22:11:25 +0000 (22:11 +0000)
backup times.

Mac/Modules/macfsmodule.c

index 9bcdf622bce3cd906978527a02003925e3d3b946..831fd650eae71f8e395c966ccbf37197a67c6119 100644 (file)
@@ -347,6 +347,54 @@ mfs_GetFSSpecFSSpec(self)
        return NULL;
 }
 
+/*
+** Two generally useful routines
+*/
+static OSErr
+PyMac_GetFileDates(fss, crdat, mddat, bkdat)
+       FSSpec *fss;
+       unsigned long *crdat, *mddat, *bkdat;
+{
+       CInfoPBRec pb;
+       OSErr error;
+       
+       pb.dirInfo.ioNamePtr = fss->name;
+       pb.dirInfo.ioFDirIndex = 0;
+       pb.dirInfo.ioVRefNum = fss->vRefNum;
+       pb.dirInfo.ioDrDirID = fss->parID;
+       error = PBGetCatInfoSync(&pb);
+       if ( error ) return error;
+       *crdat = pb.hFileInfo.ioFlCrDat;
+       *mddat = pb.hFileInfo.ioFlMdDat;
+       *bkdat = pb.hFileInfo.ioFlBkDat;
+       return 0;
+}      
+
+static OSErr
+PyMac_SetFileDates(fss, crdat, mddat, bkdat)
+       FSSpec *fss;
+       unsigned long crdat, mddat, bkdat;
+{
+       CInfoPBRec pb;
+       OSErr error;
+       
+       pb.dirInfo.ioNamePtr = fss->name;
+       pb.dirInfo.ioFDirIndex = 0;
+       pb.dirInfo.ioVRefNum = fss->vRefNum;
+       pb.dirInfo.ioDrDirID = fss->parID;
+       error = PBGetCatInfoSync(&pb);
+       if ( error ) return error;
+       pb.dirInfo.ioNamePtr = fss->name;
+       pb.dirInfo.ioFDirIndex = 0;
+       pb.dirInfo.ioVRefNum = fss->vRefNum;
+       pb.dirInfo.ioDrDirID = fss->parID;
+       pb.hFileInfo.ioFlCrDat = crdat;
+       pb.hFileInfo.ioFlMdDat = mddat;
+       pb.hFileInfo.ioFlBkDat = bkdat;
+       error = PBSetCatInfoSync(&pb);
+       return error;
+}
+
 static object *
 mfss_as_pathname(self, args)
        mfssobject *self;
@@ -507,6 +555,44 @@ mfss_SetFInfo(self, args)
        return None;
 }
 
+static object *
+mfss_GetDates(self, args)
+       mfssobject *self;
+       object *args;
+{
+       OSErr err;
+       unsigned long crdat, mddat, bkdat;
+       
+       if (!newgetargs(args, ""))
+               return NULL;
+       err = PyMac_GetFileDates(&self->fsspec, &crdat, &mddat, &bkdat);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return mkvalue("ddd", (double)crdat, (double)mddat, (double)bkdat);
+}
+
+static object *
+mfss_SetDates(self, args)
+       mfssobject *self;
+       object *args;
+{
+       OSErr err;
+       double crdat, mddat, bkdat;
+       
+       if (!newgetargs(args, "ddd", &crdat, &mddat, &bkdat))
+               return NULL;
+       err = PyMac_SetFileDates(&self->fsspec, (unsigned long)crdat, 
+                               (unsigned long)mddat, (unsigned long)bkdat);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       INCREF(None);
+       return None;
+}
+
 static struct methodlist mfss_methods[] = {
        {"as_pathname",         (method)mfss_as_pathname,                       1},
        {"as_tuple",            (method)mfss_as_tuple,                          1},
@@ -516,6 +602,8 @@ static struct methodlist mfss_methods[] = {
        {"SetCreatorType",      (method)mfss_SetCreatorType,            1},
        {"GetFInfo",            (method)mfss_GetFInfo,                          1},
        {"SetFInfo",            (method)mfss_SetFInfo,                          1},
+       {"GetDates",            (method)mfss_GetDates,                          1},
+       {"SetDates",            (method)mfss_SetDates,                          1},
  
        {NULL,                  NULL}           /* sentinel */
 };