1c76ae52dSmrg/*
2c76ae52dSmrg * Copyright © 2000 Keith Packard
3c76ae52dSmrg *
4c76ae52dSmrg * Permission to use, copy, modify, distribute, and sell this software and its
5c76ae52dSmrg * documentation for any purpose is hereby granted without fee, provided that
6c76ae52dSmrg * the above copyright notice appear in all copies and that both that
7c76ae52dSmrg * copyright notice and this permission notice appear in supporting
8c76ae52dSmrg * documentation, and that the name of Keith Packard not be used in
9c76ae52dSmrg * advertising or publicity pertaining to distribution of the software without
10c76ae52dSmrg * specific, written prior permission.  Keith Packard makes no
11c76ae52dSmrg * representations about the suitability of this software for any purpose.  It
12c76ae52dSmrg * is provided "as is" without express or implied warranty.
13c76ae52dSmrg *
14c76ae52dSmrg * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15c76ae52dSmrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16c76ae52dSmrg * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17c76ae52dSmrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18c76ae52dSmrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19c76ae52dSmrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20c76ae52dSmrg * PERFORMANCE OF THIS SOFTWARE.
21c76ae52dSmrg */
22c76ae52dSmrg
23c76ae52dSmrg#include "xftint.h"
24c76ae52dSmrg
252836776bSmrg_X_EXPORT FcPattern
26c76ae52dSmrg*XftNameParse (const char *name)
272836776bSmrg{
28de3c0529Smrg    return FcNameParse ((const FcChar8 *) name);
29c76ae52dSmrg}
30c76ae52dSmrg
31c76ae52dSmrg_X_EXPORT FcBool
32c76ae52dSmrgXftNameUnparse (FcPattern *pat, char *dest, int len)
33c76ae52dSmrg{
34c76ae52dSmrg    FcChar8 *name;
35c76ae52dSmrg
36c76ae52dSmrg    name = FcNameUnparse (pat);
37c76ae52dSmrg    if (!name)
38c76ae52dSmrg	return FcFalse;
39de3c0529Smrg    if (strlen ((char *) name) + 1 > (size_t) len)
40c76ae52dSmrg    {
41c76ae52dSmrg	FcPattern *new = FcPatternDuplicate (pat);
42c76ae52dSmrg	free (name);
43c76ae52dSmrg	FcPatternDel (new, FC_LANG);
44c76ae52dSmrg	FcPatternDel (new, FC_CHARSET);
45c76ae52dSmrg	name = FcNameUnparse (new);
46c76ae52dSmrg	FcPatternDestroy (new);
47c76ae52dSmrg	if (!name)
48c76ae52dSmrg	    return FcFalse;
49de3c0529Smrg	if (strlen ((char *) name) + 1 > (size_t) len)
50c76ae52dSmrg	{
51c76ae52dSmrg	    strncpy (dest, ((char *) name), (size_t) len - 1);
52c76ae52dSmrg	    dest[len - 1] = '\0';
53c76ae52dSmrg	    free (name);
54c76ae52dSmrg	    return FcFalse;
55c76ae52dSmrg	}
56c76ae52dSmrg    }
57c76ae52dSmrg    strcpy (dest, ((char *) name));
58c76ae52dSmrg    free (name);
59c76ae52dSmrg    return FcTrue;
60c76ae52dSmrg}
61