On 10/05/2018 13:38, Mike Williams wrote:
Hi,

This is a bad patch - it breaks Windows builds.  Many issues ...

... and fixed by 8.07.1808 pushed mere minutes after I sent this. Nothing to see, move along.

term.c(1593): warning C4013: 'TGETSTR' undefined; assuming extern
returning int
term.c(1593): warning C4047: '=': 'char_u *' differs in levels of
indirection from 'int'
term.c(1598): warning C4013: 'tgetflag' undefined; assuming extern
returning int
term.c(1614): error C2065: 'key_names': undeclared identifier
term.c(1614): error C2109: subscript requires array or pointer type
term.c(1615): error C2065: 'key_names': undeclared identifier
term.c(1615): error C2109: subscript requires array or pointer type
term.c(1615): error C2198: 'find_termcode': too few arguments for call
term.c(1617): error C2065: 'key_names': undeclared identifier
term.c(1617): error C2109: subscript requires array or pointer type
term.c(1617): warning C4047: '=': 'char_u *' differs in levels of
indirection from 'int'
term.c(1621): error C2065: 'key_names': undeclared identifier
term.c(1621): error C2109: subscript requires array or pointer type
term.c(1622): error C2065: 'key_names': undeclared identifier
term.c(1622): error C2109: subscript requires array or pointer type
term.c(1623): error C2065: 'key_names': undeclared identifier
term.c(1623): error C2109: subscript requires array or pointer type
term.c(1623): error C2198: 'add_termcode': too few arguments for call
term.c(1627): warning C4013: 'tgetnum' undefined; assuming extern
returning int
term.c(1638): error C2065: 'BC': undeclared identifier
term.c(1638): warning C4047: '=': 'int' differs in levels of indirection
from 'char *'
term.c(1639): error C2065: 'UP': undeclared identifier
term.c(1639): warning C4047: '=': 'int' differs in levels of indirection
from 'char *'
term.c(1640): warning C4047: '=': 'char_u *' differs in levels of
indirection from 'int'
term.c(1642): error C2065: 'PC': undeclared identifier

HTH - TTFN

On 10/05/2018 13:12, Bram Moolenaar wrote:

Patch 8.0.1807
Problem:    Function to set terminal name is too long.
Solution:   Refactor the function.  Fix typo in test.
Files:      src/term.c, src/testdir/test_options.vim


*** ../vim-8.0.1806/src/term.c  2018-05-05 14:29:02.421738251 +0200
--- src/term.c  2018-05-10 14:04:24.041744391 +0200
***************
*** 1544,1549 ****
--- 1544,1693 ----
    };
    #endif
+ static void
+ get_term_entries(int *height, int *width)
+ {
+     static struct {
+                   enum SpecialKey dest; /* index in term_strings[] */
+                   char *name;           /* termcap name for string */
+                 } string_names[] =
+                   {   {KS_CE, "ce"}, {KS_AL, "al"}, {KS_CAL,"AL"},
+                       {KS_DL, "dl"}, {KS_CDL,"DL"}, {KS_CS, "cs"},
+                       {KS_CL, "cl"}, {KS_CD, "cd"},
+                       {KS_VI, "vi"}, {KS_VE, "ve"}, {KS_MB, "mb"},
+                       {KS_ME, "me"}, {KS_MR, "mr"},
+                       {KS_MD, "md"}, {KS_SE, "se"}, {KS_SO, "so"},
+                       {KS_CZH,"ZH"}, {KS_CZR,"ZR"}, {KS_UE, "ue"},
+                       {KS_US, "us"}, {KS_UCE, "Ce"}, {KS_UCS, "Cs"},
+                       {KS_STE,"Te"}, {KS_STS,"Ts"},
+                       {KS_CM, "cm"}, {KS_SR, "sr"},
+                       {KS_CRI,"RI"}, {KS_VB, "vb"}, {KS_KS, "ks"},
+                       {KS_KE, "ke"}, {KS_TI, "ti"}, {KS_TE, "te"},
+                       {KS_BC, "bc"}, {KS_CSB,"Sb"}, {KS_CSF,"Sf"},
+                       {KS_CAB,"AB"}, {KS_CAF,"AF"}, {KS_LE, "le"},
+                       {KS_ND, "nd"}, {KS_OP, "op"}, {KS_CRV, "RV"},
+                       {KS_VS, "vs"}, {KS_CVS, "VS"},
+                       {KS_CIS, "IS"}, {KS_CIE, "IE"},
+                       {KS_CSC, "SC"}, {KS_CEC, "EC"},
+                       {KS_TS, "ts"}, {KS_FS, "fs"},
+                       {KS_CWP, "WP"}, {KS_CWS, "WS"},
+                       {KS_CSI, "SI"}, {KS_CEI, "EI"},
+                       {KS_U7, "u7"}, {KS_RFG, "RF"}, {KS_RBG, "RB"},
+                       {KS_8F, "8f"}, {KS_8B, "8b"},
+                       {KS_CBE, "BE"}, {KS_CBD, "BD"},
+                       {KS_CPS, "PS"}, {KS_CPE, "PE"},
+                       {(enum SpecialKey)0, NULL}
+                   };
+     int                   i;
+     char_u        *p;
+     static char_u   tstrbuf[TBUFSZ];
+     char_u        *tp = tstrbuf;
+
+     /*
+      * get output strings
+      */
+     for (i = 0; string_names[i].name != NULL; ++i)
+     {
+       if (TERM_STR(string_names[i].dest) == NULL
+                            || TERM_STR(string_names[i].dest) == empty_option)
+           TERM_STR(string_names[i].dest) = TGETSTR(string_names[i].name, &tp);
+     }
+
+     /* tgetflag() returns 1 if the flag is present, 0 if not and
+      * possibly -1 if the flag doesn't exist. */
+     if ((T_MS == NULL || T_MS == empty_option) && tgetflag("ms") > 0)
+       T_MS = (char_u *)"y";
+     if ((T_XS == NULL || T_XS == empty_option) && tgetflag("xs") > 0)
+       T_XS = (char_u *)"y";
+     if ((T_XN == NULL || T_XN == empty_option) && tgetflag("xn") > 0)
+       T_XN = (char_u *)"y";
+     if ((T_DB == NULL || T_DB == empty_option) && tgetflag("db") > 0)
+       T_DB = (char_u *)"y";
+     if ((T_DA == NULL || T_DA == empty_option) && tgetflag("da") > 0)
+       T_DA = (char_u *)"y";
+     if ((T_UT == NULL || T_UT == empty_option) && tgetflag("ut") > 0)
+       T_UT = (char_u *)"y";
+
+     /*
+      * get key codes
+      */
+     for (i = 0; key_names[i] != NULL; ++i)
+       if (find_termcode((char_u *)key_names[i]) == NULL)
+       {
+           p = TGETSTR(key_names[i], &tp);
+           /* if cursor-left == backspace, ignore it (televideo 925) */
+           if (p != NULL
+                   && (*p != Ctrl_H
+                       || key_names[i][0] != 'k'
+                       || key_names[i][1] != 'l'))
+               add_termcode((char_u *)key_names[i], p, FALSE);
+       }
+
+     if (*height == 0)
+       *height = tgetnum("li");
+     if (*width == 0)
+       *width = tgetnum("co");
+
+     /*
+      * Get number of colors (if not done already).
+      */
+     if (TERM_STR(KS_CCO) == NULL || TERM_STR(KS_CCO) == empty_option)
+       set_color_count(tgetnum("Co"));
+
+ # ifndef hpux
+     BC = (char *)TGETSTR("bc", &tp);
+     UP = (char *)TGETSTR("up", &tp);
+     p = TGETSTR("pc", &tp);
+     if (p)
+       PC = *p;
+ # endif
+ }
+
+     static void
+ report_term_error(char_u *error_msg, char_u *term)
+ {
+     struct builtin_term *termp;
+
+     mch_errmsg("\r\n");
+     if (error_msg != NULL)
+     {
+       mch_errmsg((char *)error_msg);
+       mch_errmsg("\r\n");
+     }
+     mch_errmsg("'");
+     mch_errmsg((char *)term);
+     mch_errmsg(_("' not known. Available builtin terminals are:"));
+     mch_errmsg("\r\n");
+     for (termp = &(builtin_termcaps[0]); termp->bt_string != NULL; ++termp)
+     {
+       if (termp->bt_entry == (int)KS_NAME)
+       {
+ #ifdef HAVE_TGETENT
+           mch_errmsg("    builtin_");
+ #else
+           mch_errmsg("    ");
+ #endif
+           mch_errmsg(termp->bt_string);
+           mch_errmsg("\r\n");
+       }
+     }
+ }
+
+     static void
+ report_default_term(char_u *term)
+ {
+     mch_errmsg(_("defaulting to '"));
+     mch_errmsg((char *)term);
+     mch_errmsg("'\r\n");
+     if (emsg_silent == 0)
+     {
+       screen_start(); /* don't know where cursor is now */
+       out_flush();
+       if (!is_not_a_term())
+           ui_delay(2000L, TRUE);
+     }
+ }
+
    /*
     * Set terminal options for terminal "term".
     * Return OK if terminal 'term' was found in a termcap, FAIL otherwise.
***************
*** 1595,1636 ****
         */
        if (try == 1)
        {
-           char_u          *p;
-           static char_u   tstrbuf[TBUFSZ];
-           int             i;
            char_u          tbuf[TBUFSZ];
-           char_u          *tp;
-           static struct {
-                           enum SpecialKey dest; /* index in term_strings[] */
-                           char *name;           /* termcap name for string */
-                         } string_names[] =
-                           {   {KS_CE, "ce"}, {KS_AL, "al"}, {KS_CAL,"AL"},
-                               {KS_DL, "dl"}, {KS_CDL,"DL"}, {KS_CS, "cs"},
-                               {KS_CL, "cl"}, {KS_CD, "cd"},
-                               {KS_VI, "vi"}, {KS_VE, "ve"}, {KS_MB, "mb"},
-                               {KS_ME, "me"}, {KS_MR, "mr"},
-                               {KS_MD, "md"}, {KS_SE, "se"}, {KS_SO, "so"},
-                               {KS_CZH,"ZH"}, {KS_CZR,"ZR"}, {KS_UE, "ue"},
-                               {KS_US, "us"}, {KS_UCE, "Ce"}, {KS_UCS, "Cs"},
-                               {KS_STE,"Te"}, {KS_STS,"Ts"},
-                               {KS_CM, "cm"}, {KS_SR, "sr"},
-                               {KS_CRI,"RI"}, {KS_VB, "vb"}, {KS_KS, "ks"},
-                               {KS_KE, "ke"}, {KS_TI, "ti"}, {KS_TE, "te"},
-                               {KS_BC, "bc"}, {KS_CSB,"Sb"}, {KS_CSF,"Sf"},
-                               {KS_CAB,"AB"}, {KS_CAF,"AF"}, {KS_LE, "le"},
-                               {KS_ND, "nd"}, {KS_OP, "op"}, {KS_CRV, "RV"},
-                               {KS_VS, "vs"}, {KS_CVS, "VS"},
-                               {KS_CIS, "IS"}, {KS_CIE, "IE"},
-                               {KS_CSC, "SC"}, {KS_CEC, "EC"},
-                               {KS_TS, "ts"}, {KS_FS, "fs"},
-                               {KS_CWP, "WP"}, {KS_CWS, "WS"},
-                               {KS_CSI, "SI"}, {KS_CEI, "EI"},
-                               {KS_U7, "u7"}, {KS_RFG, "RF"}, {KS_RBG, "RB"},
-                               {KS_8F, "8f"}, {KS_8B, "8b"},
-                               {KS_CBE, "BE"}, {KS_CBD, "BD"},
-                               {KS_CPS, "PS"}, {KS_CPE, "PE"},
-                               {(enum SpecialKey)0, NULL}
-                           };
/*
             * If the external termcap does not have a matching entry, try the
--- 1739,1745 ----
***************
*** 1638,1718 ****
             */
            if ((error_msg = tgetent_error(tbuf, term)) == NULL)
            {
-               tp = tstrbuf;
                if (!termcap_cleared)
                {
                    clear_termoptions();        /* clear old options */
                    termcap_cleared = TRUE;
                }
! /* get output strings */
!               for (i = 0; string_names[i].name != NULL; ++i)
!               {
!                   if (TERM_STR(string_names[i].dest) == NULL
!                           || TERM_STR(string_names[i].dest) == empty_option)
!                       TERM_STR(string_names[i].dest) =
!                                          TGETSTR(string_names[i].name, &tp);
!               }
!
!               /* tgetflag() returns 1 if the flag is present, 0 if not and
!                * possibly -1 if the flag doesn't exist. */
!               if ((T_MS == NULL || T_MS == empty_option)
!                                                       && tgetflag("ms") > 0)
!                   T_MS = (char_u *)"y";
!               if ((T_XS == NULL || T_XS == empty_option)
!                                                       && tgetflag("xs") > 0)
!                   T_XS = (char_u *)"y";
!               if ((T_XN == NULL || T_XN == empty_option)
!                                                       && tgetflag("xn") > 0)
!                   T_XN = (char_u *)"y";
!               if ((T_DB == NULL || T_DB == empty_option)
!                                                       && tgetflag("db") > 0)
!                   T_DB = (char_u *)"y";
!               if ((T_DA == NULL || T_DA == empty_option)
!                                                       && tgetflag("da") > 0)
!                   T_DA = (char_u *)"y";
!               if ((T_UT == NULL || T_UT == empty_option)
!                                                       && tgetflag("ut") > 0)
!                   T_UT = (char_u *)"y";
!
!
!               /*
!                * get key codes
!                */
!               for (i = 0; key_names[i] != NULL; ++i)
!               {
!                   if (find_termcode((char_u *)key_names[i]) == NULL)
!                   {
!                       p = TGETSTR(key_names[i], &tp);
!                       /* if cursor-left == backspace, ignore it (televideo
!                        * 925) */
!                       if (p != NULL
!                               && (*p != Ctrl_H
!                                   || key_names[i][0] != 'k'
!                                   || key_names[i][1] != 'l'))
!                           add_termcode((char_u *)key_names[i], p, FALSE);
!                   }
!               }
!
!               if (height == 0)
!                   height = tgetnum("li");
!               if (width == 0)
!                   width = tgetnum("co");
!
!               /*
!                * Get number of colors (if not done already).
!                */
!               if (TERM_STR(KS_CCO) == NULL
!                       || TERM_STR(KS_CCO) == empty_option)
!                   set_color_count(tgetnum("Co"));
!
! # ifndef hpux
!               BC = (char *)TGETSTR("bc", &tp);
!               UP = (char *)TGETSTR("up", &tp);
!               p = TGETSTR("pc", &tp);
!               if (p)
!                   PC = *p;
! # endif /* hpux */
            }
        }
        else        /* try == 0 || try == 2 */
--- 1747,1759 ----
             */
            if ((error_msg = tgetent_error(tbuf, term)) == NULL)
            {
                if (!termcap_cleared)
                {
                    clear_termoptions();        /* clear old options */
                    termcap_cleared = TRUE;
                }
! get_term_entries(&height, &width);
            }
        }
        else        /* try == 0 || try == 2 */
***************
*** 1748,1778 ****
                if (termcap_cleared)            /* found in external termcap */
                    break;
    #endif
- mch_errmsg("\r\n");
-               if (error_msg != NULL)
-               {
-                   mch_errmsg((char *)error_msg);
-                   mch_errmsg("\r\n");
-               }
-               mch_errmsg("'");
-               mch_errmsg((char *)term);
-               mch_errmsg(_("' not known. Available builtin terminals are:"));
-               mch_errmsg("\r\n");
-               for (termp = &(builtin_termcaps[0]); termp->bt_string != NULL;
-                                                                     ++termp)
-               {
-                   if (termp->bt_entry == (int)KS_NAME)
-                   {
- #ifdef HAVE_TGETENT
-                       mch_errmsg("    builtin_");
- #else
-                       mch_errmsg("    ");
- #endif
-                       mch_errmsg(termp->bt_string);
-                       mch_errmsg("\r\n");
-                   }
-               }
                /* when user typed :set term=xxx, quit here */
                if (starting != NO_SCREEN)
                {
--- 1789,1796 ----
                if (termcap_cleared)            /* found in external termcap */
                    break;
    #endif
+               report_term_error(error_msg, term);
/* when user typed :set term=xxx, quit here */
                if (starting != NO_SCREEN)
                {
***************
*** 1781,1796 ****
                    return FAIL;
                }
                term = DEFAULT_TERM;
!               mch_errmsg(_("defaulting to '"));
!               mch_errmsg((char *)term);
!               mch_errmsg("'\r\n");
!               if (emsg_silent == 0)
!               {
!                   screen_start();     /* don't know where cursor is now */
!                   out_flush();
!                   if (!is_not_a_term())
!                       ui_delay(2000L, TRUE);
!               }
                set_string_option_direct((char_u *)"term", -1, term,
                                                                 OPT_FREE, 0);
                display_errors();
--- 1799,1805 ----
                    return FAIL;
                }
                term = DEFAULT_TERM;
!               report_default_term(term);
                set_string_option_direct((char_u *)"term", -1, term,
                                                                 OPT_FREE, 0);
                display_errors();
*** ../vim-8.0.1806/src/testdir/test_options.vim        2018-04-12 
21:37:28.618561305 +0200
--- src/testdir/test_options.vim        2018-05-10 14:10:24.759966060 +0200
***************
*** 284,290 ****
        " in travis on some builds. Why?  Catch both for now
        try
          set ttytype=
!       call assert_report('set ttype= did not fail')
        catch /E529\|E522/
        endtry
--- 284,290 ----
        " in travis on some builds. Why?  Catch both for now
        try
          set ttytype=
!       call assert_report('set ttytype= did not fail')
        catch /E529\|E522/
        endtry
***************
*** 292,298 ****
        " check for failure of finding the entry and for missing 'cm' entry.
        try
          set ttytype=xxx
!       call assert_report('set ttype=xxx did not fail')
        catch /E522\|E437/
        endtry
--- 292,298 ----
        " check for failure of finding the entry and for missing 'cm' entry.
        try
          set ttytype=xxx
!       call assert_report('set ttytype=xxx did not fail')
        catch /E522\|E437/
        endtry
*** ../vim-8.0.1806/src/version.c 2018-05-08 22:47:56.646469545 +0200
--- src/version.c       2018-05-10 14:10:51.807998420 +0200
***************
*** 763,764 ****
--- 763,766 ----
    {   /* Add new patch number below this line */
+ /**/
+     1807,
    /**/


Mike


Mike
--
I hope life isn't a big joke... because I don't get it.

--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- You received this message because you are subscribed to the Google Groups "vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui