Bug fix.
[egate.git] / www / wtcl.c
index c75f8a4..a5c0e71 100644 (file)
  * USE OR PERFORMANCE OF THIS SOFTWARE.
  *
  * $Log: wtcl.c,v $
- * Revision 1.13  1996/03/14 11:48:40  adam
+ * Revision 1.15  1996/05/22 16:50:27  adam
+ * Bug fix.
+ *
+ * Revision 1.14  1996/05/21  14:53:04  adam
+ * Tcl command wform extented; options -raw and -exists added.
+ *
+ * Revision 1.13  1996/03/14  11:48:40  adam
  * New function egw_prog that returns name of shell.
  *
  * Revision 1.12  1996/03/07  12:45:34  adam
@@ -173,17 +179,49 @@ static int proc_wform_invoke (ClientData clientData, Tcl_Interp *interp,
                               int argc, char **argv)
 {
     struct tcl_info *p = (struct tcl_info*) clientData;
+    const char *arg = NULL;
+    int failFlag = 0;
     int i;
-    if (argc == 2)
+
+    if (argc == 3)
+    {
+        if (!strcmp (argv[1], "-raw"))
+        {
+            interp->result = p->wcl->raw_data;
+            return TCL_OK;
+        }
+        else if (!strcmp (argv[1], "-exists"))
+        {
+            failFlag = 1;
+            arg = argv[2];
+        }
+        else
+        {
+            Tcl_AppendResult (p->interp, "bad option to ", argv[0],
+                              " \"", argv[1], "\"", NULL);
+            return TCL_ERROR;
+        }
+    }
+    else if (argc == 2)
+        arg = argv[1];
+    if (arg)
     {
         for (i = 0; *p->wcl->wf_data[i].name; i++)
-            if (!strcmp (argv[1], p->wcl->wf_data[i].name) && 
-                *p->wcl->wf_data[i].value)
-                Tcl_AppendElement (p->interp, p->wcl->wf_data[i].value);
+            if (!strcmp (arg, p->wcl->wf_data[i].name))
+            {
+                failFlag = 0;
+                if (*p->wcl->wf_data[i].value)
+                    Tcl_AppendElement (p->interp, p->wcl->wf_data[i].value);
+            }
+        if (failFlag)
+        {
+            Tcl_AppendResult (p->interp, arg, " doesn't exist", NULL);
+            return TCL_ERROR;
+        }
         return TCL_OK;
     }    
     for (i = 0; *p->wcl->wf_data[i].name; i++)
-    { 
+    {
         Tcl_AppendResult (p->interp, "{ ", NULL);
         Tcl_AppendElement (p->interp, p->wcl->wf_data[i].name);
         Tcl_AppendElement (p->interp, p->wcl->wf_data[i].value);