Index: ossp-pkg/var/SPEC RCS File: /v/ossp/cvs/ossp-pkg/var/Attic/SPEC,v rcsdiff -q -kk '-r1.1' '-r1.2' -u '/v/ossp/cvs/ossp-pkg/var/Attic/SPEC,v' 2>/dev/null --- SPEC 2001/11/11 12:40:42 1.1 +++ SPEC 2001/11/16 15:19:14 1.2 @@ -1,6 +1,6 @@ - Name: - + OSSP var (Variable Expansion Library) - Description: @@ -18,38 +18,34 @@ - Eine Variable kann im Text in der Form $name oder ${name} angegeben werden, wobei die Wahl der Klammern '{' '}' und des '$' parametriesiert werden können. - + - Gültige Zeichen für einen Variablennamen sind konfigurierbar. Garbage in -- garbage out. - + - Ein echtes '$'-Zeichen im Text kann durch Voranstellung eines wählbaren Escapezeichen dargestellt werden. Default ist der Backslash ('\'). - + - Der Aufrufer der Funktion soll steuern können, wie sich die Library verhält, wenn eine Variable nicht existiert. Denkbar sind: - + - Abbruch mit Fehler, - die Variable wird zu "", oder - der Ausdruck wird unverändert in den Ausgabetext übernommen, sodaß eventuell ein zweiter Pass gemacht werden kann. - + - ${parameter:-word} wird normal expandiert. Wenn "parameter" leer ist, wird stattdessen "word" eingesetzt. - - - ${parameter:?word} wird normal expandiert. Wenn "parameter" leer - ist, bricht die Verarbeitung mit Fehler ab und "word" wird als - Begründung zurückgegeben. - + - ${parameter:+word} substituiert die Expansion von "${word}" wenn "parameter" nicht leer ist, sonst wird "" substituiert. - + - ${parameter:o-}, ${parameter:o-} - + - ${parameter:o,}, ${parameter:o,} - + - ${parameter:#} expandiert zur Länge des Inhaltes von "parameter". - + - ${parameter:s/pattern/string/[gti]} expandiert "parameter" und führt dann eine Ersetzung mittels des regulären Ausdrucks "pattern" durch. Wird das 'g'-Flag angegeben, wird nicht nur eine Instanz von @@ -57,25 +53,25 @@ signalisiert, daß eine reine Text-Ersetzung ohne Unterstützung von regulären Ausdrücken gewünscht ist. Das 'i'-Flag besagt, daß die Suche nach "pattern" case-insensitiv durchgeführt wird. - + - ${parameter:y/ochars/nchars/} expandiert den Inhalt von "parameter" und transformiert dabei nach dem Prinzip von tr(1) die "ochars" im Text zu "nchars". - + - ${parameter:l} wandelt den Inhalt von "parameter" in Kleinbuchstaben, bevor es die Variable expandiert. Dies geschieht über toupper(3). - + - ${parameter:u} wandelt den Inhalt von "parameter" in Großbuchstaben, bevor es die Variable expandiert. Dies geschieht über tolower(3). - + - ${parameter:*word} expandiert zum leeren Wort, wenn "parameter" nicht leer ist, sonst zu "word". - + - Jedes Vorkommen eines der folgenden Konstrukte im Text wird durch das zugehörige Sonderzeichen ersetzt. - + \t tab \n newline \r return @@ -88,7 +84,7 @@ von ("r" = right, "l" = left, "c" = center) noch fehlende Zeichen mit aufgefuellt werden. Diest ist gedacht, um in Templates saubere Tabellen erzeugen zu koennen. - Beispiele (foo="bar"): + Beispiele (foo="bar"): "${foo:p/6/./r}" -> "bar..." "${foo:p/6/./l}" -> "...bar" "${foo:p/6/./c}" -> ".bar.." (oder "..bar.", egal) @@ -97,26 +93,26 @@ - API (var.h): | int (*var_cb_t)(void *context, - | const char *varname, + | const char *varname, | size_t name_len, - | char *const *data, - | size_t *data_len, + | char *const *data, + | size_t *data_len, | char *malloced_buffer); - | + | | typdef struct { | char varinit; | char startdelim; - | char enddelim; - | char escape; - | char* namechars; + | char enddelim; + | char escape; + | char* namechars; | char force_expand; | } var_config_t; - | + | | extern const var_config_t var_config_default; - | - | int var_expand(const char *input, + | + | int var_expand(const char *input, | size_t input_len, - | char **result, + | char **result, | size_t *result_len, | const char **error_msg, | varexp_lookup_cb lookup, @@ -127,7 +123,7 @@ Makefile ..... build procedure (minimal only!) var.ac ....... Autoconf macro OSSP_VAR - var.h ........ OSSP var public API + var.h ........ OSSP var public API var.c ........ OSSP var implementation var.pod ...... OSSP var manual page var_test.c ... OSSP var test suite