[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]
Hi
Well spotted with the "backsashes", This is due to wanting code to compile
on windows and linux.
And it's not homework, I am wanting to create this as i am forcing myself to
learn C++ and it's for an server agent that reports back to FMS pandora
monitoring (http://pandorafms.org/) that looks for a backup file in the
last 45 mins etc.
I still haven't found a method to convert the ".st_mtime" in the stat.h
into a t_time so i can pass to the difftime function.
Does any one know if the date string returned from the ".st_mtime" value
will always be in the same format?
should i be stripping the values from string and setting into a tm varible,
then setting a t_time for a compare using difftime?
What method would you use?
are time() - ctime the same type of varible?
Regards
Sam
----- Original Message -----
From: "Gordon Henderson" <gordon+dcglug@xxxxxxxxxx>
To: <list@xxxxxxxxxxxxx>
Sent: Thursday, July 16, 2009 8:04 AM
Subject: Re: [LUG] C++ advice?
> On Wed, 15 Jul 2009, Sam Grabham wrote:
>
>> Hi
>>
>> In C++ how should i compare dates as in the following:
>>
>> I have been using these headers
>> #include <sys/types.h>
>> #include <sys/stat.h>
>>
>> struct stat fileInfo;
>> std::ctime(&fileInfo.st_mtime);
>
> I'm a C programmer, and while I did spend a year progrmming in C++ once
> upon a time, I've erased it from my memory, but the pronciples are the
> same - to get the stat information on a file, you need to give it a
> filename:
>
> so in C:
>
> struct stat buf ;
> time_t ctime ;
>
> ...
> r = stat ("path/to/file", &buf) ;
> /* check r here for e.g. file not found, etc. */
> ctime = buf.st_ctime ;
>
> etc.
>
>> so how should i compare now, as in time() and the file modified date?
>>
>> I wish to calc how many minutes old a file is
>
> Sounds like homework to me ...
>
> Anyway - you can't get what you're after. Unix traditionally does not
> store the creation date of a file, only:
>
> the time of last access (atime - reading a file),
> time of last modification (mtime - writing a file) and
> time of last status change (ctime).
>
> At first glance,
>
> time() - ctime
>
> might look like the answer (in seconds), but while ctime is set when the
> file is created, it is also updated by commands like chmod, chown, etc. so
> the original file creation time can be lost.
>
> If you want to know how long since it was last written, then using mtime
> will give you the correct result. atime will only work on filesystems that
> have not been mounted with the noatime flag.
>
>> How would i convert say a string to a date?
>
> With difficulty, unless you know beforehand the format of the string. (or
> you're coding in php, in which case lookup the strtotime() function - this
> may exit in other languages though)
>
>> would you use difftime in some way? (fDif = difftime
>> (fi.fileModifiedDate("C:\\temp\\test\\Project1.dev"),now); )
>
> You've got a C: and backsashes in there... isn't this a Linux users group?
>
> And if you're writing this to run on a Win box, you will have issues with
> time zones and daylight savings. Good luck.
>
> Gordon
>
> --
> The Mailing List for the Devon & Cornwall LUG
> http://mailman.dclug.org.uk/listinfo/list
> FAQ: http://www.dcglug.org.uk/linux_adm/list-faq.html
--------------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 8.5.375 / Virus Database: 270.13.15/2239 - Release Date: 07/15/09
06:07:00
--
The Mailing List for the Devon & Cornwall LUG
http://mailman.dclug.org.uk/listinfo/list
FAQ: http://www.dcglug.org.uk/linux_adm/list-faq.html