summaryrefslogtreecommitdiff
path: root/source4/lib
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib')
-rw-r--r--source4/lib/cmdline/readline.c4
-rw-r--r--source4/lib/credentials.c30
-rw-r--r--source4/lib/util_file.c26
3 files changed, 40 insertions, 20 deletions
diff --git a/source4/lib/cmdline/readline.c b/source4/lib/cmdline/readline.c
index 4970638d41..42810c8697 100644
--- a/source4/lib/cmdline/readline.c
+++ b/source4/lib/cmdline/readline.c
@@ -59,7 +59,7 @@ static char *smb_readline_replacement(const char *prompt, void (*callback)(void)
fd_set fds;
static pstring line;
struct timeval timeout;
- int fd = x_fileno(x_stdin);
+ int fd = STDIN_FILENO;
char *ret;
do_debug("%s", prompt);
@@ -88,7 +88,7 @@ char *smb_readline(const char *prompt, void (*callback)(void),
char **(completion_fn)(const char *text, int start, int end))
{
#if HAVE_LIBREADLINE
- if (isatty(x_fileno(x_stdin))) {
+ if (isatty(STDIN_FILENO)) {
char *ret;
/* Aargh! Readline does bizzare things with the terminal width
diff --git a/source4/lib/credentials.c b/source4/lib/credentials.c
index a82c01d4c9..cdef9042b8 100644
--- a/source4/lib/credentials.c
+++ b/source4/lib/credentials.c
@@ -671,37 +671,30 @@ BOOL cli_credentials_parse_password_file(struct cli_credentials *credentials, co
BOOL cli_credentials_parse_file(struct cli_credentials *cred, const char *file, enum credentials_obtained obtained)
{
- XFILE *auth;
- char buf[128];
uint16_t len = 0;
char *ptr, *val, *param;
+ char **lines;
+ int i, numlines;
- if ((auth=x_fopen(file, O_RDONLY, 0)) == NULL)
+ lines = file_lines_load(file, &numlines, NULL);
+
+ if (lines == NULL)
{
/* fail if we can't open the credentials file */
d_printf("ERROR: Unable to open credentials file!\n");
return False;
}
- while (!x_feof(auth))
- {
- /* get a line from the file */
- if (!x_fgets(buf, sizeof(buf), auth))
- continue;
- len = strlen(buf);
+ for (i = 0; i < numlines; i++) {
+ len = strlen(lines[i]);
- if ((len) && (buf[len-1]=='\n'))
- {
- buf[len-1] = '\0';
- len--;
- }
if (len == 0)
continue;
/* break up the line into parameter & value.
* will need to eat a little whitespace possibly */
- param = buf;
- if (!(ptr = strchr_m (buf, '=')))
+ param = lines[i];
+ if (!(ptr = strchr_m (lines[i], '=')))
continue;
val = ptr+1;
@@ -720,10 +713,11 @@ BOOL cli_credentials_parse_file(struct cli_credentials *cred, const char *file,
} else if (strwicmp("realm", param) == 0) {
cli_credentials_set_realm(cred, val, obtained);
}
- memset(buf, 0, sizeof(buf));
+ memset(lines[i], 0, len);
}
- x_fclose(auth);
+ talloc_free(lines);
+
return True;
}
diff --git a/source4/lib/util_file.c b/source4/lib/util_file.c
index 1330b0a70d..338b9547a5 100644
--- a/source4/lib/util_file.c
+++ b/source4/lib/util_file.c
@@ -397,3 +397,29 @@ BOOL file_exists(const char *path)
struct stat st;
return (stat(path, &st) == 0);
}
+
+int vfdprintf(int fd, const char *format, va_list ap)
+{
+ char *p;
+ int len, ret;
+ va_list ap2;
+
+ VA_COPY(ap2, ap);
+
+ len = vasprintf(&p, format, ap2);
+ if (len <= 0) return len;
+ ret = write(fd, p, len);
+ SAFE_FREE(p);
+ return ret;
+}
+
+int fdprintf(int fd, const char *format, ...) _PRINTF_ATTRIBUTE(2,3)
+{
+ va_list ap;
+ int ret;
+
+ va_start(ap, format);
+ ret = vfdprintf(fd, format, ap);
+ va_end(ap);
+ return ret;
+}