Fix typo in license headers
[oweals/cde.git] / cde / programs / dtcreate / main.c
index 10d6064444ef93c2d7fb2acb3329d25f2faa5a30..fbd49e6ac192f6e83ef16f7452f67ac7fce2a378 100644 (file)
@@ -1,3 +1,25 @@
+/*
+ * CDE - Common Desktop Environment
+ *
+ * Copyright (c) 1993-2012, The Open Group. All rights reserved.
+ *
+ * These libraries and programs are free software; you can
+ * redistribute them and/or modify them under the terms of the GNU
+ * Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * These libraries and programs are distributed in the hope that
+ * they will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * 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
+ */
 /* $TOG: main.c /main/11 1999/09/17 17:22:06 mgreess $ */
 /*****************************************************************************/
 /*                                                                           */
 #include <Xm/Xm.h>
 #include <Xm/Protocols.h>
 #include <Xm/VendorSEP.h>
+#include <Xm/XmPrivate.h> /* XmeFlushIconFileCache */
+#include <Dt/Action.h>
+#include <Dt/GetDispRes.h>
 #include <Dt/Icon.h>
 #include <Dt/EnvControlP.h>
 #include <Dt/UserMsg.h>
+#include <Dt/Session.h>
+#include <Dt/Wsm.h>
 
 #define GETXMSTRING(s, m, d)   XmStringCreateLocalized(GETMESSAGE(s,m,d))
 #define CLASS_NAME             "Dtcreate"
@@ -38,6 +65,8 @@ extern XmWidgetExtData _XmGetWidgetExtData(
 #include "dtcreate.h"
 #include "ca_aux.h"
 #include "cmnrtns.h"
+#include "ErrorDialog.h"
+#include "fileio.h"
 
 #ifdef __TOOLTALK
 #include <Tt/tttk.h>
@@ -67,7 +96,7 @@ int             UxScreen;
  * Insert application global declarations here
  *---------------------------------------------*/
 
-extern Dimension wintypeheight;
+extern XtArgVal /* Dimension */ wintypeheight;
 
 /*  Structure used on a save session to see if a dt is iconic  */
 typedef struct {
@@ -134,7 +163,7 @@ void GetSessionInfo( void )
     /*** now get the information we want from the database ***/
     /*** make sure values are at least somewhat reasonable ***/
 
-    xrm_name[1] = NULL;
+    xrm_name[1] = '\0';
 
     /*******************************/
     /* get x position              */
@@ -485,7 +514,6 @@ void RemoveTmpIconFiles( void )
         unlink(maskFile);
      }
      if ( (IconDataList[i]->bmDirtyBit) &&
-          (IconDataList[i]->bmFileName) &&
           (strlen(IconDataList[i]->bmFileName)) ) {
 #ifdef DEBUG
         printf("RemoveTmpIconFiles: unlink '%s'\n", IconDataList[i]->bmFileName);  /* debug */
@@ -511,7 +539,7 @@ void RemoveTmpIconFiles( void )
 static void
 ExitCB (Widget dialog, XtPointer client_data, XtPointer call_data)
 {
-    exit((int) client_data);
+    exit((int)(XtArgVal) client_data);
 }
 
 void
@@ -526,6 +554,9 @@ DieFromToolTalkError(Widget parent, char *errfmt, Tt_status status)
     if (! tt_is_err(status)) return;
 
     statmsg = tt_status_message(status);
+    /* Solaris dtcreate ignores this so we should too */
+    if(status == TT_ERR_PTYPE)
+            return;
     errmsg = XtMalloc(strlen(errfmt) + strlen(statmsg) + 2);
     sprintf(errmsg, errfmt, statmsg);
 
@@ -728,7 +759,7 @@ Tt_callback_action IconEdit_tt_handler( Tt_message m, Tt_pattern p )
           display_error_message(XtParent(pIconData->wid), errPtr);
           XtFree(errPtr);
            tt_release( ttMark );
-           return;
+           return (TT_CALLBACK_CONTINUE);
         }
 
         /*******************************************************************/
@@ -771,7 +802,7 @@ Tt_callback_action IconEdit_tt_handler( Tt_message m, Tt_pattern p )
              XtFree(errPtr);
               tt_release( ttMark );
               if (tmpfd > -1) close(tmpfd);
-              return;
+              return (TT_CALLBACK_CONTINUE);
            }
 
         /*******************************************************************/
@@ -822,7 +853,7 @@ Tt_callback_action IconEdit_tt_handler( Tt_message m, Tt_pattern p )
              XtFree(errPtr);
               tt_release( ttMark );
               if (tmpfd > -1) close(tmpfd);
-              return;
+              return (TT_CALLBACK_CONTINUE);
            }
 
            /****************************************************************/
@@ -831,7 +862,7 @@ Tt_callback_action IconEdit_tt_handler( Tt_message m, Tt_pattern p )
            if (tmp) {
               tmp1 = strstr(tmp, "};");
            }
-           sprintf(tmpbuf, "%s_m", tmpIconFile);
+           snprintf(tmpbuf, sizeof(tmpbuf), "%s_m", tmpIconFile);
            if (tmp1) {
               tmp1 += 2;                       /* Go one char past the ";" */
 #ifdef DEBUG
@@ -848,7 +879,7 @@ Tt_callback_action IconEdit_tt_handler( Tt_message m, Tt_pattern p )
                  display_error_message(XtParent(pIconData->wid), errPtr);
                 XtFree(errPtr);
                  tt_release( ttMark );
-                 return;
+                 return (TT_CALLBACK_CONTINUE);
               }
 
 #ifdef DEBUG
@@ -875,7 +906,7 @@ Tt_callback_action IconEdit_tt_handler( Tt_message m, Tt_pattern p )
                 XtFree(errPtr);
                  tt_release( ttMark );
                  if (tmpfd > -1) close(tmpfd);
-                 return;
+                 return (TT_CALLBACK_CONTINUE);
               }
 
            /****************************************************************/
@@ -1035,6 +1066,7 @@ void UxDoEditPixmap(Widget wid, char *fname)
                  display_error_message(XtParent(wid), errPtr);
                 XtFree(errPtr);
                  XtFree(mname);
+                 if (fd1 > -1) close(fd1);
                  return;
               } else {
                  /***************************************/
@@ -1071,6 +1103,8 @@ void UxDoEditPixmap(Widget wid, char *fname)
              XtFree(errPtr);
               if (mname) XtFree(mname);
               XtFree((char *) buffer);
+              if (fd1 > -1) close(fd1);
+              if (fd2 > -1) close(fd2);
               return;
            }
            if (lenFile2) {
@@ -1095,11 +1129,13 @@ void UxDoEditPixmap(Widget wid, char *fname)
                 XtFree(errPtr);
                  XtFree((char *) buffer);
                  if (mname) XtFree(mname);
+                 if (fd1 > -1) close(fd1);
+                 if (fd2 > -1) close(fd2);
                  return;
               }
            }
-           if (fd1 > -1) close(fd1);
-           if (fd2 > -1) close(fd2);
+           if (fd1 > -1) close(fd1); fd1 = -1;
+           if (fd2 > -1) close(fd2); fd2 = -1;
 
 #ifdef DEBUG
            printf("final buffer = '%s'\n", buffer); /* debug */
@@ -1139,6 +1175,9 @@ void UxDoEditPixmap(Widget wid, char *fname)
   TurnOnHourGlassAllWindows();
   ttRc = tt_message_send( m );
   DieFromToolTalkError( UxTopLevel, "tt_message_send", ttRc );
+
+  if (fd1 > -1) close(fd1);
+  if (fd2 > -1) close(fd2);
 }
 #endif  /* __TOOLTALK */
 
@@ -1150,6 +1189,7 @@ void UxDoEditPixmap(Widget wid, char *fname)
 /*                                                                           */
 /*                                                                           */
 /*****************************************************************************/
+int
 main(int argc, char *argv[])
 {
         /*-----------------------------------------------------------