1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

dticon, dtpad, dtterm: fix session save issues (sprintf bogosity)

Diff supplied by: Giacomo Comes <comes@naic.edu>
This commit is contained in:
Jon Trulson 2023-02-18 15:40:08 -07:00
parent b909f1a9e8
commit 61b58271f9
3 changed files with 50 additions and 27 deletions

View file

@ -2321,6 +2321,7 @@ SaveSession( void )
sprintf(bufr, "*iconic: True\n"); sprintf(bufr, "*iconic: True\n");
else else
sprintf(bufr, "*iconic: False\n"); sprintf(bufr, "*iconic: False\n");
write (fd, bufr, strlen(bufr));
/*** Get and write out the geometry info for our Window ***/ /*** Get and write out the geometry info for our Window ***/
@ -2337,12 +2338,18 @@ SaveSession( void )
x -= vendorExt->vendor.xOffset; x -= vendorExt->vendor.xOffset;
y -= vendorExt->vendor.yOffset; y -= vendorExt->vendor.yOffset;
snprintf(bufr, sizeof(bufr), "%s*x: %d\n", bufr, x); snprintf(bufr, sizeof(bufr), "*x: %d\n", x);
snprintf(bufr, sizeof(bufr), "%s*y: %d\n", bufr, y); write (fd, bufr, strlen(bufr));
snprintf(bufr, sizeof(bufr), "%s*width: %d\n", bufr, width); snprintf(bufr, sizeof(bufr), "*y: %d\n", y);
snprintf(bufr, sizeof(bufr), "%s*height: %d\n", bufr, height); write (fd, bufr, strlen(bufr));
snprintf(bufr, sizeof(bufr), "*width: %d\n", width);
write (fd, bufr, strlen(bufr));
snprintf(bufr, sizeof(bufr), "*height: %d\n", height);
if (last_fname[0] != '\0') if (last_fname[0] != '\0')
snprintf(bufr, sizeof(bufr), "%s*file: %s\n", bufr, last_fname); {
write (fd, bufr, strlen(bufr));
snprintf(bufr, sizeof(bufr), "*file: %s\n", last_fname);
}
if(-1 == write (fd, bufr, strlen(bufr))) { if(-1 == write (fd, bufr, strlen(bufr))) {
fprintf(stderr, "write() to session failed\n"); fprintf(stderr, "write() to session failed\n");

View file

@ -113,7 +113,10 @@ SaveMain(
XmWidgetExtData extData; XmWidgetExtData extData;
if(XtIsRealized(pPad->mainWindow)) if(XtIsRealized(pPad->mainWindow))
{
sprintf(bufr,"*mainWindow%d.ismapped: True\n", padNum); sprintf(bufr,"*mainWindow%d.ismapped: True\n", padNum);
write (fd, bufr, strlen(bufr));
}
/* Get and write out the geometry info for our Window */ /* Get and write out the geometry info for our Window */
x = XtX(XtParent(pPad->mainWindow)); x = XtX(XtParent(pPad->mainWindow));
@ -131,10 +134,14 @@ SaveMain(
width = XtWidth(XtParent(pPad->mainWindow)); width = XtWidth(XtParent(pPad->mainWindow));
height = XtHeight(XtParent(pPad->mainWindow)); height = XtHeight(XtParent(pPad->mainWindow));
snprintf(bufr, sizeof(bufr), "%s*mainWindow%d.x: %d\n", bufr, padNum, x); snprintf(bufr, sizeof(bufr), "*mainWindow%d.x: %d\n", padNum, x);
snprintf(bufr, sizeof(bufr), "%s*mainWindow%d.y: %d\n", bufr, padNum, y); write (fd, bufr, strlen(bufr));
snprintf(bufr, sizeof(bufr), "%s*mainWindow%d.width: %d\n", bufr, padNum, width); snprintf(bufr, sizeof(bufr), "*mainWindow%d.y: %d\n", padNum, y);
snprintf(bufr, sizeof(bufr), "%s*mainWindow%d.height: %d\n", bufr, padNum, height); write (fd, bufr, strlen(bufr));
snprintf(bufr, sizeof(bufr), "*mainWindow%d.width: %d\n", padNum, width);
write (fd, bufr, strlen(bufr));
snprintf(bufr, sizeof(bufr), "*mainWindow%d.height: %d\n", padNum, height);
write (fd, bufr, strlen(bufr));
wm_state_atom = XmInternAtom (XtDisplay(pPad->app_shell), "WM_STATE", wm_state_atom = XmInternAtom (XtDisplay(pPad->app_shell), "WM_STATE",
False); False);
@ -146,27 +153,32 @@ SaveMain(
&nitems, &leftover, (unsigned char **) &wm_state); &nitems, &leftover, (unsigned char **) &wm_state);
/* Write out if iconified our not */ /* Write out if iconified our not */
snprintf(bufr, sizeof(bufr), "%s*mainWindow%d.iconify: ", bufr, padNum); snprintf(bufr, sizeof(bufr), "*mainWindow%d.iconify: ", padNum);
write (fd, bufr, strlen(bufr));
if (wm_state->state == IconicState) if (wm_state->state == IconicState)
snprintf(bufr, sizeof(bufr), "%sTrue\n", bufr); snprintf(bufr, sizeof(bufr), "True\n");
else else
snprintf(bufr, sizeof(bufr), "%sFalse\n", bufr); snprintf(bufr, sizeof(bufr), "False\n");
write (fd, bufr, strlen(bufr));
if(DtWsmGetWorkspacesOccupied(XtDisplay(pPad->app_shell), if(DtWsmGetWorkspacesOccupied(XtDisplay(pPad->app_shell),
XtWindow(pPad->app_shell), &pWsPresence, XtWindow(pPad->app_shell), &pWsPresence,
&numInfo) == Success) &numInfo) == Success)
{ {
int i; int i;
snprintf(bufr, sizeof(bufr), "%s*mainWindow%d.workspaceList: ", bufr, padNum); snprintf(bufr, sizeof(bufr), "*mainWindow%d.workspaceList: ", padNum);
write (fd, bufr, strlen(bufr));
for(i = 0; i < numInfo; i++) for(i = 0; i < numInfo; i++)
{ {
char *name = XGetAtomName(XtDisplay(pPad->app_shell), char *name = XGetAtomName(XtDisplay(pPad->app_shell),
pWsPresence[i]); pWsPresence[i]);
snprintf(bufr, sizeof(bufr), "%s %s", bufr, name); snprintf(bufr, sizeof(bufr), " %s", name);
write (fd, bufr, strlen(bufr));
XtFree(name); XtFree(name);
} }
snprintf(bufr, sizeof(bufr), "%s\n", bufr); snprintf(bufr, sizeof(bufr), "\n");
write (fd, bufr, strlen(bufr));
XtFree((char *)pWsPresence); XtFree((char *)pWsPresence);
} }

View file

@ -1583,9 +1583,13 @@ SaveTerm(
height = XtHeight(XtParent(dtvw)); height = XtHeight(XtParent(dtvw));
sprintf(bufr, "*dtterm_%d.x: %d\n", cloneNum, x); sprintf(bufr, "*dtterm_%d.x: %d\n", cloneNum, x);
sprintf(bufr, "%s*dtterm_%d.y: %d\n", bufr, cloneNum, y); write (fd, bufr, strlen(bufr));
sprintf(bufr, "%s*dtterm_%d.width: %d\n", bufr, cloneNum, width); sprintf(bufr, "*dtterm_%d.y: %d\n", cloneNum, y);
sprintf(bufr, "%s*dtterm_%d.height: %d\n", bufr, cloneNum, height); write (fd, bufr, strlen(bufr));
sprintf(bufr, "*dtterm_%d.width: %d\n", cloneNum, width);
write (fd, bufr, strlen(bufr));
sprintf(bufr, "*dtterm_%d.height: %d\n", cloneNum, height);
write (fd, bufr, strlen(bufr));
/* Write out iconic state... /* Write out iconic state...
*/ */
@ -1607,12 +1611,11 @@ SaveTerm(
&bytesAfter, &bytesAfter,
(unsigned char **) &prop))) { (unsigned char **) &prop))) {
if (prop->state == IconicState) { if (prop->state == IconicState) {
sprintf(bufr, "%s*dtterm_%d.iconify: %s\n", bufr, cloneNum, sprintf(bufr, "*dtterm_%d.iconify: %s\n", cloneNum, "True");
"True");
} else { } else {
sprintf(bufr, "%s*dtterm_%d.iconify: %s\n", bufr, cloneNum, sprintf(bufr, "*dtterm_%d.iconify: %s\n", cloneNum, "False");
"False");
} }
write (fd, bufr, strlen(bufr));
} }
if(DtWsmGetWorkspacesOccupied(XtDisplay(dtvw), if(DtWsmGetWorkspacesOccupied(XtDisplay(dtvw),
@ -1620,20 +1623,21 @@ SaveTerm(
&numInfo) == Success) &numInfo) == Success)
{ {
int i; int i;
sprintf(bufr, "%s*dtterm_%d.workspaceList: ", bufr, cloneNum); sprintf(bufr, "*dtterm_%d.workspaceList: ", cloneNum);
write (fd, bufr, strlen(bufr));
for(i = 0; i < numInfo; i++) for(i = 0; i < numInfo; i++)
{ {
char *name = XGetAtomName(XtDisplay(dtvw), char *name = XGetAtomName(XtDisplay(dtvw),
pWsPresence[i]); pWsPresence[i]);
sprintf(bufr, "%s %s", bufr, name); sprintf(bufr, " %s", name);
write (fd, bufr, strlen(bufr));
XtFree(name); XtFree(name);
} }
sprintf(bufr, "%s\n", bufr); sprintf(bufr, "\n");
write (fd, bufr, strlen(bufr));
XtFree((char *)pWsPresence); XtFree((char *)pWsPresence);
} }
write (fd, bufr, strlen(bufr));
sprintf(bufr, "*dtterm_%d.userFontListIndex: %d\n", cloneNum, sprintf(bufr, "*dtterm_%d.userFontListIndex: %d\n", cloneNum,
_DtTermViewGetUserFontListIndex((Widget )dtvw)); _DtTermViewGetUserFontListIndex((Widget )dtvw));
write (fd, bufr, strlen(bufr)); write (fd, bufr, strlen(bufr));