+void load_timestamp()
+{
+ ifstream infile;
+
+ infile.open(".gstimestamp");
+
+ if (infile.fail())
+ {
+ cerr << "Error opening .gstimestamp" << endl;
+ cerr << "Generating new timestamp" << endl;
+ generate:
+ timestamp = midnight();
+ save_timestamp();
+ return;
+ }
+
+ infile >> timestamp;
+ infile.close();
+ if (timestamp < 1000000)
+ goto generate;
+}
+
+void save_timestamp()
+{
+ ofstream outfile;
+
+ outfile.open(".gstimestamp");
+
+ if (outfile.fail())
+ {
+ cerr << "Error creating new file." << endl;
+ return;
+ }
+
+ outfile << timestamp << endl;
+
+ outfile.close();
+}
+
+long int midnight(long int offset)
+{
+ return (time(NULL) - (time(NULL) % 86400)) + (offset * 3600);
+}