summaryrefslogtreecommitdiff
path: root/src/StrToGrav.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/StrToGrav.c')
-rw-r--r--src/StrToGrav.c97
1 files changed, 72 insertions, 25 deletions
diff --git a/src/StrToGrav.c b/src/StrToGrav.c
index 7f74745..7ccb04a 100644
--- a/src/StrToGrav.c
+++ b/src/StrToGrav.c
@@ -25,13 +25,18 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/Xmu/StrToGrav.c,v 1.7 2001/12/14 19:55:52 dawes Exp $ */
#include <X11/Intrinsic.h>
#include <X11/Xmu/Converters.h>
+#include <X11/Xmu/CharSet.h>
#define done(address, type) \
- { (*toVal).size = sizeof(type); (*toVal).addr = (XPointer) address; }
+{ (*toVal).size = sizeof(type); (*toVal).addr = (XPointer) address; }
+/*
+ * Initialization
+ */
static struct _namepair {
XrmQuark quark;
char *name;
@@ -58,44 +63,86 @@ static struct _namepair {
/*
* This function is deprecated as of the addition of
- * XtCvtStringToGravity in R6.
+ * XtCvtStringToGravity in R6
*/
-
-void XmuCvtStringToGravity (args, num_args, fromVal, toVal)
- XrmValuePtr args;
- Cardinal *num_args;
- XrmValuePtr fromVal;
- XrmValuePtr toVal;
+void
+XmuCvtStringToGravity(XrmValuePtr args, Cardinal *num_args,
+ XrmValuePtr fromVal, XrmValuePtr toVal)
{
- static Boolean haveQuarks = FALSE;
- char lowerName[40];
+ static Boolean haveQuarks = False;
+ char name[10];
XrmQuark q;
- char *s;
struct _namepair *np;
if (*num_args != 0)
XtWarningMsg("wrongParameters","cvtStringToGravity","XtToolkitError",
"String to Gravity conversion needs no extra arguments",
- (String *) NULL, (Cardinal *)NULL);
+ (String *)NULL, (Cardinal *)NULL);
- if (!haveQuarks) {
- for (np = names; np->name; np++) {
- np->quark = XrmPermStringToQuark (np->name);
- }
- haveQuarks = TRUE;
+ if (!haveQuarks)
+ {
+ for (np = names; np->name; np++)
+ np->quark = XrmPermStringToQuark(np->name);
+ haveQuarks = True;
}
- s = (char *) fromVal->addr;
- if (strlen(s) < sizeof lowerName) {
- XmuCopyISOLatin1Lowered (lowerName, s);
- q = XrmStringToQuark (lowerName);
+ XmuNCopyISOLatin1Lowered(name, (char *)fromVal->addr, sizeof(name));
+ q = XrmStringToQuark(name);
- for (np = names; np->name; np++) {
- if (np->quark == q) {
- done (&np->gravity, XtGravity);
+ for (np = names; np->name; np++)
+ {
+ if (np->quark == q)
+ {
+ done(&np->gravity, XtGravity);
return;
}
}
+
+ XtStringConversionWarning((char *)fromVal->addr, XtRGravity);
+}
+
+/*ARGSUSED*/
+Boolean
+XmuCvtGravityToString(Display *dpy, XrmValue *args, Cardinal *num_args,
+ XrmValue *fromVal, XrmValue *toVal, XtPointer *data)
+{
+ static char *buffer;
+ Cardinal size;
+ struct _namepair *np;
+ XtGravity gravity;
+
+ gravity = *(XtGravity *)fromVal->addr;
+ buffer = NULL;
+ for (np = names; np->name; np++)
+ if (np->gravity == gravity)
+ {
+ buffer = np->name;
+ break;
+ }
+
+ if (!buffer)
+ {
+ XtAppWarning(XtDisplayToApplicationContext(dpy),
+ "Cannot convert Gravity to String");
+ toVal->addr = NULL;
+ toVal->size = 0;
+
+ return (False);
+ }
+
+ size = strlen(buffer) + 1;
+ if (toVal->addr != NULL)
+ {
+ if (toVal->size <= size)
+ {
+ toVal->size = size;
+ return (False);
+ }
+ strcpy((char *)toVal->addr, buffer);
}
- XtStringConversionWarning((char *) fromVal->addr, XtRGravity);
+ else
+ toVal->addr = (XPointer)buffer;
+ toVal->size = size;
+
+ return (True);
}