/ [wordsplit] / wordsplit / README.html
To checkout: cvs -d:pserver:anonymous@cvs.gnu.org.ua:/webcvs/wordsplit co wordsplit/README.html
Puszcza

Contents of /wordsplit/README.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations)
Fri Sep 17 09:23:19 2021 UTC (4 months, 1 week ago) by gray
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +68 -72 lines
File MIME type: text/html
Update the docs

1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 <head>
6 <title>Wordsplit - an enhanced word splitter</title>
7 <!-- 2021-09-17 Fri 12:20 -->
8 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
9 <meta name="generator" content="Org-mode" />
10 <meta name="author" content="Sergey Poznyakoff" />
11 <style type="text/css">
12 <!--/*--><![CDATA[/*><!--*/
13 .title { text-align: center; }
14 .todo { font-family: monospace; color: red; }
15 .done { color: green; }
16 .tag { background-color: #eee; font-family: monospace;
17 padding: 2px; font-size: 80%; font-weight: normal; }
18 .timestamp { color: #bebebe; }
19 .timestamp-kwd { color: #5f9ea0; }
20 .right { margin-left: auto; margin-right: 0px; text-align: right; }
21 .left { margin-left: 0px; margin-right: auto; text-align: left; }
22 .center { margin-left: auto; margin-right: auto; text-align: center; }
23 .underline { text-decoration: underline; }
24 #postamble p, #preamble p { font-size: 90%; margin: .2em; }
25 p.verse { margin-left: 3%; }
26 pre {
27 border: 1px solid #ccc;
28 box-shadow: 3px 3px 3px #eee;
29 padding: 8pt;
30 font-family: monospace;
31 overflow: auto;
32 margin: 1.2em;
33 }
34 pre.src {
35 position: relative;
36 overflow: visible;
37 padding-top: 1.2em;
38 }
39 pre.src:before {
40 display: none;
41 position: absolute;
42 background-color: white;
43 top: -10px;
44 right: 10px;
45 padding: 3px;
46 border: 1px solid black;
47 }
48 pre.src:hover:before { display: inline;}
49 pre.src-sh:before { content: 'sh'; }
50 pre.src-bash:before { content: 'sh'; }
51 pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
52 pre.src-R:before { content: 'R'; }
53 pre.src-perl:before { content: 'Perl'; }
54 pre.src-java:before { content: 'Java'; }
55 pre.src-sql:before { content: 'SQL'; }
56
57 table { border-collapse:collapse; }
58 caption.t-above { caption-side: top; }
59 caption.t-bottom { caption-side: bottom; }
60 td, th { vertical-align:top; }
61 th.right { text-align: center; }
62 th.left { text-align: center; }
63 th.center { text-align: center; }
64 td.right { text-align: right; }
65 td.left { text-align: left; }
66 td.center { text-align: center; }
67 dt { font-weight: bold; }
68 .footpara:nth-child(2) { display: inline; }
69 .footpara { display: block; }
70 .footdef { margin-bottom: 1em; }
71 .figure { padding: 1em; }
72 .figure p { text-align: center; }
73 .inlinetask {
74 padding: 10px;
75 border: 2px solid gray;
76 margin: 10px;
77 background: #ffffcc;
78 }
79 #org-div-home-and-up
80 { text-align: right; font-size: 70%; white-space: nowrap; }
81 textarea { overflow-x: auto; }
82 .linenr { font-size: smaller }
83 .code-highlighted { background-color: #ffff00; }
84 .org-info-js_info-navigation { border-style: none; }
85 #org-info-js_console-label
86 { font-size: 10px; font-weight: bold; white-space: nowrap; }
87 .org-info-js_search-highlight
88 { background-color: #ffff00; color: #000000; font-weight: bold; }
89 /*]]>*/-->
90 </style>
91 <link rel="stylesheet" type="text/css" href="style.css" />
92 <script type="text/javascript">
93 /*
94 @licstart The following is the entire license notice for the
95 JavaScript code in this tag.
96
97 Copyright (C) 2012-2013 Free Software Foundation, Inc.
98
99 The JavaScript code in this tag is free software: you can
100 redistribute it and/or modify it under the terms of the GNU
101 General Public License (GNU GPL) as published by the Free Software
102 Foundation, either version 3 of the License, or (at your option)
103 any later version. The code is distributed WITHOUT ANY WARRANTY;
104 without even the implied warranty of MERCHANTABILITY or FITNESS
105 FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
106
107 As additional permission under GNU GPL version 3 section 7, you
108 may distribute non-source (e.g., minimized or compacted) forms of
109 that code without the copy of the GNU GPL normally required by
110 section 4, provided you include this license notice and a URL
111 through which recipients can access the Corresponding Source.
112
113
114 @licend The above is the entire license notice
115 for the JavaScript code in this tag.
116 */
117 <!--/*--><![CDATA[/*><!--*/
118 function CodeHighlightOn(elem, id)
119 {
120 var target = document.getElementById(id);
121 if(null != target) {
122 elem.cacheClassElem = elem.className;
123 elem.cacheClassTarget = target.className;
124 target.className = "code-highlighted";
125 elem.className = "code-highlighted";
126 }
127 }
128 function CodeHighlightOff(elem, id)
129 {
130 var target = document.getElementById(id);
131 if(elem.cacheClassElem)
132 elem.className = elem.cacheClassElem;
133 if(elem.cacheClassTarget)
134 target.className = elem.cacheClassTarget;
135 }
136 /*]]>*///-->
137 </script>
138 </head>
139 <body>
140 <div id="content">
141 <h1 class="title">Wordsplit - an enhanced word splitter</h1>
142 <div id="table-of-contents">
143 <h2>Table of Contents</h2>
144 <div id="text-table-of-contents">
145 <ul>
146 <li><a href="#sec-1">1. Overview</a></li>
147 <li><a href="#sec-2">2. Description</a></li>
148 <li><a href="#sec-3">3. Incorporating wordsplit into your project</a>
149 <ul>
150 <li><a href="#sec-3-1">3.1. Direct incorporation</a></li>
151 <li><a href="#sec-3-2">3.2. VPATH-based incorporation</a></li>
152 </ul>
153 </li>
154 <li><a href="#sec-4">4. The testsuite</a>
155 <ul>
156 <li><a href="#sec-4-1">4.1. Additional files</a></li>
157 <li><a href="#sec-4-2">4.2. testsuite.at</a></li>
158 <li><a href="#sec-4-3">4.3. Makefile.am</a></li>
159 </ul>
160 </li>
161 <li><a href="#sec-5">5. History</a></li>
162 <li><a href="#sec-6">6. Bug reporting</a></li>
163 <li><a href="#sec-7">7. Copying</a></li>
164 </ul>
165 </div>
166 </div>
167 <div id="outline-container-sec-1" class="outline-2">
168 <h2 id="sec-1"><span class="section-number-2">1</span> Overview</h2>
169 <div class="outline-text-2" id="text-1">
170 <p>
171 This package provides a set of C functions for parsing input strings.
172 Default parsing rules are are similar to those used in Bourne shell.
173 This includes tilde expansion, variable expansion, quote removal, word
174 splitting, command substitution, and path expansion. Parsing is
175 controlled by a number of settings which allow the caller to alter
176 processing at each of these phases or even to disable any of them.
177 Thus, wordsplit can be used for parsing inputs in different formats,
178 from simple character-delimited entries, as in <code>/etc/passwd</code>, and up to
179 complex shell statements.
180 </p>
181
182 <p>
183 The following code fragment shows the basic usage:
184 </p>
185
186 <div class="org-src-container">
187
188 <pre class="src src-C"><span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">This variable controls parsing </span><span style="font-weight: bold; font-style: italic;">*/</span>
189 <span style="font-weight: bold; text-decoration: underline;">wordsplit_t</span> <span style="font-weight: bold; font-style: italic;">ws</span>;
190 <span style="font-weight: bold; text-decoration: underline;">int</span> <span style="font-weight: bold; font-style: italic;">rc</span>;
191
192 <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Provide variable definitions </span><span style="font-weight: bold; font-style: italic;">*/</span>
193 ws.ws_env = (<span style="font-weight: bold;">const</span> <span style="font-weight: bold; text-decoration: underline;">char</span> **) environ;
194 <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Provide a function for expanding commands </span><span style="font-weight: bold; font-style: italic;">*/</span>
195 ws.ws_command = runcom;
196 <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Split input_string into words </span><span style="font-weight: bold; font-style: italic;">*/</span>
197 rc = wordsplit(input_string, &amp;ws,
198 WRDSF_QUOTE <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Handle both single and double quoted strings as words. </span><span style="font-weight: bold; font-style: italic;">*/</span>
199 | WRDSF_SQUEEZE_DELIMS <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Compress adjacent delimiters </span><span style="font-weight: bold; font-style: italic;">*/</span>
200 | WRDSF_PATHEXPAND <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Expand pathnames </span><span style="font-weight: bold; font-style: italic;">*/</span>
201 | WRDSF_SHOWERR); <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Show errors </span><span style="font-weight: bold; font-style: italic;">*/</span>
202 <span style="font-weight: bold;">if</span> (rc == 0) {
203 <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Success. The resulting words are returned in the NULL-terminated</span>
204 <span style="font-weight: bold; font-style: italic;"> array ws.ws_wordv. Number of words is in ws.ws_wordc </span><span style="font-weight: bold; font-style: italic;">*/</span>
205 }
206 <span style="font-weight: bold; font-style: italic;">/* </span><span style="font-weight: bold; font-style: italic;">Reclaim the allocated memory </span><span style="font-weight: bold; font-style: italic;">*/</span>
207 wordsplit_free(&amp;ws);
208 </pre>
209 </div>
210
211 <p>
212 For a detailed discussion, please see the man page <a href="http://man.gnu.org.ua/manpage/?3+wordsplit">wordsplit</a>(3) included
213 in the package.
214 </p>
215 </div>
216 </div>
217
218 <div id="outline-container-sec-2" class="outline-2">
219 <h2 id="sec-2"><span class="section-number-2">2</span> Description</h2>
220 <div class="outline-text-2" id="text-2">
221 <p>
222 The package is designed as a drop-in facility for use in larger
223 programs. It consists of the following files:
224 </p>
225
226 <dl class="org-dl">
227 <dt> wordsplit.h </dt><dd> Interface header.
228 </dd>
229 <dt> wordsplit.c </dt><dd> Main source file.
230 </dd>
231 <dt> wordsplit.3 </dt><dd> Manual page.
232 </dd>
233 </dl>
234
235 <p>
236 For most uses, you will need only these three. The rest of files
237 are for building the autotest-based testsuite:
238 </p>
239
240 <dl class="org-dl">
241 <dt> wsp.c </dt><dd> Auxiliary test program.
242 </dd>
243 <dt> wordsplit.at </dt><dd> The source for the testsuite.
244 </dd>
245 </dl>
246 </div>
247 </div>
248
249 <div id="outline-container-sec-3" class="outline-2">
250 <h2 id="sec-3"><span class="section-number-2">3</span> Incorporating wordsplit into your project</h2>
251 <div class="outline-text-2" id="text-3">
252 <p>
253 The project is designed to be used as a git submodule. To incorporate
254 it into your project, first select the location for the wordsplit
255 directory within your project. Then add the submodule at this
256 location. The rest is quite straightforward: you need to add
257 <code>wordsplit.c</code> to your sources and add both <code>wordsplit.c</code> and <code>wordsplit.h</code>
258 to the distributed files.
259 </p>
260
261 <p>
262 The following will describe each step in detail. For the rest of this
263 discussion it is supposed that <code>wordsplit</code> is the name of the location
264 selected for the submodule. It is also supposed that your project
265 uses GNU autotools framework. If you are using plain makefiles, these
266 instructions are easy to convert to such use as well.
267 </p>
268
269 <p>
270 To add the submodule do:
271 </p>
272
273 <div class="org-src-container">
274
275 <pre class="src src-shell-script">git submodule add git://git.gnu.org.ua/wordsplit.git wordsplit
276 </pre>
277 </div>
278
279 <p>
280 There are two methods of including the sources to the project: direct
281 incorporation and incorporation via <code>VPATH</code>.
282 </p>
283 </div>
284
285 <div id="outline-container-sec-3-1" class="outline-3">
286 <h3 id="sec-3-1"><span class="section-number-3">3.1</span> Direct incorporation</h3>
287 <div class="outline-text-3" id="text-3-1">
288 <p>
289 Add the <code>subdir-objects</code> option to the invocation of <code>AM_INIT_AUTOMAKE</code> macro
290 in your configure.ac:
291 </p>
292
293 <div class="org-src-container">
294
295 <pre class="src src-autoconf"><span style="font-weight: bold;">AM_INIT_AUTOMAKE</span>([subdir-objects])
296 </pre>
297 </div>
298
299 <p>
300 In your <code>Makefile.am</code>, add both <code>wordsplit/wordsplit.c</code> and
301 <code>wordsplit/wordsplit.h</code> to the sources and <code>-Iwordsplit</code> to the cpp flags.
302 For example:
303 </p>
304
305 <div class="org-src-container">
306
307 <pre class="src src-makefile-automake"><span style="font-weight: bold; font-style: italic;">program_SOURCES</span> = main.c \
308 wordsplit/wordsplit.c \
309 wordsplit/wordsplit.h
310 <span style="font-weight: bold; font-style: italic;">AM_CPPFLAGS</span> = -I$(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit
311 </pre>
312 </div>
313
314 <p>
315 You can also put <code>wordsplit.h</code> in the <code>noinst_HEADERS</code> variable, if you like:
316 </p>
317
318 <div class="org-src-container">
319
320 <pre class="src src-makefile-automake"><span style="font-weight: bold; font-style: italic;">program_SOURCES</span> = main.c \
321 wordsplit/wordsplit.c
322 <span style="font-weight: bold; font-style: italic;">noinst_HEADERS</span> = wordsplit/wordsplit.h
323 <span style="font-weight: bold; font-style: italic;">AM_CPPFLAGS</span> = -I$(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit
324 </pre>
325 </div>
326
327 <p>
328 If you are building an installable library and wish to export the
329 wordsplit API, install <code>wordsplit.h</code> to <code>$(pkgincludedir)</code>, e.g.
330 </p>
331
332 <div class="org-src-container">
333
334 <pre class="src src-makefile-automake"><span style="font-weight: bold; font-style: italic;">lib_LTLIBRARIES</span> = libmy.la
335 <span style="font-weight: bold; font-style: italic;">libmy_la_SOURCES</span> = main.c \
336 wordsplit/wordsplit.c
337 <span style="font-weight: bold; font-style: italic;">AM_CPPFLAGS</span> = -I$(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit
338 <span style="font-weight: bold; font-style: italic;">pkginclude_HEADERS</span> = wordsplit/wordsplit.h
339 </pre>
340 </div>
341 </div>
342 </div>
343
344 <div id="outline-container-sec-3-2" class="outline-3">
345 <h3 id="sec-3-2"><span class="section-number-3">3.2</span> VPATH-based incorporation</h3>
346 <div class="outline-text-3" id="text-3-2">
347 <p>
348 Modify the <code>VPATH</code> variable in your <code>Makefile.am</code>:
349 </p>
350
351 <div class="org-src-container">
352
353 <pre class="src src-makefile-automake"><span style="font-weight: bold; font-style: italic;">VPATH</span> = $(<span style="font-weight: bold; font-style: italic;">srcdir</span>):$(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit
354 </pre>
355 </div>
356
357 <p>
358 Add <code>wordsplit.c</code> to the <code>nodist_program_SOURCES</code> variable:
359 </p>
360
361 <div class="org-src-container">
362
363 <pre class="src src-makefile-automake"><span style="font-weight: bold; font-style: italic;">nodist_program_SOURCES</span> = wordsplit.c
364 </pre>
365 </div>
366
367 <p>
368 The <code>nodist_</code> prefix is necessary to prevent <b>make</b> from trying to
369 distribute this file from the current directory (where it doesn't
370 exist of course). During compilation it will be located using <code>VPATH</code>.
371 </p>
372
373 <p>
374 Finally, add both <code>wordsplit/wordsplit.c</code> and <code>wordsplit/wordsplit.h</code> to
375 the <code>EXTRA_DIST</code> variable and modify <code>AM_CPPFLAGS</code> as shown in the
376 previous section.
377 </p>
378
379 <p>
380 An example <code>Makefile.am</code>:
381 </p>
382
383 <div class="org-src-container">
384
385 <pre class="src src-makefile-automake"><span style="font-weight: bold; font-style: italic;">program_SOURCES</span> = main.c
386 <span style="font-weight: bold; font-style: italic;">nodist_program_SOURCES</span> = wordsplit.c
387 <span style="font-weight: bold; font-style: italic;">VPATH</span> = $(<span style="font-weight: bold; font-style: italic;">srcdir</span>):$(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit
388 <span style="font-weight: bold; font-style: italic;">EXTRA_DIST</span> = wordsplit/wordsplit.c wordsplit/wordsplit.h
389 <span style="font-weight: bold; font-style: italic;">AM_CPPFLAGS</span> = -I$(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit
390 </pre>
391 </div>
392
393 <p>
394 It is also possible to use <code>LDADD</code> as shown in the example below:
395 </p>
396
397 <div class="org-src-container">
398
399 <pre class="src src-makefile-automake"><span style="font-weight: bold; font-style: italic;">program_SOURCES</span> = main.c
400 <span style="font-weight: bold; font-style: italic;">LDADD</span> = wordsplit.o
401 <span style="font-weight: bold; font-style: italic;">VPATH</span> = $(<span style="font-weight: bold; font-style: italic;">srcdir</span>):$(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit
402 <span style="font-weight: bold; font-style: italic;">EXTRA_DIST</span> = wordsplit/wordsplit.c wordsplit/wordsplit.h
403 <span style="font-weight: bold; font-style: italic;">AM_CPPFLAGS</span> = -I$(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit
404 </pre>
405 </div>
406 </div>
407 </div>
408 </div>
409
410 <div id="outline-container-sec-4" class="outline-2">
411 <h2 id="sec-4"><span class="section-number-2">4</span> The testsuite</h2>
412 <div class="outline-text-2" id="text-4">
413 <p>
414 The package contains two files for building the testsuite: <code>wsp.c</code>,
415 which is used to build the auxiliary binary <code>wsp</code>, and <code>wordsplit.at</code>,
416 which can be included to a GNU autotest-based testsuite source.
417 </p>
418
419 <p>
420 The discussion below is for those who wish to include <b>wordsplit</b>
421 testsuite into their project. It assumes that the hosting project
422 already has an autotest-based testsuite.
423 </p>
424 </div>
425
426 <div id="outline-container-sec-4-1" class="outline-3">
427 <h3 id="sec-4-1"><span class="section-number-3">4.1</span> Additional files</h3>
428 <div class="outline-text-3" id="text-4-1">
429 <p>
430 To build the auxiliary tool <code>wsp</code>, you will need an additional file,
431 <code>wordsplit-version.h</code>. Normally, it should contain only a definition
432 of the macro or variable <code>WORDSPLIT_VERSION</code>. The following shell
433 fragment can be used to create it:
434 </p>
435
436 <div class="org-src-container">
437
438 <pre class="src src-shell-script"><span style="font-weight: bold; font-style: italic;">version</span>=$(<span style="font-weight: bold;">cd</span> wordsplit; git describe)
439 cat &gt; wordsplit-version.h &lt;&lt;EOF
440 <span style="font-weight: bold;">#define WORDSPLIT_VERSION "$version"</span>
441 <span style="font-weight: bold;">EOF</span>
442 </pre>
443 </div>
444
445 <p>
446 This file should be listed in the <code>EXTRA_DIST</code> variable to make sure
447 it is distributed with the tarball.
448 </p>
449 </div>
450 </div>
451
452 <div id="outline-container-sec-4-2" class="outline-3">
453 <h3 id="sec-4-2"><span class="section-number-3">4.2</span> testsuite.at</h3>
454 <div class="outline-text-3" id="text-4-2">
455 <p>
456 Include the file <code>wordsplit.at</code> to your <code>testsuite.at</code>:
457 </p>
458
459 <div class="org-src-container">
460
461 <pre class="src src-m4"><span style="font-weight: bold;">m4_include</span>(wordsplit.at)
462 </pre>
463 </div>
464 </div>
465 </div>
466
467 <div id="outline-container-sec-4-3" class="outline-3">
468 <h3 id="sec-4-3"><span class="section-number-3">4.3</span> Makefile.am</h3>
469 <div class="outline-text-3" id="text-4-3">
470 <p>
471 In the <code>Makefile.am</code> responsible for creating the testsuite, make sure
472 that the path to the <b>wordsplit</b> module is passed to the <b>autotest</b>
473 invocation, so that the above <code>m4_include</code> statement will work. The
474 usual <b>make</b> goal to build the testsuite looks as follows:
475 </p>
476
477 <div class="org-src-container">
478
479 <pre class="src src-makefile-automake"><span style="font-weight: bold;">$(TESTSUITE)</span>: package.m4 $(<span style="font-weight: bold; font-style: italic;">TESTSUITE_AT</span>)
480 $(<span style="font-weight: bold; font-style: italic;">AM_V_GEN</span>)$(<span style="font-weight: bold; font-style: italic;">AUTOTEST</span>) \
481 -I $(<span style="font-weight: bold; font-style: italic;">srcdir</span>)\
482 -I $(<span style="font-weight: bold; font-style: italic;">top_srcdir</span>)/wordsplit\
483 testsuite.at -o <span style="font-weight: bold;">$</span><span style="font-weight: bold; text-decoration: underline;">@</span>.tmp
484 $(<span style="font-weight: bold; font-style: italic;">AM_V_at</span>)mv <span style="font-weight: bold;">$</span><span style="font-weight: bold; text-decoration: underline;">@</span>.tmp <span style="font-weight: bold;">$</span><span style="font-weight: bold; text-decoration: underline;">@</span>
485 </pre>
486 </div>
487
488 <p>
489 Then, add the following fragment to build the auxiliary files:
490 </p>
491
492 <div class="org-src-container">
493
494 <pre class="src src-makefile-automake"><span style="font-weight: bold; font-style: italic;"># </span><span style="font-weight: bold; font-style: italic;">###########################</span>
495 <span style="font-weight: bold; font-style: italic;"># </span><span style="font-weight: bold; font-style: italic;">Wordsplit testsuite</span>
496 <span style="font-weight: bold; font-style: italic;"># </span><span style="font-weight: bold; font-style: italic;">###########################</span>
497 <span style="font-weight: bold; font-style: italic;">EXTRA_DIST</span> += wordsplit-version.h
498 <span style="font-weight: bold;">$(</span><span style="font-weight: bold; font-style: italic;">srcdir</span><span style="font-weight: bold;">)/wordsplit-version.h</span>: $(<span style="font-weight: bold; font-style: italic;">top_srcdir</span>)/configure.ac
499 $(<span style="font-weight: bold; font-style: italic;">AM_V_GEN</span>){\
500 if test -e $(<span style="font-weight: bold; font-style: italic;">top_srcdir</span>)/libmailutils/wordsplit/.git; then \
501 <span style="font-weight: bold; font-style: italic;">wsversion</span>=$$(cd $(<span style="font-weight: bold; font-style: italic;">top_srcdir</span>)/libmailutils/wordsplit; git describe); \
502 else \
503 <span style="font-weight: bold; font-style: italic;">wsversion</span>=<span style="font-style: italic;">"unknown"</span>; \
504 fi;\
505 echo <span style="font-style: italic;">"#define WORDSPLIT_VERSION \"$wsversion\""</span>;\
506 echo <span style="font-style: italic;">'#include &lt;mailutils/wordsplit.h&gt;'</span>; } &gt; \
507 &gt; $(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit-version.h
508
509 <span style="font-weight: bold; font-style: italic;">noinst_PROGRAMS</span> += wsp
510 <span style="font-weight: bold; font-style: italic;">wsp_SOURCES</span> =
511 <span style="font-weight: bold; font-style: italic;">nodist_wsp_SOURCES</span> = wsp.c
512 <span style="font-weight: bold;">wsp.o</span>: $(<span style="font-weight: bold; font-style: italic;">srcdir</span>)/wordsplit-version.h
513 <span style="font-weight: bold; font-style: italic;">VPATH</span> = $(<span style="font-weight: bold; font-style: italic;">srcdir</span>):$(<span style="font-weight: bold; font-style: italic;">top_srcdir</span>)/wordsplit
514 </pre>
515 </div>
516 </div>
517 </div>
518 </div>
519
520 <div id="outline-container-sec-5" class="outline-2">
521 <h2 id="sec-5"><span class="section-number-2">5</span> History</h2>
522 <div class="outline-text-2" id="text-5">
523 <p>
524 First version of <b>wordsplit</b> appeared in March 2009 as a part of the
525 Wydawca<sup><a id="fnr.1" name="fnr.1" class="footref" href="#fn.1">1</a></sup> project. Its main usage was to assist in configuration
526 file parsing. The parser subsystem proved to be quite useful and
527 soon evolved into a separate project - Grecs<sup><a id="fnr.2" name="fnr.2" class="footref" href="#fn.2">2</a></sup>. <b>Wordsplit</b>
528 had since been used (as a git submodule) in a number of other
529 projects, such as GNU Dico<sup><a id="fnr.3" name="fnr.3" class="footref" href="#fn.3">3</a></sup> and Direvent<sup><a id="fnr.4" name="fnr.4" class="footref" href="#fn.4">4</a></sup>, to name a few.
530 </p>
531
532 <p>
533 In 2010 the wordsplit sources were incorporated to the GNU
534 Mailutils<sup><a id="fnr.5" name="fnr.5" class="footref" href="#fn.5">5</a></sup> package, where they replaced the
535 decommissioned <code>argcv</code> module. Mailutils has its own configuration
536 package, therefore using Grecs was not expedient. The <b>wordsplit</b>
537 sources had been exported from Grecs and incorporated into
538 Mailutils. Since then Mailutils and Grecs versions or <b>wordsplit</b> were
539 periodically synchronized.
540 </p>
541
542 <p>
543 Several other projects, such as GNU Rush<sup><a id="fnr.6" name="fnr.6" class="footref" href="#fn.6">6</a></sup> and fileserv<sup><a id="fnr.7" name="fnr.7" class="footref" href="#fn.7">7</a></sup>,
544 followed suit. It had therefore been decided that it was advisable to
545 have <b>wordsplit</b> as a separate package which could be easily included in
546 another project without incurring unnecessary overhead. This separate
547 package was created on July 7, 2019.
548 </p>
549
550 <p>
551 By the end of July 2019, all mentioned packages had switched to using
552 wordsplit as a submodule.
553 </p>
554 </div>
555 </div>
556
557 <div id="outline-container-sec-6" class="outline-2">
558 <h2 id="sec-6"><span class="section-number-2">6</span> Bug reporting</h2>
559 <div class="outline-text-2" id="text-6">
560 <p>
561 Please send bug reports, questions, suggestions and criticism via
562 email to <a href="mailto:gray@gnu.org">Sergey Poznyakoff</a> or use the project's <a href="https://puszcza.gnu.org.ua/bugs/?group=wordsplit">bug tracker</a>.
563 When sending bug reports, please make sure to provide the following
564 information:
565 </p>
566
567 <ol class="org-ol">
568 <li>Wordsplit invocation flags.
569 </li>
570 <li>Input string.
571 </li>
572 <li>Produced output.
573 </li>
574 <li>Expected output.
575 </li>
576 </ol>
577 </div>
578 </div>
579
580 <div id="outline-container-sec-7" class="outline-2">
581 <h2 id="sec-7"><span class="section-number-2">7</span> Copying</h2>
582 <div class="outline-text-2" id="text-7">
583 <p>
584 Copyright (C) 2009-2020 Sergey Poznyakoff
585 </p>
586
587 <p>
588 Permission is granted to anyone to make or distribute verbatim copies
589 of this document as received, in any medium, provided that the
590 copyright notice and this permission notice are preserved,
591 thus giving the recipient permission to redistribute in turn.
592 </p>
593
594 <p>
595 Permission is granted to distribute modified versions
596 of this document, or of portions of it, under the above conditions,
597 provided also that they carry prominent notices stating who last
598 changed them.
599 </p>
600 </div>
601 </div>
602 <div id="footnotes">
603 <h2 class="footnotes">Footnotes: </h2>
604 <div id="text-footnotes">
605
606 <div class="footdef"><sup><a id="fn.1" name="fn.1" class="footnum" href="#fnr.1">1</a></sup> <p class="footpara">
607 Wydawca - an automatic release submission daemon<br>
608 Home: <a href="http://puszcza.gnu.org.ua/software/wydawca">http://puszcza.gnu.org.ua/software/wydawca</a><br>
609 Git: <a href="http://git.gnu.org.ua/cgit/wydawca.git">http://git.gnu.org.ua/cgit/wydawca.git</a>
610 </p></div>
611
612 <div class="footdef"><sup><a id="fn.2" name="fn.2" class="footnum" href="#fnr.2">2</a></sup> <p class="footpara">
613 Grecs - a library for parsing structured configuration files<br>
614 Home: <a href="https://puszcza.gnu.org.ua/projects/grecs">https://puszcza.gnu.org.ua/projects/grecs</a><br>
615 Git: <a href="http://git.gnu.org.ua/cgit/grecs.git">http://git.gnu.org.ua/cgit/grecs.git</a>
616 </p></div>
617
618 <div class="footdef"><sup><a id="fn.3" name="fn.3" class="footnum" href="#fnr.3">3</a></sup> <p class="footpara">
619 GNU Dico - a dictionary server<br>
620 Home: <a href="https://puszcza.gnu.org.ua/projects/dico">https://puszcza.gnu.org.ua/projects/dico</a><br>
621 Git: <a href="http://git.gnu.org.ua/cgit/dico.git">http://git.gnu.org.ua/cgit/dico.git</a>
622 </p></div>
623
624 <div class="footdef"><sup><a id="fn.4" name="fn.4" class="footnum" href="#fnr.4">4</a></sup> <p class="footpara">
625 GNU Direvent - filesystem event watching daemon<br>
626 Home: <a href="http://puszcza.gnu.org.ua/software/direvent">http://puszcza.gnu.org.ua/software/direvent</a><br>
627 Git: <a href="http://git.gnu.org.ua/cgit/direvent.git">http://git.gnu.org.ua/cgit/direvent.git</a>
628 </p></div>
629
630 <div class="footdef"><sup><a id="fn.5" name="fn.5" class="footnum" href="#fnr.5">5</a></sup> <p class="footpara">
631 GNU Mailutils - a general-purpose mail package<br>
632 Home: <a href="http://mailutils.org">http://mailutils.org</a><br>
633 Git: <a href="http://git.savannah.gnu.org/cgit/mailutils.git">http://git.savannah.gnu.org/cgit/mailutils.git</a>
634 </p></div>
635
636 <div class="footdef"><sup><a id="fn.6" name="fn.6" class="footnum" href="#fnr.6">6</a></sup> <p class="footpara">
637 GNU Rush - a restricted user shell for remote access<br>
638 Home: <a href="http://puszcza.gnu.org.ua/software/rush">http://puszcza.gnu.org.ua/software/rush</a><br>
639 Git: <a href="http://git.gnu.org.ua/cgit/rush.git">http://git.gnu.org.ua/cgit/rush.git</a>
640 </p></div>
641
642 <div class="footdef"><sup><a id="fn.7" name="fn.7" class="footnum" href="#fnr.7">7</a></sup> <p class="footpara">
643 fileserv - simple http server for serving static files<br>
644 Home: <a href="https://puszcza.gnu.org.ua/projects/fileserv">https://puszcza.gnu.org.ua/projects/fileserv</a><br>
645 Git: <a href="http://git.gnu.org.ua/cgit/fileserv.git">http://git.gnu.org.ua/cgit/fileserv.git</a>
646 </p></div>
647
648
649 </div>
650 </div></div>
651 <div id="postamble" class="status">
652 <p class="author">Author: Sergey Poznyakoff</p>
653 <p class="date">Created: 2021-09-17 Fri 12:20</p>
654 <p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.3.1 (<a href="http://orgmode.org">Org</a> mode 8.2.10)</p>
655 <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
656 </div>
657 </body>
658 </html>

Send suggestions and bug reports to Sergey Poznyakoff
ViewVC Help
Powered by ViewVC 1.1.20