DS1307 RTC adjust drift automatically

I'm trying to run the above code, but unsuccessfully.

sketch_jul28a:34: error: 'tmDriftInfo' does not name a type

 tmDriftInfo di;


sketch_jul28a.ino: In function 'void setup()':

sketch_jul28a:48: error: 'di' was not declared in this scope

   di = RTC.read_DriftInfo();


sketch_jul28a:48: error: 'class DS1307RTC' has no member named 'read_DriftInfo'

   di = RTC.read_DriftInfo();

sketch_jul28a:51: error: 'class DS1307RTC' has no member named 'write_DriftInfo'

   RTC.write_DriftInfo(di); // once you're happy with the drift setting you only have to read the DriftInfo and pass it to now2() or now3() function to get your drift corrected time

sketch_jul28a.ino: In function 'void loop()':

sketch_jul28a:59: error: 'di' was not declared in this scope

   LcdDisplayDateTime(now3(di));

sketch_jul28a:59: error: 'now3' was not declared in this scope

   LcdDisplayDateTime(now3(di));

sketch_jul28a.ino: In function 'void processSerialCommand()':

sketch_jul28a:142: error: 'tmDriftInfo' was not declared in this scope

         tmDriftInfo diUpdate = RTC.read_DriftInfo();  // update DriftInfo in RTC

sketch_jul28a:143: error: 'diUpdate' was not declared in this scope

         diUpdate.DriftStart = newTime;

sketch_jul28a:144: error: 'class DS1307RTC' has no member named 'write_DriftInfo'

         RTC.write_DriftInfo(diUpdate);

sketch_jul28a:151: error: 'tmDriftInfo' was not declared in this scope

       tmDriftInfo diRead = RTC.read_DriftInfo();

sketch_jul28a:152: error: 'diRead' was not declared in this scope

       if (diRead.DriftStart == 0 | diRead.DriftDays == 0 | diRead.DriftSeconds == 0) {

sketch_jul28a:158: error: 'diRead' was not declared in this scope

       SerialDisplayDateTime(diRead.DriftStart); Serial.println();

exit status 1
'tmDriftInfo' does not name a type