diff options
-rw-r--r-- | docs-xml/manpages-3/net.8.xml | 12 | ||||
-rw-r--r-- | source3/utils/net_registry.c | 61 |
2 files changed, 73 insertions, 0 deletions
diff --git a/docs-xml/manpages-3/net.8.xml b/docs-xml/manpages-3/net.8.xml index 529a7f7019..d648d5caaa 100644 --- a/docs-xml/manpages-3/net.8.xml +++ b/docs-xml/manpages-3/net.8.xml @@ -1642,6 +1642,8 @@ string.</member> </member> <member>net registry export - Export a registration entries (.reg) file. </member> +<member>net registry convert - Convert a registration entries (.reg) file. +</member> </simplelist> </para> @@ -1760,6 +1762,16 @@ string.</member> </para> </refsect3> +<refsect3> + <title>REGISTRY CONVERT <replaceable>in</replaceable> <!-- + --><replaceable>out</replaceable> <!-- + --><replaceable>[[inopt] outopt]</replaceable></title> + + <para>Convert a registration entries (.reg) file <emphasis>in</emphasis>. + </para> +</refsect3> + + </refsect2> <refsect2> diff --git a/source3/utils/net_registry.c b/source3/utils/net_registry.c index 3c2e20e6ba..1139e45bef 100644 --- a/source3/utils/net_registry.c +++ b/source3/utils/net_registry.c @@ -1039,8 +1039,61 @@ done: } /**@}*/ +/******************************************************************************/ +/** + * @defgroup net_registry_convert Convert + * @ingroup net_registry + * @{ + */ + +static int net_registry_convert(struct net_context *c, int argc, + const char **argv) +{ + int ret; + void* mem_ctx; + const char* in_opt = NULL; + const char* out_opt = NULL; + + if (argc < 2 || argc > 4|| c->display_usage) { + d_printf("%s\n%s", + _("Usage:"), + _("net registry convert <in> <out> [in_opt] [out_opt]\n" + "net registry convert <in> <out> [out_opt]\n")); + d_printf("%s\n%s", + _("Example:"), + _("net registry convert in.reg out.reg regedit4,enc=CP1252\n")); + return -1; + } + + mem_ctx = talloc_stackframe(); + + switch (argc ) { + case 2: + break; + case 3: + out_opt = argv[2]; + break; + case 4: + out_opt = argv[3]; + in_opt = argv[2]; + break; + default: + assert(false); + } + + + ret = reg_parse_file(argv[0], (struct reg_parse_callback*) + reg_format_file(mem_ctx, argv[1], out_opt), + in_opt); + + talloc_free(mem_ctx); + + return ret; +} +/**@}*/ /******************************************************************************/ + int net_registry(struct net_context *c, int argc, const char **argv) { int ret = -1; @@ -1150,6 +1203,14 @@ int net_registry(struct net_context *c, int argc, const char **argv) N_("net registry export\n" " Export .reg file") }, + { + "convert", + net_registry_convert, + NET_TRANSPORT_LOCAL, + N_("Convert .reg file"), + N_("net registry convert\n" + " Convert .reg file") + }, { NULL, NULL, 0, NULL, NULL } }; |