aboutsummaryrefslogtreecommitdiff
path: root/lib/microtar/README.md
diff options
context:
space:
mode:
authorGaspartcho <93390411+Gaspartcho@users.noreply.github.com>2024-02-23 18:59:56 +0100
committerGitHub <noreply@github.com>2024-02-23 12:59:56 -0500
commit4f381aa35d66185b97bfba62d4002857660118f1 (patch)
tree37fafe84ab6c592a397fe77c46737df8bfc569b5 /lib/microtar/README.md
parent9a3755268a1dc42e99083c69d8fb4ce7c33ad169 (diff)
downloadlite-xl-plugin-manager-4f381aa35d66185b97bfba62d4002857660118f1.tar.gz
lite-xl-plugin-manager-4f381aa35d66185b97bfba62d4002857660118f1.zip
Update extract: .tgz and +100 char name support (#73)
* added tar support * fixed small mistake * added support for utar + removed microtar as submodule * will finish this tomorow * added support for gnu and other * re-done all small changes * fixed pax format (hopefully) * added a r to 'curent_read'
Diffstat (limited to 'lib/microtar/README.md')
-rw-r--r--lib/microtar/README.md100
1 files changed, 100 insertions, 0 deletions
diff --git a/lib/microtar/README.md b/lib/microtar/README.md
new file mode 100644
index 0000000..78d2f05
--- /dev/null
+++ b/lib/microtar/README.md
@@ -0,0 +1,100 @@
+# microtar (a fork)
+A lightweight tar library written in ANSI C
+Initially forked from https://github.com/rxi/microtar
+
+
+## Basic Usage
+The library consists of `microtar.c` and `microtar.h`. These two files can be
+dropped into an existing project and compiled along with it.
+
+
+#### Reading
+```c
+mtar_t tar;
+mtar_header_t h;
+char *p;
+
+/* Open archive for reading */
+mtar_open(&tar, "test.tar", "r");
+
+/* Print all file names and sizes */
+while ( (mtar_read_header(&tar, &h)) != MTAR_ENULLRECORD ) {
+ printf("%s (%d bytes)\n", h.name, h.size);
+ mtar_next(&tar);
+}
+
+/* Load and print contents of file "test.txt" */
+mtar_find(&tar, "test.txt", &h);
+p = calloc(1, h.size + 1);
+mtar_read_data(&tar, p, h.size);
+printf("%s", p);
+free(p);
+
+/* Close archive */
+mtar_close(&tar);
+```
+
+#### Writing
+```c
+mtar_t tar;
+const char *str1 = "Hello world";
+const char *str2 = "Goodbye world";
+
+/* Open archive for writing */
+mtar_open(&tar, "test.tar", "w");
+
+/* Write strings to files `test1.txt` and `test2.txt` */
+mtar_write_file_header(&tar, "test1.txt", strlen(str1));
+mtar_write_data(&tar, str1, strlen(str1));
+mtar_write_file_header(&tar, "test2.txt", strlen(str2));
+mtar_write_data(&tar, str2, strlen(str2));
+
+/* Finalize -- this needs to be the last thing done before closing */
+mtar_finalize(&tar);
+
+/* Close archive */
+mtar_close(&tar);
+```
+
+
+## Error handling
+All functions which return an `int` will return `MTAR_ESUCCESS` if the operation
+is successful. If an error occurs an error value less-than-zero will be
+returned; this value can be passed to the function `mtar_strerror()` to get its
+corresponding error string.
+
+
+## Wrapping a stream
+If you want to read or write from something other than a file, the `mtar_t`
+struct can be manually initialized with your own callback functions and a
+`stream` pointer.
+
+All callback functions are passed a pointer to the `mtar_t` struct as their
+first argument. They should return `MTAR_ESUCCESS` if the operation succeeds
+without an error, or an integer below zero if an error occurs.
+
+After the `stream` field has been set, all required callbacks have been set and
+all unused fields have been zeroset the `mtar_t` struct can be safely used with
+the microtar functions. `mtar_open` *should not* be called if the `mtar_t`
+struct was initialized manually.
+
+#### Reading
+The following callbacks should be set for reading an archive from a stream:
+
+Name | Arguments | Description
+--------|------------------------------------------|---------------------------
+`read` | `mtar_t *tar, void *data, unsigned size` | Read data from the stream
+`seek` | `mtar_t *tar, unsigned pos` | Set the position indicator
+`close` | `mtar_t *tar` | Close the stream
+
+#### Writing
+The following callbacks should be set for writing an archive to a stream:
+
+Name | Arguments | Description
+--------|------------------------------------------------|---------------------
+`write` | `mtar_t *tar, const void *data, unsigned size` | Write data to the stream
+
+
+## License
+This library is free software; you can redistribute it and/or modify it under
+the terms of the MIT license. See [LICENSE](LICENSE) for details.