1/*
2 * Copyright (C) 1989-95 GROUPE BULL
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to
6 * deal in the Software without restriction, including without limitation the
7 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8 * sell copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 *
21 * Except as contained in this notice, the name of GROUPE BULL shall not be
22 * used in advertising or otherwise to promote the sale, use or other dealings
23 * in this Software without prior written authorization from GROUPE BULL.
24 */
25
26/*****************************************************************************\
27* misc.c:                                                                     *
28*                                                                             *
29*  XPM library                                                                *
30*  Miscellaneous utilities                                                    *
31*                                                                             *
32*  Developed by Arnaud Le Hors                                                *
33\*****************************************************************************/
34
35#ifdef HAVE_CONFIG_H
36#include <config.h>
37#endif
38#include "XpmI.h"
39
40#ifdef NEED_STRDUP
41/*
42 * in case strdup is not provided by the system here is one
43 * which does the trick
44 */
45char *
46xpmstrdup(char *s1)
47{
48    char *s2;
49    size_t l = strlen(s1) + 1;
50
51    if (s2 = (char *) XpmMalloc(l))
52	strcpy(s2, s1);
53    return s2;
54}
55
56#endif
57
58unsigned int
59xpmatoui(
60    register char	*p,
61    unsigned int	 l,
62    unsigned int	*ui_return)
63{
64    register unsigned int n, i;
65
66    n = 0;
67    for (i = 0; i < l; i++)
68	if (*p >= '0' && *p <= '9')
69	    n = n * 10 + *p++ - '0';
70	else
71	    break;
72
73    if (i != 0 && i == l) {
74	*ui_return = n;
75	return 1;
76    } else
77	return 0;
78}
79
80/*
81 * Function returning a character string related to an error code.
82 */
83char *
84XpmGetErrorString(int errcode)
85{
86    switch (errcode) {
87    case XpmColorError:
88	return ("XpmColorError");
89    case XpmSuccess:
90	return ("XpmSuccess");
91    case XpmOpenFailed:
92	return ("XpmOpenFailed");
93    case XpmFileInvalid:
94	return ("XpmFileInvalid");
95    case XpmNoMemory:
96	return ("XpmNoMemory");
97    case XpmColorFailed:
98	return ("XpmColorFailed");
99    default:
100	return ("Invalid XpmError");
101    }
102}
103
104/*
105 * The following function provides a way to figure out if the linked library is
106 * newer or older than the one with which a program has been first compiled.
107 */
108int
109XpmLibraryVersion(void)
110{
111    return XpmIncludeVersion;
112}
113
114
115/* The following should help people wanting to use their own functions */
116#ifdef XpmFree
117#undef XpmFree
118#endif
119
120void
121XpmFree(void *ptr)
122{
123    free(ptr);
124}
125