1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-02-13 03:32:24 +00:00

dtstyle: fix bugs preventing SM save from working properly

All of the dtstyle session save routines used sprintf/snprintf whereby
the destination buffer was also a source buffer, like so:

snprintf(bufr, sizeof(style.tmpBigStr), "%s*Fonts.x: %d\n", bufr, x);
         ^^^^                            ^^                 ^^^^

That results in undefined behavior, which mainly meant missing or
currupted XRM resources being saved in the session file for dtstyle.
This commit is contained in:
Jon Trulson 2022-02-26 15:09:43 -07:00
parent a52f988e47
commit 383b5e4b59
14 changed files with 124 additions and 108 deletions

View file

@ -691,7 +691,7 @@ saveAudio(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -702,6 +702,8 @@ saveAudio(
else else
sprintf(bufr, "*audioDlg.ismapped: False\n"); sprintf(bufr, "*audioDlg.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.audioDialog)); x = XtX(XtParent(style.audioDialog));
y = XtY(XtParent(style.audioDialog)); y = XtY(XtParent(style.audioDialog));
@ -714,11 +716,12 @@ saveAudio(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(style.tmpBigStr), "%s*audioDlg.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*audioDlg.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*audioDlg.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
if(-1 == write (fd, bufr, strlen(bufr))) {
perror(strerror(errno)); snprintf(bufr, sizeof(bufr), "*audioDlg.y: %d\n", y);
} WRITE_STR2FD(fd, bufr);
} }
} }

View file

@ -1210,7 +1210,7 @@ saveBackdrop(
{ {
Position x,y; Position x,y;
Dimension width, height; Dimension width, height;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -1221,6 +1221,8 @@ saveBackdrop(
else else
sprintf(bufr, "*backdropsDialog.ismapped: False\n"); sprintf(bufr, "*backdropsDialog.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX (XtParent(style.backdropDialog)); x = XtX (XtParent(style.backdropDialog));
y = XtY (XtParent(style.backdropDialog)); y = XtY (XtParent(style.backdropDialog));
@ -1235,17 +1237,20 @@ saveBackdrop(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, 1024, "%s*backdropsDialog.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*backdropsDialog.x: %d\n", x);
snprintf(bufr, 1024, "%s*backdropsDialog.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, 1024, "%s*backdropsDialog.width: %d\n", bufr, width); snprintf(bufr, sizeof(bufr), "*backdropsDialog.y: %d\n", y);
snprintf(bufr, 1024, "%s*backdropsDialog.height: %d\n", bufr, height); WRITE_STR2FD(fd, bufr);
snprintf(bufr, 1024, "%s*backdropsDialog.selectedItemNum: %d\n", bufr, snprintf(bufr, sizeof(bufr), "*backdropsDialog.width: %d\n", width);
backdrops.selected); WRITE_STR2FD(fd, bufr);
snprintf(bufr, 1024, "%s*backdropsDialog.selectedItem: %s\n", bufr, snprintf(bufr, sizeof(bufr), "*backdropsDialog.height: %d\n", height);
backdrops.bitmapNames[backdrops.selected]); WRITE_STR2FD(fd, bufr);
if(-1 == write (fd, bufr, strlen(bufr))) { snprintf(bufr, sizeof(bufr), "*backdropsDialog.selectedItemNum: %d\n",
perror(strerror(errno)); backdrops.selected);
} WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(bufr), "*backdropsDialog.selectedItem: %s\n",
backdrops.bitmapNames[backdrops.selected]);
WRITE_STR2FD(fd, bufr);
} }
} }

View file

@ -1707,7 +1707,7 @@ saveColorEdit(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -1717,6 +1717,7 @@ saveColorEdit(
sprintf(bufr, "*colorEditDlg.ismapped: True\n"); sprintf(bufr, "*colorEditDlg.ismapped: True\n");
else else
sprintf(bufr, "*colorEditDlg.ismapped: False\n"); sprintf(bufr, "*colorEditDlg.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(edit.DialogShell)); x = XtX(XtParent(edit.DialogShell));
@ -1730,12 +1731,11 @@ saveColorEdit(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(style.tmpBigStr), "%s*colorEditDlg.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*colorEditDlg.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*colorEditDlg.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(bufr), "*colorEditDlg.y: %d\n", y);
WRITE_STR2FD(fd, bufr);
/*any other parameter you want to save goes here*/ /*any other parameter you want to save goes here*/
if(-1 == write (fd, bufr, strlen(bufr))) {
perror(strerror(errno));
}
} }
} }

View file

@ -2432,7 +2432,7 @@ saveColor(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -2443,6 +2443,8 @@ saveColor(
else else
sprintf(bufr, "*paletteDlg.ismapped: False\n"); sprintf(bufr, "*paletteDlg.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.colorDialog)); x = XtX(XtParent(style.colorDialog));
y = XtY(XtParent(style.colorDialog)); y = XtY(XtParent(style.colorDialog));
@ -2455,15 +2457,16 @@ saveColor(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(style.tmpBigStr), "%s*paletteDlg.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*paletteDlg.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*paletteDlg.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*paletteDlg.selected_palette: %s\n", bufr, snprintf(bufr, sizeof(bufr), "*paletteDlg.y: %d\n", y);
pCurrentPalette->name); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*paletteDlg.selected_button: %d\n", bufr, snprintf(bufr, sizeof(bufr), "*paletteDlg.selected_palette: %s\n",
selected_button); pCurrentPalette->name);
if(-1 == write (fd, bufr, strlen(bufr))) { WRITE_STR2FD(fd, bufr);
perror(strerror(errno)); snprintf(bufr, sizeof(bufr), "*paletteDlg.selected_button: %d\n",
} selected_button);
WRITE_STR2FD(fd, bufr);
} }
} }

View file

@ -956,7 +956,7 @@ saveDtwm(
{ {
Position x,y; Position x,y;
Dimension width, height; Dimension width, height;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -967,6 +967,8 @@ saveDtwm(
else else
sprintf(bufr, "*dtwmDlg.ismapped: False\n"); sprintf(bufr, "*dtwmDlg.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.dtwmDialog)); x = XtX(XtParent(style.dtwmDialog));
y = XtY(XtParent(style.dtwmDialog)); y = XtY(XtParent(style.dtwmDialog));
@ -982,13 +984,14 @@ saveDtwm(
width = XtWidth(style.dtwmDialog); width = XtWidth(style.dtwmDialog);
height = XtHeight(style.dtwmDialog); height = XtHeight(style.dtwmDialog);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*dtwmDlg.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*dtwmDlg.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*dtwmDlg.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*dtwmDlg.width: %d\n", bufr, width); snprintf(bufr, sizeof(bufr), "*dtwmDlg.y: %d\n", y);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*dtwmDlg.height: %d\n", bufr, height); WRITE_STR2FD(fd, bufr);
if(-1 == write (fd, bufr, strlen(bufr))) { snprintf(bufr, sizeof(bufr), "*dtwmDlg.width: %d\n", width);
perror(strerror(errno)); WRITE_STR2FD(fd, bufr);
} snprintf(bufr, sizeof(bufr), "*dtwmDlg.height: %d\n", height);
WRITE_STR2FD(fd, bufr);
} }
} }

View file

@ -726,12 +726,12 @@ restoreFonts(
* restoreFonts. The suggested minimum is whether you are mapped, and your * restoreFonts. The suggested minimum is whether you are mapped, and your
* location. * location.
************************************************************************/ ************************************************************************/
void void
saveFonts( saveFonts(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -741,6 +741,8 @@ saveFonts(
else else
sprintf(bufr, "*Fonts.ismapped: False\n"); sprintf(bufr, "*Fonts.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.fontDialog)); x = XtX(XtParent(style.fontDialog));
@ -754,12 +756,10 @@ saveFonts(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(style.tmpBigStr), "%s*Fonts.x: %d\n", bufr, x); snprintf(bufr, sizeof(style.tmpBigStr), "*Fonts.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*Fonts.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(style.tmpBigStr), "*Fonts.y: %d\n", y);
if(-1 == write (fd, bufr, strlen(bufr))) { WRITE_STR2FD(fd, bufr);
perror(strerror(errno));
}
} }
} }

View file

@ -1178,7 +1178,7 @@ saveI18n(
{ {
Position x,y; Position x,y;
Dimension width, height; Dimension width, height;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -1189,6 +1189,8 @@ saveI18n(
else else
sprintf(bufr, "*i18nDlg.ismapped: False\n"); sprintf(bufr, "*i18nDlg.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.i18nDialog)); x = XtX(XtParent(style.i18nDialog));
y = XtY(XtParent(style.i18nDialog)); y = XtY(XtParent(style.i18nDialog));
@ -1204,13 +1206,14 @@ saveI18n(
width = XtWidth(style.i18nDialog); width = XtWidth(style.i18nDialog);
height = XtHeight(style.i18nDialog); height = XtHeight(style.i18nDialog);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*i18nDlg.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*i18nDlg.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*i18nDlg.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*i18nDlg.width: %d\n", bufr, width); snprintf(bufr, sizeof(bufr), "*i18nDlg.y: %d\n", y);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*i18nDlg.height: %d\n", bufr, height); WRITE_STR2FD(fd, bufr);
if(-1 == write (fd, bufr, strlen(bufr))) { snprintf(bufr, sizeof(bufr), "*i18nDlg.width: %d\n", width);
perror(strerror(errno)); WRITE_STR2FD(fd, bufr);
} snprintf(bufr, sizeof(bufr), "*i18nDlg.height: %d\n", height);
WRITE_STR2FD(fd, bufr);
} }
} }

View file

@ -610,7 +610,7 @@ saveKeybd(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -621,6 +621,8 @@ saveKeybd(
else else
sprintf(bufr, "*keyboardDlg.ismapped: False\n"); sprintf(bufr, "*keyboardDlg.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.kbdDialog)); x = XtX(XtParent(style.kbdDialog));
y = XtY(XtParent(style.kbdDialog)); y = XtY(XtParent(style.kbdDialog));
@ -633,12 +635,10 @@ saveKeybd(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(style.tmpBigStr), "%s*keyboardDlg.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*keyboardDlg.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*keyboardDlg.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(bufr), "*keyboardDlg.y: %d\n", y);
if(-1 == write (fd, bufr, strlen(bufr))) { WRITE_STR2FD(fd, bufr);
perror(strerror(errno));
}
} }
} }

View file

@ -272,6 +272,12 @@ extern void LoadDatabase(void);
string string
#endif #endif
// JET - helper for writing strings to an FD
#define WRITE_STR2FD(fd, str) { \
if (write ((fd), (str), strlen((str))) == -1) \
perror(strerror(errno)); \
}
#endif /* _main_h */ #endif /* _main_h */
/* DON'T ADD ANYTHING AFTER THIS #endif */ /* DON'T ADD ANYTHING AFTER THIS #endif */

View file

@ -775,21 +775,22 @@ saveMain(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
if (style.mainWindow != NULL) { if (style.mainWindow != NULL) {
if (XtIsRealized(style.mainWindow)) if (XtIsRealized(style.mainWindow))
{
sprintf(bufr, "*mainWindow.ismapped: True\n"); sprintf(bufr, "*mainWindow.ismapped: True\n");
WRITE_STR2FD(fd, bufr);
}
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.mainWindow)); x = XtX(XtParent(style.mainWindow));
y = XtY(XtParent(style.mainWindow)); y = XtY(XtParent(style.mainWindow));
snprintf(bufr, sizeof(style.tmpBigStr), "%s*mainWindow.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*mainWindow.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*mainWindow.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(bufr), "*mainWindow.y: %d\n", y);
if(-1 == write (fd, bufr, strlen(bufr))) { WRITE_STR2FD(fd, bufr);
perror(strerror(errno));
}
} }
} }

View file

@ -1750,17 +1750,19 @@ saveMouse(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
if (style.mouseDialog != NULL) if (style.mouseDialog != NULL)
{ {
if (XtIsManaged(style.mouseDialog)) if (XtIsManaged(style.mouseDialog))
sprintf(bufr, "*Mouse.ismapped: True\n"); sprintf(bufr, "*Mouse.ismapped: True\n");
else else
sprintf(bufr, "*Mouse.ismapped: False\n"); sprintf(bufr, "*Mouse.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.mouseDialog)); x = XtX(XtParent(style.mouseDialog));
y = XtY(XtParent(style.mouseDialog)); y = XtY(XtParent(style.mouseDialog));
@ -1773,12 +1775,10 @@ saveMouse(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(style.tmpBigStr), "%s*Mouse.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*Mouse.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*Mouse.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(bufr), "*Mouse.y: %d\n", y);
if(-1 == write (fd, bufr, strlen(bufr))) { WRITE_STR2FD(fd, bufr);
perror(strerror(errno));
}
} }
} }

View file

@ -102,21 +102,13 @@ saveSessionCB(
unsigned char *data = NULL; unsigned char *data = NULL;
char *tmpStr; char *tmpStr;
#ifdef _SUN_OS
char *noCommands = NULL;
#endif /* _SUN_OS */
/* get the root window property of SaveMode */ /* get the root window property of SaveMode */
GetSessionSaveMode(&data ); GetSessionSaveMode(&data);
/* if the property is "home" don't save dtstyle */ /* if the property is "home" don't save dtstyle */
if(strcmp((char *)data, "home") == 0) if(strcmp((char *)data, "home") == 0)
{ {
#ifdef _SUN_OS /* Sun doesn't like "NULL" when expecting "char **" */
XSetCommand(style.display, XtWindow(w), &noCommands, 0);
#else
XSetCommand(style.display, XtWindow(w), NULL, 0); XSetCommand(style.display, XtWindow(w), NULL, 0);
#endif /* _SUN_OS */
return; return;
} }
@ -151,7 +143,7 @@ saveSessionCB(
saveDtwm(fd); saveDtwm(fd);
saveStartup(fd); saveStartup(fd);
saveI18n(fd); saveI18n(fd);
close (fd); close (fd);
/*If this is a session manager requested saveYrSlf, need to put dialogs in*/ /*If this is a session manager requested saveYrSlf, need to put dialogs in*/

View file

@ -2899,7 +2899,7 @@ saveScreen(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -2910,6 +2910,8 @@ saveScreen(
else else
sprintf(bufr, "*Screen.ismapped: False\n"); sprintf(bufr, "*Screen.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.screenDialog)); x = XtX(XtParent(style.screenDialog));
y = XtY(XtParent(style.screenDialog)); y = XtY(XtParent(style.screenDialog));
@ -2921,12 +2923,10 @@ saveScreen(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(style.tmpBigStr), "%s*Screen.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*Screen.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*Screen.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(bufr), "*Screen.y: %d\n", y);
if(-1 == write (fd, bufr, strlen(bufr))) { WRITE_STR2FD(fd, bufr);
perror(strerror(errno));
}
} }
} }

View file

@ -703,7 +703,7 @@ saveStartup(
int fd ) int fd )
{ {
Position x,y; Position x,y;
char *bufr = style.tmpBigStr; /* size=[1024], make bigger if needed */ char bufr[1024]; /* size=[1024], make bigger if needed */
XmVendorShellExtObject vendorExt; XmVendorShellExtObject vendorExt;
XmWidgetExtData extData; XmWidgetExtData extData;
@ -713,6 +713,8 @@ saveStartup(
else else
sprintf(bufr, "*startupDlg.ismapped: False\n"); sprintf(bufr, "*startupDlg.ismapped: False\n");
WRITE_STR2FD(fd, bufr);
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(style.startupDialog)); x = XtX(XtParent(style.startupDialog));
y = XtY(XtParent(style.startupDialog)); y = XtY(XtParent(style.startupDialog));
@ -725,12 +727,10 @@ saveStartup(
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(style.tmpBigStr), "%s*startupDlg.x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*startupDlg.x: %d\n", x);
snprintf(bufr, sizeof(style.tmpBigStr), "%s*startupDlg.y: %d\n", bufr, y); WRITE_STR2FD(fd, bufr);
snprintf(bufr, sizeof(bufr), "*startupDlg.y: %d\n", y);
if(-1 == write (fd, bufr, strlen(bufr))) { WRITE_STR2FD(fd, bufr);
perror(strerror(errno));
}
} }
} }