1*0fcddf58Sotto /* $OpenBSD: util.h,v 1.31 2017/08/28 19:33:20 otto Exp $ */ 2c6d0517eSniallo /* 3c6d0517eSniallo * Copyright (c) 2006 Niall O'Higgins <niallo@openbsd.org> 4c6d0517eSniallo * All rights reserved. 5c6d0517eSniallo * 6c6d0517eSniallo * Redistribution and use in source and binary forms, with or without 7c6d0517eSniallo * modification, are permitted provided that the following conditions 8c6d0517eSniallo * are met: 9c6d0517eSniallo * 10c6d0517eSniallo * 1. Redistributions of source code must retain the above copyright 11c6d0517eSniallo * notice, this list of conditions and the following disclaimer. 12c6d0517eSniallo * 2. The name of the author may not be used to endorse or promote products 13c6d0517eSniallo * derived from this software without specific prior written permission. 14c6d0517eSniallo * 15c6d0517eSniallo * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 16c6d0517eSniallo * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 17c6d0517eSniallo * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 18c6d0517eSniallo * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19c6d0517eSniallo * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20c6d0517eSniallo * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 21c6d0517eSniallo * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22c6d0517eSniallo * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23c6d0517eSniallo * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24c6d0517eSniallo * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25c6d0517eSniallo */ 26c6d0517eSniallo 27c6d0517eSniallo #ifndef UTIL_H 28c6d0517eSniallo #define UTIL_H 29c6d0517eSniallo 306ac6a1c7Sjoris void cvs_get_repository_path(const char *, char *, size_t); 316ac6a1c7Sjoris void cvs_get_repository_name(const char *, char *, size_t); 32c6d0517eSniallo void cvs_modetostr(mode_t, char *, size_t); 33c6d0517eSniallo void cvs_strtomode(const char *, mode_t *); 342dec954eStobias void cvs_mkadmin(const char *, const char *, const char *, char *, char *); 355dd120b0Sjoris void cvs_mkpath(const char *, char *); 360f651f47Snicm void cvs_mkdir(const char *, mode_t); 37c6d0517eSniallo int cvs_getargv(const char *, char **, int); 38c6d0517eSniallo int cvs_chdir(const char *, int); 39c6d0517eSniallo int cvs_rename(const char *, const char *); 40c6d0517eSniallo int cvs_unlink(const char *); 41c6d0517eSniallo int cvs_rmdir(const char *); 42c6d0517eSniallo char **cvs_makeargv(const char *, int *); 43c6d0517eSniallo void cvs_freeargv(char **, int); 44*0fcddf58Sotto int cvs_exec(char *, char *, int); 457fbffbd7Sjoris u_int cvs_revision_select(RCSFILE *, char *); 467fbffbd7Sjoris 477bb3ddb0Sray struct rcs_line { 485e4c4390Stobias struct rcs_delta *l_delta; 4990fdc30cSotto u_char *l_line; 5031cfd684Sniallo size_t l_len; 51c6d0517eSniallo int l_lineno; 525e4c4390Stobias int l_lineno_orig; 530951efdeSniallo int l_needsfree; 547bb3ddb0Sray TAILQ_ENTRY(rcs_line) l_list; 55c6d0517eSniallo }; 56c6d0517eSniallo 577bb3ddb0Sray TAILQ_HEAD(tqh, rcs_line); 58c6d0517eSniallo 597bb3ddb0Sray struct rcs_lines { 60c6d0517eSniallo int l_nblines; 617a9e6d11Sray struct tqh l_lines; 62c6d0517eSniallo }; 63c6d0517eSniallo 64948d9c85Spat struct cvs_argvector { 65948d9c85Spat char *str; 66948d9c85Spat char **argv; 67948d9c85Spat }; 68c6d0517eSniallo 697bb3ddb0Sray struct rcs_lines *cvs_splitlines(u_char *, size_t); 707bb3ddb0Sray void cvs_freelines(struct rcs_lines *); 71948d9c85Spat struct cvs_argvector *cvs_strsplit(char *, const char *); 72948d9c85Spat void cvs_argv_destroy(struct cvs_argvector *); 73633f4b90Sxsa int cvs_yesno(void); 74c6d0517eSniallo 75477497b8Sxsa #endif /* UTIL_H */ 76