33 #include <sys/types.h>
48 { {0x0, 0xffffff08, 0xafffffff, 0x2ffffffe},
49 {0x0, 0x3ff0000, 0x7fffffe, 0x7fffffe},
50 {0x0, 0x3ff0000, 0x7e, 0x7e},
51 {0x0, 0x3ffc000, 0x7fffffe, 0x7fffffe} };
69 const char *randdev =
"/dev/urandom";
77 unsigned int seed = 0;
78 if ((fd =
open(randdev, O_RDONLY)) != -1) {
79 DEBUG(
"taking seed from " <<randdev);
80 if (
read(fd, &seed,
sizeof(seed)) ==
sizeof(seed)) rc = 1;
84 DEBUG(randdev <<
" not available: using time()");
109 if (!strncasecmp(copt,
"LetNum",6))
111 else if (!strncasecmp(copt,
"Hex",3))
113 else if (!strncasecmp(copt,
"Crypt",5))
128 EPNAME(
"Rndm::GetString");
130 const char *cOpt[4] = {
"Any",
"LetNum",
"Hex",
"Crypt" };
133 if (opt < 0 || opt > 3) {
135 DEBUG(
"unknown option: " <<opt <<
": assume 0");
137 DEBUG(
"enter: len: " <<len <<
" (type: " <<cOpt[opt] <<
")");
144 char *buf =
new char[len+1];
154 for (m = 7; m < 32; m += 7) {
155 i = 0x7F & (frnd >> m);
169 DEBUG(
"got: " <<buf);
190 EPNAME(
"Rndm::GetBuffer");
192 DEBUG(
"enter: len: " <<len);
201 char *buf =
new char[len];
208 bool filter = (opt >= 0 && opt <= 3);
214 for (m = 0; m < 32; m += 8) {
215 i = 0xFF & (frnd >> m);
int open(const char *path, int oflag,...)
ssize_t read(int fildes, void *buf, size_t nbyte)
static kXR_unt32 XrdSutCharMsk[4][4]
static int GetRndmTag(XrdOucString &rtag)
static unsigned int GetUInt()
static bool Init(bool force=0)
static char * GetBuffer(int len, int opt=-1)
static int GetString(int opt, int len, XrdOucString &s)