1*86d7f5d3SJohn Marino /*	$NetBSD: lvm-string.h,v 1.1.1.1 2008/12/22 00:18:13 haad Exp $	*/
2*86d7f5d3SJohn Marino 
3*86d7f5d3SJohn Marino /*
4*86d7f5d3SJohn Marino  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
5*86d7f5d3SJohn Marino  * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
6*86d7f5d3SJohn Marino  *
7*86d7f5d3SJohn Marino  * This file is part of LVM2.
8*86d7f5d3SJohn Marino  *
9*86d7f5d3SJohn Marino  * This copyrighted material is made available to anyone wishing to use,
10*86d7f5d3SJohn Marino  * modify, copy, or redistribute it subject to the terms and conditions
11*86d7f5d3SJohn Marino  * of the GNU Lesser General Public License v.2.1.
12*86d7f5d3SJohn Marino  *
13*86d7f5d3SJohn Marino  * You should have received a copy of the GNU Lesser General Public License
14*86d7f5d3SJohn Marino  * along with this program; if not, write to the Free Software Foundation,
15*86d7f5d3SJohn Marino  * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16*86d7f5d3SJohn Marino  */
17*86d7f5d3SJohn Marino 
18*86d7f5d3SJohn Marino #ifndef _LVM_STRING_H
19*86d7f5d3SJohn Marino #define _LVM_STRING_H
20*86d7f5d3SJohn Marino 
21*86d7f5d3SJohn Marino #include <stdio.h>
22*86d7f5d3SJohn Marino #include <stdarg.h>
23*86d7f5d3SJohn Marino 
24*86d7f5d3SJohn Marino #define NAME_LEN 128
25*86d7f5d3SJohn Marino 
26*86d7f5d3SJohn Marino struct pool;
27*86d7f5d3SJohn Marino 
28*86d7f5d3SJohn Marino int emit_to_buffer(char **buffer, size_t *size, const char *fmt, ...)
29*86d7f5d3SJohn Marino   __attribute__ ((format(printf, 3, 4)));
30*86d7f5d3SJohn Marino 
31*86d7f5d3SJohn Marino char *build_dm_name(struct dm_pool *mem, const char *vg,
32*86d7f5d3SJohn Marino                     const char *lv, const char *layer);
33*86d7f5d3SJohn Marino 
34*86d7f5d3SJohn Marino int validate_name(const char *n);
35*86d7f5d3SJohn Marino 
36*86d7f5d3SJohn Marino /*
37*86d7f5d3SJohn Marino  * Returns number of occurrences of c in first len characters of str.
38*86d7f5d3SJohn Marino  */
39*86d7f5d3SJohn Marino unsigned count_chars(const char *str, size_t len, const int c);
40*86d7f5d3SJohn Marino 
41*86d7f5d3SJohn Marino /*
42*86d7f5d3SJohn Marino  * Returns what length of escaped string would be including terminating NUL.
43*86d7f5d3SJohn Marino  */
44*86d7f5d3SJohn Marino size_t escaped_len(const char *str);
45*86d7f5d3SJohn Marino 
46*86d7f5d3SJohn Marino /*
47*86d7f5d3SJohn Marino  * Copies a string from src to out.
48*86d7f5d3SJohn Marino  * Double quotation marks and backslashes are quoted with a backslash.
49*86d7f5d3SJohn Marino  * Caller must ensure *out has enough space - see escaped_len().
50*86d7f5d3SJohn Marino  * Returns *out.
51*86d7f5d3SJohn Marino  */
52*86d7f5d3SJohn Marino char *escape_double_quotes(char *out, const char *src);
53*86d7f5d3SJohn Marino 
54*86d7f5d3SJohn Marino /*
55*86d7f5d3SJohn Marino  * Removes quoting of double quotation marks and backslashes in situ.
56*86d7f5d3SJohn Marino  */
57*86d7f5d3SJohn Marino void unescape_double_quotes(char *src);
58*86d7f5d3SJohn Marino 
59*86d7f5d3SJohn Marino #endif
60