50 char *end = buffer +
sizeof(buffer);
88 char *end = buffer +
sizeof(buffer);
102 for (
size_t i = 0; i < tp->
length; i++)
138 static const char* allowed[] = {
143 const size_t len =
sizeof(allowed) /
sizeof(allowed[0]);
145 for (
size_t i = 0; (i < len) && (allowed[i] != NULL); i++) {
146 const char *s = allowed[i];
147 const size_t len = strlen(s);
149 if (strncmp(s, name, len) == 0)
155 #ifdef HAVE_ISSETUGID
164 const char *env = getenv(
"TESLA_DEBUG");
171 size_t envlen =
strnlen(env, 100);
172 if ((strncmp(env, name, envlen) == 0) && (name[envlen] ==
'.'))
176 return (fnmatch(env, name, 0) == 0);
183 assert(instance != NULL);
184 assert(tclass != NULL);
186 int32_t instance_belongs_to_class = 0;
187 for (uint32_t i = 0; i < tclass->
tc_limit; i++) {
189 instance_belongs_to_class = 1;
195 (
"tesla_instance %x not of class '%s'",
203 static const char *
DEBUG_NAME =
"libtesla.class.state";
208 print(
"struct tesla_class @ 0x%tx {\n", (intptr_t) c);
209 print(
" name: '%s',\n", c->tc_name);
210 print(
" description: '[...]',\n");
212 switch (c->tc_context) {
216 print(
"UNKNOWN (0x%x)\n", c->tc_context);
218 print(
" limit: %d\n", c->tc_limit);
219 print(
" %d/%d instances\n", c->tc_limit - c->tc_free, c->tc_limit);
220 for (uint32_t i = 0; i < c->tc_limit; i++) {
241 char *end = buffer + LEN;