• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src/router/samba-3.5.8/source4/lib/registry/tools/
1/*
2   Unix SMB/CIFS implementation.
3   simple registry frontend
4
5   Copyright (C) 2004-2007 Jelmer Vernooij, jelmer@samba.org
6
7   This program is free software; you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation; either version 3 of the License, or
10   (at your option) any later version.
11
12   This program is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program.  If not, see <http://www.gnu.org/licenses/>.
19*/
20
21#include "includes.h"
22#include "lib/events/events.h"
23#include "lib/registry/registry.h"
24#include "lib/cmdline/popt_common.h"
25#include "lib/registry/tools/common.h"
26#include "param/param.h"
27#include "events/events.h"
28
29int main(int argc, char **argv)
30{
31  	int opt;
32	poptContext pc;
33	const char *patch;
34	struct registry_context *h;
35	const char *file = NULL;
36	const char *remote = NULL;
37	struct tevent_context *ev_ctx;
38	struct poptOption long_options[] = {
39		POPT_AUTOHELP
40		{"remote", 'R', POPT_ARG_STRING, &remote, 0, "connect to specified remote server", NULL},
41		{"file", 'F', POPT_ARG_STRING, &file, 0, "file path", NULL },
42		POPT_COMMON_SAMBA
43		POPT_COMMON_CREDENTIALS
44		{ NULL }
45	};
46
47	pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0);
48
49	while((opt = poptGetNextOpt(pc)) != -1) {
50	}
51
52	ev_ctx = s4_event_context_init(NULL);
53
54	if (remote) {
55		h = reg_common_open_remote (remote, ev_ctx, cmdline_lp_ctx, cmdline_credentials);
56	} else {
57		h = reg_common_open_local (cmdline_credentials, ev_ctx, cmdline_lp_ctx);
58	}
59
60	if (h == NULL)
61		return 1;
62
63	patch = poptGetArg(pc);
64	if (patch == NULL) {
65		poptPrintUsage(pc, stderr, 0);
66		return 1;
67	}
68
69	poptFreeContext(pc);
70
71	reg_diff_apply(h, lp_iconv_convenience(cmdline_lp_ctx), patch);
72
73	return 0;
74}
75