Skip to content
Snippets Groups Projects

Add inspect-library helper

Merged Ludovico de Nittis requested to merge wip/denittis/inspect-library into master
1 file
+ 38
8
Compare changes
  • Side-by-side
  • Inline
+ 38
8
@@ -37,6 +37,7 @@
#define BASE "Base"
void print_json_string_content (const char *s);
void clean_exit (void *handle);
int
@@ -63,7 +64,9 @@ main (int argc,
soname = argv[1];
printf ("{\n");
printf (" \"%s\": {", soname);
printf (" \"");
print_json_string_content (soname);
printf ("\": {");
handle = dlopen (soname, RTLD_NOW);
if (handle == NULL)
{
@@ -79,7 +82,9 @@ main (int argc,
clean_exit (handle);
return 1;
}
printf ("\n \"path\": \"%s\",\n", the_library->l_name);
printf ("\n \"path\": \"");
print_json_string_content (the_library->l_name);
printf ("\",\n");
printf (" \"missing_symbols\": [");
if (argc == 3)
@@ -119,11 +124,14 @@ main (int argc,
{
if (first)
{
printf ("\n \"%s\"", symbol);
printf ("\n \"");
first = false;
}
else
printf (",\n \"%s\"", symbol);
printf (",\n \"");
print_json_string_content (symbol);
printf ("\"");
}
}
else
@@ -132,11 +140,16 @@ main (int argc,
{
if (first)
{
printf ("\n \"%s@%s\"", version, symbol);
printf ("\n \"");
first = false;
}
else
printf (",\n \"%s@%s\"", version, symbol);
printf (",\n \"");
print_json_string_content (version);
printf ("@");
print_json_string_content (symbol);
printf ("\"");
}
}
}
@@ -162,11 +175,14 @@ main (int argc,
if (first)
{
printf ("\n \"%s\"", dep_map->l_name);
printf ("\n \"");
first = false;
}
else
printf (",\n \"%s\"", dep_map->l_name);
printf (",\n \"");
print_json_string_content (dep_map->l_name);
printf ("\"");
}
printf ("\n ]\n }");
@@ -175,6 +191,20 @@ main (int argc,
return 0;
}
void
print_json_string_content (const char *s)
{
const char *p;
for (p = s; *p != '\0'; p++)
{
if (*p == '"' || *p == '\\' || *p <= 0x1F)
printf ("\\u%04x", *p);
else
printf ("%c", *p);
}
}
void
clean_exit (void *handle)
{
Loading