Seems fine. Ethan
On Mon, Jun 6, 2011 at 12:41, Ben Pfaff <b...@nicira.com> wrote: > An upcoming patch needs a larger value. > --- > lib/process.c | 18 ++++++++++-------- > lib/process.h | 5 ++--- > vswitchd/ovs-brcompatd.c | 3 ++- > 3 files changed, 14 insertions(+), 12 deletions(-) > > diff --git a/lib/process.c b/lib/process.c > index 55092f5..3d6c11a 100644 > --- a/lib/process.c > +++ b/lib/process.c > @@ -403,13 +403,15 @@ process_search_path(const char *name) > /* process_run_capture() and supporting functions. */ > > struct stream { > + size_t max_size; > struct ds log; > int fds[2]; > }; > > static int > -stream_open(struct stream *s) > +stream_open(struct stream *s, size_t max_size) > { > + s->max_size = max_size; > ds_init(&s->log); > if (pipe(s->fds)) { > VLOG_WARN("failed to create pipe: %s", strerror(errno)); > @@ -443,9 +445,9 @@ stream_read(struct stream *s) > } > break; > } > - } else if (s->log.length > PROCESS_MAX_CAPTURE) { > - VLOG_WARN("subprocess output overflowed %d-byte buffer", > - PROCESS_MAX_CAPTURE); > + } else if (s->log.length > s->max_size) { > + VLOG_WARN("subprocess output overflowed %zu-byte buffer", > + s->max_size); > break; > } > } > @@ -480,7 +482,7 @@ stream_close(struct stream *s) > * '*status'. > * > * If 'stdout_log' is nonnull, then the subprocess's output to stdout (up to a > - * limit of PROCESS_MAX_CAPTURE bytes) is captured in a memory buffer, which > + * limit of 'log_max' bytes) is captured in a memory buffer, which > * when this function returns 0 is stored as a null-terminated string in > * '*stdout_log'. The caller is responsible for freeing '*stdout_log' (by > * passing it to free()). When this function returns an error, '*stdout_log' > @@ -490,7 +492,7 @@ stream_close(struct stream *s) > * that it captures the subprocess's output to stderr. */ > int > process_run_capture(char **argv, char **stdout_log, char **stderr_log, > - int *status) > + size_t max_log, int *status) > { > struct stream s_stdout, s_stderr; > sigset_t oldsigs; > @@ -510,12 +512,12 @@ process_run_capture(char **argv, char **stdout_log, > char **stderr_log, > return error; > } > > - error = stream_open(&s_stdout); > + error = stream_open(&s_stdout, max_log); > if (error) { > return error; > } > > - error = stream_open(&s_stderr); > + error = stream_open(&s_stderr, max_log); > if (error) { > stream_close(&s_stdout); > return error; > diff --git a/lib/process.h b/lib/process.h > index 94549f7..9c4556b 100644 > --- a/lib/process.h > +++ b/lib/process.h > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2008, 2009 Nicira Networks. > + * Copyright (c) 2008, 2009, 2011 Nicira Networks. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -45,8 +45,7 @@ void process_wait(struct process *); > > char *process_search_path(const char *); > > -#define PROCESS_MAX_CAPTURE 65536 > int process_run_capture(char **argv, char **stdout_log, char **stderr_log, > - int *status); > + size_t max_log, int *status); > > #endif /* process.h */ > diff --git a/vswitchd/ovs-brcompatd.c b/vswitchd/ovs-brcompatd.c > index 973b098..dbb0832 100644 > --- a/vswitchd/ovs-brcompatd.c > +++ b/vswitchd/ovs-brcompatd.c > @@ -200,7 +200,8 @@ execute_appctl_command(const char *unixctl_command, char > **output) > argv[3] = NULL; > > /* Run process and log status. */ > - error = process_run_capture(argv, &stdout_log, &stderr_log, &status); > + error = process_run_capture(argv, &stdout_log, &stderr_log, 65536, > + &status); > if (error) { > VLOG_ERR("failed to execute %s command via ovs-appctl: %s", > unixctl_command, strerror(error)); > -- > 1.7.4.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev