ports/editors/ldapvi/patches/patch-arguments_c

80 lines
2.5 KiB
Text
Raw Normal View History

2023-08-16 22:26:55 +00:00
add -y / password-file support, from upstream git bda806b0c311
--- arguments.c.orig Sat May 5 11:17:26 2007
+++ arguments.c Thu Mar 1 22:04:17 2012
@@ -40,6 +40,7 @@ static void parse_configuration(char *, cmdline *, GPt
" -D, --user USER Search filter or DN: User to bind as. [1]\n" \
" Sets --bind simple.\n" \
" -w, --password SECRET Password (also valid for SASL).\n" \
+" -y, --password-file FILE Password file (also valid for SASL).\n" \
" --bind [simple,sasl]\n" \
" Disable or enable SASL.\n" \
" --bind-dialog [never,auto,always]\n" \
@@ -131,6 +132,7 @@ static struct poptOption options[] = {
{"sasl-authzid",'X', POPT_ARG_STRING, 0, 'X', 0, 0},
{"sasl-authcid",'U', POPT_ARG_STRING, 0, 'U', 0, 0},
{"password", 'w', POPT_ARG_STRING, 0, 'w', 0, 0},
+ {"password-file",'y',POPT_ARG_STRING, 0, 'y', 0, 0},
{"chase", 'C', POPT_ARG_STRING, 0, 'C', 0, 0},
{"deref", 'a', POPT_ARG_STRING, 0, 'a', 0, 0},
{"sort", 'S', POPT_ARG_STRING, 0, 'S', 0, 0},
@@ -232,6 +234,30 @@ init_cmdline(cmdline *cmdline)
}
static void
+read_password_file(bind_options *bind_options, char *filename)
+{
+ struct stat st;
+ int fd;
+ char *data;
+ char *ptr;
+
+ if (stat(filename, &st) == -1) {
+ fprintf(stderr, "Failed to stat password file: %s\n",
+ filename);
+ exit(1);
+ }
+ data = xalloc(st.st_size + 1);
+ if ( (fd = open(filename, O_RDONLY)) == -1) syserr();
+ if (read(fd, data, st.st_size) != st.st_size) syserr();
+ close(fd);
+ data[st.st_size] = 0;
+ if ( (ptr = strchr(data, '\n')))
+ *ptr = 0;
+
+ bind_options->password = data;
+}
+
+static void
parse_argument(int c, char *arg, cmdline *result, GPtrArray *ctrls)
{
LDAPControl *control;
@@ -264,6 +290,9 @@ parse_argument(int c, char *arg, cmdline *result, GPtr
case 'w':
result->bind_options.password = arg;
break;
+ case 'y':
+ read_password_file(&result->bind_options, arg);
+ break;
case 'd':
result->discover = 1;
break;
@@ -577,7 +606,7 @@ parse_configuration(char *profile_name, cmdline *resul
}
if (!p)
break;
- if (strcmp(entry_dn(p), profile_name))
+ if (strcmp(entry_dn(p), profile_name))
entry_free(p);
else if (profile_found)
duplicate = 1;
@@ -683,7 +712,7 @@ parse_arguments(int argc, const char **argv, cmdline *
break;
default:
abort();
- }
+ }
if (result->profileonlyp)
if (setenv("LDAPNOINIT", "thanks", 1)) syserr();