Blame lib/Xm/Xpmmisc.c

Packit b099d7
/* $XConsortium: Xpmmisc.c /main/6 1996/09/20 08:15:37 pascale $ */
Packit b099d7
/*
Packit b099d7
 * Copyright (C) 1989-95 GROUPE BULL
Packit b099d7
 *
Packit b099d7
 * Permission is hereby granted, free of charge, to any person obtaining a copy
Packit b099d7
 * of this software and associated documentation files (the "Software"), to
Packit b099d7
 * deal in the Software without restriction, including without limitation the
Packit b099d7
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
Packit b099d7
 * sell copies of the Software, and to permit persons to whom the Software is
Packit b099d7
 * furnished to do so, subject to the following conditions:
Packit b099d7
 *
Packit b099d7
 * The above copyright notice and this permission notice shall be included in
Packit b099d7
 * all copies or substantial portions of the Software.
Packit b099d7
 *
Packit b099d7
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Packit b099d7
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Packit b099d7
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
Packit b099d7
 * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
Packit b099d7
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
Packit b099d7
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Packit b099d7
 *
Packit b099d7
 * Except as contained in this notice, the name of GROUPE BULL shall not be
Packit b099d7
 * used in advertising or otherwise to promote the sale, use or other dealings
Packit b099d7
 * in this Software without prior written authorization from GROUPE BULL.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*****************************************************************************\
Packit b099d7
* misc.c:                                                                     *
Packit b099d7
*                                                                             *
Packit b099d7
*  XPM library                                                                *
Packit b099d7
*  Miscellaneous utilities                                                    *
Packit b099d7
*                                                                             *
Packit b099d7
*  Developed by Arnaud Le Hors                                                *
Packit b099d7
\*****************************************************************************/
Packit b099d7
Packit b099d7
#ifdef HAVE_CONFIG_H
Packit b099d7
#include <config.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
/* we don't want the XpmFree macro since we define the XpmFree function here */
Packit b099d7
#define NO_XPMFREE_MACRO
Packit b099d7
#include "XpmI.h"
Packit b099d7
Packit b099d7
#ifdef NEED_STRDUP
Packit b099d7
/*
Packit b099d7
 * in case strdup is not provided by the system here is one
Packit b099d7
 * which does the trick
Packit b099d7
 */
Packit b099d7
char *
Packit b099d7
xpmstrdup(s1)
Packit b099d7
    char *s1;
Packit b099d7
{
Packit b099d7
    char *s2;
Packit b099d7
    size_t l = strlen(s1) + 1;
Packit b099d7
Packit b099d7
    if (s2 = (char *) XpmMalloc(l))
Packit b099d7
	strcpy(s2, s1);
Packit b099d7
    return s2;
Packit b099d7
}
Packit b099d7
Packit b099d7
#endif
Packit b099d7
Packit b099d7
unsigned int
Packit b099d7
xpmatoui(p, l, ui_return)
Packit b099d7
    register char *p;
Packit b099d7
    unsigned int l;
Packit b099d7
    unsigned int *ui_return;
Packit b099d7
{
Packit b099d7
    register unsigned int n, i;
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    for (i = 0; i < l; i++)
Packit b099d7
	if (*p >= '0' && *p <= '9')
Packit b099d7
	    n = n * 10 + *p++ - '0';
Packit b099d7
	else
Packit b099d7
	    break;
Packit b099d7
Packit b099d7
    if (i != 0 && i == l) {
Packit b099d7
	*ui_return = n;
Packit b099d7
	return 1;
Packit b099d7
    } else
Packit b099d7
	return 0;
Packit b099d7
}
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Function returning a character string related to an error code.
Packit b099d7
 */
Packit b099d7
char *
Packit b099d7
XpmGetErrorString(errcode)
Packit b099d7
    int errcode;
Packit b099d7
{
Packit b099d7
    switch (errcode) {
Packit b099d7
    case XpmColorError:
Packit b099d7
	return ("XpmColorError");
Packit b099d7
    case XpmSuccess:
Packit b099d7
	return ("XpmSuccess");
Packit b099d7
    case XpmOpenFailed:
Packit b099d7
	return ("XpmOpenFailed");
Packit b099d7
    case XpmFileInvalid:
Packit b099d7
	return ("XpmFileInvalid");
Packit b099d7
    case XpmNoMemory:
Packit b099d7
	return ("XpmNoMemory");
Packit b099d7
    case XpmColorFailed:
Packit b099d7
	return ("XpmColorFailed");
Packit b099d7
    default:
Packit b099d7
	return ("Invalid XpmError");
Packit b099d7
    }
Packit b099d7
}
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The following function provides a way to figure out if the linked library is
Packit b099d7
 * newer or older than the one with which a program has been first compiled.
Packit b099d7
 */
Packit b099d7
int
Packit b099d7
XpmLibraryVersion()
Packit b099d7
{
Packit b099d7
    return XpmIncludeVersion;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/* The following should help people wanting to use their own functions */
Packit b099d7
void
Packit b099d7
XpmFree(ptr)
Packit b099d7
    void *ptr;
Packit b099d7
{
Packit b099d7
    free(ptr);
Packit b099d7
}