16#include <gwenhywfar/debug.h>
17#include <gwenhywfar/sar.h>
18#include <gwenhywfar/directory.h>
35#if _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
42 fname, errno, strerror(errno));
43 fprintf(stderr,
"Ignoring file \"%s\"\n", fname);
48 if (recursive && S_ISDIR(st.st_mode)) {
69 if (strcmp(buffer,
".")!=0 &&
70 strcmp(buffer,
"..")!=0)
128 "Specify the archive file name",
129 "Specify the archive file name"
139 "add folders recursively",
140 "add folders recursively"
161 "Show this help screen",
162 "Show this help screen"
172 fprintf(stderr,
"ERROR: Could not parse arguments\n");
180 fprintf(stderr,
"ERROR: Could not create help string\n");
199 fprintf(stderr,
"ERROR: Error opening archive (%d)\n", rv);
212 if (fname && *fname) {
215 fprintf(stderr,
"ERROR: Error adding entry \"%s\" to archive \"%s\" (%d)\n",
233 fprintf(stderr,
"ERROR: Error adding file \"%s\" to archive \"%s\" (%d)\n",
240 fprintf(stdout,
"added \"%s\"\n", s);
250 fprintf(stderr,
"ERROR: Error closing archive (%d)\n", rv);
static int addToList(const char *fname, int recursive, GWEN_STRINGLIST *sl)
int add2Archive(GWEN_DB_NODE *dbArgs, int argc, char **argv)
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
uint32_t GWEN_Buffer_GetPos(const GWEN_BUFFER *bf)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
int GWEN_Buffer_Crop(GWEN_BUFFER *bf, uint32_t pos, uint32_t l)
const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
GWEN_DB_NODE * GWEN_DB_GetGroup(GWEN_DB_NODE *n, uint32_t flags, const char *path)
int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
#define GWEN_DB_FLAGS_DEFAULT
struct GWEN_DB_NODE GWEN_DB_NODE
#define DBG_INFO(dbg_logger, format, args...)
#define DBG_ERROR(dbg_logger, format, args...)
GWENHYWFAR_API int GWEN_Directory_Read(GWEN_DIRECTORY *d, char *buffer, unsigned int len)
struct GWEN_DIRECTORY GWEN_DIRECTORY
GWENHYWFAR_API int GWEN_Directory_Open(GWEN_DIRECTORY *d, const char *n)
GWENHYWFAR_API GWEN_DIRECTORY * GWEN_Directory_new(void)
GWENHYWFAR_API void GWEN_Directory_free(GWEN_DIRECTORY *d)
GWENHYWFAR_API int GWEN_Directory_Close(GWEN_DIRECTORY *d)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
#define GWEN_DIR_SEPARATOR_S
int GWEN_Sar_OpenArchive(GWEN_SAR *sr, const char *aname, GWEN_SYNCIO_FILE_CREATIONMODE cm, uint32_t acc)
int GWEN_Sar_CloseArchive(GWEN_SAR *sr, int abandon)
void GWEN_Sar_free(GWEN_SAR *sr)
int GWEN_Sar_AddFile(GWEN_SAR *sr, const char *fname)
GWEN_SAR * GWEN_Sar_new(void)
int GWEN_Args_Check(int argc, char **argv, int startAt, uint32_t mode, const GWEN_ARGS *args, GWEN_DB_NODE *db)
int GWEN_Args_Usage(const GWEN_ARGS *args, GWEN_BUFFER *ubuf, GWEN_ARGS_OUTTYPE ot)
#define GWEN_ARGS_FLAGS_HAS_ARGUMENT
#define GWEN_ARGS_RESULT_ERROR
#define GWEN_ARGS_MODE_ALLOW_FREEPARAM
#define GWEN_ARGS_FLAGS_HELP
#define GWEN_ARGS_FLAGS_LAST
#define GWEN_ARGS_RESULT_HELP
void GWEN_StringList_free(GWEN_STRINGLIST *sl)
const char * GWEN_StringListEntry_Data(const GWEN_STRINGLISTENTRY *se)
GWEN_STRINGLISTENTRY * GWEN_StringListEntry_Next(const GWEN_STRINGLISTENTRY *se)
int GWEN_StringList_AppendString(GWEN_STRINGLIST *sl, const char *s, int take, int checkDouble)
GWEN_STRINGLISTENTRY * GWEN_StringList_FirstEntry(const GWEN_STRINGLIST *sl)
GWEN_STRINGLIST * GWEN_StringList_new(void)
struct GWEN_STRINGLISTENTRYSTRUCT GWEN_STRINGLISTENTRY
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
@ GWEN_SyncIo_File_CreationMode_OpenExisting
#define GWEN_SYNCIO_FILE_FLAGS_READ
#define GWEN_SYNCIO_FILE_FLAGS_WRITE