+#ifndef NOPUSH
+#ifndef XYZ_INTERNAL
+
+#define DEF_EXP_TIMO 12 /* Default timeout for external protocol (seconds) */
+
+int exp_handler = 0; /* These are exported */
+int exp_timo = DEF_EXP_TIMO;
+int exp_stderr = SET_AUTO;
+
+VOID
+shoextern() { /* Invoked by SHOW PROTOCOL */
+ printf("\n External-protocol handler: %s\n",
+ exp_handler ? (exp_handler == 1 ? "pty" : "system") : "automatic");
+#ifdef COMMENT
+ printf(" External-protocol redirect-stderr: %s\n", showooa(exp_stderr));
+#endif /* COMMENT */
+ printf(" External-protocol timeout: %d (sec)\n", exp_timo);
+}
+
+static struct keytab setexternhandler[] = {
+ { "automatic", 0, 0 },
+ { "pty", 1, 0 },
+ { "system", 2, 0 }
+};
+
+int
+setextern() { /* SET EXTERNAL-PROTOCOL */
+ int x, y;
+ if ((x = cmkey(extprotab,nxtprotab,"","",xxstring)) < 0)
+ return(x);
+ switch (x) {
+ case EXP_HANDLER:
+ if ((x = cmkey(setexternhandler,3,"","automatic",xxstring)) < 0)
+ return(x);
+ if ((y = cmcfm()) < 0)
+ return(y);
+ exp_handler = x;
+ break;
+
+#ifdef COMMENT
+ case EXP_STDERR:
+ if ((x = cmkey(ooatab,3,"","automatic",xxstring)) < 0)
+ return(x);
+ if ((y = cmcfm()) < 0)
+ return(y);
+ exp_stderr = x;
+ break;
+#endif /* COMMENT */
+
+ case EXP_TIMO:
+ y = cmnum("Inactivity timeout, seconds,",ckitoa(DEF_EXP_TIMO),
+ 10,&x,xxstring);
+ return(setnum(&exp_timo,x,y,-1));
+ }
+ return(success = 1);
+}
+#endif /* XYZ_INTERNAL */
+#endif /* NOPUSH */
+