joeydev/include/utils.h
2023-05-23 19:22:26 -05:00

106 lines
4.6 KiB
C

/*
* JoeyDev
* Copyright (C) 2018-2023 Scott Duensing <scott@kangaroopunch.com>
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
#ifndef UTILS_H
#define UTILS_H
#include "common.h"
#include "archive.h"
#include "archive_entry.h"
#ifdef _WIN32
#define UTIL_PATH_CHAR '\\'
#else
#define UTIL_PATH_CHAR '/'
#endif
struct ArchiveS;
typedef void (*archiveCallback)(struct ArchiveS*);
typedef struct ArchiveS {
struct archive *in; // Compressed input file.
struct archive *out; // Decompressed output files.
struct archive_entry *entry; // Current archive entry.
int result; // Result of various archive functions.
int compression; // Compression percentage.
int fileCount; // Current file number being processed.
uint64_t compressed; // Compressed bytes processed.
uint64_t uncompressed; // Uncompressed bytes processed.
size_t size; // Size of compressed file.
char *archive; // Name of compressed file.
char *outPath; // Path to store uncompressed files.
char *currentFile; // Name of current file being processed.
gboolean copying; // Are we copying bytes?
gboolean finished; // Decompress complete?
gboolean success; // Did it succeed?
void *userData; // Anything the user needs to keep.
archiveCallback callback; // Non-Null, call when complete/failed.
} ArchiveT;
extern char __utilFilenameBuffer[FILENAME_MAX];
void utilAddTextToListBox(GtkListBox *list, char *text, gboolean markup);
void utilClearContainer(GtkContainer *container);
char *utilCreateString(char *format, ...);
char *utilCreateStringVArgs(char *format, va_list args);
ArchiveT *utilDecompress(char *archive, char *outPath, archiveCallback callback, void *userData);
int utilDeleteTree(const char *path);
char *utilDeobfuscateASCII(char *obfuscated);
void utilDequote(char *string);
void utilEnsureBufferSize(unsigned char **buffer, int *length, int wanted);
void utilExtractResource(char *path);
char *utilFileBasename(char *path);
gboolean utilFileCopy(char *from, char *to);
gboolean utilFileExists(char *filename);
ssize_t utilGetLine(char **lineptr, size_t *n, FILE *stream);
gboolean utilFileOpen(WindowDataT *self, char *extension, char *what);
char *utilFilePath(char *filename);
char *utilFileRemoveExtension(char *filename);
gboolean utilFileSaveAs(WindowDataT *self, char *extension, char *what);
gboolean utilFileSaveOtherAs(WindowDataT *self, char *extension, char *what, char **filename);
size_t utilFileSize(char *filename);
GtkWidget *utilFindChildWidget(GtkWidget *parent, const gchar *name);
void utilForceUpdate(void);
char *utilGetToken(char *input, char *delimit, char *openblock, char *closeblock);
WindowDataT *utilGetWindowData(GtkWidget *window);
gboolean utilGetWidgetsFromMemory(char *resource, char *name[], GtkWidget **widgets[], gpointer userData);
void utilMessageDialog(GtkWidget *parent, char *title, char *message);
gboolean utilMkDirP(const char *dir, const mode_t mode);
char *utilObfuscateASCII(char *clearText);
gboolean utilQuestionDialog(GtkWidget *parent, char *title, char *question);
void utilSetDirty(WindowDataT *self, gboolean dirty);
void utilShutdown(void);
void utilStartup(void);
void utilUpdatePath(WindowDataT *self);
void utilWindowRegister(gpointer windowData);
int utilWindowsCloseAll(void);
int utilWindowsOpen(void);
gboolean utilWindowUnRegister(gpointer windowData);
#endif // UTILS_H