Leosac  0.7.0
OpenSourceAccessControl
GenGuid.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2014-2016 Leosac
3 
4  This file is part of Leosac.
5 
6  Leosac is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Affero General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  Leosac is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Affero General Public License for more details.
15 
16  You should have received a copy of the GNU Affero General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #include "GenGuid.h"
21 #include "tools/log.hpp"
22 #include <cstdlib>
23 #include <fcntl.h>
24 #include <unistd.h>
25 
26 std::string Leosac::gen_uuid()
27 {
28  ssize_t ret;
29  int fd;
30  fd = open("/proc/sys/kernel/random/uuid", 0);
31  ASSERT_LOG(fd != 1, "Cannot open /proc/sys/kernel/random/uuid");
32 
33  std::array<char, 360> uuid;
34  ret = read(fd, uuid.data(), 36);
35  close(fd);
36  ASSERT_LOG(ret == 36, "Cannot read UUID from /proc/sys/kernel/random/uuid");
37 
38  std::string uuid_str(uuid.data(), 36);
39  return uuid_str;
40 }
#define ASSERT_LOG(cond, msg)
Definition: log.hpp:190
std::string gen_uuid()
Generate a new UUID.
Definition: GenGuid.cpp:26