From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fabio M. Di Nitto Date: Tue, 15 Feb 2011 06:17:25 +0100 Subject: [Cluster-devel] [PATCH 1/2] ccs: Allow ccs_tool to use alternate base ports In-Reply-To: <1297709920-3810-1-git-send-email-lhh@redhat.com> References: <1297709920-3810-1-git-send-email-lhh@redhat.com> Message-ID: <4D5A0C65.6040205@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Untested, looks sane to me, ACK. Fabio On 02/14/2011 07:58 PM, Lon Hohberger wrote: > Patch only for RHEL5 branch. > > Resolves: rhbz#656427 > > Signed-off-by: Lon Hohberger > --- > ccs/ccs_tool/ccs_tool.c | 2 +- > ccs/ccs_tool/update.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++- > ccs/ccs_tool/update.h | 1 + > 3 files changed, 65 insertions(+), 2 deletions(-) > > diff --git a/ccs/ccs_tool/ccs_tool.c b/ccs/ccs_tool/ccs_tool.c > index dc54146..5fcd667 100644 > --- a/ccs/ccs_tool/ccs_tool.c > +++ b/ccs/ccs_tool/ccs_tool.c > @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) > "Try 'ccs_tool help' for help.\n"); > exit(EXIT_FAILURE); > } > - if(update(argv[optind+1])){ > + if(update2(argc-1, argv+1)){ > fprintf(stderr, "\nFailed to update config file.\n"); > exit(EXIT_FAILURE); > } > diff --git a/ccs/ccs_tool/update.c b/ccs/ccs_tool/update.c > index 1defdaf..3af779b 100644 > --- a/ccs/ccs_tool/update.c > +++ b/ccs/ccs_tool/update.c > @@ -113,11 +113,70 @@ fail: > } > > > -int update(char *location) > +static int parse_args(int argc, char **argv, char **loc) > +{ > + int c, error, ret; > + > + while ((c = getopt(argc, argv, "P:")) != EOF) { > + switch(c) { > + case 'P': > + if(optarg[1] != ':'){ > + fprintf(stderr, "Bad argument to '-P' option.\n" > + "Try '-h' for help.\n"); > + error = -EINVAL; > + goto fail; > + } > + switch(optarg[0]){ > + case 'b': /* backend port number */ > + /* Not used by ccs_tool */ > + break; > + case 'c': /* cluster base port number */ > + ret = atoi(optarg+2); > + if(ret < 1024){ > + fprintf(stderr, "Bad cluster base port number.\n"); > + error = -EINVAL; > + goto fail; > + } > + cluster_base_port = ret; > + printf("Set cluster base port to %d\n", cluster_base_port); > + break; > + case 'f': /* frontend port number */ > + /* Not used by ccs_tool */ > + break; > + } > + break; > + default: > + goto fail; > + } > + } > + > + *loc = argv[optind]; > + > + return 0; > +fail: > + return error; > +} > + > +int update(const char *location) > +{ > + char *args[3]; > + char **argv; > + > + args[0] = "update"; > + args[1] = location; > + args[2] = NULL; > + > + argv = args; > + > + return update2(2, argv); > +} > + > +int update2(int argc, char **argv) > { > int error = 0; > int i, fd; > int cluster_fd = -1; > + char *location = NULL; > char true_location[256]; > xmlDocPtr doc = NULL; > xmlChar *mem_doc; > @@ -132,6 +191,9 @@ int update(char *location) > > struct timeval tv; > > + if (parse_args(argc, argv, &location)) > + return -1; > + > if (location[0] != '/') { > memset(true_location, 0, 256); > if (!getcwd(true_location, 256)) { > diff --git a/ccs/ccs_tool/update.h b/ccs/ccs_tool/update.h > index 19fd7cb..f706963 100644 > --- a/ccs/ccs_tool/update.h > +++ b/ccs/ccs_tool/update.h > @@ -14,5 +14,6 @@ > #define __UPDATE_DOT_H__ > > int update(char *location); > +int update2(int argc, char **argv); > > #endif /* __UPDATE_DOT_H__ */