about summary refs log tree commit diff stats
path: root/WWW/Library/Implementation/HTAlert.c
diff options
context:
space:
mode:
Diffstat (limited to 'WWW/Library/Implementation/HTAlert.c')
-rw-r--r--WWW/Library/Implementation/HTAlert.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/WWW/Library/Implementation/HTAlert.c b/WWW/Library/Implementation/HTAlert.c
new file mode 100644
index 00000000..769db178
--- /dev/null
+++ b/WWW/Library/Implementation/HTAlert.c
@@ -0,0 +1,125 @@
+/*	Displaying messages and getting input for LineMode Browser
+**	==========================================================
+**
+**	REPLACE THIS MODULE with a GUI version in a GUI environment!
+**
+** History:
+**	   Jun 92 Created May 1992 By C.T. Barker
+**	   Feb 93 Simplified, portablised TBL
+**	   Sep 93 Corrected 3 bugs in HTConfirm() :-( AL
+*/
+
+
+#include "HTUtils.h"
+#include "tcp.h"		/* for TOUPPER */
+
+#include "HTAlert.h"
+
+#include <ctype.h> 		/* for toupper - should be in tcp.h */
+#ifdef VMS
+extern char * getpass PARAMS((CONST char *prompt));
+#endif /* VMS */
+
+#include "LYLeaks.h"
+
+PUBLIC void HTAlert ARGS1(CONST char *, Msg)
+{
+#ifdef NeXTStep
+    NXRunAlertPanel(NULL, "%s", NULL, NULL, NULL, Msg);
+#else
+    fprintf(stderr, "WWW Alert:  %s\n", Msg);
+#endif
+}
+
+
+PUBLIC void HTProgress ARGS1(CONST char *, Msg)
+{
+    fprintf(stderr, "   %s ...\n", Msg);
+}
+
+
+PUBLIC BOOL HTConfirm ARGS1(CONST char *, Msg)
+{
+  char Reply[4];	/* One more for terminating NULL -- AL */
+  char *URep;
+  
+  fprintf(stderr, "WWW: %s (y/n) ", Msg);
+                       /* (y/n) came twice -- AL */
+
+  fgets(Reply, 4, stdin); /* get reply, max 3 characters */
+  URep=Reply;
+  while (*URep) {
+    if (*URep == '\n') {
+	*URep = (char)0;	/* Overwrite newline */
+	break;
+    }
+    *URep=TOUPPER(*URep);
+    URep++;	/* This was previously embedded in the TOUPPER */
+                /* call an it became evaluated twice because   */
+                /* TOUPPER is a macro -- AL */
+  }
+
+  if ((strcmp(Reply,"YES")==0) || (strcmp(Reply,"Y")==0))
+    return(YES);
+  else
+    return(NO);
+}
+
+/*	Prompt for answer and get text back
+*/
+PUBLIC char * HTPrompt ARGS2(CONST char *, Msg, CONST char *, deflt)
+{
+    char Tmp[200];
+    char * rep = 0;
+    fprintf(stderr, "WWW: %s", Msg);
+    if (deflt) fprintf(stderr, " (RETURN for [%s]) ", deflt);
+    
+    fgets(Tmp, 200, stdin);
+    Tmp[strlen(Tmp)-1] = (char)0;	/* Overwrite newline */
+   
+    StrAllocCopy(rep, *Tmp ? Tmp : deflt);
+    return rep;
+}
+
+
+/*	Prompt for password without echoing the reply
+*/
+PUBLIC char * HTPromptPassword ARGS1(CONST char *, Msg)
+{
+    char *result = NULL;
+    char *pw = (char*)getpass(Msg ? Msg : "Password: ");
+
+    StrAllocCopy(result, pw);
+    return result;
+}
+
+
+/*	Prompt both username and password	HTPromptUsernameAndPassword()
+**	---------------------------------
+** On entry,
+**	Msg		is the prompting message.
+**	*username and
+**	*password	are char pointers; they are changed
+**			to point to result strings.
+**
+**			If *username is not NULL, it is taken
+**			to point to  a default value.
+**			Initial value of *password is
+**			completely discarded.
+**
+** On exit,
+**	*username and *password point to newly allocated
+**	strings -- original strings pointed to by them
+**	are NOT freed.
+**	
+*/
+PUBLIC void HTPromptUsernameAndPassword ARGS3(CONST char *,	Msg,
+					      char **,		username,
+					      char **,		password)
+{
+    if (Msg)
+	fprintf(stderr, "WWW: %s\n", Msg);
+    *username = HTPrompt("Username: ", *username);
+    *password = HTPromptPassword("Password: ");
+}
+