1. 18 Jun, 2017 1 commit
    • The new version is able to hold input history from several source lines,
      which makes it easier to implement #line directives in lexers.
      
      * include/mailutils/locus.h (mu_linetrack_stat): Remove start_line
      (mu_linetrack_origin): New proto.
      * libmailutils/locus/linetrack.c: Improve indexing.  Keep track of several
      input files.
      * libmailutils/tests/linetrack.at: Add new tests.
      * libmailutils/tests/linetrack.c: Improve command set.
      
      * mimeview/grammar.y (make_node): Initialize locus
      Sergey Poznyakoff authored
  2. 17 Jun, 2017 1 commit
  3. 16 Jun, 2017 2 commits
  4. 15 Jun, 2017 2 commits
    • Clean up semantics of initializers.  Each locus type can be initialized
      either statically (by assigning the MU_LOCUS_*_INITIALIZER macro), or
      dynamically (by calling mu_locus_*_init function).  Whatever method is
      used, it is important that it be initialized prior to using any other
      mu_locus_* function.
      
      * include/mailutils/locus.h (mu_locus_point_init): Takes single argument.
      Returns nothing.
      (mu_locus_range_init): New proto.
      * libmailutils/locus/locus.c (mu_locus_point_init): Rewrite.
      (mu_locus_range_init): New function.
      * libmailutils/cfg/parser.y (mu_cfg_alloc_node): Initialize locus.
      * libmailutils/tests/logstr.c: Fix printf argyment types.
      * libmu_sieve/extensions/moderator.c
      (moderator_filter_message): Initialize locus.
      * libmu_sieve/sieve-gram.y (node_alloc): Likewise.
      * mu/libexec/logger.c (parse_locus_point, set_locus): Likewise.
      Sergey Poznyakoff authored
    • * include/mailutils/locus.h: Add copyleft.
      (mu_ident_stat): New proto.
      * include/mailutils/types.hin (mu_locus_DEPRECATED): Update commit.
      Include link to the wiki article.
      * include/mailutils/yyloc.h: Add copyleft.
      * libmailutils/locus/ident.c (mu_ident_stat): New function.
      * libmailutils/locus/locus.c (mu_locus_point_init)
      (mu_locus_point_copy): Don't touch destination unless setting
      mu_file member succeeds.
      (mu_locus_range_copy): deinitialize dest before assignment.
      * libmailutils/stream/logstream.c (_log_write): Use mu_locus_range_copy
      to save locus.
      (mu_ioctl_logstream_get_locus_deprecated)
      (mu_ioctl_logstream_set_locus_deprecated): Include link to the
      wiki article.
      * libmailutils/tests/linetrack.c (main): Destroy tracker before exiting.
      * libmailutils/tests/logstr.c: Make it possible to run selected tests.
      Sergey Poznyakoff authored
  5. 14 Jun, 2017 4 commits
    • These are needed only during development cycle, as the created sources
      are included in the tarball.
      
      * am/bison.m4: New file.
      * am/flex.m4: New file.
      * configure.ac: Use MU_PROG_BISON and MU_PROG_FLEX
      * mu-aux/gylwrap: Drop support for alternative command line syntax
      and the --stdout option.
      Sergey Poznyakoff authored
    • * include/mailutils/sieve.h (mu_sieve_compile_text): New proto.
      (mu_sieve_compile_buffer): Backward-compatible proto.
      * include/mailutils/stream.h ((MU_IOCTL_LOGSTREAM_GET_LOCUS_DEPRECATED)
      (MU_IOCTL_LOGSTREAM_SET_LOCUS_DEPRECATED): New defines.
      (MU_IOCTL_LOGSTREAM_GET_LOCUS)
      (MU_IOCTL_LOGSTREAM_SET_LOCUS): Use external functions to make
      sure any references to these are marked as deprecated.
      * include/mailutils/types.hin (mu_locus_DEPRECATED): New struct.
      (mu_locus): Define to mu_locus_DEPRECATED
      * libmailutils/stream/logstream.c (_log_ctl): Handle the deprecated
      ctls.
      * libmu_sieve/extensions/moderator.c (moderator_filter_message): Use
      mu_sieve_compile_text.
      * libmu_sieve/sieve-gram.y (mu_sieve_compile_buffer): Rename to
      mu_sieve_compile_text.  Re-introduce it as a backward-compatibility
      API.
      * sieve/sieve.c: Call mu_sieve_compile_text instead of
      mu_sieve_compile_buffer.
      Sergey Poznyakoff authored
    • * mu-aux/gylwrap (@yysym): Add more symbols from lex.
      * mh/mh_alias_lex.l (mh_alias_read): Return meaningful value.
      Sergey Poznyakoff authored
    • * libmu_sieve/sieve-lex.l: Allocate new ctx structure
      (restore accidentally deleted file.
      * libmailutils/locus/debug.c: Add missing copyleft.
      * libmailutils/locus/genprloc.c: Likewise.
      * libmailutils/locus/ident.c: Likewise.
      * libmailutils/locus/linetrack.c: Likewise.
      * libmailutils/locus/locus.c: Likewise.
      * mu-aux/gencl: Likewise.
      * mu-aux/gitinfo: Likewise.
      * mu-aux/gylwrap: Likewise.
      Sergey Poznyakoff authored
  6. 13 Jun, 2017 4 commits
    • * mh/mh.h (ali_parse_error): Remove.
      * mh/mh_alias_gram.y: Simplify parser.  Use location tracking.
      * mh/mh_alias_lex.l: Switch to mu_linetrack facility
      * mh/tests/ali.at: Update expected location.
      Sergey Poznyakoff authored
    • * include/mailutils/sieve.h (mu_sieve_value_t)<locus>: New field.
      * libmu_sieve/util.c (mu_sieve_value_create): Take a pointer to
      mu_locus_range.  Use it to initialize the locus field.
      * libmu_sieve/sieve-gram.y: Pass loci in calls to mu_sieve_value_create.
      * libmu_sieve/actions.c: Use the most specific locus when displaying
      the message.
      * libmu_sieve/comparator.c: Likewise.
      * libmu_sieve/prog.c: Likewise.
      * libmu_sieve/variables.c: Likewise.
      * sieve/tests/i-numeric.at: Update the expected error location.
      Sergey Poznyakoff authored
    • The aim is to get rid of the explicit rules and use the Autmake framework
      as much as possible, without hurting the flexibility.  To this effect, the
      gylwrap tool is rewritten from scratch (in Perl).  In compatibility
      mode it takes the same arguments as the standard ylwrap.  Additional
      configuration is supplied in the configuration file gylwrap.conf, located
      in the directory where the input file resides.
      
      * mu-aux/gylwrap: Rewrite from scratch.
      * configure.ac (MU_YLWRAP): New subst variable.
      * libmailutils/base/.gitignore: Update.
      * libmailutils/base/Makefile.am: Update.
      * libmailutils/base/gylwrap.conf: New file.
      * libmailutils/cfg/.gitignore: Update.
      * libmailutils/cfg/Makefile.am: Use new YLWRAP
      * libmailutils/cfg/cfg.h: Remove.
      * libmailutils/cfg/gylwrap.conf: New file.
      * libmailutils/cfg/lexer.l: Include mailutils/yyloc.h directly.
      * libmailutils/cfg/parser.y: Likewise.
      * libmu_sieve/Makefile.am: Use new YLWRAP
      * libmu_sieve/gylwrap.conf: New file.
      * libmu_sieve/sieve.y: Rename to libmu_sieve/sieve-gram.y
      * libmu_sieve/sieve.l: Rename to libmu_sieve/sieve-lex.l
      * mail/Makefile.am: Use new YLWRAP
      * mh/.gitignore: Update.
      * mh/Makefile.am: Use new YLWRAP
      * mh/gylwrap.conf: New file.
      * mh/mh_alias.y: Rename to mh/mh_alias_gram.y
      * mh/mh_alias.l: Rename to mh/mh_alias_lex.l
      * mh/pick.y: Rename to mh/pick-gram.y
      * mimeview/.gitignore: Update.
      * mimeview/Makefile.am: Use new YLWRAP
      * mimeview/mimetypes.y: Rename to mimeview/grammar.y
      * mimeview/gylwrap.conf: New file.
      * mimeview/mimetypes.l: Rename to mimeview/lexer.l
      * po/POTFILES.in: Update
      Sergey Poznyakoff authored
    • * include/mailutils/types.hin (mu_locus): Remove.
      
      * include/mailutils/diag.h (mu_diag_at_locus): Remove.
      (mu_diag_at_locus_point,mu_diag_at_locus_range): New protos.
      * include/mailutils/mailutils.h: Include locus.h
      
      * include/mailutils/stream.h (MU_IOCTL_LOGSTREAM_GET_LOCUS)
      (MU_IOCTL_LOGSTREAM_SET_LOCUS): Remove.
      * libmailutils/stream/logstream.c (_log_ctl): Reflect this.
      * libmailutils/tests/logstr.at: Remove the related test.
      * libmailutils/tests/logstr.c: Ditto.
      
      * libmailutils/cfg/Makefile.am: Add new header.
      * libmailutils/cfg/cfg.h: New file.
      * libmailutils/cfg/format.c: Use mu_locus_range
      * libmailutils/cfg/lexer.l: Use the mu_linetrack facility
      * libmailutils/cfg/parser.y: LIkewise.
      * libmailutils/diag/diag.c (mu_diag_at_locus): Remove.
      (mu_diag_at_locus_point,mu_diag_at_locus_range): New protos.
      
      * comsat/action.c: Use mu_locus_point and mu_locus_range
      instead of the removed mu_locus.
      * include/mailutils/auth.h: Likewise.
      * include/mailutils/cfg.h: Likewise.
      * include/mailutils/sieve.h: Likewise.
      * libmailutils/base/wicket.c: Likewise.
      * libmailutils/tests/wicket.c: Likewise.
      * libmu_auth/radius.c: Likewise.
      * libmu_sieve/actions.c: Likewise.
      * libmu_sieve/comparator.c: Likewise.
      * libmu_sieve/extensions/moderator.c: Likewise.
      * libmu_sieve/mem.c: Likewise.
      * libmu_sieve/prog.c: Likewise.
      * libmu_sieve/require.c: Likewise.
      * libmu_sieve/runtime.c: Likewise.
      * libmu_sieve/sieve-priv.h: Likewise.
      * libmu_sieve/sieve.l: Use the mu_linetrack facility.
      * libmu_sieve/sieve.y: Likewise.
      * libmu_sieve/util.c: Use mu_locus_point and mu_locus_range
      instead of the removed mu_locus
      * libmu_sieve/variables.c: Likewise.
      * mail/source.c: Likewise.
      * mu/libexec/dbm.c: Likewise.
      * mu/libexec/logger.c: Likewise.
      * mu/libexec/wicket.c: Likewise.
      * sieve/sieve.c: Likewise.
      * sieve/tests/i-numeric.at: Update expected locations
      Sergey Poznyakoff authored
  7. 12 Jun, 2017 3 commits
    • * include/mailutils/locus.h (mu_linetrack_rebase): New proto.
      * libmailutils/locus/linetrack.c (mu_linetrack_rebase): New function.
      * libmailutils/diag/diag.c (mu_diag_at_locus_range): New function.
      Sergey Poznyakoff authored
    • * include/mailutils/locus.h (mu_stream_print_locus_point): New proto.
      (mu_locus_range_copy): New proto.
      * include/mailutils/yyloc.h (mu_file_print_locus_point)
      (mu_file_print_locus_range): New protos.
      (YY_LOCATION_PRINT): Redo using mu_file_print_locus_range.
      * libmailutils/locus/filprloc.c: New file.
      * libmailutils/locus/genprloc.c: New file.
      * libmailutils/locus/strprloc.c: New file.
      * libmailutils/locus/Makefile.am: Add new files.
      * libmailutils/locus/debug.c (mu_stream_print_locus_range): Remove.
      Declared elsewhere.
      * libmailutils/locus/linetrack.c: use mu_locus_point_set_file,
      instead of mu_locus_point_init.
      * libmailutils/locus/locus.c: Likewise.
      (mu_locus_range_copy)P: New function.
      * mimeview/mimetypes.l: Provide rule for \n in ARGSTRING
      Always print diagnostics before returning BOGUS
      (lex_next_rule): Rewrite.  Print verbose diagnostics if app.trace6 is set.
      (mimetypes_close): Deinitialize yylloc.
      * mimeview/mimetypes.y: Catch the BOGUS token.
      Adjust conflict expectation.
      Properly reference assigned loci.
      (mimetypes_parse): Return 1 if any errors detected.
      * mimeview/mimeview.c: Use debug category app instead of mime.
      * mimeview/tests/testsuite.at: Add new tests.
      * libmailutils/stream/logstream.c (_log_done): Deinitialize
      locus range.
      Sergey Poznyakoff authored
    • * include/mailutils/locus.h (MU_LOCUS_POINT_INITIALIZER): New define
      (MU_LOCUS_RANGE_INITIALIZER): New define
      (mu_locus_point_set_file, mu_locus_point_init)
      (mu_locus_point_deinit, mu_locus_point_copy)
      (mu_locus_range_deinit): New protos
      * libmailutils/locus/locus.c: New file.
      * libmailutils/locus/Makefile.am: Add new file.
      * libmailutils/locus/linetrack.c (mu_linetrack_at_bol): New function.
      (mu_linetrack_locus): New function.
      (mu_linetrack_advance): Use mu_locus_point_set_file to set the mu_file
      field.
      * libmailutils/tests/linetrack.c: Initialize and deinitialize locus
      range.
      * mimeview/mimetypes.l: switch to line tracker
      * mimeview/mimeview.h: Use defines from yyloc.h
      Sergey Poznyakoff authored
  8. 10 Jun, 2017 1 commit
    • The commit 744c4a9c didn't take into account the -nodraftfolder
      and -nowhatnowproc options, which can be used to cancel the
      effect of the corresponding facilities.  This commit fixes it.
      
      * mh/mh_getopt.c (mh_getopt_ext): New function.
      * mh/mh_getopt.h (mh_getopt_ext): New prototype.
      (mh_optinit): New struct.
      
      * mh/tests/comp.at: Test the use of Draft-Folder
      * mh/tests/forw.at: Likewise.
      * mh/tests/repl.at: Likewise.
      
      * mh/comp.c (main): use mh_getopt_ext to properly process draftfolder
      and whatnowproc.
      * mh/forw.c: Likewise.
      * mh/repl.c: Likewise.
      
      * mh/mh.h (mh_whom): Remove.
      (mh_whom_header, mh_whom_file, mh_whom_message): New protos.
      * mh/mh_alias.y (mh_read_aliases): Don't read aliases twice.
      * mh/mh_whatnow.c (whom): Use mh_whom_file.
      * mh/mh_whom.c (mh_whom): Rewrite and rename to mh_whom_file.
      (mh_whom_header, mh_whom_message): New functions.
      
      * mh/whom.c: Use mh_getopt_ext.  Interpret command line
      arguments, depending on whether the draftfile facility is in use.
      Sergey Poznyakoff authored
  9. 09 Jun, 2017 2 commits
    • Sergey Poznyakoff authored
    • It was noted that "mhn -nohead" did not suppress the output of
      headers as "mhn -noheaders" did.  It turned out that the negation
      marker was overwritten while scanning options for possible matching
      alternatives.  This patch fixes it.
      
      * libmailutils/opt/opt.c (find_long_option): Don't overwrite
      the negation attribute of the last found option.
      
      * libmailutils/tests/parseopt.c: New option --headers, to test
      the fix.
      * libmailutils/tests/parseopt28.at: New testcase.
      * libmailutils/tests/Makefile.am: Add new testcase.
      * libmailutils/tests/testsuite.at: Include new testcase.
      
      * libmailutils/tests/parseopt*.at: Trivial changes
      Sergey Poznyakoff authored
  10. 08 Jun, 2017 7 commits
  11. 07 Jun, 2017 4 commits
    • Sergey Poznyakoff authored
    • * include/mailutils/locus.h (mu_stream_print_locus_range)
      (mu_stream_vlprintf, mu_stream_lprintf, mu_lrange_debug): New protos.
      * include/mailutils/stream.h (MU_IOCTL_LOGSTREAM_GET_LOCUS_RANGE)
      (MU_IOCTL_LOGSTREAM_SET_LOCUS_RANGE): New ioctls.
      * include/mailutils/sys/logstream.h (_mu_log_stream): Replace
      locus with struct mu_locus_range locrange.
      * libmailutils/locus/debug.c: Rewrite.
      * libmailutils/locus/ident.c (mu_ident_ref): Accept NULL argument.
      Fix initialization.
      (mu_ident_deref): Accept NULL argument.
      * libmailutils/stream/logstream.c: Rewrite.
      * libmailutils/tests/.gitignore: Update.
      * libmailutils/tests/Makefile.am: Add new tests.
      * libmailutils/tests/testsuite.at: Likewise.
      * libmailutils/tests/logstr.at: New testcase.
      * libmailutils/tests/logstr.c: New file.
      * libmailutils/tests/xscript.at: Minor change.
      * sieve/tests/i-numeric.at: Minor change.
      Sergey Poznyakoff authored
    • MH testsuite produced false negatives when run in a directory accessed
      by its logical name (symlink).  To fix this, avoiding at the same time
      the use of non-portable "pwd -P" & "pwd -L", this commit adds a filter
      utility that replaces both logical and physical cwd with a dot on
      output.  The MH testsuite is updated to use this utility.
      
      * testsuite/cwdrepl.c: New utility
      * testsuite/Makefile.am: Build cwdrepl
      * testsuite/.gitignore: Update.
      * testsuite/cwdrepl.at: New test.
      * testsuite/testsuite.at: Include new test.
      
      * mh/tests/atlocal.in (PATH): Add testsuite
      (remove_curdir): Remove function.
      * mh/tests/comp.at: Use cwdrepl, fix expected output.
      * mh/tests/forw.at: Likewise.
      * mh/tests/mhn.at: Likewise.
      * mh/tests/mhpath.at: Likewise.
      * mh/tests/repl.at: Likewise.
      Sergey Poznyakoff authored
    • Liblocus is a part of libmailutils that will provide functions for
      manipulating source file locations, for use in lexers, grammars, etc.
      This will expand the functionality of the mu_locus type and logstreams.
      
      * configure.ac: add libmailutils/locus/
      * include/mailutils/assoc.h (mu_assoc_install_ref2): New proto.
      * libmailutils/base/assoc.c (mu_assoc_install_ref2): New entry point.
      * libmailutils/base/copyfile.c (copy_regular_file): Add typecasts.
      * libmailutils/Makefile.am: Build liblocus
      * libmailutils/locus/Makefile.am: New file.
      * libmailutils/locus/debug.c: New file.
      * libmailutils/locus/ident.c: New file.
      * libmailutils/locus/tracker.c: New file.
      * libmailutils/tests/Makefile.am: New file.
      * libmailutils/tests/tracker.c: New file.
      Sergey Poznyakoff authored
  12. 06 Jun, 2017 1 commit
  13. 03 Jun, 2017 1 commit
    • * mimeview/Makefile.am: Silent rules
      * mimeview/mimetypes.l (lex_reset): Remove.
      (lex_next_rule): New function.
      * mimeview/mimetypes.y: Expect 12 shift/reduce conflicts.
      Rewrite the error rule
      (yyprint): Print TYPE token correctly
      * mimeview/mimeview.h (lex_next_rule): New proto.
      Sergey Poznyakoff authored
  14. 02 Jun, 2017 2 commits
  15. 01 Jun, 2017 2 commits
    • * am/testsuite.m4: New file.
      * configure.ac: Use the MU_CONFIG_TESTSUITE macro.
      * mimeview/Makefile.am (SUBDIRS): Add tests
      * mimeview/mimetypes.l: Rewrite in three exclusive states.
      * mimeview/mimetypes.y: Simplify grammar.
      * mimeview/mimeview.c: New option --identify (-i).
      * mimeview/mimeview.h: Update.
      
      * mimeview/tests/Makefile.am: New file.
      * mimeview/tests/atlocal.in: New file.
      * mimeview/tests/bf.c: New file.
      * mimeview/tests/testsuite.at: New file.
      
      * README: Update.
      * doc/texinfo/programs.texi
      Sergey Poznyakoff authored
    • * mimeview/mimetypes.y (compare_bytes): Fix improper read size
      Sergey Poznyakoff authored
  16. 31 May, 2017 3 commits
    • In whatnow shell, edit [program [parameters]] now calls program
      with supplied parameters plus the name of the file to edit.
      
      * mh/mh.h (mh_whatnow_env) <reedit>: New member.
      * mh/mh_whatnow.c (edit): Rewrite.
      * mh/whatnow.c (main): Properly handle argv[1]
      * NEWS: Update.
      Sergey Poznyakoff authored
    • * mh/mh_init.c (mh_my_email): If Local-Mailbox is set, use
      its value.
      * mh/tests/scan.at: Add test for Local-Mailbox.
      Sergey Poznyakoff authored
    • Calls to mh_global_profile_get and similar functions must appear
      only after a call to mh_getopt (more properly, after mh_init and
      mh_init2 are callead).  This sequence was inadvertently changed
      by commit e267ac86, due to which comp, forw, repl and burst stopped
      reading important information from .mh_profile.  Bug spotted by
      Pierre-Jean.
      
      * mh/burst.c: Make sure profile variables are accessed after
      the profile is read.
      * mh/comp.c: Likewise.
      * mh/forw.c: Likewise.
      * mh/repl.c: Likewise.
      * mh/mh.h (mh_whatnow_env_from_environ): Split into two functions:
      mh_whatnow_env_from_environ_early, to be called before mh_getopt,
      and mh_whatnow_env_from_environ_late, to be called after it.
      * mh/whatnowenv.c: Ditto.
      * mh/whatnow.c: Call these two in the right order.
      
      * THANKS: Update.
      Sergey Poznyakoff authored