VirtualBox

vbox的更動 57353 路徑 trunk/src/bldprogs


忽略:
時間撮記:
2015-8-14 下午02:31:09 (9 年 以前)
作者:
vboxsync
訊息:

scm: Added fixing of flower boxes marking sections in C/C++ source file, like 'Header Files' and 'Defined Constants And Macros'. Applied it to the bldprogs.

位置:
trunk/src/bldprogs
檔案:
修改 16 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/bldprogs/VBoxCPP.cpp

    r56310 r57353  
    2626
    2727
    28 /*******************************************************************************
    29 *   Header Files                                                               *
    30 *******************************************************************************/
     28/*********************************************************************************************************************************
     29*   Header Files                                                                                                                 *
     30*********************************************************************************************************************************/
    3131#include <VBox/VBoxTpG.h>
    3232
     
    4949
    5050
    51 /*******************************************************************************
    52 *   Defined Constants And Macros                                               *
    53 *******************************************************************************/
     51/*********************************************************************************************************************************
     52*   Defined Constants And Macros                                                                                                 *
     53*********************************************************************************************************************************/
    5454/** The bitmap type. */
    5555#define VBCPP_BITMAP_TYPE                   uint64_t
     
    6666
    6767
    68 /*******************************************************************************
    69 *   Structures and Typedefs                                                    *
    70 *******************************************************************************/
     68/*********************************************************************************************************************************
     69*   Structures and Typedefs                                                                                                      *
     70*********************************************************************************************************************************/
    7171/** Pointer to the C preprocessor instance data. */
    7272typedef struct VBCPP *PVBCPP;
     
    519519
    520520
    521 /*******************************************************************************
    522 *   Internal Functions                                                         *
    523 *******************************************************************************/
     521/*********************************************************************************************************************************
     522*   Internal Functions                                                                                                           *
     523*********************************************************************************************************************************/
    524524static PVBCPPMACRO  vbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine);
    525525static RTEXITCODE   vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPMACRO pMacro, size_t offParameters);
  • trunk/src/bldprogs/VBoxCmp.cpp

    r56310 r57353  
    1717
    1818
    19 /*******************************************************************************
    20 Header Files                                                                *
    21 *******************************************************************************/
     19/*********************************************************************************************************************************
     20 Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2222#include <sys/types.h>
    2323#include <sys/stat.h>
  • trunk/src/bldprogs/VBoxCompilerPlugInsGcc.cpp

    r57072 r57353  
    1515 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
    1616 */
     17
    1718
    1819/*********************************************************************************************************************************
  • trunk/src/bldprogs/VBoxDef2LazyLoad.cpp

    r54209 r57353  
    1818 */
    1919
    20 /*******************************************************************************
    21 *   Header Files                                                               *
    22 *******************************************************************************/
     20
     21/*********************************************************************************************************************************
     22*   Header Files                                                                                                                 *
     23*********************************************************************************************************************************/
    2324#include <ctype.h>
    2425#include <stdio.h>
     
    2829
    2930
    30 /*******************************************************************************
    31 *   Structures and Typedefs                                                    *
    32 *******************************************************************************/
     31/*********************************************************************************************************************************
     32*   Structures and Typedefs                                                                                                      *
     33*********************************************************************************************************************************/
    3334typedef struct MYEXPORT
    3435{
     
    4243
    4344
    44 /*******************************************************************************
    45 *   Global Variables                                                           *
    46 *******************************************************************************/
     45/*********************************************************************************************************************************
     46*   Global Variables                                                                                                             *
     47*********************************************************************************************************************************/
    4748/** @name Options
    4849 * @{ */
  • trunk/src/bldprogs/VBoxPeSetVersion.cpp

    r56310 r57353  
    1717
    1818
    19 /*******************************************************************************
    20 *   Header Files                                                               *
    21 *******************************************************************************/
     19/*********************************************************************************************************************************
     20*   Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2222#include <Windows.h>
    2323#include <stdio.h>
  • trunk/src/bldprogs/VBoxTpG.cpp

    r56310 r57353  
    1717
    1818
    19 /*******************************************************************************
    20 *   Header Files                                                               *
    21 *******************************************************************************/
     19/*********************************************************************************************************************************
     20*   Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2222#include <VBox/VBoxTpG.h>
    2323
     
    4242
    4343
    44 /*******************************************************************************
    45 *   Structures and Typedefs                                                    *
    46 *******************************************************************************/
     44/*********************************************************************************************************************************
     45*   Structures and Typedefs                                                                                                      *
     46*********************************************************************************************************************************/
    4747
    4848typedef struct VTGATTRS
     
    118118
    119119
    120 /*******************************************************************************
    121 *   Global Variables                                                           *
    122 *******************************************************************************/
     120/*********************************************************************************************************************************
     121*   Global Variables                                                                                                             *
     122*********************************************************************************************************************************/
    123123/** The string space organizing the string table strings. Each node is a VTGSTRING. */
    124124static RTSTRSPACE       g_StrSpace = NULL;
  • trunk/src/bldprogs/bin2c.c

    r56310 r57353  
    1616 */
    1717
    18 /*******************************************************************************
    19 *   Header Files                                                               *
    20 *******************************************************************************/
     18
     19/*********************************************************************************************************************************
     20*   Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2122#include <ctype.h>
    2223#include <stdio.h>
  • trunk/src/bldprogs/filesplitter.cpp

    r56310 r57353  
    1717
    1818
    19 /*******************************************************************************
    20 Header Files                                                                *
    21 *******************************************************************************/
     19/*********************************************************************************************************************************
     20 Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2222#include <sys/types.h>
    2323#include <sys/stat.h>
     
    3030
    3131
    32 /*******************************************************************************
    33 *   Defined Constants And Macros                                               *
    34 *******************************************************************************/
     32/*********************************************************************************************************************************
     33*   Defined Constants And Macros                                                                                                 *
     34*********************************************************************************************************************************/
    3535#ifndef S_ISDIR
    3636# define S_ISDIR(a_fMode)       ( (S_IFMT & (a_fMode)) == S_IFDIR )
  • trunk/src/bldprogs/preload.cpp

    r56310 r57353  
    1616 */
    1717
    18 /*******************************************************************************
    19 *   Header Files                                                               *
    20 *******************************************************************************/
     18
     19/*********************************************************************************************************************************
     20*   Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2122#ifdef RT_OS_WINDOWS
    2223# include <Windows.h>
  • trunk/src/bldprogs/scm.cpp

    r57000 r57353  
    1616 */
    1717
    18 /*******************************************************************************
    19 *   Header Files                                                               *
    20 *******************************************************************************/
     18
     19/*********************************************************************************************************************************
     20*   Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2122#include <iprt/assert.h>
    2223#include <iprt/ctype.h>
     
    3940
    4041
    41 /*******************************************************************************
    42 *   Defined Constants And Macros                                               *
    43 *******************************************************************************/
     42/*********************************************************************************************************************************
     43*   Defined Constants And Macros                                                                                                 *
     44*********************************************************************************************************************************/
    4445/** The name of the settings files. */
    4546#define SCM_SETTINGS_FILENAME           ".scm-settings"
    4647
    4748
    48 /*******************************************************************************
    49 *   Structures and Typedefs                                                    *
    50 *******************************************************************************/
     49/*********************************************************************************************************************************
     50*   Structures and Typedefs                                                                                                      *
     51*********************************************************************************************************************************/
    5152
    5253/**
     
    7273    SCMOPT_STRIP_TRAILING_LINES,
    7374    SCMOPT_NO_STRIP_TRAILING_LINES,
     75    SCMOPT_FIX_FLOWER_BOX_MARKERS,
     76    SCMOPT_NO_FIX_FLOWER_BOX_MARKERS,
     77    SCMOPT_MIN_BLANK_LINES_BEFORE_FLOWER_BOX_MARKERS,
    7478    SCMOPT_ONLY_SVN_DIRS,
    7579    SCMOPT_NOT_ONLY_SVN_DIRS,
     
    8387    SCMOPT_DONT_SET_SVN_KEYWORDS,
    8488    SCMOPT_TAB_SIZE,
     89    SCMOPT_WIDTH,
    8590    SCMOPT_FILTER_OUT_DIRS,
    8691    SCMOPT_FILTER_FILES,
     
    102107
    103108
    104 /*******************************************************************************
    105 *   Global Variables                                                           *
    106 *******************************************************************************/
     109/*********************************************************************************************************************************
     110*   Global Variables                                                                                                             *
     111*********************************************************************************************************************************/
    107112const char          g_szTabSpaces[16+1]     = "                ";
     113const char          g_szAsterisks[255+1]    =
     114"****************************************************************************************************"
     115"****************************************************************************************************"
     116"*******************************************************";
     117const char          g_szSpaces[255+1]       =
     118"                                                                                                    "
     119"                                                                                                    "
     120"                                                       ";
    108121static const char   g_szProgName[]          = "scm";
    109122static const char  *g_pszChangedSuff        = "";
     
    118131static SCMSETTINGSBASE const g_Defaults =
    119132{
    120     /* .fConvertEol = */            true,
    121     /* .fConvertTabs = */           true,
    122     /* .fForceFinalEol = */         true,
    123     /* .fForceTrailingLine = */     false,
    124     /* .fStripTrailingBlanks = */   true,
    125     /* .fStripTrailingLines = */    true,
    126     /* .fOnlySvnFiles = */          false,
    127     /* .fOnlySvnDirs = */           false,
    128     /* .fSetSvnEol = */             false,
    129     /* .fSetSvnExecutable = */      false,
    130     /* .fSetSvnKeywords = */        false,
    131     /* .cchTab = */                 8,
    132     /* .pszFilterFiles = */         (char *)"",
    133     /* .pszFilterOutFiles = */      (char *)"*.exe|*.com|20*-*-*.log",
    134     /* .pszFilterOutDirs = */       (char *)".svn|.hg|.git|CVS",
     133    /* .fConvertEol = */                            true,
     134    /* .fConvertTabs = */                           true,
     135    /* .fForceFinalEol = */                         true,
     136    /* .fForceTrailingLine = */                     false,
     137    /* .fStripTrailingBlanks = */                   true,
     138    /* .fStripTrailingLines = */                    true,
     139    /* .fFixFlowerBoxMarkers = */                   true,
     140    /* .cMinBlankLinesBeforeFlowerBoxMakers = */    2,
     141    /* .fOnlySvnFiles = */                          false,
     142    /* .fOnlySvnDirs = */                           false,
     143    /* .fSetSvnEol = */                             false,
     144    /* .fSetSvnExecutable = */                      false,
     145    /* .fSetSvnKeywords = */                        false,
     146    /* .cchTab = */                                 8,
     147    /* .cchWidth = */                               130,
     148    /* .pszFilterFiles = */                         (char *)"",
     149    /* .pszFilterOutFiles = */                      (char *)"*.exe|*.com|20*-*-*.log",
     150    /* .pszFilterOutDirs = */                       (char *)".svn|.hg|.git|CVS",
    135151};
    136152
     
    150166    { "--strip-trailing-lines",             SCMOPT_STRIP_TRAILING_LINES,            RTGETOPT_REQ_NOTHING },
    151167    { "--strip-no-trailing-lines",          SCMOPT_NO_STRIP_TRAILING_LINES,         RTGETOPT_REQ_NOTHING },
     168    { "--fix-flower-box-markers",           SCMOPT_FIX_FLOWER_BOX_MARKERS,          RTGETOPT_REQ_NOTHING },
     169    { "--min-blank-lines-before-flower-box-makers", SCMOPT_FIX_FLOWER_BOX_MARKERS,  RTGETOPT_REQ_UINT8 },
     170    { "--no-fix-flower-box-markers",        SCMOPT_NO_FIX_FLOWER_BOX_MARKERS,       RTGETOPT_REQ_NOTHING },
    152171    { "--only-svn-dirs",                    SCMOPT_ONLY_SVN_DIRS,                   RTGETOPT_REQ_NOTHING },
    153172    { "--not-only-svn-dirs",                SCMOPT_NOT_ONLY_SVN_DIRS,               RTGETOPT_REQ_NOTHING },
     
    161180    { "--dont-set-svn-keywords",            SCMOPT_DONT_SET_SVN_KEYWORDS,           RTGETOPT_REQ_NOTHING },
    162181    { "--tab-size",                         SCMOPT_TAB_SIZE,                        RTGETOPT_REQ_UINT8   },
     182    { "--width",                            SCMOPT_WIDTH,                           RTGETOPT_REQ_UINT8   },
    163183    { "--filter-out-dirs",                  SCMOPT_FILTER_OUT_DIRS,                 RTGETOPT_REQ_STRING  },
    164184    { "--filter-files",                     SCMOPT_FILTER_FILES,                    RTGETOPT_REQ_STRING  },
     
    193213    rewrite_SvnNoExecutable,
    194214    rewrite_SvnKeywords,
     215    rewrite_FixFlowerBoxMarkers,
    195216    rewrite_C_and_CPP
    196217};
     
    328349    if (pSettings)
    329350    {
    330         Assert(pSettings->cchTab != ~(unsigned)0);
    331         pSettings->cchTab = ~(unsigned)0;
     351        Assert(pSettings->cchTab != UINT8_MAX);
     352        pSettings->cchTab = UINT8_MAX;
    332353
    333354        RTStrFree(pSettings->pszFilterFiles);
     
    386407            return VINF_SUCCESS;
    387408
     409
    388410        case SCMOPT_STRIP_TRAILING_BLANKS:
    389411            pSettings->fStripTrailingBlanks = true;
     
    393415            return VINF_SUCCESS;
    394416
     417        case SCMOPT_MIN_BLANK_LINES_BEFORE_FLOWER_BOX_MARKERS:
     418            pSettings->cMinBlankLinesBeforeFlowerBoxMakers = pValueUnion->u8;
     419            return VINF_SUCCESS;
     420
     421
    395422        case SCMOPT_STRIP_TRAILING_LINES:
    396423            pSettings->fStripTrailingLines = true;
     
    398425        case SCMOPT_NO_STRIP_TRAILING_LINES:
    399426            pSettings->fStripTrailingLines = false;
     427            return VINF_SUCCESS;
     428
     429        case SCMOPT_FIX_FLOWER_BOX_MARKERS:
     430            pSettings->fFixFlowerBoxMarkers = true;
     431            return VINF_SUCCESS;
     432        case SCMOPT_NO_FIX_FLOWER_BOX_MARKERS:
     433            pSettings->fFixFlowerBoxMarkers = false;
    400434            return VINF_SUCCESS;
    401435
     
    444478            }
    445479            pSettings->cchTab = pValueUnion->u8;
     480            return VINF_SUCCESS;
     481
     482        case SCMOPT_WIDTH:
     483            if (pValueUnion->u8 < 20 || pValueUnion->u8 > 200)
     484            {
     485                RTMsgError("Invalid width size: %u - must be in {20..200} range\n", pValueUnion->u8);
     486                return VERR_OUT_OF_RANGE;
     487            }
     488            pSettings->cchWidth = pValueUnion->u8;
    446489            return VINF_SUCCESS;
    447490
     
    15371580                        case SCMOPT_STRIP_TRAILING_BLANKS:  RTPrintf("      Default: %RTbool\n", g_Defaults.fStripTrailingBlanks); break;
    15381581                        case SCMOPT_STRIP_TRAILING_LINES:   RTPrintf("      Default: %RTbool\n", g_Defaults.fStripTrailingLines); break;
     1582                        case SCMOPT_FIX_FLOWER_BOX_MARKERS: RTPrintf("      Default: %RTbool\n", g_Defaults.fFixFlowerBoxMarkers); break;
     1583                        case SCMOPT_MIN_BLANK_LINES_BEFORE_FLOWER_BOX_MARKERS: RTPrintf("      Default: %u\n", g_Defaults.cMinBlankLinesBeforeFlowerBoxMakers); break;
    15391584                        case SCMOPT_ONLY_SVN_DIRS:          RTPrintf("      Default: %RTbool\n", g_Defaults.fOnlySvnDirs); break;
    15401585                        case SCMOPT_ONLY_SVN_FILES:         RTPrintf("      Default: %RTbool\n", g_Defaults.fOnlySvnFiles); break;
     
    15431588                        case SCMOPT_SET_SVN_KEYWORDS:       RTPrintf("      Default: %RTbool\n", g_Defaults.fSetSvnKeywords); break;
    15441589                        case SCMOPT_TAB_SIZE:               RTPrintf("      Default: %u\n", g_Defaults.cchTab); break;
     1590                        case SCMOPT_WIDTH:                  RTPrintf("      Default: %u\n", g_Defaults.cchWidth); break;
    15451591                        case SCMOPT_FILTER_OUT_DIRS:        RTPrintf("      Default: %s\n", g_Defaults.pszFilterOutDirs); break;
    15461592                        case SCMOPT_FILTER_FILES:           RTPrintf("      Default: %s\n", g_Defaults.pszFilterFiles); break;
    15471593                        case SCMOPT_FILTER_OUT_FILES:       RTPrintf("      Default: %s\n", g_Defaults.pszFilterOutFiles); break;
     1594                        default: AssertFailed();
    15481595                    }
    15491596                    i += fAdvanceTwo;
  • trunk/src/bldprogs/scm.h

    r56310 r57353  
    106106FNSCMREWRITER rewrite_Makefile_kup;
    107107FNSCMREWRITER rewrite_Makefile_kmk;
     108FNSCMREWRITER rewrite_FixFlowerBoxMarkers;
    108109FNSCMREWRITER rewrite_C_and_CPP;
    109110
     
    141142    bool            fStripTrailingBlanks;
    142143    bool            fStripTrailingLines;
     144
     145    /** Whether to fix C/C++ flower box section markers. */
     146    bool            fFixFlowerBoxMarkers;
     147    /** The minimum number of blank lines we want before flowerbox markers. */
     148    uint8_t         cMinBlankLinesBeforeFlowerBoxMakers;
     149
    143150    /** Only process files that are part of a SVN working copy. */
    144151    bool            fOnlySvnFiles;
     
    151158    /** Set svn:keyword if completely or partially missing. */
    152159    bool            fSetSvnKeywords;
    153     /**  */
    154     unsigned        cchTab;
     160    /** Tab size. */
     161    uint8_t         cchTab;
     162    /** Optimal source code width. */
     163    uint8_t         cchWidth;
    155164    /** Only consider files matching these patterns.  This is only applied to the
    156165     *  base names. */
     
    220229
    221230extern const char g_szTabSpaces[16+1];
     231extern const char g_szAsterisks[255+1];
     232extern const char g_szSpaces[255+1];
    222233
    223234RT_C_DECLS_END
  • trunk/src/bldprogs/scmdiff.cpp

    r56310 r57353  
    1616 */
    1717
    18 /*******************************************************************************
    19 *   Header Files                                                               *
    20 *******************************************************************************/
     18
     19/*********************************************************************************************************************************
     20*   Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2122#include <iprt/assert.h>
    2223#include <iprt/ctype.h>
     
    2829
    2930
    30 /*******************************************************************************
    31 *   Global Variables                                                           *
    32 *******************************************************************************/
     31/*********************************************************************************************************************************
     32*   Global Variables                                                                                                             *
     33*********************************************************************************************************************************/
    3334static const char   g_szTabSpaces[16+1]     = "                ";
    3435
  • trunk/src/bldprogs/scmrw.cpp

    r56310 r57353  
    1616 */
    1717
    18 /*******************************************************************************
    19 *   Header Files                                                               *
    20 *******************************************************************************/
     18
     19/*********************************************************************************************************************************
     20*   Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2122#include <iprt/assert.h>
    2223#include <iprt/ctype.h>
     
    3738#include "scm.h"
    3839
     40
     41/**
     42 * Worker for isBlankLine.
     43 *
     44 * @returns true if blank, false if not.
     45 * @param   pchLine     Pointer to the start of the line.
     46 * @param   cchLine     The (encoded) length of the line, excluding EOL char.
     47 */
     48static bool isBlankLineSlow(const char *pchLine, size_t cchLine)
     49{
     50    /*
     51     * From the end, more likely to hit a non-blank char there.
     52     */
     53    while (cchLine-- > 0)
     54        if (!RT_C_IS_BLANK(pchLine[cchLine]))
     55            return false;
     56    return true;
     57}
     58
     59/**
     60 * Helper for checking whether a line is blank.
     61 *
     62 * @returns true if blank, false if not.
     63 * @param   pchLine     Pointer to the start of the line.
     64 * @param   cchLine     The (encoded) length of the line, excluding EOL char.
     65 */
     66DECLINLINE(bool) isBlankLine(const char *pchLine, size_t cchLine)
     67{
     68    if (cchLine == 0)
     69        return true;
     70    /*
     71     * We're more likely to fine a non-space char at the end of the line than
     72     * at the start, due to source code indentation.
     73     */
     74    if (pchLine[cchLine - 1])
     75        return false;
     76
     77    /*
     78     * Don't bother inlining loop code.
     79     */
     80    return isBlankLineSlow(pchLine, cchLine);
     81}
    3982
    4083
     
    420463{
    421464    return false;
     465}
     466
     467
     468static bool isFlowerBoxSectionMarker(PSCMSTREAM pIn, const char *pchLine, size_t cchLine,
     469                                     const char **ppchText, size_t *pcchText)
     470{
     471    *ppchText = NULL;
     472    *pcchText = 0;
     473
     474    /*
     475     * The first line.
     476     */
     477    if (pchLine[0] != '/')
     478        return false;
     479    size_t offLine = 1;
     480    while (offLine < cchLine && pchLine[offLine] == '*')
     481        offLine++;
     482    if (offLine < 20)
     483        return false;
     484    while (offLine < cchLine && RT_C_IS_BLANK(pchLine[offLine]))
     485        offLine++;
     486    if (offLine != cchLine)
     487        return false;
     488
     489    size_t const cchBox = cchLine;
     490
     491    /*
     492     * The next line, extracting the text.
     493     */
     494    SCMEOL enmEol;
     495    pchLine = ScmStreamGetLine(pIn, &cchLine, &enmEol);
     496    if (cchLine < cchBox - 3)
     497        return false;
     498
     499    offLine = 0;
     500    while (offLine < cchLine && RT_C_IS_BLANK(pchLine[offLine]))
     501        offLine++;
     502    if (offLine + 5 > cchLine)
     503        return false;
     504    if (pchLine[offLine] != '*')
     505        return false;
     506    offLine++;
     507    if (!RT_C_IS_BLANK(pchLine[offLine + 1]))
     508        return false;
     509    offLine++;
     510    while (offLine < cchLine && RT_C_IS_BLANK(pchLine[offLine]))
     511        offLine++;
     512    if (offLine >= cchLine)
     513        return false;
     514    if (!RT_C_IS_UPPER(pchLine[offLine]))
     515        return false;
     516
     517    *ppchText = &pchLine[offLine];
     518    size_t const offText = offLine;
     519
     520    /* From the end now. */
     521    offLine = cchLine - 1;
     522    while (RT_C_IS_BLANK(pchLine[offLine]))
     523        offLine--;
     524
     525    if (pchLine[offLine] != '*')
     526        return false;
     527    offLine--;
     528    if (!RT_C_IS_BLANK(pchLine[offLine]))
     529        return false;
     530    offLine--;
     531    while (RT_C_IS_BLANK(pchLine[offLine]))
     532        offLine--;
     533    *pcchText = offLine - offText + 1;
     534
     535    /*
     536     * Third line closes the box.
     537     */
     538    pchLine = ScmStreamGetLine(pIn, &cchLine, &enmEol);
     539    if (cchLine < cchBox - 3)
     540        return false;
     541
     542    offLine = 0;
     543    while (offLine < cchLine && pchLine[offLine] == '*')
     544        offLine++;
     545    if (offLine < cchBox - 4)
     546        return false;
     547
     548    if (pchLine[offLine] != '/')
     549        return false;
     550    offLine++;
     551
     552    while (offLine < cchLine && RT_C_IS_BLANK(pchLine[offLine]))
     553        offLine++;
     554    if (offLine != cchLine)
     555        return false;
     556
     557    return true;
     558}
     559
     560
     561/**
     562 * Flower box marker comments in C and C++ code.
     563 *
     564 * @returns true if modifications were made, false if not.
     565 * @param   pIn                 The input stream.
     566 * @param   pOut                The output stream.
     567 * @param   pSettings           The settings.
     568 */
     569bool rewrite_FixFlowerBoxMarkers(PSCMRWSTATE pState, PSCMSTREAM pIn, PSCMSTREAM pOut, PCSCMSETTINGSBASE pSettings)
     570{
     571    if (!pSettings->fFixFlowerBoxMarkers)
     572        return false;
     573
     574    /*
     575     * Work thru the file line by line looking for flower box markers.
     576     */
     577    bool        fModified = false;
     578    size_t      cBlankLines = 0;
     579    SCMEOL      enmEol;
     580    size_t      cchLine;
     581    const char *pchLine;
     582    while ((pchLine = ScmStreamGetLine(pIn, &cchLine, &enmEol)) != NULL)
     583    {
     584        /*
     585         * Get a likely match for a first line.
     586         */
     587        if (   pchLine[0] == '/'
     588            && cchLine > 20
     589            && pchLine[1] == '*'
     590            && pchLine[2] == '*'
     591            && pchLine[3] == '*')
     592        {
     593            size_t const offSaved = ScmStreamTell(pIn);
     594            char const  *pchText;
     595            size_t       cchText;
     596            if (isFlowerBoxSectionMarker(pIn, pchLine, cchLine, &pchText, &cchText))
     597            {
     598                while (cBlankLines < pSettings->cMinBlankLinesBeforeFlowerBoxMakers)
     599                {
     600                    ScmStreamPutEol(pOut, enmEol);
     601                    cBlankLines++;
     602                }
     603
     604                ScmStreamPutCh(pOut, '/');
     605                ScmStreamWrite(pOut, g_szAsterisks, pSettings->cchWidth - 1);
     606                ScmStreamPutEol(pOut, enmEol);
     607
     608                static const char s_szLead[] = "*   ";
     609                ScmStreamWrite(pOut, s_szLead, sizeof(s_szLead) - 1);
     610                ScmStreamWrite(pOut, pchText, cchText);
     611                size_t offCurPlus1 = sizeof(s_szLead) - 1 + cchText + 1;
     612                ScmStreamWrite(pOut, g_szSpaces, offCurPlus1 < pSettings->cchWidth ? pSettings->cchWidth - offCurPlus1 : 1);
     613                ScmStreamPutCh(pOut, '*');
     614                ScmStreamPutEol(pOut, enmEol);
     615
     616                ScmStreamWrite(pOut, g_szAsterisks, pSettings->cchWidth - 1);
     617                ScmStreamPutCh(pOut, '/');
     618                ScmStreamPutEol(pOut, enmEol);
     619
     620                fModified = true;
     621                cBlankLines = 0;
     622                continue;
     623            }
     624        }
     625
     626        int rc = ScmStreamPutLine(pOut, pchLine, cchLine, enmEol);
     627        if (RT_FAILURE(rc))
     628            return false;
     629
     630        /* Do blank line accounting so we can ensure at least two blank lines
     631           before each section marker. */
     632        if (!isBlankLine(pchLine, cchLine))
     633            cBlankLines = 0;
     634        else
     635            cBlankLines++;
     636    }
     637    if (fModified)
     638        ScmVerbose(pState, 2, " * Converted EOL markers\n");
     639    return fModified;
    422640}
    423641
  • trunk/src/bldprogs/scmstream.cpp

    r56310 r57353  
    1616 */
    1717
    18 /*******************************************************************************
    19 *   Header Files                                                               *
    20 *******************************************************************************/
     18
     19/*********************************************************************************************************************************
     20*   Header Files                                                                                                                 *
     21*********************************************************************************************************************************/
    2122#include <iprt/assert.h>
    2223#include <iprt/ctype.h>
     
    11611162
    11621163/**
     1164 * Puts an EOL marker to the stream.
     1165 *
     1166 * @returns IPRt status code.
     1167 * @param   pStream             The stream.  Must be in write mode.
     1168 * @param   enmEol              The end-of-line marker to write.
     1169 */
     1170int ScmStreamPutEol(PSCMSTREAM pStream, SCMEOL enmEol)
     1171{
     1172    if (enmEol == SCMEOL_LF)
     1173        return ScmStreamWrite(pStream, "\n", 1);
     1174    if (enmEol == SCMEOL_CRLF)
     1175        return ScmStreamWrite(pStream, "\r\n", 2);
     1176    if (enmEol == SCMEOL_NONE)
     1177        return VINF_SUCCESS;
     1178    AssertFailedReturn(VERR_INVALID_PARAMETER);
     1179}
     1180
     1181/**
    11631182 * Formats a string and writes it to the SCM stream.
    11641183 *
  • trunk/src/bldprogs/scmstream.h

    r56310 r57353  
    123123int         ScmStreamWrite(PSCMSTREAM pStream, const char *pchBuf, size_t cchBuf);
    124124int         ScmStreamPutCh(PSCMSTREAM pStream, char ch);
     125int         ScmStreamPutEol(PSCMSTREAM pStream, SCMEOL enmEol);
    125126ssize_t     ScmStreamPrintf(PSCMSTREAM pStream, const char *pszFormat, ...);
    126127ssize_t     ScmStreamPrintfV(PSCMSTREAM pStream, const char *pszFormat, va_list va);
  • trunk/src/bldprogs/scmsubversion.cpp

    r57000 r57353  
    1818#define SCM_WITH_DYNAMIC_LIB_SVN
    1919
    20 /*******************************************************************************
    21 *   Header Files                                                               *
    22 *******************************************************************************/
     20
     21/*********************************************************************************************************************************
     22*   Header Files                                                                                                                 *
     23*********************************************************************************************************************************/
    2324#include <iprt/assert.h>
    2425#include <iprt/ctype.h>
     
    4849
    4950
    50 /*******************************************************************************
    51 *   Defined Constants And Macros                                               *
    52 *******************************************************************************/
     51/*********************************************************************************************************************************
     52*   Defined Constants And Macros                                                                                                 *
     53*********************************************************************************************************************************/
    5354#ifdef SCM_WITH_DYNAMIC_LIB_SVN
    5455# if defined(RT_OS_WINDOWS) && defined(RT_ARCH_X86)
     
    6667
    6768
    68 /*******************************************************************************
    69 *   Structures and Typedefs                                                    *
    70 *******************************************************************************/
     69/*********************************************************************************************************************************
     70*   Structures and Typedefs                                                                                                      *
     71*********************************************************************************************************************************/
    7172#if defined(SCM_WITH_DYNAMIC_LIB_SVN) && !defined(SCM_WITH_SVN_HEADERS)
    7273typedef int                         apr_status_t;
     
    124125
    125126
    126 /*******************************************************************************
    127 *   Global Variables                                                           *
    128 *******************************************************************************/
     127/*********************************************************************************************************************************
     128*   Global Variables                                                                                                             *
     129*********************************************************************************************************************************/
    129130static char g_szSvnPath[RTPATH_MAX];
    130131static enum
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette