@@ -25,10 +25,16 @@
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# include <windows.h>
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
27 27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# include <termios.h>
28 28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29 29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if INTERFACE
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define COMMENT_PRINT_NONE ((u32)0x00000000) /* No flags. */
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define COMMENT_PRINT_WORD_BREAK ((u32)0x00000001) /* Break lines on words. */
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define COMMENT_PRINT_DEFAULT COMMENT_PRINT_NONE /* Default flags. */
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
30 36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
31 37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the previous value used by most external callers when they
32 38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** needed to specify a default maximum line length to be used with the
33 39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** comment_print() function.
34 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -49,11 +55,16 @@
49 55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the left margin and that a single line can contain no more than
50 56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** width characters. Indent all subsequent lines by indent.
51 57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
52 58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the number of newlines that are output.
53 59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int comment_print(const char *zText, int indent, int width){
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int comment_print(
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zText, /* The comment text to be printed. */
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int indent, /* Number of spaces to indent each non-initial line. */
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int width, /* Maximum number of characters per line. */
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int flags /* Zero or more "COMMENT_PRINT_*" flags, see above. */
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
55 66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int maxChars = width - indent;
56 67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int lineCnt = 0;
57 68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zLine;
58 69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
59 70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(_WIN32)
@@ -92,12 +103,13 @@
92 103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lineCnt++;
93 104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return lineCnt;
94 105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95 106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zLine = zText;
96 107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(;;){
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- comment_print_line(zLine, zLine>zText ? indent : 0,
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- maxChars, &lineCnt, &zLine);
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ comment_print_line(zLine, zLine>zText ? indent : 0, maxChars,
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags & COMMENT_PRINT_WORD_BREAK, &lineCnt,
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &zLine);
99 111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !zLine || !zLine[0] ) break;
100 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101 113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return lineCnt;
102 114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103 115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -107,10 +119,11 @@
107 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
108 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void comment_print_line(
109 121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zLine, /* [in] The comment line to print. */
110 122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int indent, /* [in] Number of spaces to indent, zero for none. */
111 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int lineChars, /* [in] Maximum number of characters to print. */
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int wordBreak, /* [in] Non-zero to try breaking on word boundaries. */
112 125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *pLineCnt, /* [in/out] Pointer to the total line count. */
113 126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char **pzLine /* [out] Pointer to the end of the logical line. */
114 127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
115 128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int index = 0, charCnt = 0, lineCnt = 0, maxChars;
116 129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !zLine ) return;
@@ -132,10 +145,17 @@
132 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( maxChars<COMMENT_TAB_WIDTH ){
133 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print(" ");
134 147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
135 148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
136 149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
maxChars -= COMMENT_TAB_WIDTH;
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( wordBreak && fossil_isspace(c) ){
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nextIndex = comment_next_space(zLine, index);
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nextIndex<=0 || (nextIndex-index)>maxChars ){
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ charCnt++;
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ maxChars--;
137 157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
138 158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
charCnt++;
139 159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
maxChars--;
140 160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
141 161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("%c", c);
@@ -170,10 +190,33 @@
170 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( fossil_isspace(zLine[index]) ){ index++; }
171 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*piIndex = index;
172 192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
174 194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function scans the specified comment line starting just after the
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** initial index and returns the index of the next spacing character -OR-
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** zero if such a character cannot be found.
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int comment_next_space(
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zLine, /* [in] The comment line being printed. */
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int index /* [in] The current character index being handled. */
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nextIndex = index + 1;
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(;;){
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c = zLine[nextIndex];
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c==0 ){
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fossil_isspace(c) ){
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return nextIndex;
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nextIndex++;
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0; /* NOT REACHED */
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
175 218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
176 219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
177 220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
178 221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: test-comment-format
179 222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -182,16 +225,21 @@
182 225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Test comment formatting and printing. Use for testing only.
183 226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
184 227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Options:
185 228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --decode Decode the text using the same method used when
186 229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** handling the value of a C-card from a manifest.
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --wordbreak Attempt to break lines on word boundaries.
187 231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
188 232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void test_comment_format(void){
189 233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPrefix;
190 234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zText;
191 235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int indent, width;
192 236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int decode = find_option("decode", 0, 0)!=0;
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int flags = COMMENT_PRINT_DEFAULT;
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( find_option("wordbreak", 0, 0) ){
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags |= COMMENT_PRINT_WORD_BREAK;
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
193 241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc!=4 && g.argc!=5 ){
194 242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
usage("PREFIX TEXT ?WIDTH?");
195 243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
196 244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPrefix = g.argv[2];
197 245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( decode ){
@@ -207,8 +255,9 @@
207 255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
width = -1; /* automatic */
208 256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209 257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( indent>0 ){
210 258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("%s", zPrefix);
211 259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("(%d lines output)\n", comment_print(zText, indent, width));
260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("(%d lines output)\n",
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ comment_print(zText, indent, width, flags));
213 262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zText!=g.argv[3] ) fossil_free(zText);
214 263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
215 264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!