1 /* $OpenBSD: util.h,v 1.8 2006/05/28 21:34:37 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 void cvs_mkpath(const char *); 37 int cvs_cksum(const char *, char *, size_t); 38 int cvs_exec(int, char **, int []); 39 int cvs_getargv(const char *, char **, int); 40 int cvs_chdir(const char *, int); 41 int cvs_rename(const char *, const char *); 42 int cvs_unlink(const char *); 43 int cvs_rmdir(const char *); 44 char **cvs_makeargv(const char *, int *); 45 void cvs_freeargv(char **, int); 46 void cvs_write_tagfile(char *, char *, int); 47 void cvs_parse_tagfile(char **, char **, int *); 48 size_t cvs_path_cat(const char *, const char *, char *, size_t); 49 time_t cvs_hack_time(time_t, int); 50 51 u_int cvs_revision_select(RCSFILE *, char *); 52 53 struct cvs_line { 54 char *l_line; 55 int l_lineno; 56 TAILQ_ENTRY(cvs_line) l_list; 57 }; 58 59 TAILQ_HEAD(cvs_tqh, cvs_line); 60 61 struct cvs_lines { 62 int l_nblines; 63 char *l_data; 64 struct cvs_tqh l_lines; 65 }; 66 67 struct cvs_argvector { 68 char *str; 69 char **argv; 70 }; 71 72 BUF *cvs_patchfile(const char *, const char *, 73 int (*p)(struct cvs_lines *, struct cvs_lines *)); 74 struct cvs_lines *cvs_splitlines(const char *); 75 void cvs_freelines(struct cvs_lines *); 76 struct cvs_argvector *cvs_strsplit(char *, const char *); 77 78 void cvs_argv_destroy(struct cvs_argvector *); 79 80 #endif /* UTIL_H */ 81