Skip to content

Commit e04e933

Browse files
oleavrAbhiTheModder
authored andcommitted
extension: Add __repr__ to PackageManager types
1 parent 7a1d62f commit e04e933

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

frida/_frida/extension.c

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ static gboolean PyCompiler_set_options (FridaCompilerOptions * options, const gc
535535
const gchar * bundle_format_value, const gchar * type_check_value, const gchar * source_maps_value, const gchar * compression_value);
536536

537537
static int PyPackageManager_init (PyPackageManager * self, PyObject * args, PyObject * kw);
538+
static PyObject * PyPackageManager_repr (PyPackageManager * self);
538539
static PyObject * PyPackageManager_search (PyPackageManager * self, PyObject * args, PyObject * kw);
539540
static PyObject * PyPackageManager_install (PyPackageManager * self, PyObject * args, PyObject * kw);
540541
static FridaPackageInstallOptions * PyPackageManager_parse_install_options (const gchar * project_root, PyObject * specs_value);
@@ -543,16 +544,19 @@ static PyObject * PyPackage_new_take_handle (FridaPackage * handle);
543544
static int PyPackage_init (PyPackage * self, PyObject * args, PyObject * kw);
544545
static void PyPackage_init_from_handle (PyPackage * self, FridaPackage * handle);
545546
static void PyPackage_dealloc (PyPackage * self);
547+
static PyObject * PyPackage_repr (PyPackage * self);
546548

547549
static PyObject * PyPackageSearchResult_new_take_handle (FridaPackageSearchResult * handle);
548550
static int PyPackageSearchResult_init (PyPackageSearchResult * self, PyObject * args, PyObject * kw);
549551
static void PyPackageSearchResult_init_from_handle (PyPackageSearchResult * self, FridaPackageSearchResult * handle);
550552
static void PyPackageSearchResult_dealloc (PyPackageSearchResult * self);
553+
static PyObject * PyPackageSearchResult_repr (PyPackageSearchResult * self);
551554

552555
static PyObject * PyPackageInstallResult_new_take_handle (FridaPackageInstallResult * handle);
553556
static int PyPackageInstallResult_init (PyPackageInstallResult * self, PyObject * args, PyObject * kw);
554557
static void PyPackageInstallResult_init_from_handle (PyPackageInstallResult * self, FridaPackageInstallResult * handle);
555558
static void PyPackageInstallResult_dealloc (PyPackageInstallResult * self);
559+
static PyObject * PyPackageInstallResult_repr (PyPackageInstallResult * self);
556560

557561
static int PyFileMonitor_init (PyFileMonitor * self, PyObject * args, PyObject * kw);
558562
static PyObject * PyFileMonitor_enable (PyFileMonitor * self);
@@ -959,27 +963,31 @@ PYFRIDA_DEFINE_TYPE ("_frida.Compiler", Compiler, GObject, NULL, frida_unref,
959963
PYFRIDA_DEFINE_TYPE ("_frida.PackageManager", PackageManager, GObject, NULL, frida_unref,
960964
{ Py_tp_doc, "Frida Package Manager" },
961965
{ Py_tp_init, PyPackageManager_init },
966+
{ Py_tp_repr, PyPackageManager_repr },
962967
{ Py_tp_methods, PyPackageManager_methods },
963968
);
964969

965970
PYFRIDA_DEFINE_TYPE ("_frida.Package", Package, GObject, PyPackage_init_from_handle, g_object_unref,
966971
{ Py_tp_doc, "Frida Package" },
967972
{ Py_tp_init, PyPackage_init },
968973
{ Py_tp_dealloc, PyPackage_dealloc },
974+
{ Py_tp_repr, PyPackage_repr },
969975
{ Py_tp_members, PyPackage_members },
970976
);
971977

972978
PYFRIDA_DEFINE_TYPE ("_frida.PackageSearchResult", PackageSearchResult, GObject, PyPackageSearchResult_init_from_handle, g_object_unref,
973979
{ Py_tp_doc, "Frida Package Search Result" },
974980
{ Py_tp_init, PyPackageSearchResult_init },
975981
{ Py_tp_dealloc, PyPackageSearchResult_dealloc },
982+
{ Py_tp_repr, PyPackageSearchResult_repr },
976983
{ Py_tp_members, PyPackageSearchResult_members },
977984
);
978985

979986
PYFRIDA_DEFINE_TYPE ("_frida.PackageInstallResult", PackageInstallResult, GObject, PyPackageInstallResult_init_from_handle, g_object_unref,
980987
{ Py_tp_doc, "Frida Package Install Result" },
981988
{ Py_tp_init, PyPackageInstallResult_init },
982989
{ Py_tp_dealloc, PyPackageInstallResult_dealloc },
990+
{ Py_tp_repr, PyPackageInstallResult_repr },
983991
{ Py_tp_members, PyPackageInstallResult_members },
984992
);
985993

@@ -5027,6 +5035,19 @@ PyPackageManager_init (PyPackageManager * self, PyObject * args, PyObject * kw)
50275035
return 0;
50285036
}
50295037

5038+
static PyObject *
5039+
PyPackageManager_repr (PyPackageManager * self)
5040+
{
5041+
PyObject * result;
5042+
gchar * repr;
5043+
5044+
repr = g_strdup_printf ("PackageManager(registry=\"%s\")", frida_package_manager_get_registry (PY_GOBJECT_HANDLE (self)));
5045+
result = PyUnicode_FromString (repr);
5046+
g_free (repr);
5047+
5048+
return result;
5049+
}
5050+
50305051
static PyObject *
50315052
PyPackageManager_search (PyPackageManager * self, PyObject * args, PyObject * kw)
50325053
{
@@ -5174,6 +5195,43 @@ PyPackage_dealloc (PyPackage * self)
51745195
PyGObject_tp_dealloc ((PyObject *) self);
51755196
}
51765197

5198+
static PyObject *
5199+
PyPackage_repr (PyPackage * self)
5200+
{
5201+
PyObject * result;
5202+
FridaPackage * handle;
5203+
GString * repr;
5204+
const gchar * description, * url;
5205+
5206+
handle = PY_GOBJECT_HANDLE (self);
5207+
5208+
repr = g_string_sized_new (256);
5209+
5210+
g_string_append_printf (repr, "Package(name=\"%s\", version=\"%s\"",
5211+
frida_package_get_name (handle),
5212+
frida_package_get_version (handle));
5213+
5214+
description = frida_package_get_description (handle);
5215+
if (description != NULL)
5216+
{
5217+
gchar * escaped = g_strescape (description, NULL);
5218+
g_string_append_printf (repr, ", description=\"%s\"", escaped);
5219+
g_free (escaped);
5220+
}
5221+
5222+
url = frida_package_get_url (handle);
5223+
if (url != NULL)
5224+
g_string_append_printf (repr, ", url=\"%s\"", url);
5225+
5226+
g_string_append (repr, ")");
5227+
5228+
result = PyUnicode_FromString (repr->str);
5229+
5230+
g_string_free (repr, TRUE);
5231+
5232+
return result;
5233+
}
5234+
51775235

51785236
static PyObject *
51795237
PyPackageList_marshal (FridaPackageList * list)
@@ -5223,6 +5281,30 @@ PyPackageSearchResult_dealloc (PyPackageSearchResult * self)
52235281
PyGObject_tp_dealloc ((PyObject *) self);
52245282
}
52255283

5284+
static PyObject *
5285+
PyPackageSearchResult_repr (PyPackageSearchResult * self)
5286+
{
5287+
PyObject * result;
5288+
GString * repr;
5289+
gint num_packages;
5290+
5291+
repr = g_string_new ("PackageSearchResult(packages=");
5292+
5293+
num_packages = frida_package_list_size (frida_package_search_result_get_packages (PY_GOBJECT_HANDLE (self)));
5294+
if (num_packages != 0)
5295+
g_string_append_printf (repr, "[<%u package%s>]", num_packages, (num_packages == 1) ? "" : "s");
5296+
else
5297+
g_string_append (repr, "[]");
5298+
5299+
g_string_append_printf (repr, ", total=%u)", self->total);
5300+
5301+
result = PyUnicode_FromString (repr->str);
5302+
5303+
g_string_free (repr, TRUE);
5304+
5305+
return result;
5306+
}
5307+
52265308

52275309
static PyObject *
52285310
PyPackageInstallResult_new_take_handle (FridaPackageInstallResult * handle)
@@ -5255,6 +5337,30 @@ PyPackageInstallResult_dealloc (PyPackageInstallResult * self)
52555337
PyGObject_tp_dealloc ((PyObject *) self);
52565338
}
52575339

5340+
static PyObject *
5341+
PyPackageInstallResult_repr (PyPackageInstallResult * self)
5342+
{
5343+
PyObject * result;
5344+
GString * repr;
5345+
gint num_packages;
5346+
5347+
repr = g_string_new ("PackageInstallResult(packages=");
5348+
5349+
num_packages = frida_package_list_size (frida_package_install_result_get_packages (PY_GOBJECT_HANDLE (self)));
5350+
if (num_packages != 0)
5351+
g_string_append_printf (repr, "[<%u package%s>]", num_packages, (num_packages == 1) ? "" : "s");
5352+
else
5353+
g_string_append (repr, "[]");
5354+
5355+
g_string_append (repr, ")");
5356+
5357+
result = PyUnicode_FromString (repr->str);
5358+
5359+
g_string_free (repr, TRUE);
5360+
5361+
return result;
5362+
}
5363+
52585364

52595365
static int
52605366
PyFileMonitor_init (PyFileMonitor * self, PyObject * args, PyObject * kw)

0 commit comments

Comments
 (0)