1 /* $OpenBSD: util.h,v 1.15 2007/01/26 11:19:44 joris Exp $ */ 2 /* 3 * Copyright (c) 2006 Niall O'Higgins <niallo@openbsd.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. The name of the author may not be used to endorse or promote products 13 * derived from this software without specific prior written permission. 14 * 15 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 16 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 17 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 18 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 21 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27 #ifndef UTIL_H 28 #define UTIL_H 29 30 void cvs_get_repository_path(const char *, char *, size_t); 31 void cvs_get_repository_name(const char *, char *, size_t); 32 void cvs_modetostr(mode_t, char *, size_t); 33 void cvs_strtomode(const char *, mode_t *); 34 void cvs_splitpath(const char *, char *, size_t, char **); 35 void cvs_mkadmin(const char *, const char *, const char *, 36 char *, char *, int); 37 void cvs_mkpath(const char *); 38 int cvs_cksum(const char *, char *, size_t); 39 int cvs_exec(int, char **); 40 int cvs_getargv(const char *, char **, int); 41 int cvs_chdir(const char *, int); 42 int cvs_rename(const char *, const char *); 43 int cvs_unlink(const char *); 44 int cvs_rmdir(const char *); 45 char **cvs_makeargv(const char *, int *); 46 void cvs_freeargv(char **, int); 47 size_t cvs_path_cat(const char *, const char *, char *, size_t); 48 u_int cvs_revision_select(RCSFILE *, char *); 49 50 struct cvs_line { 51 char *l_line; 52 size_t l_len; 53 int l_lineno; 54 int l_needsfree; 55 TAILQ_ENTRY(cvs_line) l_list; 56 }; 57 58 TAILQ_HEAD(cvs_tqh, cvs_line); 59 60 struct cvs_lines { 61 int l_nblines; 62 struct cvs_tqh l_lines; 63 }; 64 65 struct cvs_argvector { 66 char *str; 67 char **argv; 68 }; 69 70 BUF *cvs_patchfile(const u_char *, size_t, const u_char *, 71 size_t, int (*p)(struct cvs_lines *, 72 struct cvs_lines *)); 73 struct cvs_lines *cvs_splitlines(const u_char *, size_t); 74 void cvs_freelines(struct cvs_lines *); 75 struct cvs_argvector *cvs_strsplit(char *, const char *); 76 void cvs_argv_destroy(struct cvs_argvector *); 77 int cvs_yesno(void); 78 79 #endif /* UTIL_H */ 80