summaryrefslogtreecommitdiff
path: root/source3/utils
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2006-12-01 14:54:31 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:16:17 -0500
commite2bebe486550374978af200232334ddc7757ba8d (patch)
treee8717476ba4fb93fcf502e42f501ed93b28e281d /source3/utils
parent0d38f8af3946ed14be95430286465436829507ba (diff)
downloadsamba-e2bebe486550374978af200232334ddc7757ba8d.tar.gz
samba-e2bebe486550374978af200232334ddc7757ba8d.tar.bz2
samba-e2bebe486550374978af200232334ddc7757ba8d.zip
r19978: More "net sam policy" improvements. Thanks to Karolin Seeger <ks@sernet.de>
Volker (This used to be commit fde042f29e9e9ac19ed3380e8fbe45fa8441e705)
Diffstat (limited to 'source3/utils')
-rw-r--r--source3/utils/net_sam.c83
-rw-r--r--source3/utils/pdbedit.c16
2 files changed, 68 insertions, 31 deletions
diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c
index d92bf1521c..2c9b9649f7 100644
--- a/source3/utils/net_sam.c
+++ b/source3/utils/net_sam.c
@@ -365,38 +365,57 @@ static int net_sam_policy_set(int argc, const char **argv)
const char *account_policy = NULL;
uint32 value, old_value;
int field;
+ char *endptr;
if (argc != 2) {
- d_fprintf(stderr, "usage: net sam policy set"
+ d_fprintf(stderr, "usage: net sam policy set "
"\"<account policy>\" <value> \n");
return -1;
}
- value = strtoul(argv[1], NULL, 10);
account_policy = argv[0];
field = account_policy_name_to_fieldnum(account_policy);
+ value = strtoul(argv[1], &endptr, 10);
- printf("Account policy \"%s\" description: %s\n", account_policy,
- account_policy_get_desc(field));
+ if (field == 0) {
+ const char **names;
+ int i, count;
+
+ account_policy_names_list(&names, &count);
+ d_fprintf(stderr, "No account policy \"%s\"!\n\n", argv[0]);
+ d_fprintf(stderr, "Valid account policies are:\n");
+
+ for (i=0; i<count; i++) {
+ d_fprintf(stderr, "%s\n", names[i]);
+ }
+
+ SAFE_FREE(names);
+ return -1;
+ }
if (!pdb_get_account_policy(field, &old_value)) {
- fprintf(stderr, "Valid account policy, but unable to "
- "fetch value!\n");
- return -1;
- }
-
- printf("Account policy \"%s\" value was: %d\n", account_policy,
- old_value);
+ d_fprintf(stderr, "Valid account policy, but unable to fetch "
+ "value!\n");
+ }
- if (!pdb_set_account_policy(field, value)) {
- d_fprintf(stderr, "Setting account policy %s to %u failed \n",
- account_policy, value);
- }
+ if ((endptr == argv[1]) || (endptr[0] != '\0')) {
+ d_printf("Unable to set policy \"%s\"! Invalid value %s.\n",
+ account_policy, argv[1]);
+ return -1;
+ }
+
+ if (!pdb_set_account_policy(field, value)) {
+ d_fprintf(stderr, "Valid account policy, but unable to "
+ "set value!\n");
+ return -1;
+ }
- printf("Account policy \"%s\" value is now: %d\n", account_policy,
- value);
+ d_printf("Account policy \"%s\" value was: %d\n", account_policy,
+ old_value);
- return 0;
+ d_printf("Account policy \"%s\" value is now: %d\n", account_policy,
+ value);
+ return 0;
}
static int net_sam_policy_show(int argc, const char **argv)
@@ -415,13 +434,19 @@ static int net_sam_policy_show(int argc, const char **argv)
field = account_policy_name_to_fieldnum(account_policy);
if (field == 0) {
- char *apn = account_policy_names_list();
+ const char **names;
+ int count;
+ int i;
+ account_policy_names_list(&names, &count);
d_fprintf(stderr, "No account policy by that name!\n");
- if (apn) {
+ if (count != 0) {
d_fprintf(stderr, "Valid account policies "
- "are:\n%s\n", apn);
+ "are:\n");
+ for (i=0; i<count; i++) {
+ d_fprintf(stderr, "%s\n", names[i]);
+ }
}
- SAFE_FREE(apn);
+ SAFE_FREE(names);
return -1;
}
@@ -440,12 +465,18 @@ static int net_sam_policy_show(int argc, const char **argv)
static int net_sam_policy_list(int argc, const char **argv)
{
- char *apn = account_policy_names_list();
- if (apn) {
+ const char **names;
+ int count;
+ int i;
+ account_policy_names_list(&names, &count);
+ if (count != 0) {
d_fprintf(stderr, "Valid account policies "
- "are:\n\n%s\n", apn);
+ "are:\n");
+ for (i = 0; i < count ; i++) {
+ d_fprintf(stderr, "%s\n", names[i]);
+ }
}
- SAFE_FREE(apn);
+ SAFE_FREE(names);
return -1;
}
diff --git a/source3/utils/pdbedit.c b/source3/utils/pdbedit.c
index ceb346d987..d79ab187a3 100644
--- a/source3/utils/pdbedit.c
+++ b/source3/utils/pdbedit.c
@@ -885,12 +885,18 @@ int main (int argc, char **argv)
uint32 value;
int field = account_policy_name_to_fieldnum(account_policy);
if (field == 0) {
- char *apn = account_policy_names_list();
- fprintf(stderr, "No account policy by that name\n");
- if (apn) {
- fprintf(stderr, "Account policy names are :\n%s\n", apn);
+ const char **names;
+ int count;
+ int i;
+ account_policy_names_list(&names, &count);
+ fprintf(stderr, "No account policy by that name!\n");
+ if (count !=0) {
+ fprintf(stderr, "Account policy names are:\n");
+ for (i = 0; i < count ; i++) {
+ d_fprintf(stderr, "%s\n", names[i]);
+ }
}
- SAFE_FREE(apn);
+ SAFE_FREE(names);
exit(1);
}
if (!pdb_get_account_policy(field, &value)) {