mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 02:59:01 -04:00
Add a function for displaying human-readable durations.
Add InspIRCd::DurationString() to take a time_t and return a string with the duration in a human-readable format (ex: 1y20w2d3h5m9s).
This commit is contained in:
parent
21e7efdadf
commit
e02c22ff16
@ -516,6 +516,12 @@ class CoreExport InspIRCd
|
||||
*/
|
||||
static bool IsValidDuration(const std::string& str);
|
||||
|
||||
/** Return a duration in seconds as a human-readable string.
|
||||
* @param duration The duration in seconds to convert to a human-readable string.
|
||||
* @return A string representing the given duration.
|
||||
*/
|
||||
static std::string DurationString(time_t duration);
|
||||
|
||||
/** Attempt to compare a password to a string from the config file.
|
||||
* This will be passed to handling modules which will compare the data
|
||||
* against possible hashed equivalents in the input string.
|
||||
|
@ -7,6 +7,7 @@
|
||||
* Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
|
||||
* Copyright (C) 2006-2007 Oliver Lupton <oliverlupton@gmail.com>
|
||||
* Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
|
||||
* Copyright (C) 2003-2019 Anope Team <team@anope.org>
|
||||
*
|
||||
* This file is part of InspIRCd. InspIRCd is free software: you can
|
||||
* redistribute it and/or modify it under the terms of the GNU General Public
|
||||
@ -429,6 +430,33 @@ bool InspIRCd::IsValidDuration(const std::string& duration)
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string InspIRCd::DurationString(time_t duration)
|
||||
{
|
||||
time_t years = duration / 31536000;
|
||||
time_t weeks = (duration / 604800) % 52;
|
||||
time_t days = (duration / 86400) % 7;
|
||||
time_t hours = (duration / 3600) % 24;
|
||||
time_t minutes = (duration / 60) % 60;
|
||||
time_t seconds = duration % 60;
|
||||
|
||||
std::string ret;
|
||||
|
||||
if (years)
|
||||
ret = ConvToStr(years) + "y";
|
||||
if (weeks)
|
||||
ret += ConvToStr(weeks) + "w";
|
||||
if (days)
|
||||
ret += ConvToStr(days) + "d";
|
||||
if (hours)
|
||||
ret += ConvToStr(hours) + "h";
|
||||
if (minutes)
|
||||
ret += ConvToStr(minutes) + "m";
|
||||
if (seconds)
|
||||
ret += ConvToStr(seconds) + "s";
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::string InspIRCd::Format(va_list& vaList, const char* formatString)
|
||||
{
|
||||
static std::vector<char> formatBuffer(1024);
|
||||
|
Loading…
x
Reference in New Issue
Block a user