int sqUUIDInit(void) { /* check if we get a segmentation fault when using libuuid */ int pluginAvailable= 0; struct sigaction originalAction; uuid_t uuid; if (!sigsetjmp(env, 1)) { struct sigaction newAction; newAction.sa_handler= sigsegvHandler; newAction.sa_flags= 0; sigemptyset(&newAction.sa_mask); if (sigaction(SIGSEGV, &newAction, &originalAction)) /* couldn't change the signal handler: give up now */ return 0; else pluginAvailable= MakeUUID((char *)&uuid); } sigaction(SIGSEGV, &originalAction, NULL); return pluginAvailable; }
EXPORT(sqInt) primitiveMakeUUID(void) { char* location; sqInt oop; if (!((interpreterProxy->methodArgumentCount()) == 0)) { return interpreterProxy->primitiveFail(); } oop = interpreterProxy->stackObjectValue(0); if (interpreterProxy->failed()) { return null; } if (!(interpreterProxy->isBytes(oop))) { return interpreterProxy->primitiveFail(); } if (!((interpreterProxy->byteSizeOf(oop)) == 16)) { return interpreterProxy->primitiveFail(); } location = interpreterProxy->firstIndexableField(oop); MakeUUID(location); }
static void ChangeAppIdent(char *srcFile) { char *src = readText(srcFile); char *p; char *q; char *uuid; p = strstrNext(src, "public const string APP_IDENT = \""); errorCase(!p); q = strstr(p, "\";"); errorCase(!q); errorCase((uint)q - (uint)p != 38); // {} 付き UUID の長さ uuid = MakeUUID(1); memcpy(p, uuid, 38); writeOneLineNoRet(srcFile, src); memFree(src); memFree(uuid); }
std::string Server::Impl::RegisterDevice(Device *d, const std::string& resource) { m_devices.push_back(d); return MakeUUID(resource); }