2024-08-30 02:35:17 +00:00
|
|
|
// ISC License
|
2024-09-01 06:11:57 +00:00
|
|
|
//
|
2024-08-30 02:35:17 +00:00
|
|
|
// Copyright (c) 2024 Stephen Seo
|
2024-09-01 06:11:57 +00:00
|
|
|
//
|
2024-08-30 02:35:17 +00:00
|
|
|
// Permission to use, copy, modify, and/or distribute this software for any
|
|
|
|
// purpose with or without fee is hereby granted, provided that the above
|
|
|
|
// copyright notice and this permission notice appear in all copies.
|
2024-09-01 06:11:57 +00:00
|
|
|
//
|
2024-08-30 02:35:17 +00:00
|
|
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
|
|
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
|
|
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
|
|
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
|
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
|
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
|
// PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
//
|
|
|
|
// `helpers.h` is the header for helpful/utility functions.
|
2024-07-02 05:25:01 +00:00
|
|
|
|
|
|
|
#ifndef SEODISPARATE_COM_SIMPLE_ARCHIVER_HELPERS_H_
|
|
|
|
#define SEODISPARATE_COM_SIMPLE_ARCHIVER_HELPERS_H_
|
|
|
|
|
2024-09-20 12:40:35 +00:00
|
|
|
// Standard library includes.
|
2024-07-15 07:59:15 +00:00
|
|
|
#include <stdint.h>
|
2024-07-29 07:31:10 +00:00
|
|
|
#include <stdio.h>
|
2024-07-15 07:59:15 +00:00
|
|
|
|
2024-09-20 12:40:35 +00:00
|
|
|
static const uint32_t MAX_SYMBOLIC_LINK_SIZE = 512;
|
2024-07-04 05:48:56 +00:00
|
|
|
|
2024-07-02 05:25:01 +00:00
|
|
|
/// Returns non-zero if this system is big-endian.
|
|
|
|
int simple_archiver_helper_is_big_endian(void);
|
|
|
|
|
|
|
|
/// Swaps value from/to big-endian. Nop on big-endian systems.
|
2024-07-15 07:59:15 +00:00
|
|
|
void simple_archiver_helper_16_bit_be(uint16_t *value);
|
2024-07-02 05:25:01 +00:00
|
|
|
|
|
|
|
/// Swaps value from/to big-endian. Nop on big-endian systems.
|
2024-07-15 07:59:15 +00:00
|
|
|
void simple_archiver_helper_32_bit_be(uint32_t *value);
|
2024-07-02 05:25:01 +00:00
|
|
|
|
|
|
|
/// Swaps value from/to big-endian. Nop on big-endian systems.
|
2024-07-15 07:59:15 +00:00
|
|
|
void simple_archiver_helper_64_bit_be(uint64_t *value);
|
2024-07-02 05:25:01 +00:00
|
|
|
|
2024-07-17 05:32:39 +00:00
|
|
|
/// Returns a array of c-strings on success, NULL on error.
|
|
|
|
/// The returned array must be free'd with
|
|
|
|
/// simple_archiver_helper_cmd_string_argv_free(...).
|
|
|
|
char **simple_archiver_helper_cmd_string_to_argv(const char *cmd);
|
|
|
|
|
|
|
|
void simple_archiver_helper_cmd_string_argv_free(char **argv_strs);
|
|
|
|
void simple_archiver_helper_cmd_string_argv_free_ptr(char ***argv_strs);
|
|
|
|
|
2024-07-18 02:53:00 +00:00
|
|
|
/// Returns zero on success.
|
|
|
|
int simple_archiver_helper_make_dirs(const char *file_path);
|
|
|
|
|
2024-07-26 03:39:56 +00:00
|
|
|
/// Returns non-NULL on success.
|
|
|
|
/// Must be free'd with "free()" if non-NULL.
|
|
|
|
/// start_idx is inclusive and end_idx is exclusive.
|
2024-09-06 05:23:27 +00:00
|
|
|
char *simple_archiver_helper_cut_substr(const char *s, size_t start_idx,
|
|
|
|
size_t end_idx);
|
2024-07-26 03:39:56 +00:00
|
|
|
|
2024-09-06 05:23:27 +00:00
|
|
|
size_t simple_archiver_helper_num_digits(size_t value);
|
2024-07-26 07:18:07 +00:00
|
|
|
|
2024-07-29 07:31:10 +00:00
|
|
|
void simple_archiver_helper_cleanup_FILE(FILE **fd);
|
|
|
|
void simple_archiver_helper_cleanup_malloced(void **data);
|
|
|
|
void simple_archiver_helper_cleanup_c_string(char **str);
|
|
|
|
void simple_archiver_helper_cleanup_chdir_back(char **original);
|
|
|
|
|
|
|
|
void simple_archiver_helper_datastructure_cleanup_nop(void *unused);
|
|
|
|
|
2024-07-02 05:25:01 +00:00
|
|
|
#endif
|