chat.c
chat.c - Chat Loop Delegator
chat.c provides an interactive chat loop that repeatedly reads input from stdin, delegates it to a shell command via pipe, and displays the command's output. Works as a small C library and CLI tool.
CLI
Examples
Basic delegation with single-line input:
./bin/x86_64/linux/chat cat
Multi-line input with end token:
./bin/x86_64/linux/chat -e END cat
Custom exit command:
./bin/x86_64/linux/chat -x q cat
Custom prompt and initial message:
./bin/x86_64/linux/chat -m 'chat ready' -p '>>> ' cat
Parameters
| Parameter | Description |
|---|---|
<command> | Shell command to execute with piped input |
-e <token> | End token for multi-line input |
-x <text> | Exit command (default: exit) |
-m <text> | Initial message printed at start |
-p <text> | Prompt text (default: > ) |
-h, --help | Show help and usage |
-v, --version | Show version |
Public API
#include "chat.h"
kc_chat_t *ctx = kc_chat_open();
char *output = NULL;
kc_chat_set_cmd(ctx, "cat");
kc_chat_exec(ctx, "hello world", &output);
printf("%s\n", output); /* prints: hello world */
kc_chat_free(output);
kc_chat_close(ctx);
Lifecycle
kc_chat_open()- allocates and returns a new context owned by the caller.kc_chat_set_cmd()- configures the shell command for delegation.kc_chat_set_exit()- configures the exit command string.kc_chat_exec()- pipes input to the configured command and captures output.kc_chat_is_exit()- checks whether input matches the exit command.kc_chat_free()- releases output strings allocated by the library.kc_chat_close()- releases the context.
Build
Compiled artifacts are generated under bin/{arch}/{platform}/ for the host architecture running the build.
make clean && make
The host build emits:
bin/{arch}/{platform}/chat
bin/{arch}/{platform}/libchat.a
bin/{arch}/{platform}/libchat.so
Windows builds emit:
bin/{arch}/windows/chat.exe
bin/{arch}/windows/libchat.dll
bin/{arch}/windows/libchat.dll.a
Multiarch Builds
The project is prepared to build artifacts for multiple architectures under bin/{arch}/{platform}/. A plain make builds only the current host architecture, while the targets below build the full matrix or a specific target.
make all
make x86_64/linux
make x86_64/windows
make i686/linux
make i686/windows
make aarch64/linux
make aarch64/android
make armv7/linux
make armv7/android
make armv7hf/linux
make riscv64/linux
make powerpc64le/linux
make mips/linux
make mipsel/linux
make mips64el/linux
make s390x/linux
make loongarch64/linux
License
This project is distributed under the GNU General Public License version 3 (GPLv3).
Repo
GitHub: kaisarcode/chat.c
