#include "includes.h"
#include "lib/registry/registry.h"
#include "lib/events/events.h"
-#include "lib/cmdline/popt_common.h"
+#include "lib/cmdline/cmdline.h"
#include "lib/registry/tools/common.h"
#include "param/param.h"
{
WERROR error;
struct registry_context *ctx;
+ struct cli_credentials *creds = samba_cmdline_get_creds();
switch (backend) {
case REG_UNKNOWN:
return NULL;
case REG_LOCAL:
error = reg_open_samba(mem_ctx, &ctx, ev_ctx, lp_ctx, NULL,
- popt_get_cmdline_credentials());
+ creds);
break;
case REG_REMOTE:
error = reg_open_remote(mem_ctx, &ctx, NULL,
- popt_get_cmdline_credentials(), lp_ctx,
+ creds, lp_ctx,
remote_host, ev_ctx);
break;
case REG_NULL:
return ctx;
}
-int main(int argc, const char **argv)
+int main(int argc, char **argv)
{
+ const char **argv_const = discard_const_p(const char *, argv);
int opt;
poptContext pc;
char *outputfile = NULL;
void *callback_data;
struct tevent_context *ev_ctx;
struct reg_diff_callbacks *callbacks;
+ struct loadparm_context *lp_ctx = NULL;
+ bool ok;
ctx = talloc_init("regdiff");
+ if (ctx == NULL) {
+ exit(ENOMEM);
+ }
+
+ ok = samba_cmdline_init(ctx,
+ SAMBA_CMDLINE_CONFIG_CLIENT,
+ false /* require_smbconf */);
+ if (!ok) {
+ DBG_ERR("Failed to init cmdline parser!\n");
+ TALLOC_FREE(ctx);
+ exit(1);
+ }
- pc = poptGetContext(argv[0], argc, argv, long_options,0);
+ pc = samba_popt_get_context(getprogname(),
+ argc,
+ argv_const,
+ long_options,
+ 0);
+ if (pc == NULL) {
+ DBG_ERR("Failed to setup popt context!\n");
+ TALLOC_FREE(ctx);
+ exit(1);
+ }
while((opt = poptGetNextOpt(pc)) != -1) {
error = WERR_OK;
}
ev_ctx = s4_event_context_init(ctx);
+ lp_ctx = samba_cmdline_get_lp_ctx();
- h1 = open_backend(ctx, pc, ev_ctx, cmdline_lp_ctx, backend1, remote1);
+ h1 = open_backend(ctx, pc, ev_ctx, lp_ctx, backend1, remote1);
if (h1 == NULL)
return 1;
- h2 = open_backend(ctx, pc, ev_ctx, cmdline_lp_ctx, backend2, remote2);
+ h2 = open_backend(ctx, pc, ev_ctx, lp_ctx, backend2, remote2);
if (h2 == NULL)
return 1;
poptFreeContext(pc);
+ samba_cmdline_burn(argc, argv);
error = reg_dotreg_diff_save(ctx, outputfile, &callbacks, &callback_data);
if (!W_ERROR_IS_OK(error)) {