* details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
+ * License along with these libraries and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
*****************************************************************************
*************************************<+>*************************************/
#include <stdio.h>
+#include <errno.h>
+#include <string.h>
#include <ctype.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/utsname.h>
#include <unistd.h>
-#ifdef __apollo
-#include <X11/apollosys.h> /* for pid_t, in hp-ux sys/types.h */
-#endif
#include <sys/stat.h>
#include <sys/param.h>
#include <X11/Intrinsic.h>
/*
* Pull screen saver resources from Dtsession*<name>.
*/
- smGD.SmNextension = smGD.SmNextension = smGD.extensionSpec = "";
+ smGD.SmNextension = smGD.SmCextension = smGD.extensionSpec = "";
}
XtGetSubresources(smGD.topLevelWid, (XtPointer) &smSaverRes,
*/
if (getenv("DISPLAY") == 0)
{
- sprintf(tmpDisplayName, "DISPLAY=%s", displayName);
+ snprintf(tmpDisplayName, MAXPATHLEN, "DISPLAY=%s", displayName);
putenv(tmpDisplayName);
}
}
pch = strdup ((char *) GETMESSAGE (40, 15,
" No session name was provided for the -session command line option."));
- if (!pch)
+ if (pch)
{
DtMsgLogMessage (argv[0], DtMsgLogWarning, pch);
free (pch);
*
*************************************<->***********************************/
void
-UndoSetSavePath ( )
+UndoSetSavePath (void)
{
char * buf;
* runs a Current session and saves the session.
*/
strcpy (savedDir, smGD.clientPath);
- sprintf(smGD.etcPath, "%s.%s", smGD.clientPath, SM_OLD_EXTENSION);
+ snprintf(smGD.etcPath, sizeof(smGD.etcPath), "%s.%s", smGD.clientPath, SM_OLD_EXTENSION);
status = stat(smGD.etcPath, &buf);
if(status == 0)
{
char * tmpName;
- char * tmpDir;
-
- strcpy (savedOldDir, smGD.etcPath);
-
- tmpName = (char *) XtMalloc (strlen (smGD.restoreSession) + 2);
- sprintf (tmpName, "%s.", smGD.restoreSession);
- if (strlen (tmpName) > 5) {
- tmpName[4] = '.';
- tmpName[5] = '\000';
- }
- tmpDir = (char *) tempnam (smGD.savePath, tmpName);
- MoveDirectory (smGD.etcPath, tmpDir, False);
-
- strcpy (savedTmpDir, tmpDir);
- free (tmpDir);
- XtFree ((char *) tmpName);
+ int len, tfd;
+
+ strcpy(savedOldDir, smGD.etcPath);
+
+ len = strlen(smGD.savePath) + strlen(smGD.restoreSession)
+ + strlen("XXXXXX") + 3;
+ tmpName = (char *) XtCalloc(1, len);
+
+ sprintf(tmpName, "%s/%s.XXXXXX", smGD.savePath,
+ smGD.restoreSession);
+
+ if ((tfd = mkstemp(tmpName)) == -1)
+ {
+ PrintErrnoError(DtError, smNLS.cantCreateDirsString);
+ }
+ else
+ {
+ close(tfd);
+ unlink(tmpName);
+
+ MoveDirectory(smGD.etcPath, tmpName, False);
+
+ strncpy(savedTmpDir, tmpName, len - 1);
+ }
+ XtFree((char *) tmpName);
}
MoveDirectory(smGD.clientPath, smGD.etcPath, False);
}
smGD.resourcePath[0] = 0;
return(-1);
}
- chmod(smGD.clientPath, 0755);
+ if(-1 == chmod(smGD.clientPath, 0755))
+ {
+ fprintf(stderr, "%s chmod error %s\n", smGD.clientPath, strerror(errno));
+ }
}
else
{
* save is complete.
*/
char * tmpName;
- char * tmpDir;
- sprintf(smGD.etcPath, "%s.%s", smGD.clientPath, SM_OLD_EXTENSION);
+ snprintf(smGD.etcPath, sizeof(smGD.etcPath), "%s.%s", smGD.clientPath, SM_OLD_EXTENSION);
status = stat(smGD.etcPath, &buf);
if(status == 0)
{
- tmpName = (char *) XtMalloc (strlen (smGD.restoreSession) + 2);
- sprintf (tmpName, "%s.", smGD.restoreSession);
- strcpy (savedOldDir, smGD.etcPath);
- if (strlen (tmpName) > 5) {
- tmpName[4] = '.';
- tmpName[5] = '\000';
- }
- tmpDir = (char *) tempnam (smGD.savePath, tmpName);
- MoveDirectory (smGD.etcPath, tmpDir, False);
-
- strcpy (savedTmpDir, tmpDir);
- free (tmpDir);
- XtFree ((char *) tmpName);
+ int len, tfd;
+
+ len = strlen(smGD.savePath) + strlen(smGD.restoreSession)
+ + strlen("XXXXXX") + 3;
+ tmpName = (char *) XtCalloc(1, len);
+ snprintf(tmpName, len, "%s/%s.XXXXXX", smGD.savePath,
+ smGD.restoreSession);
+
+ strcpy (savedOldDir, smGD.etcPath);
+
+ if ((tfd = mkstemp(tmpName)) == -1)
+ {
+ PrintErrnoError(DtError, smNLS.cantCreateDirsString);
+ }
+ else
+ {
+ close(tfd);
+ unlink(tmpName);
+
+ MoveDirectory (smGD.etcPath, tmpName, False);
+
+ strcpy (savedTmpDir, tmpName);
+ }
+ XtFree((char *) tmpName);
}
MoveDirectory(smGD.clientPath, smGD.etcPath, False);
status = mkdir(smGD.clientPath, 0000);
if(status == -1)
{
+ PrintErrnoError(DtError, smNLS.cantCreateDirsString);
+ smGD.clientPath[0] = 0;
+ smGD.settingPath[0] = 0;
+ smGD.resourcePath[0] = 0;
+ return(-1);
+ }
+ status = chmod(smGD.clientPath, 0755);
+ if(status == -1)
+ {
PrintErrnoError(DtError, smNLS.cantCreateDirsString);
smGD.clientPath[0] = 0;
smGD.settingPath[0] = 0;
smGD.resourcePath[0] = 0;
return(-1);
- }
- chmod(smGD.clientPath, 0755);
+ }
}
strcat(smGD.clientPath, "/");
smGD.fontPath[0] = 0;
return(-1);
}
- chmod(smGD.fontPath, 0755);
+ if(-1 == chmod(smGD.fontPath, 0755))
+ {
+ fprintf(stderr, "%s chmod error %s\n", smGD.fontPath, strerror(errno));
+ }
}
/*
smGD.fontPath[0] = 0;
return(-1);
}
- chmod(smGD.fontPath, 0755);
+ status = chmod(smGD.fontPath, 0755);
+ if(status == -1)
+ {
+ PrintErrnoError(DtError, smNLS.cantCreateDirsString);
+ smGD.fontPath[0] = 0;
+ return(-1);
+ }
}
return(0);
_DtEnvControl(DT_ENV_RESTORE_PRE_DT);
-#if defined(__osf__) || defined(CSRG_BASED)
+#if defined(CSRG_BASED)
setsid();
#else
(void) setpgrp();
-#endif /* __osf__ */
+#endif /* CSRG_BASED */
execStatus = execlp("rm","rm", "-rf", path, (char *) 0);
if(execStatus != 0)
_DtEnvControl(DT_ENV_RESTORE_PRE_DT);
-#if defined(__osf__) || defined(CSRG_BASED)
+#if defined(CSRG_BASED)
setsid();
#else
(void) setpgrp();
-#endif /* __osf__ */
+#endif /* CSRG_BASED */
execStatus = execlp("mv","mv", pathFrom, pathTo, (char *) 0);
if(execStatus != 0)
len = strlen(home) + strlen(DtPERSONAL_CONFIG_DIRECTORY) + 2;
if (len > MAXPATHLEN) savePath = SM_REALLOC(savePath, len);
- sprintf(savePath, "%s/%s", home, DtPERSONAL_CONFIG_DIRECTORY);
+ snprintf(savePath, len, "%s/%s", home, DtPERSONAL_CONFIG_DIRECTORY);
/*
* If errorlog.old exists and it is not empty, delete
*/
if (len + strlen(DtERRORLOG_FILE) > MAXPATHLEN)
checkPath1 = SM_REALLOC(savePath, len + strlen(DtERRORLOG_FILE));
- sprintf(checkPath1, "%s/%s", savePath, DtERRORLOG_FILE);
+ snprintf(checkPath1, len + strlen(DtERRORLOG_FILE), "%s/%s", savePath, DtERRORLOG_FILE);
status = stat(checkPath1, &buf);
if((status != -1) && (buf.st_size > 0))
if (len > MAXPATHLEN)
alt_dir = XtRealloc(alt_dir, len + 1);
- (void) sprintf (alt_dir, "%s/%s/%s/%s",
- home,
- DtPERSONAL_CONFIG_DIRECTORY,
- DtSM_SESSION_DIRECTORY,
- SM_HOME_DIRECTORY);
+ snprintf(alt_dir, len, "%s/%s/%s/%s",
+ home,
+ DtPERSONAL_CONFIG_DIRECTORY,
+ DtSM_SESSION_DIRECTORY,
+ SM_HOME_DIRECTORY);
if (!SetAlternateSession (session_dir,
alt_dir,
char *db_file = (char *) XtMalloc(MAXPATHLEN);
struct stat buf;
+ if (!db_file)
+ {
+ PrintError(DtError, smNLS.cantMallocErrorString);
+ return;
+ }
+
smGD.savePath = _DtCreateDtDirs(disp);
(void) sprintf (smGD.settingPath, "%s/%s/%s",
if ((stat(db_file, &buf)) == 0)
(void) strcpy (smGD.clientPath, db_file);
}
- if (db_file) XtFree(db_file);
+ XtFree(db_file);
}
char *db_file2 = (char *) XtMalloc(MAXPATHLEN);
struct stat buf;
+ if (!db_file1 || !db_file2)
+ {
+ PrintError(DtError, smNLS.cantMallocErrorString);
+ return False;
+ }
+
+
if ((stat (session_dir, &buf)) != 0) {
/*
* The requested dir does not exist, create it
/*
* The directory for the specified session exists
* but it doesn't have any client databases. Start
- * a new user session. If a user wants a sesssion
+ * a new user session. If a user wants a session
* with no apps, they should create a zero-length
* session database.
*/
SetSysDefaults ();
}
- if (db_file1) XtFree(db_file1);
- if (db_file2) XtFree(db_file2);
+ XtFree(db_file1);
+ XtFree(db_file2);
return (True);
}
}
void
-SetSIGPIPEToDefault ()
+SetSIGPIPEToDefault (void)
{
struct sigaction pipeSig;