00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <stdio.h>
00031 #include <X11/Intrinsic.h>
00032 #include <X11/Xmu/SysUtil.h>
00033 #include <X11/Xmu/Converters.h>
00034
00035 void
00036 XmuCvtStringToLong(XrmValuePtr args, Cardinal *num_args,
00037 XrmValuePtr fromVal, XrmValuePtr toVal)
00038 {
00039 static long l;
00040
00041 if (*num_args != 0)
00042 XtWarning("String to Long conversion needs no extra arguments");
00043 if (sscanf((char *)fromVal->addr, "%ld", &l) == 1)
00044 {
00045 toVal->size = sizeof(long);
00046 toVal->addr = (XPointer)&l;
00047 }
00048 else
00049 XtStringConversionWarning((char *)fromVal->addr, XtRLong);
00050 }
00051
00052
00053 Boolean
00054 XmuCvtLongToString(Display *dpy, XrmValuePtr args, Cardinal *num_args,
00055 XrmValuePtr fromVal, XrmValuePtr toVal, XtPointer *data)
00056 {
00057 static char buffer[32];
00058 size_t size;
00059
00060 if (*num_args != 0)
00061 XtWarning("Long to String conversion needs no extra arguments");
00062
00063 XmuSnprintf(buffer, sizeof(buffer), "%ld", *(long *)fromVal->addr);
00064
00065 size = strlen(buffer) + 1;
00066 if (toVal->addr != NULL)
00067 {
00068 if (toVal->size < size)
00069 {
00070 toVal->size = size;
00071 return (False);
00072 }
00073 strcpy((char *)toVal->addr, buffer);
00074 }
00075 else
00076 toVal->addr = (XPointer)buffer;
00077 toVal->size = sizeof(String);
00078
00079 return (True);
00080 }