// uuid.cpp - UUID functions.
//
// (c) 2012-2017 Xestia Software Development.
//
// This file is part of Xestia Calendar. Based on Xestia Address Book.
//
// Xestia Calendar 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, version 3 of the license.
//
// Xestia Calendar 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 Xestia Calendar. If not, see
#include "uuid.h"
string GenerateUUID()
{
#if defined(WIN32)
UUID uuidData;
UuidCreate(&uuidData);
wchar_t* uuidStr = 0;
UuidToString(&uuidData, (RPC_WSTR*)&uuidStr);
wstring uuidWStr(uuidStr);
std::string uuidOut(uuidWStr.begin(), uuidWStr.end());
#elif defined(__HAIKU__)
#else
#include
FILE *uuidhdl = popen("uuidgen", "r");
if (uuidhdl == NULL) {
return "";
}
char strData[64];
std::string uuidOut;
while (fgets(strData, sizeof(strData), uuidhdl) != NULL){
uuidOut.append(strData);
}
pclose(uuidhdl);
#endif
if (uuidOut.back() == '\n'){
uuidOut.erase(uuidOut.end()-1);
}
return uuidOut;
}