b25888b419
www: http://www.wxwidgets.org/ from Andrew Dalgleish < openbsd at ajd dot net dot au > many thanks for much persistence!
362 lines
15 KiB
Plaintext
362 lines
15 KiB
Plaintext
$OpenBSD: patch-src_motif_xmcombo_xmcombo_c,v 1.1.1.1 2004/07/16 21:01:36 todd Exp $
|
|
--- src/motif/xmcombo/xmcombo.c.orig Sun Sep 22 06:53:58 2002
|
|
+++ src/motif/xmcombo/xmcombo.c Wed Apr 30 15:15:48 2003
|
|
@@ -2224,11 +2224,11 @@ static void MotionVerifyCallback(Widget
|
|
* Bastele einen vollstaendigen Namens- und Klassenbezeichner anhand
|
|
* des angegebenen Widgets zusammen.
|
|
*/
|
|
-static void MakeNameAndClass(Widget w, char *NameBuff, char *ClassBuff)
|
|
+static void MakeNameAndClass(Widget w, char *NameBuff, size_t NameBuffLen, char *ClassBuff, size_t ClassBuffLen)
|
|
{
|
|
Widget Parent = XtParent(w);
|
|
|
|
- if ( Parent ) MakeNameAndClass(Parent, NameBuff, ClassBuff);
|
|
+ if ( Parent ) MakeNameAndClass(Parent, NameBuff, NameBuffLen, ClassBuff, ClassBuffLen);
|
|
if ( XtIsSubclass(w, applicationShellWidgetClass) ) {
|
|
/* Wenn wir ganz oben angekommen sind, holen wir uns den
|
|
* Namen und die Klasse der Applikation selbst und nicht die
|
|
@@ -2237,16 +2237,16 @@ static void MakeNameAndClass(Widget w, c
|
|
String AppName, AppClass;
|
|
XtGetApplicationNameAndClass(
|
|
XtDisplayOfObject(w), &AppName, &AppClass);
|
|
- strcpy(NameBuff, AppName);
|
|
- strcpy(ClassBuff, AppClass);
|
|
+ strlcpy(NameBuff, AppName, NameBuffLen);
|
|
+ strlcpy(ClassBuff, AppClass, ClassBuffLen);
|
|
} else {
|
|
/* Ansonsten sind wir noch mitten irgendwo in der Hierarchie
|
|
* und besorgen uns den Namen und die Klasse dieses Widgets
|
|
*/
|
|
- strcat(NameBuff, ".");
|
|
- strcat(NameBuff, XtName(w));
|
|
- strcat(ClassBuff, ".");
|
|
- strcat(ClassBuff, ((CoreClassRec *) XtClass(w))->core_class.class_name);
|
|
+ strlcat(NameBuff, ".", NameBuffLen);
|
|
+ strlcat(NameBuff, XtName(w), NameBuffLen);
|
|
+ strlcat(ClassBuff, ".", NameBuffLen);
|
|
+ strlcat(ClassBuff, ((CoreClassRec *) XtClass(w))->core_class.class_name, NameBuffLen);
|
|
}
|
|
} /* MakeNameAndClass */
|
|
|
|
@@ -2256,7 +2256,8 @@ static void MakeNameAndClass(Widget w, c
|
|
* noch in das gewuenschte Zielformat konvertiert werden.
|
|
*/
|
|
static Boolean FetchResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
XrmValue *RscValue,
|
|
String *RepresentationType)
|
|
@@ -2265,8 +2266,10 @@ static Boolean FetchResource(Widget w,
|
|
char *EndOfName = FullName + strlen(FullName);
|
|
char *EndOfClass = FullClass + strlen(FullClass);
|
|
|
|
- strcat(FullName, "."); strcat(FullName, RscName);
|
|
- strcat(FullClass, "."); strcat(FullClass, RscClass);
|
|
+ strlcat(FullName, ".", FullNameLen);
|
|
+ strlcat(FullName, RscName, FullNameLen);
|
|
+ strlcat(FullClass, ".", FullClassLen);
|
|
+ strlcat(FullClass, RscClass, FullClassLen);
|
|
ok = XrmGetResource(
|
|
XtDatabase(XtDisplayOfObject(w)),
|
|
FullName, FullClass, RepresentationType, RscValue);
|
|
@@ -2291,14 +2294,15 @@ static Boolean FetchResource(Widget w,
|
|
* String --> KeySym
|
|
*/
|
|
static Boolean FetchIntResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
int *pInt)
|
|
{
|
|
XrmValue RscValue, RscDest;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
RscDest.size = sizeof(int);
|
|
@@ -2311,14 +2315,15 @@ static Boolean FetchIntResource(Widget w
|
|
} /* FetchIntResource */
|
|
|
|
static Boolean FetchShortResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
short *pShort)
|
|
{
|
|
XrmValue RscValue, RscDest;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
RscDest.size = sizeof(short);
|
|
@@ -2331,14 +2336,15 @@ static Boolean FetchShortResource(Widget
|
|
} /* FetchShortResource */
|
|
|
|
static Boolean FetchLabelTypeResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
unsigned char *pUChar)
|
|
{
|
|
XrmValue RscValue;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
if ( strcasecmp((char *) RscValue.addr, "XmPIXMAP") == 0 )
|
|
@@ -2351,14 +2357,15 @@ static Boolean FetchLabelTypeResource(Wi
|
|
} /* FetchLabelTypeResource */
|
|
|
|
static Boolean FetchDimensionResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
Dimension *pDimension)
|
|
{
|
|
XrmValue RscValue, RscDest;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
RscDest.size = sizeof(Dimension);
|
|
@@ -2371,14 +2378,15 @@ static Boolean FetchDimensionResource(Wi
|
|
} /* FetchDimensionResource */
|
|
|
|
static Boolean FetchStringResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
String *pString)
|
|
{
|
|
XrmValue RscValue;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
*pString = (char *) RscValue.addr;
|
|
@@ -2388,14 +2396,15 @@ static Boolean FetchStringResource(Widge
|
|
} /* FetchStringResource */
|
|
|
|
static Boolean FetchKeySymResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
KeySym *pKeySym)
|
|
{
|
|
XrmValue RscValue, RscDest;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
RscDest.size = sizeof(KeySym);
|
|
@@ -2408,14 +2417,15 @@ static Boolean FetchKeySymResource(Widge
|
|
} /* FetchKeySymResource */
|
|
|
|
static Boolean FetchXmStringResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
XmString *pString)
|
|
{
|
|
XrmValue RscValue;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
*pString = XmCvtCTToXmString((char *) RscValue.addr);
|
|
@@ -2425,7 +2435,8 @@ static Boolean FetchXmStringResource(Wid
|
|
} /* FetchXmStringResource */
|
|
|
|
static Boolean FetchXmStringTableResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
XmStringTable *pStringTable,
|
|
int *pTableSize)
|
|
@@ -2435,7 +2446,7 @@ static Boolean FetchXmStringTableResourc
|
|
String TmpList, p, pStart;
|
|
int Entries, Entry;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
/*
|
|
@@ -2474,14 +2485,15 @@ static Boolean FetchXmStringTableResourc
|
|
} /* FetchXmStringTableResource */
|
|
|
|
static Boolean FetchXmFontListResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
XmFontList *pFontList)
|
|
{
|
|
XrmValue RscValue, RscDest;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
RscDest.size = sizeof(XmFontList);
|
|
@@ -2494,14 +2506,15 @@ static Boolean FetchXmFontListResource(W
|
|
} /* FetchXmFontListResource */
|
|
|
|
static Boolean FetchPixmapResource(Widget w,
|
|
- char *FullName, char *FullClass,
|
|
+ char *FullName, size_t FullNameLen,
|
|
+ char *FullClass, size_t FullClassLen,
|
|
char *RscName, char *RscClass,
|
|
Pixmap *pPixmap)
|
|
{
|
|
XrmValue RscValue, RscDest;
|
|
String RepresentationType;
|
|
|
|
- if ( FetchResource(w, FullName, FullClass,
|
|
+ if ( FetchResource(w, FullName, FullNameLen, FullClass, FullClassLen,
|
|
RscName, RscClass,
|
|
&RscValue, &RepresentationType) ) {
|
|
RscDest.size = sizeof(Pixmap);
|
|
@@ -2588,13 +2601,14 @@ static void InitMirrorResources(XmComboB
|
|
int i, size = XtNumber(ResourceMirror);
|
|
|
|
FullName[0] = 0; FullClass[0] = 0;
|
|
- MakeNameAndClass((Widget) w, FullName, FullClass);
|
|
+ MakeNameAndClass((Widget) w, FullName, sizeof(FullName), FullClass, sizeof(FullClass));
|
|
|
|
for ( i=0; i < size; i++ ) {
|
|
switch ( ResourceMirror[i].Converter ) {
|
|
case RInt:
|
|
if ( FetchIntResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AInt) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2602,7 +2616,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RXmItemCount:
|
|
if ( FetchIntResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AInt) && ( AInt != 0) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2610,7 +2625,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RShort:
|
|
if ( FetchShortResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AShort) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2618,7 +2634,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RLType:
|
|
if ( FetchLabelTypeResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AUChar) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2626,7 +2643,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RDimension:
|
|
if ( FetchDimensionResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&ADimension) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2634,7 +2652,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RXmString:
|
|
if ( FetchXmStringResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AXmString) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2642,7 +2661,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RXmStringTable:
|
|
if ( FetchXmStringTableResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AStringTable, &TableSize) ) {
|
|
XtVaSetValues((Widget) w,
|
|
@@ -2652,7 +2672,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RKeySym:
|
|
if ( FetchKeySymResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AKeySym) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2660,7 +2681,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RString:
|
|
if ( FetchStringResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AString) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2668,7 +2690,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RPixmap:
|
|
if ( FetchPixmapResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&APixmap) ) {
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|
|
@@ -2681,7 +2704,8 @@ static void InitMirrorResources(XmComboB
|
|
break;
|
|
case RXmFontList:
|
|
if ( FetchXmFontListResource((Widget) w,
|
|
- FullName, FullClass,
|
|
+ FullName, sizeof(FullName),
|
|
+ FullClass, sizeof(FullClass),
|
|
ResourceMirror[i].Name, ResourceMirror[i].Class,
|
|
&AFontList) )
|
|
XtVaSetValues((Widget) w, ResourceMirror[i].Name,
|