summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alpine/help.c57
-rw-r--r--alpine/keymenu.c6
-rw-r--r--alpine/newuser.c4
-rw-r--r--pith/headers.h1
-rw-r--r--pith/pine.hlp107
5 files changed, 110 insertions, 65 deletions
diff --git a/alpine/help.c b/alpine/help.c
index a3a502a6..6c5f2e70 100644
--- a/alpine/help.c
+++ b/alpine/help.c
@@ -119,8 +119,8 @@ the first line in the text.
int
helper_internal(HelpType text, char *frag, char *title, int flags)
{
- char **shown_text;
- int cmd = MC_NONE;
+ char **shown_text, **external_text = NULL, *help_text = NULL, **rv;
+ int cmd = MC_NONE, is_external;
long offset = 0L;
char *error = NULL, tmp_title[MAX_SCREEN_COLS + 1];
STORE_S *store;
@@ -132,6 +132,37 @@ helper_internal(HelpType text, char *frag, char *title, int flags)
/* assumption here is that HelpType is char ** */
shown_text = text;
+ is_external = 0;
+
+ if(shown_text && *shown_text && !struncmp(*shown_text, "x-alpine-http:", 14)){
+ int status;
+ help_text = http_get(*shown_text + 14, &status);
+ if(status != HTTP_OK){
+ shown_text = NO_HELP;
+ if(help_text) fs_give((void **) &help_text);
+ }
+ else{
+ is_external = 1;
+ if(help_text == NULL) external_text = NO_HELP;
+ else{
+ char *s, *t;
+ int nlines;
+
+ for(nlines = 0, s = help_text; s != NULL; nlines++){
+ s = strchr(s, '\n');
+ if(s != NULL) s++;
+ }
+ rv = external_text = fs_get((nlines + 1)*sizeof(char *));
+ for(s = help_text; s != NULL; s = t){
+ t = strchr(s, '\n');
+ if(t != NULL) *t++ = '\0';
+ *rv++ = cpystr(s);
+ }
+ *rv = NULL;
+ }
+ }
+
+ }
if(F_ON(F_BLANK_KEYMENU,ps_global)){
FOOTER_ROWS(ps_global) = 3;
@@ -149,16 +180,16 @@ helper_internal(HelpType text, char *frag, char *title, int flags)
* Turn it into a charstar with digested html
*/
do{
- init_helper_getc(shown_text);
+ init_helper_getc(is_external ? external_text : shown_text);
init_handles(&handles);
memset(&hscroll, 0, sizeof(HELP_SCROLL_S));
- hscroll.help_source = shown_text;
+ hscroll.help_source = is_external ? external_text : shown_text;
if((store = so_get(CharStar, NULL, EDIT_ACCESS)) != NULL){
gf_set_so_writec(&pc, store);
gf_filter_init();
- if(!struncmp(shown_text[0], "<html>", 6))
+ if(!struncmp(hscroll.help_source[0], "<html>", 6) || is_external)
gf_link_filter(gf_html2plain,
gf_html2plain_opt("x-alpine-help:",
ps_global->ttyo->screen_cols,
@@ -205,18 +236,18 @@ helper_internal(HelpType text, char *frag, char *title, int flags)
sargs.text.handles = sargs.text.handles->next;
if(!(sargs.bar.title = title)){
- if(!struncmp(shown_text[0], "<html>", 6)){
+ if(!struncmp(hscroll.help_source[0], "<html>", 6) || is_external){
char *p;
int i;
/* if we're looking at html, look for a <title>
* in the <head>... */
for(i = 1;
- shown_text[i]
- && struncmp(shown_text[i], "</head>", 7);
+ hscroll.help_source[0][i]
+ && struncmp(hscroll.help_source[i], "</head>", 7);
i++)
- if(!struncmp(shown_text[i], "<title>", 7)){
- strncpy(tmp_20k_buf, &shown_text[i][7], SIZEOF_20KBUF);
+ if(!struncmp(hscroll.help_source[i], "<title>", 7)){
+ strncpy(tmp_20k_buf, &hscroll.help_source[i][7], SIZEOF_20KBUF);
tmp_20k_buf[SIZEOF_20KBUF-1] = '\0';
if((p = strchr(tmp_20k_buf, '<')) != NULL)
*p = '\0';
@@ -336,6 +367,12 @@ helper_internal(HelpType text, char *frag, char *title, int flags)
}
while(cmd == MC_RESIZE);
+ if(external_text != NULL){
+ for(rv = external_text; *rv != NULL; *rv++)
+ fs_give((void **) &*rv);
+ fs_give((void **) external_text);
+ }
+ if(help_text) fs_give((void **) &help_text);
return(cmd);
}
diff --git a/alpine/keymenu.c b/alpine/keymenu.c
index 519622a6..69ca92d9 100644
--- a/alpine/keymenu.c
+++ b/alpine/keymenu.c
@@ -1086,10 +1086,8 @@ INST_KEY_MENU(simple_file_keymenu, simple_file_keys);
struct key nuov_keys[] =
{HELP_MENU,
OTHER_MENU,
- {"E",NULL,{MC_EXIT,1,{'e',ctrl('M'),ctrl('J')}},KS_NONE},
- /* TRANSLATORS: Alpine asks the user to be counted when they
- first start using alpine. */
- {"Ret","[" N_("Be Counted!") "]",{MC_VIEW_HANDLE,2,{ctrl('M'),ctrl('J')}},KS_NONE},
+ {"E",NULL,{MC_EXIT,1,{'e'}},KS_NONE},
+ {"V",N_("ViewLink"),{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE},
NULL_MENU,
NULL_MENU,
PREVPAGE_MENU,
diff --git a/alpine/newuser.c b/alpine/newuser.c
index 2b32b3c0..6a84372a 100644
--- a/alpine/newuser.c
+++ b/alpine/newuser.c
@@ -126,9 +126,7 @@ new_user_or_version(struct pine *ps)
(nuov_keymenu.how_many * 12) * sizeof(struct key));
setbitmap(sargs.keys.bitmap);
- km.keys[NUOV_EXIT].label = "[Exit this greeting]";
- km.keys[NUOV_EXIT].bind.nch = 3;
- clrbitn(NUOV_VIEW, sargs.keys.bitmap);
+ km.keys[NUOV_EXIT].label = "Exit this greeting";
if(ps->first_time_user)
clrbitn(NUOV_RELNOTES, sargs.keys.bitmap);
diff --git a/pith/headers.h b/pith/headers.h
index 45dbce96..bd169dd2 100644
--- a/pith/headers.h
+++ b/pith/headers.h
@@ -31,6 +31,7 @@
#include "../c-client/misc.h" /* for cpystr proto */
#include "../c-client/utf8.h" /* for CHARSET and such*/
#include "../c-client/imap4r1.h"
+#include "../c-client/http.h" /* for http support */
/* include osdep protos and def'ns */
#include "osdep/bldpath.h"
diff --git a/pith/pine.hlp b/pith/pine.hlp
index a5dacaad..58669056 100644
--- a/pith/pine.hlp
+++ b/pith/pine.hlp
@@ -140,7 +140,7 @@ with help text for the config screen and the composer that didn't have any
reasonable place to be called from.
Dummy change to get revision in pine.hlp
============= h_revision =================
-Alpine Commit 447 2020-06-14 02:05:18
+Alpine Commit 448 2020-06-14 15:53:58
============= h_news =================
<HTML>
<HEAD>
@@ -170,8 +170,16 @@ variety of Unix&reg; operating systems. A version for Microsoft Windows&reg;
is available as is a world wide web based version designed to run under the
Apache web server.
+<P>
+Alpine's privacy policy is a living, online only, document, which can be found at
+<A href="h_privacy_policy">http://alpine.x10host.com/privacy.html</A>.
+By following the previous link, Alpine
+will connect to an external server, and will download it and display
+it for you. Please take some time to read it and understand it.
+Since the Privacy Policy could be ammended to take into consideration
+new additions to Alpine, please check it periodically.
-
+<P>
This is a development version of Alpine. These enhancements are
released after the release of version 2.22. Please report any
problems you find with this release.
@@ -182,6 +190,15 @@ problems you find with this release.
<UL>
<LI> Implementation of XOAUTH2 authentication support for Outlook.
Based on documentation suggested by Andrew C Aitchison.
+
+<LI> Creation of Alpine's Privacy Policy. This is presented as a link to an online
+ document from the Release Notes (Link at the top of this document.) Upon user request,
+ Alpine downloads and displays this document. Links to the privacy policy are
+ also displayed when a user starts Alpine for the first time, or when a user
+ starts a new version of Alpine. There is no default exit greeting command for
+ these screens, and to exit the user must press "E", instead of the old default,
+ which was the RETURN command. The RETURN command will open the handle on which
+ the cursor is on, which by default is the Privacy Policy.
</UL>
<P>
@@ -2482,22 +2499,20 @@ this link now to send a message to it:<BR>
<H1>Welcome to Alpine ... a Program for Internet News and Email</H1>
We hope you will explore Alpine's many capabilities. From the MAIN MENU,
select Setup/Config to see many of the options available to you. Also note
-that all screens have context-sensitive help text available.<P>
-<!--chtml if pinemode="phone_home"-->
-SPECIAL REQUEST:
-This software was originally created and maintained as a public
-service by the University of Washington until 2009; updates are made
-available as a public service of the Alpine community. It is always
-helpful to have an idea of how many users are using Alpine. Are you
-willing to be counted as an Alpine user? Pressing
-<A HREF="X-Alpine-Phone-Home:">Return</A>
-will send an anonymous (meaning, your real email address will not be revealed)
-message to the Alpine developers for purposes of tallying.
-<P>
-<!--To Exit this screen and continue your Alpine session press "E".-->
-<!--chtml else-->
-To Exit this screen and continue your Alpine session press "Return".
-<!--chtml endif-->
+that all screens have context-sensitive help text available.
+
+<P>
+Alpine's privacy policy is a living, online only, document, which can be found at
+<A href="h_privacy_policy">http://alpine.x10host.com/privacy.html</A>.
+By following the previous link, Alpine
+will connect to an external server, and will download it and display
+it for you. Please take some time to read it and understand it.
+Since the Privacy Policy could be ammended to take into consideration
+new additions to Alpine, please check it periodically. You can always
+find a link to the Privacy Policy in the <A href="h_news">Release Notes</A>.
+
+<P>
+To Exit this screen and continue your Alpine session press "E".
</BODY>
</HTML>
===== new_alpine_user_greeting ======
@@ -2516,22 +2531,19 @@ using Alpine.
Your Pine configuration file is automatically used for Alpine.
The Release Notes may be viewed by pressing
&quot;R&quot; now or while in the MAIN MENU.
+
<P>
-<!--chtml if pinemode="phone_home"-->
-SPECIAL REQUEST:
-This software was originally created and maintained as a public
-service by the University of Washington until 2009; updates are made
-available as a public service of the Alpine community. It is always
-helpful to have an idea of how many users are using Alpine. Are you
-willing to be counted as an Alpine user? Pressing
-<A HREF="X-Alpine-Phone-Home:">Return</A>
-will send an anonymous (meaning, your real email address will not be revealed)
-message to the Alpine developers for purposes of tallying.
-<P>
-<!--To Exit this screen and continue your Alpine session press "E".-->
-<!--chtml else-->
-To Exit this screen and continue your Alpine session press "Return".
-<!--chtml endif-->
+Alpine's privacy policy is a living, online only, document, which can be found at
+<A href="h_privacy_policy">http://alpine.x10host.com/privacy.html</A>.
+By following the previous link, Alpine
+will connect to an external server, and will download it and display
+it for you. Please take some time to read it and understand it.
+Since the Privacy Policy could be ammended to take into consideration
+new additions to Alpine, please check it periodically. You can always
+find a link to the Privacy Policy in the <A href="h_news">Release Notes</A>.
+
+<P>
+To Exit this screen and continue your Alpine session press "E".
</BODY>
</HTML>
===== new_version_greeting ======
@@ -2548,21 +2560,18 @@ this version of Alpine before. This version's significant changes are
documented in the Release Notes, which may be viewed by pressing
&quot;R&quot; now or while in the MAIN MENU.
<P>
-<!--chtml if pinemode="phone_home"-->
-SPECIAL REQUEST:
-This software was originally created and maintained as a public
-service by the University of Washington until 2009; updates are made
-available as a public service of the Alpine community. It is always
-helpful to have an idea of how many users are using Alpine. Are you
-willing to be counted as an Alpine user? Pressing
-<A HREF="X-Alpine-Phone-Home:">Return</A>
-will send an anonymous (meaning, your real email address will not be revealed)
-message to the Alpine developers for purposes of tallying.
-<P>
-<!--To Exit this screen and continue your Alpine session press "E".-->
-<!--chtml else-->
-To Exit this screen and continue your Alpine session press "Return".
-<!--chtml endif-->
+<P>
+Alpine's privacy policy is a living, online only, document, which can be found at
+<A href="h_privacy_policy">http://alpine.x10host.com/privacy.html</A>.
+By following the previous link, Alpine
+will connect to an external server, and will download it and display
+it for you. Please take some time to read it and understand it.
+Since the Privacy Policy could be ammended to take into consideration
+new additions to Alpine, please check it periodically. You can always
+find a link to the Privacy Policy in the <A href="h_news">Release Notes</A>.
+
+<P>
+To Exit this screen and continue your Alpine session press "E".
</BODY>
</HTML>
@@ -37954,3 +37963,5 @@ in size will be selected. Examples: 2176, 1.53K (1530), or 3M (3000000).
========== h_preserve_field ==========
Use 'p' to toggle between preserving or not preserving the original To:
and Cc: fields of the message. Enter ^C to cancel message.
+========== h_privacy_policy ==========
+x-alpine-http:http://alpine.x10host.com/privacy.html