From a809d533f9f2c62bfbce557ccb6a23d9f87fc197 Mon Sep 17 00:00:00 2001 From: Niall O'Higgins Date: Wed, 15 Mar 2006 19:59:38 +0000 Subject: - add util.h, reorganising a bunch of things and exposing cvs_yesno() function to be used by rcs. --- usr.bin/cvs/cvs.h | 46 ++---------------------------- usr.bin/cvs/release.c | 30 ++----------------- usr.bin/cvs/util.c | 30 +++++++++++++++++-- usr.bin/cvs/util.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++ usr.bin/rcs/rcsprog.h | 3 +- 5 files changed, 113 insertions(+), 75 deletions(-) create mode 100644 usr.bin/cvs/util.h (limited to 'usr.bin') diff --git a/usr.bin/cvs/cvs.h b/usr.bin/cvs/cvs.h index 8359c72eb44..36676d999fd 100644 --- a/usr.bin/cvs/cvs.h +++ b/usr.bin/cvs/cvs.h @@ -1,4 +1,4 @@ -/* $OpenBSD: cvs.h,v 1.101 2006/02/10 10:15:48 xsa Exp $ */ +/* $OpenBSD: cvs.h,v 1.102 2006/03/15 19:59:36 niallo Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. @@ -29,6 +29,7 @@ #include "rcs.h" #include "file.h" +#include "util.h" #include "xmalloc.h" #define CVS_VERSION "OpenCVS 0.3" @@ -411,49 +412,6 @@ void cvs_logmsg_send(struct cvsroot *, const char *); /* date.y */ time_t cvs_date_parse(const char *); -/* util.c */ - -struct cvs_line { - char *l_line; - int l_lineno; - TAILQ_ENTRY(cvs_line) l_list; -}; - -TAILQ_HEAD(cvs_tqh, cvs_line); - -struct cvs_lines { - int l_nblines; - char *l_data; - struct cvs_tqh l_lines; -}; - -int cvs_readrepo(const char *, char *, size_t); -void cvs_modetostr(mode_t, char *, size_t); -void cvs_strtomode(const char *, mode_t *); -void cvs_splitpath(const char *, char *, size_t, char **); -int cvs_mkadmin(const char *, const char *, const char *, char *, - char *, int); -int cvs_cksum(const char *, char *, size_t); -int cvs_exec(int, char **, int []); -int cvs_getargv(const char *, char **, int); -int cvs_chdir(const char *, int); -int cvs_rename(const char *, const char *); -int cvs_unlink(const char *); -int cvs_rmdir(const char *); -int cvs_create_dir(const char *, int, char *, char *); -char *cvs_rcs_getpath(CVSFILE *, char *, size_t); -char **cvs_makeargv(const char *, int *); -void cvs_freeargv(char **, int); -void cvs_write_tagfile(char *, char *, int); -void cvs_parse_tagfile(char **, char **, int *); -size_t cvs_path_cat(const char *, const char *, char *, size_t); -time_t cvs_hack_time(time_t, int); - -BUF *cvs_patchfile(const char *, const char *, - int (*p)(struct cvs_lines *, struct cvs_lines *)); -struct cvs_lines *cvs_splitlines(const char *); -void cvs_freelines(struct cvs_lines *); - /* XXX */ int rcs_patch_lines(struct cvs_lines *, struct cvs_lines *); int cvs_checkout_rev(RCSFILE *, RCSNUM *, CVSFILE *, char *, int, int, ...); diff --git a/usr.bin/cvs/release.c b/usr.bin/cvs/release.c index 21aa4abb231..58a2ae4fcbf 100644 --- a/usr.bin/cvs/release.c +++ b/usr.bin/cvs/release.c @@ -1,4 +1,4 @@ -/* $OpenBSD: release.c,v 1.31 2006/01/27 15:26:38 xsa Exp $ */ +/* $OpenBSD: release.c,v 1.32 2006/03/15 19:59:36 niallo Exp $ */ /* * Copyright (c) 2005 Xavier Santolaria * All rights reserved. @@ -36,7 +36,6 @@ extern char *__progname; static int cvs_release_init(struct cvs_cmd *, int, char **, int *); static int cvs_release_pre_exec(struct cvsroot *); -static int cvs_release_yesno(void); static int cvs_release_dir(CVSFILE *, void *); struct cvs_cmd cvs_cmd_release = { @@ -93,31 +92,6 @@ cvs_release_pre_exec(struct cvsroot *root) return (0); } -/* - * cvs_release_yesno() - * - * Read from standart input for `y' or `Y' character. - * Returns 0 on success, or -1 on failure. - */ -static int -cvs_release_yesno(void) -{ - int c, ret; - - ret = 0; - - fflush(stderr); - fflush(stdout); - - if ((c = getchar()) != 'y' && c != 'Y') - ret = -1; - else - while (c != EOF && c != '\n') - c = getchar(); - - return (ret); -} - /* * cvs_release_dir() * @@ -200,7 +174,7 @@ cvs_release_dir(CVSFILE *cf, void *arg) printf("Are you sure you want to release %sdirectory `%s': ", dflag ? "(and delete) " : "", dpath); - if (cvs_release_yesno() == -1) { /* No */ + if (cvs_yesno() == -1) { /* No */ fprintf(stderr, "** `%s' aborted by user choice.\n", cvs_command); diff --git a/usr.bin/cvs/util.c b/usr.bin/cvs/util.c index 16100f2a327..161e06eb216 100644 --- a/usr.bin/cvs/util.c +++ b/usr.bin/cvs/util.c @@ -1,4 +1,4 @@ -/* $OpenBSD: util.c,v 1.69 2006/01/27 12:56:28 xsa Exp $ */ +/* $OpenBSD: util.c,v 1.70 2006/03/15 19:59:36 niallo Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. @@ -28,9 +28,9 @@ #include "cvs.h" #include "log.h" +#include "util.h" #if !defined(RCSPROG) - /* letter -> mode type map */ static const int cvs_modetypes[26] = { -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, @@ -1018,3 +1018,29 @@ cvs_hack_time(time_t oldtime, int togmt) return (cvs_date_parse(tbuf)); } + +/* + * cvs_yesno() + * + * Read from standart input for `y' or `Y' character. + * Returns 0 on success, or -1 on failure. + */ +int +cvs_yesno(void) +{ + int c, ret; + + ret = 0; + + fflush(stderr); + fflush(stdout); + + if ((c = getchar()) != 'y' && c != 'Y') + ret = -1; + else + while (c != EOF && c != '\n') + c = getchar(); + + return (ret); +} + diff --git a/usr.bin/cvs/util.h b/usr.bin/cvs/util.h new file mode 100644 index 00000000000..9bb8200b286 --- /dev/null +++ b/usr.bin/cvs/util.h @@ -0,0 +1,79 @@ +/* $OpenBSD: util.h,v 1.1 2006/03/15 19:59:36 niallo Exp $ */ +/* + * Copyright (c) 2006 Niall O'Higgins + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef UTIL_H +#define UTIL_H + +#if !defined(RCSPROG) + + +int cvs_readrepo(const char *, char *, size_t); +void cvs_modetostr(mode_t, char *, size_t); +void cvs_strtomode(const char *, mode_t *); +void cvs_splitpath(const char *, char *, size_t, char **); +int cvs_mkadmin(const char *, const char *, const char *, char *, + char *, int); +int cvs_cksum(const char *, char *, size_t); +int cvs_exec(int, char **, int []); +int cvs_getargv(const char *, char **, int); +int cvs_chdir(const char *, int); +int cvs_rename(const char *, const char *); +int cvs_unlink(const char *); +int cvs_rmdir(const char *); +int cvs_create_dir(const char *, int, char *, char *); +char *cvs_rcs_getpath(CVSFILE *, char *, size_t); +char **cvs_makeargv(const char *, int *); +void cvs_freeargv(char **, int); +void cvs_write_tagfile(char *, char *, int); +void cvs_parse_tagfile(char **, char **, int *); +size_t cvs_path_cat(const char *, const char *, char *, size_t); + +#endif /* !RCSPROG */ + +time_t cvs_hack_time(time_t, int); + +struct cvs_line { + char *l_line; + int l_lineno; + TAILQ_ENTRY(cvs_line) l_list; +}; + +TAILQ_HEAD(cvs_tqh, cvs_line); + +struct cvs_lines { + int l_nblines; + char *l_data; + struct cvs_tqh l_lines; +}; + + +BUF *cvs_patchfile(const char *, const char *, + int (*p)(struct cvs_lines *, struct cvs_lines *)); +struct cvs_lines *cvs_splitlines(const char *); +void cvs_freelines(struct cvs_lines *); +int cvs_yesno(void); + +#endif diff --git a/usr.bin/rcs/rcsprog.h b/usr.bin/rcs/rcsprog.h index b336d9413de..672a19fa61c 100644 --- a/usr.bin/rcs/rcsprog.h +++ b/usr.bin/rcs/rcsprog.h @@ -1,4 +1,4 @@ -/* $OpenBSD: rcsprog.h,v 1.38 2006/03/15 03:29:01 ray Exp $ */ +/* $OpenBSD: rcsprog.h,v 1.39 2006/03/15 19:59:37 niallo Exp $ */ /* * Copyright (c) 2005 Joris Vink * All rights reserved. @@ -30,6 +30,7 @@ #include "log.h" #include "rcs.h" #include "worklist.h" +#include "util.h" #include "xmalloc.h" #define RCS_DEFAULT_SUFFIX ",v/" -- cgit v1.2.3