Hello community, here is the log from the commit of package alpine checked in at Mon Sep 29 18:30:53 CEST 2008. -------- --- alpine/alpine.changes 2008-04-26 14:18:36.000000000 +0200 +++ /mounts/work_src_done/STABLE/alpine/alpine.changes 2008-09-29 17:31:15.000000000 +0200 @@ -1,0 +2,21 @@ +Mon Sep 29 17:23:42 CEST 2008 - max@suse.de + +- Update to version 2.00 and the related Chappa patches. +- Changes include: + * Experimental S/MIME support added in UNIX versions of Alpine + * Enhance address completion in the composer (TAB command) + * Add line wrapping when displaying PRE formatted sections of + HTML + * Fix a crash when using tab-completion for selecting a Save + filename + * Fix viewing, printing, exporting, replying, and bouncing of + message digests. + * The Unknown Character Set option did not work correctly + interpreting unknown characters in message headers + * Crash when TABing to next folder, the next folder with new + mail is a POP folder, and there is a more than 10 minute + pause between typing the TAB and typing the Yes +- For more details, see: + http://www.washington.edu/alpine/changes/1.10-to-2.00.html + +------------------------------------------------------------------- Old: ---- alpine-1.10.tar.lzma chappa-cherrypick.sh chappa-patches.tar.lzma hide-release_number-in-titlebar.c New: ---- alpine-2.00.tar.bz2 chappa-colortext.patch.gz chappa-fancy.patch.gz chappa-ignoresize.patch.gz chappa-insertpat.patch.gz chappa-maildir.patch.gz chappa-searchheader.patch.gz chappa-WrtAcc.patch.gz pine-nonvoid-function.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ alpine.spec ++++++ --- /var/tmp/diff_new_pack.Q17627/_old 2008-09-29 18:30:20.000000000 +0200 +++ /var/tmp/diff_new_pack.Q17627/_new 2008-09-29 18:30:20.000000000 +0200 @@ -1,10 +1,17 @@ # -# spec file for package alpine (Version 1.10) +# spec file for package alpine (Version 2.00) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. -# This file and all modifications and additions to the pristine -# package are under the same license as the package itself. # +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + # Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -21,19 +28,14 @@ %define obsolete_pine 0 %define provide_pico_and_pilot 0 %endif -%define build_alpined 0 # # For debugging only: %define use_mudflap 0 %define build_vanilla 0 -# Set this if you want to apply Eduardo Chappa's patches.all.gz: -%define apply_all_in_one_patch 0 # -Summary: Alpine mail user agent -BuildRequires: imap-devel krb5-devel libgssapi lzma ncurses-devel openldap2-devel openssl-devel pam-devel update-desktop-files -%if %build_alpined -BuildRequires: blt tcl-devel -%endif +Summary: Alpine mail user agent (formerly pine) +BuildRequires: imap-devel krb5-devel libgssapi lzma ncurses-devel +BuildRequires: openldap2-devel openssl-devel pam-devel update-desktop-files %if %{use_mudflap} BuildRequires: libmudflap %endif @@ -47,39 +49,17 @@ Conflicts: pine4 %endif # -Version: 1.10 -Release: 2 +Version: 2.00 +Release: 1 License: The Apache Software License Group: Productivity/Networking/Email/Clients AutoReqProv: on Url: http://www.washington.edu/alpine/ -# -# Fix for #308533: Remove files with unclear license, which are not needed -# from the distributed source tarball: -# -%define USE_CLEANED_UP_TARBALL_FORBUILD 1 -%if %USE_CLEANED_UP_TARBALL_FORBUILD == 1 -#This caret is only here to prevent confusing spec file checking tools: -#%( - cd %{_sourcedir};cp %{name}-%{version}{,-build}.tar.lzma - lzma -d %{name}-%{version}-build.tar.lzma - tar --delete --file=%{name}-%{version}-build.tar \ - ./%{name}-%{version}/pico/msmem.c ./%{name}-%{version}/imap/docs - echo >%{name}-%{version}.README.SUSE <<END -Some files which are not needed for compilation have been removed from -this tarball. You can get the full tarball from %{URL}. -END - tar --append ./%{name}-%{version}.README.SUSE \ - --file=%{name}-%{version}-build.tar - lzma -9 %{name}-%{version}-build.tar -) -%endif -Source: %{name}-%{version}.tar.lzma -# +Source: %{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-build Source1: %name.png Source2: %name.desktop -Patch1: hide-release_number-in-titlebar.c +Patch1: pine-nonvoid-function.patch Patch2: make-use-of-strncat-safer.diff Patch3: operation-may-be-undefined-warning.diff Patch10: pico-fix-spurious-undef-warnings.diff @@ -87,24 +67,35 @@ Patch40: pico-stripwhitespace.diff Patch60: signal-and-panic-improvements.diff # -# Eduardo Chappa's patches. Currently, We only use the 'all_in_one' version: +# Eduardo Chappa's patches. +# http://staff.washington.edu/chappa/alpine/patches # -%if !%{apply_all_in_one_patch} -Source600: chappa-cherrypick.sh -Source601: chappa-patches.tar.lzma -%else -#Patch500: staff.washington.edu/chappa/alpine/patches/alpine-%{version}/all.patch.gz -%endif +Patch600: chappa-colortext.patch.gz +Patch601: chappa-fancy.patch.gz +Patch602: chappa-ignoresize.patch.gz +Patch603: chappa-insertpat.patch.gz +Patch604: chappa-maildir.patch.gz +Patch605: chappa-searchheader.patch.gz +Patch606: chappa-WrtAcc.patch.gz %description -Alpine is an major update of Pine, most importantly featuring improved -support for UTF-8 (Unicode) and is licensed under an OSI-approved -license (the Apache License). - Though originally designed for inexperienced email users, Alpine supports many advanced features, and an ever-growing number of configuration and personal-preference options. +Alpine (formerly Pine) features improved support for UTF-8 and the code +is licensed under the Apache License. + +Despite many improvements "under the hood" (the bugs which were +introduced by them were ironed out during more than a full year of +public beta testing), the user interface stays the same, so pine users +can switch painlessly to alpine and notice no change at all. + +It uses the same configuration files as pine, so it's a clean update. + +The biggest user-visible change are the new animations which are shown +when operations take a long time. + %package -n pico @@ -149,17 +140,19 @@ >compile-warnings-allowed.log fi # -# People which want, can use the full all.patch.gz with apply_all_in_one_patch: +# "Chappa" patches # -%if %{apply_all_in_one_patch} -%patch500 -p1 -%else -sh %{SOURCE600} --apply %{SOURCE601} -%endif +%patch600 -p1 +%patch601 -p1 +%patch602 -p1 +%patch603 -p1 +%patch604 -p1 +%patch605 -p1 +%patch606 -p1 # # SuSE patches - warning fixes, etc: # -%patch1 -p1 +%patch1 %patch2 -p1 %patch3 -p1 %patch10 -p1 @@ -180,7 +173,7 @@ # export CFLAGS="${RPM_OPT_FLAGS/-O2/-Os} \ %if %{suse_version} >= 1010 - -Wno-unused-value -Wno-strict-aliasing -Wno-pointer-sign -Wno-unused \ + -Wno-unused-value -fno-strict-aliasing -Wno-pointer-sign -Wno-unused \ %endif %if %{suse_version} >= 1030 -Wno-address \ @@ -221,7 +214,7 @@ LDFLAGS="$LDFLAGS $EXTRALDFLAGS" %endif : -%configure --with-tcl-lib=tcl8.4 \ +%configure \ %if %{use_mudflap} %( : 'mudflap(th) does not work with with threads:' )\ --without-pthread \ @@ -236,6 +229,7 @@ --with-debug-files=2 \ --with-file=.alpine-debug \ --with-default-mail-directory=Mail \ + --with-web-bin=%_libdir/%name \ --with-passfile=.pinepw || { grep -B9 -A20 'failed program was' config.log | grep -A24 checking exit 5 @@ -243,22 +237,15 @@ # # imap does not use CFLAGS from configure, needs EXTRACFLAGS/EXTRALDFLAGS: # -make EXTRACFLAGS="$CFLAGS" EXTRALDFLAGS="$EXTRALDFLAGS" 2>&1 | tee make.log | - grep -v -e '^mv ' -e '/usr/bin/[a-z]*' -e '^echo ' -e ' -l' | - sed 's/.*gcc .* -o .*\.o /-----> /;/^-----/s/;.*//;/^then/d' +make %{?jobs:-j%jobs} EXTRACFLAGS="$CFLAGS" EXTRALDFLAGS="$EXTRALDFLAGS" %install -install -D -m755 alpine/alpine $RPM_BUILD_ROOT%{_bindir}/alpine -: +make install DESTDIR=%buildroot # # When called as alpinef, alpine uses function keys instead of Control keys: # ln $RPM_BUILD_ROOT%{_bindir}/alpine $RPM_BUILD_ROOT%{_bindir}/alpinef -: -install -m755 alpine/{rpload,rpdump} $RPM_BUILD_ROOT%{_bindir} install -m755 imap/mailutil/mailutil $RPM_BUILD_ROOT%{_bindir} -mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man1 -install -m644 doc/{alpine.1,rpdump.1,rpload.1} $RPM_BUILD_ROOT%{_mandir}/man1/ install -m644 imap/src/mailutil/mailutil.1 $RPM_BUILD_ROOT%{_mandir}/man1/ install -D -m644 %{SOURCE1} $RPM_BUILD_ROOT/usr/share/pixmaps/%name.png install -D -m644 %{SOURCE2} $RPM_BUILD_ROOT/usr/share/applications/%name.desktop @@ -327,14 +314,14 @@ fi %clean -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT +rm -rf %buildroot %files %defattr(-, root, root) -%doc %{_mandir}/man1/alpine.1.gz -%doc %{_mandir}/man1/rpdump.1.gz -%doc %{_mandir}/man1/rpload.1.gz -%doc %{_mandir}/man1/mailutil.1.gz +%doc %{_mandir}/man1/alpine.* +%doc %{_mandir}/man1/rpdump.* +%doc %{_mandir}/man1/rpload.* +%doc %{_mandir}/man1/mailutil.* %doc README NOTICE LICENSE %doc doc/mailcap.unx doc/mime.types doc/tech-notes.txt doc/tech-notes/*.html %{_bindir}/*pine @@ -348,15 +335,33 @@ %files -n pico %defattr(-, root, root) %{_bindir}/pico -%doc %{_mandir}/man1/pico.1.gz +%doc %{_mandir}/man1/pico.* %files -n pilot %defattr(-, root, root) %{_bindir}/pilot -%doc %{_mandir}/man1/pilot.1.gz +%doc %{_mandir}/man1/pilot.* %endif %changelog +* Mon Sep 29 2008 max@suse.de +- Update to version 2.00 and the related Chappa patches. +- Changes include: + * Experimental S/MIME support added in UNIX versions of Alpine + * Enhance address completion in the composer (TAB command) + * Add line wrapping when displaying PRE formatted sections of + HTML + * Fix a crash when using tab-completion for selecting a Save + filename + * Fix viewing, printing, exporting, replying, and bouncing of + message digests. + * The Unknown Character Set option did not work correctly + interpreting unknown characters in message headers + * Crash when TABing to next folder, the next folder with new + mail is a POP folder, and there is a more than 10 minute + pause between typing the TAB and typing the Yes +- For more details, see: + http://www.washington.edu/alpine/changes/1.10-to-2.00.html * Sat Apr 26 2008 coolo@suse.de - fix build * Fri Apr 25 2008 bk@suse.de ++++++ chappa-colortext.patch.gz ++++++ diff -rc alpine-2.00/alpine/confscroll.c alpine-2.00.colortext/alpine/confscroll.c *** alpine-2.00/alpine/confscroll.c 2008-08-21 15:14:45.000000000 -0700 --- alpine-2.00.colortext/alpine/confscroll.c 2008-08-26 20:56:51.000000000 -0700 *************** *** 5176,5181 **** --- 5176,5184 ---- clear_index_cache(ps->mail_stream, 0); } + else if(var == &ps->vars[V_SPECIAL_TEXT]){ + regex_pattern(ps->VAR_SPECIAL_TEXT); + } else if(var == &ps->vars[V_INIT_CMD_LIST]){ if(!revert) q_status_message(SM_ASYNC, 0, 3, diff -rc alpine-2.00/pith/conf.c alpine-2.00.colortext/pith/conf.c *** alpine-2.00/pith/conf.c 2008-08-22 17:07:05.000000000 -0700 --- alpine-2.00.colortext/pith/conf.c 2008-08-26 20:56:51.000000000 -0700 *************** *** 225,230 **** --- 225,232 ---- CONF_TXT_T cf_text_fillcol[] = "Specifies the column of the screen where the composer should wrap."; + CONF_TXT_T cf_special_text_color[] = "Specifies a comma separated list of text and regular expresions that Pine\n# will highlight"; + CONF_TXT_T cf_text_replystr[] = "Specifies the string to insert when replying to a message."; CONF_TXT_T cf_text_quotereplstr[] = "Specifies the string to replace quotes with when viewing a message."; *************** *** 557,562 **** --- 559,566 ---- NULL, cf_text_speller}, {"composer-wrap-column", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, NULL, cf_text_fillcol}, + {"special-text-color", 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, + NULL, cf_special_text_color}, {"reply-indent-string", 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, NULL, cf_text_replystr}, {"reply-leadin", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, *************** *** 808,813 **** --- 812,819 ---- {"incoming-unseen-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"signature-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"signature-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, + {"special-text-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, + {"special-text-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"prompt-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"prompt-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"header-general-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, *************** *** 1943,1948 **** --- 1949,1956 ---- set_current_val(&vars[V_FORM_FOLDER], TRUE, TRUE); set_current_val(&vars[V_EDITOR], TRUE, TRUE); set_current_val(&vars[V_SPELLER], TRUE, TRUE); + set_current_val(&vars[V_SPECIAL_TEXT], TRUE, TRUE); + regex_pattern(VAR_SPECIAL_TEXT); set_current_val(&vars[V_IMAGE_VIEWER], TRUE, TRUE); set_current_val(&vars[V_BROWSER], TRUE, TRUE); set_current_val(&vars[V_SMTP_SERVER], TRUE, TRUE); *************** *** 6379,6384 **** --- 6387,6393 ---- set_color_val(&vars[V_IND_OP_FORE_COLOR], 0); set_color_val(&vars[V_INCUNSEEN_FORE_COLOR], 0); set_color_val(&vars[V_SIGNATURE_FORE_COLOR], 0); + set_color_val(&vars[V_SPECIAL_TEXT_FORE_COLOR], 0); set_current_val(&ps->vars[V_VIEW_HDR_COLORS], TRUE, TRUE); set_current_val(&ps->vars[V_KW_COLORS], TRUE, TRUE); *************** *** 7554,7559 **** --- 7563,7570 ---- return(h_config_scroll_margin); case V_DEADLETS : return(h_config_deadlets); + case V_SPECIAL_TEXT : + return(h_config_special_text_to_color); case V_FILLCOL : return(h_config_composer_wrap_column); case V_TCPOPENTIMEO : *************** *** 7713,7718 **** --- 7724,7732 ---- case V_SIGNATURE_FORE_COLOR : case V_SIGNATURE_BACK_COLOR : return(h_config_signature_color); + case V_SPECIAL_TEXT_FORE_COLOR : + case V_SPECIAL_TEXT_BACK_COLOR : + return(h_config_special_text_color); case V_PROMPT_FORE_COLOR : case V_PROMPT_BACK_COLOR : return(h_config_prompt_color); diff -rc alpine-2.00/pith/conf.h alpine-2.00.colortext/pith/conf.h *** alpine-2.00/pith/conf.h 2008-08-19 17:27:11.000000000 -0700 --- alpine-2.00.colortext/pith/conf.h 2008-08-26 20:56:51.000000000 -0700 *************** *** 160,165 **** --- 160,167 ---- #define GLO_EDITOR vars[V_EDITOR].global_val.l #define VAR_SPELLER vars[V_SPELLER].current_val.p #define GLO_SPELLER vars[V_SPELLER].global_val.p + #define VAR_SPECIAL_TEXT vars[V_SPECIAL_TEXT].current_val.l + #define GLO_SPECIAL_TEXT vars[V_SPECIAL_TEXT].global_val.l #define VAR_FILLCOL vars[V_FILLCOL].current_val.p #define GLO_FILLCOL vars[V_FILLCOL].global_val.p #define VAR_DEADLETS vars[V_DEADLETS].current_val.p *************** *** 443,448 **** --- 445,452 ---- #define GLO_SIGNATURE_FORE_COLOR vars[V_SIGNATURE_FORE_COLOR].global_val.p #define VAR_SIGNATURE_BACK_COLOR vars[V_SIGNATURE_BACK_COLOR].current_val.p #define GLO_SIGNATURE_BACK_COLOR vars[V_SIGNATURE_BACK_COLOR].global_val.p + #define VAR_SPECIAL_TEXT_FORE_COLOR vars[V_SPECIAL_TEXT_FORE_COLOR].current_val.p + #define VAR_SPECIAL_TEXT_BACK_COLOR vars[V_SPECIAL_TEXT_BACK_COLOR].current_val.p #define VAR_PROMPT_FORE_COLOR vars[V_PROMPT_FORE_COLOR].current_val.p #define VAR_PROMPT_BACK_COLOR vars[V_PROMPT_BACK_COLOR].current_val.p #define VAR_VIEW_HDR_COLORS vars[V_VIEW_HDR_COLORS].current_val.l diff -rc alpine-2.00/pith/conftype.h alpine-2.00.colortext/pith/conftype.h *** alpine-2.00/pith/conftype.h 2008-08-19 17:27:11.000000000 -0700 --- alpine-2.00.colortext/pith/conftype.h 2008-08-26 20:56:51.000000000 -0700 *************** *** 79,84 **** --- 79,85 ---- , V_EDITOR , V_SPELLER , V_FILLCOL + , V_SPECIAL_TEXT , V_REPLY_STRING , V_REPLY_INTRO , V_QUOTE_REPLACE_STRING *************** *** 223,228 **** --- 224,231 ---- , V_INCUNSEEN_BACK_COLOR , V_SIGNATURE_FORE_COLOR , V_SIGNATURE_BACK_COLOR + , V_SPECIAL_TEXT_FORE_COLOR + , V_SPECIAL_TEXT_BACK_COLOR , V_PROMPT_FORE_COLOR , V_PROMPT_BACK_COLOR , V_HEADER_GENERAL_FORE_COLOR diff -rc alpine-2.00/pith/mailview.c alpine-2.00.colortext/pith/mailview.c *** alpine-2.00/pith/mailview.c 2008-07-11 16:20:32.000000000 -0700 --- alpine-2.00.colortext/pith/mailview.c 2008-08-26 20:56:51.000000000 -0700 *************** *** 281,286 **** --- 281,294 ---- if((flgs & FM_DISPLAY) && !(flgs & FM_NOCOLOR) && pico_usingcolor() + && ps_global->VAR_SPECIAL_TEXT_FORE_COLOR + && ps_global->VAR_SPECIAL_TEXT_BACK_COLOR){ + gf_link_filter(gf_line_test, gf_line_test_opt(color_this_text, NULL)); + } + + if((flgs & FM_DISPLAY) + && !(flgs & FM_NOCOLOR) + && pico_usingcolor() && ps_global->VAR_SIGNATURE_FORE_COLOR && ps_global->VAR_SIGNATURE_BACK_COLOR){ gf_link_filter(gf_line_test, gf_line_test_opt(color_signature, &is_in_sig)); *************** *** 2488,2493 **** --- 2496,2716 ---- return(color_pair); } + void + interval_free(ival) + IVAL_S **ival; + { + if (!(*ival)) + return; + + if ((*ival)->next) + interval_free(&((*ival)->next)); + + fs_give((void **)(ival)); + } + + IVAL_S * + compute_interval (string, endm) + char *string; + int endm; + { + IVAL_S *ival = NULL, *nextival= NULL, *d; + regmatch_t pmatch; + + if(ps_global->paterror == 0) + if (regexec(&ps_global->colorpat, string, 1, &pmatch, 0) == 0){ + ival = (IVAL_S *) fs_get(sizeof(IVAL_S)); + memset (ival, 0, sizeof(IVAL_S)); + ival->start = endm + pmatch.rm_so; + ival->end = endm + pmatch.rm_eo; + nextival = compute_interval(string+pmatch.rm_so+1, ival->start+1); + if (nextival){ + if (nextival->start <= ival->end){ + ival->end = nextival->end; + d = nextival->next; + nextival->next = NULL; + ival->next = d; + interval_free(&nextival); + } + else + ival->next = nextival; + } + } + return ival; + } + + void + regex_pattern(plist) + char **plist; + { + int i = 0, j = 0, len = 0; + char *pattern = NULL; + regex_t preg; + + if(ps_global->paterror == 0) + regfree(&ps_global->colorpat); + + if(plist && *plist && *plist){ + for (i = 0; plist[i] && plist[i][0]; i++) + len += strlen(plist[i]) + 1; + pattern = (char *) fs_get(len * sizeof(char)); + *pattern = '\0'; + for (j = 0; j < i; j++){ + strcat(pattern, plist[j]); + strcat(pattern, (j < i - 1) ? "|" : ""); + } + if ((ps_global->paterror = regcomp(&preg, pattern, REG_EXTENDED)) != 0) + regfree(&preg); + else + ps_global->colorpat = preg; + } + if(pattern) + fs_give((void **)&pattern); + } + + LT_INS_S ** + insert_color_special_text(ins, p, ival, last_end, col) + LT_INS_S **ins; + char **p; + IVAL_S *ival; + int last_end; + COLOR_PAIR *col; + { + struct variable *vars = ps_global->vars; + + if (ival){ + *p += ival->start - last_end; + ins = gf_line_test_new_ins(ins, *p, color_embed(col->fg, col->bg), + (2 * RGBLEN) + 4); + *p += ival->end - ival->start; + ins = gf_line_test_new_ins(ins, *p, color_embed(VAR_NORM_FORE_COLOR, + VAR_NORM_BACK_COLOR), (2 * RGBLEN) + 4); + ins = insert_color_special_text(ins, p, ival->next, ival->end, col); + } + return ins; + } + + int + length_color(p, begin_color) + char *p; + int begin_color; + { + int len = 0, done = begin_color ? 0 : -1; + char *orig = p; + + while (*p && done <= 0){ + switch(*p++){ + case TAG_HANDLE : + p += *p + 1; + done++; + break; + + case TAG_FGCOLOR : + case TAG_BGCOLOR : + p += RGBLEN; + if (!begin_color) + done++; + break; + + default : + break; + } + } + len = p - orig; + return len; + } + + int + any_color_in_string(p) + char *p; + { + int rv = 0; + char *orig = p; + while (*p && !rv) + if (*p++ == TAG_EMBED) + rv = p - orig; + return rv; + } + + void + remove_spaces_ival(ivalp, p) + IVAL_S **ivalp; + char *p; + { + IVAL_S *ival; + int i; + if (!ivalp || !*ivalp) + return; + ival = *ivalp; + for (i = 0; isspace((unsigned char) p[ival->start + i]); i++); + if (ival->start + i < ival->end) /* do not do this if match only spaces */ + ival->start += i; + else + return; + for (i = 0; isspace((unsigned char) p[ival->end - i - 1]); i++); + ival->end -= i; + if (ival->next) + remove_spaces_ival(&(ival->next), p); + } + + int + color_this_text(linenum, line, ins, local) + long linenum; + char *line; + LT_INS_S **ins; + void *local; + { + struct variable *vars = ps_global->vars; + COLOR_PAIR *col = NULL; + char *p; + int i = 0; + static char *pattern = NULL; + /* char *buf; + + select_quote(linenum, line, ins, (void *)code); + for (i = 0; tmp_20k_buf[i] && (buf[i] = tmp_20k_buf[i]); i++); + buf[i] = '\0'; */ + p = line + i; + + if(VAR_SPECIAL_TEXT_FORE_COLOR && VAR_SPECIAL_TEXT_BACK_COLOR + && (col = new_color_pair(VAR_SPECIAL_TEXT_FORE_COLOR, + VAR_SPECIAL_TEXT_BACK_COLOR)) + && !pico_is_good_colorpair(col)) + free_color_pair(&col); + + if(ps_global->VAR_SPECIAL_TEXT && *ps_global->VAR_SPECIAL_TEXT + && **ps_global->VAR_SPECIAL_TEXT && col){ + IVAL_S *ival; + int done = 0, begin_color = 0; + + while (!done){ + if (i = any_color_in_string(p)){ + begin_color = (begin_color + 1) % 2; + if (begin_color){ + p[i - 1] = '\0'; + ival = compute_interval(p, 0); + remove_spaces_ival(&ival, p); + p[i - 1] = TAG_EMBED; + ins = insert_color_special_text(ins, &p, ival, 0, col); + } + for (;*p++ != TAG_EMBED; ); + p += length_color(p, begin_color); + } + else{ + ival = compute_interval(p, 0); + remove_spaces_ival(&ival, p); + ins = insert_color_special_text(ins, &p, ival, 0, col); + done++; + } + interval_free(&ival); + if (!*p) + done++; + } + free_color_pair(&col); + } + + return 0; + } /* * The argument fieldname is something like "Subject:..." or "Subject". diff -rc alpine-2.00/pith/mailview.h alpine-2.00.colortext/pith/mailview.h *** alpine-2.00/pith/mailview.h 2008-06-03 08:54:15.000000000 -0700 --- alpine-2.00.colortext/pith/mailview.h 2008-08-26 20:56:51.000000000 -0700 *************** *** 29,34 **** --- 29,40 ---- #include "../pith/color.h" + typedef struct IVAL { + int start; + int end; + struct IVAL *next; + } IVAL_S; + /* format_message flags */ #define FM_DISPLAY 0x0001 /* result is headed for display */ #define FM_NEW_MESS 0x0002 /* a new message so zero out attachment descrip */ *************** *** 125,130 **** --- 131,145 ---- int url_hilite(long, char *, LT_INS_S **, void *); int handle_start_color(char *, size_t, int *, int); int handle_end_color(char *, size_t, int *); + IVAL_S *compute_interval(char *, int); + void remove_spaces_ival(IVAL_S **, char *); + void interval_free(IVAL_S **); + void regex_pattern(char **); + LT_INS_S **insert_color_special_text(LT_INS_S **, char **, IVAL_S *, + int, COLOR_PAIR *); + int any_color_in_string(char *); + int length_color(char *, int); + int color_this_text(long, char *, LT_INS_S **, void *); /* * BUG: BELOW IS UNIX/PC ONLY since config'd browser means nothing to webpine diff -rc alpine-2.00/pith/pine.hlp alpine-2.00.colortext/pith/pine.hlp *** alpine-2.00/pith/pine.hlp 2008-08-22 17:07:05.000000000 -0700 --- alpine-2.00.colortext/pith/pine.hlp 2008-08-26 20:56:52.000000000 -0700 *************** *** 3402,3407 **** --- 3402,3408 ---- <li><a href="h_config_print_cat">OPTION: <!--#echo var="VAR_personal-print-category"--></a> <li><a href="h_config_print_command">OPTION: <!--#echo var="VAR_personal-print-command"--></a> <li><a href="h_config_post_char_set">OPTION: <!--#echo var="VAR_posting-character-set"--></a> + <li><a href="h_config_special_text_to_color">OPTION: <!--#echo var="VAR_h_config_special_text_to_color"--></a> <li><a href="h_config_postponed_folder">OPTION: <!--#echo var="VAR_postponed-folder"--></a> <li><a href="h_config_print_font_char_set">OPTION: Print-Font-Char-Set</a> <li><a href="h_config_print_font_name">OPTION: Print-Font-Name</a> *************** *** 3430,3435 **** --- 3431,3437 ---- <li><a href="h_config_sending_filter">OPTION: <!--#echo var="VAR_sending-filters"--></a> <li><a href="h_config_sendmail_path">OPTION: <!--#echo var="VAR_sendmail-path"--></a> <li><a href="h_config_signature_color">OPTION: Signature Color</a> + <li><a href="h_config_special_text_color">OPTION: Special Text Color</a> <li><a href="h_config_signature_file">OPTION: <!--#echo var="VAR_signature-file"--></a> <li><a href="h_config_smtp_server">OPTION: <!--#echo var="VAR_smtp-server"--></a> <li><a href="h_config_sort_key">OPTION: <!--#echo var="VAR_sort-key"--></a> *************** *** 22592,22597 **** --- 22594,22636 ---- <End of help on this topic> </BODY> </HTML> + ====== h_config_special_text_to_color ===== + <HTML> + <HEAD> + <TITLE>OPTION: <!--#echo var="VAR_special-text-color"--></TITLE> + </HEAD> + <BODY> + <H1>OPTION: <!--#echo var="VAR_special-text-color"--></H1> + + Use this option to enter patterns (text or regular expressions) that + Alpine will highlight in the body of the text that is not part of a handle + (an internal or external link that Alpine paints in a different color). + + <P> + Enter each pattern in a different line. Pine will internally merge these + patterns (by adding a "|" character), or you can add them all in one line + by separating them by a "|" character. There is only a <A + HREF="h_regex_text">set</A> of regular expressions that are matched. + + <P> + Pine will use the colors defined in the + <A HREF="h_config_special_text_color">Special Text Color</A> variable. + to paint any match. + + <P> + If the Special Text Color is not set, setting this variable will not + cause that special text to be indicated in any special way. It will look + like any normal text. You must set those colors in order to make Pine + paint the screen differently when it finds the patterns specified in this + variable. + + <P> + <UL> + <LI><A HREF="h_finding_help">Finding more information and requesting help</A> + </UL><P> + <End of help on this topic> + </BODY> + </HTML> ====== h_config_display_filters ===== <HTML> <HEAD> *************** *** 31197,31202 **** --- 31236,31265 ---- <End of help on this topic> </BODY> </HTML> + ====== h_config_special_text_color ===== + <HTML> + <HEAD> + <TITLE>OPTION: Special Text Color</TITLE> + </HEAD> + <BODY> + <H1>OPTION: Special Text Color</H1> + + Sets the color Pine uses for coloring any text in the body of the message + that is not part of a handle (and internal or external link that Pine + paints in a different color). By default, this variable is not defined, + which means that text that matches the pattern is not painted in any + particular way. This variable must be set in a special form if you + want text to be painted. + + <P> + <A HREF="h_color_setup">Descriptions of the available commands</A> + <P> + Look <A HREF="h_edit_nav_cmds">here</A> + to see the available Editing and Navigation commands. + <P> + <End of help on this topic> + </BODY> + </HTML> ====== h_config_prompt_color ===== <HTML> <HEAD> diff -rc alpine-2.00/pith/state.c alpine-2.00.colortext/pith/state.c *** alpine-2.00/pith/state.c 2008-06-03 15:31:05.000000000 -0700 --- alpine-2.00.colortext/pith/state.c 2008-08-26 20:56:52.000000000 -0700 *************** *** 130,135 **** --- 130,138 ---- if((*pps)->folders_dir != NULL) fs_give((void **)&(*pps)->folders_dir); + if((*pps)->paterror == 0) + regfree(&(*pps)->colorpat); + if((*pps)->ui.homedir) fs_give((void **)&(*pps)->ui.homedir); diff -rc alpine-2.00/pith/state.h alpine-2.00.colortext/pith/state.h *** alpine-2.00/pith/state.h 2008-06-03 08:54:15.000000000 -0700 --- alpine-2.00.colortext/pith/state.h 2008-08-26 20:56:52.000000000 -0700 *************** *** 317,322 **** --- 317,324 ---- char *display_charmap; /* needs to be freed */ char *keyboard_charmap; /* needs to be freed */ void *input_cs; + regex_t colorpat; + int paterror; char *posting_charmap; /* needs to be freed */ diff -rc alpine-2.00/pith/text.c alpine-2.00.colortext/pith/text.c *** alpine-2.00/pith/text.c 2008-03-18 10:24:31.000000000 -0700 --- alpine-2.00.colortext/pith/text.c 2008-08-26 20:56:52.000000000 -0700 *************** *** 170,175 **** --- 170,184 ---- gf_url_hilite_opt(&uh,handlesp,0)); } + if((flags & FM_DISPLAY) + && !(flags & FM_NOCOLOR) + && pico_usingcolor() + && VAR_SPECIAL_TEXT_FORE_COLOR + && VAR_SPECIAL_TEXT_BACK_COLOR){ + filters[filtcnt].filter = gf_line_test; + filters[filtcnt++].data = gf_line_test_opt(color_this_text, NULL); + } + /* * First, paint the signature. * Disclaimers noted below for coloring quotes apply here as well. ++++++ chappa-fancy.patch.gz ++++++ ++++ 4014 lines (skipped) ++++++ chappa-ignoresize.patch.gz ++++++ diff -rc alpine-2.00/alpine/mailcmd.c alpine-2.00.ignoresize/alpine/mailcmd.c *** alpine-2.00/alpine/mailcmd.c 2008-08-21 15:14:45.000000000 -0700 --- alpine-2.00.ignoresize/alpine/mailcmd.c 2008-08-26 20:57:34.000000000 -0700 *************** *** 3347,3352 **** --- 3347,3355 ---- {-1, 0, NULL, NULL} }; + if(F_ON(F_IGNORE_SIZE, ps_global)) + return 'y'; + if(flags & SSCP_INIT || flags & SSCP_END){ if(flags & SSCP_END && possible_corruption) q_status_message(SM_ORDER, 3, 3, "There is possible data corruption, check the results"); diff -rc alpine-2.00/pith/conf.c alpine-2.00.ignoresize/pith/conf.c *** alpine-2.00/pith/conf.c 2008-08-22 17:07:05.000000000 -0700 --- alpine-2.00.ignoresize/pith/conf.c 2008-08-26 20:57:34.000000000 -0700 *************** *** 3044,3049 **** --- 3044,3051 ---- F_FULL_AUTO_EXPUNGE, h_config_full_auto_expunge, PREF_MISC, 0}, {"force-arrow-cursor", NULL, F_FORCE_ARROW, h_config_force_arrow, PREF_MISC, 0}, + {"ignore-size-changes", NULL, + F_IGNORE_SIZE, h_config_ignore_size, PREF_MISC, 0}, {"maildrops-preserve-state", NULL, F_MAILDROPS_PRESERVE_STATE, h_config_maildrops_preserve_state, PREF_MISC, 0}, diff -rc alpine-2.00/pith/conftype.h alpine-2.00.ignoresize/pith/conftype.h *** alpine-2.00/pith/conftype.h 2008-08-19 17:27:11.000000000 -0700 --- alpine-2.00.ignoresize/pith/conftype.h 2008-08-26 20:57:34.000000000 -0700 *************** *** 334,339 **** --- 334,340 ---- F_FORCE_ARROW, F_PRUNE_USES_ISO, F_ALT_ED_NOW, + F_IGNORE_SIZE, F_SHOW_DELAY_CUE, F_CANCEL_CONFIRM, F_AUTO_OPEN_NEXT_UNREAD, diff -rc alpine-2.00/pith/pine.hlp alpine-2.00.ignoresize/pith/pine.hlp *** alpine-2.00/pith/pine.hlp 2008-08-22 17:07:05.000000000 -0700 --- alpine-2.00.ignoresize/pith/pine.hlp 2008-08-26 20:57:34.000000000 -0700 *************** *** 3136,3141 **** --- 3136,3142 ---- <li><a href="h_config_full_auto_expunge">FEATURE: <!--#echo var="FEAT_expunge-without-confirm-everywhere"--></a> <li><a href="h_config_no_fcc_attach">FEATURE: <!--#echo var="FEAT_fcc-without-attachments"--></a> <li><a href="h_config_force_arrow">FEATURE: <!--#echo var="FEAT_force-arrow-cursor"--></a> + <li><a href="h_config_ignore_size">FEATURE: <!--#echo var="FEAT_ignore-size-changes"--></a> <li><a href="h_config_forward_as_attachment">FEATURE: <!--#echo var="FEAT_forward-as-attachment"--></a> <li><a href="h_config_quell_empty_dirs">FEATURE: <!--#echo var="FEAT_quell-empty-directories"--></a> <li><a href="h_config_hide_nntp_path">FEATURE: <!--#echo var="FEAT_hide-nntp-path"--></a> *************** *** 30209,30214 **** --- 30210,30249 ---- <End of help on this topic> </BODY> </HTML> + ====== h_config_ignore_size ===== + <HTML> + <HEAD> + <TITLE>FEATURE: <!--#echo var="FEAT_ignore-size-changes"--></TITLE> + </HEAD> + <BODY> + <H1>FEATURE: <!--#echo var="FEAT_ignore-size-changes"--></H1> + + When you have an account residing in an IMAP server, Alpine gets the size of + each message from the server. However, when Alpine saves a message residing + in an IMAP server, Alpine computes the size of the message independently. If + these two numbers do not match for a message, Alpine asks you if you still + want to take the risk of saving the message, since data corruption or loss + of data could result of this save. + + <P> + Sometimes the root of this problem is that the server is defective, and + there will not be loss of information when saving such message. Enabling + this feature will make Aline ignore such error and continue saving the + message. If you can determine that this is the case, enable this feature + so that the saving operation will succeed. An example of a defective server + is the Gmail IMAP server. Another example is some versions of the Exchange + server. + + <P> + It is recommended that this feature be disabled most of the time and only + enabled when you find a server which you can determine that has the above + mentioned defect, but be disabled again after making this operation + succeed. + + <P> + <End of help on this topic> + </BODY> + </HTML> ====== h_config_force_low_speed ===== <HTML> <HEAD> diff -rc alpine-2.00/pith/save.c alpine-2.00.ignoresize/pith/save.c *** alpine-2.00/pith/save.c 2008-05-02 14:58:34.000000000 -0700 --- alpine-2.00.ignoresize/pith/save.c 2008-08-26 20:57:34.000000000 -0700 *************** *** 1136,1141 **** --- 1136,1142 ---- snprintf(buf, sizeof(buf), "Message to save shrank: source msg # %ld may be saved incorrectly", mn_raw2m(pkg->msgmap, raw)); + if(F_OFF(F_IGNORE_SIZE, ps_global)) q_status_message(SM_ORDER, 0, 3, buf); } else{ ++++++ chappa-insertpat.patch.gz ++++++ diff -rc alpine-2.00/pico/display.c alpine-2.00.insertpat/pico/display.c *** alpine-2.00/pico/display.c 2008-03-26 10:27:45.000000000 -0700 --- alpine-2.00.insertpat/pico/display.c 2008-08-26 20:56:48.000000000 -0700 *************** *** 1759,1764 **** --- 1759,1776 ---- continue; + case (CTRL|'N'): /* Insert pattern */ + if (pat[0] != '\0'){ + ucs4_strncpy(buf+ucs4_strlen(buf), pat, NPAT); + pputs(pat,1); + b = &buf[ucs4_strlen(buf)]; + dline.vused += ucs4_strlen(pat); + changed = TRUE; + } + else + (*term.t_beep)(); + continue; + case (CTRL|'G') : /* CTRL-G help */ if(term.t_mrow == 0 && km_popped == 0){ movecursor(term.t_nrow-2, 0); diff -rc alpine-2.00/pico/search.c alpine-2.00.insertpat/pico/search.c *** alpine-2.00/pico/search.c 2008-01-04 14:49:15.000000000 -0800 --- alpine-2.00.insertpat/pico/search.c 2008-08-26 20:56:48.000000000 -0700 *************** *** 75,80 **** --- 75,84 ---- N_("~ Hitting only ~R~e~t~u~r~n or at the prompt will cause the"), N_(" search to be made with the default value."), " ", + N_("~ Hitting ~^~N will reinsert the last string you searched for"), + N_(" so that you can edit it (in case you made a mistake entering the"), + N_(" search pattern the first time)."), + " ", N_(" The text search is not case sensitive, and will examine the"), N_(" entire message."), " ", ++++++ chappa-maildir.patch.gz ++++++ ++++ 3624 lines (skipped) ++++++ chappa-searchheader.patch.gz ++++++ diff -rc alpine-2.00/alpine/mailcmd.c alpine-2.00.searchheader/alpine/mailcmd.c *** alpine-2.00/alpine/mailcmd.c 2008-08-21 15:14:45.000000000 -0700 --- alpine-2.00.searchheader/alpine/mailcmd.c 2008-08-26 20:57:00.000000000 -0700 *************** *** 253,258 **** --- 253,259 ---- {'r', 'r', "R", N_("Recipient")}, {'p', 'p', "P", N_("Participant")}, {'b', 'b', "B", N_("Body")}, + {'h', 'h', "H", N_("Header")}, {-1, 0, NULL, NULL} }; *************** *** 7670,7676 **** int not = 0, me = 0; char sstring[80], savedsstring[80], tmp[128]; char *p, *sval = NULL; ! char buftmp[MAILTMPLEN]; ESCKEY_S ekey[8]; ENVELOPE *env = NULL; HelpType help; --- 7671,7677 ---- int not = 0, me = 0; char sstring[80], savedsstring[80], tmp[128]; char *p, *sval = NULL; ! char buftmp[MAILTMPLEN], namehdr[80]; ESCKEY_S ekey[8]; ENVELOPE *env = NULL; HelpType help; *************** *** 7757,7762 **** --- 7758,7797 ---- sval = "BODYTEXT"; break; + case 'h' : + strcpy(tmp, "Name of HEADER to match : "); + flags = OE_APPEND_CURRENT; + namehdr[0] = '\0'; + r = 'x'; + while (r == 'x'){ + int done = 0; + + r = optionally_enter(namehdr, -FOOTER_ROWS(ps_global), 0, + sizeof(namehdr), tmp, ekey, NO_HELP, &flags); + if (r == 1){ + cmd_cancelled("Selection by text"); + return(1); + } + removing_leading_white_space(namehdr); + while(!done){ + while ((namehdr[0] != '\0') && /* remove trailing ":" */ + (namehdr[strlen(namehdr) - 1] == ':')) + namehdr[strlen(namehdr) - 1] = '\0'; + if ((namehdr[0] != '\0') + && isspace((unsigned char) namehdr[strlen(namehdr) - 1])) + removing_trailing_white_space(namehdr); + else + done++; + } + if (strchr(namehdr,' ') || strchr(namehdr,'\t') || + strchr(namehdr,':')) + namehdr[0] = '\0'; + if (namehdr[0] == '\0') + r = 'x'; + } + sval = namehdr; + break; + case 'x': break; *************** *** 7953,7959 **** flagsforhist = (not ? 0x1 : 0) + (me ? 0x2 : 0); save_hist(history, sstring, flagsforhist, NULL); ! rv = agg_text_select(stream, msgmap, type, not, me, sstring, "utf-8", limitsrch); if(we_cancel) cancel_busy_cue(0); --- 7988,7994 ---- flagsforhist = (not ? 0x1 : 0) + (me ? 0x2 : 0); save_hist(history, sstring, flagsforhist, NULL); ! rv = agg_text_select(stream, msgmap, type, namehdr, not, me, sstring, "utf-8", limitsrch); if(we_cancel) cancel_busy_cue(0); diff -rc alpine-2.00/pith/mailcmd.c alpine-2.00.searchheader/pith/mailcmd.c *** alpine-2.00/pith/mailcmd.c 2008-07-09 22:01:13.000000000 -0700 --- alpine-2.00.searchheader/pith/mailcmd.c 2008-08-26 20:57:00.000000000 -0700 *************** *** 2158,2165 **** int ! agg_text_select(MAILSTREAM *stream, MSGNO_S *msgmap, char type, int not, ! int check_for_my_addresses, char *sstring, char *charset, SEARCHSET **limitsrch) { int old_imap, we_cancel; --- 2158,2165 ---- int ! agg_text_select(MAILSTREAM *stream, MSGNO_S *msgmap, char type, char *namehdr, ! int not, int check_for_my_addresses, char *sstring, char *charset, SEARCHSET **limitsrch) { int old_imap, we_cancel; *************** *** 2308,2313 **** --- 2308,2317 ---- if(!mepgm) switch(type){ + case 'h' : /* Any header */ + pgm->header = mail_newsearchheader (namehdr, sstring); + break; + case 'r' : /* TO or CC */ if(old_imap){ /* No OR on old servers */ diff -rc alpine-2.00/pith/mailcmd.h alpine-2.00.searchheader/pith/mailcmd.h *** alpine-2.00/pith/mailcmd.h 2008-07-09 22:01:13.000000000 -0700 --- alpine-2.00.searchheader/pith/mailcmd.h 2008-08-26 20:57:00.000000000 -0700 *************** *** 65,71 **** void cross_delete_crossposts(MAILSTREAM *); long zoom_index(struct pine *, MAILSTREAM *, MSGNO_S *, int); int unzoom_index(struct pine *, MAILSTREAM *, MSGNO_S *); ! int agg_text_select(MAILSTREAM *, MSGNO_S *, char, int, int, char *, char *, SEARCHSET **); int agg_flag_select(MAILSTREAM *, int, int, SEARCHSET **); char *get_uname(char *, char *, int); --- 65,71 ---- void cross_delete_crossposts(MAILSTREAM *); long zoom_index(struct pine *, MAILSTREAM *, MSGNO_S *, int); int unzoom_index(struct pine *, MAILSTREAM *, MSGNO_S *); ! int agg_text_select(MAILSTREAM *, MSGNO_S *, char, char *, int, int, char *, char *, SEARCHSET **); int agg_flag_select(MAILSTREAM *, int, int, SEARCHSET **); char *get_uname(char *, char *, int); diff -rc alpine-2.00/web/src/alpined.d/alpined.c alpine-2.00.searchheader/web/src/alpined.d/alpined.c *** alpine-2.00/web/src/alpined.d/alpined.c 2008-08-22 13:41:37.000000000 -0700 --- alpine-2.00.searchheader/web/src/alpined.d/alpined.c 2008-08-26 20:57:00.000000000 -0700 *************** *** 6848,6854 **** /* BUG: fix charset not to be NULL below */ if(agg_text_select(ps_global->mail_stream, sp_msgmap(ps_global->mail_stream), ! field, not, 0, text, NULL, NULL)) /* BUG: plug in "charset" above? */ return(peSelectError(interp, "programmer botch")); } --- 6848,6854 ---- /* BUG: fix charset not to be NULL below */ if(agg_text_select(ps_global->mail_stream, sp_msgmap(ps_global->mail_stream), ! field, NULL, not, 0, text, NULL, NULL)) /* BUG: plug in "charset" above? */ return(peSelectError(interp, "programmer botch")); } ++++++ chappa-WrtAcc.patch.gz ++++++ diff -rc alpine-2.00/pico/basic.c alpine-2.00.WrtAcc/pico/basic.c *** alpine-2.00/pico/basic.c 2007-11-26 15:45:22.000000000 -0800 --- alpine-2.00.WrtAcc/pico/basic.c 2008-08-26 20:56:33.000000000 -0700 *************** *** 343,348 **** --- 343,531 ---- return(TRUE); } + unsigned char GetAccent() + { + UCS c,d; + c = GetKey(); + if ((c == '?') || (c == '!')) { + d = c; + c = '\\'; + } + else + if ((c == 's') || (c == 'S')){ + c = d = 's'; + } + else + if ((c == 'l') || (c == 'L')){ + c = d = 'l'; + } + else + d = GetKey(); + return accent(c,d); + } + + int pineaccent(f,n) + int f,n; + { unsigned char e; + + if (e = GetAccent()) + execute(e, 0, 1); + return 1; + } + + unsigned char accent(f,n) + UCS f,n; + { UCS c,d; + + c = f; + d = n; + switch(c){ + case '~' : + switch(d){ + case 'a' : return '\343'; + case 'n' : return '\361'; + case 'o' : return '\365'; + case 'A' : return '\303'; + case 'N' : return '\321'; + case 'O' : return '\325'; + } + break; + case '\047' : + switch(d){ + case 'a' : return '\341'; + case 'e' : return '\351'; + case 'i' : return '\355'; + case 'o' : return '\363'; + case 'u' : return '\372'; + case 'y' : return '\375'; + case 'A' : return '\301'; + case 'E' : return '\311'; + case 'I' : return '\315'; + case 'O' : return '\323'; + case 'U' : return '\332'; + case 'Y' : return '\335'; + } + break; + case '"' : + switch(d){ + case 'a' : return '\344'; + case 'e' : return '\353'; + case 'i' : return '\357'; + case 'o' : return '\366'; + case 'u' : return '\374'; + case 'y' : return '\377'; + case 'A' : return '\304'; + case 'E' : return '\313'; + case 'I' : return '\317'; + case 'O' : return '\326'; + case 'U' : return '\334'; + } + break; + case '^' : + switch(d){ + case 'a' : return '\342'; + case 'e' : return '\352'; + case 'i' : return '\356'; + case 'o' : return '\364'; + case 'u' : return '\373'; + case 'A' : return '\302'; + case 'E' : return '\312'; + case 'I' : return '\316'; + case 'O' : return '\324'; + case 'U' : return '\333'; + case '0' : return '\260'; + case '1' : return '\271'; + case '2' : return '\262'; + case '3' : return '\263'; + } + break; + case '`' : + switch(d){ + case 'a' : return '\340'; + case 'e' : return '\350'; + case 'i' : return '\354'; + case 'o' : return '\362'; + case 'u' : return '\371'; + case 'A' : return '\300'; + case 'E' : return '\310'; + case 'I' : return '\314'; + case 'O' : return '\322'; + case 'U' : return '\331'; + } + break; + case 'o' : + switch(d){ + case 'a' : return '\345'; + case 'A' : return '\305'; + case '/' : return '\370'; + case 'r' : return '\256'; + case 'R' : return '\256'; + case 'c' : return '\251'; + case 'C' : return '\251'; + } + break; + case '-' : + switch(d){ + case 'o' : return '\272'; + case 'O' : return '\272'; + case '0' : return '\272'; + case 'a' : return '\252'; + case 'A' : return '\252'; + case 'l' : return '\243'; + case 'L' : return '\243'; + } + break; + case 'O' : + switch(d){ + case '/' : return '\330'; + case 'r' : return '\256'; + case 'R' : return '\256'; + case 'c' : return '\251'; + case 'C' : return '\251'; + } + case '/' : + switch(d){ + case 'o' : return '\370'; + case 'O' : return '\330'; + } + break; + case 'a' : + switch(d){ + case 'e' : return '\346'; + case 'E' : return '\346'; + } + break; + case 'A' : + switch(d){ + case 'E' : return '\306'; + case 'e' : return '\306'; + } + break; + case ',' : + switch(d){ + case 'c' : return '\347'; + case 'C' : return '\307'; + } + break; + case '\\' : + switch(d){ + case '?' : return '\277'; + case '!' : return '\241'; + } + break; + case 's' : + switch(d){ + case 's' : return '\337'; + } + break; + case 'l' : + switch(d){ + case 'l' : return '\243'; + } + break; + } + return '\0'; + } /* * go forword to the end of the current paragraph diff -rc alpine-2.00/pico/composer.c alpine-2.00.WrtAcc/pico/composer.c *** alpine-2.00/pico/composer.c 2008-03-21 14:31:58.000000000 -0700 --- alpine-2.00.WrtAcc/pico/composer.c 2008-08-26 20:56:33.000000000 -0700 *************** *** 1990,1996 **** tbufp = &strng[ods.p_len]; if(VALID_KEY(ch)){ /* char input */ ! /* * if we are allowing editing, insert the new char * end up leaving tbufp pointing to newly * inserted character in string, and offset to the --- 1990,1996 ---- tbufp = &strng[ods.p_len]; if(VALID_KEY(ch)){ /* char input */ ! insert_char:/* * if we are allowing editing, insert the new char * end up leaving tbufp pointing to newly * inserted character in string, and offset to the *************** *** 2070,2075 **** --- 2070,2082 ---- } else { /* interpret ch as a command */ switch (ch = normalize_cmd(ch, ckm, 2)) { + case (CTRL|'\\') : + if (ch = GetAccent()) + goto insert_char; + else + clearcursor(); + break; + case (CTRL|KEY_LEFT): /* word skip left */ if(ods.p_ind > 0) /* Scoot one char left if possible */ ods.p_ind--; diff -rc alpine-2.00/pico/display.c alpine-2.00.WrtAcc/pico/display.c *** alpine-2.00/pico/display.c 2008-03-26 10:27:45.000000000 -0700 --- alpine-2.00.WrtAcc/pico/display.c 2008-08-26 20:56:33.000000000 -0700 *************** *** 1750,1755 **** --- 1750,1760 ---- b = &buf[ucs4_strlen(buf)]; continue; + case (CTRL|'\\'): + if (c = GetAccent()) + goto text; + continue; + case (CTRL|'F') : /* CTRL-F forward a char*/ case KEY_RIGHT : if(*b == '\0') *************** *** 1868,1874 **** #endif default : ! /* look for match in extra_v */ for(i = 0; i < 12; i++) if(c && c == extra_v[i]){ --- 1873,1879 ---- #endif default : ! text: /* look for match in extra_v */ for(i = 0; i < 12; i++) if(c && c == extra_v[i]){ diff -rc alpine-2.00/pico/ebind.h alpine-2.00.WrtAcc/pico/ebind.h *** alpine-2.00/pico/ebind.h 2007-11-06 15:51:13.000000000 -0800 --- alpine-2.00.WrtAcc/pico/ebind.h 2008-08-26 20:56:33.000000000 -0700 *************** *** 61,67 **** #ifdef MOUSE {KEY_MOUSE, mousepress}, #ifndef _WINDOWS ! {CTRL|'\\', toggle_xterm_mouse}, #endif #endif {CTRL|'A', gotobol}, --- 61,67 ---- #ifdef MOUSE {KEY_MOUSE, mousepress}, #ifndef _WINDOWS ! {CTRL|'|', toggle_xterm_mouse}, #endif #endif {CTRL|'A', gotobol}, *************** *** 100,106 **** {CTRL|KEY_HOME, gotobob}, {CTRL|KEY_END, gotoeob}, {0x7F, backdel}, ! {0, NULL} }; --- 100,108 ---- {CTRL|KEY_HOME, gotobob}, {CTRL|KEY_END, gotoeob}, {0x7F, backdel}, ! {CTRL|'\\', pineaccent}, ! {0, ! NULL} }; *************** *** 123,129 **** #ifdef MOUSE {KEY_MOUSE, mousepress}, #ifndef _WINDOWS ! {CTRL|'\\', toggle_xterm_mouse}, #endif #endif {CTRL|'A', gotobol}, --- 125,131 ---- #ifdef MOUSE {KEY_MOUSE, mousepress}, #ifndef _WINDOWS ! {CTRL|'|', toggle_xterm_mouse}, #endif #endif {CTRL|'A', gotobol}, diff -rc alpine-2.00/pico/efunc.h alpine-2.00.WrtAcc/pico/efunc.h *** alpine-2.00/pico/efunc.h 2007-11-06 15:51:13.000000000 -0800 --- alpine-2.00.WrtAcc/pico/efunc.h 2008-08-26 20:56:33.000000000 -0700 *************** *** 53,58 **** --- 53,61 ---- extern int backline(int, int); extern int gotobop(int, int); extern int gotoeop(int, int); + extern int pineaccent(int, int); + extern unsigned char accent(UCS, UCS); + extern unsigned char GetAccent(void); extern int forwpage(int, int); extern int backpage(int, int); extern int scrollupline(int, int); diff -rc alpine-2.00/pico/main.c alpine-2.00.WrtAcc/pico/main.c *** alpine-2.00/pico/main.c 2008-04-02 15:09:20.000000000 -0700 --- alpine-2.00.WrtAcc/pico/main.c 2008-08-26 20:56:33.000000000 -0700 *************** *** 415,420 **** --- 415,426 ---- emlwrite(_("You may possibly have new mail."), NULL); } + if (c == (CTRL|'\\')){ + c = GetAccent(); + if (!c) + c = NODATA; + } + if(km_popped) switch(c){ case NODATA: diff -rc alpine-2.00/pico/search.c alpine-2.00.WrtAcc/pico/search.c *** alpine-2.00/pico/search.c 2008-01-04 14:49:15.000000000 -0800 --- alpine-2.00.WrtAcc/pico/search.c 2008-08-26 20:56:33.000000000 -0700 *************** *** 273,279 **** } if(status + curwp->w_doto >= llength(curwp->w_dotp) || ! !eq(defpat[status],lgetc(curwp->w_dotp, curwp->w_doto + status).c)) break; /* do nothing! */ status++; } --- 273,279 ---- } if(status + curwp->w_doto >= llength(curwp->w_dotp) || ! !eq((unsigned char)defpat[status],lgetc(curwp->w_dotp, curwp->w_doto + status).c)) break; /* do nothing! */ status++; } *************** *** 924,930 **** c = lgetc(curline, curoff++).c; /* get the char */ /* test it against first char in pattern */ ! if (eq(c, patrn[0]) != FALSE) { /* if we find it..*/ /* setup match pointers */ matchline = curline; matchoff = curoff; --- 924,930 ---- c = lgetc(curline, curoff++).c; /* get the char */ /* test it against first char in pattern */ ! if (eq(c, (unsigned char)patrn[0]) != FALSE) { /* if we find it..*/ /* setup match pointers */ matchline = curline; matchoff = curoff; *************** *** 945,951 **** return(FALSE); /* and test it against the pattern */ ! if (eq(*patptr, c) == FALSE) goto fail; } --- 945,951 ---- return(FALSE); /* and test it against the pattern */ ! if (eq((unsigned char) *patptr, c) == FALSE) goto fail; } ++++++ pine-nonvoid-function.patch ++++++ --- pith/filter.c +++ pith/filter.c @@ -6871,6 +6871,7 @@ gf_error("Incompatible RSS version"); } + return(1); /* Is this correct? */ } /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de