Modul futils.c
Formatting Utilities
Hilfsfunktionen für den Umgang mit Dateien, Streams und C-Strings.
te_create_stream_source
Ergebnis: int
Parameter:
- FILE * stream
- strsrc_t ** src
te_create_file_source
Ergebnis: int
Parameter:
- char * filename
- strsrc_t ** src
- FILE ** handle
te_create_cstring_source
Ergebnis: int
Parameter:
- char * cstr
- strsrc_t ** src
te_parse_stream
Ergebnis: int
Parameter:
- formatm_t * fm
- session_t * ses
- FILE * in
- bool addnl
- int * id
te_parse_file
Die angegebene Datei wird als Stream geöffnet und erfasst.
Eine eventuell vorhandene Shebang-Zeile wird ausgeführt.
Ergebnis: int
Parameter:
- formatm_t * fm: Zum Parsen einzusetzender Formatmanager.
- namcf_t * namcf
- session_t * ses: Textengine-Sitzung fürs Parsen.
- char * filename: Name der zu öffnenden Datei relativ zum PWD.
-
bool addnl: Wenn
true
und die Datei nicht mit\n
endet, so wird der letzten Zeile ein\n
hinzugefügt, bevor sie dem Parser übergeben wird. -
int * id: Ergibt die
Id
der letzten erfassten Texteinheit.
te_parse_cstring
Ergebnis: int
Parameter:
- formatm_t * fm
- session_t * ses
- char * in
- bool addnl
- int * id
visitstr
Ergebnis: int
Parameter:
- strag_t * ag
- char * str
visitstrid
Ergebnis: int
Parameter:
- session_t * s
- strag_t * ag
- int id
new_stream_writer_strag
Ergebnis: strag_t *
Parameter:
- FILE * out
new_file_writer_strag
Ergebnis: strag_t *
Parameter:
- char * filename
new_cstring_writer_strag
Ergebnis: strag_t *
Parameter:
- char ** cstr
- int inc
te_formatn_stream
Ergebnis: int
Parameter:
- name_t * nam
- namcf_t * cf
- FILE * out
te_formatidn_stream
Ergebnis: int
Parameter:
- char * idn
- namcf_t * cf
- FILE * out
te_formatn_cstring
Ergebnis: int
Parameter:
- name_t * nam
- namcf_t * cf
- char ** cstr
- int inc
te_formatidn_cstring
Ergebnis: int
Parameter:
- char * idn
- namcf_t * cf
- char ** cstr
- int inc
te_format_stream
Ergebnis: int
Parameter:
- formatm_t * fm
- session_t * ses
- int id
- FILE * out
te_format_file
Ergebnis: int
Parameter:
- formatm_t * fm
- session_t * ses
- int id
- char * filename
te_format_cstring
Ergebnis: int
Parameter:
- formatm_t * fm
- session_t * ses
- int id
- char ** cstr
- int inc
te_extract_line_a
Diese Funktion ergibt die nächste Zeile aus dem Stream.
Ergebnis: int
Ergibt den Fehlercode.
Parameter:
- FILE * in: Zu lesender Stream (wchar_t).
-
char ** line: Zeigt auf die nächste Zeile ggf. inklusive „\n”, oder auf
NULL
, wenn am Streamende. Die Zeichenkette muss vom Aufrufer freigegeben werden.
te_extract_line_if_comment_a
Diese Funktion prüft die nächste Zeile im Stream. Wenn diese mit dem Zeichen #
anfängt, wird die Zeile zurückgegeben und der Stream am Anfang der nächsten Zeile positioniert. Fängt diese nicht mit dem Zeichen #
an oder ist der Stream am Ende, so tut diese Funktion nichts und ergibt die Zeile NULL
.
Ergebnis: int
Ergibt den Fehlercode.
Parameter:
- FILE * in: Zu lesender Stream (wchar_t).
-
char ** line: Zeigt auf die nächste Zeile ggf. inklusive „\n”, falls sie eine Kommentarzeile ist, oder auf
NULL
anderenfalls. Die Zeichenkette muss vom Aufrufer freigegeben werden.
te_extract_shebang_arguments
Extrahiert die Argumente aus dem Programmaufruf in der angegebenen Zeile, wenn es sich um eine Shebang-Zeile handelt.
Ergebnis: int
Ergibt den Fehlercode.
Parameter:
- char * line
- int * argc: Ergbit die Anzahl der zurückgegebenen Argumente. Der Aufrufer übergibt einen Zeiger auf einen von ihm bereitgestellten int-Puffer.
- char *** args_a: Ergbit die einzelnen Argumente des Aufrufs in der Shebang-Zeile. Die einzelnen Zeichenketten und das Array als ganzes müssen vom Aufrufer freigegeben werden.
- size_t ** pos_a
te_execute_if_shebang
Prüft die nächste Zeile aus dem Stream. Wenn es sich um eine passende Shebang-Zeile handelt, so werden die als Argumente angegebenen Dateien hintereinander mit te_parse_file
erfasst und der Stream am Anfang der nächsten Zeile positioniert. Anderenfalls, wird die Leseposition des Streams nicht geändert.
Als Shebang-Zeile wird eine erste Zeile erkannt, die mit #!<Program>
anfängt, wo <Program>
mit dem Konfigurationsnamen SHEBANG_PROGNAME
übereinstimmt. Dabei wird eine eventuelle Pfadangabe ignoriert.
Bekannter Implementierungsfehler: Wenn die erste Dateizile mit # anfängt, wird sie nicht geparst, egal ob sie eine Shebangzeile ist oder nicht.
Ergebnis: int
Ergibt den Fehlercode.
Parameter:
- formatm_t * fm: Zum Parsen einzusetzender Formatmanager.
- namcf_t * namcf
- session_t * ses: Textengine-Sitzung fürs Parsen.
- FILE * in: Zu parsender Stream (wchar_t).
- bool addnl
- char * default_directory: Verzeichnis für die zu parsenden Dateien, wenn deren Namen in der Shebang-Zeile relativ angegeben sind.
-
int * id: Ergibt die
Id
der letzten erfassten Texteinheit. - char ** lang_name
- char ** format_name