Tcl command wform extented; options -raw and -exists added.
[egate.git] / www / wtcl.c
index c75f8a4..7ee01dd 100644 (file)
  * USE OR PERFORMANCE OF THIS SOFTWARE.
  *
  * $Log: wtcl.c,v $
- * Revision 1.13  1996/03/14 11:48:40  adam
+ * 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 +176,46 @@ 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) && 
+            if (!strcmp (arg, p->wcl->wf_data[i].name) && 
                 *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);