diff options
| author | Vincent Richard <[email protected]> | 2013-12-29 10:02:12 +0100 |
|---|---|---|
| committer | Vincent Richard <[email protected]> | 2013-12-29 10:02:12 +0100 |
| commit | 152c6bed75598a6ca5efb7914701157270155833 (patch) | |
| tree | 8faced1d75a45c819630323da256248415992ed0 /src/utility/random.cpp | |
| parent | Merge branch 'master' of https://github.com/kisli/vmime (diff) | |
| download | vmime-152c6bed75598a6ca5efb7914701157270155833.tar.gz vmime-152c6bed75598a6ca5efb7914701157270155833.zip | |
Merged source and header files in directory structure. Got rid of SConstruct build.
Diffstat (limited to 'src/utility/random.cpp')
| -rw-r--r-- | src/utility/random.cpp | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/src/utility/random.cpp b/src/utility/random.cpp deleted file mode 100644 index 97d12ddc..00000000 --- a/src/utility/random.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// -// VMime library (http://www.vmime.org) -// Copyright (C) 2002-2013 Vincent Richard <[email protected]> -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 3 of -// the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License along -// with this program; if not, write to the Free Software Foundation, Inc., -// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -// -// Linking this library statically or dynamically with other modules is making -// a combined work based on this library. Thus, the terms and conditions of -// the GNU General Public License cover the whole combination. -// - -#include "vmime/utility/random.hpp" -#include "vmime/platform.hpp" - -#include <ctime> - - -namespace vmime { -namespace utility { - - -static unsigned int getRandomSeed() -{ - unsigned int seed; - - platform::getHandler()->generateRandomBytes - (reinterpret_cast <unsigned char*>(&seed), sizeof(seed)); - - return seed; -} - - -unsigned int random::getNext() -{ - static unsigned int next = getRandomSeed(); - - // Park and Miller's minimal standard generator: - // xn+1 = (a * xn + b) mod c - // xn+1 = (16807 * xn) mod (2^31 - 1) - next = static_cast<unsigned int>((16807 * next) % 2147483647ul); - return next; -} - - -unsigned int random::getTime() -{ - return static_cast <unsigned int>((platform::getHandler()->getUnixTime())); -} - - -unsigned int random::getProcess() -{ - return (platform::getHandler()->getProcessId()); -} - - -const string random::getString(const size_t length, const string& randomChars) -{ - string res; - res.resize(length); - - const unsigned int x = static_cast <unsigned int>(randomChars.length()); - size_t c = 0; - - while (c < length) - { - for (unsigned int n = random::getNext() ; n != 0 && c < length ; n /= x) - { - res[c++] = randomChars[n % x]; - } - } - - return (res); -} - - -} // utility -} // vmime |
