// 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; }