mirror of
https://github.com/bitwarden/help
synced 2025-12-22 19:23:19 +00:00
* initial commit
* adding quotes for the array error
* Create Gemfile
* Create Gemfile.lock
* add .nvmrc and .node-version
* removed /article from URL
* update links to work with netlify
* more fixed links
* link fixes
* update bad links
* Update netlify.toml
toml test for redirects
* article redirect
* link fixes
* Update index.html
* Update netlify.toml
* Update _config.yml
* Update netlify.toml
* Update netlify.toml
* Update netlify.toml
* Update netlify.toml
* Update netlify.toml
* add article back into URL for launch
* Update netlify.toml
* Update netlify.toml
* add order to categories front matter
* Update netlify.toml
* update
* sidemenu update
* Revert "sidemenu update"
This reverts commit 5441c3d35c.
* update order prop
* Navbar updates per Gary and compiler warnings
* font/style tweaks
* Update sidebar.html
* Stage Release Documentation (#739)
* initial drafts
* rewrite Custom Fields article to prioritize new context-menu option & better organize ancillary information
* edit
* edit
* Custom Field Context Menu & CAPTCHA item in release notes
* SSO relink event
* update rn
* small edits
* improve release notes titles
* fix side menu
* Edits courtest of mportune!
* update order
* link fixes
* link cleanup
* image updates and a link
* fix trailing slash
Co-authored-by: DanHillesheim <79476558+DanHillesheim@users.noreply.github.com>
125 lines
2.5 KiB
C++
125 lines
2.5 KiB
C++
/*****************************************************************************
|
|
|
|
$Id$
|
|
|
|
File: binder.cpp
|
|
Date: 07Apr06
|
|
|
|
Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
|
|
Gmail: blackhedd
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of either: 1) the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version; or 2) Ruby's License.
|
|
|
|
See the file COPYING for complete licensing information.
|
|
|
|
*****************************************************************************/
|
|
|
|
#include "project.h"
|
|
|
|
#define DEV_URANDOM "/dev/urandom"
|
|
|
|
|
|
std::map<uintptr_t, Bindable_t*> Bindable_t::BindingBag;
|
|
|
|
|
|
/********************************
|
|
STATIC Bindable_t::CreateBinding
|
|
********************************/
|
|
|
|
uintptr_t Bindable_t::CreateBinding()
|
|
{
|
|
static uintptr_t num = 0;
|
|
while(BindingBag[++num]) {}
|
|
return num;
|
|
}
|
|
|
|
#if 0
|
|
string Bindable_t::CreateBinding()
|
|
{
|
|
static int index = 0;
|
|
static string seed;
|
|
|
|
if ((index >= 1000000) || (seed.length() == 0)) {
|
|
#ifdef OS_UNIX
|
|
int fd = open (DEV_URANDOM, O_RDONLY);
|
|
if (fd < 0)
|
|
throw std::runtime_error ("No entropy device");
|
|
|
|
unsigned char u[16];
|
|
size_t r = read (fd, u, sizeof(u));
|
|
if (r < sizeof(u))
|
|
throw std::runtime_error ("Unable to read entropy device");
|
|
|
|
unsigned char *u1 = (unsigned char*)u;
|
|
char u2 [sizeof(u) * 2 + 1];
|
|
|
|
for (size_t i=0; i < sizeof(u); i++)
|
|
sprintf (u2 + (i * 2), "%02x", u1[i]);
|
|
|
|
seed = string (u2);
|
|
#endif
|
|
|
|
|
|
#ifdef OS_WIN32
|
|
UUID uuid;
|
|
UuidCreate (&uuid);
|
|
unsigned char *uuidstring = NULL;
|
|
UuidToString (&uuid, &uuidstring);
|
|
if (!uuidstring)
|
|
throw std::runtime_error ("Unable to read uuid");
|
|
seed = string ((const char*)uuidstring);
|
|
|
|
RpcStringFree (&uuidstring);
|
|
#endif
|
|
|
|
index = 0;
|
|
|
|
|
|
}
|
|
|
|
stringstream ss;
|
|
ss << seed << (++index);
|
|
return ss.str();
|
|
}
|
|
#endif
|
|
|
|
/*****************************
|
|
STATIC: Bindable_t::GetObject
|
|
*****************************/
|
|
|
|
Bindable_t *Bindable_t::GetObject (const uintptr_t binding)
|
|
{
|
|
std::map<uintptr_t, Bindable_t*>::const_iterator i = BindingBag.find (binding);
|
|
if (i != BindingBag.end())
|
|
return i->second;
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
|
|
/**********************
|
|
Bindable_t::Bindable_t
|
|
**********************/
|
|
|
|
Bindable_t::Bindable_t()
|
|
{
|
|
Binding = Bindable_t::CreateBinding();
|
|
BindingBag [Binding] = this;
|
|
}
|
|
|
|
|
|
|
|
/***********************
|
|
Bindable_t::~Bindable_t
|
|
***********************/
|
|
|
|
Bindable_t::~Bindable_t() NO_EXCEPT_FALSE
|
|
{
|
|
BindingBag.erase (Binding);
|
|
}
|
|
|
|
|