5 * Copyright (c) 2000, 2001, 2002, 2003, 2004 by Martin C. Shepherd.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the
11 * "Software"), to deal in the Software without restriction, including
12 * without limitation the rights to use, copy, modify, merge, publish,
13 * distribute, and/or sell copies of the Software, and to permit persons
14 * to whom the Software is furnished to do so, provided that the above
15 * copyright notice(s) and this permission notice appear in all copies of
16 * the Software and that both the above copyright notice(s) and this
17 * permission notice appear in supporting documentation.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
22 * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23 * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
24 * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
25 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
26 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
27 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
29 * Except as contained in this notice, the name of a copyright holder
30 * shall not be used in advertising or otherwise to promote the sale, use
31 * or other dealings in this Software without prior written authorization
32 * of the copyright holder.
35 #pragma ident "%Z%%M% %I% %E% SMI"
37 typedef struct CompleteFile CompleteFile
;
40 * Create a file-completion resource object.
42 CompleteFile
*_new_CompleteFile(void);
44 * Delete a file-completion resource object.
46 CompleteFile
*_del_CompleteFile(CompleteFile
*cf
);
48 /*.......................................................................
49 * Complete the string between path[0] and path[len-1] as a pathname,
50 * leaving the last component uncompleted if it is potentially ambiguous,
51 * and returning an array of possible completions. Note that the returned
52 * container belongs to the 'cf' object and its contents will change on
53 * subsequent calls to this function.
56 * cpl WordCompletion * The object in which to record the completions.
57 * cf CompleteFile * The filename-completion resource object.
58 * line const char * The string containing the incomplete filename.
59 * word_start int The index of the first character in line[]
60 * of the incomplete filename.
61 * word_end int The index of the character in line[] that
62 * follows the last character of the incomplete
64 * escaped int If true, backslashes in path[] are
65 * interpreted as escaping the characters
66 * that follow them, and any spaces, tabs,
67 * backslashes, or wildcard characters in the
68 * returned suffixes will be similarly be escaped.
69 * If false, backslashes will be interpreted as
70 * literal parts of the file name, and no
71 * backslashes will be added to the returned
73 * check_fn CplCheckFn * If not zero, this argument specifies a
74 * function to call to ask whether a given
75 * file should be included in the list
77 * check_data void * Anonymous data to be passed to check_fn().
80 * 1 - Error. A description of the error can be
81 * acquired by calling cf_last_error(cf).
83 int _cf_complete_file(WordCompletion
*cpl
, CompleteFile
*cf
,
84 const char *line
, int word_start
, int word_end
,
85 int escaped
, CplCheckFn
*check_fn
, void *check_data
);
87 /*.......................................................................
88 * Return a description of the error that occurred on the last call to
92 * cf CompleteFile * The path-completion resource object.
94 * return char * The description of the last error.
96 const char *_cf_last_error(CompleteFile
*cf
);